1.0.6 버전 배포를 위한 sandbox를 trunk로 복사

git-svn-id: http://xe-core.googlecode.com/svn/trunk@4534 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
zero 2008-09-19 07:18:15 +00:00
commit 5adfa91477
506 changed files with 16237 additions and 5543 deletions

View file

@ -54,7 +54,7 @@ RewriteRule ^([a-zA-Z0-9_]+)/page/([[:digit:]]+)$ ./index.php?mid=$1&page=$2 [L]
RewriteRule ^([a-zA-Z0-9_]+)/category/([[:digit:]]+)$ ./index.php?mid=$1&category=$2 [L]
# mid + act + document_Srl
RewriteRule ^([a-zA-Z0-9_]+)/([a-zA-Z0-9_]+)/([[:digit:]]+)$ ./index.php?mid=$1&document_srl=$3&act=$2 [L]
RewriteRule ^([a-zA-Z0-9_]+)/([a-zA-Z])([a-zA-Z0-9_]+)/([[:digit:]]+)$ ./index.php?mid=$1&document_srl=$4&act=$2$3 [L]
# mid + document_Srl + page
RewriteRule ^([a-zA-Z0-9_]+)/([[:digit:]]+)/page/([[:digit:]]+)$ ./index.php?mid=$1&document_srl=$2&page=$3 [L]

View file

@ -7,15 +7,6 @@
* @brief 자동 링크 애드온
**/
if($called_position == 'after_module_proc' && Context::getResponseMethod()!="XMLRPC") {
$script_code = <<<EndOfScript
<script type="text/javascript">
// <![CDATA[
var url_regx = new RegExp("(http|https|ftp|news)://([^ \\r\\n]*)","i"); function replaceHrefLink(target_obj) { var obj_list = new Array(); var obj = target_obj; while(obj) { obj_list[obj_list.length] = obj; obj = obj.nextSibling; } for(var i=0;i<obj_list.length;i++) { var obj = obj_list[i]; var pObj = obj.parentNode; if(!pObj) continue; var pN = pObj.nodeName.toLowerCase(); if(pN == 'a' || pN == 'pre' || pN == 'xml' || pN == 'textarea' || pN == 'input') continue; if(obj.nodeType == 3 && obj.data && url_regx.test(obj.data) ) { var html = obj.nodeValue.replace(url_regx,"<a href=\"$1://$2\" onclick=\"window.open(this.href); return false;\">$1://$2</a>"); var dummy = xCreateElement('span'); xInnerHtml(dummy, html); pObj.insertBefore(dummy, obj); pObj.removeChild(obj); } else if(obj.nodeType == 1 && obj.firstChild) { replaceHrefLink(obj.firstChild); } } } function addUrlLink() { var objs = xGetElementsByClassName('xe_content'); if(objs.length<1) return; for(var i=0;i<objs.length;i++) { if(url_regx.test(xInnerHtml(objs[i]))) replaceHrefLink(objs[i].firstChild); } } xAddEventListener(window,'load', addUrlLink);
// ]]>
</script>
EndOfScript;
Context::addHtmlHeader($script_code);
Context::addJsFile('./addons/autolink/autolink.js');
}
?>

View file

@ -0,0 +1,47 @@
var url_regx = /((http|https|ftp|news|telnet|irc):\/\/(([0-9a-z\-._~!$&'\(\)*+,;=:]|(%[0-9a-f]{2}))*\@)?((\[(((([0-9a-f]{1,4}:){6}([0-9a-f]{1,4}:[0-9a-f]{1,4})|(([0-9]|([1-9][0-9])|(1[0-9][0-9])|(2[0-4][0-9])|(25[0-5])){3}[0-9]|([1-9][0-9])|(1[0-9][0-9])|(2[0-4][0-9])|(25[0-5])))|(::([0-9a-f]{1,4}:){5}([0-9a-f]{1,4}:[0-9a-f]{1,4})|(([0-9]|([1-9][0-9])|(1[0-9][0-9])|(2[0-4][0-9])|(25[0-5])){3}[0-9]|([1-9][0-9])|(1[0-9][0-9])|(2[0-4][0-9])|(25[0-5])))|(([0-9a-f]{1,4})?::([0-9a-f]{1,4}:){4}([0-9a-f]{1,4}:[0-9a-f]{1,4})|(([0-9]|([1-9][0-9])|(1[0-9][0-9])|(2[0-4][0-9])|(25[0-5])){3}[0-9]|([1-9][0-9])|(1[0-9][0-9])|(2[0-4][0-9])|(25[0-5])))|((([0-9a-f]{1,4}:)?[0-9a-f]{1,4})?::([0-9a-f]{1,4}:){3}([0-9a-f]{1,4}:[0-9a-f]{1,4})|(([0-9]|([1-9][0-9])|(1[0-9][0-9])|(2[0-4][0-9])|(25[0-5])){3}[0-9]|([1-9][0-9])|(1[0-9][0-9])|(2[0-4][0-9])|(25[0-5])))|((([0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::([0-9a-f]{1,4}:){2}([0-9a-f]{1,4}:[0-9a-f]{1,4})|(([0-9]|([1-9][0-9])|(1[0-9][0-9])|(2[0-4][0-9])|(25[0-5])){3}[0-9]|([1-9][0-9])|(1[0-9][0-9])|(2[0-4][0-9])|(25[0-5])))|((([0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:([0-9a-f]{1,4}:[0-9a-f]{1,4})|(([0-9]|([1-9][0-9])|(1[0-9][0-9])|(2[0-4][0-9])|(25[0-5])){3}[0-9]|([1-9][0-9])|(1[0-9][0-9])|(2[0-4][0-9])|(25[0-5])))|((([0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::([0-9a-f]{1,4}:[0-9a-f]{1,4})|(([0-9]|([1-9][0-9])|(1[0-9][0-9])|(2[0-4][0-9])|(25[0-5])){3}[0-9]|([1-9][0-9])|(1[0-9][0-9])|(2[0-4][0-9])|(25[0-5])))|((([0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4})|((([0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::))|(v[0-9a-f]+.[0-9a-z\-._~!$&'\(\)*+,;=:]+))\])|(([0-9]|([1-9][0-9])|(1[0-9][0-9])|(2[0-4][0-9])|(25[0-5])){3}[0-9]|([1-9][0-9])|(1[0-9][0-9])|(2[0-4][0-9])|(25[0-5]))|(([0-9a-z\-._~!$&'\(\)*+,;=]|(%[0-9a-f]{2}))+))(:[0-9]*)?(\/([0-9a-z\-._~!$&'\(\)*+,;=:@]|(%[0-9a-f]{2}))*)*(\?([0-9a-z\-._~!$&'\(\)*+,;=:@\/\?]|(%[0-9a-f]{2}))*)?(#([0-9a-z\-._~!$&'\(\)*+,;=:@\/\?]|(%[0-9a-f]{2}))*)?)/i;
function replaceHrefLink(target_obj)
{
var obj_list = new Array();
var obj = target_obj;
while(obj) {
obj_list[obj_list.length] = obj;
obj = obj.nextSibling;
}
for(var i=0;i<obj_list.length;i++) {
var obj = obj_list[i];
var pObj = obj.parentNode;
if(!pObj) continue;
var pN = pObj.nodeName.toLowerCase();
if(pN == 'a' || pN == 'pre' || pN == 'xml' || pN == 'textarea' || pN == 'input')
continue;
if(obj.nodeType == 3 && obj.data && url_regx.test(obj.data) ) {
var html = obj.nodeValue.split('<');
for(var i=0;i<html.length;i++) {
var html2 = html[i].split('>');
for(var j=0;j<html2.length;j++)
html2[j] = html2[j].replace(url_regx,"<a href=\"$1\" onclick=\"window.open(this.href); return false;\">$1<\/a>");
html[i] = html2.join('&gt;');
}
var output = html.join('&lt;');
var dummy = xCreateElement('span');
xInnerHtml(dummy, output);
pObj.insertBefore(dummy, obj);
pObj.removeChild(obj);
}
else if(obj.nodeType == 1 && obj.firstChild)
replaceHrefLink(obj.firstChild);
}
}
function addUrlLink() {
var objs = xGetElementsByClassName('xe_content');
if(objs.length<1) return;
for(var i=0;i<objs.length;i++) {
if(url_regx.test(xInnerHtml(objs[i]))) replaceHrefLink(objs[i].firstChild);
}
}
xAddEventListener(window,'load', addUrlLink);

View file

@ -26,9 +26,10 @@
</description>
<version>0.1</version>
<date>2008-04-22</date>
<link>http://www.zeroboard.com/</link>
<author email_address="zero@zeroboard.com" link="http://www.zeroboard.com">
<name xml:lang="ko">zero</name>
<name xml:lang="ko">제로</name>
<name xml:lang="en">zero</name>
<name xml:lang="zh-CN">zero</name>
<name xml:lang="es">zero</name>

View file

@ -51,6 +51,7 @@
</description>
<version>0.1</version>
<date>2007-02-28</date>
<link>http://www.zeroboard.com/</link>
<author email_address="zero@zeroboard.com" link="http://www.zeroboard.com">
<name xml:lang="ko">제로</name>

View file

@ -37,6 +37,7 @@
</description>
<version>0.1</version>
<date>2007-02-28</date>
<link>http://www.zeroboard.com/</link>
<author email_address="zero@zeroboard.com" link="http://www.zeroboard.com">
<name xml:lang="ko">제로</name>

View file

@ -16,6 +16,7 @@
<description xml:lang="jp">機能をオンにすると、レモンペンをサイト上で使うことが出来ます。 (LemonPenOpenmaru社提供)</description>
<version>0.1</version>
<date>2007-12-10</date>
<link>http://www.zeroboard.com/</link>
<author email_address="zero@zeroboard.com" link="http://www.zeroboard.com">
<name xml:lang="ko">zero</name>

View file

@ -36,6 +36,7 @@
</description>
<version>0.1</version>
<date>2008-05-28</date>
<link>http://www.zeroboard.com/</link>
<author email_address="zero@zeroboard.com" link="http://www.zeroboard.com">
<name xml:lang="ko">제로</name>

View file

@ -30,6 +30,7 @@
</description>
<version>0.2</version>
<date>2007-02-28</date>
<link>http://www.zeroboard.com/</link>
<author email_address="zero@zeroboard.com" link="http://www.zeroboard.com">
<name xml:lang="ko">제로</name>

View file

@ -12,6 +12,7 @@
</description>
<version>0.1</version>
<date>2008-06-20</date>
<link>http://www.zeroboard.com/</link>
<author email_address="zero@zeroboard.com" link="http://www.zeroboard.com">
<name xml:lang="ko">제로</name>

View file

@ -37,6 +37,7 @@
</description>
<version>0.1</version>
<date>2007-02-28</date>
<link>http://www.zeroboard.com/</link>
<author email_address="zero@zeroboard.com" link="http://www.zeroboard.com">
<name xml:lang="ko">제로</name>

View file

@ -37,6 +37,7 @@
</description>
<version>0.1</version>
<date>2007-07-26</date>
<link>http://www.zeroboard.com/</link>
<author email_address="zero@zeroboard.com" link="http://www.zeroboard.com">
<name xml:lang="ko">제로</name>

View file

@ -7,7 +7,7 @@
if($member_srl<1) return $matches[0];
if(!isset($GLOBALS['_pointLevelIcon'][$member_srl])) {
// 포인트 설정을 구해옴
// 포인트 설정을 구해옴
if(!$GLOBALS['_pointConfig']) {
$oModuleModel = &getModel('module');
$GLOBALS['_pointConfig'] = $oModuleModel->getModuleConfig('point');
@ -26,7 +26,7 @@
$text = $matches[5];
// 레벨 아이콘의 위치를 구함
$level_icon = sprintf("./modules/point/icons/%s/%d.gif", $config->level_icon, $level);
$level_icon = sprintf('./modules/point/icons/%s/%d.gif', $config->level_icon, $level);
// 최고 레벨이 아니면 다음 레벨로 가기 위한 per을 구함
if($level < $config->max_level) {
@ -34,13 +34,14 @@
if($next_point > 0) $per = (int)($point / $next_point*100);
}
$title = sprintf("%s:%s%s %s, %s:%s/%s", Context::getLang('point'), $point, $config->point_name, $per?"(".$per."%)":"", Context::getLang('level'), $level, $config->max_level);
$title = sprintf('%s:%s%s %s, %s:%s/%s', Context::getLang('point'), $point, $config->point_name, $per?'('.$per.'%)':'', Context::getLang('level'), $level, $config->max_level);
$alt = sprintf('[%s:%s]', Context::getLang('level'), $level);
$text = sprintf('<span class="nowrap member_%s" style="cursor:pointer"><img src="%s" alt="%s" title="%s" style="vertical-align:middle;margin-right:3px"/>%s</span>', $member_srl, $level_icon, $title, $title, $text);
$text = sprintf('<span class="nowrap member_%s" style="cursor:pointer"><img src="%s" alt="%s" title="%s" style="vertical-align:middle;margin-right:3px"/>%s</span>', $member_srl, $level_icon, $alt, $title, $text);
$GLOBALS['_pointLevelIcon'][$member_srl] = $text;
}
}
return $GLOBALS['_pointLevelIcon'][$member_srl];
}
?>
?>

View file

@ -36,6 +36,7 @@
</description>
<version>0.1</version>
<date>2007-02-28</date>
<link>http://www.zeroboard.com/</link>
<author email_address="webmaster@dynamicdrive.com" link="http://dynamicdrive.com">
<name xml:lang="ko">dynamicdrive.com</name>

View file

@ -16,6 +16,7 @@
<description xml:lang="ru">Собирает лог рефералов и статистику.</description>
<version>0.1</version>
<date>2007-11-26</date>
<link>http://www.zeroboard.com/</link>
<author email_address="haneul0318@gmail.com" link="http://haneul.zetyx.net">
<name xml:lang="ko">haneul</name>

View file

@ -26,6 +26,7 @@
</description>
<version>0.1</version>
<date>2008-04-22</date>
<link>http://www.zeroboard.com/</link>
<author email_address="zero@zeroboard.com" link="http://www.zeroboard.com">
<name xml:lang="ko">zero</name>

View file

@ -6,6 +6,7 @@
<description xml:lang="en">This addon enables Comment Notifier module.</description>
<version>0.2</version>
<date>2008-06-02</date>
<link>http://www.zeroboard.com/</link>
<author email_address="haneul0318@seungyeop.kr" link="http://www.seungyeop.kr">
<name xml:lang="ko">haneul</name>

View file

