게시판 모듈에 블로그를 위한 기능 추가. xe_board 스킨에 블로그 스킨 추가 및 설정 표시. xe_board의 html/css 수정

git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3539 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
zero 2008-01-18 09:47:42 +00:00
parent 022ca81a06
commit 11adfbd902
53 changed files with 454 additions and 310 deletions

View file

@ -48,13 +48,14 @@
if(!count($targets)) return $files;
$hashed_filename = $this->getHashFilename($targets);
$optimized_info = $this->getOptimizedInfo($targets);
$filename = sprintf("%s%s.%s.php", $this->cache_path, $hashed_filename, $type);
$path = sprintf("%s%s", $this->cache_path, $optimized_info[0]);
$filename = sprintf("%s.%s.%s.php", $optimized_info[0], $optimized_info[1], $type);
$this->doOptimizedFile($filename, $targets, $type);
$this->doOptimizedFile($path, $filename, $targets, $type);
$files[] = $filename;
$files[] = $path.'/'.$filename;
return $files;
@ -64,34 +65,38 @@
* @brief optimize는 대상 파일을 \n로 연결후 md5 hashing하여 파일이름의 중복을 피함
* 개별 파일과 optimizer 클래스 파일의 변경을 적용하기 위해 파일들과 Optimizer.class.php의 filemtime을 비교, 파일이름에 반영
**/
function getHashFilename($files) {
function getOptimizedInfo($files) {
// 개별 요소들 또는 Optimizer.class.php파일이 갱신되었으면 새로 옵티마이징
$count = count($files);
$last_modified = 0;
for($i=0;$i<$count;$i++) {
$mtime = filemtime($files[$i]);
if($last_modified < $mtime) $last_modified = $mtime;
}
$buff = implode("\n", $files);
return md5($buff);
return array(md5($buff), $last_modified);
}
/**
* @brief 이미 저장된 캐시 파일과의 시간등을 검사하여 새로 캐싱해야 할지를 체크
**/
function doOptimizedFile($filename, $targets, $type) {
// optimized 파일이 없으면 새로 옵티마이징
if(!file_exists($filename)) return $this->makeOptimizedFile($filename, $targets, $type);
function doOptimizedFile($path, $filename, $targets, $type) {
// 대상 파일이 있으면 그냥 패스~
if(file_exists($path.'/'.$filename)) return;
// 개별 요소들 또는 Optimizer.class.php파일이 갱신되었으면 새로 옵티마이징
$count = count($targets);
$last_modified = 0;
for($i=0;$i<$count;$i++) {
$mtime = filemtime($targets[$i]);
if($last_modified < $mtime) $last_modified = $mtime;
}
// 대상 파일이 없으면 hashed_filename으로 생성된 파일들을 모두 삭제
FileHandler::removeFilesInDir($path);
$mtime = filemtime($filename);
if($mtime < $last_modified || $mtime < filemtime('./classes/optimizer/Optimizer.class.php')) return $this->makeOptimizedFile($filename, $targets, $type);
// 새로 캐시 파일을 생성
$this->makeOptimizedFile($path, $filename, $targets, $type);
}
/**
* @brief css나 js파일을 묶어서 하나의 파일로 만들고 gzip 압축이나 헤더등을 통제하기 위해서 php파일을 별도로 만들어서 진행함
**/
function makeOptimizedFile($filename, $targets, $type) {
function makeOptimizedFile($path, $filename, $targets, $type) {
/**
* 실제 css나 js의 내용을 합친 것을 구함
**/
@ -107,23 +112,21 @@
$content_buff .= $str."\n";
}
if($type == "css") $content_buff = '@charset "utf-8";'."\n".$content_buff;
$content_file = substr($filename, 0, -4);
$content_filename = str_replace($this->cache_path, '', $content_file);
FileHandler::writeFile($content_file, $content_buff);
$content_filename = substr($filename, 0, -4);
FileHandler::writeFile($path.'/'.$content_filename, $content_buff);
/**
* 캐시 타임을 제대로 이용하기 위한 헤더 파일 구함
**/
// 확장자별 content-type 체크
if($type == 'css') $content_type = 'text/css';
elseif($type == 'js') $content_type = 'text/javascript';
elseif($type == 'js') $content_type = 'application/x-javascript';
// 캐시를 위한 처리
$unique = crc32($content_filename);
$size = filesize($content_file);
$mtime = filemtime($content_file);
$class_mtime = filemtime("./classes/optimizer/Optimizer.class.php");
$size = filesize($path.'/'.$content_file);
$mtime = filemtime($path.'/'.$content_file);
// js, css 파일을 php를 통해서 출력하고 이 출력시에 헤더값을 조작하여 캐싱과 압축전송이 되도록 함 (IE6는 CSS파일일 경우 gzip압축하지 않음)
$header_buff = '<?php
@ -134,7 +137,7 @@ $type = "'.$type.'";
if(isset($_SERVER["HTTP_IF_MODIFIED_SINCE"])) {
$time = strtotime(preg_replace("/;.*$/", "", $_SERVER["HTTP_IF_MODIFIED_SINCE"]));
if($mtime == $time && $time > '.$class_mtime.') {
if($mtime == $time) {
header("HTTP/1.1 304");
$cached = true;
}
@ -167,7 +170,7 @@ if(!$cached) {
}
?>';
FileHandler::writeFile($filename, $header_buff);
FileHandler::writeFile($path.'/'.$filename, $header_buff);
}
/**
@ -175,7 +178,7 @@ if(!$cached) {
**/
function replaceCssPath($file, $str) {
// css 파일의 위치를 구함
$this->tmp_css_path = Context::getRequestUri().preg_replace("/^\.\//is","",dirname($file))."/";
$this->tmp_css_path = './'.preg_replace("/^\.\//is","",dirname($file))."/";
// url() 로 되어 있는 css 파일의 경로를 변경
$str = preg_replace_callback('!url\(("|\')?([^\)]+)("|\')?\)!is', array($this, '_replaceCssPath'), $str);

View file

@ -124,6 +124,7 @@
$lang->document_count = 'Total Articles';
$lang->page_count = 'Page Count';
$lang->list_count = 'List Count';
$lang->search_list_count = '검색 목록 수';
$lang->readed_count = 'Views';
$lang->voted_count = 'Votes';
$lang->member_count = 'Member Count';

View file

@ -123,6 +123,7 @@
$lang->document_count = 'Cantidad de documentos';
$lang->page_count = 'Cantidad de páginas';
$lang->list_count = 'Cantidad de listas';
$lang->search_list_count = '검색 목록 수';
$lang->readed_count = 'Leídos';
$lang->voted_count = 'Recomendados';
$lang->member_count = 'Cantidad de usuarios';

View file

@ -122,6 +122,7 @@
$lang->document_count = 'Nombre Total des Articles';
$lang->page_count = 'Nombre de Pages';
$lang->list_count = 'Nombre de Listes';
$lang->search_list_count = '검색 목록 수';
$lang->readed_count = 'Nombre de Fois Lues';
$lang->voted_count = 'Nombre de Voix';
$lang->member_count = 'Nombre de Membres';

View file

@ -124,6 +124,7 @@
$lang->document_count = '書き込み数';
$lang->page_count = 'ページ数';
$lang->list_count = 'リスト数';
$lang->search_list_count = '검색 목록 수';
$lang->readed_count = '照合数';
$lang->voted_count = '推薦数';
$lang->member_count = '会員数';

View file

@ -124,6 +124,7 @@
$lang->document_count = '글수';
$lang->page_count = '페이지수';
$lang->list_count = '목록 수';
$lang->search_list_count = '검색 목록 수';
$lang->readed_count = '조회수';
$lang->voted_count = '추천수';
$lang->member_count = '회원수';

View file

@ -124,6 +124,7 @@
$lang->document_count = 'Всего статей';
$lang->page_count = 'Кол-во страниц';
$lang->list_count = 'Кол-во списков';
$lang->search_list_count = '검색 목록 수';
$lang->readed_count = 'Хиты';
$lang->voted_count = 'Голоса';
$lang->member_count = 'Кол-во пользователей';

View file

@ -124,6 +124,7 @@
$lang->document_count = '帖子数';
$lang->page_count = '页数';
$lang->list_count = '目录数';
$lang->search_list_count = '검색 목록 수';
$lang->readed_count = '查看';
$lang->voted_count = '推荐';
$lang->member_count = '会员数';

View file

@ -151,6 +151,8 @@
$extra_vars->use_category = $args->use_category=='Y'?'Y':'N';
$extra_vars->list_count = $args->list_count;
$extra_vars->search_list_count = $args->search_list_count;
$extra_vars->except_notice = $args->except_notice!='Y'?'N':'Y';
$extra_vars->page_count = $args->page_count;
$obj->extra_vars = serialize($extra_vars);
@ -175,6 +177,7 @@
// 기본 값외의 것들을 정리
$extra_var = delObjectVars(Context::getRequestVars(), $args);
if($extra_var->use_category!='Y') $extra_var->use_category = 'N';
if($extra_var->except_notice!='Y') $extra_var->except_notice = 'N';
unset($extra_var->act);
unset($extra_var->page);
unset($extra_var->board_name);

View file

@ -33,6 +33,8 @@
// 기본 모듈 정보들 설정 (list_count, page_count는 게시판 모듈 전용 정보이고 기본 값에 대한 처리를 함)
if($this->module_info->list_count) $this->list_count = $this->module_info->list_count;
if($this->module_info->search_list_count) $this->search_list_count = $this->module_info->search_list_count;
if($this->module_info->except_notice == 'N') $this->except_notice = false; else $this->except_notice = true;
if($this->module_info->page_count) $this->page_count = $this->module_info->page_count;
/**
@ -123,9 +125,6 @@
// 조회수 증가
$oDocument->updateReadedCount();
// 댓글에디터 설정
$this->setCommentEditor(0, 100);
}
}
}
@ -133,8 +132,13 @@
// 스킨에서 사용하기 위해 context set
Context::set('oDocument', $oDocument);
// 목록을 구하기 위한 대상 모듈/ 페이지 수/ 목록 수/ 페이지 목록 수에 대한 옵션 설정
// 공지사항 목록을 구해서 context set (공지사항을 매페이지 제일 상단에 위치하기 위해서)
$args->module_srl = $this->module_srl; ///< 현재 모듈의 module_srl
$notice_output = $oDocumentModel->getNoticeList($args);
Context::set('notice_list', $notice_output->data);
// 목록을 구하기 위한 대상 모듈/ 페이지 수/ 목록 수/ 페이지 목록 수에 대한 옵션 설정
$args->page = $page; ///< 페이지
$args->list_count = $this->list_count; ///< 한페이지에 보여줄 글 수
$args->page_count = $this->page_count; ///< 페이지 네비게이션에 나타날 페이지의 수
@ -157,12 +161,11 @@
$args->page = $page;
}
// 공지사항 목록을 구해서 context set (공지사항을 매페이지 제일 상단에 위치하기 위해서)
$notice_output = $oDocumentModel->getNoticeList($args);
Context::set('notice_list', $notice_output->data);
// 만약 카테고리가 있거나 검색어가 있으면list_count를 search_list_count 로 이용
if($args->category_srl || $args->search_keyword) $args->list_count = $this->search_list_count;
// 일반 글을 구해서 context set
$output = $oDocumentModel->getDocumentList($args, true);
$output = $oDocumentModel->getDocumentList($args, $this->except_notice);
Context::set('document_list', $output->data);
Context::set('total_count', $output->total_count);
Context::set('total_page', $output->total_page);
@ -231,11 +234,6 @@
Context::set('document_srl',$document_srl);
Context::set('oDocument', $oDocument);
// 에디터 모듈의 getEditor를 호출하여 세팅
$oEditorModel = &getModel('editor');
$editor = $oEditorModel->getModuleEditor('document', $this->module_srl, $document_srl, 'document_srl', 'content');
Context::set('editor', $editor);
// 확장변수처리를 위해 xml_js_filter를 직접 header에 적용
$oDocumentController = &getController('document');
$oDocumentController->addXmlJsFilter($this->module_info);
@ -299,9 +297,6 @@
Context::set('oSourceComment',$oSourceComment);
Context::set('oComment',$oComment);
// 댓글 에디터 세팅
$this->setCommentEditor(0, 400);
$this->setTemplateFile('comment_form');
}
@ -333,9 +328,6 @@
Context::set('oSourceComment', $oCommentModel->getComment());
Context::set('oComment', $oComment);
// 댓글 에디터 세팅
$this->setCommentEditor($comment_srl, 301);
$this->setTemplateFile('comment_form');
}
@ -396,19 +388,6 @@
$this->setTemplateFile('message');
}
/**
* @brief 댓글의 editor 세팅
* 댓글의 경우 수정하는 경우가 아니라면 고유값이 없음.\n
* 따라서 고유값이 없을 경우 고유값을 가져와서 지정해 주어야
**/
function setCommentEditor($comment_srl = 0, $height = 100) {
Context::set('comment_srl', $comment_srl);
$oEditorModel = &getModel('editor');
$editor = $oEditorModel->getModuleEditor('comment', $this->module_srl, $comment_srl, 'comment_srl', 'content');
Context::set('comment_editor', $editor);
}
/**
* @brief 오류메세지를 system alert로 출력하는 method
* 특별한 오류를 알려주어야 하는데 별도의 디자인까지는 필요 없을 경우 페이지를 모두 그린후에

View file

@ -7,10 +7,13 @@
$lang->board = "Board";
$lang->except_notice = "공지사항 제외";
// words used in button
$lang->cmd_board_list = 'Board list';
$lang->cmd_module_config = 'Common board setting';
$lang->cmd_view_info = 'Board info';
$lang->about_except_notice = "목록 상단에 늘 나타나는 공지사항을 일반 목록에서 공지사항을 출력하지 않도록 합니다.";
$lang->about_board = "This module is for creating and managing boards.\nYou may select the module name from the list after creating one to configure specifically.\nPlease be careful with board's module name, since it will be the url. (ex : http://domain/zb/?mid=modulename)";
?>

View file

@ -7,10 +7,13 @@
$lang->board = "Tablero";
$lang->except_notice = "공지사항 제외";
// Palabras utilizadas en los botones
$lang->cmd_board_list = 'Lista del tableros';
$lang->cmd_module_config = 'Configuración común del Tablero';
$lang->cmd_view_info = 'Información del Tablero';
$lang->about_except_notice = "목록 상단에 늘 나타나는 공지사항을 일반 목록에서 공지사항을 출력하지 않도록 합니다.";
$lang->about_board = "Este módulo es para crear y manejar los tableros.\nLuego de crear un Tablero, seleciona el nombre del módulo para la configuración más detallada.\nSea cuidadoso con el nombre del módulo, ya que ese nombre va a ser la dirección URL. (ej : http://dominio/zb/?mid=nombre del módulo)";
?>

View file

@ -7,10 +7,13 @@
$lang->board = "掲示板";
$lang->except_notice = "공지사항 제외";
// ボタンに使用する用語
$lang->cmd_board_list = '掲示板リスト';
$lang->cmd_module_config = '掲示板共通設定';
$lang->cmd_view_info = '掲示板情報';
$lang->about_except_notice = "목록 상단에 늘 나타나는 공지사항을 일반 목록에서 공지사항을 출력하지 않도록 합니다.";
$lang->about_board = "掲示板の生成、および管理する掲示板モジュールです。\n生成後、リストからモジュール名を選択すると詳細な設定ができます。\n掲示板のモジュール名はURLになりますので注意してください。 (ex : http://ドメイン/zb/?mid=モジュール名)";
?>

View file

@ -7,10 +7,13 @@
$lang->board = "게시판";
$lang->except_notice = "공지사항 제외";
// 버튼에 사용되는 언어
$lang->cmd_board_list = '게시판 목록';
$lang->cmd_module_config = '게시판 공통 설정';
$lang->cmd_view_info = '게시판 정보';
$lang->about_except_notice = "목록 상단에 늘 나타나는 공지사항을 일반 목록에서 공지사항을 출력하지 않도록 합니다.";
$lang->about_board = "게시판을 생성하고 관리할 수 있는 게시판 모듈입니다.\n생성하신 후 목록에서 모듈이름을 선택하시면 자세한 설정이 가능합니다.\n게시판의 모듈이름은 접속 url이 되므로 신중하게 입력해주세요. (ex : http://도메인/zb/?mid=모듈이름)";
?>

View file

@ -7,10 +7,13 @@
$lang->board = "Форум";
$lang->except_notice = "공지사항 제외";
// слова, использованные в кнопке
$lang->cmd_board_list = 'Список форумов';
$lang->cmd_module_config = 'Общие настройки форума';
$lang->cmd_view_info = 'Информация форума';
$lang->about_except_notice = "목록 상단에 늘 나타나는 공지사항을 일반 목록에서 공지사항을 출력하지 않도록 합니다.";
$lang->about_board = "Этот модуль служит для создания и управления форумами.\nВы можете выбрать имя модуля из списка после создания для дополнительного конифигурирования.\nПожалуйста, будте осторожны с именем модуля форума, поскольку оно будет URL. (например : http://domain/zb/?mid=имя_модуля)";
?>

View file

@ -7,10 +7,13 @@
$lang->board = "版面";
$lang->except_notice = "공지사항 제외";
// 按钮语言
$lang->cmd_board_list = '版面目录';
$lang->cmd_module_config = '版面共同设置';
$lang->cmd_view_info = '版面信息';
$lang->about_except_notice = "목록 상단에 늘 나타나는 공지사항을 일반 목록에서 공지사항을 출력하지 않도록 합니다.";
$lang->about_board = "可生成,管理版面的模块。\n生成版面后,点击模块名即可对其详细设置。";
?>

View file

@ -55,7 +55,7 @@
<label for="is_secret">{$lang->secret}</label>
</div>
<div>{$comment_editor}</div>
<div>{$oComment->getEditor()}</div>
<div class="tCenter"><input type="image" src="./images/common/btn_reply2.gif" accesskey="s" /></div>

View file

@ -176,7 +176,7 @@
<label for="is_secret">{$lang->secret}</label>
</div>
<div>{$comment_editor}</div>
<div>{$oDocument->getCommentEditor()}</div>
<div class="tCenter"><input type="image" src="./images/common/btn_reply2.gif" accesskey="s" /></div>

View file

@ -82,7 +82,7 @@
<!--@end-->
</dl>
<div>{$editor}</div>
<div>{$oDocument->getEditor()}</div>
<div class="tag">
<label for="tag_input">{$lang->tag}</label>

View file

@ -53,7 +53,7 @@
<label for="is_secret">{$lang->secret}</label>
</div>
<div class="editor">{$comment_editor}</div>
<div class="editor">{$oComment->getEditor()}</div>
</div>
<div class="commentButton tRight">

View file

@ -32,60 +32,71 @@ Jeong, Chan Myeong 070601~070630
/* secret Content */
.secretContent { margin:20px auto; text-align:center; border:1px solid #EFEFEF; width:240px; }
.secretContent .title { padding:10px 0 10px 0; background-color:#EFEFEF; display:block; font-weight:bold;}
.secretContent .title { padding:10px 0 10px 0; background-color:#EFEFEF; display:block; font-weight:bold; }
.secretContent .content { padding:10px 0 10px 0; background-color:#FFFFFF; display:block; }
/* blog Style Notice */
.blogNotice { background:url("../images/common/notice.gif") no-repeat -2px 3px; padding:3px 0 3px 18px; border-top:1px solid #e0e1db; }
.blogNotice .date { font-family:verdana; font-size:.9em;color:#AAAAAA; }
.blogNotice a { text-decoration:none; color:#444444; }
.blogNotice a:hover { text-decoration:underline}
.blogNotice .replyAndTrackback { color:#AAAAAA; font-size:.9em; }
/* boardRead */
.boardRead { border:1px solid #e0e1db; margin-bottom:10px; }
.viewDocument { border:1px solid #e0e1db; padding:10px; border-bottom:2px solid #AAAAAA; margin-bottom:20px; }
.boardRead { margin:0 0 10px 0; }
.boardRead .readHeader { margin:15px 10px 10px 10px; border-bottom:1px solid #eff0ed; padding:0; height:22px; }
.boardRead .titleAndUser { overflow:hidden; border-bottom:1px solid #e0e1db; }
.boardRead .titleAndCategory { float:left;}
.boardRead .titleAndCategory h4 { font-size:1.4em; display:inline; padding-left:.2em;}
.boardRead .titleAndCategory .vr { margin:0 10px; color:#c5c7c0;}
.boardRead .titleAndCategory .category { color:#999999; }
.boardRead .titleAndUser .title { float:left; margin:10px 0 5px 0; }
.boardRead .titleAndUser h4 { font-size:1.5em; margin-left:3px;}
.boardRead .titleAndUser h4 a { color:#000000; text-decoration:none; }
.boardRead .titleAndUser h4 a:hover { text-decoration:underline; }
.boardRead .dateAndCount { font-size:.9em; float:right; white-space:nowrap; color:#999999; margin-top:6px; }
.boardRead .titleAndUser .userInfo { float:right; white-space:nowrap; margin-top:11px; }
.boardRead .titleAndUser .userInfo .author { color:#3074a5; }
.boardRead .titleAndUser .userInfo .author a { font-size:.9em; color:#3074a5; text-decoration:none; }
.boardRead .contentInfo { margin:10px 10px 0 10px; clear:both; background-color:#FFFFFF;}
.boardRead ul.uri { overflow:hidden; float:right; }
.boardRead ul.uri li { color:#c5c7c0; white-space:nowrap;}
.boardRead .userInfo { float:left; white-space:nowrap; }
.boardRead .userInfo .author { color:#3074a5; }
.boardRead .userInfo .author a { font-size:.9em; color:#3074a5; text-decoration:none; }
.boardRead .userInfo .ipaddress { font-size:.9em; color:#AAAAAA; }
.boardRead .dateAndCount { clear:both; white-space:nowrap; color:#444444; margin:10px 0 30px 1px; float:left; font-size:.9em; font-family:tahoma; line-height:17px; padding-bottom:10px; width:100%;}
.boardRead .dateAndCount .date { float:right; background:url("../images/common/calendar.gif") no-repeat left top; padding-left:18px; margin-left:10px; }
.boardRead .dateAndCount .readedCount { float:right; color:#AAAAAA; margin-left:10px; background:url("../images/common/read.gif") no-repeat left top; padding-left:18px; color:#4A3FD7;}
.boardRead .dateAndCount .votedCount { float:right; color:#AAAAAA; margin-left:10px; background:url("../images/common/vote.gif") no-repeat left top; padding-left:18px; color:#D76A3F;}
.boardRead .dateAndCount .replyAndTrackback { float:right; }
.boardRead .dateAndCount .replyAndTrackback a { color:#333333; white-space:nowrap; text-decoration:none; margin-left:10px;}
.boardRead .dateAndCount .replyAndTrackback a:hover { text-decoration:underline; }
.boardRead .dateAndCount .replyAndTrackback a.reply { background:#FFFFFF url(../images/common/iconReply.gif) no-repeat left top; padding-left:15px; }
.boardRead .dateAndCount .replyAndTrackback a.trackback { background:#FFFFFF url(../images/common/iconTrackback.gif) no-repeat left top; padding-left:15px; }
.boardRead .dateAndCount .category { float:left; margin-right:10px; }
.boardRead .dateAndCount .category a { color:#555555; text-decoration:none; background:url("../images/common/category.gif") no-repeat left -1px; padding-left:18px; font-weight:bold;}
.boardRead .dateAndCount .category a:hover { text-decoration:underline; }
.boardRead .dateAndCount .uri { float:left; }
.boardRead .dateAndCount .uri a { text-decoration:none; margin-left:4px; color:#BBBBBB; }
/* extraVars list */
.boardRead .extraVarsList { width:100%; border-top:1px solid #e0e1db; border-bottom:none; margin:10px 0 10px 0; table-layout:fixed;}
.boardRead .extraVarsList { width:100%; border:1px solid #e0e1db; border-bottom:none; margin:0 0 30px 0; table-layout:fixed;}
.boardRead .extraVarsList th { font-weight:normal; color:#555555; text-align:left; padding:4px 0 4px 10px; border-bottom:1px solid #e0e1db; border-right:1px solid #e0e1db;}
.boardRead .extraVarsList td { color:#555555; border-bottom:1px solid #e0e1db; padding:4px 0 4px 10px; }
.boardRead .extraVarsList td a { color:#555555; }
.boardRead .readBody { margin:10px 10px 0 10px; color:#555555; }
.boardRead .readBody { color:#555555; }
.boardRead .readBody .contentBody .ipaddress { text-align:right; margin-top:10px; color:#bbbbbb; font-family:tahoma;}
.boardRead .tag { background:#FFFFFF url(../images/common/iconTag.gif) no-repeat 3px 2px; padding-left:25px; margin:10px 10px 0 10px; }
.boardRead .tag { background:#FFFFFF url(../images/common/iconTag.gif) no-repeat 3px 2px; padding-left:25px; margin:10px 0 0 0; }
.boardRead .tag li { display:inline; list-style:none; }
.boardRead .tag li a { color:#444444;}
.boardRead .fileAttached { background-color:#FFFFFF; margin:10px 10px 0 10px; }
.boardRead .fileAttached h5 { font-weight:normal; color:#999999; float:left; font-size:1em; }
.boardRead .fileAttached li { display:block; float:left; margin:3px 5px 0 3px; list-style:none;}
.boardRead .fileAttached { border:1px solid #EFEFEF; background-color:#F4F4F4; padding:5px; margin-top:10px;}
.boardRead .fileAttached h5 { font-weight:normal; color:#999999; font-size:1em; line-height:22px;}
.boardRead .fileAttached li { display:inline; white-space:nowrap margin:3px 5px 0 3px; list-style:none; }
.boardRead .fileAttached li a { text-decoration:none; font-size:.9em; padding:0 0 2px 17px; white-space:nowrap; color:#444444; }
.boardRead .fileAttached li a:visited { color:#777777;}
.boardRead .buttonBox { background-color:#FFFFFF; margin:20px 10px 5px 10px; overflow:hidden; }
.boardRead .contentButton { text-align:right;margin:10px 0 5px 0; border-bottom:1px solid #DDDDDD; padding-bottom:10px;}
.boardRead .buttonBox .replyAndTrackback { float:left; overflow:hidden; margin-top:3px; }
.boardRead .buttonBox .replyAndTrackback a { color:#333333; white-space:nowrap; text-decoration:none;}
.boardRead .buttonBox .replyAndTrackback a.reply { background:#FFFFFF url(../images/common/iconReply.gif) no-repeat left top; padding-left:15px; }
.boardRead .buttonBox .replyAndTrackback a.trackback { background:#FFFFFF url(../images/common/iconTrackback.gif) no-repeat left top; padding-left:15px; margin-left:10px; }
.boardRead .buttonBox .contentButton { float:right; }
.trackbackBox { padding:.6em .6em; color:#666666; border:1px solid #e0e1db;;margin-top:.5em;}
.trackbackBox .trackbackItem { background-color:#FFFFFF; padding:.6em .8em .6em .6em; line-height:1.25em; border-bottom:1px dotted #EEEEEE; list-style:none;}
.trackbackBox { padding:.6em .6em; color:#666666; border:1px solid #e0e1db;;margin-top:.5em; }
.trackbackBox .trackbackUrl { color:#1F3DAE; font-size:.9em; background:url("../images/common/iconTrackback.gif") no-repeat left top; padding-left:18px; margin:0 0 3px 10px; }
.trackbackBox .trackbackItem { background-color:#F3F3F3; padding:.6em .8em .6em .6em; line-height:1.25em; border-top:1px dotted #EEEEEE; list-style:none;}
.trackbackBox p { display:inline; margin-bottom:1em;}
.trackbackBox a { color:#666666; text-decoration:none;}
.trackbackBox div { clear:both; }
@ -93,10 +104,10 @@ Jeong, Chan Myeong 070601~070630
.trackbackBox address a { font-size:.9em; color:#3074a5; margin-right:.3em; float:left;}
.trackbackBox address .date { font:.8em Tahoma; color:#cccccc; float:right;}
.replyBox { padding:.6em .6em; color:#666666; border:1px solid #e0e1db; margin-top:.5em;}
.replyBox { padding:10px; color:#666666; border:1px solid #e0e1db; margin-top:.5em;}
.replyBox .replyItem { background-color:#FFFFFF; padding:.6em .8em .6em .6em; line-height:1.25em; clear:both; border-bottom:1px dotted #EEEEEE; list-style:none;}
.replyBox p { display:inline; margin-bottom:1em;}
.replyBox .author { background-color:#FFFFFF; float:left; padding:0 .3em 0 0; font-size:.9em; color:#3074a5; margin:0 .3em .5em 0;}
.replyBox .author { float:left; padding:0 .3em 0 0; font-size:.9em; color:#3074a5; margin:0 .3em .5em 0;}
.replyBox .author a { color:#3074a5; margin-right:.3em; text-decoration:none; }
.replyBox .voted { float:left; font-size:.9em; color:#AAAAAA; margin:0 .3em .5em 1em;}
.replyBox .date { float:right; font:.8em Tahoma; color:#cccccc; margin:.3em 0 .5em 0;}
@ -108,12 +119,13 @@ Jeong, Chan Myeong 070601~070630
.replyBox .replyContent p { display:block; }
.replyBox .replyContent ul li { padding:0; border:none; line-height:1.25em; list-style:disc;}
.replyBox .replyContent ol li { padding:0; border:none; line-height:1.25em; list-style:decimal;}
.replyBox .reply { background-color:#FAFAFA;}
.replyBox .reply { background-color:#F4F4F4; border-bottom:1px dotted #DDDDDD;}
.replyBox .replyIndent { background:url(../images/common/iconReplyArrow.gif) no-repeat .0em .3em; padding-left:1.3em;}
.replyBox .fileAttached { _width:99%; border:1px solid #eaeae7; overflow:hidden; background:#fbfbfb; margin-top:.3em; list-style:none;}
.replyBox .fileAttached ul { float:left; padding:.3em 1em .2em 0; margin-left:.5em; _margin-left:.25em;}
.replyBox .fileAttached li a { font-size:.9em; white-space:nowrap; position:relative; color:#444444; }
.replyBox .fileAttached { border:1px solid #EFEFEF; background-color:#F4F4F4; padding:5px; margin-top:10px;}
.replyBox .fileAttached h5 { font-weight:normal; color:#999999; float:left; font-size:1em; line-height:22px;}
.replyBox .fileAttached li { display:inline; white-space:nowrap margin:3px 5px 0 3px; list-style:none; }
.replyBox .fileAttached li a { text-decoration:none; font-size:.9em; white-space:nowrap; color:#444444; }
.replyBox .fileAttached li a:visited { color:#777777;}
.commentButton { margin-top:.5em; }
@ -214,18 +226,20 @@ Jeong, Chan Myeong 070601~070630
.thumbnailBox div.readAndRecommend .vr { color:#dddddd;}
.thumbnailBox div.readAndRecommend strong.num { font:bold .8em Tahoma; color:#ff6600;}
/* board Bottom */
.boardBottom { margin-top:10px; }
/* list button */
.leftButtonBox { float: left; margin-top:1em;}
.rightButtonBox { float: right; margin-top:1em;}
.leftButtonBox { float: left; }
.rightButtonBox { float: right; }
/* pageNavigation */
.pageNavigation { display:block; margin-top:1em; text-align:center; font:bold 11px Tahoma; margin-top:1.5em;}
.pageNavigation a { position:relative; margin-left:-4px; font:bold 1em Tahoma; color:#666666; display:inline-block; padding:1px 7px 2px 6px; border-left:1px solid #dedfde; border-right:1px solid #CCCCCC; text-decoration:none; line-height:1em; }
.pageNavigation .current { position:relative; margin-left:-4px; font:bold 11px Tahoma; display:inline-block; padding:1px 7px 1px 6px; border-left:1px solid #dedfde; text-decoration:none; line-height:1em; }
.pageNavigation { text-align:center; font:bold 11px Tahoma; margin-top:5px;}
.pageNavigation a { font:bold 1em Tahoma; color:#666666; text-decoration:none; margin:0 10px 0 0; }
.pageNavigation .current { font:bold 1em Tahoma; text-decoration:none; margin:0 10px 0 0; }
.pageNavigation a:hover { background:#F7F7F7; text-decoration:none; }
.pageNavigation a:visited { color:#999999; }
.pageNavigation a.goToFirst, .pageNavigation a.goToLast { border:none; border-right:1px solid #ffffff; border-left:1px solid #ffffff; z-index:99; vertical-align:top; padding:0px 7px 4px 6px;}
.pageNavigation a.goToFirst img, .pageNavigation a.goToLast img { display:inline-block; padding:2px 0; position:relative; top:2px; _top:1px;}
.pageNavigation a.goToFirst img, .pageNavigation a.goToLast img { margin-bottom:2px;}
/* Search Form */
.boardSearch { margin-left:auto; margin-right:auto; clear:both; text-align:center;}
@ -233,6 +247,7 @@ Jeong, Chan Myeong 070601~070630
.boardSearch input { height:18px; }
/* boardWrite */
.boardEditor { margin-bottom:10px; }
.commentEditor { margin-top:10px; }
.boardWrite { border:1px solid #e0e1db; padding-bottom:10px;}
.boardWrite fieldset { border:none; }

View file

@ -18,7 +18,7 @@
.buttonTypeGo { background:url(../images/cyan/buttonTypeInput24.gif) no-repeat; }
/* pageNavigation */
.pageNavigation .current { color:#2895c0; border-right:1px solid #CCCCCC; }
.pageNavigation .current { color:#2895c0; }
/* boardRead */
boardRead .fileAttached li a { background:url(../images/cyan/iconFile.gif) no-repeat left top;}

View file

@ -18,7 +18,7 @@
.buttonTypeGo { background:url(../images/green/buttonTypeInput24.gif) no-repeat; }
/* pageNavigation */
.pageNavigation .current { color:#38b549; border-right:1px solid #CCCCCC; }
.pageNavigation .current { color:#38b549; }
/* boardRead */
.boardRead .fileAttached li a { background:url(../images/green/iconFile.gif) no-repeat left top;}

View file

@ -18,7 +18,7 @@
.buttonTypeGo { background:url(../images/purple/buttonTypeInput24.gif) no-repeat; }
/* pageNavigation */
.pageNavigation .current { color:#b1ae00; border-right:1px solid #CCCCCC; }
.pageNavigation .current { color:#b1ae00; }
/* boardRead */
.boardRead .fileAttached li a { background:url(../images/purple/iconFile.gif) no-repeat left top;}

View file

@ -18,7 +18,7 @@
.buttonTypeGo { background:url(../images/red/buttonTypeInput24.gif) no-repeat; }
/* pageNavigation */
.pageNavigation .current { color:#ff6600; border-right:1px solid #CCCCCC; }
.pageNavigation .current { color:#ff6600; }
/* boardRead */
.boardRead .fileAttached li a { background:url(../images/red/iconFile.gif) no-repeat left top;}

View file

@ -21,7 +21,7 @@
.buttonTypeGo { background:url(../images/white/buttonTypeInput24.gif) no-repeat; }
/* pageNavigation */
.pageNavigation .current { color:#ff6600; border-right:1px solid #CCCCCC; }
.pageNavigation .current { color:#ff6600; }
/* replyAndTrackback */
.buttonBox .replyAndTrackback a strong { color:#ff6600;}

View file

@ -41,6 +41,8 @@
{@ $module_info->default_style = 'gallery'}
<!--@elseif($listStyle=='webzine')-->
{@ $module_info->default_style = 'webzine'}
<!--@elseif($listStyle=='blog')-->
{@ $module_info->default_style = 'blog'}
<!--@elseif($listStyle=='list')-->
{@ $module_info->default_style = 'list'}
<!--@end-->
@ -107,11 +109,12 @@
<li class="tag_info"><a href="{getUrl('act','dispBoardTagList')}"><img src="./images/common/iconAllTags.gif" alt="Tag list" width="13" height="13"/></a></li>
<!-- 목록형태 (포럼형이 기본으로 되어 있을 경우 다른 형태를 지정 못하게 함) -->
<!--@if($module_info->default_style != 'forum')-->
<li class="listType"><a href="{getUrl('listStyle','list','act','')}"><img src="./images/common/typeList.gif" border="0" width="13" height="13" alt="List" /></a></li>
<li class="listType"><a href="{getUrl('listStyle','webzine','act','')}"><img src="./images/common/typeWebzine.gif" border="0" width="13" height="13" alt="Webzine" /></a></li>
<li class="listType"><a href="{getUrl('listStyle','gallery','act','')}"><img src="./images/common/typeGallery.gif" border="0" width="13" height="13" alt="Gallery" /></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/common/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/common/typeWebzine.gif" border="0" width="13" height="13" alt="Webzine" /></a></li>
<li class="listType"><a href="{getUrl('listStyle','gallery','act','','document_srl','')}"><img src="./images/common/typeGallery.gif" border="0" width="13" height="13" alt="Gallery" /></a></li>
<li class="listType"><a href="{getUrl('listStyle','blog','act','','document_srl','')}"><img src="./images/common/typeBlog.gif" border="0" width="13" height="13" alt="Blog" /></a></li>
<!--@end-->
</ul>

Binary file not shown.

After

Width:  |  Height:  |  Size: 170 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 115 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 363 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 565 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 133 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 562 B

View file

@ -5,8 +5,10 @@
<!--%import("filter/search.xml")-->
<!-- 선택된 게시물이 있고 권한이 있으면 내용 출력 -->
<!--@if($oDocument->isExists())-->
<!--@if($oDocument->isExists() && $module_info->default_style != 'blog')-->
<div class="viewDocument">
<!--#include("./view_document.html")-->
</div>
<!--@end-->
<!-- 목록 출력 -->
@ -16,57 +18,62 @@
<!--#include("./style.gallery.html")-->
<!--@elseif($module_info->default_style == 'forum')-->
<!--#include("./style.forum.html")-->
<!--@elseif($module_info->default_style == 'blog')-->
<!--#include("./style.blog.html")-->
<!--@else-->
<!--#include("./style.list.html")-->
<!--@end-->
<!-- 글쓰기, 목록 버튼 -->
<div class="leftButtonBox">
<!--@if($grant->is_admin)-->
<a href="{getUrl('','module','document','act','dispDocumentAdminManageDocument')}" onclick="popopen(this.href,'manageDocument'); return false;" class="button"><span>{$lang->cmd_manage_document}</span></a>
<!--@end-->
<a href="{getUrl('','mid',$mid,'page',$page,'document_srl','','listStyle',$listStyle)}" class="button"><span>{$lang->cmd_list}</span></a>
</div>
<div class="boardBottom">
<div class="rightButtonBox">
<a href="{getUrl('act','dispBoardWrite','document_srl','')}" class="button"><span>{$lang->cmd_write}</span></a>
</div>
<!-- 페이지 네비게이션 -->
<div class="pageNavigation">
<a href="{getUrl('page','','document_srl','','division',$division,'last_division',$last_division)}" class="goToFirst"><img src="./images/common/bottomGotoFirst.gif" alt="{$lang->first_page}" width="7" height="5" /></a>
<!--@while($page_no = $page_navigation->getNextPage())-->
<!--@if($page == $page_no)-->
<span class="current">{$page_no}</span>
<!--@else-->
<a href="{getUrl('page',$page_no,'document_srl','','division',$division,'last_division',$last_division)}">{$page_no}</a>
<!-- 글쓰기, 목록 버튼 -->
<div class="leftButtonBox">
<!--@if($grant->is_admin)-->
<a href="{getUrl('','module','document','act','dispDocumentAdminManageDocument')}" onclick="popopen(this.href,'manageDocument'); return false;" class="button"><span>{$lang->cmd_manage_document}</span></a>
<!--@end-->
<!--@end-->
<a href="{getUrl('page',$page_navigation->last_page,'document_srl','','division',$division,'last_division',$last_division)}" class="goToLast"><img src="./images/common/bottomGotoLast.gif" alt="{$lang->last_page}" width="7" height="5" /></a>
</div>
<a href="{getUrl('','mid',$mid,'page',$page,'document_srl','','listStyle',$listStyle)}" class="button"><span>{$lang->cmd_list}</span></a>
</div>
<div class="rightButtonBox">
<a href="{getUrl('act','dispBoardWrite','document_srl','')}" class="button"><span>{$lang->cmd_write}</span></a>
</div>
<!-- 검색 -->
<!--@if($grant->view)-->
<div class="boardSearch">
<form action="{getUrl()}" method="get" onsubmit="return procFilter(this, search)" id="fo_search">
<input type="hidden" name="mid" value="{$mid}" />
<input type="hidden" name="category" value="{$category}" />
<select name="search_target">
<!--@foreach($search_option as $key => $val)-->
<option value="{$key}" <!--@if($search_target==$key)-->selected="selected"<!--@end-->>{$val}</option>
<!-- 페이지 네비게이션 -->
<div class="pageNavigation">
<a href="{getUrl('page','','document_srl','','division',$division,'last_division',$last_division)}" class="goToFirst"><img src="./images/common/bottomGotoFirst.gif" alt="{$lang->first_page}" width="7" height="5" /></a>
<!--@while($page_no = $page_navigation->getNextPage())-->
<!--@if($page == $page_no)-->
<span class="current">{$page_no}</span>
<!--@else-->
<a href="{getUrl('page',$page_no,'document_srl','','division',$division,'last_division',$last_division)}">{$page_no}</a>
<!--@end-->
</select>
<input type="text" name="search_keyword" value="{htmlspecialchars($search_keyword)}" class="inputTypeText"/>
<!--@if($last_division)-->
<a href="{getUrl('page',1,'document_srl','','division',$last_division,'last_division','')}" class="button"><span>{$lang->cmd_search_next}</span></a>
<!--@end-->
<a href="#" onclick="xGetElementById('fo_search').submit();return false;" class="button"><span>{$lang->cmd_search}</span></a>
<a href="{getUrl('','mid',$mid,'listStyle',$listStyle)}" class="button"><span>{$lang->cmd_cancel}</span></a>
</form>
<a href="{getUrl('page',$page_navigation->last_page,'document_srl','','division',$division,'last_division',$last_division)}" class="goToLast"><img src="./images/common/bottomGotoLast.gif" alt="{$lang->last_page}" width="7" height="5" /></a>
</div>
<!-- 검색 -->
<!--@if($grant->view)-->
<div class="boardSearch">
<form action="{getUrl()}" method="get" onsubmit="return procFilter(this, search)" id="fo_search">
<input type="hidden" name="mid" value="{$mid}" />
<input type="hidden" name="category" value="{$category}" />
<select name="search_target">
<!--@foreach($search_option as $key => $val)-->
<option value="{$key}" <!--@if($search_target==$key)-->selected="selected"<!--@end-->>{$val}</option>
<!--@end-->
</select>
<input type="text" name="search_keyword" value="{htmlspecialchars($search_keyword)}" class="inputTypeText"/>
<!--@if($last_division)-->
<a href="{getUrl('page',1,'document_srl','','division',$last_division,'last_division','')}" class="button"><span>{$lang->cmd_search_next}</span></a>
<!--@end-->
<a href="#" onclick="xGetElementById('fo_search').submit();return false;" class="button"><span>{$lang->cmd_search}</span></a>
<a href="{getUrl('','mid',$mid,'listStyle',$listStyle)}" class="button"><span>{$lang->cmd_cancel}</span></a>
</form>
</div>
<!--@end-->
</div>
<!--@end-->
<!--#include("footer.html")-->

View file

@ -87,6 +87,7 @@
<default>list</default>
<default>webzine</default>
<default>gallery</default>
<default>blog</default>
<default>forum</default>
</var>
<var name="order_target" type="select">

View file

@ -0,0 +1,50 @@
<!-- 검색된 글 목록이 있고 권한이 있을 경우 출력 -->
<!--@if($grant->list)-->
<!--@if($category || $search_keyword)-->
<!--@if($oDocument->isExists())-->
<div class="viewDocument">
<!--#include("./view_document.html")-->
</div>
<!--@end-->
<!-- 글이 선택되어 있거나 검색어가 있으면 목록을 출력 -->
<!--#include("./style.list.html")-->
<!--@elseif($oDocument->isExists())-->
<div class="viewDocument">
<!--#include("./view_document.html")-->
</div>
<!--@else-->
<!-- 공지사항 -->
<!--@foreach($notice_list as $no => $document)-->
<div class="blogNotice">
<span class="date">[{$document->getRegdate("Y-m-d")}]</span>
<a href="{getUrl('document_srl',$document->document_srl)}">{$document->getTitle()}</a>
<!--@if($document->getCommentCount())-->
<span class="replyAndTrackback" title="Replies"><img src="./images/common/iconReply.gif" alt="" width="12" height="12" class="icon" /> <strong>{$document->getCommentCount()}</strong></span>
<!--@end-->
<!--@if($document->getTrackbackCount())-->
<span class="replyAndTrackback" title="Trackbacks"><img src="./images/common/iconTrackback.gif" alt="" width="12" height="13" class="trackback icon" /> <strong>{$document->getTrackbackCount()}</strong></span>
<!--@end-->
{$document->printExtraImages(60*60*$module_info->duration_new)}
</div>
<!--@end-->
<!-- 일반글 -->
<!--@foreach($document_list as $no => $oDocument)-->
<div class="viewDocument">
<!--#include("./view_document.html")-->
</div>
<!--@end-->
<!--@end-->
<!--@end-->

View file

@ -1,24 +1,26 @@
<!-- 엮인글 목록 -->
<!--@if($oDocument->getTrackbackCount())-->
<div class="trackbackBox">
<!--@foreach($oDocument->getTrackbacks() as $key => $val)-->
<div class="trackbackItem">
<a name="trackback_{$val->trackback_srl}"></a>
<address>
<a href="{$val->url}" onclick="winopen(this.href);return false;">{htmlspecialchars($val->title)} - {htmlspecialchars($val->blog_name)}</a>
<a href="{getUrl('act','dispBoardDeleteTrackback','trackback_srl',$val->trackback_srl)}"><img src="./images/common/buttonDeleteX.gif" border="0" alt="delete" width="12" height="13" /></a>
<span class="date">
{zdate($val->regdate, "Y.m.d H:i")}
({$val->ipaddress})
</span>
</address>
<div>
<a href="{$val->url}" onclick="winopen(this.href);return false;">{$val->excerpt}</a>
<div class="trackbackUrl"><a name="trackback" href="{$oDocument->getTrackbackUrl()}" onclick="return false;">{$lang->trackback_url} : {$oDocument->getTrackbackUrl()}</a></div>
<!--@if($oDocument->getTrackbackCount())-->
<!--@foreach($oDocument->getTrackbacks() as $key => $val)-->
<div class="trackbackItem">
<a name="trackback_{$val->trackback_srl}"></a>
<address>
<a href="{$val->url}" onclick="winopen(this.href);return false;">{htmlspecialchars($val->title)} - {htmlspecialchars($val->blog_name)}</a>
<a href="{getUrl('act','dispBoardDeleteTrackback','trackback_srl',$val->trackback_srl)}"><img src="./images/common/buttonDeleteX.gif" border="0" alt="delete" width="12" height="13" /></a>
<span class="date">
{zdate($val->regdate, "Y.m.d H:i")}
({$val->ipaddress})
</span>
</address>
<div>
<a href="{$val->url}" onclick="winopen(this.href);return false;">{$val->excerpt}</a>
</div>
</div>
</div>
<!--@end-->
<!--@end-->
</div>
<!--@end-->

View file

@ -2,57 +2,66 @@
<div class="boardRead">
<div class="originalContent">
<div class="readHeader">
<div class="titleAndCategory">
<div class="titleAndUser">
<h4>{$oDocument->getTitle()}</h4>
<div class="title">
<h4><a href="{$oDocument->getPermanentUrl()}">{$oDocument->getTitle()}</a></h4>
</div>
<!--@if($module_info->use_category == "Y" && $oDocument->get('category_srl'))-->
<span class="vr">-</span><span class="category">{$category_list[$oDocument->get('category_srl')]->title}</span>
<!--@end-->
<div class="userInfo">
<!--@if(!$oDocument->getMemberSrl())-->
<div class="author">
<!--@if($oDocument->isExistsHomepage())-->
<a href="{$oDocument->getHomepageUrl()}" onclick="window.open(this.href);return false;">{$oDocument->getNickName()}</a>
<!--@else-->
{$oDocument->getNickName()}
<!--@end-->
</div>
<!--@else-->
<div class="author"><span class="member_{$oDocument->get('member_srl')}">{$oDocument->getNickName()}</span></div>
<!--@end-->
</div>
<div class="clear"></div>
</div>
<div class="dateAndCount">
{$lang->readed_count}:
<strong>{$oDocument->get('readed_count')}</strong>,
<div class="date" title="{$lang->regdate}">
<strong>{$oDocument->getRegdate('Y.m.d')}</strong> {$oDocument->getRegdate('H:i:s')}
</div>
<div class="readedCount" title="{$lang->readed_count}">{$oDocument->get('readed_count')}</div>
<!--@if($oDocument->get('voted_count')!=0)-->
{$lang->voted_count}:
<strong>{$oDocument->get('voted_count')}</strong>,
<div class="votedCount" title="{$lang->voted_count}">
<strong>{$oDocument->get('voted_count')}</strong>
</div>
<!--@end-->
<strong>{$oDocument->getRegdate('Y.m.d')}</strong> {$oDocument->getRegdate('H:i:s')}
</div>
<div class="clear"></div>
</div>
<div class="contentInfo">
<div class="userInfo">
<!--@if(!$oDocument->getMemberSrl())-->
<div class="author">
<!--@if($oDocument->isExistsHomepage())-->
<a href="{$oDocument->getHomepageUrl()}" onclick="window.open(this.href);return false;">{$oDocument->getNickName()}</a>
<!--@else-->
{$oDocument->getNickName()}
<div class="replyAndTrackback">
<!--@if($grant->write_comment && $oDocument->allowComment()) -->
<a href="#comment" class="reply" title="{$lang->comment}"><strong>{$oDocument->getCommentcount()}</strong></a>
<!--@end-->
</div>
<!--@else-->
<div class="author"><span class="member_{$oDocument->get('member_srl')}">{$oDocument->getNickName()}</span></div>
<!--@if($oDocument->allowTrackback() && $oDocument->getTrackbackCount() )-->
<a href="#trackback" class="trackback" title="{$lang->trackback}"><strong>{$oDocument->getTrackbackCount()}</strong></a>
<!--@end-->
</div>
<!--@if($module_info->use_category == "Y" && $oDocument->get('category_srl'))-->
<div class="category" title="{$lang->category}"><a href="{getUrl('category',$oDocument->get('category_srl'), 'document_srl', '')}">{$category_list[$oDocument->get('category_srl')]->title}</a></div>
<!--@end-->
<!--@if($grant->is_admin)-->
<div class="ipaddress">{$oDocument->get('ipaddress')}</div>
<!--@end-->
<div class="uri" title="{$lang->document_url}"><a href="{$oDocument->getPermanentUrl()}">{$oDocument->getPermanentUrl()}</a></div>
<div class="clear"></div>
</div>
<ul class="uri">
<li>{$lang->document_url} : {$oDocument->getPermanentUrl()}</li>
<!--@if($oDocument->allowTrackback())-->
<li>{$lang->trackback_url} : {$oDocument->getTrackbackUrl()}</li>
<!--@end-->
</ul>
<div class="clear"></div>
</div>
<div class="clear"></div>
<!--@if($oDocument->isExtraVarsExists() && (!$oDocument->isSecret() || $oDocument->isGranted()) )-->
<table cellspacing="0" summary="" class="extraVarsList">
<col width="150" />
@ -91,6 +100,9 @@
{$oDocument->getContent()}
<!--@end-->
<!--@if($grant->is_admin)-->
<div class="ipaddress">ipaddress : {$oDocument->get('ipaddress')}</div>
<!--@end-->
</div>
</div>
@ -108,9 +120,8 @@
<!--@if($oDocument->hasUploadedFiles())-->
<div class="fileAttached">
<h5>{$lang->uploaded_file} : </h5>
{@ $uploaded_list = $oDocument->getUploadedFiles() }
<ul>
{@ $uploaded_list = $oDocument->getUploadedFiles() }
<!--@foreach($uploaded_list as $key => $file)-->
<li><a href="{getUrl('')}{$file->download_url}">{$file->source_filename} ({FileHandler::filesize($file->file_size)})({number_format($file->download_count)})</a></li>
<!--@end-->
@ -120,75 +131,63 @@
<!--@end-->
</div>
<div class="buttonBox">
<div class="replyAndTrackback">
<!--@if($grant->write_comment && $oDocument->allowComment()) -->
<a href="#comment" class="reply">{$lang->comment} : <strong>{$oDocument->getCommentcount()}</strong></a>
<!--@end-->
<!--@if($oDocument->allowTrackback())-->
<a href="#trackback" class="trackback">{$lang->trackback} : <strong>{$oDocument->getTrackbackCount()}</strong></a>
<!--@end-->
</div>
<!-- 목록, 수정/삭제 버튼 -->
<div class="contentButton">
<a href="{getUrl('document_srl','')}" class="button"><span>{$lang->cmd_list}</span></a>
<!--@if($oDocument->isEditable())-->
<a href="{getUrl('act','dispBoardWrite','document_srl',$oDocument->document_srl)}" class="button"><span>{$lang->cmd_modify}</span></a>
<a href="{getUrl('act','dispBoardDelete','document_srl',$oDocument->document_srl)}" class="button"><span>{$lang->cmd_delete}</span></a>
<!--@end-->
</div>
<!-- 목록, 수정/삭제 버튼 -->
<div class="contentButton">
<a href="{getUrl('document_srl','')}" class="button"><span>{$lang->cmd_list}</span></a>
<!--@if($oDocument->isEditable())-->
<a href="{getUrl('act','dispBoardWrite','document_srl',$oDocument->document_srl)}" class="button"><span>{$lang->cmd_modify}</span></a>
<a href="{getUrl('act','dispBoardDelete','document_srl',$oDocument->document_srl)}" class="button"><span>{$lang->cmd_delete}</span></a>
<!--@end-->
</div>
<div class="clear"></div>
</div>
<!-- 엮인글 -->
<!--@if($oDocument->allowTrackback())-->
<a name="trackback"></a>
<!--#include("./trackback.html")-->
<!--@end-->
<!--@if($oDocument->allowTrackback())-->
<!--#include("./trackback.html")-->
<!--@end-->
<!-- 댓글 -->
<a name="comment"></a>
<!--#include("./comment.html")-->
<a name="comment"></a>
<!--#include("./comment.html")-->
<!-- 댓글 입력 폼 -->
<!--@if($grant->write_comment && !$oDocument->isLocked() && $oDocument->allowComment() )-->
<!--%import("filter/insert_comment.xml")-->
<form action="./" method="post" onsubmit="return procFilter(this, insert_comment)" class="boardEditor" >
<input type="hidden" name="mid" value="{$mid}" />
<input type="hidden" name="document_srl" value="{$document_srl}" />
<input type="hidden" name="comment_srl" value="" />
<input type="hidden" name="content" value="" />
<div class="boardWrite commentEditor">
<div class="userNameAndPw">
<!--@if(!$is_logged)-->
<label for="userName">{$lang->writer}</label>
<input type="text" name="nick_name" value="" class="userName inputTypeText" id="userName"/>
<!-- 댓글 입력 폼 -->
<!--@if($grant->write_comment && !$oDocument->isLocked() && $oDocument->allowComment() )-->
<!--%import("filter/insert_comment.xml")-->
<form action="./" method="post" onsubmit="return procFilter(this, insert_comment)" class="boardEditor" >
<input type="hidden" name="mid" value="{$mid}" />
<input type="hidden" name="document_srl" value="{$oDocument->document_srl}" />
<input type="hidden" name="comment_srl" value="" />
<input type="hidden" name="content" value="" />
<div class="boardWrite commentEditor">
<div class="userNameAndPw">
<!--@if(!$is_logged)-->
<label for="userName">{$lang->writer}</label>
<input type="text" name="nick_name" value="" class="userName inputTypeText" id="userName"/>
<label for="userPw">{$lang->password}</label>
<input type="password" name="password" value="" id="userPw" class="userPw inputTypeText" />
<label for="userPw">{$lang->password}</label>
<input type="password" name="password" value="" id="userPw" class="userPw inputTypeText" />
<label for="emailAddress">{$lang->email_address}</label>
<input type="text" name="email_address" value="" id="emailAddress" class="emailAddress inputTypeText"/>
<label for="emailAddress">{$lang->email_address}</label>
<input type="text" name="email_address" value="" id="emailAddress" class="emailAddress inputTypeText"/>
<label for="homePage">{$lang->homepage}</label>
<input type="text" name="homepage" value="" id="homePage" class="homePage inputTypeText"/>
<!--@else-->
<input type="checkbox" name="notify_message" value="Y" id="notify_message" />
<label for="notify_message">{$lang->notify}</label>
<!--@end-->
<label for="homePage">{$lang->homepage}</label>
<input type="text" name="homepage" value="" id="homePage" class="homePage inputTypeText"/>
<!--@else-->
<input type="checkbox" name="notify_message" value="Y" id="notify_message" />
<label for="notify_message">{$lang->notify}</label>
<!--@end-->
<input type="checkbox" name="is_secret" value="Y" id="is_secret" />
<label for="is_secret">{$lang->secret}</label>
<input type="checkbox" name="is_secret" value="Y" id="is_secret" />
<label for="is_secret">{$lang->secret}</label>
</div>
<div class="editor">{$comment_editor}</div>
</div>
<div class="commentButton tRight">
<span class="button"><input type="submit" value="{$lang->cmd_comment_registration}" accesskey="s" /></span>
</div>
</form>
<!--@end-->
<div class="editor">{$oDocument->getCommentEditor()}</div>
</div>
<div class="commentButton tRight">
<span class="button"><input type="submit" value="{$lang->cmd_comment_registration}" accesskey="s" /></span>
</div>
</form>
<!--@end-->

View file

@ -92,7 +92,7 @@
</table>
<!--@end-->
<div class="editor">{$editor}</div>
<div class="editor">{$oDocument->getEditor()}</div>
<div class="tag">
<input type="text" name="tags" value="{htmlspecialchars($oDocument->get('tags'))}" class="inputTypeText" />

View file

@ -39,10 +39,18 @@
<th scope="row">{$lang->list_count}</th>
<td>{$module_info->list_count?$module_info->list_count:20}</td>
</tr>
<tr>
<th scope="row">{$lang->search_list_count}</th>
<td>{$module_info->search_list_count?$module_info->search_list_count:20}</td>
</tr>
<tr>
<th scope="row">{$lang->page_count}</th>
<td>{$module_info->page_count?$module_info->page_count:10}</td>
</tr>
<tr>
<th scope="row">{$lang->except_notice}</th>
<td>{$module_info->except_notice=='N'?$lang->notuse:$lang->use}</td>
</tr>
<tr>
<th scope="row">{$lang->description}</th>
<td>{nl2br(htmlspecialchars($module_info->description))}&nbsp;</td>

View file

@ -91,6 +91,13 @@
<p>{$lang->about_list_count}</p>
</td>
</tr>
<tr>
<th scope="row">{$lang->search_list_count}</th>
<td>
<input type="text" name="search_list_count" value="{$module_info->search_list_count?$module_info->search_list_count:20}" class="inputTypeText" />
<p>{$lang->about_search_list_count}</p>
</td>
</tr>
<tr>
<th scope="row">{$lang->page_count}</th>
<td>
@ -98,7 +105,13 @@
<p>{$lang->about_page_count}</p>
</td>
</tr>
<tr>
<th scope="row">{$lang->except_notice}</th>
<td>
<input type="checkbox" name="except_notice" value="Y" <!--@if($module_info->except_notice!='N')-->checked="checked"<!--@end--> />
<p>{$lang->about_except_notice}</p>
</td>
</tr>
<tr>
<th scope="row">{$lang->description}</th>
<td>

View file

@ -3,6 +3,7 @@
<node target="mid" required="true" filter="alpha_number" />
<node target="browser_title" required="true" maxlength="250" />
<node target="list_count" required="true" filter="number" />
<node target="search_list_count" required="true" filter="number" />
<node target="page_count" required="true" filter="number" />
</form>
<parameter>
@ -14,6 +15,8 @@
<param name="browser_title" target="browser_title" />
<param name="use_category" target="use_category" />
<param name="list_count" target="list_count" />
<param name="search_list_count" target="search_list_count" />
<param name="except_notice" target="except_notice" />
<param name="page_count" target="page_count" />
<param name="is_default" target="is_default" />
<param name="description" target="description" />

View file

@ -249,5 +249,14 @@
$file_list = $oFileModel->getFiles($this->comment_srl, $is_admin);
return $file_list;
}
/**
* @brief 에디터 html을 구해서 return
**/
function getEditor() {
$oEditorModel = &getModel('editor');
return $oEditorModel->getModuleEditor('comment', $this->get('module_srl'), $this->comment_srl, 'comment_srl', 'content');
}
}
?>

View file

@ -369,8 +369,7 @@
}
function getComments() {
if(!$this->allowComment() || !$this->get('comment_count')) return;
if(!$this->isGranted() && $this->isSecret()) return;
if(!$this->allowComment() || !$this->getCommentCount()) return;
$oCommentModel = &getModel('comment');
$output = $oCommentModel->getCommentList($this->document_srl, $is_admin);
@ -560,5 +559,21 @@
$file_list = $oFileModel->getFiles($this->document_srl, $is_admin);
return $file_list;
}
/**
* @brief 에디터 html을 구해서 return
**/
function getEditor() {
$oEditorModel = &getModel('editor');
return $oEditorModel->getModuleEditor('document', $this->get('module_srl'), $this->document_srl, 'document_srl', 'content');
}
/**
* @brief 댓글 에디터 html을 구해서 return
**/
function getCommentEditor() {
$oEditorModel = &getModel('editor');
return $oEditorModel->getModuleEditor('comment', $this->get('module_srl'), $comment_srl, 'comment_srl', 'content');
}
}
?>

View file

@ -17,8 +17,6 @@
*
* , 수정하는 경우 또는 파일업로드를 자동저장본의 경우는 getNextSequence() 값으로 저장된 editor_seqnece가
* 설정된다.
*
* editor_sequence <= 30 일경우에는 무조건 가상의 번호로 판별함
**/
/**
@ -190,7 +188,7 @@
Context::set('editor_path', $tpl_path);
// tpl 파일을 compile한 결과를 return
$oTemplate = &TemplateHandler::getInstance();
$oTemplate = new TemplateHandler();
return $oTemplate->compile($tpl_path, $tpl_file);
}

View file

@ -32,16 +32,17 @@
.xeEditor .editor_info .editor_autosaved_message { display:none; color:#888888; float:right; }
.xeEditor .inputTypeTextArea { background:#fbfbfb; padding:1em; width:94%;}
.xeEditor #textAreaDrag {}
.xeEditor .fileAttach { padding:0 1em .5em 1em;}
.xeEditor .fileAttach .preview { padding:5px; width:110px; height:110px; border:1px solid #e1e1dd; background:transparent; float:left; margin-right:.5em;}
.xeEditor .fileAttach .preview img { width:110px; height:110px; float:left; display:block;}
.xeEditor .fileAttach .fileListArea { float:left; width:50%; margin-right:.7em; padding-bottom:.5em; margin-bottom:1em}
.xeEditor .fileAttach .fileListArea .fileList { overflow:auto; width:100%; height:auto; border:1px solid; border-color:#a6a6a6 #d8d8d8 #d8d8d8 #a6a6a6; margin-bottom:.3em; font-size:11px;}
.xeEditor .fileAttach { border:none; table-layout:fixed; margin:0 10px 0 10px; }
.xeEditor .fileAttach .preview { padding:5px; border:1px solid #e1e1dd; width:100px; height:100px; margin-right:10px;}
.xeEditor .fileAttach .preview img { width:100px; height:100px; }
.xeEditor .fileAttach .fileListArea .fileList { overflow:auto; width:100%; height:auto; border:1px solid; border-color:#a6a6a6 #d8d8d8 #d8d8d8 #a6a6a6; margin-bottom:10px; font-size:11px;}
.xeEditor .fileAttach .fileListArea .fileList option { line-height:100%; padding-left:.5em;}
.xeEditor .fileAttach .fileListArea span.file_attach_info { color:#3f4040; font-size:11px; text-align:left;}
.xeEditor .fileAttach .fileListArea span.file_attach_info strong { color:#ff6600; font-size:11px; font-weight:bold; }
.xeEditor .fileAttach .fileUploadControl { margin-bottom:5px; }
.xeEditor .fileAttach .fileUploadControl { float:left; }
.xeEditor .fileAttach .file_attach_info { color:#AAAAAA; font-size:.9em; _font-size:7pt; text-align:right;}
*:first-child+html .xeEditor .fileAttach .file_attach_info { font-size:7pt; }
.xeEditor .fileAttach .fileUploadControl .uploaderButton { display:block; cursor:pointer; background:url(../images/buttonTypeBCenter.gif) repeat-x left center; line-height:100%; overflow:visible; color:#3f4040; margin:0 1px; font-size:.9em; white-space:nowrap;}
.xeEditor .fileAttach .fileUploadControl .uploaderButton:hover { text-decoration:none;}

View file

@ -163,21 +163,25 @@
<!--@end-->
//]]></script>
<div class="fileAttach">
<div class="preview" id="preview_uploaded_{$editor_sequence}"><img src="./images/blank.gif" alt="preview" width="100" height="100" /></div>
<!-- 파일 업로드 영역 -->
<div class="fileListArea">
<select id="uploaded_file_list_{$editor_sequence}" multiple="multiple" size="5" class="fileList" onclick="editor_preview(this, '{$editor_sequence}');"></select>
<span class="file_attach_info" id="uploader_status_{$editor_sequence}">{$upload_status}</span>
</div>
<div class="fileUploadControl"><a href="#" onclick="editor_upload_file('{$editor_sequence}');return false;" class="button"><span>{$lang->edit->upload_file}</span></a></div>
<div class="fileUploadControl"><a href="#" onclick="editor_remove_file('{$editor_sequence}');return false;" class="button"><span>{$lang->edit->delete_selected}</span></a></div>
<div class="fileUploadControl"><a href="#" onclick="editor_insert_file('{$editor_sequence}');return false;" class="button"><span>{$lang->edit->link_file}</span></a></div>
<div class="clear"></div>
</div>
<table cellspacing="0" class="fileAttach">
<col width="120" />
<col width="100%" />
<tr valign="top">
<td width="120"><div class="preview" id="preview_uploaded_{$editor_sequence}"><img src="./images/blank.gif" alt="preview" width="100" height="100" /></div></td>
<td>
<!-- 파일 업로드 영역 -->
<div class="fileListArea">
<select id="uploaded_file_list_{$editor_sequence}" multiple="multiple" size="5" class="fileList" onclick="editor_preview(this, '{$editor_sequence}');"></select>
</div>
<div class="fileUploadControl">
<a href="#" onclick="editor_upload_file('{$editor_sequence}');return false;" class="button"><span>{$lang->edit->upload_file}</span></a>
<a href="#" onclick="editor_remove_file('{$editor_sequence}');return false;" class="button"><span>{$lang->edit->delete_selected}</span></a>
<a href="#" onclick="editor_insert_file('{$editor_sequence}');return false;" class="button"><span>{$lang->edit->link_file}</span></a>
</div>
<div class="file_attach_info" id="uploader_status_{$editor_sequence}">{$upload_status}</div>
</td>
</tr>
</table>
<!--@end-->
</div>

View file

@ -51,7 +51,8 @@
$lang->about_footer_text = 'The contents will be shown on the bottom of the module.(html tags available)';
$lang->about_skin = 'You may choose a module skin.';
$lang->about_use_category = 'If checked, category function will be enabled.';
$lang->about_list_count = 'You can set the number of limit to show article in a page.(default is 1)';
$lang->about_list_count = 'You can set the number of limit to show article in a page.(default is 20)';
$lang->about_search_list_count = '검색 또는 카테고리 선택등을 할 경우 표시될 글의 수를 지정하실 수 있습니다. 기본(20개)';
$lang->about_page_count = 'You can set the number of page link to move pages in a bottom of page.(default is 10)';
$lang->about_admin_id = 'You can grant a manager to have all permissions to the module.\n You can enter multiple IDs using <br />,(comma) \n(but the module manager cannot access the site admin page.)';
$lang->about_grant = 'If you disable all permissions for a specific object, members who has not logged in would get permission.';

View file

@ -51,7 +51,8 @@
$lang->about_footer_text = 'El contenido se mostrará en la parte inferior del módulo.(tags de html permitido)';
$lang->about_skin = 'Usted puede elegir un tema del módulo.';
$lang->about_use_category = 'Si selecciona esta opción, la función de categoría sera activada.';
$lang->about_list_count = 'Usted puede definir el número límite de los documentos a mostrar en una página.(Predefinido es 1)';
$lang->about_list_count = 'Usted puede definir el número límite de los documentos a mostrar en una página.(Predefinido es 20)';
$lang->about_search_list_count = '검색 또는 카테고리 선택등을 할 경우 표시될 글의 수를 지정하실 수 있습니다. 기본(20개)';
$lang->about_page_count = 'Usted puede definir el número de página enlazada para mover páginas en un botón de la página.(Predefinido es 10)';
$lang->about_admin_id = 'Usted puede definir el administrador de atribuciones superiores al módulo.\n Usted puede asignar múltiples IDs,<br />utilizando una ","(coma) \n(pero el administrador del módulo no puede acceder al sitio de la pógina del administrador.)';
$lang->about_grant = 'Si usted desea desactivar a todos los objetos teniendo atribuciones especificas, incluso el usuario no conectado pueden tener atribuciones.';

View file

@ -51,7 +51,8 @@
$lang->about_footer_text = 'モジュールのフッターに表示される内容です。HTMLタグが使用できる。';
$lang->about_skin = 'モジュールのスキンを選択することができます。';
$lang->about_use_category = 'チェックするとカテゴリ機能が使用できます。';
$lang->about_list_count = '1ページ当たりに表示される書き込みの数が指定できます(デフォルト1個)。';
$lang->about_list_count = 'ページ当たりに表示される書き込みの数が指定できますデフォルト20個。';
$lang->about_search_list_count = '검색 또는 카테고리 선택등을 할 경우 표시될 글의 수를 지정하실 수 있습니다. 기본(20개)';
$lang->about_page_count = 'リストの下段に移動できるページのリンク数が指定できます(デフォルト10個)。';
$lang->about_admin_id = '該当するモジュールに対して最高権限を持つ管理者を指定することができます。「,(コンマ)」で区切って多数のIDが指定できます(管理者ページへのアクセスはできません)。';
$lang->about_grant = '特定権限の対象をすべて解除するとログインしていない会員ユーザまで権限が与えられます。';

View file

@ -51,7 +51,8 @@
$lang->about_footer_text = '모듈의 하단에 표시되는 내용입니다 (html 태그 사용 가능)';
$lang->about_skin = '모듈의 스킨을 선택하실 수 있습니다';
$lang->about_use_category = '선택하시면 분류기능을 사용할 수 있습니다';
$lang->about_list_count = '한페이지에 표시될 글의 수를 지정하실 수 있습니다. (기본 1개)';
$lang->about_list_count = '한페이지에 표시될 글의 수를 지정하실 수 있습니다. (기본 20개)';
$lang->about_search_list_count = '검색 또는 카테고리 선택등을 할 경우 표시될 글의 수를 지정하실 수 있습니다. 기본(20개)';
$lang->about_page_count = '목록 하단 페이지 이동 하는 링크의 수를 지정하실 수 있습니다. (기본 10개)';
$lang->about_admin_id = '해당 모듈에 대해 최고 권한을 가지는 관리자를 지정할 수 있습니다.<br />,(콤마)로 다수 아이디 지정이 가능합니다. (관리자페이지 접근은 불가능)';
$lang->about_grant = '특정 권한의 대상을 모두 해제하시면 로그인하지 않은 회원까지 권한을 가질 수 있습니다';

View file

@ -51,7 +51,8 @@
$lang->about_footer_text = 'Это содержимое будет показано снизу модуля. (HTML разрешен)';
$lang->about_skin = 'Вы можете выбрать скин модуля.';
$lang->about_use_category = 'Если выбрано, функция категорий будет включена.';
$lang->about_list_count = 'Вы можете установить лимит показа статей на страницу. (по умолчанию: 1)';
$lang->about_list_count = 'Вы можете установить лимит показа статей на страницу. (по умолчанию: 20)';
$lang->about_search_list_count = '검색 또는 카테고리 선택등을 할 경우 표시될 글의 수를 지정하실 수 있습니다. 기본(20개)';
$lang->about_page_count = 'Вы можете установить число страниц внизу. (по умолчанию: 10)';
$lang->about_admin_id = 'Вы можете разрешить менеджеру иметь полные права доступа к этому модулю.\nВы можете ввести несколько ID, используя <br />запятую \n(но менеджер модуля не имеет права доступа к странице администрирования сайта.)';
$lang->about_grant = 'Если Вы отключите все права доступа для отдельного объекта, не прошедшие процедуру входа на сайт пользователи получат доступ.';

View file

@ -51,7 +51,8 @@
$lang->about_footer_text = '显示在模块底部的内容。(可以使用HTML)';
$lang->about_skin = '可以选择模块皮肤。';
$lang->about_use_category = '选择此项可以使用分类功能。';
$lang->about_list_count = '可以指定每页显示的主题数。(默认为1个)';
$lang->about_list_count = '可以指定每页显示的主题数。(默认为20个)';
$lang->about_search_list_count = '검색 또는 카테고리 선택등을 할 경우 표시될 글의 수를 지정하실 수 있습니다. 기본(20개)';
$lang->about_page_count = '可以指定显示在目录下方的页面数。 (默认为10个)';
$lang->about_admin_id = '可以对该模块指定最高管理权限。<br />有多名管理员时,可以用,(逗号)来分隔。 (不能访问管理页面)';
$lang->about_grant = '全部解除特定权限的对象时,没有登录的会员也将具有相关权限。';