@ -22,6 +22,7 @@
var $context = NULL; ///< @brief request parameter 및 각종 환경 변수등을 정리하여 담을 변수
var $db_info = NULL; ///< @brief DB 정보
var $ftp_info = NULL; ///< @brief FTP 정보
var $ssl_actions = array(); ///< @brief ssl로 전송해야 할 action등록 (common/js/xml_handler.js에서 ajax통신시 활용)
var $js_files = array(); ///< @brief display시에 사용하게 되는 js files의 목록
@ -260,6 +261,34 @@
return $this->db_info;
}
/**
* @biref FTP 정보가 등록되었는지 확인
**/
function isFTPRegisted() {
$ftp_config_file = Context::getFTPConfigFile();
if(file_exists($ftp_config_file)) return true;
return false;
}
/**
* @brief FTP 정보가 담긴 object를 return
**/
function getFTPInfo() {
$oContext = &Context::getInstance();
return $oContext->_getFTPInfo();
}
/**
* @brief FTP 정보가 담긴 object를 return
**/
function _getFTPInfo() {
if(!$this->isFTPRegisted()) return null;
$ftp_config_file = $this->getFTPConfigFile();
@include($ftp_config_file);
return $ftp_info;
}
/**
* @brief 사이트 title adding
**/
@ -485,18 +514,18 @@
if(!count($_REQUEST)) return;
foreach($_REQUEST as $key => $val) {
if($val === "") continue;
if($key == "page" || $key == "cpage" || substr($key,-3)=="srl") $val = (int)$val;
else if(is_array($val) && count($val) ) {
foreach($val as $k => $v) {
if(get_magic_quotes_gpc()) $v = stripslashes($v);
if(version_compare(PHP_VERSION, "5.9.0", "<") && get_magic_quotes_gpc()) $v = stripslashes($v);
$v = trim($v);
$val[$k] = $v;
}
} else {
if(get_magic_quotes_gpc()) $val = stripslashes($val);
if(version_compare(PHP_VERSION, "5.9.0", "<") && get_magic_quotes_gpc()) $val = stripslashes($val);
$val = trim($val);
}
if(!$val) continue;
if($this->_getRequestMethod()=='GET'&&$_GET[$key]) $set_to_vars = true;
elseif($this->_getRequestMethod()=='POST'&&$_POST[$key]) $set_to_vars = true;
@ -596,7 +625,7 @@
for($i=0;$i<$num_args;$i=$i+2) {
$key = $args_list[$i];
$val = trim($args_list[$i+1]);
if(!$val) {
if(!isset($val)) {
unset($get_vars[$key]);
continue;
}
@ -615,7 +644,7 @@
// rewrite모듈을 사용할때 getUrl()을 이용한 url 생성
if($this->allow_rewrite) {
if(count($get_vars)) foreach($get_vars as $key => $value) if($value !== 0 && !$value) unset($get_vars[$key]);
if(count($get_vars)) foreach($get_vars as $key => $value) if(!isset($value) || $value === '') unset($get_vars[$key]);
$var_keys = array_keys($get_vars);
asort($var_keys);
@ -655,14 +684,12 @@
break;
case 'act.document_srl.mid' :
return sprintf('%s%s/%s/%s',$path,$get_vars['mid'], $get_vars['act'],$get_vars['document_srl']);
case 'act.document_srl.mid.page' :
return sprintf('%s%s/%s/%s/page/%s',$path,$get_vars['mid'], $get_vars['act'], $get_vars['document_srl'],$get_vars['page']);
}
}
// rewrite 모듈을 사용하지 않고 인자의 값이 2개 이상이거나 rewrite모듈을 위한 인자로 적당하지 않을 경우
foreach($get_vars as $key => $val) {
if(!$val) continue;
if(!isset($val)) continue;
$url .= ($url?'&':'').$key.'='.urlencode($val);
}
@ -960,6 +987,13 @@
return _XE_PATH_."files/config/db.config.php";
}
/**
* @brief ftp설정내용이 저장되어 있는 config file의 path를 return
**/
function getFTPConfigFile() {
return _XE_PATH_."files/config/ftp.config.php";
}
/**
* @brief 설치가 되어 있는지에 대한 체크
*

View file

@ -373,37 +373,37 @@
function getConditionPart($name, $value, $operation) {
switch($operation) {
case 'equal' :
if(!$value) return;
if(!isset($value)) return;
return $name.' = '.$value;
break;
case 'more' :
if(!$value) return;
if(!isset($value)) return;
return $name.' >= '.$value;
break;
case 'excess' :
if(!$value) return;
if(!isset($value)) return;
return $name.' > '.$value;
break;
case 'less' :
if(!$value) return;
if(!isset($value)) return;
return $name.' <= '.$value;
break;
case 'below' :
if(!$value) return;
if(!isset($value)) return;
return $name.' < '.$value;
break;
case 'like_tail' :
case 'like_prefix' :
case 'like' :
if(!$value) return;
if(!isset($value)) return;
return $name.' like '.$value;
break;
case 'in' :
if(!$value) return;
if(!isset($value)) return;
return $name.' in ('.$value.')';
break;
case 'notequal' :
if(!$value) return;
if(!isset($value)) return;
return $name.' <> '.$value;
break;
case 'notnull' :

View file

@ -102,7 +102,7 @@
**/
function addQuotes($string) {
if(!$this->fd) return $string;
if(get_magic_quotes_gpc()) $string = stripslashes(str_replace("\\","\\\\",$string));
if(version_compare(PHP_VERSION, "5.9.0", "<") && get_magic_quotes_gpc()) $string = stripslashes(str_replace("\\","\\\\",$string));
if(!is_numeric($string)) $string = str_replace("'","''",$string);
return $string;
}
@ -381,7 +381,7 @@
foreach($output->conditions as $key => $val) {
$sub_condition = '';
foreach($val['condition'] as $k =>$v) {
if(!$v['value']) continue;
if(!isset($v['value']) || $v['value'] === '') continue;
$name = $v['column'];
$operation = $v['operation'];

View file

@ -592,7 +592,7 @@
foreach($output->conditions as $key => $val) {
$sub_condition = '';
foreach($val['condition'] as $k =>$v) {
if(!$v['value']) continue;
if(!isset($v['value']) || $v['value'] === '') continue;
$name = $v['column'];
$operation = $v['operation'];

View file

@ -113,7 +113,7 @@
* @brief 쿼리에서 입력되는 문자열 변수들의 quotation 조절
**/
function addQuotes($string) {
if(get_magic_quotes_gpc()) $string = stripslashes(str_replace("\\","\\\\",$string));
if(version_compare(PHP_VERSION, "5.9.0", "<") && get_magic_quotes_gpc()) $string = stripslashes(str_replace("\\","\\\\",$string));
if(!is_numeric($string)) $string = @mysql_escape_string($string);
return $string;
}
@ -369,7 +369,7 @@
foreach($output->conditions as $key => $val) {
$sub_condition = '';
foreach($val['condition'] as $k =>$v) {
if(!$v['value']) continue;
if(!isset($v['value']) || $v['value'] === '') continue;
$name = $v['column'];
$operation = $v['operation'];

View file

@ -114,7 +114,7 @@
* @brief 쿼리에서 입력되는 문자열 변수들의 quotation 조절
**/
function addQuotes($string) {
if(get_magic_quotes_gpc()) $string = stripslashes(str_replace("\\","\\\\",$string));
if(version_compare(PHP_VERSION, "5.9.0", "<") && get_magic_quotes_gpc()) $string = stripslashes(str_replace("\\","\\\\",$string));
if(!is_numeric($string)) $string = @mysql_escape_string($string);
return $string;
}
@ -379,7 +379,7 @@
foreach($output->conditions as $key => $val) {
$sub_condition = '';
foreach($val['condition'] as $k =>$v) {
if(!$v['value']) continue;
if(!isset($v['value']) || $v['value'] === '') continue;
$name = $v['column'];
$operation = $v['operation'];

View file

@ -108,7 +108,7 @@
* @brief 쿼리에서 입력되는 문자열 변수들의 quotation 조절
**/
function addQuotes($string) {
if(get_magic_quotes_gpc()) $string = stripslashes(str_replace("\\","\\\\",$string));
if(version_compare(PHP_VERSION, "5.9.0", "<") && get_magic_quotes_gpc()) $string = stripslashes(str_replace("\\","\\\\",$string));
if(!is_numeric($string)) $string = @pg_escape_string($string);
return $string;
}
@ -371,7 +371,7 @@
foreach($output->conditions as $key => $val) {
$sub_condition = '';
foreach($val['condition'] as $k =>$v) {
if(!$v['value']) continue;
if(!isset($v['value']) || $v['value'] === '') continue;
$name = $v['column'];
$operation = $v['operation'];

View file

@ -116,7 +116,7 @@
* @brief 쿼리에서 입력되는 문자열 변수들의 quotation 조절
**/
function addQuotes($string) {
if(get_magic_quotes_gpc()) $string = stripslashes(str_replace("\\","\\\\",$string));
if(version_compare(PHP_VERSION, "5.9.0", "<") && get_magic_quotes_gpc()) $string = stripslashes(str_replace("\\","\\\\",$string));
if(!is_numeric($string)) $string = str_replace("'","''", $string);
return $string;
}
@ -352,7 +352,7 @@
foreach($output->conditions as $key => $val) {
$sub_condition = '';
foreach($val['condition'] as $k =>$v) {
if(!$v['value']) continue;
if(!isset($v['value']) || $v['value'] === '') continue;
$name = $v['column'];
$operation = $v['operation'];

View file

@ -123,7 +123,7 @@
* @brief 쿼리에서 입력되는 문자열 변수들의 quotation 조절
**/
function addQuotes($string) {
if(get_magic_quotes_gpc()) $string = stripslashes(str_replace("\\","\\\\",$string));
if(version_compare(PHP_VERSION, "5.9.0", "<") && get_magic_quotes_gpc()) $string = stripslashes(str_replace("\\","\\\\",$string));
if(!is_numeric($string)) $string = str_replace("'","''",$string);
return $string;
}
@ -381,7 +381,7 @@
foreach($output->conditions as $key => $val) {
$sub_condition = '';
foreach($val['condition'] as $k =>$v) {
if(!$v['value']) continue;
if(!isset($v['value']) || $v['value'] === '') continue;
$name = $v['column'];
$operation = $v['operation'];

View file

@ -121,6 +121,22 @@
* 주어진 경로를 단계별로 접근하여 recursive하게 디렉토리 생성
**/
function makeDir($path_string) {
static $oFtp = null;
// safe_mode 일 경우 ftp 정보를 이용해서 디렉토리 생성
if(ini_get('safe_mode') && $oFtp == null) {
if(!Context::isFTPRegisted()) return;
require_once(_XE_PATH_.'libs/ftp.class.php');
$ftp_info = Context::getFTPInfo();
$oFtp = new ftp();
if(!$oFtp->ftp_connect('localhost')) return;
if(!$oFtp->ftp_login($ftp_info->ftp_user, $ftp_info->ftp_password)) {
$oFtp->ftp_quit();
return;
}
}
$path_string = str_replace(_XE_PATH_,'',$path_string);
$path_list = explode('/', $path_string);
@ -129,8 +145,13 @@
if(!$path_list[$i]) continue;
$path .= $path_list[$i].'/';
if(!is_dir($path)) {
@mkdir($path, 0755);
@chmod($path, 0755);
if(ini_get('safe_mode')) {
$oFtp->ftp_mkdir($path);
$oFtp->ftp_site("CHMOD 777 ".$path);
} else {
@mkdir($path, 0755);
@chmod($path, 0755);
}
}
}
@ -180,8 +201,20 @@
* @biref 지정된 디렉토리를 제외한 모든 파일을 삭제
**/
function removeFilesInDir($path) {
FileHandler::removedir($path);
FileHandler::makeDir($path);
$path = FileHandler::getRealPath($path);
if(!is_dir($path)) return;
$directory = dir($path);
while($entry = $directory->read()) {
if ($entry != "." && $entry != "..") {
if (is_dir($path."/".$entry)) {
FileHandler::removeFilesInDir($path."/".$entry);
} else {
@unlink($path."/".$entry);
}
}
}
$directory->close();
@rmdir($path);
}
/**

View file

@ -72,7 +72,10 @@
}
fclose($socket);
return array($code, $body);
$ret->result_code = $code;
$ret->body = $body;
return $ret;
}
}
?>

View file

@ -181,61 +181,64 @@
$this->error = 'msg_module_is_not_exists';
}
// 에러가 발생하였을시 처리
if($this->error) {
// message 모듈 객체를 생성해서 컨텐츠 생성
$oMessageView = &getView('message');
$oMessageView->setError(-1);
$oMessageView->setMessage($this->error);
$oMessageView->dispMessage();
// XMLRPC call 이 아니면 message view 객체 이용하도록
if(Context::getRequestMethod() != 'XMLRPC') {
// 에러가 발생하였을시 처리
if($this->error) {
// message 모듈 객체를 생성해서 컨텐츠 생성
$oMessageView = &getView('message');
$oMessageView->setError(-1);
$oMessageView->setMessage($this->error);
$oMessageView->dispMessage();
// 정상적으로 호출된 객체가 있을 경우 해당 객체의 template를 변경
if($oModule) {
$oModule->setTemplatePath($oMessageView->getTemplatePath());
$oModule->setTemplateFile($oMessageView->getTemplateFile());
// 정상적으로 호출된 객체가 있을 경우 해당 객체의 template를 변경
if($oModule) {
$oModule->setTemplatePath($oMessageView->getTemplatePath());
$oModule->setTemplateFile($oMessageView->getTemplateFile());
// 그렇지 않으면 message 객체를 호출된 객체로 지정
} else {
$oModule = $oMessageView;
// 그렇지 않으면 message 객체를 호출된 객체로 지정
} else {
$oModule = $oMessageView;
}
}
}
// 해당 모듈에 layout_srl이 있는지 확인
if($oModule->module_info->layout_srl && !$oModule->getLayoutFile()) {
// 해당 모듈에 layout_srl이 있는지 확인
if($oModule->module_info->layout_srl && !$oModule->getLayoutFile()) {
// layout_srl이 있으면 해당 레이아웃 정보를 가져와 layout_path/ layout_file 위치 변경
$oLayoutModel = &getModel('layout');
$layout_info = $oLayoutModel->getLayout($oModule->module_info->layout_srl);
// layout_srl이 있으면 해당 레이아웃 정보를 가져와 layout_path/ layout_file 위치 변경
$oLayoutModel = &getModel('layout');
$layout_info = $oLayoutModel->getLayout($oModule->module_info->layout_srl);
if($layout_info) {
if($layout_info) {
// 레이아웃 정보중 extra_vars의 이름과 값을 $layout_info에 입력
if($layout_info->extra_var_count) {
foreach($layout_info->extra_var as $var_id => $val) {
$layout_info->{$var_id} = $val->value;
// 레이아웃 정보중 extra_vars의 이름과 값을 $layout_info에 입력
if($layout_info->extra_var_count) {
foreach($layout_info->extra_var as $var_id => $val) {
$layout_info->{$var_id} = $val->value;
}
}
}
// 레이아웃 정보중 menu를 Context::set
if($layout_info->menu_count) {
foreach($layout_info->menu as $menu_id => $menu) {
if(file_exists($menu->php_file)) @include($menu->php_file);
Context::set($menu_id, $menu);
// 레이아웃 정보중 menu를 Context::set
if($layout_info->menu_count) {
foreach($layout_info->menu as $menu_id => $menu) {
if(file_exists($menu->php_file)) @include($menu->php_file);
Context::set($menu_id, $menu);
}
}
// 레이아웃 정보중 header_script가 있으면 헤더 추가
if($layout_info->header_script) Context::addHtmlHeader($layout_info->header_script);
// 레이아웃 정보를 Context::set
Context::set('layout_info', $layout_info);
$oModule->setLayoutPath($layout_info->path);
$oModule->setLayoutFile('layout');
// 레이아웃이 수정되었을 경우 수정본을 지정
$edited_layout = sprintf('./files/cache/layout/%d.html', $layout_info->layout_srl);
if(file_exists($edited_layout)) $oModule->setEditedLayoutFile($edited_layout);
}
// 레이아웃 정보중 header_script가 있으면 헤더 추가
if($layout_info->header_script) Context::addHtmlHeader($layout_info->header_script);
// 레이아웃 정보를 Context::set
Context::set('layout_info', $layout_info);
$oModule->setLayoutPath($layout_info->path);
$oModule->setLayoutFile('layout');
// 레이아웃이 수정되었을 경우 수정본을 지정
$edited_layout = sprintf('./files/cache/layout/%d.html', $layout_info->layout_srl);
if(file_exists($edited_layout)) $oModule->setEditedLayoutFile($edited_layout);
}
}

View file

@ -115,6 +115,9 @@
// <!--@, --> 의 변경
$buff = preg_replace_callback('!<\!--@(.*?)-->!is', array($this, '_compileFuncToCode'), $buff);
// <!--// ~ --> 주석문 제거
$buff = preg_replace('!(\n?)( *?)<\!--//(.*?)-->!is', '', $buff);
// import xml filter/ css/ js/ 언어파일 <!--%import("filename"[,optimized=true|false][,media="media"][,targetie="lt IE 6|IE 7|gte IE 8|..."])--> (media는 css에만 적용)
$buff = preg_replace_callback('!<\!--%import\(\"([^\"]*?)\"(,optimized\=(true|false))?(,media\=\"([^\"]*)\")?(,targetie=\"([^\"]*)\")?\)-->!is', array($this, '_compileImportCode'), $buff);

View file

@ -63,6 +63,11 @@
$table_xml = FileHandler::readFile($table_file);
$table_obj = parent::parse($table_xml);
if($table_obj->table) {
if(isset($table_obj->table->column) && !is_array($table_obj->table->column))
{
$table_obj->table->column = array($table_obj->table->column);
}
foreach($table_obj->table->column as $k => $v) {
$buff .= sprintf('$output->column_type["%s"] = "%s";%s', $v->attrs->name, $v->attrs->type, "\n");
}

View file

@ -86,8 +86,8 @@ DyCalendar._TT["ABOUT"] =
"\n"+
"최신 버전을 받으시려면 http://www.dynarch.com/projects/calendar/ 에 방문하세요\n" +
"\n"+
"GNU LGPL 라이스로 배포됩니다. \n"+
"라이스에 대한 자세한 내용은 http://gnu.org/licenses/lgpl.html 을 읽으세요." +
"GNU LGPL 라이스로 배포됩니다. \n"+
"라이스에 대한 자세한 내용은 http://gnu.org/licenses/lgpl.html 을 읽으세요." +
"\n\n" +
"날짜 선택:\n" +
"- 연도를 선택하려면 \xab, \xbb 버튼을 사용합니다\n" +

View file

@ -1389,13 +1389,10 @@ DyCalendar.prototype.showAtElement = function (el, opts) {
document.body.appendChild(cp);
var br = DyCalendar.getAbsolutePos(cp);
document.body.removeChild(cp);
if (DyCalendar.is_ie) {
br.y += document.body.scrollTop;
br.x += document.body.scrollLeft;
} else {
br.y += window.scrollY;
br.x += window.scrollX;
}
if (document.body.scrollLeft){br.x += document.body.scrollLeft;}
br.x += window.scrollX;
if (document.body.scrollTop){br.y += document.body.scrollTop;}
br.y += window.scrollY;
var tmp = box.x + box.width - br.x;
if (tmp > 0) box.x -= tmp;
tmp = box.y + box.height - br.y;

File diff suppressed because one or more lines are too long

View file

@ -59,7 +59,7 @@ String.prototype.setQuery = function(key, val) {
}
}
}
return uri;
return encodeURI(uri);
}
/**

View file

@ -1,64 +1,187 @@
<public:component>
<public:attach event="onpropertychange" onevent="doFix()" />
<script type="text/javascript">
// IE5.5+ PNG Alpha Fix v1.0RC4
// (c) 2004-2005 Angus Turnbull http://www.twinhelix.com
// This is licensed under the CC-GNU LGPL, version 2.1 or later.
// IE5.5+ PNG Alpha Fix v2.0 Alpha
// (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. That's all the configuration you need.
if (typeof blankImg == 'undefined') var blankImg = request_uri+'common/tpl/images/blank.gif'; // 1x1px 짜리 투명 이미지(blank.gif)의 경로를 변경.
var f = 'DXImageTransform.Microsoft.AlphaImageLoader';
var IEPNGFix = window.IEPNGFix || {};
IEPNGFix.data = IEPNGFix.data || {};
function filt(s, m)
{
if (filters[f])
{
filters[f].enabled = s ? true : false;
if (s) with (filters[f]) { src = s; sizingMethod = m }
}
else if (s) style.filter = 'progid:'+f+'(src="'+s+'",sizingMethod="'+m+'")';
}
function doFix()
{
// Assume IE7 is OK.
if (!/MSIE (5\.5|6\.)/.test(navigator.userAgent) ||
(event && !/(background|src)/.test(event.propertyName))) return;
// 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!
IEPNGFix.blankImg = request_uri+'common/tpl/images/blank.gif';
var bgImg = currentStyle.backgroundImage || style.backgroundImage;
if (tagName == 'IMG')
{
if ((/\.png$/i).test(src))
{
if (currentStyle.width == 'auto' && currentStyle.height == 'auto')
style.width = offsetWidth + 'px';
filt(src, 'image');
// 'scale' 을 'image' 으로 변경하면 padding 적용시 나타나는 이미지 크기의 변화(잘못된 렌더링)를 방지할 수 있다. 하지만 border 표현에 문제가 생긴다.
src = blankImg;
}
else if (src.indexOf(blankImg) < 0) filt();
}
else if (bgImg && bgImg != 'none')
{
if (bgImg.match(/^url[("']+(.*\.png)[)"']+$/i))
{
var s = RegExp.$1;
if (currentStyle.width == 'auto' && currentStyle.height == 'auto')
style.width = offsetWidth + 'px';
style.backgroundImage = 'none';
filt(s, 'crop');
// IE link fix.
for (var n = 0; n < childNodes.length; n++)
if (childNodes[n].style) childNodes[n].style.position = 'relative';
}
else filt();
}
}
IEPNGFix.fix = function(elm, src, t) {
// Applies an image 'src' to an element 'elm' using the DirectX filter.
// If 'src' is null, filter is disabled.
// Disables the 'hook' to prevent infinite recursion on setting BG/src.
// 't' = type, where background tile = 0, background = 1, IMG SRC = 2.
doFix();
var h = this.hook.enabled;
this.hook.enabled = 0;
var f = 'DXImageTransform.Microsoft.AlphaImageLoader';
src = (src || '').replace(/\(/g, '%28').replace(/\)/g, '%29');
if (
src && !(/IMG|INPUT/.test(elm.nodeName) && (t != 2)) &&
elm.currentStyle.width == 'auto' && elm.currentStyle.height == 'auto'
) {
elm.style.width = elm.offsetWidth + 'px';
elm.style.height = elm.clientHeight + 'px';
if (elm.currentStyle.display == 'inline') {
elm.style.display = 'inline-block';
}
}
if (t == 1) {
elm.style.backgroundImage = 'url("' + this.blankImg + '")';
}
if (t == 2) {
elm.src = this.blankImg;
}
if (elm.filters[f]) {
elm.filters[f].enabled = src ? true : false;
if (src) {
elm.filters[f].src = src;
}
} else if (src) {
elm.style.filter = 'progid:' + f + '(src="' + src +
'",sizingMethod="' + (t == 2 ? 'scale' : 'crop') + '")';
}
this.hook.enabled = h;
};
IEPNGFix.process = function(elm, init) {
// Checks the onpropertychange event (on first 'init' run, a fake event)
// and calls the filter-applying-functions.
if (
!/MSIE (5\.5|6)/.test(navigator.userAgent) ||
typeof elm.filters == 'unknown'
) {
return;
}
if (!this.data[elm.uniqueID]) {
this.data[elm.uniqueID] = {
className: ''
};
}
var data = this.data[elm.uniqueID],
evt = init ? { propertyName: 'src,backgroundImage' } : event,
isSrc = /src/.test(evt.propertyName),
isBg = /backgroundImage/.test(evt.propertyName),
isPos = /width|height|background(Pos|Rep)/.test(evt.propertyName),
isClass = !init && ((elm.className != data.className) &&
(elm.className || data.className));
if (!(isSrc || isBg || isPos || isClass)) {
return;
}
data.className = elm.className;
var blank = this.blankImg.match(/([^\/]+)$/)[1],
eS = elm.style,
eCS = elm.currentStyle;
// Required for Whatever:hover - erase set BG if className changes.
if (
isClass && (eS.backgroundImage.indexOf('url(') == -1 ||
eS.backgroundImage.indexOf(blank) > -1)
) {
return setTimeout(function() {
eS.backgroundImage = '';
}, 0);
}
// Foregrounds.
if (isSrc && elm.src && { IMG: 1, INPUT: 1 }[elm.nodeName]) {
if ((/\.png/i).test(elm.src)) {
this.fix(elm, elm.src, 2);
} else if (elm.src.indexOf(blank) == -1) {
this.fix(elm, '');
}
}
// Backgrounds.
var bgSrc = eCS.backgroundImage || eS.backgroundImage;
if ((bgSrc + elm.src).indexOf(blank) == -1) {
var bgPNG = bgSrc.match(/url[("']+(.*\.png[^\)"']*)[\)"']/i);
if (bgPNG) {
if (this.tileBG && !{ IMG: 1, INPUT: 1 }[elm.nodeName]) {
this.tileBG(elm, bgPNG[1]);
this.fix(elm, '', 1);
} else {
if (data.tiles && data.tiles.src) {
this.tileBG(elm, '');
}
this.fix(elm, bgPNG[1], 1);
this.childFix(elm);
}
} else {
if (data.tiles && data.tiles.src) {
this.tileBG(elm, '');
}
this.fix(elm, '');
}
} else if ((isPos || isClass) && data.tiles && data.tiles.src) {
this.tileBG(elm, data.tiles.src);
}
if (init) {
this.hook.enabled = 1;
elm.attachEvent('onpropertychange', this.hook);
}
};
IEPNGFix.childFix = function(elm) {
// "hasLayout" fix for unclickable children inside PNG backgrounds.
var tags = [
'a',
'input',
'select',
'textarea',
'button',
'iframe',
'object'
],
t = tags.length,
tFix = [];
while (t--) {
var pFix = elm.all.tags(tags[t]),
e = pFix.length;
while (e--) {
tFix.push(pFix[e]);
}
}
t = tFix.length;
if (t && (/relative|absolute/i).test(elm.currentStyle.position)) {
alert('IEPNGFix: Unclickable children of element:' +
'\n\n<' + elm.nodeName + (elm.id && ' id=' + elm.id) + '>');
}
while (t--) {
if (!(/relative|absolute/i).test(tFix[t].currentStyle.position)) {
tFix[t].style.position = 'relative';
}
}
};
IEPNGFix.hook = function() {
if (IEPNGFix.hook.enabled) {
IEPNGFix.process(element, 0);
}
};
IEPNGFix.process(element, 1);
</script>
</public:component>

View file

@ -0,0 +1,173 @@
// IE5.5+ PNG Alpha Fix v2.0 Alpha: Background Tiling Support
// (c) 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/
var IEPNGFix = window.IEPNGFix || {};
IEPNGFix.tileBG = function(elm, pngSrc, ready) {
// Params: A reference to a DOM element, the PNG src file pathname, and a
// hidden "ready-to-run" passed when called back after image preloading.
var data = this.data[elm.uniqueID],
elmW = Math.max(elm.clientWidth, elm.scrollWidth),
elmH = Math.max(elm.clientHeight, elm.scrollHeight),
bgX = elm.currentStyle.backgroundPositionX,
bgY = elm.currentStyle.backgroundPositionY,
bgR = elm.currentStyle.backgroundRepeat;
// Cache of DIVs created per element, and image preloader/data.
if (!data.tiles) {
data.tiles = {
elm: elm,
src: '',
cache: [],
img: new Image(),
old: {}
};
}
var tiles = data.tiles,
pngW = tiles.img.width,
pngH = tiles.img.height;
if (pngSrc) {
if (!ready && pngSrc != tiles.src) {
// New image? Preload it with a callback to detect dimensions.
tiles.img.onload = function() {
this.onload = null;
IEPNGFix.tileBG(elm, pngSrc, 1);
};
return tiles.img.src = pngSrc;
}
} else {
// No image?
if (tiles.src) ready = 1;
pngW = pngH = 0;
}
tiles.src = pngSrc;
if (!ready && elmW == tiles.old.w && elmH == tiles.old.h &&
bgX == tiles.old.x && bgY == tiles.old.y && bgR == tiles.old.r) {
return;
}
// Convert English and percentage positions to pixels.
var pos = {
top: '0%',
left: '0%',
center: '50%',
bottom: '100%',
right: '100%'
},
x,
y,
pc;
x = pos[bgX] || bgX;
y = pos[bgY] || bgY;
if (pc = x.match(/(\d+)%/)) {
x = Math.round((elmW - pngW) * (parseInt(pc[1]) / 100));
}
if (pc = y.match(/(\d+)%/)) {
y = Math.round((elmH - pngH) * (parseInt(pc[1]) / 100));
}
x = parseInt(x);
y = parseInt(y);
// Handle backgroundRepeat.
var repeatX = { 'repeat': 1, 'repeat-x': 1 }[bgR],
repeatY = { 'repeat': 1, 'repeat-y': 1 }[bgR];
if (repeatX) {
x %= pngW;
if (x > 0) x -= pngW;
}
if (repeatY) {
y %= pngH;
if (y > 0) y -= pngH;
}
// Go!
this.hook.enabled = 0;
if (!({ relative: 1, absolute: 1 }[elm.currentStyle.position])) {
elm.style.position = 'relative';
}
var count = 0,
xPos,
maxX = repeatX ? elmW : x + 0.1,
yPos,
maxY = repeatY ? elmH : y + 0.1,
d,
s,
isNew;
if (pngW && pngH) {
for (xPos = x; xPos < maxX; xPos += pngW) {
for (yPos = y; yPos < maxY; yPos += pngH) {
isNew = 0;
if (!tiles.cache[count]) {
tiles.cache[count] = document.createElement('div');
isNew = 1;
}
var clipR = (xPos + pngW > elmW ? elmW - xPos : pngW),
clipB = (yPos + pngH > elmH ? elmH - yPos : pngH);
d = tiles.cache[count];
s = d.style;
s.behavior = 'none';
s.left = xPos + 'px';
s.top = yPos + 'px';
s.width = clipR + 'px';
s.height = clipB + 'px';
s.clip = 'rect(' +
(yPos < 0 ? 0 - yPos : 0) + 'px,' +
clipR + 'px,' +
clipB + 'px,' +
(xPos < 0 ? 0 - xPos : 0) + 'px)';
s.display = 'block';
if (isNew) {
s.position = 'absolute';
s.zIndex = -999;
if (elm.firstChild) {
elm.insertBefore(d, elm.firstChild);
} else {
elm.appendChild(d);
}
}
this.fix(d, pngSrc, 0);
count++;
}
}
}
while (count < tiles.cache.length) {
this.fix(tiles.cache[count], '', 0);
tiles.cache[count++].style.display = 'none';
}
this.hook.enabled = 1;
// Cache so updates are infrequent.
tiles.old = {
w: elmW,
h: elmH,
x: bgX,
y: bgY,
r: bgR
};
};
IEPNGFix.update = function() {
// Update all PNG backgrounds.
for (var i in IEPNGFix.data) {
var t = IEPNGFix.data[i].tiles;
if (t && t.elm && t.src) {
IEPNGFix.tileBG(t.elm, t.src);
}
}
};
IEPNGFix.update.timer = 0;
if (window.attachEvent && !window.opera) {
window.attachEvent('onresize', function() {
clearTimeout(IEPNGFix.update.timer);
IEPNGFix.update.timer = setTimeout(IEPNGFix.update, 100);
});
}

View file

@ -297,7 +297,7 @@ function XmlJsFilterProc(confirm_msg) {
}
exec_xml(this.module, this.act, params, this.user_func, response, params, this.fo_obj);
return null;
return false;
}
// form proc
@ -305,7 +305,32 @@ function procFilter(fo_obj, filter_func) {
// form문 안에 위지윅 에디터가 세팅되어 있을 경우 에디터의 값과 지정된 content field를 sync
var editor_sequence = fo_obj.getAttribute('editor_sequence');
if(typeof(editor_sequence)!='undefined' && editor_sequence && typeof(editorRelKeys)!='undefined') {
editorRelKeys[editor_sequence]['content'].value = editorGetContent(editor_sequence);
var content = editorGetContent(editor_sequence);
var dummy = xCreateElement("div");
xInnerHtml(dummy, content);
// IE에서 컨텐츠 전체를 P태그로 감싸는 경우가 있어서 이 의미없는 P태그를 제거
if(dummy.firstChild && dummy.firstChild.nodeName == 'P' && dummy.firstChild == dummy.lastChild) {
var content = xInnerHtml(dummy.firstChild);
xInnerHtml(dummy,content);
}
// img/a 태그의 대상에 대해 경로 재설정 (IE브라우저에서 위지윅 에디터내의 경로를 절대 경로로 바꾸는 버그때문ㅇ)
var imgTags = xGetElementsByTagName('IMG', dummy);
for(var i=0;i<imgTags.length;i++) {
if(imgTags[i].src.indexOf(request_uri)!=-1) {
imgTags[i].src = imgTags[i].src.replace(/(.*)files\/(.*)/i,'files/$2');
}
}
var aTags = xGetElementsByTagName('A', dummy);
for(var i=0;i<aTags.length;i++) {
if(aTags[i].href.indexOf(request_uri)!=-1) {
aTags[i].href = aTags[i].href.replace(/(.*)\?module=file&(.*)/i,'./?module=file&$2');
}
}
var content = xInnerHtml(dummy);
editorRelKeys[editor_sequence]['content'].value = content;
}
filter_func(fo_obj);

View file

@ -236,6 +236,28 @@
$lang->is_active = 'Active';
$lang->is_required = 'Required Field';
// ftp 관련
$lang->ftp_form_title = 'FTP 정보 입력';
$lang->ftp = 'FTP';
$lang->ftp_port = 'FTP port';
$lang->cmd_check_ftp_connect = 'FTP 접속 확인';
$lang->about_ftp_info = "
FTP 정보는 다음의 경우에 이용될 있습니다.<br/>
1. PHP의 safe_mode=On일 경우에 FTP 정보를 이용해서 XE를 정상적으로 동작할 있게 합니다.<br/>
2. 자동 업데이트등에서 FTP 정보를 이용할 있습니다.<br/>
FTP정보는 files/config/ftp.config.php 파일내에 정보가 저장됩니다.<br/>
그리고 설치 관리자 페이지에서 FTP 정보를 변경하거나 제거할 있습니다.<br />
<strong>FTP 정보 노출을 원하지 않으시면 입력하지 않으셔도 됩니다</strong>
";
$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 접속 및 인증 성공하였습니다";
// Alert messages for Javascript using by XML filter
$lang->filter->isnull = 'Please input a value for %s';
$lang->filter->outofrange = 'Please align the text length of %s';

View file

@ -235,6 +235,28 @@
$lang->is_active = 'Activado';
$lang->is_required = 'Espacio requerido';
// ftp 관련
$lang->ftp_form_title = 'FTP 정보 입력';
$lang->ftp = 'FTP';
$lang->ftp_port = 'FTP port';
$lang->cmd_check_ftp_connect = 'FTP 접속 확인';
$lang->about_ftp_info = "
FTP 정보는 다음의 경우에 이용될 있습니다.<br/>
1. PHP의 safe_mode=On일 경우에 FTP 정보를 이용해서 XE를 정상적으로 동작할 있게 합니다.<br/>
2. 자동 업데이트등에서 FTP 정보를 이용할 있습니다.<br/>
FTP정보는 files/config/ftp.config.php 파일내에 정보가 저장됩니다.<br/>
그리고 설치 관리자 페이지에서 FTP 정보를 변경하거나 제거할 있습니다.<br />
<strong>FTP 정보 노출을 원하지 않으시면 입력하지 않으셔도 됩니다</strong>
";
$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 접속 및 인증 성공하였습니다";
// Mensajes de alerta para Javascript usando el filtro XML
$lang->filter->isnull = 'Ingresar un valor para %s';
$lang->filter->outofrange = 'Ajustar el largo del texto de %s';

View file

@ -2,13 +2,13 @@
/**
* @file common/lang/fr.lang.php
* @author zero (zero@nzeo.com) Traduit par Pierre Duvent(PierreDuvent@gamil.com)
* @brief Paquet de La Langue Francaise (Mots de base seulement)
* @brief Paquet du langage en français
**/
// verbes et mots de base decrivant des actions
// verbes et mots fondamentaux qui décrivent des actions
$lang->cmd_write = 'Ecrire';
$lang->cmd_reply = 'Répondre';
$lang->cmd_delete = 'Effacer';
$lang->cmd_delete = 'Supprimer';
$lang->cmd_modify = 'Modifier';
$lang->cmd_edit = 'Editer';
$lang->cmd_view = 'Voir';
@ -58,7 +58,7 @@
$lang->cmd_scrap = 'Coupure';
$lang->cmd_preview = 'Avant-première';
$lang->cmd_reset = 'Restaurer';
$lang->cmd_remake_cache = "Recréer la Cachette du Fichier";
$lang->cmd_remake_cache = "Recréer l'antémémoire du Fichier";
$lang->cmd_publish = "Publier";
$lang->cmd_layout_setup = 'Configurer la Mise en page';
$lang->cmd_layout_edit = 'Editer la Mise en page';
@ -81,7 +81,7 @@
$lang->password2 = 'Confirmer du Mot de Passe';
$lang->admin_id = 'Compte d\'Administrateur';
$lang->writer = 'Auteur';
$lang->user_name = 'Nom d\'utilisateur';
$lang->user_name = 'Nom';
$lang->nick_name = 'Surnom';
$lang->email_address = 'Mél';
$lang->homepage = 'Page d\'accueil';
@ -118,9 +118,9 @@
$lang->mid = 'Nom';
$lang->layout = 'Mise en Page';
$lang->widget = 'Widget';
$lang->widget = 'Gadget';
$lang->module = 'Module';
$lang->skin = 'Thème';
$lang->skin = 'Habillage';
$lang->colorset = 'Arrangement de couleur';
$lang->extra_vars = 'Variables Supplémentaires';
@ -131,29 +131,29 @@
$lang->document_count = ' Documents';
$lang->page_count = 'Pages';
$lang->list_count = 'Items';
$lang->list_count = 'Item';
$lang->search_list_count = 'Trouvés';
$lang->readed_count = ' Vues';
$lang->voted_count = 'Recommandés';
$lang->comment_count = 'Commentairesés';
$lang->comment_count = 'Commentaires';
$lang->member_count = 'Membres';
$lang->date = 'Jour';
$lang->regdate = 'Enrégistré';
$lang->last_update = 'Dernière Mise à Jour';
$lang->last_post = 'Dernière Affichage';
$lang->signup_date = 'Jour de s\'inscrire';
$lang->signup_date = 'Inscription';
$lang->last_login = 'Dernière connexion';
$lang->first_page = 'Première Page';
$lang->last_page = 'Dernière Page';
$lang->search_target = 'Cible à Rechercher';
$lang->search_keyword = 'Mot-clé à Recherche';
$lang->search_target = 'Champ à Rechercher';
$lang->search_keyword = 'Mot-clé à Rechercher';
$lang->is_default = 'Par Défaut';
$lang->no_documents = 'Aucun Document';
$lang->no_documents = 'Nul Document';
$lang->board_manager = 'Arrangements des Panneau';
$lang->member_manager = 'Arrangements des Membres';
$lang->layout_manager = 'Arrangements de Mise en Page';
$lang->board_manager = 'Administration des Panneaux';
$lang->member_manager = 'Administration des Membres';
$lang->layout_manager = 'Administration des Mises en Page';
$lang->use = 'Utiliser';
$lang->notuse = 'Pas Utilisé';
@ -171,23 +171,23 @@
$lang->unit_year = 'année';;
// Descriptions et information
$lang->about_tag = 'Vous pouvez enrégistrer plusieurs tags en utilisant ,(virgule) entre chaque tag';
$lang->about_tag = 'Vous pouvez enrégistrer plusieurs balises en utilisant ,(virgule) entre chaque balise';
$lang->about_layout = 'Le Mise en Page décore l\'apparence des modules. Vous pouvez les configurer avec le menu de Mise en Page en haut';
// Messages et alertes
$lang->msg_call_server = 'En demandant sur le serveur, attendez svp.';
$lang->msg_db_not_setted = 'La configuration de DB n\'est pas été établie.';
$lang->msg_invalid_queryid = 'La valeur spécifiée de query ID est invalide.';
$lang->msg_call_server = 'En demandant sur le serveur, attendez S.V.P.';
$lang->msg_db_not_setted = 'La configuration de Base de Données n\'a pas été établie.';
$lang->msg_invalid_queryid = 'La valeur spécifiée d\'identite de query est invalide.';
$lang->msg_not_permitted = 'Vous n\'avez pas le droit d\'accès.';
$lang->msg_input_password = 'Veuillez entrer votre mot de passe.';
$lang->msg_invalid_document = 'Nombre de Document invalide';
$lang->msg_invalid_document = 'Numéro de Document invalide';
$lang->msg_invalid_request = 'Requête invalide';
$lang->msg_invalid_password = 'Mot de passe invalide';
$lang->msg_error_occured = 'Une erreur a lieu';
$lang->msg_not_founded = 'La cible n\'est pas trouvée.';
$lang->msg_no_result = 'Aucun Résultat';
$lang->msg_not_founded = 'L\'objet n\'est pas trouvé.';
$lang->msg_no_result = 'Nul Résultat';
$lang->msg_not_permitted_act = 'Vous n\'êtes pas autorisés à exécuter l\'action que vous demandez.';
$lang->msg_not_permitted_act = 'Vous n\'êtes pas autorisés à exécuter l\'action que vous avez demandé.';
$lang->msg_module_is_not_exists = 'Le module demandé n\'a pas été trouvé.';
$lang->msg_module_is_not_standalone = 'Le module demandé ne peut pas être exécuté indépendamment.';
@ -196,7 +196,7 @@
$lang->success_updated = 'Mise à jour avec succès';
$lang->success_deleted = 'Supprimé avec succès';
$lang->success_voted = 'Voté avec succès';
$lang->success_blamed = 'Blamed success_blamed';
$lang->success_blamed = 'Blâmé avec succès';
$lang->success_moved = 'Bougé avec succès';
$lang->success_sended = 'Envoyé avec succès';
$lang->success_reset = 'Restauré avec succès';
@ -207,11 +207,11 @@
$lang->fail_to_move = 'N\'a pas pu être bougé';
$lang->failed_voted = 'N\'a pas pu recommander';
$lang->failed_blamed = 'Could not blame';
$lang->failed_blamed = 'N\'a pas pu blâmer';
$lang->failed_declared = 'N\'a pas pu accuser';
$lang->fail_to_delete_have_children = 'Essayez encore après avoir suprimé les reponses, SVP';
$lang->fail_to_delete_have_children = 'Essayez encore une fois après avoir suprimé les reponses, S.V.P.';
$lang->confirm_submit = 'Vous voulez sûrement valider?';
$lang->confirm_submit = 'Vous voulez sûrement soumettre?';
$lang->confirm_logout = 'Vous voulez sûrement fermer la session?';
$lang->confirm_vote = 'Vous voulez recommander?';
$lang->confirm_delete = 'Vous voulez sûrement supprimer?';
@ -219,7 +219,7 @@
$lang->confirm_reset = 'Vous voulez sûrement restaurer?';
$lang->confirm_leave = 'Vous voulez sûrement supprimer votre compte?';
$lang->column_type = 'Types des colonnes';
$lang->column_type = 'Types de la colonne';
$lang->column_type_list['text'] = 'Texte en une seul ligne';
$lang->column_type_list['homepage'] = 'URL';
$lang->column_type_list['email_address'] = 'Mél';
@ -234,18 +234,40 @@
$lang->column_title = 'Titre de la colonne';
$lang->default_value = 'Valeur par défaut';
$lang->is_active = 'Actif';
$lang->is_required = 'Champ obligatoire';
$lang->is_required = 'Item essentielle';
// ftp 관련
$lang->ftp_form_title = 'FTP 정보 입력';
$lang->ftp = 'FTP';
$lang->ftp_port = 'FTP port';
$lang->cmd_check_ftp_connect = 'FTP 접속 확인';
$lang->about_ftp_info = "
FTP 정보는 다음의 경우에 이용될 있습니다.<br/>
1. PHP의 safe_mode=On일 경우에 FTP 정보를 이용해서 XE를 정상적으로 동작할 있게 합니다.<br/>
2. 자동 업데이트등에서 FTP 정보를 이용할 있습니다.<br/>
FTP정보는 files/config/ftp.config.php 파일내에 정보가 저장됩니다.<br/>
그리고 설치 관리자 페이지에서 FTP 정보를 변경하거나 제거할 있습니다.<br />
<strong>FTP 정보 노출을 원하지 않으시면 입력하지 않으셔도 됩니다</strong>
";
$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 접속 및 인증 성공하였습니다";
// Messages d\'alerte de le Javascript qui est utilisé dans les filtres en XML
$lang->filter->isnull = 'Entrez une valeur pour %s';
$lang->filter->outofrange = 'Aligner la longueur du texte de %s';
$lang->filter->equalto = "La valeur de %s est invalide.";
$lang->filter->invalid_email = "Le format de %s est invalide. ex) zbxe@zeroboard.com";
$lang->filter->invalid_user_id = $lang->filter->invalid_userid = "La format de %s n\'est pas convenable.\\nToutes les lettres devraient se composer des alphabets, des nombres ou du soulignage(_) Et la première lettre doit être un des alphabet.";
$lang->filter->invalid_user_id = $lang->filter->invalid_userid = "La format de %s n\'est pas convenable.\\nToutes les lettres devraient se composer des alphabets, des chiffres ou du soulignage(_) Et la première lettre doit être un de l'alphabet.";
$lang->filter->invalid_homepage = "La format de %s n\'est pas convenable. ex) http://www.zeroboard.com";
$lang->filter->invalid_korean = "La format de %s n\'est pas convenable. Entrez seulement en coréen, SVP";
$lang->filter->invalid_korean_number = "La format de %s n\'est pas convenable. Entrez seulement en alphabet coréen ou en nombres, SVP.";
$lang->filter->invalid_alpha = "La format de %s n\'est pas convenable. Entrez seulement en alphabet, SVP.";
$lang->filter->invalid_alpha_number = "La format de %s n\'est pas convenable. Entrez seulement en alphabet ou en nombres.";
$lang->filter->invalid_number = "La format de %s n\'est pas convenable. Entrez seulement en numéros.";
$lang->filter->invalid_korean = "La format de %s n\'est pas convenable. Entrez seulement en coréen, S.V.P.";
$lang->filter->invalid_korean_number = "La format de %s n\'est pas convenable. Entrez seulement des lettres d'alphabet coréen ou des chiffres, S.V.P.";
$lang->filter->invalid_alpha = "La format de %s n\'est pas convenable. Entrez seulement en alphabet, S.V.P.";
$lang->filter->invalid_alpha_number = "La format de %s n\'est pas convenable. Entrez seulement des lettres d'alphabet ou des chiffres.";
$lang->filter->invalid_number = "La format de %s n\'est pas convenable. Entrez seulement des chiffres.";
?>

View file

@ -236,6 +236,28 @@
$lang->is_active = 'Aktiv';
$lang->is_required = 'Pflichtfeld';
// ftp 관련
$lang->ftp_form_title = 'FTP 정보 입력';
$lang->ftp = 'FTP';
$lang->ftp_port = 'FTP port';
$lang->cmd_check_ftp_connect = 'FTP 접속 확인';
$lang->about_ftp_info = "
FTP 정보는 다음의 경우에 이용될 있습니다.<br/>
1. PHP의 safe_mode=On일 경우에 FTP 정보를 이용해서 XE를 정상적으로 동작할 있게 합니다.<br/>
2. 자동 업데이트등에서 FTP 정보를 이용할 있습니다.<br/>
FTP정보는 files/config/ftp.config.php 파일내에 정보가 저장됩니다.<br/>
그리고 설치 관리자 페이지에서 FTP 정보를 변경하거나 제거할 있습니다.<br />
<strong>FTP 정보 노출을 원하지 않으시면 입력하지 않으셔도 됩니다</strong>
";
$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 접속 및 인증 성공하였습니다";
// Alert Nachrichten für JavaScript unter Verwendung von XML-Filter
$lang->filter->isnull = 'Bitte geben Sie einen Wert für% s';
$lang->filter->outofrange = 'Bitte richten Sie die Textlänge von% s';

View file

@ -236,6 +236,28 @@
$lang->is_active = '活性化';
$lang->is_required = '必須項目';
// ftp 관련
$lang->ftp_form_title = 'FTP 정보 입력';
$lang->ftp = 'FTP';
$lang->ftp_port = 'FTP port';
$lang->cmd_check_ftp_connect = 'FTP 접속 확인';
$lang->about_ftp_info = "
FTP 정보는 다음의 경우에 이용될 있습니다.<br/>
1. PHP의 safe_mode=On일 경우에 FTP 정보를 이용해서 XE를 정상적으로 동작할 있게 합니다.<br/>
2. 자동 업데이트등에서 FTP 정보를 이용할 있습니다.<br/>
FTP정보는 files/config/ftp.config.php 파일내에 정보가 저장됩니다.<br/>
그리고 설치 관리자 페이지에서 FTP 정보를 변경하거나 제거할 있습니다.<br />
<strong>FTP 정보 노출을 원하지 않으시면 입력하지 않으셔도 됩니다</strong>
";
$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用のアラートメッセージ
$lang->filter->isnull = '%sを入力してください';
$lang->filter->outofrange = '%sの文字の長さを合わせてください';

View file

@ -236,6 +236,27 @@
$lang->is_active = '활성';
$lang->is_required = '필수항목';
// ftp 관련
$lang->ftp_form_title = 'FTP 정보 입력';
$lang->ftp = 'FTP';
$lang->ftp_port = 'FTP port';
$lang->cmd_check_ftp_connect = 'FTP 접속 확인';
$lang->about_ftp_info = "
FTP 정보는 다음의 경우에 이용될 있습니다.<br/>
1. PHP의 safe_mode=On일 경우에 FTP 정보를 이용해서 XE를 정상적으로 동작할 있게 합니다.<br/>
2. 자동 업데이트등에서 FTP 정보를 이용할 있습니다.<br/>
FTP정보는 files/config/ftp.config.php 파일내에 정보가 저장됩니다.<br/>
그리고 설치 관리자 페이지에서 FTP 정보를 변경하거나 제거할 있습니다.<br />
<strong>FTP 정보 노출을 원하지 않으시면 입력하지 않으셔도 됩니다</strong>
";
$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의 값을 입력해주세요';
$lang->filter->outofrange = '%s의 글자 길이를 맞추어 주세요.';

View file

@ -233,6 +233,28 @@
$lang->column_name = 'Имя колонки';
$lang->column_title = 'Название колонки';
$lang->default_value = 'Стандартное значение';
// ftp 관련
$lang->ftp_form_title = 'FTP 정보 입력';
$lang->ftp = 'FTP';
$lang->ftp_port = 'FTP port';
$lang->cmd_check_ftp_connect = 'FTP 접속 확인';
$lang->about_ftp_info = "
FTP 정보는 다음의 경우에 이용될 있습니다.<br/>
1. PHP의 safe_mode=On일 경우에 FTP 정보를 이용해서 XE를 정상적으로 동작할 있게 합니다.<br/>
2. 자동 업데이트등에서 FTP 정보를 이용할 있습니다.<br/>
FTP정보는 files/config/ftp.config.php 파일내에 정보가 저장됩니다.<br/>
그리고 설치 관리자 페이지에서 FTP 정보를 변경하거나 제거할 있습니다.<br />
<strong>FTP 정보 노출을 원하지 않으시면 입력하지 않으셔도 됩니다</strong>
";
$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->is_active = 'Активно';
$lang->is_required = 'Требуемое поле';

View file

@ -236,6 +236,28 @@
$lang->is_active = '激活';
$lang->is_required = '必填';
// ftp 관련
$lang->ftp_form_title = 'FTP 정보 입력';
$lang->ftp = 'FTP';
$lang->ftp_port = 'FTP port';
$lang->cmd_check_ftp_connect = 'FTP 접속 확인';
$lang->about_ftp_info = "
FTP 정보는 다음의 경우에 이용될 있습니다.<br/>
1. PHP의 safe_mode=On일 경우에 FTP 정보를 이용해서 XE를 정상적으로 동작할 있게 합니다.<br/>
2. 자동 업데이트등에서 FTP 정보를 이용할 있습니다.<br/>
FTP정보는 files/config/ftp.config.php 파일내에 정보가 저장됩니다.<br/>
그리고 설치 관리자 페이지에서 FTP 정보를 변경하거나 제거할 있습니다.<br />
<strong>FTP 정보 노출을 원하지 않으시면 입력하지 않으셔도 됩니다</strong>
";
$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';
$lang->filter->outofrange = '请确认%s字数';

View file

@ -13,7 +13,9 @@
<meta name="layout" content="{$layout_info->title} ({$layout_info->layout})" />
<!--@end-->
<!--@if($layout_info->author)-->
<meta name="layout_maker" content="{$layout_info->author->name} ({$layout_info->author->homepage})" />
<!--@foreach($layout_info->author as $author)-->
<meta name="layout_maker" content="{$author->name} ({$author->homepage})" />
<!--@endforeach-->
<!--@end-->
<meta http-equiv="imagetoolbar" content="no" />
<title>{Context::getBrowserTitle()}</title>

View file

@ -14,7 +14,7 @@
* 내용은 제로보드XE의 버전을 관리자 페이지에 표시하기 위한 용도이며
* config.inc.php의 수정이 없더라도 공식 릴리즈시에 수정되어 함께 배포되어야
**/
define('__ZBXE_VERSION__', '1.0.5');
define('__ZBXE_VERSION__', '1.0.6');
/**
* @brief 디버깅 메세지 출력

View file

@ -18,6 +18,19 @@
');
}
/**
* @brief iconv 함수가 없을 경우 함수를 만들어서 오류가 생기지 않도록 정의
**/
if(!function_exists('iconv')) {
eval('
function iconv($in_charset, $out_charset, $str) {
return $str;
}
');
}
// time zone
$time_zone = array(
'-1200' => '[GMT -12:00] Baker Island Time',
'-1100' => '[GMT -11:00] Niue Time, Samoa Standard Time',
@ -194,21 +207,34 @@
* @param cut_size 주어진 문자열을 자를 크기
* @param tail 잘라졌을 경우 문자열의 제일 뒤에 붙을 꼬리
* @return string
*
* 손쉽고 확실한 변환을 위해 2byte unicode로 변형한후 처리를 한다
**/
function cut_str($string, $cut_size, $tail='...') {
if(!$string || !$cut_size) return $string;
function cut_str($string,$cut_size=0,$tail = '...') {
if($cut_size<1 || !$string) return $string;
if(function_exists('iconv')) {
$unicode_str = iconv("UTF-8","UCS-2",$string);
if(strlen($unicode_str) < $cut_size*2) return $string;
$output_str = substr($unicode_str, 0, $cut_size*2);
return iconv("UCS-2","UTF-8",$output_str).$tail;
$char_width = Array(5,10,11,16,14,16,16,10,11,11,12,13,10,13,10,12,13,13,13,13,13,13,13,13,13,13,10,10,14,13,14,13,16,15,15,16,15,15,14,16,15,8,13,15,14,16,16,16,15,16,15,15,14,16,15,16,16,15,15,13,16,13,13,11,10,14,14,14,14,14,10,14,14,8,9,13,8,16,14,15,14,14,10,14,10,14,13,16,14,13,14,14,14,14,16);
$unicode_width = 21;
$max_width = $cut_size*$unicode_width/2;
$char_width = 0;
$string_length = strlen($string);
$char_count = 0;
$idx = 0;
while($idx < $string_length && $char_count < $cut_size && $char_width < $max_width) {
$c = ord(substr($string, $idx,1));
$char_count++;
if($c<128) {
$char_width += (int)$char_width[$c-32];
$idx++;
} else {
$char_width += $unicode_width;
$idx += 3;
}
}
$arr = array();
return preg_match('/.{'.$cut_size.'}/su', $string, $arr) ? $arr[0].$tail : $string;
$output = substr($string,0,$idx);
if(strlen($output)<$string_length) $output .= $tail;
return $output;
}
function zgap() {
@ -314,7 +340,9 @@
**/
function debugPrint($buff = null, $display_line = true) {
$debug_file = _XE_PATH_."files/_debug_message.php";
$buff = sprintf("%s\n",print_r($buff,true));
$bt = debug_backtrace();
if(is_array($bt)) $first = array_shift($bt);
$buff = sprintf("[%s %s:%d]\n%s\n", date("Y-m-d H:i:s"), array_pop(explode(DIRECTORY_SEPARATOR, $first["file"])), $first["line"], print_r($buff,true));
if($display_line) $buff = "\n====================================\n".$buff."------------------------------------\n";
@ -427,12 +455,12 @@
function removeJSEvent($matches) {
$tag = strtolower($matches[1]);
if($tag == "a" && preg_match('/href=("|\'?)javascript:/i',$matches[2])) $matches[0] = preg_replace('/href=("|\'?)javascript:/i','href=$1_javascript:', $matches[0]);
if(preg_match('/(src|href)=("|\'?)javascript:/i',$matches[2])) $matches[0] = preg_replace('/(src|href)=("|\'?)javascript:/i','$1=$2_javascript:', $matches[0]);
return preg_replace('/ on([a-z]+)=/i',' _on$1=',$matches[0]);
}
function removeSrcHack($matches) {
$tag = $matches[1];
$tag = strtolower(trim($matches[1]));
$buff = trim(preg_replace('/(\/>|>)/','/>',$matches[0]));
$buff = preg_replace_callback('/([^=^"^ ]*)=([^ ^>]*)/i', fixQuotation, $buff);
@ -442,6 +470,15 @@
// src값에 module=admin이라는 값이 입력되어 있으면 이 값을 무효화 시킴
$src = $xml_doc->{$tag}->attrs->src;
$dynsrc = $xml_doc->{$tag}->attrs->dynsrc;
if(_isHackedSrc($src) || _isHackedSrc($dynsrc) ) return sprintf("<%s>",$tag);
return $matches[0];
}
function _isHackedSrc($src) {
if(!$src) return false;
if($src && preg_match('/javascript:/i',$src)) return true;
if($src) {
$url_info = parse_url($src);
$query = $url_info['query'];
@ -452,12 +489,10 @@
if($pos === false) continue;
$key = strtolower(trim(substr($queries[$i], 0, $pos)));
$val = strtolower(trim(substr($queries[$i] ,$pos+1)));
if(($key == 'module' && $val == 'admin') || $key == 'act' && preg_match('/admin/i',$val)) return sprintf("<%s>",$tag);
if(($key == 'module' && $val == 'admin') || $key == 'act' && preg_match('/admin/i',$val)) return true;
}
}
return $matches[0];
return false;
}
/**

View file

@ -63,4 +63,5 @@
$oModuleHandler->init();
$oModule = &$oModuleHandler->procModule();
$oModuleHandler->displayContent($oModule);
?>

View file

@ -71,7 +71,7 @@
<description xml:lang="ge">Bitte wählen Sie ein colorset Sie wollen.</description>
<description xml:lang="ru">Выберите colorset хотите.</description>
<description xml:lang="es">Seleccione set de colores que desea.</description>
<options name="blue">
<options value="blue">
<title xml:lang="ko">파란색 (기본)</title>
<title xml:lang="jp">青 (default)</title>
<title xml:lang="zh-CN">蓝色 (default)</title>
@ -79,9 +79,8 @@
<title xml:lang="ge">Blue (Standard)</title>
<title xml:lang="es">Azul (default)</title>
<title xml:lang="ru">Blue (default)</title>
<value>blue</value>
</options>
<options name="gray">
<options value="gray">
<title xml:lang="ko">회색</title>
<title xml:lang="jp">灰色背景</title>
<title xml:lang="zh-CN">灰色背景</title>
@ -89,9 +88,8 @@
<title xml:lang="ge">Gray</title>
<title xml:lang="es">Gray</title>
<title xml:lang="ru">Gray</title>
<value>gray</value>
</options>
<options name="orange">
<options value="orange">
<title xml:lang="ko">오렌지</title>
<title xml:lang="jp">Orange</title>
<title xml:lang="zh-CN">Orange</title>
@ -99,9 +97,8 @@
<title xml:lang="ge">Orange</title>
<title xml:lang="es">Orange</title>
<title xml:lang="ru">Orange</title>
<value>orange</value>
</options>
<options name="violet">
<options value="violet">
<title xml:lang="ko">보라색</title>
<title xml:lang="jp">Violet</title>
<title xml:lang="zh-CN">Violet</title>
@ -109,9 +106,8 @@
<title xml:lang="ge">Violett</title>
<title xml:lang="es">Violet</title>
<title xml:lang="ru">Violet</title>
<value>violet</value>
</options>
<options name="green">
<options value="green">
<title xml:lang="ko">초록색</title>
<title xml:lang="jp"></title>
<title xml:lang="zh-CN">绿色</title>
@ -119,7 +115,6 @@
<title xml:lang="ge">Grün</title>
<title xml:lang="es">Verde</title>
<title xml:lang="ru">Green</title>
<value>green</value>
</options>
</var>
<var name="target_mid" type="text">
@ -188,7 +183,7 @@
</extra_vars>
<menus>
<menu name="top_menu" default="true">
<menu name="top_menu" maxdepth="1" default="true">
<title xml:lang="ko">상단 메뉴</title>
<title xml:lang="jp">上段メニュー</title>
<title xml:lang="zh-CN">菜单</title>
@ -196,7 +191,6 @@
<title xml:lang="ge">Top-Menü</title>
<title xml:lang="es">Menú superior</title>
<title xml:lang="ru">Главное меню</title>
<maxdepth>1</maxdepth>
</menu>
</menus>
</layout>

View file

@ -1,10 +1,10 @@
<!-- 레이아웃과 연동될 css 파일 import -->
<!--// 레이아웃과 연동될 css 파일 import -->
<!-- 컬러셋 체크 -->
<!--@if(!$layout_info->colorset)-->
{@$layout_info->colorset = "blue"}
<!--@end-->
<!-- CSS 파일 로드 (컬러셋에 따라서) -->
<!--// CSS 파일 로드 (컬러셋에 따라서) -->
<!--%import("css/layout.css")-->
<!--@if($layout_info->colorset == "gray")--> <!--%import("css/layout_gray.css")-->
<!--@elseif($layout_info->colorset == "orange")--> <!--%import("css/layout_orange.css")-->
@ -14,24 +14,24 @@
<!--@end-->
<!--@if($layout_info->background_image)-->
<style type="text/css">
body { background-repeat:repeat-x; background-image:url({getUrl()}{$layout_info->background_image}); }
</style>
<style type="text/css">
body { background-repeat:repeat-x; background-image:url({getUrl()}{$layout_info->background_image}); }
</style>
<!--@end-->
<div id="blog">
<div class="blogNavigation">
<ul class="blogGlobal">
<div class="blogNavigation">
<ul class="blogGlobal">
<!--@if(!$is_logged)-->
<li><a href="{getUrl('mid',$layout_info->target_mid,'act','dispMemberSignUpForm')}">{$lang->cmd_signup}</a></li>
<li><a href="{getUrl('act','dispMemberLoginForm')}">{$lang->cmd_login}</a></li>
<li><a href="{getUrl('mid',$layout_info->target_mid,'act','dispMemberSignUpForm')}">{$lang->cmd_signup}</a></li>
<li><a href="{getUrl('act','dispMemberLoginForm')}">{$lang->cmd_login}</a></li>
<!--@else-->
<!--@if($grant->is_admin)-->
<li><a href="{getUrl('mid', $layout_info->target_mid, 'act','dispBoardWrite','document_srl','')}">{$lang->cmd_write}</a></li>
<!--@end-->
<!-- 최고관리자이면 관리자 페이지 버튼 출력 -->
<!--// 최고관리자이면 관리자 페이지 버튼 출력 -->
<!--@if($logged_info->is_admin == 'Y')-->
<li><a href="{getUrl('','module','admin')}" onclick="window.open(this.href); return false;">{$lang->cmd_management}</a></li>
<!--@end-->
@ -42,7 +42,7 @@
<!--@end-->
<li><a href="{geturl('act','dispMemberInfo')}">{$lang->cmd_view_member_info}</a></li>
<li><a href="{getUrl('act','dispMemberLogout')}">{$lang->cmd_logout}</a></li>
<!--@end-->
<!--@endif-->
<li class="skin_info"><a href="{getUrl('','module','layout','act','dispLayoutInfo','selected_layout','xe_blog')}" onclick="popopen(this.href,'layoutSkinInfo'); return false;"><img src="./images/buttonHelp.gif" alt="Skin Info" width="13" height="13"/></a></li>
@ -51,82 +51,88 @@
<!--@if($rss_url)-->
<li><a href="{$rss_url}"><img src="./images/{$layout_info->colorset}/btn_rss.gif" alt="rss" width="36" height="12" /></a></li>
<!--@end-->
<!--@end-->
</ul>
<!--@endif-->
</ul>
<div class="clear"></div>
<ul class="blogMenu">
<ul class="blogMenu">
<!--@foreach($top_menu->list as $key => $val)--><!--@if($val['link'])-->
<li><a href="{$val['href']}"<!--@if($val['selected'])--> class="on"<!--@end--><!--@if($val['open_window']=='Y')--> onclick="window.open(this.href);return false;"<!--@end-->>{$val['link']}</a></li>
<!--@end--><!--@end-->
</ul>
</div>
<li><a href="{$val['href']}"<!--@if($val['selected'])--> class="on"<!--@endif--><!--@if($val['open_window']=='Y')--> onclick="window.open(this.href);return false;"<!--@endif-->>{$val['link']}</a></li>
<!--@endif--><!--@endforeach-->
</ul>
</div>
<!-- 내용 -->
<div class="contentBox"><div class="topBg"></div>
<div class="centerBg"><div class="contentArea">{$content}<div class="clear"></div></div></div>
<div class="bottomBg"></div></div>
<div class="contentBox">
<div class="topBg"></div>
<div class="centerBg">
<div class="contentArea">
{$content}
<div class="clear"></div>
</div>
</div>
<div class="bottomBg"></div>
</div>
<!-- 위젯들 -->
<div class="blogWidgetAreaBox">
<!-- 프로필 -->
<div class="blogProfile">
<!--@if($layout_info->profile_image)-->
<img src="{$layout_info->profile_image}" border="0" alt="my profile image" class="iePngFix" width="170" />
<!--@else-->
<img src="./images/{$layout_info->colorset}/@blog_image.gif" alt="profile" class="iePngFix" width="170" />
<!--@end-->
<!--@if($layout_info->profile)-->
<h1>{$layout_info->profile}</h1>
<!--@end-->
<!-- 프로필 -->
<div class="blogProfile">
<!--@if($layout_info->profile_image)-->
<img src="{$layout_info->profile_image}" border="0" alt="my profile image" class="iePngFix" width="170" />
<!--@else-->
<img src="./images/{$layout_info->colorset}/@blog_image.gif" alt="profile" class="iePngFix" width="170" />
<!--@end-->
<!--@if($layout_info->profile)-->
<h1>{$layout_info->profile}</h1>
<!--@end-->
<!-- 검색 폼 출력 -->
<div class="blogSearch">
<form action="{Context::getRequestUri()}" method="post">
<fieldset>
<legend>{$lang->cmd_search}</legend>
<input type="hidden" name="mid" value="{$layout_info->target_mid}" />
<input type="hidden" name="search_target" value="title_content" />
<input name="search_keyword" type="text" class="inputTypeText w110" value="<!--@if($search_keyword)-->{htmlspecialchars($search_keyword)}<!--@end-->" />
<a href="#"><img src="./images/{$layout_info->colorset}/btn_search.gif" alt="{$lang->cmd_search}" width="45" height="20" /></a>
</fieldset>
</form>
</div>
</div>
<!-- 검색 폼 출력 -->
<div class="blogSearch">
<form action="{Context::getRequestUri()}" method="post">
<fieldset>
<legend>{$lang->cmd_search}</legend>
<!-- 카테고리 -->
<div class="blogTitleBox">
<h2>category</h2>
</div>
<div class="widgetBox ">
<img class="zbxe_widget_output" widget="category" body="" skin="default" colorset="normal" mid_list="{$layout_info->target_mid}" />
</div>
<input type="hidden" name="mid" value="{$layout_info->target_mid}" />
<input type="hidden" name="search_target" value="title_content" />
<input name="search_keyword" type="text" class="inputTypeText w110" value="<!--@if($search_keyword)-->{htmlspecialchars($search_keyword)}<!--@end-->" />
<a href="#"><img src="./images/{$layout_info->colorset}/btn_search.gif" alt="{$lang->cmd_search}" width="45" height="20" /></a>
</fieldset>
</form>
</div>
</div>
<!-- 달력 출력 -->
<div class="widgetBox ">
<img src="./images/common/blank.gif" class="zbxe_widget_output" widget="calendar" skin="blog_calendar_list" colorset="layout" mid_list="{$layout_info->target_mid}" />
</div>
<!-- 카테고리 -->
<div class="blogTitleBox">
<h2>category</h2>
</div>
<div class="widgetBox ">
<img class="zbxe_widget_output" widget="category" body="" skin="default" colorset="normal" mid_list="{$layout_info->target_mid}" />
</div>
<!-- 최근 글 출력 -->
<div class="widgetBox">
<img src="./images/common/blank.gif" class="zbxe_widget_output" widget="newest_document" skin="blog_newest_document" colorset="layout" title="recent posts" order_target="list_order" order_type="desc" subject_cut_size="26" list_count="5" mid_list="{$layout_info->target_mid}" />
</div>
<!-- 달력 출력 -->
<div class="widgetBox ">
<img src="./images/common/blank.gif" class="zbxe_widget_output" widget="calendar" skin="blog_calendar_list" colorset="layout" mid_list="{$layout_info->target_mid}" />
</div>
<!-- 최근댓글 출력 -->
<div class="widgetBox">
<img src="./images/common/blank.gif" class="zbxe_widget_output" widget="newest_comment" skin="blog_newest_comment" colorset="layout" title="recent comments" subject_cut_size="26" list_count="5" mid_list="{$layout_info->target_mid}" />
</div>
<!-- 최근 글 출력 -->
<div class="widgetBox">
<img src="./images/common/blank.gif" class="zbxe_widget_output" widget="newest_document" skin="blog_newest_document" colorset="layout" title="recent posts" order_target="list_order" order_type="desc" subject_cut_size="26" list_count="5" mid_list="{$layout_info->target_mid}" />
</div>
<!-- 엮인글 출력 -->
<div class="widgetBox">
<img src="./images/common/blank.gif" class="zbxe_widget_output" widget="newest_trackback" skin="blog_newest_trackback" colorset="layout" title="recent trackbacks" subject_cut_size="26" list_count="5" mid_list="{$layout_info->target_mid}" />
</div>
<!-- 최근댓글 출력 -->
<div class="widgetBox">
<img src="./images/common/blank.gif" class="zbxe_widget_output" widget="newest_comment" skin="blog_newest_comment" colorset="layout" title="recent comments" subject_cut_size="26" list_count="5" mid_list="{$layout_info->target_mid}" />
</div>
</div>
<!-- 엮인글 출력 -->
<div class="widgetBox">
<img src="./images/common/blank.gif" class="zbxe_widget_output" widget="newest_trackback" skin="blog_newest_trackback" colorset="layout" title="recent trackbacks" subject_cut_size="26" list_count="5" mid_list="{$layout_info->target_mid}" />
</div>
</div>
</div>
<div class="clear"></div>
<div class="zbXE"><a href="http://www.zeroboard.com" onclick="window.open(this.href); return false;"><img src="./images/powerdByZeroboard.gif" alt="powered by zbXE" /></a></div>

View file

@ -78,7 +78,7 @@
<description xml:lang="ge">Bitte wählen Sie ein colorset Sie wollen.</description>
<description xml:lang="ru">Выберите colorset хотите.</description>
<description xml:lang="es">Seleccione set de colores que desea.</description>
<options name="default">
<options value="default">
<title xml:lang="ko">기본</title>
<title xml:lang="jp">デフォルト</title>
<title xml:lang="en">Basic</title>
@ -86,9 +86,8 @@
<title xml:lang="ru">Базовые</title>
<title xml:lang="es">Básico</title>
<title xml:lang="zh-CN">默认</title>
<value>default</value>
</options>
<options name="black">
<options value="black">
<title xml:lang="ko">검은색</title>
<title xml:lang="jp"></title>
<title xml:lang="en">Black</title>
@ -96,9 +95,8 @@
<title xml:lang="ru">Черного</title>
<title xml:lang="es">Negro</title>
<title xml:lang="zh-CN">黑色</title>
<value>black</value>
</options>
<options name="white">
<options value="white">
<title xml:lang="ko">하얀색</title>
<title xml:lang="jp"></title>
<title xml:lang="en">white</title>
@ -106,7 +104,6 @@
<title xml:lang="ru">белый</title>
<title xml:lang="es">Blanco</title>
<title xml:lang="zh-CN">白色</title>
<value>white</value>
</options>
</var>
<var name="logo_image" type="image">
@ -160,7 +157,7 @@
</extra_vars>
<menus>
<menu name="main_menu" default="true">
<menu name="main_menu" maxdepth="3" default="true">
<title xml:lang="ko">상단 메뉴</title>
<title xml:lang="jp">上段メニュー</title>
<title xml:lang="zh-CN">主菜单</title>
@ -168,9 +165,8 @@
<title xml:lang="ge">Top Menü</title>
<title xml:lang="ru">Верхнее меню</title>
<title xml:lang="es">Menú Principal</title>
<maxdepth>3</maxdepth>
</menu>
<menu name="bottom_menu">
<menu name="bottom_menu" maxdepth="1">
<title xml:lang="ko">하단 메뉴 </title>
<title xml:lang="jp">下段メニュー</title>
<title xml:lang="zh-CN">底部菜单</title>
@ -178,7 +174,6 @@
<title xml:lang="ge">Bottom-Menü</title>
<title xml:lang="ru">Внизу меню</title>
<title xml:lang="es">Menú Inferior </title>
<maxdepth>1</maxdepth>
</menu>
</menus>
</layout>

View file

@ -1,7 +1,7 @@
<!-- js 파일 import -->
<!--// js 파일 import -->
<!--%import("js/xe_official.js")-->
<!-- 레이아웃과 연동될 css 파일 import -->
<!--// 레이아웃과 연동될 css 파일 import -->
<!--@if($layout_info->colorset == "white")-->
<!--%import("css/white.css")-->
<!--@elseif($layout_info->colorset == "black")-->
@ -17,24 +17,24 @@
<!--@end-->
<!--@if(!$layout_info->colorset)-->
{@$layout_info->colorset = "default"}
{@$layout_info->colorset = "default"}
<!--@end-->
<div id="bodyWrap">
<div id="header">
<h1><a href="{$layout_info->index_url}"><!--@if(!$layout_info->logo_image)--><img src="./images/{$layout_info->colorset}/zeroBoardXE.png" alt="ZeroBoard™ XE" class="iePngFix" /><!--@else--><img src="{$layout_info->logo_image}" alt="logo" border="0" class="iePngFix" /><!--@end--></a></h1>
<div id="header">
<h1><a href="{$layout_info->index_url}"><!--@if(!$layout_info->logo_image)--><img src="./images/{$layout_info->colorset}/zeroBoardXE.png" alt="ZeroBoard™ XE" class="iePngFix" /><!--@else--><img src="{$layout_info->logo_image}" alt="logo" border="0" class="iePngFix" /><!--@end--></a></h1>
<div id="language">
<strong title="{$lang_type}">{$lang_supported[$lang_type]}</strong> <a href="#selectLang" onclick="showHide('selectLang');return false;"><img src="./images/{$layout_info->colorset}/buttonLang.gif" alt="Select Language" width="87" height="15" /></a>
<ul id="selectLang">
<div id="language">
<strong title="{$lang_type}">{$lang_supported[$lang_type]}</strong> <a href="#selectLang" onclick="showHide('selectLang');return false;"><img src="./images/{$layout_info->colorset}/buttonLang.gif" alt="Select Language" width="87" height="15" /></a>
<ul id="selectLang">
<!--@foreach($lang_supported as $key => $val)--><!--@if($key!= $lang_type)-->
<li><a href="#" onclick="doChangeLangType('{$key}');return false;">{$val}</a></li>
<li><a href="#" onclick="doChangeLangType('{$key}');return false;">{$val}</a></li>
<!--@end--><!--@end-->
</ul>
</div>
</ul>
</div>
<!--GNB-->
<ul id="gnb">
<!-- GNB -->
<ul id="gnb">
<!-- main_menu 1차 시작 -->
<!--@foreach($main_menu->list as $key => $val)--><!--@if($val['link'])-->
<!--@if($val['selected'])-->
@ -43,67 +43,65 @@
<li <!--@if($val['selected'])-->class="on"<!--@end-->><a href="{$val['href']}" <!--@if($val['open_window']=='Y')-->onclick="window.open(this.href);return false;"<!--@end-->>{$val['link']}</a></li>
<!--@end--><!--@end-->
<!-- main_menu 1차 끝 -->
</ul>
<!--//GNB-->
<!--@endif--><!--@endforeach-->
</ul>
<form action="{getUrl()}" method="post" id="isSearch">
<form action="{getUrl()}" method="post" id="isSearch">
<input type="hidden" name="mid" value="{$mid}" />
<input type="hidden" name="act" value="IS" />
<input type="hidden" name="search_target" value="title_content" />
<input name="is_keyword" type="text" class="inputText" title="keyword" />
<input name="is_keyword" type="text" class="inputText" title="keyword" />
<input type="image" src="./images/{$layout_info->colorset}/buttonSearch.gif" alt="{$lang->cmd_search}" class="submit" />
</form>
<input type="image" src="./images/{$layout_info->colorset}/buttonSearch.gif" alt="{$lang->cmd_search}" class="submit" />
</form>
</div>
<div id="contentBody">
<div id="columnLeft">
</div>
<div id="contentBody">
<div id="columnLeft">
<!-- 로그인 위젯 -->
<img src="./images/blank.gif" class="zbxe_widget_output" widget="login_info" skin="xe_official" colorset="{$layout_info->colorset}" />
<!-- 왼쪽 2차 메뉴 -->
<img src="./images/blank.gif" alt="" class="mask" />
<img src="./images/blank.gif" alt="" class="mask" />
<!--@if($menu_1st)-->
<ol id="lnb">
<ol id="lnb">
{@ $idx = 1 }
<!--@foreach($menu_1st['list'] as $key => $val)--><!--@if($val['link'])-->
<li <!--@if($val['selected'])-->class="on"<!--@end-->><a href="{$val['href']}" <!--@if($val['open_window']=='Y')-->onclick="window.open(this.href);return false;"<!--@end-->>{$val['link']}</a>
<li <!--@if($val['selected'])-->class="on"<!--@end-->><a href="{$val['href']}" <!--@if($val['open_window']=='Y')-->onclick="window.open(this.href);return false;"<!--@end-->>{$val['link']}</a>
<!-- main_menu 3차 시작 -->
<!--@if($val['list'] && ($val['expand']=='Y'||$val['selected']) )-->
<ul>
<ul>
<!--@foreach($val['list'] as $k => $v)--><!--@if($v['link'])-->
<li <!--@if($v['selected'])-->class="on"<!--@end-->><a href="{$v['href']}" <!--@if($v['open_window']=='Y')-->onclick="window.open(this.href);return false;"<!--@end-->>{$v['link']}</a></li>
<!--@end--><!--@end-->
</ul>
<!--@end-->
</li>
<li <!--@if($v['selected'])-->class="on"<!--@end-->><a href="{$v['href']}" <!--@if($v['open_window']=='Y')-->onclick="window.open(this.href);return false;"<!--@end-->>{$v['link']}</a></li>
<!--@endif--><!--@endforeach-->
</ul>
<!--@endif-->
</li>
{@$idx++}
<!--@end--><!--@end-->
</ol>
<!--@end-->
<!--@endif--><!--@endforeach-->
</ol>
<!--@endif-->
</div>
<div id="columnRight">
</div>
<div id="columnRight">
<!-- 컨텐츠 시작 -->
{$content}
</div>
</div>
<ul id="footer">
<li class="first-child">
<address>
<a href="http://www.zeroboard.com" onclick="window.open(this.href);return false;"><img src="./images/{$layout_info->colorset}/powerdByZeroboard.gif" alt="Powered By ZeroBoard" width="106" height="5" /></a>
</address>
</div>
</div>
<ul id="footer">
<li class="first-child">
<address>
<a href="http://www.zeroboard.com" onclick="window.open(this.href);return false;"><img src="./images/{$layout_info->colorset}/powerdByZeroboard.gif" alt="Powered By ZeroBoard" width="106" height="5" /></a>
</address>
</li>
</li>
<!--@foreach($bottom_menu->list as $key => $val)-->
<li><a href="{$val['href']}" <!--@if($val['open_window']=='Y')-->onclick="window.open(this.href);return false;"<!--@end-->>{$val['link']}</a></li>
<!--@end-->
</ul>
<li><a href="{$val['href']}" <!--@if($val['open_window']=='Y')-->onclick="window.open(this.href);return false;"<!--@end-->>{$val['link']}</a></li>
<!--@endforeach-->
</ul>
</div>

522
libs/ftp.class.php Normal file
View file

@ -0,0 +1,522 @@
<?php
/*********************************************************************
*
* PHP FTP Client Class By TOMO ( groove@spencernetwork.org )
*
* - Version 0.12 (2002/01/11)
* - This script is free but without any warranty.
* - You can freely copy, use, modify or redistribute this script
* for any purpose.
* - But please do not erase this information!!.
*
********************************************************************/
/*********************************************************************
* List of available functions
* ftp_connect($server, $port = 21)
* ftp_login($user, $pass)
* ftp_pwd()
* ftp_size($pathname)
* ftp_mdtm($pathname)
* ftp_systype()
* ftp_cdup()
* ftp_chdir($pathname)
* ftp_delete($pathname)
* ftp_rmdir($pathname)
* ftp_mkdir($pathname)
* ftp_file_exists($pathname)
* ftp_rename($from, $to)
* ftp_nlist($arg = "", $pathname = "")
* ftp_rawlist($pathname = "")
* ftp_get($localfile, $remotefile, $mode = 1)
* ftp_put($remotefile, $localfile, $mode = 1)
* ftp_site($command)
* ftp_quit()
*********************************************************************/
class ftp
{
/* Public variables */
var $debug;
var $umask;
var $timeout;
/* Private variables */
var $ftp_sock;
var $ftp_resp;
/* Constractor */
function ftp()
{
$this->debug = FALSE;
$this->umask = 0022;
$this->timeout = 30;
if (!defined("FTP_BINARY")) {
define("FTP_BINARY", 1);
}
if (!defined("FTP_ASCII")) {
define("FTP_ASCII", 0);
}
$this->ftp_resp = "";
}
/* Public functions */
function ftp_connect($server, $port = 21)
{
$this->ftp_debug("Trying to ".$server.":".$port." ...\n");
$this->ftp_sock = @fsockopen($server, $port, $errno, $errstr, $this->timeout);
if (!$this->ftp_sock || !$this->ftp_ok()) {
$this->ftp_debug("Error : Cannot connect to remote host \"".$server.":".$port."\"\n");
$this->ftp_debug("Error : fsockopen() ".$errstr." (".$errno.")\n");
return FALSE;
}
$this->ftp_debug("Connected to remote host \"".$server.":".$port."\"\n");
return TRUE;
}
function ftp_login($user, $pass)
{
$this->ftp_putcmd("USER", $user);
if (!$this->ftp_ok()) {
$this->ftp_debug("Error : USER command failed\n");
return FALSE;
}
$this->ftp_putcmd("PASS", $pass);
if (!$this->ftp_ok()) {
$this->ftp_debug("Error : PASS command failed\n");
return FALSE;
}
$this->ftp_debug("Authentication succeeded\n");
return TRUE;
}
function ftp_pwd()
{
$this->ftp_putcmd("PWD");
if (!$this->ftp_ok()) {
$this->ftp_debug("Error : PWD command failed\n");
return FALSE;
}
return ereg_replace("^[0-9]{3} \"(.+)\" .+\r\n", "\\1", $this->ftp_resp);
}
function ftp_size($pathname)
{
$this->ftp_putcmd("SIZE", $pathname);
if (!$this->ftp_ok()) {
$this->ftp_debug("Error : SIZE command failed\n");
return -1;
}
return ereg_replace("^[0-9]{3} ([0-9]+)\r\n", "\\1", $this->ftp_resp);
}
function ftp_mdtm($pathname)
{
$this->ftp_putcmd("MDTM", $pathname);
if (!$this->ftp_ok()) {
$this->ftp_debug("Error : MDTM command failed\n");
return -1;
}
$mdtm = ereg_replace("^[0-9]{3} ([0-9]+)\r\n", "\\1", $this->ftp_resp);
$date = sscanf($mdtm, "%4d%2d%2d%2d%2d%2d");
$timestamp = mktime($date[3], $date[4], $date[5], $date[1], $date[2], $date[0]);
return $timestamp;
}
function ftp_systype()
{
$this->ftp_putcmd("SYST");
if (!$this->ftp_ok()) {
$this->ftp_debug("Error : SYST command failed\n");
return FALSE;
}
$DATA = explode(" ", $this->ftp_resp);
return $DATA[1];
}
function ftp_cdup()
{
$this->ftp_putcmd("CDUP");
$response = $this->ftp_ok();
if (!$response) {
$this->ftp_debug("Error : CDUP command failed\n");
}
return $response;
}
function ftp_chdir($pathname)
{
$this->ftp_putcmd("CWD", $pathname);
$response = $this->ftp_ok();
if (!$response) {
$this->ftp_debug("Error : CWD command failed\n");
}
return $response;
}
function ftp_delete($pathname)
{
$this->ftp_putcmd("DELE", $pathname);
$response = $this->ftp_ok();
if (!$response) {
$this->ftp_debug("Error : DELE command failed\n");
}
return $response;
}
function ftp_rmdir($pathname)
{
$this->ftp_putcmd("RMD", $pathname);
$response = $this->ftp_ok();
if (!$response) {
$this->ftp_debug("Error : RMD command failed\n");
}
return $response;
}
function ftp_mkdir($pathname)
{
$this->ftp_putcmd("MKD", $pathname);
$response = $this->ftp_ok();
if (!$response) {
$this->ftp_debug("Error : MKD command failed\n");
}
return $response;
}
function ftp_file_exists($pathname)
{
if (!($remote_list = $this->ftp_nlist("-a"))) {
$this->ftp_debug("Error : Cannot get remote file list\n");
return -1;
}
reset($remote_list);
while (list(,$value) = each($remote_list)) {
if ($value == $pathname) {
$this->ftp_debug("Remote file ".$pathname." exists\n");
return 1;
}
}
$this->ftp_debug("Remote file ".$pathname." does not exist\n");
return 0;
}
function ftp_rename($from, $to)
{
$this->ftp_putcmd("RNFR", $from);
if (!$this->ftp_ok()) {
$this->ftp_debug("Error : RNFR command failed\n");
return FALSE;
}
$this->ftp_putcmd("RNTO", $to);
$response = $this->ftp_ok();
if (!$response) {
$this->ftp_debug("Error : RNTO command failed\n");
}
return $response;
}
function ftp_nlist($arg = "", $pathname = "")
{
if (!($string = $this->ftp_pasv())) {
return FALSE;
}
if ($arg == "") {
$nlst = "NLST";
} else {
$nlst = "NLST ".$arg;
}
$this->ftp_putcmd($nlst, $pathname);
$sock_data = $this->ftp_open_data_connection($string);
if (!$sock_data || !$this->ftp_ok()) {
$this->ftp_debug("Error : Cannot connect to remote host\n");
$this->ftp_debug("Error : NLST command failed\n");
return FALSE;
}
$this->ftp_debug("Connected to remote host\n");
while (!feof($sock_data)) {
$list[] = ereg_replace("[\r\n]", "", fgets($sock_data, 512));
}
$this->ftp_close_data_connection($sock_data);
$this->ftp_debug(implode("\n", $list));
if (!$this->ftp_ok()) {
$this->ftp_debug("Error : NLST command failed\n");
return FALSE;
}
return $list;
}
function ftp_rawlist($pathname = "")
{
if (!($string = $this->ftp_pasv())) {
return FALSE;
}
$this->ftp_putcmd("LIST", $pathname);
$sock_data = $this->ftp_open_data_connection($string);
if (!$sock_data || !$this->ftp_ok()) {
$this->ftp_debug("Error : Cannot connect to remote host\n");
$this->ftp_debug("Error : LIST command failed\n");
return FALSE;
}
$this->ftp_debug("Connected to remote host\n");
while (!feof($sock_data)) {
$list[] = ereg_replace("[\r\n]", "", fgets($sock_data, 512));
}
$this->ftp_debug(implode("\n", $list));
$this->ftp_close_data_connection($sock_data);
if (!$this->ftp_ok()) {
$this->ftp_debug("Error : LIST command failed\n");
return FALSE;
}
return $list;
}
function ftp_get($localfile, $remotefile, $mode = 1)
{
umask($this->umask);
if (@file_exists($localfile)) {
$this->ftp_debug("Warning : local file will be overwritten\n");
}
$fp = @fopen($localfile, "w");
if (!$fp) {
$this->ftp_debug("Error : Cannot create \"".$localfile."\"");
$this->ftp_debug("Error : GET command failed\n");
return FALSE;
}
if (!$this->ftp_type($mode)) {
$this->ftp_debug("Error : GET command failed\n");
return FALSE;
}
if (!($string = $this->ftp_pasv())) {
$this->ftp_debug("Error : GET command failed\n");
return FALSE;
}
$this->ftp_putcmd("RETR", $remotefile);
$sock_data = $this->ftp_open_data_connection($string);
if (!$sock_data || !$this->ftp_ok()) {
$this->ftp_debug("Error : Cannot connect to remote host\n");
$this->ftp_debug("Error : GET command failed\n");
return FALSE;
}
$this->ftp_debug("Connected to remote host\n");
$this->ftp_debug("Retrieving remote file \"".$remotefile."\" to local file \"".$localfile."\"\n");
while (!feof($sock_data)) {
fputs($fp, fread($sock_data, 4096));
}
fclose($fp);
$this->ftp_close_data_connection($sock_data);
$response = $this->ftp_ok();
if (!$response) {
$this->ftp_debug("Error : GET command failed\n");
}
return $response;
}
function ftp_put($remotefile, $localfile, $mode = 1)
{
if (!@file_exists($localfile)) {
$this->ftp_debug("Error : No such file or directory \"".$localfile."\"\n");
$this->ftp_debug("Error : PUT command failed\n");
return FALSE;
}
$fp = @fopen($localfile, "r");
if (!$fp) {
$this->ftp_debug("Error : Cannot read file \"".$localfile."\"\n");
$this->ftp_debug("Error : PUT command failed\n");
return FALSE;
}
if (!$this->ftp_type($mode)) {
$this->ftp_debug("Error : PUT command failed\n");
return FALSE;
}
if (!($string = $this->ftp_pasv())) {
$this->ftp_debug("Error : PUT command failed\n");
return FALSE;
}
$this->ftp_putcmd("STOR", $remotefile);
$sock_data = $this->ftp_open_data_connection($string);
if (!$sock_data || !$this->ftp_ok()) {
$this->ftp_debug("Error : Cannot connect to remote host\n");
$this->ftp_debug("Error : PUT command failed\n");
return FALSE;
}
$this->ftp_debug("Connected to remote host\n");
$this->ftp_debug("Storing local file \"".$localfile."\" to remote file \"".$remotefile."\"\n");
while (!feof($fp)) {
fputs($sock_data, fread($fp, 4096));
}
fclose($fp);
$this->ftp_close_data_connection($sock_data);
$response = $this->ftp_ok();
if (!$response) {
$this->ftp_debug("Error : PUT command failed\n");
}
return $response;
}
function ftp_site($command)
{
$this->ftp_putcmd("SITE", $command);
$response = $this->ftp_ok();
if (!$response) {
$this->ftp_debug("Error : SITE command failed\n");
}
return $response;
}
function ftp_quit()
{
$this->ftp_putcmd("QUIT");
if (!$this->ftp_ok() || !fclose($this->ftp_sock)) {
$this->ftp_debug("Error : QUIT command failed\n");
return FALSE;
}
$this->ftp_debug("Disconnected from remote host\n");
return TRUE;
}
/* Private Functions */
function ftp_type($mode)
{
if ($mode) {
$type = "I"; //Binary mode
} else {
$type = "A"; //ASCII mode
}
$this->ftp_putcmd("TYPE", $type);
$response = $this->ftp_ok();
if (!$response) {
$this->ftp_debug("Error : TYPE command failed\n");
}
return $response;
}
function ftp_port($ip_port)
{
$this->ftp_putcmd("PORT", $ip_port);
$response = $this->ftp_ok();
if (!$response) {
$this->ftp_debug("Error : PORT command failed\n");
}
return $response;
}
function ftp_pasv()
{
$this->ftp_putcmd("PASV");
if (!$this->ftp_ok()) {
$this->ftp_debug("Error : PASV command failed\n");
return FALSE;
}
$ip_port = ereg_replace("^.+ \\(?([0-9]{1,3},[0-9]{1,3},[0-9]{1,3},[0-9]{1,3},[0-9]+,[0-9]+)\\)?.*\r\n$", "\\1", $this->ftp_resp);
return $ip_port;
}
function ftp_putcmd($cmd, $arg = "")
{
if ($arg != "") {
$cmd = $cmd." ".$arg;
}
fputs($this->ftp_sock, $cmd."\r\n");
$this->ftp_debug("> ".$cmd."\n");
return TRUE;
}
function ftp_ok()
{
$this->ftp_resp = "";
do {
$res = fgets($this->ftp_sock, 512);
$this->ftp_resp .= $res;
} while (substr($res, 3, 1) != " ");
$this->ftp_debug(str_replace("\r\n", "\n", $this->ftp_resp));
if (!ereg("^[123]", $this->ftp_resp)) {
return FALSE;
}
return TRUE;
}
function ftp_close_data_connection($sock)
{
$this->ftp_debug("Disconnected from remote host\n");
return fclose($sock);
}
function ftp_open_data_connection($ip_port)
{
if (!ereg("[0-9]{1,3},[0-9]{1,3},[0-9]{1,3},[0-9]{1,3},[0-9]+,[0-9]+", $ip_port)) {
$this->ftp_debug("Error : Illegal ip-port format(".$ip_port.")\n");
return FALSE;
}
$DATA = explode(",", $ip_port);
$ipaddr = $DATA[0].".".$DATA[1].".".$DATA[2].".".$DATA[3];
$port = $DATA[4]*256 + $DATA[5];
$this->ftp_debug("Trying to ".$ipaddr.":".$port." ...\n");
$data_connection = @fsockopen($ipaddr, $port, $errno, $errstr);
if (!$data_connection) {
$this->ftp_debug("Error : Cannot open data connection to ".$ipaddr.":".$port."\n");
$this->ftp_debug("Error : ".$errstr." (".$errno.")\n");
return FALSE;
}
return $data_connection;
}
function ftp_debug($message = "")
{
if ($this->debug) {
echo $message;
}
return TRUE;
}
}
?>

View file

@ -85,21 +85,35 @@
if(!$xml_obj) return;
// DB에 설정된 내역을 가져온다
$db_args->addon = $addon;
$output = executeQuery('addon.getAddonInfo',$db_args);
$extra_vals = unserialize($output->data->extra_vars);
if($extra_vals->mid_list) {
$addon_info->mid_list = $extra_vals->mid_list;
} else {
$addon_info->mid_list = array();
}
// 애드온 정보
if($xml_obj->version && $xml_obj->attrs->version == '0.2') {
// addon format 0.2
// addon format v0.2
sscanf($xml_obj->date->body, '%d-%d-%d', $date_obj->y, $date_obj->m, $date_obj->d);
$addon_info->date = sprintf('%04d%02d%02d', $date_obj->y, $date_obj->m, $date_obj->d);
$addon_info->addon_name = $addon;
$addon_info->title = $xml_obj->title->body;
$addon_info->description = trim($xml_obj->description->body);
$addon_info->version = $xml_obj->version->body;
$addon_info->homepage = $xml_obj->link->body;
sscanf($xml_obj->date->body, '%d-%d-%d', $date_obj->y, $date_obj->m, $date_obj->d);
$addon_info->date = sprintf('%04d%02d%02d', $date_obj->y, $date_obj->m, $date_obj->d);
$addon_info->license = $xml_obj->license->body;
$addon_info->license_link = $xml_obj->license->attrs->link;
if(!is_array($xml_obj->author)) $author_list[] = $xml_obj->author;
else $author_list = $xml_obj->author;
foreach($author_list as $author) {
unset($author_obj);
$author_obj->name = $author->name->body;
@ -108,6 +122,90 @@
$addon_info->author[] = $author_obj;
}
// 확장변수를 정리
if($xml_obj->extra_vars) {
$extra_var_groups = $xml_obj->extra_vars->group;
if(!$extra_var_groups) $extra_var_groups = $xml_obj->extra_vars;
if(!is_array($extra_var_groups)) $extra_var_groups = array($extra_var_groups);
foreach($extra_var_groups as $group) {
$extra_vars = $group->var;
if(!is_array($group->var)) $extra_vars = array($group->var);
foreach($extra_vars as $key => $val) {
unset($obj);
if(!$val->attrs->type) { $val->attrs->type = 'text'; }
$obj->group = $group->title->body;
$obj->name = $val->attrs->name;
$obj->title = $val->title->body;
$obj->type = $val->attrs->type;
$obj->description = $val->description->body;
$obj->value = $extra_vals->{$obj->name};
if(strpos($obj->value, '|@|') != false) { $obj->value = explode('|@|', $obj->value); }
if($obj->type == 'mid_list' && !is_array($obj->value)) { $obj->value = array($obj->value); }
// 'select'type에서 option목록을 구한다.
if(is_array($val->options)) {
$option_count = count($val->options);
for($i = 0; $i < $option_count; $i++) {
$obj->options[$i]->title = $val->options[$i]->title->body;
$obj->options[$i]->value = $val->options[$i]->attrs->value;
}
} else {
$obj->options[0]->title = $val->options[0]->title->body;
$obj->options[0]->value = $val->options[0]->attrs->value;
}
$addon_info->extra_vars[] = $obj;
}
}
}
// history
if($xml_obj->history) {
if(!is_array($xml_obj->history)) $history[] = $xml_obj->history;
else $history = $xml_obj->history;
foreach($history as $item) {
unset($obj);
if($item->author) {
(!is_array($item->author)) ? $obj->author_list[] = $item->author : $obj->author_list = $item->author;
foreach($obj->author_list as $author) {
unset($author_obj);
$author_obj->name = $author->name->body;
$author_obj->email_address = $author->attrs->email_address;
$author_obj->homepage = $author->attrs->link;
$obj->author[] = $author_obj;
}
}
$obj->name = $item->name->body;
$obj->email_address = $item->attrs->email_address;
$obj->homepage = $item->attrs->link;
$obj->version = $item->attrs->version;
$obj->date = $item->attrs->date;
$obj->description = $item->description->body;
if($item->log) {
(!is_array($item->log)) ? $obj->log[] = $item->log : $obj->log = $item->log;
foreach($obj->log as $log) {
unset($log_obj);
$log_obj->text = $log->body;
$log_obj->link = $log->attrs->link;
$obj->logs[] = $log_obj;
}
}
$addon_info->history[] = $obj;
}
}
} else {
// addon format 0.1
$addon_info->addon_name = $addon;
@ -121,95 +219,47 @@
$author_obj->homepage = $xml_obj->author->attrs->link;
$addon_info->author[] = $author_obj;
}
if($xml_obj->extra_vars) {
// 확장변수를 정리
$extra_var_groups = $xml_obj->extra_vars->group;
if(!$extra_var_groups) $extra_var_groups = $xml_obj->extra_vars;
if(!is_array($extra_var_groups)) $extra_var_groups = array($extra_var_groups);
foreach($extra_var_groups as $group) {
$extra_vars = $group->var;
if(!is_array($group->var)) $extra_vars = array($group->var);
// history
if($xml_obj->history) {
if(!is_array($xml_obj->history)) $history[] = $xml_obj->history;
else $history = $xml_obj->history;
foreach($extra_vars as $key => $val) {
unset($obj);
if(!$val->type->body) { $val->type->body = 'text'; }
foreach($history as $item) {
unset($obj);
$obj->group = $group->title->body;
$obj->name = $val->attrs->name;
$obj->title = $val->title->body;
$obj->type = $val->type->body;
$obj->description = $val->description->body;
$obj->value = $extra_vals->{$obj->name};
if(strpos($obj->value, '|@|') != false) { $obj->value = explode('|@|', $obj->value); }
if($obj->type == 'mid_list' && !is_array($obj->value)) { $obj->value = array($obj->value); }
if($item->author) {
(!is_array($item->author)) ? $obj->author_list[] = $item->author : $obj->author_list = $item->author;
// 'select'type에서 option목록을 구한다.
if(is_array($val->options)) {
$option_count = count($val->options);
foreach($obj->author_list as $author) {
unset($author_obj);
$author_obj->name = $author->name->body;
$author_obj->email_address = $author->attrs->email_address;
$author_obj->homepage = $author->attrs->link;
$obj->author[] = $author_obj;
}
}
$obj->name = $item->name->body;
$obj->email_address = $item->attrs->email_address;
$obj->homepage = $item->attrs->link;
$obj->version = $item->attrs->version;
$obj->date = $item->attrs->date;
$obj->description = $item->description->body;
if($item->log) {
(!is_array($item->log)) ? $obj->log[] = $item->log : $obj->log = $item->log;
foreach($obj->log as $log) {
$obj->logs[] = $log->body;
}
}
$addon_info->history[] = $obj;
}
}
// DB에 설정된 내역을 가져온다
$db_args->addon = $addon;
$output = executeQuery('addon.getAddonInfo',$db_args);
$extra_vals = unserialize($output->data->extra_vars);
if($extra_vals->mid_list) {
$addon_info->mid_list = $extra_vals->mid_list;
} else {
$addon_info->mid_list = array();
}
if($xml_obj->extra_vars) {
// 확장변수를 정리
$extra_var_groups = $xml_obj->extra_vars->group;
if(!$extra_var_groups) $extra_var_groups = $xml_obj->extra_vars;
if(!is_array($extra_var_groups)) $extra_var_groups = array($extra_var_groups);
foreach($extra_var_groups as $group) {
$extra_vars = $group->var;
if(!is_array($group->var)) $extra_vars = array($group->var);
foreach($extra_vars as $key => $val) {
unset($obj);
if(!$val->type->body) { $val->type->body = 'text'; }
$obj->group = $group->title->body;
$obj->name = $val->attrs->name;
$obj->title = $val->title->body;
$obj->type = $val->type->body;
$obj->description = $val->description->body;
$obj->value = $extra_vals->{$obj->name};
if(strpos($obj->value, '|@|') != false) { $obj->value = explode('|@|', $obj->value); }
if($obj->type == 'mid_list' && !is_array($obj->value)) { $obj->value = array($obj->value); }
// 'select'type에서 option목록을 구한다.
if(is_array($val->options)) {
$option_count = count($val->options);
for($i = 0; $i < $option_count; $i++) {
$obj->options[$i]->title = $val->options[$i]->title->body;
$obj->options[$i]->value = $val->options[$i]->value->body;
for($i = 0; $i < $option_count; $i++) {
$obj->options[$i]->title = $val->options[$i]->title->body;
$obj->options[$i]->value = $val->options[$i]->value->body;
}
}
}
$addon_info->extra_vars[] = $obj;
$addon_info->extra_vars[] = $obj;
}
}
}
}
return $addon_info;
}

View file

@ -17,6 +17,7 @@
<version>0.1</version>
<date>2007-02-28</date>
<category>manager</category>
<link>http://www.zeroboard.com</link>
<author email_address="zero@zeroboard.com" link="http://www.zeroboard.com">
<name xml:lang="ko">제로</name>

View file

@ -2,16 +2,16 @@
/**
* @file modules/addon/lang/fr.lang.php
* @author zero (zero@nzeo.com) Traduit par Pierre Duvent(PierreDuvent@gamil.com)
* @brief Paquet de la Langue francaise
* @brief Paquet du langage en français pour le module de Compagnon
**/
$lang->addon = "Compagnon";
$lang->addon_info = 'Le résumé de la Compagnon';
$lang->addon_maker = 'L\'Auteur de la Compagnon';
$lang->addon_license = 'License';
$lang->addon_license = 'Licence';
$lang->addon_history = 'L\'Histoire de la Compagnon';
$lang->about_addon_mid = "On peut choisir des objets dans lesquels la Compagnon soit utilisé.<br />(Tout sera choisi quand rien n'est choisi.)";
$lang->about_addon = 'La Compagnon, c\'est pour contrôler les actions plutôt d\'imprimer des résultats de HTML.<br/>Par la Touche à Bascule des compagnons que vous voulez faire marcher ou arrêter, vous pouvez appliquer les fonctions très utiles à administrer votre site web.';
$lang->about_addon = 'La Compagnon, c\'est pour contrôler les actions plutôt d\'imprimer des résultats de HTML.<br/>Par la Touche à Bascule des compagnons que vous voulez faire marcher ou arrêter, vous pouvez appliquer les fonctions très utiles à administrer votre site Web.';
?>

View file

@ -9,7 +9,7 @@
$lang->addon_info = '애드온정보';
$lang->addon_maker = '애드온 제작자';
$lang->addon_license = '라이스';
$lang->addon_license = '라이스';
$lang->addon_history = '변경 이력';
$lang->about_addon_mid = "애드온이 사용될 대상을 지정할 수 있습니다.<br />(모두 해제시 모든 대상에서 사용 가능합니다)";

View file

@ -19,14 +19,17 @@
<!--@endforeach-->
</td>
</tr>
<!--@if($addon_info->homepage)-->
<tr>
<th scope="row">{$lang->homepage}</th>
<td class="blue"><a href="{$addon_info->homepage}" onclick="window.open(this.href);return false;">{$addon_info->homepage}</a></td>
</tr>
<!--@end-->
<tr>
<th scope="row">{$lang->regdate}</th>
<td>{zdate($addon_info->date, 'Y-m-d')}</td>
</tr>
<!--@if($addon_info->license || $addon_info->license_link)-->
<tr>
<th scope="row">{$lang->addon_license}</th>
<td>
@ -36,6 +39,7 @@
<!--@end-->
</td>
</tr>
<!--@end-->
<tr>
<th scope="row">{$lang->description}</th>
<td>{nl2br(trim($addon_info->description))}</td>
@ -64,12 +68,18 @@
<!--@foreach($history->author as $author)-->
<p>{$author->name} (<a href="{$author->homepage}" onclick="window.open(this.href);return false;">{$author->homepage}</a> / <a href="mailto:{$author->email_address}">{$author->email_address}</a>)</p>
<!--@endforeach-->
<!--@if($addon_info->description)-->
<!--@if($history->description)-->
<p>{nl2br(trim($history->description))}</p>
<!--@endif-->
<!--@if($history->logs)-->
<ul>
<!--@foreach($history->logs as $log)--><li>{$log}</li><!--@endforeach-->
<!--@foreach($history->logs as $log)-->
<!--@if($log->link)-->
<li><a href="{$log->link}">{$log->text}</a></li>
<!--@else-->
<li>{$log->text}</li>
<!--@endif-->
<!--@endforeach-->
</ul>
<!--@endif-->
</td>

View file

@ -25,10 +25,12 @@
<!--@endforeach-->
</td>
</tr>
<!--@if($addon_info->homepage)-->
<tr>
<th scope="row"><label for="textfield2">{$lang->homepage}</label></th>
<td><a href="{$addon_info->homepage}" onclick="window.open(this.href);return false;">{$addon_info->homepage}</a></td>
<td class="blue"><a href="{$addon_info->homepage}" onclick="window.open(this.href);return false;">{$addon_info->homepage}</a></td>
</tr>
<!--@end-->
<!--@foreach($addon_info->extra_vars as $id => $var)-->
@ -89,7 +91,7 @@
<div id="section_{$module_category_srl}">
<!--@foreach($modules->list as $key => $val)-->
<div class="module_list">
<input type="checkbox" value="{$key}" name="mid_list" id="chk_mid_list_{$key}" <!--@if(in_array($key, $addon_info->mid_list))-->checked="checked"<!--@end--> />
<input type="checkbox" value="{$key}" name="mid_list" id="chk_mid_list_{$key}" <!--@if(in_array($key, $addon_info->mid_list))-->checked="checked"<!--@end--> />
<label for="chk_mid_list_{$key}">{$key} ({$val->browser_title})</label>
</div>
<!--@end-->

View file

@ -15,6 +15,7 @@
<version>0.1</version>
<date>2007-02-28</date>
<category>base</category>
<link>http://www.zeroboard.com</link>
<author email_address="zero@zeroboard.com" link="http://www.zeroboard.com">
<name xml:lang="ko">제로</name>

View file

@ -2,7 +2,7 @@
/**
* @file modules/admin/lang/fr.lang.php
* @author zero (zero@nzeo.com) Traduit par Pierre Duvent(PierreDuvent@gamil.com)
* @brief Paquet de la Langue franaise (Les Mots base seulement sont inclus ici)
* @brief Paquet du langage en français pour le module d\'Administration
**/
$lang->admin_info = 'Informations d\'Administrateur';
@ -12,8 +12,8 @@
'service' => 'Modules de Service',
'manager' => 'Modules Administratif',
'utility' => 'Modules d\'Utilité',
'accessory' => 'Modules Accessoires',
'base' => 'Modules par Défaut',
'accessory' => 'Modules Additionnels',
'base' => 'Modules Fondamentaux',
);
$lang->newest_news = "Dernières Nouvelles";
@ -28,25 +28,25 @@
$lang->item_module = "Liste des Modules";
$lang->item_addon = "Liste des Compagnons";
$lang->item_widget = "Liste des Widgets";
$lang->item_widget = "Liste des Gadgets";
$lang->item_layout = "Liste des Mises en Pages";
$lang->module_name = "Nom de Module";
$lang->addon_name = "Nom de Compagnon";
$lang->version = "Version";
$lang->author = "Auteur";
$lang->table_count = "Nombres de Tables";
$lang->table_count = "Somme de Tables";
$lang->installed_path = "Chemin Installé";
$lang->cmd_shortcut_management = "Editer le Menu";
$lang->msg_is_not_administrator = 'Administrateur seulement';
$lang->msg_manage_module_cannot_delete = 'On ne peut pas effacer les raccourcis pour les modules, les compagnons, les mises en page ou les widgets';
$lang->msg_default_act_is_null = 'on ne peut pas enrégistrer les raccourcis parce que les Actions Par Défaut de l\'Administrateur ne sont pas établis';
$lang->msg_manage_module_cannot_delete = 'On ne peut pas supprimer les raccourcis pour les modules, les compagnons, les mises en page ou les gadgets';
$lang->msg_default_act_is_null = 'on ne peut pas enrégistrer les raccourcis parce que les Actions Par Défaut de l\'Administrateur ne sont pas établies';
$lang->welcome_to_zeroboard_xe = 'Bienvenue sur la Page d\'Administration du Zeroboard XE';
$lang->about_admin_page = "La Page d\'Administration est encore en train de développer,\nNous allons ajouter des contenus essentiels par accepter beauoup de bons suggestions pendant Béta Proche.";
$lang->about_lang_env = "Vous pouvez fixer la Langue Par Défaut par cliquer le boutton [Conserver] au-dessous. Les visiteurs vont voir toutes les menus et les messages en la langue que vous choisissez.";
$lang->about_lang_env = "Vous pouvez fixer la Langue Par Défaut par cliquer le boutton [Conserver] au-dessous. Les visiteurs vont voir tous les menus et les messages en langue que vous choisissez.";
$lang->zeroboard_xe_user_links = 'Liens pour les Utilisateurs';
$lang->zeroboard_xe_developer_links = 'Liens pour les Développeur';
@ -56,33 +56,33 @@
//'Site Web Beta Proche' => 'http://spring.zeroboard.com',
//'Conservation des Modules' => 'http://www.zeroboard.com',
//'Conservation des Compagnons' => 'http://www.zeroboard.com',
//'Conservation des Widgets' => 'http://www.zeroboard.com',
//'Conservation des Thèmes des Modules' => 'http://www.zeroboard.com',
//Conservation des Thèmes des 'Widgets' => 'http://www.zeroboard.com',
//'Conservation des Thèmes des Mises en Page' => 'http://www.zeroboard.com',
//'Conservation des gadgets' => 'http://www.zeroboard.com',
//'Conservation des habillages des Modules' => 'http://www.zeroboard.com',
//Conservation des habillages des 'gadgets' => 'http://www.zeroboard.com',
//'Conservation des habillages des Mises en Page' => 'http://www.zeroboard.com',
);
$lang->xe_developer_links = array(
'Manuel' => 'http://www.zeroboard.com/manual',
//"Forum pour les Dveloppeurs" => 'http://spring.zeroboard.com',
'Traque des Issues' => 'http://trac.zeroboard.com',
'Répertoir de SVN' => 'http://svn.zeroboard.com',
'Répertoire de SVN' => 'http://svn.zeroboard.com',
'Documents de Doxygen' => 'http://doc.zeroboard.com',
'Documentation de PDF' => 'http://doc.zeroboard.com/zeroboard_xe.pdf',
);
$lang->zeroboard_xe_usefulness_module = 'Modules Utiles';
$lang->xe_usefulness_modules = array(
'dispEditorAdminIndex' => 'Arrangement de l\'Editeur',
'dispDocumentAdminList' => 'Arrangement des Articles',
'dispCommentAdminList' => 'Arrangement des Commentaires',
'dispFileAdminList' => 'Arrangement des Rattachements',
'dispPollAdminList' => 'Arrangement des Enquêtes',
'dispSpamfilterAdminConfig' => 'Arrangement du Filtre contre Pourriel',
'dispEditorAdminIndex' => 'Administration de l\'Editeur',
'dispDocumentAdminList' => 'Administration des Articles',
'dispCommentAdminList' => 'Administration des Commentaires',
'dispFileAdminList' => 'Administration des Annexes',
'dispPollAdminList' => 'Administration des Enquêtes',
'dispSpamfilterAdminConfig' => 'Administration du Filtre contre Polluriel',
'dispCounterAdminIndex' => 'Journal de Compteur',
);
$lang->xe_license = 'Zeroboard XE s\'applique la GPL';
$lang->about_shortcut = 'Vous pouvez effacer les raccourcis pour les modules qui sont enrgistrés sur le liste des modules utilisés fréquemment';
$lang->about_shortcut = 'Vous pouvez supprimer les raccourcis pour les modules qui sont enrgistrés sur le liste des modules qui sont utilisés fréquemment';
?>

View file

@ -58,29 +58,29 @@
<!--@foreach($lang_supported as $key => $val)-->
<!--@if($key != $lang_type)-->
<option value="{$key}">{$val}</option>
<!--@end-->
<!--@end-->
<!--@endif-->
<!--@endforeach-->
</select>
<p>{$lang->about_lang_env}</p>
</td>
</tr>
<tr>
<th scope="row">{$lang->time_zone}</th>
<td>
<select name="time_zone" class="time_zone">
<!--@foreach($time_zone_list as $key => $val)-->
<option value="{$key}" <!--@if($time_zone==$key)-->selected="selected"<!--@end-->>{$val}</option>
<!--@end-->
</select>
<p>{$lang->about_time_zone}</p>
</td>
</tr>
<tr>
<th scope="row">{$lang->qmail_compatibility}</th>
<td>
<input type="checkbox" name="qmail_compatibility" value="Y" <!--@if($qmail_compatibility=='Y')-->checked="checked"<!--@end--> />
<p>{$lang->about_qmail_compatibility}</p>
</td>
</tr>
<tr>
<th scope="row">{$lang->time_zone}</th>
<td>
<select name="time_zone" class="time_zone">
<!--@foreach($time_zone_list as $key => $val)-->
<option value="{$key}" <!--@if($time_zone==$key)-->selected="selected"<!--@end-->>{$val}</option>
<!--@endforeach-->
</select>
<p>{$lang->about_time_zone}</p>
</td>
</tr>
<tr>
<th scope="row">{$lang->qmail_compatibility}</th>
<td>
<input type="checkbox" name="qmail_compatibility" value="Y" <!--@if($qmail_compatibility=='Y')-->checked="checked"<!--@end--> />
<p>{$lang->about_qmail_compatibility}</p>
</td>
</tr>
<tr>
<th colspan="2" class="button">
@ -104,14 +104,14 @@
<th class="tahoma">{zdate($val->date,"Y-m-d H:i")}</th>
<td><a href="{$val->url}" onclick="window.open(this.href);return false;">{$val->title}</a></td>
</tr>
<!--@end-->
<!--@endforeach-->
</tbody>
</table>
<!--@end-->
<!--@endif-->
</div>
<div class="admin_link">
<!-- 사용자 링크 -->
<!--// 사용자 링크 -->
<table cellspacing="0" class="adminTable">
<caption>{$lang->zeroboard_xe_user_links}</caption>
<!--@foreach($lang->xe_user_links as $key => $val)-->

View file

@ -2,7 +2,7 @@
<!--%import("js/admin.js")-->
<div id="adminLayout">
<div id="adminMenuContent">
<div class="adminInfoBox">
@ -35,11 +35,11 @@
<li <!--@if(in_array($act, $v->actions))-->class="on"<!--@end--> onclick="location.href='{getUrl('','module','admin','act',$v->admin_index_act)}'; return false;">
<a href="{getUrl('','module','admin','act',$v->admin_index_act)}" title="{trim($v->description)}">{$v->title}</a>
</li>
<!--@end-->
<!--@end-->
<!--@end-->
<!--@endif-->
<!--@endif-->
<!--@endforeach-->
</ul>
<!--@end-->
<!--@endforeach-->
</div>
<div id="adminContentBody">{$content}</div>

View file

@ -80,6 +80,9 @@
// module_srl 값이 없다면 그냥 index 페이지를 보여줌
if(!Context::get('module_srl')) return $this->dispBoardAdminContent();
if(!in_array($this->module_info->module, array('admin', 'board','blog','guestbook'))) {
return $this->alertMessage('msg_invalid_request');
}
// 레이아웃이 정해져 있다면 레이아웃 정보를 추가해줌(layout_title, layout)
if($this->module_info->layout_srl) {
@ -104,6 +107,9 @@
* @brief 게시판 추가 출력
**/
function dispBoardAdminInsertBoard() {
if(!in_array($this->module_info->module, array('admin', 'board','blog','guestbook'))) {
return $this->alertMessage('msg_invalid_request');
}
// 스킨 목록을 구해옴
$oModuleModel = &getModel('module');
@ -143,6 +149,9 @@
function dispBoardAdminDeleteBoard() {
if(!Context::get('module_srl')) return $this->dispBoardAdminContent();
if(!in_array($this->module_info->module, array('admin', 'board','blog','guestbook'))) {
return $this->alertMessage('msg_invalid_request');
}
$module_info = Context::get('module_info');
@ -160,6 +169,9 @@
* @brief 스킨 정보 보여줌
**/
function dispBoardAdminSkinInfo() {
if(!in_array($this->module_info->module, array('admin', 'board','blog','guestbook'))) {
return $this->alertMessage('msg_invalid_request');
}
// 현재 선택된 모듈의 스킨의 정보 xml 파일을 읽음
$module_info = Context::get('module_info');
@ -190,6 +202,9 @@
function dispBoardAdminCategoryInfo() {
// module_srl을 구함
$module_srl = $this->module_info->module_srl;
if(!in_array($this->module_info->module, array('admin', 'board','blog','guestbook'))) {
return $this->alertMessage('msg_invalid_request');
}
// 카테고리 정보를 가져옴
$oDocumentModel = &getModel('document');
@ -208,6 +223,9 @@
function dispBoardAdminGrantInfo() {
// module_srl을 구함
$module_srl = Context::get('module_srl');
if(!in_array($this->module_info->module, array('admin', 'board','blog','guestbook'))) {
return $this->alertMessage('msg_invalid_request');
}
// module.xml에서 권한 관련 목록을 구해옴
$grant_list = $this->xml_info->grant;
@ -220,5 +238,10 @@
$this->setTemplateFile('grant_list');
}
function alertMessage($message) {
$script = sprintf('<script type="text/javascript"> xAddEventListener(window,"load", function() { alert("%s"); } );</script>', Context::getLang($message));
Context::addHtmlHeader( $script );
}
}
?>

View file

@ -372,6 +372,7 @@
// 댓글이 없다면 오류
if(!$oSourceComment->isExists()) return $this->dispBoardMessage('msg_invalid_request');
if(Context::get('document_srl') && $oSourceComment->get('document_srl') != Context::get('document_srl')) return $this->dispBoardMessage('meg_invalid_request');
// 대상 댓글을 생성
$oComment = $oCommentModel->getComment();

View file

@ -15,6 +15,7 @@
<version>0.1</version>
<date>2007-02-28</date>
<category>service</category>
<link>http://www.zeroboard.com</link>
<author email_address="zero@zeroboard.com" link="http://www.zeroboard.com">
<name xml:lang="ko">제로</name>

View file

@ -1,20 +1,20 @@
<?php
/**
* @file modules/board/lang/ fr.lang.php
* @file modules/board/lang/fr.lang.php
* @author zero (zero@nzeo.com) Traduit par Pierre Duvent(PierreDuvent@gamil.com)
* @brief Paquet de la langue fondamental pour le module de Panneau d\'Affichage
* @brief Paquet du langage en français pour le module de Panneau d\'Affichage
**/
$lang->board = "Panneau";
$lang->except_notice = "Exclure des Notices";
$lang->cmd_manage_menu = 'Arrangement de Menu';
$lang->cmd_make_child = 'Ajouter une enfant catégorie';
$lang->cmd_enable_move_category = "Bouger la position de la catégorie (Cochez la case et puis glisser le menu que vous voulez déplacer)";
$lang->cmd_manage_menu = 'Administration de Menu';
$lang->cmd_make_child = 'Ajouter une catégorie inférieure';
$lang->cmd_enable_move_category = "Bouger la position de la catégorie (Cochez la case et puis glisser la catégorie que vous voulez déplacer)";
// Item
$lang->parent_category_title = 'catégorie re';
$lang->parent_category_title = 'catégorie supérieure';
$lang->category_title = 'Catégorie';
$lang->expand = 'Etendre';
$lang->category_group_srls = 'Groupe Accessible';
@ -22,19 +22,19 @@
$lang->consultation = 'Consultation';
$lang->admin_mail = 'Mél de l\'administrateur';
// Mots utiliss en bouton
// Mots utilisés en bouton
$lang->cmd_board_list = 'Liste des Panneaux';
$lang->cmd_module_config = 'Configuration commun pour les Panneaux';
$lang->cmd_view_info = 'Information des Panneaux';
// blah blah..
$lang->about_category_title = 'Entrez le nom de la catégorie, SVP.';
$lang->about_expand = 'Si vous cochez la case, ce sera toujours tendu';
$lang->about_category_group_srls = 'Le groupe choisi seulement pourront utiliser la catégorie courrante';
$lang->about_layout_setup = 'Vous pouvez manuellement modifier le code de Mise en Page du Panneau. Insérez ou arrangez le code de Widget n\'importe où vous voulez.';
$lang->about_board_category = 'Vous pouvez créer des catégories d\'affichage dans le tableau. Quand la catégorie d\'affichage est cassé, essayez manuellement rétablir la cachette du fichier.';
$lang->about_except_notice = "L'Article de Notice ne sera exposé sur la liste normale.";
$lang->about_board = "Ce module se sert à créer et arranger des Panneaux.\nAprés avoir créé un module, si vous cliquez le nom sur le liste, vous pouvez configurer spécifiquement.\nFaites attention quand vous nomer un module du Panneau, car ce sera URL. (ex : http://domain/zb/?mid=nom_de_module)";
// murmure..
$lang->about_category_title = 'Entrez le nom de la catégorie, S.V.P.';
$lang->about_expand = 'Si vous cochez la case à cocher, ce sera toujours tendu';
$lang->about_category_group_srls = 'Le groupe choisi seulement pourra utiliser la catégorie courante';
$lang->about_layout_setup = 'Vous pouvez manuellement modifier le code de Mise en Page du blogue. Insérez ou administrez le code de Gadget n\'importe où vous voulez.';
$lang->about_board_category = 'Vous pouvez créer des catégories de Panneau d\'Affichage. Quand la catégorie d\'affichage est cassé, essayez manuellement rétablir l\'antémémoire du fichier.';
$lang->about_except_notice = "Le titre de Notice dont l'article se représentera toujours en tête de la liste ne sera exposé sur la liste générale.";
$lang->about_board = "Ce module se sert à créer et à administrer des Panneaux d'Affichage.\nAprés avoir créé un module, si vous cliquez le nom sur le liste, vous pouvez configurer particulièrement.\nFaites attention quand vous nomer un module du Panneau, car ce sera URL. (ex : http://domain/zb/?mid=nom_de_module)";
$lang->about_consultation = "Les membres non-administratifs verront seulement les ariticles d\'eux-même.\nNon-membres ne pourraient pas écrire des articles quand la Consultation est appliqué.";
$lang->about_admin_mail = 'Un message eletronique sera envoyé pour l\'address inscrite quand un article ou commentaire se soumet <br />On peut inscrire multiple addresses délimité par les virgules.';
$lang->about_admin_mail = 'Un message éléctronique sera envoyé à l\'adresse inscrite quand un article ou commentaire se soumet. <br />On peut inscrire multiple adresses délimité par les virgules.';
?>

View file

@ -22,7 +22,7 @@
<div class="date">
<strong>{$comment->getRegdate('Y.m.d')}</strong> {$comment->getRegdate('H:i:s')}
({$comment->getIpaddress()})
<!--@if($grant->is_admin || $module_info->display_ip_address!='N')-->({$comment->getIpaddress()})<!--@end-->
</div>
<div class="author">

View file

@ -1,6 +1,6 @@
<!--#include("header.html")-->
<!-- 만약 댓글의 답을 다는 것이라면 원문 보여줌 -->
<!--// 만약 댓글의 답을 다는 것이라면 원문 보여줌 -->
<!--@if($oSourceComment->isExists())-->
<div class="replyBox">
<div class="replyItem">

View file

@ -40,12 +40,12 @@
.accountNavigation li.loginAndLogout a { background:url(../images/black/line_1x10_e0e0e0.gif) no-repeat left 2px; padding-left:8px; }
.boardSubMenu { border-bottom:1px solid #444444;}
.boardList { width:100%; border:1px solid #444444; border-top:none; table-layout:fixed;}
.boardList th { color:#999999; font-weight:normal; border-top:1px solid #444444; border-bottom:1px solid #888888; white-space:nowrap; padding-top:5px; height:28px; overflow:hidden;}
.boardList th a { color:#999999; }
.boardList td { border-top:1px solid #444444; padding:.5em;}
.boardList th.num { border-left:0px solid #444444; }
.boardList td.title, .boardList tr.notice { background-color:transparent; }
.boardList { width:100%; border:1px solid #444444; border-top:none; overflow:hidden;}
.boardList thead th { color:#999999; font-weight:normal; border-top:1px solid #444444; border-bottom:1px solid #888888; white-space:nowrap; padding-top:5px; height:28px; overflow:hidden;}
.boardList thead th a { color:#999999; }
.boardList thead th.num { border-left:0px solid #444444; }
.boardList tbody td { border-top:1px solid #444444; padding:.5em;}
.boardList tbody td.title, .boardList tr.notice { background-color:transparent; }
#board_category { background-color:#444444; color:#AAAAAA; }
#go_button { color:#AAAAAA; }

View file

@ -15,10 +15,10 @@ Jeong, Chan Myeong 070601~070630
.boardHeader h3 { margin:0; float:left; padding:15px 15px 12px 15px; font-size:1.2em; background:#ffffff url(../images/common/lineH3.gif) no-repeat right bottom;}
/* board Description */
.boardDescription { color:#AEAEAE; border:1px solid #DDDDDD; overflow:hidden; padding:10px; margin-top:5px; background-color:#FFFFFF;}
.boardDescription { color:#AEAEAE; border:1px solid #DDDDDD; overflow:hidden; padding:10px; margin: 5px 0; background-color:#FFFFFF;}
/* board Information */
.boardInformation { width:100%; clear:both; margin:10px 0 2px 0; overflow:hidden; color:#666666;}
.boardInformation { width:100%; clear:both; margin:5px 0 2px 0; overflow:hidden; color:#666666;}
.articleNum { float:left; padding:0 0 0 15px; }
/* account Navigation */
@ -140,7 +140,14 @@ Jeong, Chan Myeong 070601~070630
.boardSubMenu img.sort { vertical-align:middle; }
/* list */
.boardList { width:100%; border:1px solid #e0e1db; border-top:none; table-layout:fixed;}
.boardList { width:100%; border:1px solid #e0e1db; border-top:none; overflow:hidden; }
.boardList thead tr th div { white-space:nowrap; margin:0 5px; }
.boardList thead tr th.title , .boardList thead tr th.category, .boardList thead tr th.topic { width:100%; }
.boardList tbody td { white-space:nowrap; }
.boardList tbody td.title { white-space:normal; }
.boardList tbody td.webzineTitle { white-space:normal; }
.boardListNoTopBorder { border:none; }
.boardList th { color:#3e3f3e; font-weight:normal; border-top:1px solid #e0e1db; border-bottom:1px solid #ffffff; white-space:nowrap; padding-top:5px; height:28px; overflow:hidden;}
html:not([lang*=""]) .boardList th { height:33px; }
@ -164,13 +171,14 @@ html:not([lang*=""]) .boardList th { height:33px; }
.boardList td.checkbox { font:.8em tahoma; color:#999999; text-align:center;}
.boardList tr.notice td.num { padding:.5em; white-space:nowrap;}
.boardList tr.notice td.notice { font-size:.9em; color:#999999; font-weight:bold; text-align:center;}
.boardList td.thumb img { border:1px solid #E0E1DB; padding:3px; }
.boardList td.thumb { }
.boardList td.thumb img { border:1px solid #E0E1DB; padding:3px; margin:none; }
.boardList td.title {padding-left:1em; }
.boardList td.title strong.category { font-size:1em; background:url(../images/common/line_1x10_e0e0e0.gif) no-repeat right 3px; padding-right:.5em; margin-right:.5em;}
.boardList td.title.bold { font-size:1.2em; font-weight:bold;}
.boardList td.title.bold a { position:relative; top:.3em;}
.boardList td.title * { vertical-align:middle;}
.boardList td.title * { vertical-align:middle;}
.boardList td.title,
.boardList td.title a { color:#444444; text-decoration:none;}
.boardList td.title a:visited { color:#777777;}
@ -191,15 +199,15 @@ html:not([lang*=""]) .boardList th { height:33px; }
.boardListNoTopBorder td { border-top:none; border-bottom:1px solid #eff0ed; padding:.5em;}
.boardList td.webzineTitle { padding-left:1em; color:#777777;}
.boardList td.webzineTitle { padding-left:1em; color:#777777; height:1.2em; width:100%;}
.boardList td.webzineTitle strong.category { font-size:1em; background:url(../images/common/line_1x10_e0e0e0.gif) no-repeat right 3px; padding-right:.5em; margin-right:.5em;}
.boardList td.webzineTitle.bold { font-size:1.2em; font-weight:bold;}
.boardList td.webzineTitle * { vertical-align:middle;}
.boardList td.webzineTitle * { vertical-align:middle;}
.boardList td.webzineTitle,
.boardList td.webzineTitle a { color:#444444; text-decoration:none;}
.boardList td.webzineTitle a:visited { color:#777777;}
.boardList td.summary { border-top:none; vertical-align:top; color:#666666; line-height:1.25em; padding-left:1em;}
.boardList td.summary { border-top:none; vertical-align:top; color:#666666; line-height:1.25em; padding-left:1em; white-space:normal; }
.boardList td.summary a { color:#666666; text-decoration:none; line-height:inherit;}
.boardList td.summary a:visited { color:#999999;}

View file

@ -1,6 +1,6 @@
<!-- 이 파일은 extra_vars의 form을 출력하는 파일이며 다른 스킨에서 그대로 가져가서 css만 바꾸어 주면 된다 -->
<!--// 이 파일은 extra_vars의 form을 출력하는 파일이며 다른 스킨에서 그대로 가져가서 css만 바꾸어 주면 된다 -->
<!-- calendar -->
<!--// calendar -->
<!--%import("../../../../common/js/calendar.min.js",optimized=false)-->
<!--@if($lang_type == 'ko')-->
<!--%import("../../../../common/js/calendar-ko.js",optimized=false)-->
@ -18,22 +18,22 @@
<!--%import("../../../../common/js/calendar-setup.js",optimized=false)-->
<!--%import("../../../../common/css/calendar-system.css",optimized=false)-->
<!-- type=select,checkbox이고 기본값이 , 로 연결되어 있으면 , 를 기준으로 explode하여 배열로 만든다 -->
<!--@if(in_array($val->type,array('select','checkbox'))&&strpos($val->default,",")!==false)-->
{@ $val->default = explode(',',$val->default) }
<!--// type=select,checkbox이고 기본값이 , 로 연결되어 있으면 배열로 만든다 -->
<!--@if(in_array($val->type, array('select', 'checkbox')))-->
{@ $val->default = explode(',', $val->default) }
<!--@end-->
<!-- 확장변수의 이름을 지정 -->
<!--// 확장변수의 이름을 지정 -->
{@ $val->column_name = "extra_vars".$key}
<!-- 확장변수의 값을 documentItem::getExtraValue로 가져옴 -->
<!--// 확장변수의 값을 documentItem::getExtraValue로 가져옴 -->
{@ $val->value = $oDocument->getExtraValue($key)}
<!-- 일반 text -->
<!--// 일반 text -->
<!--@if($val->type == 'text')-->
<input type="text" name="{$val->column_name}" value="{htmlspecialchars($val->value)}" class="inputTypeText w400" />
<!-- 홈페이지 주소 -->
<!--// 홈페이지 주소 -->
<!--@elseif($val->type == 'homepage')-->
<input type="text" name="{$val->column_name}" value="{htmlspecialchars($val->value)}" class="inputTypeText w400" />
@ -41,17 +41,17 @@
<!--@elseif($val->type == 'email_address')-->
<input type="text" name="{$val->column_name}" value="{htmlspecialchars($val->value)}" class="inputTypeText w400" />
<!-- 전화번호 -->
<!--// 전화번호 -->
<!--@elseif($val->type == 'tel')-->
<input type="text" name="{$val->column_name}" value="{htmlspecialchars($val->value[0])}" size="4" class="inputTypeText" />
<input type="text" name="{$val->column_name}" value="{htmlspecialchars($val->value[1])}" size="4" class="inputTypeText" />
<input type="text" name="{$val->column_name}" value="{htmlspecialchars($val->value[2])}" size="4" class="inputTypeText" />
<!-- textarea -->
<!--// textarea -->
<!--@elseif($val->type == 'textarea')-->
<textarea name="{$val->column_name}" class="inputTypeTextArea w400">{htmlspecialchars($val->value)}</textarea>
<!-- 다중 선택 -->
<!--// 다중 선택 -->
<!--@elseif($val->type == 'checkbox')-->
<!--@if($val->default)-->
<ul>
@ -61,7 +61,7 @@
</ul>
<!--@end-->
<!-- 단일 선택 -->
<!--// 단일 선택 -->
<!--@elseif($val->type == 'select')-->
<select name="{$val->column_name}">
<!--@if($val->default)-->
@ -71,7 +71,7 @@
<!--@end-->
</select>
<!-- 날짜 입력 -->
<!--// 날짜 입력 -->
<!--@elseif($val->type == 'date')-->
<input type="hidden" name="{$val->column_name}" id="date_{$val->column_name}" value="{$val->value}" />
<div class="display_date" id="str_{$val->column_name}">{zdate($val->value,"Y-m-d")}</div>

View file

@ -1,17 +1,17 @@
<!-- 이 파일은 extra_vars의 결과값을 출력하는 파일이며 다른 스킨에서 그대로 가져가서 css만 바꾸어 주면 된다 -->
<!--// 이 파일은 extra_vars의 결과값을 출력하는 파일이며 다른 스킨에서 그대로 가져가서 css만 바꾸어 주면 된다 -->
<!-- 확장변수의 이름을 지정 -->
<!--// 확장변수의 이름을 지정 -->
{@ $val->column_name = "extra_vars".$key}
<!-- 확장변수의 값을 documentItem::getExtraValue로 가져옴 -->
<!--// 확장변수의 값을 documentItem::getExtraValue로 가져옴 -->
{@ $val->value = $oDocument->getExtraValue($key)}
{@ $_tmp_value = array(); }
<!-- 일반 text -->
<!--// 일반 text -->
<!--@if($val->type == 'text')-->
{htmlspecialchars($val->value)}
<!-- 홈페이지 주소 -->
<!--// 홈페이지 주소 -->
<!--@elseif($val->type == 'homepage')-->
<!--@if($val->value)-->
<a href="{htmlspecialchars($val->value)}" onclick="window.open(this.href);return false;">{$val->value}</a>
@ -19,7 +19,7 @@
&nbsp;
<!--@end-->
<!-- Email 주소 -->
<!--// Email 주소 -->
<!--@elseif($val->type == 'email_address')-->
<!--@if($val->value)-->
<a href="mailto:{htmlspecialchars($val->value)}">{$val->value}</a>
@ -27,7 +27,7 @@
&nbsp;
<!--@end-->
<!-- 전화번호 -->
<!--// 전화번호 -->
<!--@elseif($val->type == 'tel')-->
{htmlspecialchars($val->value[0])}
<!--@if($val->value[1])-->-<!--@end-->
@ -36,12 +36,12 @@
{htmlspecialchars($val->value[2])}
&nbsp;
<!-- textarea -->
<!--// textarea -->
<!--@elseif($val->type == 'textarea')-->
{nl2br(htmlspecialchars($val->value))}
&nbsp;
<!-- 다중 선택 -->
<!--// 다중 선택 -->
<!--@elseif($val->type == 'checkbox')-->
<!--@if(!is_array($val->value))-->{@ $val->value = array($val->value) }<!--@end-->
<!--@foreach($val->value as $v)-->
@ -50,12 +50,12 @@
{implode(",",$_tmp_value)}
&nbsp;
<!-- 단일 선택 -->
<!--// 단일 선택 -->
<!--@elseif($val->type == 'select')-->
{htmlspecialchars($val->value)}
&nbsp;
<!-- 날짜 입력 -->
<!--// 날짜 입력 -->
<!--@elseif($val->type == 'date')-->
{zdate($val->value,"Y-m-d")}
&nbsp;

View file

@ -1,11 +1,11 @@
<!-- JS 파일 로드 -->
<!--// JS 파일 로드 -->
<!--%import("js/board.js")-->
<!-- 컬러셋 체크 -->
<!--// 컬러셋 체크 -->
<!--@if(!$module_info->colorset)-->
{@$module_info->colorset = "white"}
<!--@end-->
<!-- CSS 파일 로드 (컬러셋에 따라서) -->
<!--// CSS 파일 로드 (컬러셋에 따라서) -->
<!--%import("css/common.css")-->
<!--@if($module_info->colorset == "cyan")--> <!--%import("css/cyan.css")-->
@ -16,17 +16,17 @@
<!--@else--> <!--%import("css/white.css")-->
<!--@end-->
<!-- 스킨 설정중 새글의 시간 설정 값이 없으면 임의로 지정 -->
<!--// 스킨 설정중 새글의 시간 설정 값이 없으면 임의로 지정 -->
<!--@if(!$module_info->duration_new = (int)$module_info->duration_new)-->
{@ $module_info->duration_new = 12 }
<!--@end-->
<!-- 스킨 설정중 썸네일 관련 항목을 지정 -->
<!--// 스킨 설정중 썸네일 관련 항목을 지정 -->
<!--@if(!$module_info->thumbnail_type)-->{@ $module_info->thumbnail_type = 'crop'; }<!--@end-->
<!--@if(!$module_info->thumbnail_width)-->{@ $module_info->thumbnail_width = 100; }<!--@end-->
<!--@if(!$module_info->thumbnail_height)-->{@ $module_info->thumbnail_height = 100; }<!--@end-->
<!-- 정렬에 따른 아이콘 미리 지정 -->
<!--// 정렬에 따른 아이콘 미리 지정 -->
<!--@if($order_type == "desc")-->
{@ $order_icon = "buttonDescending.gif" }
{@ $order_type = "asc"; }
@ -35,7 +35,7 @@
{@ $order_type = "desc"; }
<!--@end-->
<!-- 사용자가 선택한 게시판 형태에 따른 설정(포럼형은 적용 안됨) -->
<!--// 사용자가 선택한 게시판 형태에 따른 설정(포럼형은 적용 안됨) -->
<!--@if($module_info->default_style != 'forum' && $module_info->default_style != 'blog')-->
<!--@if($listStyle=='gallery')-->
{@ $module_info->default_style = 'gallery'}
@ -46,10 +46,10 @@
<!--@end-->
<!--@end-->
<!-- 상단 텍스트 출력 -->
<!--// 상단 텍스트 출력 -->
{$module_info->header_text}
<!-- 블로그 스킨이 아닐 경우 스킨의 제목/간단한 설명 출력 -->
<!-- 스킨의 제목/간단한 설명 출력 -->
<!--@if($module_info->title)-->
<div class="boardHeader">
<div class="boardHeaderBorder">
@ -75,26 +75,26 @@
<!-- 로그인 정보 -->
<ul class="accountNavigation">
<!-- 로그인 되어 있을 경우 -->
<!--// 로그인 되어 있을 경우 -->
<!--@if($is_logged)-->
<!-- 관리자이면 설정 버튼 출력 -->
<!--// 관리자이면 설정 버튼 출력 -->
<!--@if($grant->is_admin && $module_info->display_setup_button != 'N')-->
<li class="setup"><a href="{getUrl('act','dispBoardAdminBoardInfo')}">{$lang->cmd_setup}</a></li>
<!--@end-->
<!-- 최고관리자이면 관리자 페이지 버튼 출력 -->
<!--// 최고관리자이면 관리자 페이지 버튼 출력 -->
<!--@if($logged_info->is_admin == 'Y' && $module_info->display_setup_button != 'N')-->
<li class="admin"><a href="{getUrl('','module','admin','act','dispBoardAdminContent')}" onclick="window.open(this.href); return false;">{$lang->cmd_management}</a></li>
<!--@end-->
<!-- 회원정보 버튼 출력 -->
<!--// 회원정보 버튼 출력 -->
<!--@if($module_info->display_login_info != 'N')-->
<li class="myInfo"><a href="{getUrl('act','dispMemberInfo')}">{$lang->cmd_view_member_info}</a></li>
<li class="loginAndLogout"><a href="{getUrl('act','dispMemberLogout')}">{$lang->cmd_logout}</a></li>
<!--@end-->
<!-- 로그인 되어 있지 않고 회원정보 버튼 출력하도록 되어있으면 -->
<!--// 로그인 되어 있지 않고 회원정보 버튼 출력하도록 되어있으면 -->
<!--@elseif(!$is_logged && $module_info->display_login_info != 'N')-->
<li class="join"><a href="{getUrl('act','dispMemberSignUpForm')}">{$lang->cmd_signup}</a></li>
<li class="loginAndLogout"><a href="{getUrl('act','dispMemberLoginForm')}">{$lang->cmd_login}</a></li>
@ -108,7 +108,7 @@
<li class="tag_info"><a href="{getUrl('act','dispBoardTagList')}"><img src="./images/{$module_info->colorset}/iconAllTags.gif" alt="Tag list" width="13" height="13"/></a></li>
<!-- 목록형태 (포럼형/ 블로그형이 기본으로 되어 있을 경우 다른 형태를 지정 못하게 함) -->
<!--// 목록형태 (포럼형/ 블로그형이 기본으로 되어 있을 경우 다른 형태를 지정 못하게 함) -->
<!--@if($module_info->default_style != 'forum' && $module_info->default_style != 'blog')-->
<li class="listType"><a href="{getUrl('listStyle','list','act','','document_srl','')}"><img src="./images/{$module_info->colorset}/typeList.gif" border="0" width="13" height="13" alt="List" /></a></li>
<li class="listType"><a href="{getUrl('listStyle','webzine','act','','document_srl','')}"><img src="./images/{$module_info->colorset}/typeWebzine.gif" border="0" width="13" height="13" alt="Webzine" /></a></li>

View file

@ -1,17 +1,17 @@
<!-- header.html include -->
<!--// header.html include -->
<!--#include("header.html")-->
<!-- 검색을 위한 xml filter import-->
<!--// 검색을 위한 xml filter import-->
<!--%import("filter/search.xml")-->
<!-- 선택된 게시물이 있고 권한이 있으면 내용 출력 -->
<!--// 선택된 게시물이 있고 권한이 있으면 내용 출력 -->
<!--@if($oDocument->isExists() && $module_info->default_style != 'blog')-->
<div class="viewDocument">
<!--#include("./view_document.html")-->
</div>
<!--@end-->
<!-- 목록 출력 -->
<!--// 목록 출력 -->
<!--@if($module_info->default_style == 'webzine')-->
<!--#include("./style.webzine.html")-->
<!--@elseif($module_info->default_style == 'gallery')-->

View file

@ -1,77 +1,81 @@
<?xml version="1.0" encoding="utf-8"?>
<skin>
<?xml version="1.0" encoding="UTF-8"?>
<skin version="0.2">
<title xml:lang="ko">제로보드XE 게시판 기본 스킨</title>
<title xml:lang="jp">ゼロボードXE掲示板のデフォルトスキン</title>
<title xml:lang="zh-CN">Zeroboard XE版面默认皮肤</title>
<title xml:lang="en">ZeroboardXE Basic Board Skin</title>
<title xml:lang="es">ZeroboardXE Basic Board Skin</title>
<maker email_address="zero@zeroboard.com" link="http://www.zeroboard.com" date="2007. 10. 22">
<title xml:lang="es">ZeroboardXE Basic Board Skin</title>
<description xml:lang="ko">
제로보드XE 게시판의 기본 스킨입니다.
디자인 : 서기정 (http://blog.naver.com/addcozy)
HTML/CSS : 정찬명 (http://naradesign.net)
</description>
<description xml:lang="jp">
ゼロボードXE掲示板の デフォルトスキンです。
デザイン:ソギジョン (http://blog.naver.com/addcozy)
HTML/CSSジョンチャンミョン (http://naradesign.net)
</description>
<description xml:lang="zh-CN">
Zeroboard XE版面默认皮肤。
设计 : Ki-Jeong Seo (http://blog.naver.com/addcozy)
HTML/CSS : Chan-Myung Jeong (http://naradesign.net)
</description>
<description xml:lang="en">
This is the basic board skin of Zeroboard XE.
Design : Ki-Jeong Seo (http://blog.naver.com/addcozy)
HTML/CSS : Chan-Myung Jeong (http://naradesign.net)
</description>
<description xml:lang="es">
Esta es la base bordo de la piel de Zeroboard XE.
Diseño: Ki-Jeong Seo (http://blog.naver.com/addcozy)
HTML / CSS: Jeong Chan-Myung (http://naradesign.net)
</description>
<version>0.1</version>
<date>2007-10-22</date>
<author email_address="zero@zeroboard.com" link="http://www.zeroboard.com">
<name xml:lang="ko">zero</name>
<name xml:lang="jp">zero</name>
<name xml:lang="zh-CN">Zero</name>
<name xml:lang="en">zero</name>
<name xml:lang="es">zero</name>
<description xml:lang="ko">
제로보드XE 게시판의 기본 스킨입니다.
디자인 : 서기정 (http://blog.naver.com/addcozy)
HTML/CSS : 정찬명 (http://naradesign.net)
</description>
<description xml:lang="jp">
ゼロボードXE掲示板の デフォルトスキンです。
デザイン:ソギジョン (http://blog.naver.com/addcozy)
HTML/CSSジョンチャンミョン (http://naradesign.net)
</description>
<description xml:lang="zh-CN">
Zeroboard XE版面默认皮肤。
设计 : Ki-Jeong Seo (http://blog.naver.com/addcozy)
HTML/CSS : Chan-Myung Jeong (http://naradesign.net)
</description>
<description xml:lang="en">
This is the basic board skin of Zeroboard XE.
Design : Ki-Jeong Seo (http://blog.naver.com/addcozy)
HTML/CSS : Chan-Myung Jeong (http://naradesign.net)
</description>
<description xml:lang="es">
Esta es la base bordo de la piel de Zeroboard XE.
Diseño: Ki-Jeong Seo (http://blog.naver.com/addcozy)
HTML / CSS: Jeong Chan-Myung (http://naradesign.net)
</description>
</maker>
<name xml:lang="es">zero</name>
</author>
<colorset>
<color name="white" src="screenshot/white.gif">
<title xml:lang="ko">하얀색(기본)</title>
<title xml:lang="jp">白(デフォルト)</title>
<title xml:lang="zh-CN">白色(基本)</title>
<title xml:lang="en">White (default)</title>
<title xml:lang="es">Blanco (por defecto)</title>
<title xml:lang="es">Blanco (por defecto)</title>
</color>
<color name="cyan" src="screenshot/cyan.gif">
<title xml:lang="ko">청록색</title>
<title xml:lang="jp">青緑</title>
<title xml:lang="zh-CN">青绿色</title>
<title xml:lang="en">Cyan</title>
<title xml:lang="es">Cian</title>
<title xml:lang="es">Cian</title>
</color>
<color name="green" src="screenshot/green.gif">
<title xml:lang="ko">초록색</title>
<title xml:lang="jp"></title>
<title xml:lang="zh-CN">绿色</title>
<title xml:lang="en">Green</title>
<title xml:lang="es">Verde</title>
<title xml:lang="es">Verde</title>
</color>
<color name="red" src="screenshot/red.gif">
<title xml:lang="ko">빨간색</title>
<title xml:lang="jp"></title>
<title xml:lang="zh-CN">红色</title>
<title xml:lang="en">Red</title>
<title xml:lang="es">Roja</title>
<title xml:lang="es">Roja</title>
</color>
<color name="purple" src="screenshot/purple.gif">
<title xml:lang="ko">보라색</title>
<title xml:lang="jp"></title>
<title xml:lang="zh-CN">紫色</title>
<title xml:lang="en">Purple</title>
<title xml:lang="es">Púrpura</title>
<title xml:lang="es">Púrpura</title>
</color>
<color name="black" src="screenshot/black.gif">
<title xml:lang="ko">검은색</title>
@ -82,13 +86,14 @@
<title xml:lang="zh-CN">黑色</title>
</color>
</colorset>
<extra_vars>
<var name="default_style" type="select">
<title xml:lang="ko">기본 형태</title>
<title xml:lang="jp">デフォルトスタイル</title>
<title xml:lang="zh-CN">默认样式</title>
<title xml:lang="en">Default Form</title>
<title xml:lang="es">Formulario por defecto</title>
<title xml:lang="es">Formulario por defecto</title>
<description xml:lang="ko">
목록형, 웹진형, 갤러리형, 포럼형의 기본 스타일을 지정할 수 있습니다.
포럼형 스타일은 정렬대상을 updated로 하셔야 합니다.
@ -101,19 +106,49 @@
可以把版面指定为默认的目录型,网络杂志型,相册型及论坛型。
当使用论坛型的时候请把排列对象设置为updated。
</description>
<description xml:lang="en">
<description xml:lang="en">
You may select default styles such as list style, webzine style, gallery stylz or forum style.
Align Target for forum style is required to be selected as 'updated'.
</description>
<description xml:lang="es">
<description xml:lang="es">
Usted puede seleccionar por defecto los estilos como el estilo de lista, estilo webzine, galería stylz o estilo foro.
Alinear Meta para el foro estilo es necesaria para ser seleccionado como 'actualización'.
</description>
<default>list</default>
<default>webzine</default>
<default>gallery</default>
<default>blog</default>
<default>forum</default>
<options value="list">
<title xml:lang="ko">목록</title>
<title xml:lang="en">list</title>
<title xml:lang="jp">list</title>
<title xml:lang="zh-CN">list</title>
<title xml:lang="es">list</title>
</options>
<options value="webzine">
<title xml:lang="ko">웹진</title>
<title xml:lang="en">webzine</title>
<title xml:lang="jp">webzine</title>
<title xml:lang="zh-CN">webzine</title>
<title xml:lang="es">webzine</title>
</options>
<options value="gallery">
<title xml:lang="ko">갤러리</title>
<title xml:lang="en">gallery</title>
<title xml:lang="jp">gallery</title>
<title xml:lang="zh-CN">gallery</title>
<title xml:lang="es">gallery</title>
</options>
<options value="forum">
<title xml:lang="ko">포럼</title>
<title xml:lang="en">forum</title>
<title xml:lang="jp">forum</title>
<title xml:lang="zh-CN">forum</title>
<title xml:lang="es">forum</title>
</options>
<options value="blog">
<title xml:lang="ko">블로그</title>
<title xml:lang="en">blog</title>
<title xml:lang="jp">blog</title>
<title xml:lang="zh-CN">blog</title>
<title xml:lang="es">blog</title>
</options>
</var>
<var name="display_login_info" type="select">
<title xml:lang="ko">로그인 정보 출력</title>
@ -121,8 +156,20 @@
<title xml:lang="jp">ログイン情報表示</title>
<title xml:lang="en">Display Login Info</title>
<title xml:lang="es">Muestra la información de la conección</title>
<default>Y</default>
<default>N</default>
<options value="Y">
<title xml:lang="ko">출력</title>
<title xml:lang="en">display</title>
<title xml:lang="jp">display</title>
<title xml:lang="zh-CN">display</title>
<title xml:lang="es">display</title>
</options>
<options value="N">
<title xml:lang="ko">출력하지 않음</title>
<title xml:lang="en">not display</title>
<title xml:lang="jp">not display</title>
<title xml:lang="zh-CN">not display</title>
<title xml:lang="es">not display</title>
</options>
<description />
</var>
<var name="display_setup_button" type="select">
@ -131,8 +178,20 @@
<title xml:lang="jp">設定表示</title>
<title xml:lang="en">Display Setup</title>
<title xml:lang="es">Muestra la información de la Configuración</title>
<default>Y</default>
<default>N</default>
<options value="Y">
<title xml:lang="ko">출력</title>
<title xml:lang="en">display</title>
<title xml:lang="jp">display</title>
<title xml:lang="zh-CN">display</title>
<title xml:lang="es">display</title>
</options>
<options value="N">
<title xml:lang="ko">출력하지 않음</title>
<title xml:lang="en">not display</title>
<title xml:lang="jp">not display</title>
<title xml:lang="zh-CN">not display</title>
<title xml:lang="es">not display</title>
</options>
<description />
</var>
<var name="title" type="text">
@ -140,56 +199,68 @@
<title xml:lang="jp">掲示板タイトル</title>
<title xml:lang="zh-CN">版面标题</title>
<title xml:lang="en">Title of Board</title>
<title xml:lang="es">Title of Board</title>
<title xml:lang="es">Title of Board</title>
<description xml:lang="ko">게시판의 제목을 적어주세요.</description>
<description xml:lang="jp">掲示板タイトルを入力してください。</description>
<description xml:lang="zh-CN">请输入版面标题(留空为不显示)。</description>
<description xml:lang="en">Plase input the title of board.</description>
<description xml:lang="es">Plase input the title of board.</description>
<description xml:lang="es">Plase input the title of board.</description>
</var>
<var name="sub_title" type="text">
<title xml:lang="ko">게시판 부제목</title>
<title xml:lang="jp">掲示板サブタイトル</title>
<title xml:lang="zh-CN">版面副标题</title>
<title xml:lang="en">Subtitle of Board</title>
<description lang="ko">게시판 제목 옆에 나타날 부제목을 적어주세요.</description>
<description lang="jp">掲示板タイトルの横に表示されるサブタイトルを入力してください。</description>
<description lang="zh-CN">请输入版面副标题(留空为不显示)。</description>
<description lang="en">Please input the subtitle of board which will be displayed beside of board title.</description>
<description lang="es">Please input the subtitle of board which will be displayed beside of board title.</description>
<description xml:lang="ko">게시판 제목 옆에 나타날 부제목을 적어주세요.</description>
<description xml:lang="jp">掲示板タイトルの横に表示されるサブタイトルを入力してください。</description>
<description xml:lang="zh-CN">请输入版面副标题(留空为不显示)。</description>
<description xml:lang="en">Please input the subtitle of board which will be displayed beside of board title.</description>
<description xml:lang="es">Please input the subtitle of board which will be displayed beside of board title.</description>
</var>
<var name="comment" type="textarea">
<title xml:lang="ko">게시판 상세 설명</title>
<title xml:lang="jp">掲示板の詳細</title>
<title xml:lang="zh-CN">版面详细说明</title>
<title xml:lang="en">Description of Board</title>
<title xml:lang="es">Description of Board</title>
<description lang="ko">게시판 제목 아래 표시될 설명을 입력하실 수 있습니다.</description>
<description lang="jp">掲示板タイトルの下に表示される説明文を入力してください。</description>
<description lang="zh-CN">请输入版面说明(留空为不显示)。</description>
<description lang="en">You may input description which will be displayed under the board title.</description>
<description lang="es">You may input description which will be displayed under the board title.</description>
<title xml:lang="es">Description of Board</title>
<description xml:lang="ko">게시판 제목 아래 표시될 설명을 입력하실 수 있습니다.</description>
<description xml:lang="jp">掲示板タイトルの下に表示される説明文を入力してください。</description>
<description xml:lang="zh-CN">请输入版面说明(留空为不显示)。</description>
<description xml:lang="en">You may input description which will be displayed under the board title.</description>
<description xml:lang="es">You may input description which will be displayed under the board title.</description>
</var>
<var name="subject_cut_size" type="text">
<title xml:lang="ko">제목 글자수</title>
<title xml:lang="jp">タイトルの文字数</title>
<title xml:lang="zh-CN">标题字数</title>
<title xml:lang="en">Length of Subject</title>
<title xml:lang="es">Length of Subject</title>
<description lang="ko">제목 글자수를 지정할 수 있습니다. (0또는 비워주시면 자르지 않습니다)</description>
<description lang="jp">タイトルの文字数が指定できます「0」または空欄の場合は、文字数を制限しません</description>
<description lang="zh-CN">可以指定标题字数(0或留空为不限)。</description>
<description lang="en">You may set length of title. (0 or blank value will not restrict the length)</description>
<description lang="es">You may set length of title. (0 or blank value will not restrict the length)</description>
<title xml:lang="es">Length of Subject</title>
<description xml:lang="ko">제목 글자수를 지정할 수 있습니다. (0또는 비워주시면 자르지 않습니다)</description>
<description xml:lang="jp">タイトルの文字数が指定できます「0」または空欄の場合は、文字数を制限しません</description>
<description xml:lang="zh-CN">可以指定标题字数(0或留空为不限)。</description>
<description xml:lang="en">You may set length of title. (0 or blank value will not restrict the length)</description>
<description xml:lang="es">You may set length of title. (0 or blank value will not restrict the length)</description>
</var>
<var name="display_number" type="select">
<title xml:lang="ko">번호 표시</title>
<title xml:lang="jp">番号表示</title>
<title xml:lang="zh-CN">显示编号</title>
<title xml:lang="en">Dispay Number</title>
<title xml:lang="es">Dispay Number</title>
<default>Y</default>
<default>N</default>
<title xml:lang="es">Dispay Number</title>
<options value="Y">
<title xml:lang="ko">출력</title>
<title xml:lang="en">display</title>
<title xml:lang="jp">display</title>
<title xml:lang="zh-CN">display</title>
<title xml:lang="es">display</title>
</options>
<options value="N">
<title xml:lang="ko">출력하지 않음</title>
<title xml:lang="en">not display</title>
<title xml:lang="jp">not display</title>
<title xml:lang="zh-CN">not display</title>
<title xml:lang="es">not display</title>
</options>
<description />
</var>
<var name="display_author" type="select">
@ -197,9 +268,21 @@
<title xml:lang="jp">投稿者表示</title>
<title xml:lang="zh-CN">显示昵称</title>
<title xml:lang="en">Display Author</title>
<title xml:lang="es">Display Author</title>
<default>Y</default>
<default>N</default>
<title xml:lang="es">Display Author</title>
<options value="Y">
<title xml:lang="ko">출력</title>
<title xml:lang="en">display</title>
<title xml:lang="jp">display</title>
<title xml:lang="zh-CN">display</title>
<title xml:lang="es">display</title>
</options>
<options value="N">
<title xml:lang="ko">출력하지 않음</title>
<title xml:lang="en">not display</title>
<title xml:lang="jp">not display</title>
<title xml:lang="zh-CN">not display</title>
<title xml:lang="es">not display</title>
</options>
<description />
</var>
<var name="display_regdate" type="select">
@ -207,9 +290,21 @@
<title xml:lang="jp">作成日表示</title>
<title xml:lang="zh-CN">显示发表日期</title>
<title xml:lang="en">Display Registered Date</title>
<title xml:lang="es">Display Registered Date</title>
<default>Y</default>
<default>N</default>
<title xml:lang="es">Display Registered Date</title>
<options value="Y">
<title xml:lang="ko">출력</title>
<title xml:lang="en">display</title>
<title xml:lang="jp">display</title>
<title xml:lang="zh-CN">display</title>
<title xml:lang="es">display</title>
</options>
<options value="N">
<title xml:lang="ko">출력하지 않음</title>
<title xml:lang="en">not display</title>
<title xml:lang="jp">not display</title>
<title xml:lang="zh-CN">not display</title>
<title xml:lang="es">not display</title>
</options>
<description />
</var>
<var name="display_readed_count" type="select">
@ -217,9 +312,21 @@
<title xml:lang="jp">照合数表示</title>
<title xml:lang="zh-CN">显示查看</title>
<title xml:lang="en">Display Hit</title>
<title xml:lang="es">Display Hit</title>
<default>Y</default>
<default>N</default>
<title xml:lang="es">Display Hit</title>
<options value="Y">
<title xml:lang="ko">출력</title>
<title xml:lang="en">display</title>
<title xml:lang="jp">display</title>
<title xml:lang="zh-CN">display</title>
<title xml:lang="es">display</title>
</options>
<options value="N">
<title xml:lang="ko">출력하지 않음</title>
<title xml:lang="en">not display</title>
<title xml:lang="jp">not display</title>
<title xml:lang="zh-CN">not display</title>
<title xml:lang="es">not display</title>
</options>
<description />
</var>
<var name="display_voted_count" type="select">
@ -227,47 +334,101 @@
<title xml:lang="jp">推薦数表示</title>
<title xml:lang="zh-CN">显示推荐</title>
<title xml:lang="en">Display Votes</title>
<title xml:lang="es">Display Votes</title>
<default>Y</default>
<default>N</default>
<title xml:lang="es">Display Votes</title>
<options value="Y">
<title xml:lang="ko">출력</title>
<title xml:lang="en">display</title>
<title xml:lang="jp">display</title>
<title xml:lang="zh-CN">display</title>
<title xml:lang="es">display</title>
</options>
<options value="N">
<title xml:lang="ko">출력하지 않음</title>
<title xml:lang="en">not display</title>
<title xml:lang="jp">not display</title>
<title xml:lang="zh-CN">not display</title>
<title xml:lang="es">not display</title>
</options>
<description />
</var>
<var name="display_ip_address" type="select">
<title xml:lang="ko">아이피주소 표시</title>
<title xml:lang="en">Display ip address</title>
<title xml:lang="jp">Display ip address</title>
<title xml:lang="zh-CN">Display ip address</title>
<title xml:lang="es-CN">Display ip address</title>
<options value="Y">
<title xml:lang="ko">출력</title>
<title xml:lang="en">display</title>
<title xml:lang="jp">display</title>
<title xml:lang="zh-CN">display</title>
<title xml:lang="es">display</title>
</options>
<options value="N">
<title xml:lang="ko">출력하지 않음</title>
<title xml:lang="en">not display</title>
<title xml:lang="jp">not display</title>
<title xml:lang="zh-CN">not display</title>
<title xml:lang="es">not display</title>
</options>
</var>
<var name="display_last_update" type="select">
<title xml:lang="ko">최근 변경시간 표시</title>
<title xml:lang="jp">最近の変更時間表示</title>
<title xml:lang="zh-CN">显示最后更新时间</title>
<title xml:lang="en">Display Latest Update</title>
<title xml:lang="es">Display Latest Update</title>
<default>N</default>
<default>Y</default>
<title xml:lang="es">Display Latest Update</title>
<options value="Y">
<title xml:lang="ko">출력</title>
<title xml:lang="en">display</title>
<title xml:lang="jp">display</title>
<title xml:lang="zh-CN">display</title>
<title xml:lang="es">display</title>
</options>
<options value="N">
<title xml:lang="ko">출력하지 않음</title>
<title xml:lang="en">not display</title>
<title xml:lang="jp">not display</title>
<title xml:lang="zh-CN">not display</title>
<title xml:lang="es">not display</title>
</options>
<description />
</var>
<var name="duration_new" type="text">
<var name="duration_new" type="text" default="24">
<title xml:lang="ko">new표시 시간 (hours)</title>
<title xml:lang="jp">Newの表示時間 (Hours)</title>
<title xml:lang="zh-CN">new图标显示时间(hours)</title>
<title xml:lang="en">Duration of indication for new item</title>
<title xml:lang="es">Duration of indication for new item</title>
<title xml:lang="es">Duration of indication for new item</title>
<description xml:lang="ko">새로 등록된 게시물의 new 표시시간을 정할 수 있습니다. </description>
<description xml:lang="jp">新しく登録された書き込みに対して「New」の表示時間を設定します。 </description>
<description xml:lang="zh-CN">可以设置最新更新主题的new图标显示时间。</description>
<description xml:lang="en">You may set the duration of indication for fresh item. </description>
<description xml:lang="es">You may set the duration of indication for fresh item. </description>
<default>24</default>
<description xml:lang="es">You may set the duration of indication for fresh item. </description>
</var>
<var name="thumbnail_type" type="select">
<title xml:lang="ko">썸네일 생성 방법</title>
<title xml:lang="jp">サムネール生成方法</title>
<title xml:lang="zh-CN">缩略图生成方式</title>
<title xml:lang="en">Type of Thumbnail</title>
<description xml:lang="ko">썸네일 생성 방법을 선택할 수 있습니다. (crop : 꽉 채우기, ratio : 비율 맞추기)</description>
<description xml:lang="jp">サムネールの生成方法を選択します(Crop : トリミング, Ratio : 比率)。</description>
<description xml:lang="zh-CN">可以选择缩略图生成方式(crop : 裁减, ratio : 比例)。</description>
<description xml:lang="en">Choose the type to create the thumnail. (crop / ratio)</description>
<default>crop</default>
<default>ratio</default>
<description xml:lang="ko">썸네일 생성 방법을 선택할 수 있습니다.</description>
<description xml:lang="jp">サムネールの生成方法を選択します。</description>
<description xml:lang="zh-CN">可以选择缩略图生成方式。</description>
<description xml:lang="en">Choose the type to create the thumnail.</description>
<options value="crop">
<title xml:lang="ko">꽉 채우기</title>
<title xml:lang="jp">トリミング</title>
<title xml:lang="zh-CN">裁减</title>
<title xml:lang="en">crop</title>
</options>
<options value="ratio">
<title xml:lang="ko">비율 맞추기</title>
<title xml:lang="jp">比率</title>
<title xml:lang="zh-CN">比例</title>
<title xml:lang="en">ratio</title>
</options>
</var>
<var name="thumbnail_width" type="text">
<var name="thumbnail_width" type="text" default="100">
<title xml:lang="ko">썸네일 가로크기</title>
<title xml:lang="jp">サムネールの横幅</title>
<title xml:lang="zh-CN">缩略图宽度</title>
@ -276,9 +437,8 @@
<description xml:lang="jp">サムネールの横幅を指定します(デフォルト 100px)。</description>
<description xml:lang="zh-CN">可以指定缩略图宽度(默认为 100px)。</description>
<description xml:lang="en">Set the width of thumbnail. Default is 100px.</description>
<default>100</default>
</var>
<var name="thumbnail_height" type="text">
<var name="thumbnail_height" type="text" default="100">
<title xml:lang="ko">썸네일 세로크기</title>
<title xml:lang="jp">サムネールの縦幅</title>
<title xml:lang="zh-CN">缩略图高度</title>
@ -286,8 +446,7 @@
<description xml:lang="ko">썸네일의 세로 크기를 지정할 수 있습니다. (기본 100px)</description>
<description xml:lang="jp">サムネールの縦幅を指定します(デフォルト 100px)。</description>
<description xml:lang="zh-CN">可以指定缩略图高度(默认为 100px)。</description>
<description xml:lang="en">Set the height of thumbnail. Default is 100px.</description>
<default>100</default>
<description xml:lang="en">Set the height of thumbnail. Default is 100px.</description>
</var>
</extra_vars>
</skin>

View file

@ -9,7 +9,7 @@
</div>
<!--@end-->
<!-- 글이 선택되어 있거나 검색어가 있으면 목록을 출력 -->
<!--// 글이 선택되어 있거나 검색어가 있으면 목록을 출력 -->
<!--#include("./style.list.html")-->
<!--@elseif($oDocument->isExists())-->
@ -20,7 +20,7 @@
<!--@else-->
<!-- 공지사항 -->
<!--// 공지사항 -->
<!--@if($notice_list)-->
<div class="blogNotice">
<!--@foreach($notice_list as $no => $document)-->
@ -42,7 +42,7 @@
</div>
<!--@end-->
<!-- 일반글 -->
<!--// 일반글 -->
<!--@foreach($document_list as $no => $oDocument)-->
<div class="viewDocument">
<!--#include("./view_document.html")-->

View file

@ -2,26 +2,20 @@
<form action="./" method="get">
<table cellspacing="0" summary="" class="boardList">
<!--@if($grant->is_admin)--><col width="30" /><!--@end-->
<col />
<col width="70" />
<col width="70" />
<col width="160" />
<thead>
{@ $no_line_class = " no_line" }
<tr>
<!--@if($grant->is_admin)-->
<th scope="col" class="checkbox{$no_line_class}">
<th scope="col" class="checkbox{$no_line_class}"><div>
<input type="checkbox" onclick="clickCheckBoxAll(this.form, 'cart'); return false;" />
</th>
</div></th>
{@ $no_line_class=""}
<!--@end-->
<th scope="col" class="topic{$no_line_class}">
<th scope="col" class="topic{$no_line_class}"><div>
<!--@if($module_info->use_category == "Y")-->
<!-- 카테고리 사용시 카테고리 선택 표시 -->
<!--// 카테고리 사용시 카테고리 선택 표시 -->
<select name="category" id="board_category">
<option value="">{$lang->category}</option>
<!--@foreach($category_list as $val)-->
@ -36,26 +30,26 @@
{$lang->topic}
<!--@end-->
</th>
</div></th>
<th class="reading" scope="col">
<th class="reading" scope="col"><div>
<a href="{getUrl('sort_index','comment_count','order_type',$order_type)}">{$lang->replies}<!--@if($sort_index=='comment_count')--><img src="./images/common/{$order_icon}" alt="" width="5" height="3" class="sort" /><!--@end--></a>
</th>
</div></th>
<th class="reading" scope="col">
<th class="reading" scope="col"><div>
<a href="{getUrl('sort_index','readed_count','order_type',$order_type)}">{$lang->readed_count}<!--@if($sort_index=='readed_count')--><img src="./images/common/{$order_icon}" alt="" width="5" height="3" class="sort" /><!--@end--></a>
</th>
</div></th>
<th scope="col" class="date">
<th scope="col" class="date"><div>
<a href="{getUrl('sort_index','last_update','order_type',$order_type)}">{$lang->last_post}<!--@if($sort_index=='last_update')--><img src="./images/common/{$order_icon}" alt="" width="5" height="3" class="sort" /><!--@end--></a>
</th>
</div></th>
</tr>
</thead>
<tbody>
<!--@if(!$document_list && !$notice_list)-->
<!-- 게시물이 없으면 등록된 글이 없음을 표시 -->
<!--// 게시물이 없으면 등록된 글이 없음을 표시 -->
<tr class="bg0 tCenter">
<td colspan="<!--@if($grant->is_admin)-->5<!--@else-->4<!--@end-->" class="title">
{$lang->no_documents}
@ -63,7 +57,7 @@
</tr>
<!--@else-->
<!-- 공지사항 출력 -->
<!--// 공지사항 출력 -->
<!--@foreach($notice_list as $no => $document)-->
<tr class="notice">
<!--@if($grant->is_admin)-->
@ -103,7 +97,7 @@
</tr>
<!--@end-->
<!-- 일반 글 출력 -->
<!--// 일반 글 출력 -->
<!--@foreach($document_list as $no => $document)-->
<tr class="bg{($no+1)%2+1}">
<!--@if($grant->is_admin)-->

View file

@ -2,12 +2,12 @@
<form action="./" method="get">
<!-- 정렬을 위한 속성과 분류 박스 -->
<!--// 정렬을 위한 속성과 분류 박스 -->
<div class="boardSubMenu">
<!--@if($module_info->use_category == "Y")-->
<div class="fl">
<!--@if($grant->is_admin)--><input type="checkbox" onclick="clickCheckBoxAll(this.form, 'cart'); return false;" /><!--@end-->
<!-- 카테고리 사용시 카테고리 선택 표시 -->
<!--// 카테고리 사용시 카테고리 선택 표시 -->
<select name="category" id="board_category">
<option value="">{$lang->category}</option>
<!--@foreach($category_list as $val)-->
@ -41,7 +41,7 @@
</table>
<!--@else-->
<!-- 공지사항 출력 -->
<!--// 공지사항 출력 -->
<!--@foreach($notice_list as $no => $document)-->
<table cellspacing="0" summary="" class="boardList boardListNoTopBorder">
<!--@if($module_info->display_number!='N')--><col width="80" />{@ $_col_count++}<!--@end-->
@ -83,7 +83,7 @@
</table>
<!--@end-->
<!-- 갤러리 목록 출력 -->
<!--// 갤러리 목록 출력 -->
{@ $height = $module_info->thumbnail_height + 50; }
<!--@if($module_info->use_category=='Y')-->{@ $height += 20 }<!--@end-->
<!--@if($module_info->display_author!='N' || $module_info->display_regdate!='N')-->{@ $height += 25 }<!--@end-->

View file

@ -1,29 +1,28 @@
<!-- 목록 출력 -->
{@ $_col_count = 1; }
<!--@if($module_info->display_number!='N')-->{@ $_col_count++}<!--@end-->
<!--@if($grant->is_admin)-->{@ $_col_count++}<!--@end-->
<!--@if($module_info->display_author!='N')-->{@ $_col_count++}<!--@end-->
<!--@if($module_info->display_readed_count!='N')-->{@ $_col_count++}<!--@end-->
<!--@if($module_info->display_voted_count!='N')-->{@ $_col_count++}<!--@end-->
<!--@if($module_info->display_regdate != 'N')-->{@ $_col_count++}<!--@end-->
<!--@if($module_info->display_last_update == 'Y')-->{@ $_col_count++}<!--@end-->
<form action="./" method="get">
<table cellspacing="0" summary="" class="boardList">
<!--@if($module_info->display_number!='N')--><col width="80" />{@ $_col_count++}<!--@end-->
<!--@if($grant->is_admin)--><col width="30" />{@ $_col_count++}<!--@end-->
<col />
<!--@if($module_info->display_author!='N')--><col width="120" />{@ $_col_count++}<!--@end-->
<!--@if($module_info->display_readed_count!='N')--><col width="70" />{@ $_col_count++}<!--@end-->
<!--@if($module_info->display_voted_count!='N')--><col width="70" />{@ $_col_count++}<!--@end-->
<!--@if($module_info->display_regdate != 'N')--><col width="90" />{@ $_col_count++}<!--@end-->
<!--@if($module_info->display_last_update == 'Y')--><col width="90" />{@ $_col_count++}<!--@end-->
<!--@if($_col_count>1)-->
<thead>
{@ $no_line_class = " no_line" }
<tr>
<!--@if($module_info->display_number!='N')--><th scope="col" class="num{$no_line_class}">{$lang->no}</th>{@ $no_line_class=""}<!--@end-->
<!--@if($module_info->display_number!='N')--><th scope="col" class="num{$no_line_class}"><div>{$lang->no}</div></th>{@ $no_line_class=""}<!--@end-->
<!--@if($grant->is_admin)--><th scope="col" class="checkbox{$no_line_class}"><input type="checkbox" onclick="clickCheckBoxAll(this.form, 'cart'); return false;" /></th>{@ $no_line_class=""}<!--@end-->
<th scope="col" class="<!--@if($module_info->use_category == 'Y')-->category<!--@else-->title<!--@end-->{$no_line_class}">
<th scope="col" class="<!--@if($module_info->use_category == 'Y')-->category<!--@else-->title<!--@end-->{$no_line_class}"><div>
<!--@if($module_info->use_category == "Y")-->
<!-- 카테고리 사용시 카테고리 선택 표시 -->
<!--// 카테고리 사용시 카테고리 선택 표시 -->
<select name="category" id="board_category">
<option value="">{$lang->category}</option>
<!--@foreach($category_list as $val)-->
@ -34,17 +33,17 @@
<!--@else-->
{$lang->title}
<!--@end-->
</th>
</div></th>
<!--@if($module_info->display_author!='N')--><th class="author" scope="col">{$lang->writer}</th><!--@end-->
<!--@if($module_info->display_author!='N')--><th class="author" scope="col"><div>{$lang->writer}</div></th><!--@end-->
<!--@if($module_info->display_readed_count!='N')--><th class="reading" scope="col"><a href="{getUrl('sort_index','readed_count','order_type',$order_type)}">{$lang->readed_count}<!--@if($sort_index=='readed_count')--><img src="./images/common/{$order_icon}" alt="" width="5" height="3" class="sort" /><!--@end--></a></th><!--@end-->
<!--@if($module_info->display_readed_count!='N')--><th class="reading" scope="col"><div><a href="{getUrl('sort_index','readed_count','order_type',$order_type)}">{$lang->readed_count}<!--@if($sort_index=='readed_count')--><img src="./images/common/{$order_icon}" alt="" width="5" height="3" class="sort" /><!--@end--></a></div></th><!--@end-->
<!--@if($module_info->display_voted_count!='N')--><th class="recommend" scope="col"><a href="{getUrl('sort_index','voted_count','order_type',$order_type)}">{$lang->voted_count}<!--@if($sort_index=='voted_count')--><img src="./images/common/{$order_icon}" alt="" width="5" height="3" class="sort" /><!--@end--></a></th><!--@end-->
<!--@if($module_info->display_voted_count!='N')--><th class="recommend" scope="col"><div><a href="{getUrl('sort_index','voted_count','order_type',$order_type)}">{$lang->voted_count}<!--@if($sort_index=='voted_count')--><img src="./images/common/{$order_icon}" alt="" width="5" height="3" class="sort" /><!--@end--></a></div></th><!--@end-->
<!--@if($module_info->display_regdate != 'N')--><th scope="col" class="date"><a href="{getUrl('sort_index','regdate','order_type',$order_type)}">{$lang->date}<!--@if($sort_index=='regdate')--><img src="./images/common/{$order_icon}" alt="" width="5" height="3" class="sort" /><!--@end--></a></th><!--@end-->
<!--@if($module_info->display_regdate != 'N')--><th scope="col" class="date"><div><a href="{getUrl('sort_index','regdate','order_type',$order_type)}">{$lang->date}<!--@if($sort_index=='regdate')--><img src="./images/common/{$order_icon}" alt="" width="5" height="3" class="sort" /><!--@end--></a></div></th><!--@end-->
<!--@if($module_info->display_last_update=='Y')--><th scope="col" class="date"><a href="{getUrl('sort_index','last_update','order_type',$order_type)}">{$lang->last_update}<!--@if($sort_index=='last_update')--><img src="./images/common/{$order_icon}" alt="" width="5" height="3" class="sort" /><!--@end--></a></th><!--@end-->
<!--@if($module_info->display_last_update=='Y')--><th scope="col" class="date"><div><a href="{getUrl('sort_index','last_update','order_type',$order_type)}">{$lang->last_update}<!--@if($sort_index=='last_update')--><img src="./images/common/{$order_icon}" alt="" width="5" height="3" class="sort" /><!--@end--></a></div></th><!--@end-->
</tr>
</thead>
<!--@end-->
@ -52,14 +51,14 @@
<tbody>
<!--@if(!$document_list && !$notice_list)-->
<!-- 게시물이 없으면 등록된 글이 없음을 표시 -->
<!--// 게시물이 없으면 등록된 글이 없음을 표시 -->
<tr class="bg0 tCenter">
<td colspan="{$_col_count}" class="title">
{$lang->no_documents}
</td>
</tr>
<!--@else-->
<!-- 공지사항 출력 -->
<!--// 공지사항 출력 -->
<!--@foreach($notice_list as $no => $document)-->
<tr class="notice">
<!--@if($module_info->display_number!='N')--><td class="notice"><!--@if($document_srl == $document->document_srl)--><img src="./images/common/iconArrowD8.gif" border="0" alt="" /><!--@else-->{$lang->notice}<!--@end--></td><!--@end-->
@ -89,7 +88,7 @@
</tr>
<!--@end-->
<!-- 일반 글 출력 -->
<!--// 일반 글 출력 -->
<!--@foreach($document_list as $no => $document)-->
<tr class="bg{($no+1)%2+1}">
<!--@if($module_info->display_number!='N')--><td class="num"><!--@if($document_srl == $document->document_srl)--><img src="./images/common/iconArrowD8.gif" border="0" alt="" /><!--@else-->{$no}<!--@end--></td><!--@end-->

View file

@ -1,26 +1,24 @@
<!-- 목록 출력 -->
<form action="./" method="get">
{@ $_col_count = 2; }
<!--@if($module_info->display_number!='N')-->{@ $_col_count++ }<!--@end-->
<!--@if($grant->is_admin)-->{@ $_col_count++}<!--@end-->
<!--@if($module_info->display_author!='N')-->{@ $_col_count++ }<!--@end-->
<!--@if($module_info->display_readed_count!='N')-->{@ $_col_count++ }<!--@end-->
<!--@if($module_info->display_voted_count!='N')-->{@ $_col_count++ }<!--@end-->
<!--@if($module_info->display_regdate != 'N')-->{@ $_col_count++ }<!--@end-->
<!--@if($module_info->display_last_update == 'Y')-->{@ $_col_count++ }<!--@end-->
<table cellspacing="0" summary="" class="boardList">
<!--@if($module_info->display_number!='N')--><col width="80" /> {@ $_col_count++ }<!--@end-->
<!--@if($grant->is_admin)--><col width="30" />{@ $_col_count++}<!--@end-->
<col width="{$module_info->thumbnail_width+20}" />
<col />
<!--@if($module_info->display_author!='N')--><col width="120" /> {@ $_col_count++ }<!--@end-->
<!--@if($module_info->display_readed_count!='N')--><col width="60" /> {@ $_col_count++ }<!--@end-->
<!--@if($module_info->display_voted_count!='N')--><col width="60" /> {@ $_col_count++ }<!--@end-->
<!--@if($module_info->display_regdate != 'N')--><col width="80" /> {@ $_col_count++ }<!--@end-->
<!--@if($module_info->display_last_update == 'Y')--><col width="90" /> {@ $_col_count++ }<!--@end-->
<!--@if($_col_count>2)-->
<thead>
{@ $no_line_class = " no_line" }
<tr>
<!--@if($module_info->display_number!='N')--><th scope="col" class="num{$no_line_class}">{$lang->no}</th>{@ $no_line_class=""}<!--@end-->
<!--@if($module_info->display_number!='N')--><th scope="col" class="num{$no_line_class}"><div>{$lang->no}</div></th>{@ $no_line_class=""}<!--@end-->
<!--@if($grant->is_admin)--><th scope="col" class="checkbox{$no_line_class}"><input type="checkbox" onclick="clickCheckBoxAll(this.form, 'cart'); return false;" /></th>{@ $no_line_class=""}<!--@end-->
<th scope="col" colspan="2" class="<!--@if($module_info->use_category=='Y')-->category<!--@else-->title<!--@end-->{$no_line_class}">
<th scope="col" colspan="2" class="<!--@if($module_info->use_category=='Y')-->category<!--@else-->title<!--@end-->{$no_line_class}"><div>
<!--@if($module_info->use_category == "Y")-->
<select name="category" id="board_category">
@ -33,16 +31,16 @@
<!--@else-->
{$lang->title}
<!--@end-->
</th>
<!--@if($module_info->display_author!='N')--><th class="author" scope="col">{$lang->writer}</th><!--@end-->
</div></th>
<!--@if($module_info->display_author!='N')--><th class="author" scope="col"><div>{$lang->writer}</div></th><!--@end-->
<!--@if($module_info->display_readed_count!='N')--><th class="reading" scope="col"><a href="{getUrl('sort_index','readed_count','order_type',$order_type)}">{$lang->readed_count}<!--@if($sort_index=='readed_count')--><img src="./images/common/{$order_icon}" alt="" width="5" height="3" class="sort" /><!--@end--></a></th><!--@end-->
<!--@if($module_info->display_readed_count!='N')--><th class="reading" scope="col"><div><a href="{getUrl('sort_index','readed_count','order_type',$order_type)}">{$lang->readed_count}<!--@if($sort_index=='readed_count')--><img src="./images/common/{$order_icon}" alt="" width="5" height="3" class="sort" /><!--@end--></a></div></th><!--@end-->
<!--@if($module_info->display_voted_count!='N')--><th class="recommend" scope="col"><a href="{getUrl('sort_index','voted_count','order_type',$order_type)}">{$lang->voted_count}<!--@if($sort_index=='voted_count')--><img src="./images/common/{$order_icon}" alt="" width="5" height="3" class="sort" /><!--@end--></a></th><!--@end-->
<!--@if($module_info->display_voted_count!='N')--><th class="recommend" scope="col"><div><a href="{getUrl('sort_index','voted_count','order_type',$order_type)}">{$lang->voted_count}<!--@if($sort_index=='voted_count')--><img src="./images/common/{$order_icon}" alt="" width="5" height="3" class="sort" /><!--@end--></a></div></th><!--@end-->
<!--@if($module_info->display_regdate != 'N')--><th scope="col" class="date"><a href="{getUrl('sort_index','regdate','order_type',$order_type)}">{$lang->date}<!--@if($sort_index=='regdate')--><img src="./images/common/{$order_icon}" alt="" width="5" height="3" class="sort" /><!--@end--></a></th><!--@end-->
<!--@if($module_info->display_regdate != 'N')--><th scope="col" class="date"><div><a href="{getUrl('sort_index','regdate','order_type',$order_type)}">{$lang->date}<!--@if($sort_index=='regdate')--><img src="./images/common/{$order_icon}" alt="" width="5" height="3" class="sort" /><!--@end--></a></div></th><!--@end-->
<!--@if($module_info->display_last_update=='Y')--><th scope="col" class="date"><a href="{getUrl('sort_index','last_update','order_type',$order_type)}">{$lang->last_update}<!--@if($sort_index=='last_update')--><img src="./images/common/{$order_icon}" alt="" width="5" height="3" class="sort" /><!--@end--></a></th><!--@end-->
<!--@if($module_info->display_last_update=='Y')--><th scope="col" class="date"><div><a href="{getUrl('sort_index','last_update','order_type',$order_type)}">{$lang->last_update}<!--@if($sort_index=='last_update')--><img src="./images/common/{$order_icon}" alt="" width="5" height="3" class="sort" /><!--@end--></a></div></th><!--@end-->
</tr>
</thead>
<!--@end-->
@ -50,14 +48,14 @@
<tbody>
<!--@if(!$document_list && !$notice_list)-->
<!-- 게시물이 없으면 등록된 글이 없음을 표시 -->
<!--// 게시물이 없으면 등록된 글이 없음을 표시 -->
<tr class="bg0">
<td colspan="{$_col_count}" class="title">
{$lang->no_documents}
</td>
</tr>
<!--@else-->
<!-- 공지사항 출력 -->
<!--// 공지사항 출력 -->
<!--@foreach($notice_list as $no => $document)-->
<tr class="notice">
<!--@if($module_info->display_number!='N')--><td class="notice">{$lang->notice}</td><!--@end-->
@ -87,7 +85,7 @@
</tr>
<!--@end-->
<!-- 일반 글 출력 -->
<!--// 일반 글 출력 -->
<!--@foreach($document_list as $no => $document)-->
<tr class="bg{($no+1)%2+1}">

View file

@ -1,4 +1,4 @@
<!-- header.html include -->
<!--// header.html include -->
<!--#include("header.html")-->
<!-- print tags -->

View file

@ -32,7 +32,7 @@
<div class="uri" title="{$lang->document_url}"><a href="{$oDocument->getPermanentUrl()}">{$oDocument->getPermanentUrl()}</a></div>
<div class="date" title="{$lang->regdate}">
<strong>{$oDocument->getRegdate('Y.m.d')}</strong> {$oDocument->getRegdate('H:i:s')} ({$oDocument->getIpaddress()})
<strong>{$oDocument->getRegdate('Y.m.d')}</strong> {$oDocument->getRegdate('H:i:s')} <!--@if($grant->is_admin || $module_info->display_ip_address!='N')-->({$oDocument->getIpaddress()})<!--@end-->
</div>
<div class="readedCount" title="{$lang->readed_count}">{$oDocument->get('readed_count')}</div>
@ -73,7 +73,7 @@
<tr>
<th scope="row">{$val->name}</th>
<td>
<!-- 확장변수(extra_var)의 type에 따른 값을 출력하기 위해서 특별히 제작된 파일을 include 한다 -->
<!--// 확장변수(extra_var)의 type에 따른 값을 출력하기 위해서 특별히 제작된 파일을 include 한다 -->
<!--#include("./extra_var_value.html")-->
</td>
</tr>

View file

@ -28,14 +28,14 @@
<select name="category_srl" class="category">
<option value="">{$lang->category}</option>
<!--@foreach($category_list as $val)-->
<option <!--@if(!$val->grant)-->disabled="disabled"<!--@end--> value="{$val->category_srl}" <!--@if($val->grant&&$val->selected||$val->category_srl==$oDocument->get('category_srl'))-->selected="selected"<!--@end-->>
<option <!--@if(!$val->grant)-->disabled="disabled"<!--@endif--> value="{$val->category_srl}" <!--@if($val->grant&&$val->selected||$val->category_srl==$oDocument->get('category_srl'))-->selected="selected"<!--@endif-->>
{str_repeat("&nbsp;&nbsp;",$val->depth)} {$val->title} ({$val->document_count})
</option>
<!--@end-->
<!--@endforeach-->
</select>
<!--@else-->
<label class="title">{$lang->title}</label>
<!--@end-->
<!--@endif-->
<input type="text" name="title" class="title inputTypeText" value="{htmlspecialchars($oDocument->getTitleText())}" />
</div>
@ -46,7 +46,7 @@
<option value="" style="background-color:#FFFFFF;">{$lang->title_color}</option>
<!--@foreach($_color as $_col)-->
<option value="{$_col}" style="background-color:#{$_col}" <!--@if($oDocument->get('title_color')==$_col)-->selected="selected"<!--@end-->>{$lang->title_color}</option>
<!--@end-->
<!--@endforeach-->
</select></dd>
<dd>
<input type="checkbox" name="title_bold" id="title_bold" value="Y" <!--@if($oDocument->get('title_bold')=='Y')-->checked="checked"<!--@end--> />
@ -60,7 +60,7 @@
<input type="checkbox" name="lock_comment" value="Y" <!--@if($oDocument->isLocked())-->checked="checked"<!--@end--> id="lock_comment" />
<label for="lock_comment">{$lang->lock_comment}</label>
</dd>
<!--@end-->
<!--@endif-->
<dd>
<input type="checkbox" name="is_secret" value="Y" <!--@if($oDocument->isSecret())-->checked="checked"<!--@end--> id="is_secret" />
<label for="is_secret">{$lang->secret}</label>
@ -91,10 +91,10 @@
<th scope="row">{$val->name} <!--@if($val->is_required=='Y')-->*<!--@end--></th>
<td><!--#include("./extra_var_form.html")--></td>
</tr>
<!--@end-->
<!--@end-->
<!--@endif-->
<!--@endforeach-->
</table>
<!--@end-->
<!--@endif-->
<div class="editor">{$oDocument->getEditor()}</div>

View file

@ -1,6 +1,6 @@
<!--#include("header.html")-->
<!-- 만약 댓글의 답을 다는 것이라면 원문 보여줌 -->
<!--// 만약 댓글의 답을 다는 것이라면 원문 보여줌 -->
<!--@if($oSourceComment && $oSourceComment->isExists())-->
<div class="replyBox">
<div class="replyItem">
@ -18,7 +18,7 @@
</div>
</div>
</div>
<!-- 원글의 댓글을 다는 것이라면 원글을 보여줌 -->
<!--// 원글의 댓글을 다는 것이라면 원글을 보여줌 -->
<!--@elseif($oDocument)-->
<div class="replyBox">
<div class="replyItem">

View file

@ -15,10 +15,10 @@ Jeong, Chan Myeong 070601~070630
.boardHeader h3 { margin:0; float:left; padding:15px 15px 12px 15px; font-size:1.2em; background:#ffffff url(../images/common/lineH3.gif) no-repeat right bottom;}
/* board Description */
.boardDescription { color:#AEAEAE; border:1px solid #DDDDDD; overflow:hidden; padding:10px; margin-top:5px; background-color:#FFFFFF;}
.boardDescription { color:#AEAEAE; border:1px solid #DDDDDD; overflow:hidden; padding:10px; margin:5px 0; background-color:#FFFFFF;}
/* board Information */
.boardInformation { width:100%; clear:both; margin:10px 0 2px 0; overflow:hidden; color:#666666;}
.boardInformation { width:100%; clear:both; margin:5px 0 2px 0; overflow:hidden; color:#666666;}
.articleNum { float:left; padding:0 0 0 15px; }
/* account Navigation */

View file

@ -1,6 +1,6 @@
<!-- 이 파일은 extra_vars의 form을 출력하는 파일이며 다른 스킨에서 그대로 가져가서 css만 바꾸어 주면 된다 -->
<!--// 이 파일은 extra_vars의 form을 출력하는 파일이며 다른 스킨에서 그대로 가져가서 css만 바꾸어 주면 된다 -->
<!-- calendar -->
<!--// calendar -->
<!--%import("../../../../common/js/calendar.min.js",optimized=false)-->
<!--@if($lang_type == 'ko')-->
<!--%import("../../../../common/js/calendar-ko.js",optimized=false)-->
@ -18,40 +18,40 @@
<!--%import("../../../../common/js/calendar-setup.js",optimized=false)-->
<!--%import("../../../../common/css/calendar-system.css",optimized=false)-->
<!-- type=select,checkbox이고 기본값이 , 로 연결되어 있으면 , 를 기준으로 explode하여 배열로 만든다 -->
<!--@if(in_array($val->type,array('select','checkbox'))&&strpos($val->default,",")!==false)-->
{@ $val->default = explode(',',$val->default) }
<!--// type=select,checkbox이고 기본값이 , 로 연결되어 있으면 배열로 만든다 -->
<!--@if(in_array($val->type, array('select', 'checkbox')))-->
{@ $val->default = explode(',', $val->default) }
<!--@end-->
<!-- 확장변수의 이름을 지정 -->
<!--// 확장변수의 이름을 지정 -->
{@ $val->column_name = "extra_vars".$key}
<!-- 확장변수의 값을 documentItem::getExtraValue로 가져옴 -->
<!--// 확장변수의 값을 documentItem::getExtraValue로 가져옴 -->
{@ $val->value = $oDocument->getExtraValue($key)}
<!-- 일반 text -->
<!--// 일반 text -->
<!--@if($val->type == 'text')-->
<input type="text" name="{$val->column_name}" value="{htmlspecialchars($val->value)}" class="inputTypeText w400" />
<!-- 홈페이지 주소 -->
<!--// 홈페이지 주소 -->
<!--@elseif($val->type == 'homepage')-->
<input type="text" name="{$val->column_name}" value="{htmlspecialchars($val->value)}" class="inputTypeText w400" />
<!-- Email 주소 -->
<!--// Email 주소 -->
<!--@elseif($val->type == 'email_address')-->
<input type="text" name="{$val->column_name}" value="{htmlspecialchars($val->value)}" class="inputTypeText w400" />
<!-- 전화번호 -->
<!--// 전화번호 -->
<!--@elseif($val->type == 'tel')-->
<input type="text" name="{$val->column_name}" value="{htmlspecialchars($val->value[0])}" size="4" class="inputTypeText" />
<input type="text" name="{$val->column_name}" value="{htmlspecialchars($val->value[1])}" size="4" class="inputTypeText" />
<input type="text" name="{$val->column_name}" value="{htmlspecialchars($val->value[2])}" size="4" class="inputTypeText" />
<!-- textarea -->
<!--// textarea -->
<!--@elseif($val->type == 'textarea')-->
<textarea name="{$val->column_name}" class="inputTypeTextArea w400">{htmlspecialchars($val->value)}</textarea>
<!-- 다중 선택 -->
<!--// 다중 선택 -->
<!--@elseif($val->type == 'checkbox')-->
<!--@if($val->default)-->
<ul style="padding:0;margin:0;list-style:none;">
@ -61,7 +61,7 @@
</ul>
<!--@end-->
<!-- 단일 선택 -->
<!--// 단일 선택 -->
<!--@elseif($val->type == 'select')-->
<select name="{$val->column_name}">
<!--@if($val->default)-->
@ -71,7 +71,7 @@
<!--@end-->
</select>
<!-- 날짜 입력 -->
<!--// 날짜 입력 -->
<!--@elseif($val->type == 'date')-->
<input type="hidden" name="{$val->column_name}" id="date_{$val->column_name}" value="{$val->value}" />
<div class="display_date" id="str_{$val->column_name}">{zdate($val->value,"Y-m-d")}</div>

View file

@ -1,17 +1,17 @@
<!-- 이 파일은 extra_vars의 결과값을 출력하는 파일이며 다른 스킨에서 그대로 가져가서 css만 바꾸어 주면 된다 -->
<!--// 이 파일은 extra_vars의 결과값을 출력하는 파일이며 다른 스킨에서 그대로 가져가서 css만 바꾸어 주면 된다 -->
<!-- 확장변수의 이름을 지정 -->
<!--// 확장변수의 이름을 지정 -->
{@ $val->column_name = "extra_vars".$key}
<!-- 확장변수의 값을 documentItem::getExtraValue로 가져옴 -->
<!--// 확장변수의 값을 documentItem::getExtraValue로 가져옴 -->
{@ $val->value = $oDocument->getExtraValue($key)}
{@ $_tmp_value = array(); }
<!-- 일반 text -->
<!--// 일반 text -->
<!--@if($val->type == 'text')-->
{htmlspecialchars($val->value)}
<!-- 홈페이지 주소 -->
<!--// 홈페이지 주소 -->
<!--@elseif($val->type == 'homepage')-->
<!--@if($val->value)-->
<a href="{htmlspecialchars($val->value)}" onclick="window.open(this.href);return false;">{$val->value}</a>
@ -19,7 +19,7 @@
&nbsp;
<!--@end-->
<!-- Email 주소 -->
<!--// Email 주소 -->
<!--@elseif($val->type == 'email_address')-->
<!--@if($val->value)-->
<a href="mailto:{htmlspecialchars($val->value)}">{$val->value}</a>
@ -27,7 +27,7 @@
&nbsp;
<!--@end-->
<!-- 전화번호 -->
<!--// 전화번호 -->
<!--@elseif($val->type == 'tel')-->
{htmlspecialchars($val->value[0])}
<!--@if($val->value[1])-->-<!--@end-->
@ -36,12 +36,12 @@
{htmlspecialchars($val->value[2])}
&nbsp;
<!-- textarea -->
<!--// textarea -->
<!--@elseif($val->type == 'textarea')-->
{nl2br(htmlspecialchars($val->value))}
&nbsp;
<!-- 다중 선택 -->
<!--// 다중 선택 -->
<!--@elseif($val->type == 'checkbox')-->
<!--@if(!is_array($val->value))-->{@ $val->value = array($val->value) }<!--@end-->
<!--@foreach($val->value as $v)-->
@ -50,12 +50,12 @@
{implode(",",$_tmp_value)}
&nbsp;
<!-- 단일 선택 -->
<!--// 단일 선택 -->
<!--@elseif($val->type == 'select')-->
{htmlspecialchars($val->value)}
&nbsp;
<!-- 날짜 입력 -->
<!--// 날짜 입력 -->
<!--@elseif($val->type == 'date')-->
{zdate($val->value,"Y-m-d")}
&nbsp;

View file

@ -1,12 +1,12 @@
<!-- JS 파일 로드 -->
<!--// JS 파일 로드 -->
<!--%import("js/board.js")-->
<!-- 컬러셋 체크 -->
<!--// 컬러셋 체크 -->
<!--@if(!$module_info->colorset)-->
{@$module_info->colorset = "white"}
<!--@end-->
<!-- CSS 파일 로드 (컬러셋에 따라서) -->
<!--// CSS 파일 로드 (컬러셋에 따라서) -->
<!--%import("css/common.css")-->
<!--@if($module_info->colorset == "cyan")--> <!--%import("css/cyan.css")-->
@ -17,10 +17,10 @@
<!--@else--> <!--%import("css/white.css")-->
<!--@end-->
<!-- 상단 텍스트 출력 -->
<!--// 상단 텍스트 출력 -->
{$module_info->header_text}
<!-- 블로그 스킨이 아닐 경우 스킨의 제목/간단한 설명 출력 -->
<!-- 스킨의 제목/간단한 설명 출력 -->
<!--@if($module_info->title)-->
<div class="boardHeader">
<div class="boardHeaderBorder">
@ -45,26 +45,26 @@
<!-- 로그인 정보 -->
<ul class="accountNavigation">
<!-- 로그인 되어 있을 경우 -->
<!--// 로그인 되어 있을 경우 -->
<!--@if($is_logged)-->
<!-- 관리자이면 설정 버튼 출력 -->
<!--// 관리자이면 설정 버튼 출력 -->
<!--@if($grant->is_admin)-->
<li class="setup"><a href="{getUrl('act','dispBoardAdminBoardInfo')}">{$lang->cmd_setup}</a></li>
<!--@end-->
<!-- 최고관리자이면 관리자 페이지 버튼 출력 -->
<!--// 최고관리자이면 관리자 페이지 버튼 출력 -->
<!--@if($logged_info->is_admin == 'Y')-->
<li class="admin"><a href="{getUrl('','module','admin','act','dispBoardAdminContent')}" onclick="window.open(this.href); return false;">{$lang->cmd_management}</a></li>
<!--@end-->
<!-- 레이아웃이 없으면 회원정보 버튼 출력 -->
<!--// 레이아웃이 없으면 회원정보 버튼 출력 -->
<!--@if(!$module_info->layout_srl)-->
<li class="myInfo"><a href="{getUrl('act','dispMemberInfo')}">{$lang->cmd_view_member_info}</a></li>
<li class="loginAndLogout"><a href="{getUrl('act','dispMemberLogout')}">{$lang->cmd_logout}</a></li>
<!--@end-->
<!-- 로그인 되어 있지 않고 레이아웃이 없으면 -->
<!--// 로그인 되어 있지 않고 레이아웃이 없으면 -->
<!--@elseif(!$is_logged && !$module_info->layout_srl)-->
<li class="join"><a href="{getUrl('act','dispMemberSignUpForm')}">{$lang->cmd_signup}</a></li>
<li class="loginAndLogout"><a href="{getUrl('act','dispMemberLoginForm')}">{$lang->cmd_login}</a></li>

View file

@ -1,12 +1,12 @@
<!-- header.html include -->
<!--// header.html include -->
<!--#include("header.html")-->
<!-- 검색을 위한 xml filter import-->
<!--// 검색을 위한 xml filter import-->
<!--%import("filter/search.xml")-->
<!-- 선택된 게시물이 있고 권한이 있으면 내용 출력 -->
<!--// 선택된 게시물이 있고 권한이 있으면 내용 출력 -->
<!-- 글 쓰기 폼 출력 -->
<!--// 글 쓰기 폼 출력 -->
<!--@if(!$oDocument->isExists())-->
<div class="listWrite">
<!--#include("write_form.html")-->
@ -14,7 +14,7 @@
<!--@end-->
<!--@if($grant->list)-->
<!-- 공지사항 -->
<!--// 공지사항 -->
<!--@if($notice_list)-->
<!--@foreach($notice_list as $no => $oDocument)-->
<div class="viewDocument">
@ -24,7 +24,7 @@
<!--@end-->
<!--@end-->
<!-- 일반글 -->
<!--// 일반글 -->
<!--@foreach($document_list as $no => $oDocument)-->
<div class="viewDocument">
<!--#include("./view_document.html")-->

View file

@ -1,91 +1,97 @@
<?xml version="1.0" encoding="utf-8"?>
<skin>
<title xml:lang="ko">zbXE 방명록 기본 스킨</title>
<?xml version="1.0" encoding="UTF-8"?>
<skin version="0.2">
<title xml:lang="ko">zbXE 방명록 기본 스킨</title>
<title xml:lang="zh-CN">zbXE 留言本默认皮肤</title>
<title xml:lang="jp">zbXE ゲストブックのデフォルトスキン</title>
<title xml:lang="jp">zbXE ゲストブックのデフォルトスキン</title>
<title xml:lang="en">zbXE Basic Guestbook Skin</title>
<title xml:lang="es">Zeroboard XE básicos piel Libro de visitas</title>
<maker email_address="zero@zeroboard.com" link="http://www.zeroboard.com" date="2008. 2. 28">
<name xml:lang="ko">제로</name>
<name xml:lang="zh-CN">Zero</name>
<name xml:lang="jp">Zero</name>
<description xml:lang="ko">board모듈의 기본 방명록 스킨</description>
<description xml:lang="zh-CN">留言本模块的默认皮肤。</description>
<description xml:lang="jp">ボードboardモジュールのデフォルトスキンです。</description>
<description xml:lang="en">This is the basic guestbook skin of Zeroboard XE.</description>
<description xml:lang="es">Este es el libro de visitas de la piel Zeroboard XE.</description>
<version>0.1</version>
<date>2008-02-28</date>
<link>http://www.zeroboard.com</link>
<author email_address="zero@zeroboard.com" link="http://www.zeroboard.com">
<name xml:lang="ko">제로</name>
<name xml:lang="zh-CN">Zero</name>
<name xml:lang="jp">Zero</name>
<name xml:lang="en">Zero</name>
<name xml:lang="es">Zero</name>
<description xml:lang="ko">board모듈의 기본 방명록 스킨</description>
<description xml:lang="zh-CN">留言本模块的默认皮肤。</description>
<description xml:lang="jp">ボードboardモジュールのデフォルトスキンです。</description>
<description xml:lang="en">This is the basic guestbook skin of Zeroboard XE.</description>
<description xml:lang="es">Este es el libro de visitas de la piel Zeroboard XE.</description>
</maker>
<colorset>
<color name="white" src="screenshot/white.gif">
<title xml:lang="ko">하얀색(기본)</title>
<title xml:lang="jp">白(デフォルト)</title>
<title xml:lang="zh-CN">白色(基本)</title>
<title xml:lang="en">White (default)</title>
</author>
<colorset>
<color name="white" src="screenshot/white.gif">
<title xml:lang="ko">하얀색(기본)</title>
<title xml:lang="jp">白(デフォルト)</title>
<title xml:lang="zh-CN">白色(基本)</title>
<title xml:lang="en">White (default)</title>
<title xml:lang="es">Blanco (por defecto)</title>
</color>
<color name="cyan" src="screenshot/cyan.gif">
<title xml:lang="ko">청록색</title>
<title xml:lang="jp">青緑</title>
<title xml:lang="zh-CN">青绿色</title>
<title xml:lang="en">Cyan</title>
</color>
<color name="cyan" src="screenshot/cyan.gif">
<title xml:lang="ko">청록색</title>
<title xml:lang="jp">青緑</title>
<title xml:lang="zh-CN">青绿色</title>
<title xml:lang="en">Cyan</title>
<title xml:lang="es">Cian</title>
</color>
<color name="green" src="screenshot/green.gif">
<title xml:lang="ko">초록색</title>
<title xml:lang="jp"></title>
<title xml:lang="zh-CN">绿色</title>
<title xml:lang="en">Green</title>
</color>
<color name="green" src="screenshot/green.gif">
<title xml:lang="ko">초록색</title>
<title xml:lang="jp"></title>
<title xml:lang="zh-CN">绿色</title>
<title xml:lang="en">Green</title>
<title xml:lang="es">Verde</title>
</color>
<color name="red" src="screenshot/red.gif">
<title xml:lang="ko">빨간색</title>
<title xml:lang="jp"></title>
<title xml:lang="zh-CN">红色</title>
<title xml:lang="en">Red</title>
</color>
<color name="red" src="screenshot/red.gif">
<title xml:lang="ko">빨간색</title>
<title xml:lang="jp"></title>
<title xml:lang="zh-CN">红色</title>
<title xml:lang="en">Red</title>
<title xml:lang="es">Roja</title>
</color>
<color name="purple" src="screenshot/purple.gif">
<title xml:lang="ko">보라색</title>
<title xml:lang="jp"></title>
<title xml:lang="zh-CN">紫色</title>
<title xml:lang="en">Purple</title>
</color>
<color name="purple" src="screenshot/purple.gif">
<title xml:lang="ko">보라색</title>
<title xml:lang="jp"></title>
<title xml:lang="zh-CN">紫色</title>
<title xml:lang="en">Purple</title>
<title xml:lang="es">Púrpura</title>
</color>
<color name="black" src="screenshot/black.gif">
<title xml:lang="ko">검은색</title>
<title xml:lang="jp"></title>
<title xml:lang="en">Black</title>
<title xml:lang="ru">Черного</title>
<title xml:lang="es">Negro</title>
<title xml:lang="zh-CN">黑色</title>
</color>
</colorset>
<extra_vars>
<var name="title" type="text">
<title xml:lang="ko">제목</title>
<title xml:lang="zh-CN">标题</title>
<title xml:lang="jp">タイトル</title>
</color>
<color name="black" src="screenshot/black.gif">
<title xml:lang="ko">검은색</title>
<title xml:lang="jp"></title>
<title xml:lang="en">Black</title>
<title xml:lang="ru">Черного</title>
<title xml:lang="es">Negro</title>
<title xml:lang="zh-CN">黑色</title>
</color>
</colorset>
<extra_vars>
<var name="title" type="text">
<title xml:lang="ko">제목</title>
<title xml:lang="zh-CN">标题</title>
<title xml:lang="jp">タイトル</title>
<title xml:lang="en">Title</title>
<title xml:lang="es">Título</title>
<description xml:lang="ko">방명록의 제목을 적어주세요.</description>
<description xml:lang="zh-CN">请输入留言本标题。</description>
<description xml:lang="jp">ゲストブックのタイトルを入力してください。</description>
<description xml:lang="ko">방명록의 제목을 적어주세요.</description>
<description xml:lang="zh-CN">请输入留言本标题。</description>
<description xml:lang="jp">ゲストブックのタイトルを入力してください。</description>
<description xml:lang="en">Please input the title of guestbook.</description>
<description xml:lang="es">Introduce el título del libro de visitas.</description>
</var>
<var name="memo" type="textarea">
<title xml:lang="ko">방명록 설명</title>
<title xml:lang="zh-CN">留言本说明</title>
<title xml:lang="jp">ゲストブックの説明</title>
</var>
<var name="memo" type="textarea">
<title xml:lang="ko">방명록 설명</title>
<title xml:lang="zh-CN">留言本说明</title>
<title xml:lang="jp">ゲストブックの説明</title>
<title xml:lang="en">Description</title>
<title xml:lang="es">Description</title>
<description lang="ko">내용의 기본값</description>
<description lang="zh-CN">内容默认值</description>
<description lang="jp">内容のデフォルト値</description>
<description lang="en">Default value of content</description>
<description lang="es">Valor por defecto de contenido</description>
</var>
</extra_vars>
</skin>
<description xml:lang="ko">내용의 기본값</description>
<description xml:lang="zh-CN">内容默认值</description>
<description xml:lang="jp">内容のデフォルト値</description>
<description xml:lang="en">Default value of content</description>
<description xml:lang="es">Valor por defecto de contenido</description>
</var>
</extra_vars>
</skin>

View file

@ -1,4 +1,4 @@
<!-- header.html include -->
<!--// header.html include -->
<!--#include("header.html")-->
<!-- print tags -->

View file

@ -51,7 +51,7 @@
<tr>
<th scope="row">{$val->name}</th>
<td>
<!-- 확장변수(extra_var)의 type에 따른 값을 출력하기 위해서 특별히 제작된 파일을 include 한다 -->
<!--// 확장변수(extra_var)의 type에 따른 값을 출력하기 위해서 특별히 제작된 파일을 include 한다 -->
<!--#include("./extra_var_value.html")-->
</td>
</tr>

View file

@ -1,6 +1,6 @@
<!--#include("./header.html")-->
<form action="./" method="post" enctype="multipart/form-data" target="hidden_iframe">
<form action="{Context::getRequestUri()}" method="post" enctype="multipart/form-data" target="hidden_iframe">
<input type="hidden" name="module" value="{$module_info->module}" />
<input type="hidden" name="mid" value="{$mid}" />
<input type="hidden" name="act" value="procBoardAdminUpdateSkinInfo" />
@ -16,20 +16,37 @@
<td class="left" >{$skin_info->title}</td>
</tr>
<tr>
<th scope="row">{$lang->skin_maker}</th>
<td class="left" >{$skin_info->maker->name} <!--@if($skin_info->maker->email_address)-->(<a href="mailto:{$skin_info->maker->email_address}">{$skin_info->maker->email_address}</a>)<!--@end--></td>
<th scope="row">{$lang->skin_author}</th>
<td class="left blue" >
<!--@foreach($skin_info->author as $author)-->
{$author->name} (<a href="{$author->homepage}" onclick="window.open(this.href);return false;">{$author->homepage}</a>, <a href="mailto:{$author->email_address}">{$author->email_address}</a>)<br />
<!--@endforeach-->
</td>
</tr>
<!--@if($skin_info->homepage)-->
<tr>
<th scope="row">{$lang->skin_maker_homepage}</th>
<td class="left" ><a href="{$skin_info->maker->homepage}" target="_blank">{$skin_info->maker->homepage}</a></td>
<th scope="row">{$lang->homepage}</th>
<td class="left blue"><a href="{$skin_info->homepage}" onclick="window.open(this.href);return false;">{$skin_info->homepage}</a></td>
</tr>
<!--@end-->
<tr>
<th scope="row">{$lang->date}</th>
<td class="left" >{$skin_info->maker->date}</td>
<td class="left" >{zdate($skin_info->date, 'Y-m-d')}</td>
</tr>
<!--@if($skin_info->license || $skin_info->license_link)-->
<tr>
<th scope="row">{$lang->skin_license}</th>
<td>
{nl2br(trim($skin_info->license))}
<!--@if($skin_info->license_link)-->
<p><a href="{$skin_info->license_link}" onclick="window.close(); return false;">{$skin_info->license_link}</a></p>
<!--@end-->
</td>
</tr>
<!--@end-->
<tr>
<th scope="row">{$lang->description}</th>
<td class="left" >{nl2br($skin_info->maker->description)}</td>
<td class="left" >{nl2br($skin_info->description)}</td>
</tr>
</table>
@ -73,17 +90,17 @@
<th scope="row">{$val->title}</th>
<td class="left">
<!--@if($val->type=="text")-->
<input type="text" name="{$val->name}" value="{htmlspecialchars($val->value)}" class="inputTypeText w400" />
<input type="text" name="{$val->name}" value="{htmlspecialchars($val->value)}" class="inputTypeText w400" />
<!--@elseif($val->type=="textarea")-->
<textarea name="{$val->name}" class="inputTypeTextArea w400">{htmlspecialchars($val->value)}</textarea>
<textarea name="{$val->name}" class="inputTypeTextArea w400">{htmlspecialchars($val->value)}</textarea>
<!--@elseif($val->type=="select")-->
<select name="{$val->name}">
<!--@foreach($val->default as $k=>$v)-->
<option value="{$v}" <!--@if($v==$val->value)-->selected="selected"<!--@end-->>{$v}</option>
<!--@end-->
</select>
<select name="{$val->name}">
<!--@foreach($val->options as $k=>$v)-->
<option value="{$v->value}" <!--@if($v->value == $val->value)-->selected="selected"<!--@end-->>{$v->title}</option>
<!--@end-->
</select>
<!--@elseif($val->type=="checkbox")-->
<!--@foreach($val->default as $k=>$v)-->
@ -99,19 +116,18 @@
<input type="radio" name="{$val->name}" value="{$v}" id="ch_{$key}_{$k}" <!--@if($v==$val->value)-->checked="checked"<!--@end-->/>
<label for="ch_{$key}_{$k}">{$v}</label>
</span>
<!--@end-->
<!--@end-->
<!--@elseif($val->type=="image")-->
<!--@if($val->value)-->
<div>
<img src="{$val->value}" /><br />
<input type="checkbox" name="del_{$val->name}" value="Y" id="del_{$val->name}" class="checkbox" />
<label for="del_{$val->name}">{$lang->cmd_delete}</label>
</div>
<!--@end-->
<!--@if($val->value)-->
<div>
<img src="{$val->value}" /><br />
<input type="checkbox" name="del_{$val->name}" value="Y" id="del_{$val->name}" class="checkbox" />
<label for="del_{$val->name}">{$lang->cmd_delete}</label>
</div>
<!--@end-->
<input type="file" name="{$val->name}" value="" />
<input type="file" name="{$val->name}" value="" />
<!--@end-->
<!--@if($val->description)-->

View file

@ -1,27 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?>
<module version="0.2">
<title xml:lang="ko">댓글</title>
<title xml:lang="jp">コメント</title>
<title xml:lang="zh-CN">评论</title>
<title xml:lang="en">Comment</title>
<title xml:lang="es">Commentarios</title>
<title xml:lang="ru">Комментарии</title>
<description xml:lang="ko">게시판이나 블로그등의 댓글을 관리하는 모듈입니다.</description>
<description xml:lang="jp">掲示板やブログなどのコメントを管理するモジュールです。</description>
<description xml:lang="zh-CN">管理版面或博客评论的模块。</description>
<description xml:lang="en">Module for managing board/blog's comments</description>
<description xml:lang="es">Es el módulo para manejar commentarios en blog o boletínes.</description>
<description xml:lang="ru">Модуль для управления комментариями форума/блога.</description>
<version>0.1</version>
<date>2007-02-28</date>
<category>utility</category>
<title xml:lang="ko">댓글</title>
<title xml:lang="jp">コメント</title>
<title xml:lang="zh-CN">评论</title>
<title xml:lang="en">Comment</title>
<title xml:lang="es">Commentarios</title>
<title xml:lang="ru">Комментарии</title>
<description xml:lang="ko">게시판이나 블로그등의 댓글을 관리하는 모듈입니다.</description>
<description xml:lang="jp">掲示板やブログなどのコメントを管理するモジュールです。</description>
<description xml:lang="zh-CN">管理版面或博客评论的模块。</description>
<description xml:lang="en">Module for managing board/blog's comments</description>
<description xml:lang="es">Es el módulo para manejar commentarios en blog o boletínes.</description>
<description xml:lang="ru">Модуль для управления комментариями форума/блога.</description>
<version>0.1</version>
<date>2007-02-28</date>
<category>utility</category>
<link>http://www.zeroboard.com</link>
<author email_address="zero@zeroboard.com" link="http://www.zeroboard.com">
<name xml:lang="ko">제로</name>
<name xml:lang="jp">Zero</name>
<name xml:lang="zh-CN">zero</name>
<name xml:lang="en">zero</name>
<name xml:lang="es">zero</name>
<name xml:lang="ru">zero</name>
</author>
<author email_address="zero@zeroboard.com" link="http://www.zeroboard.com">
<name xml:lang="ko">제로</name>
<name xml:lang="jp">Zero</name>
<name xml:lang="zh-CN">zero</name>
<name xml:lang="en">zero</name>
<name xml:lang="es">zero</name>
<name xml:lang="ru">zero</name>
</author>
</module>

View file

@ -2,7 +2,7 @@
/**
* @file modules/comment/lang/fr.lang.php
* @author zero <zero@nzeo.com> Traduit par Pierre Duvent <PierreDuvent@gmail.com>
* @brief Paquet de la langue fondamentale pour le module de commentaire
* @brief Paquet du langage en français pour le module de Commentaire
**/
$lang->cmd_comment_do = 'Vous voudriez...';
@ -11,22 +11,22 @@
$lang->cmd_toggle_checked_comment = 'Renverser les choisis';
$lang->cmd_delete_checked_comment = 'Supprimer les choisis';
$lang->comment_count = 'Nombres de Commentaires';
$lang->comment_count = 'Limite de Commentaires';
$lang->about_comment_count = 'Quand il y a plus de commentaires, ils seront bougés sur le liste.';
$lang->msg_cart_is_null = 'Choisissez un article à supprimer, SVP.';
$lang->msg_cart_is_null = 'Choisissez un article à supprimer, S.V.P.';
$lang->msg_checked_comment_is_deleted = '%d commentaire(s) est(sont) supprimé(s) avec succés.';
$lang->search_target_list = array(
'content' => 'Contenu',
'user_id' => 'ID',
'user_id' => 'Compte',
'user_name' => 'Nom',
'nick_name' => 'Surnom',
'member_srl' => 'Member Serial',
'member_srl' => 'Numéro de Série du Membre',
'email_address' => 'Mél',
'homepage' => 'Page d\'Accueil',
'regdate' => 'Jour',
'last_update' => 'Mise à Jour',
'ipaddress' => 'Addresse IP',
'ipaddress' => 'Adresse IP',
);
?>

View file

@ -119,7 +119,7 @@
$option->content_key_name = 'content';
$option->allow_fileupload = false;
$option->enable_autosave = false;
$option->enable_default_component = false;
$option->enable_default_component = true;// false;
$option->enable_component = false;
$option->resizable = false;
$option->disable_html = true;

View file

@ -1,18 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<module version="0.2">
<title xml:lang="ko">커뮤니케이션</title>
<title xml:lang="zh-CN">会员交流</title>
<title xml:lang="en">Communication</title>
<description xml:lang="ko">회원들간의 쪽지, 친구기능을 담당하는 모듈입니다.</description>
<description xml:lang="zh-CN">管理在线会员间短信息及好友功能的模块。</description>
<description xml:lang="en">This module is for managing message, friend functions.</description>
<version>0.1</version>
<date>2008-05-30</date>
<category>utility</category>
<title xml:lang="ko">커뮤니케이션</title>
<title xml:lang="zh-CN">会员交流</title>
<title xml:lang="en">Communication</title>
<description xml:lang="ko">회원들간의 쪽지, 친구기능을 담당하는 모듈입니다.</description>
<description xml:lang="zh-CN">管理在线会员间短信息及好友功能的模块。</description>
<description xml:lang="en">This module is for managing message, friend functions.</description>
<version>0.1</version>
<date>2008-05-30</date>
<category>utility</category>
<link>http://www.zeroboard.com</link>
<author email_address="zero@zeroboard.com" link="http://www.zeroboard.com">
<name xml:lang="ko">제로</name>
<name xml:lang="zh-CN">Zero</name>
<name xml:lang="en">Zero</name>
</author>
<author email_address="zero@zeroboard.com" link="http://www.zeroboard.com">
<name xml:lang="ko">제로</name>
<name xml:lang="zh-CN">Zero</name>
<name xml:lang="en">Zero</name>
</author>
</module>

Some files were not shown because too many files have changed in this diff Show more