mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-01-24 21:59:55 +09:00
beta.0.2.0 배포 준비
git-svn-id: http://xe-core.googlecode.com/svn/trunk@2741 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
commit
c490e370f3
118 changed files with 1655 additions and 761 deletions
|
|
@ -1,16 +1,23 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<addon version="0.1">
|
||||
<title xml:lang="ko">Google Analytics</title>
|
||||
<title xml:lang="zh-CN">Google Analytics</title>
|
||||
<author email_address="zero@zeroboard.com" link="http://www.zeroboard.com" date="2007. 9. 19">
|
||||
<name xml:lang="ko">제로</name>
|
||||
<name xml:lang="zh-CN">Zero</name>
|
||||
<description xml:lang="ko">
|
||||
Google Analytics 코드를 사이트에 추가할 수 있습니다.
|
||||
</description>
|
||||
<description xml:lang="zh-CN">
|
||||
可以添加Google Analytics代码。
|
||||
</description>
|
||||
</author>
|
||||
<extra_vars>
|
||||
<var name="uacct">
|
||||
<title xml:lang="ko">uacct</title>
|
||||
<title xml:lang="zh-CN">uacct</title>
|
||||
<description xml:lang="ko">Google Analytics 코드의 _uacct 값을 입력해주세요.</description>
|
||||
<description xml:lang="ko">请输入Google Analytics代码的_uacct值。</description>
|
||||
</var>
|
||||
</extra_vars>
|
||||
</addon>
|
||||
|
|
|
|||
|
|
@ -89,6 +89,7 @@
|
|||
|
||||
// 대상 회원의 정보를 가져옴
|
||||
$target_member_info = $this->getMemberInfoByMemberSrl($member_srl);
|
||||
if(!$target_member_info->member_srl) return;
|
||||
|
||||
// 4. 쪽지 발송 메뉴를 만듬
|
||||
if( $target_member_info->allow_message =='Y' || ($target_member_info->allow_message == 'F' && $this->isFriend($member_srl))) {
|
||||
|
|
|
|||
|
|
@ -159,6 +159,21 @@
|
|||
$cur_point -= $point;
|
||||
$oPointController = &getController('point');
|
||||
$oPointController->setPoint($target_member_srl,$cur_point);
|
||||
|
||||
// 회원 가입일 경우
|
||||
} elseif(strpos($config->signup_act,$this->act)!==false) {
|
||||
// 가입이 제대로 되었는지 체크
|
||||
if(!$this->toBool()||!$this->get('member_srl')) return;
|
||||
$member_srl = $this->get('member_srl');
|
||||
|
||||
// 포인트를 구해옴
|
||||
$point = $config->module_point[$module_srl]['signup'];
|
||||
if($point == null) $point = $config->signup;
|
||||
|
||||
// 포인트 증감
|
||||
$cur_point += $point;
|
||||
$oPointController = &getController('point');
|
||||
$oPointController->setPoint($member_srl,$cur_point);
|
||||
}
|
||||
|
||||
// 파일다운로드는 before_module_proc 일때 체크
|
||||
|
|
|
|||
|
|
@ -355,6 +355,17 @@
|
|||
return $obj;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 특정 문자열만 utf-8로 변경
|
||||
**/
|
||||
function convertEncodingStr($str) {
|
||||
$obj->str = $str;
|
||||
$obj = Context::convertEncoding($obj);
|
||||
return $obj->str;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @brief response method를 강제로 지정 (기본으로는 request method를 이용함)
|
||||
*
|
||||
|
|
|
|||
|
|
@ -182,7 +182,7 @@
|
|||
/**
|
||||
* @brief 특정 이미지 파일을 특정 위치로 옮김 (옮길때 이미지의 크기를 리사이징할 수 있음..)
|
||||
**/
|
||||
function createImageFile($source_file, $target_file, $resize_width = 0, $resize_height = 0, $target_type = '') {
|
||||
function createImageFile($source_file, $target_file, $resize_width = 0, $resize_height = 0, $target_type = '', $thumbnail_type = 'crop') {
|
||||
if(!file_exists($source_file)) return;
|
||||
if(!$resize_width) $resize_width = 100;
|
||||
if(!$resize_height) $resize_height = $resize_width;
|
||||
|
|
@ -227,8 +227,14 @@
|
|||
if($resize_height>0 && $height >= $resize_height) $height_per = $resize_height / $height;
|
||||
else $height_per = $height / $resize_height;
|
||||
|
||||
if($width_per > $height_per) $per = $height_per;
|
||||
else $per = $width_per;
|
||||
if($thumbnail_type == 'ratio') {
|
||||
if($width_per > $height_per) $per = $height_per;
|
||||
else $per = $width_per;
|
||||
} else {
|
||||
if($width_per < $height_per) $per = $height_per;
|
||||
else $per = $width_per;
|
||||
|
||||
}
|
||||
|
||||
if(!$per) $per = 1;
|
||||
|
||||
|
|
|
|||
|
|
@ -91,12 +91,14 @@
|
|||
$file = $targets[$i];
|
||||
$str = FileHandler::readFile($file);
|
||||
|
||||
$str = Context::convertEncodingStr($str);
|
||||
|
||||
// css 일경우 background:url() 변경
|
||||
if($type == "css") $str = $this->replaceCssPath($file, $str);
|
||||
|
||||
$content_buff .= $str."\r\n";
|
||||
}
|
||||
if(Context::isGzEnabled()) $content_buff = ob_gzhandler($content_buff, 5);
|
||||
if($type!="css" && Context::isGzEnabled()) $content_buff = ob_gzhandler($content_buff, 5);
|
||||
|
||||
$content_file = eregi_replace("\.php$","",$filename);
|
||||
$content_filename = str_replace($this->cache_path, '', $content_file);
|
||||
|
|
@ -110,7 +112,7 @@
|
|||
$modified_time = gmdate("D, d M Y H:i:s");
|
||||
|
||||
// gzip 압축 체크
|
||||
if(Context::isGzEnabled()) $gzip_header = 'header("Content-Encoding: gzip");';
|
||||
if($type!="css" && Context::isGzEnabled()) $gzip_header = 'header("Content-Encoding: gzip");';
|
||||
|
||||
// 확장자별 content-type 체크
|
||||
if($type == 'css') $content_type = 'text/css';
|
||||
|
|
|
|||
|
|
@ -649,6 +649,16 @@ function checkboxSelectAll(form, name, option){
|
|||
else if(option == true) value = true
|
||||
else if(option == false) value = false
|
||||
|
||||
if(fo_obj[i].name == name) fo_obj[i].checked = value;
|
||||
//if(fo_obj[i].name == name) fo_obj[i].checked = value;
|
||||
if(fo_obj[i].name == name) fo_obj[i].click();
|
||||
}
|
||||
}
|
||||
|
||||
/* 관리자가 문서를 관리하기 위해서 선택시 세션에 넣음 */
|
||||
function doAddDocumentCart(obj) {
|
||||
var srl = obj.value;
|
||||
var params = new Array();
|
||||
params["srl"] = srl;
|
||||
exec_xml("document","procDocumentAdminAddCart", params, null);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -177,8 +177,8 @@
|
|||
$lang->success_reset = '초기화되었습니다';
|
||||
$lang->success_leaved = '탈퇴되었습니다';
|
||||
|
||||
$lang->fail_to_delete = '삭제되었습니다';
|
||||
$lang->fail_to_move = '이동되었습니다';
|
||||
$lang->fail_to_delete = '삭제 실패하였습니다';
|
||||
$lang->fail_to_move = '이동 실패하였습니다';
|
||||
|
||||
$lang->failed_voted = '추천하실 수 없습니다';
|
||||
$lang->fail_to_delete_have_children = '답글이 있어서 삭제할 수 없습니다';
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@
|
|||
* 이 내용은 제로보드XE의 버전을 관리자 페이지에 표시하기 위한 용도이며
|
||||
* config.inc.php의 수정이 없더라도 공식 릴리즈시에 수정되어 함께 배포되어야 함
|
||||
**/
|
||||
define('__ZBXE_VERSION__', '0.1.9');
|
||||
define('__ZBXE_VERSION__', '0.2.0');
|
||||
|
||||
/**
|
||||
* @brief 디버깅 메세지 출력
|
||||
|
|
|
|||
|
|
@ -27,7 +27,17 @@
|
|||
<!--@end-->
|
||||
</div>
|
||||
|
||||
<div class="member_{$val->member_srl} author">{htmlspecialchars($val->nick_name)}</div>
|
||||
<div class="author">
|
||||
<!--@if(!$val->member_srl)-->
|
||||
<!--@if($val->homepage)-->
|
||||
<a href="{$val->homepage}" onclick="window.open(this.href);return false;">{htmlspecialchars($val->nick_name)}</a>
|
||||
<!--@else-->
|
||||
{htmlspecialchars($val->nick_name)}
|
||||
<!--@end-->
|
||||
<!--@else-->
|
||||
<div class="member_{$val->member_srl}">{htmlspecialchars($val->nick_name)}</div>
|
||||
<!--@end-->
|
||||
</div>
|
||||
|
||||
<div class="replyContent">
|
||||
{$val->content}
|
||||
|
|
|
|||
|
|
@ -211,6 +211,7 @@ ul.replyZone .replyOption { float:right; white-space:nowrap; margin-left:.2em;}
|
|||
ul.replyZone .replyOption img { vertical-align:middle;}
|
||||
|
||||
ul.replyZone .replyContent { clear:left; }
|
||||
ul.replyZone .replyContent p { display:block; }
|
||||
ul.replyZone .reply { background-color:#FAFAFA;}
|
||||
ul.replyZone .replyIndent { background:url(../images/common/iconReplyArrow.gif) no-repeat .0em .3em; padding-left:1.3em;}
|
||||
|
||||
|
|
@ -219,13 +220,14 @@ ul.replyZone .replyIndent { background:url(../images/common/iconReplyArrow.gif)
|
|||
#reply li { padding:.6em .8em .6em .6em; line-height:1.25em; clear:both; border-bottom:1px dotted #EEEEEE; list-style:none;}
|
||||
#reply p { display:inline; margin-bottom:1em;}
|
||||
#reply .author { float:left; padding:0 .3em 0 0; font-size:.9em; color:#3074a5; margin:0 .3em .5em 0;}
|
||||
#reply .author a { font-size:.9em; color:#3074a5; margin-right:.3em;}
|
||||
#reply .author a { color:#3074a5; margin-right:.3em; text-decoration:none;}
|
||||
#reply .date { float:right; font:.8em Tahoma; color:#cccccc; margin:.3em 0 .5em 0;}
|
||||
|
||||
#reply .replyOption { float:right; white-space:nowrap; margin-left:.2em;}
|
||||
#reply .replyOption img { vertical-align:middle;}
|
||||
|
||||
#reply .replyContent { clear:left; }
|
||||
#reply .replyContent p { display:block; }
|
||||
#reply .reply { background-color:#FAFAFA;}
|
||||
#reply .replyIndent { background:url(../images/common/iconReplyArrow.gif) no-repeat .0em .3em; padding-left:1.3em;}
|
||||
|
||||
|
|
@ -276,7 +278,7 @@ ul.replyZone .replyIndent { background:url(../images/common/iconReplyArrow.gif)
|
|||
.blogWrite .extra_vars .info { clear:both; padding:.5em 0 0 .6em; margin-left:14em; font-size:.9em; color:#999999; background:url(../images/common/iconArrowD8.gif) no-repeat left center;}
|
||||
.blogWrite .extra_vars ul li { float:left; margin-right:1em; }
|
||||
|
||||
.smallBox { border:1px solid #e0e1db; margin:5em auto 1em auto;}
|
||||
.smallBox { border:1px solid #e0e1db; margin-left:auto; margin-right:auto; }
|
||||
.smallBox.w268 { width:268px;}
|
||||
.smallBox .header { position:relative; _width:100%; background:#ffffff url(../images/normal/bgH3.gif) no-repeat left bottom; overflow:hidden;}
|
||||
.smallBox .header h3 { clear:both; font-size:1.2em; padding:.8em 2em .6em 1.2em; border-bottom:3px solid #fe3614; }
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
<!--%import("filter/input_password.xml")-->
|
||||
<!--#include("header.html")-->
|
||||
<!--@if(!$form_include)--><!--#include("header.html")--><!--@end-->
|
||||
|
||||
<div class="smallBox w268">
|
||||
|
||||
|
|
@ -27,4 +27,4 @@
|
|||
</div>
|
||||
|
||||
|
||||
<!--#include("footer.html")-->
|
||||
<!--@if(!$form_include)--><!--#include("footer.html")--><!--@end-->
|
||||
|
|
|
|||
|
|
@ -35,7 +35,18 @@
|
|||
</div>
|
||||
<!--@end-->
|
||||
|
||||
<div class="readBody"><div class="contentBody">{$oDocument->getContent()}</div></div>
|
||||
<div class="readBody">
|
||||
<div class="contentBody">
|
||||
<!--@if($oDocument->isSecret() && !$oDocument->isGranted())-->
|
||||
{@ $form_include = true; }
|
||||
<!--#include("./input_password_form.html")-->
|
||||
|
||||
<!--@else-->
|
||||
{$oDocument->getContent()}
|
||||
<!--@end-->
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="readFooter">
|
||||
{@ $tag_list = $oDocument->get('tag_list') }
|
||||
|
|
|
|||
|
|
@ -35,19 +35,19 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<th scope="row">{$lang->description}</th>
|
||||
<td>{nl2br(htmlspecialchars($module_info->description))}</td>
|
||||
<td>{nl2br(htmlspecialchars($module_info->description))} </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">{$lang->header_text}</th>
|
||||
<td>{htmlspecialchars($module_info->header_text)}</td>
|
||||
<td>{htmlspecialchars($module_info->header_text)} </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">{$lang->footer_text}</th>
|
||||
<td>{htmlspecialchars($module_info->footer_text)}</td>
|
||||
<td>{htmlspecialchars($module_info->footer_text)} </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">{$lang->admin_id}</th>
|
||||
<td><!--@if(is_array($module_info->admin_id))-->{implode(",",$module_info->admin_id)}<!--@end--></td>
|
||||
<td><!--@if(is_array($module_info->admin_id))-->{implode(",",$module_info->admin_id)}<!--@end--> </td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
|
|
|
|||
|
|
@ -13,87 +13,6 @@
|
|||
function init() {
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 관리자가 글 선택시 세션에 담음
|
||||
**/
|
||||
function procBoardAdminAddCart() {
|
||||
$document_srl = Context::get('srl');
|
||||
$check_flag = Context::get('check_flag');
|
||||
if(!$document_srl || !in_array($check_flag, array('add','remove'))) return;
|
||||
|
||||
$flag_list = $_SESSION['document_management'][$this->module_srl];
|
||||
|
||||
if($check_flag == 'remove') unset($flag_list[$document_srl]);
|
||||
else $flag_list[$document_srl] = true;
|
||||
|
||||
$_SESSION['document_management'][$this->module_srl] = $flag_list;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 세션에 담긴 선택글의 이동/ 삭제
|
||||
**/
|
||||
function procBoardAdminManageCheckedDocument() {
|
||||
$type = Context::get('type');
|
||||
$module_srl = Context::get('target_board');
|
||||
$message_content = Context::get('message_content');
|
||||
if($message_content) $message_content = nl2br($message_content);
|
||||
|
||||
$flag_list = $_SESSION['document_management'][$this->module_srl];
|
||||
|
||||
$document_srl_list = array_keys($flag_list);
|
||||
$document_srl_count = count($document_srl_list);
|
||||
|
||||
// 쪽지 발송
|
||||
if($message_content) {
|
||||
|
||||
$oMemberController = &getController('member');
|
||||
$oDocumentModel = &getModel('document');
|
||||
|
||||
$logged_info = Context::get('logged_info');
|
||||
|
||||
$title = cut_str($message_content,10,'...');
|
||||
$sender_member_srl = $logged_info->member_srl;
|
||||
|
||||
for($i=0;$i<$document_srl_count;$i++) {
|
||||
$document_srl = $document_srl_list[$i];
|
||||
$oDocument = $oDocumentModel->getDocument($document_srl);
|
||||
if(!$oDocument->get('member_srl') || $oDocument->get('member_srl')==$sender_member_srl) continue;
|
||||
|
||||
if($type=='move') $purl = sprintf("<a href=\"%s\" onclick=\"window.open(this.href);return false;\">%s</a>", $oDocument->getPermanentUrl(), $oDocument->getPermanentUrl());
|
||||
else $purl = "";
|
||||
$content .= sprintf("<div>%s</div><hr />%s<div style=\"font-weight:bold\">%s</div>%s",$message_content, $purl, $oDocument->getTitleText(), $oDocument->getContent());
|
||||
|
||||
$oMemberController->sendMessage($sender_member_srl, $oDocument->get('member_srl'), $title, $content, false);
|
||||
}
|
||||
}
|
||||
|
||||
if($type == 'move') {
|
||||
$oDocumentAdminController = &getAdminController('document');
|
||||
if(!$module_srl) return new Object(-1, 'fail_to_move');
|
||||
else {
|
||||
$output = $oDocumentAdminController->moveDocumentModule($document_srl_list, $module_srl, $this->module_srl);
|
||||
if(!$output->toBool()) return new Object(-1, 'fail_to_move');
|
||||
$msg_code = 'success_moved';
|
||||
$_SESSION['document_management'] = null;
|
||||
}
|
||||
|
||||
} elseif($type =='delete') {
|
||||
$oDB = &DB::getInstance();
|
||||
$oDB->begin();
|
||||
$oDocumentController = &getController('document');
|
||||
for($i=0;$i<$document_srl_count;$i++) {
|
||||
$document_srl = $document_srl_list[$i];
|
||||
$output = $oDocumentController->deleteDocument($document_srl, true);
|
||||
if(!$output->toBool()) return new Object(-1, 'fail_to_delete');
|
||||
}
|
||||
$oDB->commit();
|
||||
$msg_code = 'success_deleted';
|
||||
$_SESSION['document_management'] = null;
|
||||
}
|
||||
|
||||
$this->setMessage($msg_code);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 권한 추가
|
||||
**/
|
||||
|
|
|
|||
|
|
@ -209,33 +209,5 @@
|
|||
|
||||
$this->setTemplateFile('grant_list');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 선택한 목록 출력
|
||||
**/
|
||||
function dispBoardAdminManageDocument() {
|
||||
// 선택한 목록을 세션에서 가져옴
|
||||
$flag_list = $_SESSION['document_management'][$this->module_srl];
|
||||
|
||||
// 목록이 있으면 게시글을 가져옴
|
||||
if(count($flag_list)) $document_srl_list = array_keys($flag_list);
|
||||
if(is_array($document_srl_list) && count($document_srl_list)) {
|
||||
$oDocumentModel = &getModel('document');
|
||||
$document_list = $oDocumentModel->getDocuments($document_srl_list, $this->grant->is_admin);
|
||||
Context::set('document_list', $document_list);
|
||||
}
|
||||
|
||||
// 게시판의 목록을 가져옴
|
||||
$output = executeQuery('board.getAllBoard', $args);
|
||||
$board_list = $output->data;
|
||||
if($board_list && !is_array($board_list)) $board_list = array($board_list);
|
||||
Context::set('board_list', $board_list);
|
||||
|
||||
// 팝업 레이아웃 선택
|
||||
$this->setLayoutPath('./common/tpl');
|
||||
$this->setLayoutFile('popup_layout');
|
||||
|
||||
$this->setTemplateFile('checked_list');
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
|
|
|||
|
|
@ -156,11 +156,6 @@
|
|||
Context::set('document_list', $output->data);
|
||||
Context::set('page_navigation', $output->page_navigation);
|
||||
|
||||
// 관리자일 경우 체크한 문서들의 목록을 세팅
|
||||
if($this->grant->is_admin) {
|
||||
Context::set('check_list',$_SESSION['document_management'][$this->module_srl]);
|
||||
}
|
||||
|
||||
$this->setTemplateFile('list');
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -67,13 +67,11 @@
|
|||
<permission action="dispBoardAdminBoardInfo" target="manager" />
|
||||
<permission action="dispBoardAdminSkinInfo" target="manager" />
|
||||
<permission action="dispBoardAdminCategoryInfo" target="manager" />
|
||||
<permission action="dispBoardAdminManageDocument" target="manager" />
|
||||
|
||||
<permission action="procBoardAdminInsertBoard" target="manager" />
|
||||
<permission action="procBoardAdminUpdateSkinInfo" target="manager" />
|
||||
<permission action="procBoardAdminInsertCategory" target="manager" />
|
||||
<permission action="procBoardAdminUpdateCategory" target="manager" />
|
||||
<permission action="procBoardAdminManageCheckedDocument" target="manager" />
|
||||
</permissions>
|
||||
<actions>
|
||||
<action name="dispBoardContent" type="view" index="true" />
|
||||
|
|
@ -103,15 +101,12 @@
|
|||
<action name="dispBoardAdminSkinInfo" type="view" standalone="true" />
|
||||
<action name="dispBoardAdminCategoryInfo" type="view" standalone="true" />
|
||||
<action name="dispBoardAdminGrantInfo" type="view" standalone="true" />
|
||||
<action name="dispBoardAdminManageDocument" type="view" />
|
||||
|
||||
<action name="procBoardAdminAddCart" type="controller" standalone="true" />
|
||||
<action name="procBoardAdminInsertGrant" type="controller" standalone="true" />
|
||||
<action name="procBoardAdminUpdateSkinInfo" type="controller" standalone="true" />
|
||||
<action name="procBoardAdminInsertBoard" type="controller" standalone="true" />
|
||||
<action name="procBoardAdminDeleteBoard" type="controller" standalone="true" />
|
||||
<action name="procBoardAdminInsertCategory" type="controller" standalone="true" />
|
||||
<action name="procBoardAdminUpdateCategory" type="controller" standalone="true" />
|
||||
<action name="procBoardAdminManageCheckedDocument" type="controller" standalone="true" />
|
||||
</actions>
|
||||
</module>
|
||||
|
|
|
|||
|
|
@ -11,7 +11,6 @@
|
|||
$lang->cmd_board_list = 'Board list';
|
||||
$lang->cmd_module_config = 'Common board setting';
|
||||
$lang->cmd_view_info = 'Board info';
|
||||
$lang->move_target_module = "Target module for changing position";
|
||||
|
||||
$lang->about_board = "This module is for creating and managing boards.\nSelect the module's name from the list after creating one to configurate specifically.\nBe careful with board's module name, since it will be the url. (ex : http://domain/zb/?mid=modulename)";
|
||||
?>
|
||||
|
|
|
|||
|
|
@ -11,7 +11,6 @@
|
|||
$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->move_target_module = "Módulo para cambiar de posición";
|
||||
|
||||
$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)";
|
||||
?>
|
||||
|
|
|
|||
|
|
@ -11,7 +11,6 @@
|
|||
$lang->cmd_board_list = '掲示板リスト';
|
||||
$lang->cmd_module_config = '掲示板共通設定';
|
||||
$lang->cmd_view_info = '掲示板情報';
|
||||
$lang->move_target_module = "移動対象モジュール";
|
||||
|
||||
$lang->about_board = "掲示板を生成、管理できる掲示板モジュールです。生成後、リストからモジュール名を選択すると詳細な設定ができます。掲示板のモジュール名はURLになりますので注意してください。 (ex : http://ドメイン/zb/?mid=モジュール名)";
|
||||
?>
|
||||
|
|
|
|||
|
|
@ -11,7 +11,6 @@
|
|||
$lang->cmd_board_list = '게시판 목록';
|
||||
$lang->cmd_module_config = '게시판 공통 설정';
|
||||
$lang->cmd_view_info = '게시판 정보';
|
||||
$lang->move_target_module = "이동 대상 모듈";
|
||||
|
||||
$lang->about_board = "게시판을 생성하고 관리할 수 있는 게시판 모듈입니다.\n생성하신 후 목록에서 모듈이름을 선택하시면 자세한 설정이 가능합니다.\n게시판의 모듈이름은 접속 url이 되므로 신중하게 입력해주세요. (ex : http://도메인/zb/?mid=모듈이름)";
|
||||
?>
|
||||
|
|
|
|||
|
|
@ -11,7 +11,6 @@
|
|||
$lang->cmd_board_list = '版面目录';
|
||||
$lang->cmd_module_config = '版面共同设置';
|
||||
$lang->cmd_view_info = '版面信息';
|
||||
$lang->move_target_module = "移动目标模块";
|
||||
|
||||
$lang->about_board = "可生成,管理版面的模块。\n生成版面后,点击模块名即可对其详细设置。";
|
||||
?>
|
||||
|
|
|
|||
|
|
@ -25,7 +25,17 @@
|
|||
<!--@end-->
|
||||
</div>
|
||||
|
||||
<div class="author"><div class="member_{$val->member_srl}">{htmlspecialchars($val->nick_name)}</div></div>
|
||||
<div class="author">
|
||||
<!--@if(!$val->member_srl)-->
|
||||
<!--@if($val->homepage)-->
|
||||
<a href="{$val->homepage}" onclick="window.open(this.href);return false;">{htmlspecialchars($val->nick_name)}</a>
|
||||
<!--@else-->
|
||||
{htmlspecialchars($val->nick_name)}
|
||||
<!--@end-->
|
||||
<!--@else-->
|
||||
<div class="member_{$val->member_srl}">{htmlspecialchars($val->nick_name)}</div>
|
||||
<!--@end-->
|
||||
</div>
|
||||
|
||||
<div class="replyContent">
|
||||
{$val->content}
|
||||
|
|
|
|||
|
|
@ -40,12 +40,11 @@ Jeong, Chan Myeong 070601~070630
|
|||
.boardList tr.bg2 { background:#fbfbfb;}
|
||||
.boardList th a { color:#3e3f3e; text-decoration:none; }
|
||||
.boardList th.num { background-position:-3px bottom; border-left:1px solid #ffffff; }
|
||||
.boardList th.title { text-align:center; }
|
||||
.boardList th.category { text-align:center; }
|
||||
.boardList th.title { text-align:left; padding-left:2em;}
|
||||
.boardList th.category { text-align:left; padding-left:2em;}
|
||||
.boardList th.title select { vertical-align:middle; margin-left:.5em; }
|
||||
.boardList th.reading { white-space:nowrap;}
|
||||
.boardList th.recommend { white-space:nowrap;}
|
||||
.boardList th.date { border-right:1px solid #ffffff;}
|
||||
.boardList th .sort { padding:0 .2em; vertical-align:middle;}
|
||||
.boardList td { border-top:1px solid #eff0ed; padding:.5em;}
|
||||
.boardList td.num { font:.8em tahoma; color:#999999; padding:.5em 1em; text-align:center;}
|
||||
|
|
@ -77,19 +76,20 @@ Jeong, Chan Myeong 070601~070630
|
|||
.boardList td .thumbnailMedium { margin:0 .3em 0 .3em;}
|
||||
.boardList td .thumbnailMedium img { border:1px solid #e0e1db; padding:3px;}
|
||||
|
||||
.boardList.thumbnail { margin-top:-1px; border-bottom:none;}
|
||||
.boardList.thumbnail td { border-top:none; border-bottom:1px solid #eff0ed; padding:1.5em 0 0 1.5em; overflow:hidden;}
|
||||
.boardList.thumbnail div.cell { float:left; width:167px; height:220px; overflow:hidden; margin:0 1.5em 0 0; padding-bottom:1.5em;}
|
||||
.boardList.thumbnail div.cell img.thumb { padding:2px; border:1px solid #e0e1db; display:block; margin-bottom:1em;}
|
||||
.boardList.thumbnail div.title { color:#444444; margin-bottom:.2em; padding-left:3px; overflow:hidden; white-space:nowrap;}
|
||||
.boardList.thumbnail div.title a { color:#444444; text-decoration:none;}
|
||||
.boardList.thumbnail div.nameAndDate { font-size:.9em; color:#999999; margin-bottom:.2em; padding-left:3px;}
|
||||
.boardList.thumbnail div.nameAndDate a { color:#999999;}
|
||||
.boardList.thumbnail div.nameAndDate .date { font:.8em Tahoma; color:#999999;}
|
||||
.boardList.thumbnail div.readAndRecommend { font-size:.9em; color:#666666; padding-left:3px;}
|
||||
.boardList.thumbnail div.readAndRecommend .num { font:.8em Tahoma;}
|
||||
.boardList.thumbnail div.readAndRecommend .vr { color:#dddddd;}
|
||||
.boardList.thumbnail div.readAndRecommend strong.num { font:bold .8em Tahoma; color:#ff6600;}
|
||||
.thumbnailBox { border-top:none; border-bottom:1px solid #eff0ed; padding:1.5em 0 0 1.5em; overflow:hidden; padding-bottom:1em;}
|
||||
.thumbnailBox div.cell { display:block; float:left; overflow:hidden; margin-bottom:1em;}
|
||||
.thumbnailBox div.cell img.thumb { padding:2px; border:1px solid #e0e1db; display:block; margin-bottom:1em; margin-left:auto;margin-right:auto;}
|
||||
.thumbnailBox div.title { color:#3B96C0; margin-bottom:.2em; overflow:hidden; white-space:nowrap; text-align:center;}
|
||||
.thumbnailBox div.title a { color:#3B96C0; text-decoration:none;}
|
||||
.thumbnailBox div.nameAndDate { font-size:.9em; color:#999999; margin-bottom:.2em; text-align:center;}
|
||||
.thumbnailBox div.nameAndDate a { color:#999999;}
|
||||
.thumbnailBox div.nameAndDate .author { margin-left:auto; margin-right:right; }
|
||||
.thumbnailBox div.nameAndDate .author div { display:inline; vertical-align:middle;}
|
||||
.thumbnailBox div.nameAndDate .date { font:.8em Tahoma; color:#999999;}
|
||||
.thumbnailBox div.readAndRecommend { font-size:.9em; color:#666666; text-align:center;}
|
||||
.thumbnailBox div.readAndRecommend .num { font:.8em Tahoma;}
|
||||
.thumbnailBox div.readAndRecommend .vr { color:#dddddd;}
|
||||
.thumbnailBox div.readAndRecommend strong.num { font:bold .8em Tahoma; color:#ff6600;}
|
||||
|
||||
/* pageNavigation */
|
||||
.pageNavigation { display:block; padding:1.5em 0 2em 0; text-align:center; font:bold 11px Tahoma; }
|
||||
|
|
@ -102,7 +102,7 @@ Jeong, Chan Myeong 070601~070630
|
|||
.pageNavigation a.goToLast img { display:inline-block; padding:2px 0; position:relative; top:2px; _top:1px;}
|
||||
|
||||
/* extraVars list */
|
||||
.extraVarsList { width:100%; border:1px solid #e0e1db; clear:both; margin-bottom:1em;}
|
||||
.extraVarsList { width:100%; border:1px solid #e0e1db; clear:both; margin-bottom:1em; margin-top:1em;}
|
||||
.extraVarsList tr.notice { background:#f8f8f8;}
|
||||
.extraVarsList tr.notice .num { font-size:.9em; font-weight:bold;}
|
||||
.extraVarsList tr.bg1 { background:#ffffff}
|
||||
|
|
@ -138,12 +138,13 @@ Jeong, Chan Myeong 070601~070630
|
|||
.boardRead ul.uri { overflow:hidden; margin:0 0 2em .3em; float:right; clear:left;}
|
||||
.boardRead ul.uri li { font-size:8pt; color:#c5c7c0; }
|
||||
|
||||
.boardRead .userInfo { float:left; white-space:nowrap;}
|
||||
.boardRead .userInfo .author { padding:0 .3em 0 0; color:#3074a5; margin-right:.3em;}
|
||||
.boardRead .userInfo .ipaddress { font-size:.9em; font-family:Tahoma; color:#888888; margin-right:.5em; }
|
||||
.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; margin-top:.3em;}
|
||||
|
||||
.boardRead .contentBody { width:100%; overflow:hidden; }
|
||||
.boardRead .readBody { padding:0 .3em; color:#555555; overflow:hidden; margin-bottom:2em; clear:both; }
|
||||
.boardRead .readBody { padding:0 .3em; color:#555555; overflow:hidden; margin-bottom:2em; clear:both; margin-top:2em;}
|
||||
.boardRead .readBody p { margin:1em 0; line-height:1.5em;}
|
||||
.boardRead .readBody .alignLeft { float:left; margin:0 1em 1em 0; }
|
||||
.boardRead .readBody .alignRight { float:right; margin:0 0 1em 1em; }
|
||||
|
|
@ -188,16 +189,18 @@ Jeong, Chan Myeong 070601~070630
|
|||
#trackbacks address .date { font:.8em Tahoma; color:#cccccc; float:right;}
|
||||
|
||||
#reply { padding:.6em .6em; color:#666666; border:1px solid #e0e1db; margin-top:.5em;}
|
||||
#reply li { padding:.6em .8em .6em .6em; line-height:1.25em; clear:both; border-bottom:1px dotted #EEEEEE; list-style:none;}
|
||||
#reply li { padding:.6em .8em .6em .6em; line-height:1.25em; clear:both; border-bottom:1px dotted #EEEEEE; }
|
||||
#reply p { display:inline; margin-bottom:1em;}
|
||||
#reply .author { float:left; padding:0 .3em 0 0; font-size:.9em; color:#3074a5; margin:0 .3em .5em 0;}
|
||||
#reply .author a { font-size:.9em; color:#3074a5; margin-right:.3em;}
|
||||
#reply .author a { color:#3074a5; margin-right:.3em; text-decoration:none; }
|
||||
#reply .date { float:right; font:.8em Tahoma; color:#cccccc; margin:.3em 0 .5em 0;}
|
||||
|
||||
#reply .replyOption { float:right; white-space:nowrap; margin-left:.2em;}
|
||||
#reply .replyOption img { vertical-align:middle;}
|
||||
|
||||
#reply .replyContent { clear:left; }
|
||||
#reply .replyContent p { display:block; }
|
||||
#reply .replyContent li { padding:0; border:none; line-height:1.25em; }
|
||||
#reply .reply { background-color:#FAFAFA;}
|
||||
#reply .replyIndent { background:url(../images/common/iconReplyArrow.gif) no-repeat .0em .3em; padding-left:1.3em;}
|
||||
|
||||
|
|
@ -247,7 +250,7 @@ Jeong, Chan Myeong 070601~070630
|
|||
.boardWrite .extra_vars .info { clear:both; padding:.5em 0 0 .6em; margin-left:14em; font-size:.9em; color:#999999; background:url(../images/common/iconArrowD8.gif) no-repeat left center;}
|
||||
.boardWrite .extra_vars ul li { float:left; margin-right:1em; }
|
||||
|
||||
.smallBox { border:1px solid #e0e1db; margin:5em auto 1em auto;}
|
||||
.smallBox { border:1px solid #e0e1db; margin-left:auto; margin-right:auto; }
|
||||
.smallBox.w268 { width:268px;}
|
||||
.smallBox .header { position:relative; _width:100%; background:#ffffff url(../images/normal/bgH3.gif) no-repeat left bottom; overflow:hidden;}
|
||||
.smallBox .header h3 { clear:both; font-size:1.2em; padding:.8em 2em .6em 1.2em; border-bottom:3px solid #fe3614; }
|
||||
|
|
|
|||
|
|
@ -20,6 +20,11 @@
|
|||
{@ $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-->
|
||||
|
||||
<!-- 상단 텍스트 출력 -->
|
||||
{$module_info->header_text}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
<!--%import("filter/input_password.xml")-->
|
||||
<!--#include("header.html")-->
|
||||
<!--@if(!$form_include)--><!--#include("header.html")--><!--@end-->
|
||||
|
||||
<div class="smallBox w268">
|
||||
|
||||
|
|
@ -23,5 +23,4 @@
|
|||
|
||||
</div>
|
||||
|
||||
|
||||
<!--#include("footer.html")-->
|
||||
<!--@if(!$form_include)--><!--#include("footer.html")--><!--@end-->
|
||||
|
|
|
|||
|
|
@ -4,19 +4,6 @@
|
|||
* @brief board 모듈의 javascript
|
||||
**/
|
||||
|
||||
/* 관리자가 카트 선택시 세션에 넣음 */
|
||||
function doAddCart(mid, obj) {
|
||||
var srl = obj.value;
|
||||
var check_flag = obj.checked?'add':'remove';
|
||||
|
||||
var params = new Array();
|
||||
params["mid"] = mid;
|
||||
params["srl"] = srl;
|
||||
params["check_flag"] = check_flag;
|
||||
|
||||
exec_xml("board","procBoardAdminAddCart", params, null);
|
||||
}
|
||||
|
||||
/* 글쓰기 작성후 */
|
||||
function completeDocumentInserted(ret_obj) {
|
||||
var error = ret_obj['error'];
|
||||
|
|
|
|||
|
|
@ -10,17 +10,21 @@
|
|||
<!--@end-->
|
||||
|
||||
<!-- 목록 출력 -->
|
||||
<table cellspacing="0" summary="" class="boardList">
|
||||
<col width="50" />
|
||||
<form action="./" method="get">
|
||||
<table cellspacing="0" summary="" class="boardList">
|
||||
<col width="80" />
|
||||
<col />
|
||||
<col width="90" />
|
||||
<col width="90" />
|
||||
<col width="110" />
|
||||
<!--@if($module_info->display_readed_count!='N')--><col width="70" /><!--@end-->
|
||||
<!--@if($module_info->display_voted_count!='N')--><col width="70" /><!--@end-->
|
||||
<!--@if($module_info->display_regdate != 'N')--><col width="90" /><!--@end-->
|
||||
<!--@if($module_info->display_last_update == 'Y')--><col width="90" /><!--@end-->
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col" class="title thumbStyle" colspan="2">
|
||||
<th scope="col" class="<!--@if($module_info->use_category=='Y')-->category<!--@else-->title<!--@end-->" colspan="2">
|
||||
<!--@if($grant->is_admin)-->
|
||||
<input type="checkbox" onclick="checkboxSelectAll(this.form, 'cart'); return false;" />
|
||||
<!--@end-->
|
||||
<!--@if($module_info->use_category == "Y")-->
|
||||
<form action="./" method="get">
|
||||
<select name="category" id="board_category">
|
||||
<option value="">{$lang->category}</option>
|
||||
<!--@foreach($category_list as $val)-->
|
||||
|
|
@ -28,7 +32,6 @@
|
|||
<!--@end-->
|
||||
</select>
|
||||
<input type="button" name="go_button" id= "go_button" value="GO" onclick="doChangeCategory(); return false;" class="buttonTypeGo" />
|
||||
</form>
|
||||
<!--@else-->
|
||||
{$lang->title}
|
||||
<!--@end-->
|
||||
|
|
@ -42,11 +45,12 @@
|
|||
{@ $order_type = "desc"; }
|
||||
<!--@end-->
|
||||
|
||||
<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>
|
||||
<!--@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-->
|
||||
|
||||
<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>
|
||||
<!--@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-->
|
||||
|
||||
<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>
|
||||
<!--@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_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-->
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
|
|
@ -58,7 +62,11 @@
|
|||
<td class="num">{$lang->notice}</td>
|
||||
<td class="title">
|
||||
<!--@if($grant->is_admin)-->
|
||||
<input type="checkbox" value="{$document->document_srl}" onclick="doAddCart('{$mid}',this)" <!--@if($check_list[$document->document_srl])-->checked="checked"<!--@end--> />
|
||||
<input type="checkbox" name="cart" value="{$document->document_srl}" onclick="doAddDocumentCart(this)" <!--@if($document->isCarted())-->checked="checked"<!--@end--> />
|
||||
<!--@end-->
|
||||
|
||||
<!--@if($module_info->use_category == "Y" && $document->get('category_srl'))-->
|
||||
<strong class="category">{$category_list[$document->get('category_srl')]->title}</strong>
|
||||
<!--@end-->
|
||||
|
||||
<a href="{getUrl('document_srl',$document->document_srl)}">{$document->getTitleText($module_info->subject_cut_size)}</a>
|
||||
|
|
@ -73,9 +81,10 @@
|
|||
|
||||
{$document->printExtraImages(60*60*$module_info->duration_new)}
|
||||
</td>
|
||||
<td class="reading">{$document->get('readed_count')}</td>
|
||||
<td class="recommend">{$document->get('voted_count')}</td>
|
||||
<td class="date">{$document->getRegdate('Y-m-d')}</td>
|
||||
<!--@if($module_info->display_readed_count!='N')--><td class="reading">{$document->get('readed_count')}</td><!--@end-->
|
||||
<!--@if($module_info->display_voted_count!='N')--><td class="recommend">{$document->get('voted_count')}</td><!--@end-->
|
||||
<!--@if($module_info->display_regdate!='N')--><td class="date">{$document->getRegdate('Y-m-d')}</td><!--@end-->
|
||||
<!--@if($module_info->display_last_update=='Y')--><td class="date">{zdate($document->get('last_update'),'Y-m-d H:i')}</td><!--@end-->
|
||||
</tr>
|
||||
|
||||
<!--@end-->
|
||||
|
|
@ -84,55 +93,59 @@
|
|||
</tbody>
|
||||
</table>
|
||||
|
||||
<table cellspacing="0" class="boardList thumbnail">
|
||||
<tbody>
|
||||
<tr class="bg1">
|
||||
<td>
|
||||
<!--@foreach($document_list as $no => $document)-->
|
||||
<!--@if(!$document->isNotice())-->
|
||||
{@ $height = $module_info->thumbnail_height + 40; }
|
||||
<!--@if($module_info->display_author!='N' || $module_info->display_regdate!='N')-->{@ $height += 25 }<!--@end-->
|
||||
<!--@if($module_info->display_readed_count !='N' || $module_info->display_voted_count!='N')-->{@ $height += 25 }<!--@end-->
|
||||
|
||||
<div class="cell">
|
||||
<!--@if($document->thumbnailExists(122))-->
|
||||
<a href="{getUrl('','document_srl',$document->document_srl)}"><img src="{$document->getThumbnail(122)}" border="0" alt="" class="thumb"/></a>
|
||||
<!--@else-->
|
||||
<img src="./images/blank.gif" border="0" alt="" class="thumb" width="122" height="122" />
|
||||
<!--@end-->
|
||||
|
||||
<div class="title">
|
||||
<!--@if($grant->is_admin)-->
|
||||
<input type="checkbox" value="{$document->document_srl}" onclick="doAddCart('{$mid}',this)" <!--@if($check_list[$document->document_srl])-->checked="checked"<!--@end--> />
|
||||
<!--@end-->
|
||||
<!--@if($grant->view)-->
|
||||
<a href="{getUrl('document_srl',$document->document_srl)}">{$document->getTitleText($module_info->subject_cut_size)}</a>
|
||||
<!--@else-->
|
||||
{$document->getTitleText(8,'')}
|
||||
<!--@end-->
|
||||
<div class="thumbnailBox">
|
||||
|
||||
<!--@if($document->getCommentCount())-->
|
||||
<span class="replyAndTrackback" title="Replies">(<strong>{$document->getCommentCount()}</strong>)</span>
|
||||
<!--@end-->
|
||||
<!--@foreach($document_list as $no => $document)-->
|
||||
<!--@if(!$document->isNotice())-->
|
||||
|
||||
<!--@if($document->getTrackbackCount())-->
|
||||
<span class="replyAndTrackback" title="Trackbacks">[<strong>{$document->getTrackbackCount()}</strong>]</span>
|
||||
<!--@end-->
|
||||
|
||||
<div class="nameAndDate">
|
||||
<div class="author member_{$document->get('member_srl')}">{$document->getNickName()}</div>
|
||||
<div class="date">{$document->getRegdate('Y.m.d')}</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="readAndRecommend">
|
||||
{$lang->readed_count} <span class="num">{$document->get('readed_count')}</span>
|
||||
<!--@if($document->get('voted_count'))--><span class="vr">|</span> {$lang->voted_count} <strong class="num">{$document->get('voted_count')}</strong><!--@end-->
|
||||
</div>
|
||||
</div>
|
||||
<div class="cell" style="width:{$module_info->thumbnail_width+30}px;height:{$height}px;">
|
||||
<!--@if($document->thumbnailExists($module_info->thumbnail_width, $module_info->thumbnail_height, $module_info->thumbnail_type))-->
|
||||
<a href="{getUrl('','document_srl',$document->document_srl)}"><img src="{$document->getThumbnail($module_info->thumbnail_width, $module_info->thumbnail_height, $module_info->thumbnail_type)}" border="0" alt="" class="thumb"/></a>
|
||||
<!--@else-->
|
||||
<img src="./images/blank.gif" border="0" alt="" class="thumb" width="{$module_info->thumbnail_width}" height="{$module_info->thumbnail_height}" />
|
||||
<!--@end-->
|
||||
|
||||
<div class="title">
|
||||
<!--@if($module_info->use_category == "Y" && $document->get('category_srl'))-->
|
||||
<strong class="category">{$category_list[$document->get('category_srl')]->title}</strong><br />
|
||||
<!--@end-->
|
||||
|
||||
<!--@if($grant->is_admin)-->
|
||||
<input type="checkbox" name="cart" value="{$document->document_srl}" onclick="doAddDocumentCart(this)" <!--@if($document->isCarted())-->checked="checked"<!--@end--> />
|
||||
<!--@end-->
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<a href="{getUrl('document_srl',$document->document_srl)}">{$document->getTitleText($module_info->subject_cut_size)}</a>
|
||||
|
||||
<!--@if($document->getCommentCount())-->
|
||||
<span class="replyAndTrackback" title="Replies">(<strong>{$document->getCommentCount()}</strong>)</span>
|
||||
<!--@end-->
|
||||
|
||||
<!--@if($document->getTrackbackCount())-->
|
||||
<span class="replyAndTrackback" title="Trackbacks">[<strong>{$document->getTrackbackCount()}</strong>]</span>
|
||||
<!--@end-->
|
||||
|
||||
<div class="nameAndDate">
|
||||
<!--@if($module_info->display_author!='N')--><div class="author"><div class="member_{$document->get('member_srl')}">{$document->getNickName()}</div></div><!--@end-->
|
||||
<!--@if($module_info->display_regdate!='N')--><div class="date">{$document->getRegdate('Y.m.d')}</div><!--@end-->
|
||||
</div>
|
||||
</div>
|
||||
<div class="readAndRecommend">
|
||||
<!--@if($module_info->display_readed_count!='N')-->{$lang->readed_count} <span class="num">{$document->get('readed_count')}</span><!--@end-->
|
||||
<!--@if($document->get('voted_count') && $module_info->display_voted_count!='N')-->
|
||||
<!--@if($module_info->display_readed_count!='N')--><span class="vr">|</span> <!--@end-->
|
||||
{$lang->voted_count} <strong class="num">{$document->get('voted_count')}</strong>
|
||||
<!--@end-->
|
||||
</div>
|
||||
</div>
|
||||
<!--@end-->
|
||||
<!--@end-->
|
||||
</div>
|
||||
</form>
|
||||
|
||||
|
||||
<div class="clear">
|
||||
|
|
@ -148,7 +161,7 @@
|
|||
<!--@if($grant->is_admin)-->
|
||||
<!-- 문서 관리 버튼 -->
|
||||
<div class="gap1 fl">
|
||||
<a href="{getUrl('act','dispBoardAdminManageDocument')}" onclick="popopen(this.href,'manageDocument'); return false;" class="button"><span>{$lang->cmd_manage_document}</span></a>
|
||||
<a href="{getUrl('','module','document','act','dispDocumentAdminManageDocument')}" onclick="popopen(this.href,'manageDocument'); return false;" class="button"><span>{$lang->cmd_manage_document}</span></a>
|
||||
</div>
|
||||
<!--@end-->
|
||||
|
||||
|
|
|
|||
|
|
@ -1,117 +1,180 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<skin>
|
||||
<title xml:lang="ko">제로보드XE 게시판 기본 스킨 (갤러리형)</title>
|
||||
<title xml:lang="jp">ゼロボードXE掲示板のデフォルトスキン(ギャラリースタイル)</title>
|
||||
<title xml:lang="zh-CN">Zeroboard XE board 基本皮肤(相册型)</title>
|
||||
<title xml:lang="en">ZeroboardXE Basic Board Skin (Gallery Style)</title>
|
||||
<maker email_address="zero@zeroboard.com" link="http://www.zeroboard.com" date="2007. 2. 28">
|
||||
<name xml:lang="ko">(주)NHN</name>
|
||||
<name xml:lang="jp">(株)NHN</name>
|
||||
<name xml:lang="zh-CN">(株)NHN</name>
|
||||
<name xml:lang="en">NHN Corp</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 Board的相册型基本皮肤。
|
||||
设计 : 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 gallery style board skin of Zeroboard XE.
|
||||
Design : Ki-Jeong Seo (http://blog.naver.com/addcozy)
|
||||
HTML/CSS : Chan-Myung Jeong (http://naradesign.net)
|
||||
</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>
|
||||
</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="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="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="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="ko">제로보드XE 게시판 기본 스킨 (갤러리형)</title>
|
||||
<title xml:lang="jp">ゼロボードXE掲示板のデフォルトスキン(ギャラリースタイル)</title>
|
||||
<title xml:lang="zh-CN">Zeroboard XE board 基本皮肤(相册型)</title>
|
||||
<title xml:lang="en">ZeroboardXE Basic Board Skin (Gallery Style)</title>
|
||||
<maker email_address="zero@zeroboard.com" link="http://www.zeroboard.com" date="2007. 2. 28">
|
||||
<name xml:lang="ko">(주)NHN</name>
|
||||
<name xml:lang="jp">(株)NHN</name>
|
||||
<name xml:lang="zh-CN">(株)NHN</name>
|
||||
<name xml:lang="en">NHN Corp</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 Board的相册型基本皮肤。
|
||||
设计 : 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 gallery style board skin of Zeroboard XE.
|
||||
Design : Ki-Jeong Seo (http://blog.naver.com/addcozy)
|
||||
HTML/CSS : Chan-Myung Jeong (http://naradesign.net)
|
||||
</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>
|
||||
</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="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="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="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>
|
||||
</colorset>
|
||||
<extra_vars>
|
||||
<var name="order_target" type="select">
|
||||
<title xml:lang="ko">정렬 대상</title>
|
||||
<title xml:lang="jp">ソート対象</title>
|
||||
<title xml:lang="zh-CN">排序对象</title>
|
||||
<title xml:lang="en">Align Target</title>
|
||||
<type>select</type>
|
||||
<description xml:lang="ko">등록된 순서 또는 변경된 순서로 정렬을 할 수 있습니다.</description>
|
||||
<description xml:lang="jp">登録された順、変更された順でソートできます。</description>
|
||||
<description xml:lang="zh-CN">可对主题按发表顺或最后更新顺进行排序。</description>
|
||||
<description xml:lang="en">It can align articles as registered order or modified order.</description>
|
||||
<default>newest</default>
|
||||
<default>updated</default>
|
||||
</var>
|
||||
<var name="title" type="text">
|
||||
<title xml:lang="ko">게시판 제목</title>
|
||||
<title xml:lang="jp">掲示板タイトル</title>
|
||||
<title xml:lang="zh-CN">版面标题</title>
|
||||
<title xml:lang="en">Title of Board</title>
|
||||
<description xml:lang="ko">게시판의 제목을 적어주세요.</description>
|
||||
<description xml:lang="jp">掲示板タイトルを入力してください。</description>
|
||||
<description xml:lang="zh-CN">请输入版面标题。(留空为不显示)</description>
|
||||
<description xml:lang="en">Please 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>
|
||||
</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>
|
||||
<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>
|
||||
</var>
|
||||
<var name="duration_new" type="text">
|
||||
<title xml:lang="ko">new표시 시간 (hours)</title>
|
||||
<title xml:lang="en">Duration of indication for new item</title>
|
||||
<description xml:lang="ko">새로 등록된 게시물의 new 표시시간을 정할 수 있습니다. </description>
|
||||
<description xml:lang="en">You may set the duration of indication for fresh item. </description>
|
||||
<default>24</default>
|
||||
</var>
|
||||
</extra_vars>
|
||||
</colorset>
|
||||
<extra_vars>
|
||||
<var name="order_target" type="select">
|
||||
<title xml:lang="ko">정렬 대상</title>
|
||||
<title xml:lang="jp">ソート対象</title>
|
||||
<title xml:lang="zh-CN">排序对象</title>
|
||||
<title xml:lang="en">Align Target</title>
|
||||
<type>select</type>
|
||||
<description xml:lang="ko">등록된 순서 또는 변경된 순서로 정렬을 할 수 있습니다.</description>
|
||||
<description xml:lang="jp">登録された順、変更された順でソートできます。</description>
|
||||
<description xml:lang="zh-CN">可对主题按发表顺或最后更新顺进行排序。</description>
|
||||
<description xml:lang="en">It can align articles as registered order or modified order.</description>
|
||||
<default>newest</default>
|
||||
<default>updated</default>
|
||||
</var>
|
||||
<var name="title" type="text">
|
||||
<title xml:lang="ko">게시판 제목</title>
|
||||
<title xml:lang="jp">掲示板タイトル</title>
|
||||
<title xml:lang="zh-CN">版面标题</title>
|
||||
<title xml:lang="en">Title of Board</title>
|
||||
<description xml:lang="ko">게시판의 제목을 적어주세요.</description>
|
||||
<description xml:lang="jp">掲示板タイトルを入力してください。</description>
|
||||
<description xml:lang="zh-CN">请输入版面标题。(留空为不显示)</description>
|
||||
<description xml:lang="en">Please 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>
|
||||
</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>
|
||||
<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>
|
||||
</var>
|
||||
<var name="duration_new" type="text">
|
||||
<title xml:lang="ko">new표시 시간 (hours)</title>
|
||||
<title xml:lang="zh-CN">new图标显示时间(hours)</title>
|
||||
<title xml:lang="en">Duration of indication for new item</title>
|
||||
<description xml:lang="ko">새로 등록된 게시물의 new 표시시간을 정할 수 있습니다. </description>
|
||||
<description xml:lang="zh-CN">可以设置最新更新主题的new图标显示时间。</description>
|
||||
<description xml:lang="en">You may set the duration of indication for fresh item. </description>
|
||||
<default>24</default>
|
||||
</var>
|
||||
<var name="thumbnail_type" type="select">
|
||||
<title xml:lang="ko">썸네일 생성 방법</title>
|
||||
<description xml:lang="ko">썸네일 생성 방법을 선택할 수 있습니다. (crop : 꽉 채우기, ratio : 비율 맞추기)</description>
|
||||
<default>crop</default>
|
||||
<default>ratio</default>
|
||||
</var>
|
||||
<var name="thumbnail_width" type="text">
|
||||
<title xml:lang="ko">썸네일 가로크기</title>
|
||||
<description xml:lang="ko">썸네일의 가로 크기를 지정할 수 있습니다. (기본 100px)</description>
|
||||
<default>100</default>
|
||||
</var>
|
||||
<var name="thumbnail_height" type="text">
|
||||
<title xml:lang="ko">썸네일 세로크기</title>
|
||||
<description xml:lang="ko">썸네일의 세로 크기를 지정할 수 있습니다. (기본 100px)</description>
|
||||
<default>100</default>
|
||||
</var>
|
||||
<var name="display_author" type="select">
|
||||
<title xml:lang="ko">글쓴이 표시</title>
|
||||
<title xml:lang="jp">投稿者表示</title>
|
||||
<title xml:lang="zh-CN">显示昵称</title>
|
||||
<title xml:lang="en">Display Author</title>
|
||||
<default>Y</default>
|
||||
<default>N</default>
|
||||
<description />
|
||||
</var>
|
||||
<var name="display_regdate" type="select">
|
||||
<title xml:lang="ko">작성일 표시</title>
|
||||
<title xml:lang="jp">作成日表示</title>
|
||||
<title xml:lang="zh-CN">显示发表日期</title>
|
||||
<title xml:lang="en">Display Registered Date</title>
|
||||
<default>Y</default>
|
||||
<default>N</default>
|
||||
<description />
|
||||
</var>
|
||||
<var name="display_readed_count" type="select">
|
||||
<title xml:lang="ko">조회수 표시</title>
|
||||
<title xml:lang="jp">照合数表示</title>
|
||||
<title xml:lang="zh-CN">显示查看数</title>
|
||||
<title xml:lang="en">Display Hit</title>
|
||||
<default>Y</default>
|
||||
<default>N</default>
|
||||
<description />
|
||||
</var>
|
||||
<var name="display_voted_count" type="select">
|
||||
<title xml:lang="ko">추천수 표시</title>
|
||||
<title xml:lang="jp">推薦数表示</title>
|
||||
<title xml:lang="zh-CN">显示推荐数</title>
|
||||
<title xml:lang="en">Display Votes</title>
|
||||
<default>Y</default>
|
||||
<default>N</default>
|
||||
<description />
|
||||
</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>
|
||||
<default>N</default>
|
||||
<default>Y</default>
|
||||
<description />
|
||||
</var>
|
||||
</extra_vars>
|
||||
</skin>
|
||||
|
|
|
|||
|
|
@ -44,7 +44,18 @@
|
|||
</ul>
|
||||
|
||||
<div class="userInfo">
|
||||
<div class="author member_{$oDocument->get('member_srl')}">{$oDocument->getNickName()}</div>
|
||||
<!--@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"><div class="member_{$oDocument->get('member_srl')}">{$oDocument->getNickName()}</div></div>
|
||||
<!--@end-->
|
||||
|
||||
<!--@if($grant->is_admin)-->
|
||||
<div class="ipaddress">{$oDocument->get('ipaddress')}</div>
|
||||
<!--@end-->
|
||||
|
|
@ -68,7 +79,17 @@
|
|||
</table>
|
||||
<!--@end-->
|
||||
|
||||
<div class="readBody"><div class="contentBody">{$oDocument->getContent()}</div></div>
|
||||
<div class="readBody">
|
||||
<div class="contentBody">
|
||||
<!--@if($oDocument->isSecret() && !$oDocument->isGranted())-->
|
||||
{@ $form_include = true; }
|
||||
<!--#include("./input_password_form.html")-->
|
||||
|
||||
<!--@else-->
|
||||
{$oDocument->getContent()}
|
||||
<!--@end-->
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="readFooter">
|
||||
{@ $tag_list = $oDocument->get('tag_list') }
|
||||
|
|
|
|||
|
|
@ -25,10 +25,20 @@
|
|||
<!--@end-->
|
||||
</div>
|
||||
|
||||
<div class="author"><div class="member_{$val->member_srl}">{htmlspecialchars($val->nick_name)}</div></div>
|
||||
<div class="author">
|
||||
<!--@if(!$val->member_srl)-->
|
||||
<!--@if($val->homepage)-->
|
||||
<a href="{$val->homepage}" onclick="window.open(this.href);return false;">{htmlspecialchars($val->nick_name)}</a>
|
||||
<!--@else-->
|
||||
{htmlspecialchars($val->nick_name)}
|
||||
<!--@end-->
|
||||
<!--@else-->
|
||||
<div class="member_{$val->member_srl}">{htmlspecialchars($val->nick_name)}</div>
|
||||
<!--@end-->
|
||||
</div>
|
||||
|
||||
<div class="replyContent">
|
||||
{$val->content}
|
||||
{$val->content}
|
||||
</div>
|
||||
|
||||
<!--@if($val->uploaded_count && $val->uploaded_list)-->
|
||||
|
|
|
|||
|
|
@ -40,8 +40,8 @@ Jeong, Chan Myeong 070601~070630
|
|||
.boardList tr.bg2 { background:#fbfbfb;}
|
||||
.boardList th a { color:#3e3f3e; text-decoration:none; }
|
||||
.boardList th.num { background-position:-3px bottom; border-left:1px solid #ffffff; }
|
||||
.boardList th.title { text-align:center; }
|
||||
.boardList th.category { text-align:center; }
|
||||
.boardList th.title { text-align:center; padding-left:1em; }
|
||||
.boardList th.category { text-align:left; padding-left:1em; }
|
||||
.boardList th.title select { vertical-align:middle; margin-left:.5em; }
|
||||
.boardList th.reading { white-space:nowrap;}
|
||||
.boardList th.recommend { white-space:nowrap;}
|
||||
|
|
@ -102,7 +102,7 @@ Jeong, Chan Myeong 070601~070630
|
|||
.pageNavigation a.goToLast img { display:inline-block; padding:2px 0; position:relative; top:2px; _top:1px;}
|
||||
|
||||
/* extraVars list */
|
||||
.extraVarsList { width:100%; border:1px solid #e0e1db; clear:both; margin-bottom:1em;}
|
||||
.extraVarsList { width:100%; border:1px solid #e0e1db; clear:both; margin-bottom:1em; margin-top:1em;}
|
||||
.extraVarsList tr.notice { background:#f8f8f8;}
|
||||
.extraVarsList tr.notice .num { font-size:.9em; font-weight:bold;}
|
||||
.extraVarsList tr.bg1 { background:#ffffff}
|
||||
|
|
@ -135,15 +135,16 @@ Jeong, Chan Myeong 070601~070630
|
|||
.boardRead .dateAndModify { float:right; white-space:nowrap; font-size:.8em; color:#999999; position:relative;}
|
||||
.boardRead .dateAndModify strong { font-size:1em; font-family:Tahoma;}
|
||||
|
||||
.boardRead ul.uri { overflow:hidden; margin:0 0 2em .3em; float:right; clear:left;}
|
||||
.boardRead ul.uri { overflow:hidden; margin:0 0 2em .3em; float:right; clear:left; }
|
||||
.boardRead ul.uri li { font-size:8pt; color:#c5c7c0; }
|
||||
|
||||
.boardRead .userInfo { float:left; white-space:nowrap;}
|
||||
.boardRead .userInfo .author { padding:0 .3em 0 0; color:#3074a5; margin-right:.3em;}
|
||||
.boardRead .userInfo .ipaddress { font-size:.9em; font-family:Tahoma; color:#888888; margin-right:.5em; }
|
||||
.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; margin-top:.3em;}
|
||||
|
||||
.boardRead .contentBody { width:100%; overflow:hidden; }
|
||||
.boardRead .readBody { padding:0 .3em; color:#555555; overflow:hidden; margin-bottom:2em; clear:both; }
|
||||
.boardRead .readBody { padding:0 .3em; color:#555555; overflow:hidden; margin-bottom:2em; clear:both; margin-top:2em;}
|
||||
.boardRead .readBody p { margin:1em 0; line-height:1.5em;}
|
||||
.boardRead .readBody .alignLeft { float:left; margin:0 1em 1em 0; }
|
||||
.boardRead .readBody .alignRight { float:right; margin:0 0 1em 1em; }
|
||||
|
|
@ -188,16 +189,18 @@ Jeong, Chan Myeong 070601~070630
|
|||
#trackbacks address .date { font:.8em Tahoma; color:#cccccc; float:right;}
|
||||
|
||||
#reply { padding:.6em .6em; color:#666666; border:1px solid #e0e1db; margin-top:.5em;}
|
||||
#reply li { padding:.6em .8em .6em .6em; line-height:1.25em; clear:both; border-bottom:1px dotted #EEEEEE; list-style:none;}
|
||||
#reply li { padding:.6em .8em .6em .6em; line-height:1.25em; clear:both; border-bottom:1px dotted #EEEEEE; }
|
||||
#reply p { display:inline; margin-bottom:1em;}
|
||||
#reply .author { float:left; padding:0 .3em 0 0; font-size:.9em; color:#3074a5; margin:0 .3em .5em 0;}
|
||||
#reply .author a { font-size:.9em; color:#3074a5; margin-right:.3em;}
|
||||
#reply .author a { color:#3074a5; margin-right:.3em; text-decoration:none; }
|
||||
#reply .date { float:right; font:.8em Tahoma; color:#cccccc; margin:.3em 0 .5em 0;}
|
||||
|
||||
#reply .replyOption { float:right; white-space:nowrap; margin-left:.2em;}
|
||||
#reply .replyOption img { vertical-align:middle;}
|
||||
|
||||
#reply .replyContent { clear:left; }
|
||||
#reply .replyContent p { display:block; }
|
||||
#reply .replyContent li { padding:0; border:none; line-height:1.25em; }
|
||||
#reply .reply { background-color:#FAFAFA;}
|
||||
#reply .replyIndent { background:url(../images/common/iconReplyArrow.gif) no-repeat .0em .3em; padding-left:1.3em;}
|
||||
|
||||
|
|
@ -247,7 +250,7 @@ Jeong, Chan Myeong 070601~070630
|
|||
.boardWrite .extra_vars .info { clear:both; padding:.5em 0 0 .6em; margin-left:14em; font-size:.9em; color:#999999; background:url(../images/common/iconArrowD8.gif) no-repeat left center;}
|
||||
.boardWrite .extra_vars ul li { float:left; margin-right:1em; }
|
||||
|
||||
.smallBox { border:1px solid #e0e1db; margin:5em auto 1em auto;}
|
||||
.smallBox { border:1px solid #e0e1db; margin-left:auto; margin-right:auto; }
|
||||
.smallBox.w268 { width:268px;}
|
||||
.smallBox .header { position:relative; _width:100%; background:#ffffff url(../images/normal/bgH3.gif) no-repeat left bottom; overflow:hidden;}
|
||||
.smallBox .header h3 { clear:both; font-size:1.2em; padding:.8em 2em .6em 1.2em; border-bottom:3px solid #fe3614; }
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
<!--%import("filter/input_password.xml")-->
|
||||
<!--#include("header.html")-->
|
||||
<!--@if(!$form_include)--><!--#include("header.html")--><!--@end-->
|
||||
|
||||
<div class="smallBox w268">
|
||||
|
||||
|
|
@ -23,5 +23,4 @@
|
|||
|
||||
</div>
|
||||
|
||||
|
||||
<!--#include("footer.html")-->
|
||||
<!--@if(!$form_include)--><!--#include("footer.html")--><!--@end-->
|
||||
|
|
|
|||
|
|
@ -4,19 +4,6 @@
|
|||
* @brief board 모듈의 javascript
|
||||
**/
|
||||
|
||||
/* 관리자가 카트 선택시 세션에 넣음 */
|
||||
function doAddCart(mid, obj) {
|
||||
var srl = obj.value;
|
||||
var check_flag = obj.checked?'add':'remove';
|
||||
|
||||
var params = new Array();
|
||||
params["mid"] = mid;
|
||||
params["srl"] = srl;
|
||||
params["check_flag"] = check_flag;
|
||||
|
||||
exec_xml("board","procBoardAdminAddCart", params, null);
|
||||
}
|
||||
|
||||
/* 글쓰기 작성후 */
|
||||
function completeDocumentInserted(ret_obj) {
|
||||
var error = ret_obj['error'];
|
||||
|
|
|
|||
|
|
@ -10,21 +10,26 @@
|
|||
<!--@end-->
|
||||
|
||||
<!-- 목록 출력 -->
|
||||
<table cellspacing="0" summary="" class="boardList">
|
||||
<!--@if($module_info->display_number!='N')--><col width="80" /><!--@end-->
|
||||
<col />
|
||||
<!--@if($module_info->display_author!='N')--><col width="120" /><!--@end-->
|
||||
<!--@if($module_info->display_readed_count!='N')--><col width="70" /><!--@end-->
|
||||
<!--@if($module_info->display_voted_count!='N')--><col width="70" /><!--@end-->
|
||||
<!--@if($module_info->display_regdate != 'N')--><col width="90" /><!--@end-->
|
||||
<!--@if($module_info->display_last_update == 'Y')--><col width="90" /><!--@end-->
|
||||
<form action="./" method="get">
|
||||
|
||||
<table cellspacing="0" summary="" class="boardList">
|
||||
<!--@if($module_info->display_number!='N')--><col width="80" /><!--@end-->
|
||||
<col />
|
||||
<!--@if($module_info->display_author!='N')--><col width="120" /><!--@end-->
|
||||
<!--@if($module_info->display_readed_count!='N')--><col width="70" /><!--@end-->
|
||||
<!--@if($module_info->display_voted_count!='N')--><col width="70" /><!--@end-->
|
||||
<!--@if($module_info->display_regdate != 'N')--><col width="90" /><!--@end-->
|
||||
<!--@if($module_info->display_last_update == 'Y')--><col width="90" /><!--@end-->
|
||||
<thead>
|
||||
<tr>
|
||||
<!--@if($module_info->display_number!='N')--><th scope="col" class="num">{$lang->no}</th><!--@end-->
|
||||
<th scope="col" class="title <!--@if($module_info->use_category == 'Y')-->category<!--@end-->">
|
||||
<th scope="col" class="<!--@if($module_info->use_category == 'Y')-->category<!--@else-->title<!--@end-->">
|
||||
<!--@if($grant->is_admin)-->
|
||||
<input type="checkbox" onclick="checkboxSelectAll(this.form, 'cart'); return false;" />
|
||||
<!--@end-->
|
||||
|
||||
<!--@if($module_info->use_category == "Y")-->
|
||||
<!-- 카테고리 사용시 카테고리 선택 표시 -->
|
||||
<form action="./" method="get">
|
||||
<select name="category" id="board_category">
|
||||
<option value="">{$lang->category}</option>
|
||||
<!--@foreach($category_list as $val)-->
|
||||
|
|
@ -32,7 +37,6 @@
|
|||
<!--@end-->
|
||||
</select>
|
||||
<input type="button" name="go_button" id="go_button" value="GO" onclick="doChangeCategory(); return false;" class="buttonTypeGo" />
|
||||
</form>
|
||||
<!--@else-->
|
||||
{$lang->title}
|
||||
<!--@end-->
|
||||
|
|
@ -83,7 +87,7 @@
|
|||
|
||||
<td class="title">
|
||||
<!--@if($grant->is_admin)-->
|
||||
<input type="checkbox" value="{$document->document_srl}" onclick="doAddCart('{$mid}',this)" <!--@if($check_list[$document->document_srl])-->checked="checked"<!--@end--> />
|
||||
<input type="checkbox" name="cart" value="{$document->document_srl}" onclick="doAddDocumentCart(this)" <!--@if($document->isCarted())-->checked="checked"<!--@end--> />
|
||||
<!--@end-->
|
||||
|
||||
<!--@if($module_info->use_category == "Y" && $document->get('category_srl'))-->
|
||||
|
|
@ -114,7 +118,8 @@
|
|||
</tr>
|
||||
<!--@end-->
|
||||
</tbody>
|
||||
</table>
|
||||
</table>
|
||||
</form>
|
||||
|
||||
<div class="clear">
|
||||
|
||||
|
|
@ -130,7 +135,7 @@
|
|||
<!--@if($grant->is_admin)-->
|
||||
<!-- 문서 관리 버튼 -->
|
||||
<div class="gap1 fl">
|
||||
<a href="{getUrl('act','dispBoardAdminManageDocument')}" onclick="popopen(this.href,'manageDocument'); return false;" class="button"><span>{$lang->cmd_manage_document}</span></a>
|
||||
<a href="{getUrl('','module','document','act','dispDocumentAdminManageDocument')}" onclick="popopen(this.href,'manageDocument'); return false;" class="button"><span>{$lang->cmd_manage_document}</span></a>
|
||||
</div>
|
||||
<!--@end-->
|
||||
|
||||
|
|
|
|||
|
|
@ -183,11 +183,13 @@
|
|||
<description />
|
||||
</var>
|
||||
<var name="duration_new" type="text">
|
||||
<title xml:lang="ko">new표시 시간 (hours)</title>
|
||||
<title xml:lang="en">Duration of indication for new item</title>
|
||||
<description xml:lang="ko">새로 등록된 게시물의 new 표시시간을 정할 수 있습니다. </description>
|
||||
<description xml:lang="en">You may set the duration of indication for fresh item. </description>
|
||||
<default>24</default>
|
||||
<title xml:lang="ko">new표시 시간 (hours)</title>
|
||||
<title xml:lang="zh-CN">new图标显示时间(hours)</title>
|
||||
<title xml:lang="en">Duration of indication for new item</title>
|
||||
<description xml:lang="ko">새로 등록된 게시물의 new 표시시간을 정할 수 있습니다. </description>
|
||||
<description xml:lang="zh-CN">可以设置最新更新主题的new图标显示时间。</description>
|
||||
<description xml:lang="en">You may set the duration of indication for fresh item. </description>
|
||||
<default>24</default>
|
||||
</var>
|
||||
</extra_vars>
|
||||
</skin>
|
||||
|
|
|
|||
|
|
@ -44,7 +44,18 @@
|
|||
</ul>
|
||||
|
||||
<div class="userInfo">
|
||||
<div class="author member_{$oDocument->get('member_srl')}">{$oDocument->getNickName()}</div>
|
||||
<!--@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"><div class="member_{$oDocument->get('member_srl')}">{$oDocument->getNickName()}</div></div>
|
||||
<!--@end-->
|
||||
|
||||
<!--@if($grant->is_admin)-->
|
||||
<div class="ipaddress">{$oDocument->get('ipaddress')}</div>
|
||||
<!--@end-->
|
||||
|
|
@ -68,7 +79,17 @@
|
|||
</table>
|
||||
<!--@end-->
|
||||
|
||||
<div class="readBody"><div class="contentBody">{$oDocument->getContent()}</div></div>
|
||||
<div class="readBody">
|
||||
<div class="contentBody">
|
||||
<!--@if($oDocument->isSecret() && !$oDocument->isGranted())-->
|
||||
{@ $form_include = true; }
|
||||
<!--#include("./input_password_form.html")-->
|
||||
|
||||
<!--@else-->
|
||||
{$oDocument->getContent()}
|
||||
<!--@end-->
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="readFooter">
|
||||
{@ $tag_list = $oDocument->get('tag_list') }
|
||||
|
|
|
|||
|
|
@ -25,7 +25,17 @@
|
|||
<!--@end-->
|
||||
</div>
|
||||
|
||||
<div class="author"><div class="member_{$val->member_srl}">{htmlspecialchars($val->nick_name)}</div></div>
|
||||
<div class="author">
|
||||
<!--@if(!$val->member_srl)-->
|
||||
<!--@if($val->homepage)-->
|
||||
<a href="{$val->homepage}" onclick="window.open(this.href);return false;">{htmlspecialchars($val->nick_name)}</a>
|
||||
<!--@else-->
|
||||
{htmlspecialchars($val->nick_name)}
|
||||
<!--@end-->
|
||||
<!--@else-->
|
||||
<div class="member_{$val->member_srl}">{htmlspecialchars($val->nick_name)}</div>
|
||||
<!--@end-->
|
||||
</div>
|
||||
|
||||
<div class="replyContent">
|
||||
{$val->content}
|
||||
|
|
|
|||
|
|
@ -39,21 +39,19 @@ Jeong, Chan Myeong 070601~070630
|
|||
.boardList tr.bg1 { background:#ffffff}
|
||||
.boardList tr.bg2 { background:#fbfbfb;}
|
||||
.boardList th a { color:#3e3f3e; text-decoration:none; }
|
||||
.boardList th.num,
|
||||
.boardList th.title,
|
||||
.boardList th.category_title,
|
||||
.boardList th.category,
|
||||
.boardList th.num,
|
||||
.boardList th.reading,
|
||||
.boardList th.recommend,
|
||||
.boardList th.author,
|
||||
.boardList th.date { border-bottom:1px solid #e0e1db; padding:.5em;}
|
||||
|
||||
.boardList th.num { background-position:-3px bottom; border-left:1px solid #ffffff; }
|
||||
.boardList th.title { text-align:center; }
|
||||
.boardList th.category_title { text-align:left; padding-left:10px;}
|
||||
.boardList th.category_title select { vertical-align:middle; width:200px; }
|
||||
.boardList th.title { text-align:center; padding-left:1em;}
|
||||
.boardList th.category { text-align:left; padding-left:1em;}
|
||||
.boardList th.reading { white-space:nowrap;}
|
||||
.boardList th.recommend { white-space:nowrap;}
|
||||
.boardList th.date { border-right:1px solid #ffffff;}
|
||||
.boardList th .sort { padding:0 .2em; vertical-align:middle;}
|
||||
.boardList td { border-bottom:1px solid #eff0ed; padding:.5em;}
|
||||
.boardList td.num { font:.8em tahoma; color:#999999; padding:.5em 1em; text-align:center;}
|
||||
|
|
@ -61,7 +59,7 @@ Jeong, Chan Myeong 070601~070630
|
|||
.boardList tr.notice td.notice { font-size:.9em; color:#999999; font-weight:bold; text-align:center;}
|
||||
.boardList td.thumb { padding:8px; width:145px; table-layout:fixed; white-space:nowrap;}
|
||||
.boardList td.thumb * { vertical-align:middle;}
|
||||
.boardList td.title {padding-left:1em; }
|
||||
.boardList td.title {padding-left:1em; height:1em; border-bottom:none;}
|
||||
.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;}
|
||||
|
|
@ -73,7 +71,7 @@ Jeong, Chan Myeong 070601~070630
|
|||
.boardList td.author a { font-size:1em; color:#333333;}
|
||||
.boardList td.reading { font:.8em Tahoma; color:#999999; text-align:center;}
|
||||
.boardList td.date { font:.8em Tahoma; color:#999999; text-align:center; white-space:nowrap;}
|
||||
.boardList td.summary { border-top:none; vertical-align:top; color:#666666; line-height:1.25em; padding-left:20px;}
|
||||
.boardList td.summary { border-top:none; vertical-align:top; color:#666666; line-height:1.25em; padding-left:1em;}
|
||||
.boardList td.summary a { color:#666666; text-decoration:none; line-height:inherit;}
|
||||
.boardList td.summary a:visited { color:#999999;}
|
||||
.boardList td input { _margin:-3px;}
|
||||
|
|
@ -86,7 +84,7 @@ Jeong, Chan Myeong 070601~070630
|
|||
|
||||
.boardList.thumbnail { margin-top:-1px; border-bottom:none;}
|
||||
.boardList.thumbnail td { border-top:none; border-bottom:1px solid #eff0ed; padding:1.5em 0 0 1.5em; overflow:hidden;}
|
||||
.boardList.thumbnail div.cell { float:left; width:130px; margin:0 1.5em 0 0; padding-bottom:1.5em;}
|
||||
.boardList.thumbnail div.cell { float:left; margin:0 1.5em 0 0; padding-bottom:1.5em;}
|
||||
.boardList.thumbnail div.cell img.thumb { padding:2px; border:1px solid #e0e1db; display:block; margin-bottom:1em;}
|
||||
.boardList.thumbnail div.title { color:#444444; margin-bottom:.2em; padding-left:3px;}
|
||||
.boardList.thumbnail div.title a { color:#444444;}
|
||||
|
|
@ -109,7 +107,7 @@ Jeong, Chan Myeong 070601~070630
|
|||
.pageNavigation a.goToLast img { display:inline-block; padding:2px 0; position:relative; top:2px; _top:1px;}
|
||||
|
||||
/* extraVars list */
|
||||
.extraVarsList { width:100%; border:1px solid #e0e1db; clear:both; margin-bottom:1em;}
|
||||
.extraVarsList { width:100%; border:1px solid #e0e1db; clear:both; margin-bottom:1em; margin-top:1em;}
|
||||
.extraVarsList tr.notice { background:#f8f8f8;}
|
||||
.extraVarsList tr.notice .num { font-size:.9em; font-weight:bold;}
|
||||
.extraVarsList tr.bg1 { background:#ffffff}
|
||||
|
|
@ -145,12 +143,13 @@ Jeong, Chan Myeong 070601~070630
|
|||
.boardRead ul.uri { overflow:hidden; margin:0 0 2em .3em; float:right; clear:left;}
|
||||
.boardRead ul.uri li { font-size:8pt; color:#c5c7c0; }
|
||||
|
||||
.boardRead .userInfo { float:left; white-space:nowrap;}
|
||||
.boardRead .userInfo .author { padding:0 .3em 0 0; color:#3074a5; margin-right:.3em;}
|
||||
.boardRead .userInfo .ipaddress { font-size:.9em; font-family:Tahoma; color:#888888; margin-right:.5em; }
|
||||
.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; margin-top:.3em;}
|
||||
|
||||
.boardRead .contentBody { width:100%; overflow:hidden; }
|
||||
.boardRead .readBody { padding:0 .3em; color:#555555; overflow:hidden; margin-bottom:2em; clear:both; }
|
||||
.boardRead .readBody { padding:0 .3em; color:#555555; overflow:hidden; margin-bottom:2em; clear:both; margin-top:2em;}
|
||||
.boardRead .readBody p { margin:1em 0; line-height:1.5em;}
|
||||
.boardRead .readBody .alignLeft { float:left; margin:0 1em 1em 0; }
|
||||
.boardRead .readBody .alignRight { float:right; margin:0 0 1em 1em; }
|
||||
|
|
@ -195,16 +194,18 @@ Jeong, Chan Myeong 070601~070630
|
|||
#trackbacks address .date { font:.8em Tahoma; color:#cccccc; float:right;}
|
||||
|
||||
#reply { padding:.6em .6em; color:#666666; border:1px solid #e0e1db; margin-top:.5em;}
|
||||
#reply li { padding:.6em .8em .6em .6em; line-height:1.25em; clear:both; border-bottom:1px dotted #EEEEEE; list-style:none;}
|
||||
#reply li { padding:.6em .8em .6em .6em; line-height:1.25em; clear:both; border-bottom:1px dotted #EEEEEE; }
|
||||
#reply p { display:inline; margin-bottom:1em;}
|
||||
#reply .author { float:left; padding:0 .3em 0 0; font-size:.9em; color:#3074a5; margin:0 .3em .5em 0;}
|
||||
#reply .author a { font-size:.9em; color:#3074a5; margin-right:.3em;}
|
||||
#reply .author a { color:#3074a5; margin-right:.3em; text-decoration:none; }
|
||||
#reply .date { float:right; font:.8em Tahoma; color:#cccccc; margin:.3em 0 .5em 0;}
|
||||
|
||||
#reply .replyOption { float:right; white-space:nowrap; margin-left:.2em;}
|
||||
#reply .replyOption img { vertical-align:middle;}
|
||||
|
||||
#reply .replyContent { clear:left; }
|
||||
#reply .replyContent p { display:block; }
|
||||
#reply .replyContent li { padding:0; border:none; line-height:1.25em; }
|
||||
#reply .reply { background-color:#FAFAFA;}
|
||||
#reply .replyIndent { background:url(../images/common/iconReplyArrow.gif) no-repeat .0em .3em; padding-left:1.3em;}
|
||||
|
||||
|
|
@ -254,7 +255,7 @@ Jeong, Chan Myeong 070601~070630
|
|||
.boardWrite .extra_vars .info { clear:both; padding:.5em 0 0 .6em; margin-left:14em; font-size:.9em; color:#999999; background:url(../images/common/iconArrowD8.gif) no-repeat left center;}
|
||||
.boardWrite .extra_vars ul li { float:left; margin-right:1em; }
|
||||
|
||||
.smallBox { border:1px solid #e0e1db; margin:5em auto 1em auto;}
|
||||
.smallBox { border:1px solid #e0e1db; margin-left:auto; margin-right:auto; }
|
||||
.smallBox.w268 { width:268px;}
|
||||
.smallBox .header { position:relative; _width:100%; background:#ffffff url(../images/normal/bgH3.gif) no-repeat left bottom; overflow:hidden;}
|
||||
.smallBox .header h3 { clear:both; font-size:1.2em; padding:.8em 2em .6em 1.2em; border-bottom:3px solid #fe3614; }
|
||||
|
|
|
|||
|
|
@ -20,6 +20,11 @@
|
|||
{@ $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-->
|
||||
|
||||
<!-- 상단 텍스트 출력 -->
|
||||
{$module_info->header_text}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
<!--%import("filter/input_password.xml")-->
|
||||
<!--#include("header.html")-->
|
||||
<!--@if(!$form_include)--><!--#include("header.html")--><!--@end-->
|
||||
|
||||
<div class="smallBox w268">
|
||||
|
||||
|
|
@ -24,4 +24,4 @@
|
|||
</div>
|
||||
|
||||
|
||||
<!--#include("footer.html")-->
|
||||
<!--@if(!$form_include)--><!--#include("footer.html")--><!--@end-->
|
||||
|
|
|
|||
|
|
@ -4,19 +4,6 @@
|
|||
* @brief board 모듈의 javascript
|
||||
**/
|
||||
|
||||
/* 관리자가 카트 선택시 세션에 넣음 */
|
||||
function doAddCart(mid, obj) {
|
||||
var srl = obj.value;
|
||||
var check_flag = obj.checked?'add':'remove';
|
||||
|
||||
var params = new Array();
|
||||
params["mid"] = mid;
|
||||
params["srl"] = srl;
|
||||
params["check_flag"] = check_flag;
|
||||
|
||||
exec_xml("board","procBoardAdminAddCart", params, null);
|
||||
}
|
||||
|
||||
/* 글쓰기 작성후 */
|
||||
function completeDocumentInserted(ret_obj) {
|
||||
var error = ret_obj['error'];
|
||||
|
|
|
|||
|
|
@ -10,20 +10,25 @@
|
|||
<!--@end-->
|
||||
|
||||
<!-- 목록 출력 -->
|
||||
<table cellspacing="0" summary="" class="boardList">
|
||||
<col width="50" />
|
||||
<col width="120" />
|
||||
<col />
|
||||
<col width="120" />
|
||||
<col width="60" />
|
||||
<col width="60" />
|
||||
<col width="80" />
|
||||
<form action="./" method="get">
|
||||
<table cellspacing="0" summary="" class="boardList">
|
||||
<!--@if($module_info->display_number!='N')--><col width="80" /><!--@end-->
|
||||
<col width="{$module_info->thumbnail_width+20}" />
|
||||
<col />
|
||||
<!--@if($module_info->display_author!='N')--><col width="120" /><!--@end-->
|
||||
<!--@if($module_info->display_readed_count!='N')--><col width="70" /><!--@end-->
|
||||
<!--@if($module_info->display_voted_count!='N')--><col width="70" /><!--@end-->
|
||||
<!--@if($module_info->display_regdate != 'N')--><col width="90" /><!--@end-->
|
||||
<!--@if($module_info->display_last_update == 'Y')--><col width="90" /><!--@end-->
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col" class="num">{$lang->no}</th>
|
||||
<th scope="col" colspan="2" class="<!--@if($module_info->use_category=='Y')-->category_title<!--@else-->title<!--@end-->">
|
||||
<!--@if($module_info->display_number!='N')--><th scope="col" class="num">{$lang->no}</th><!--@end-->
|
||||
<th scope="col" colspan="2" class="<!--@if($module_info->use_category=='Y')-->category<!--@else-->title<!--@end-->">
|
||||
<!--@if($grant->is_admin)-->
|
||||
<input type="checkbox" onclick="checkboxSelectAll(this.form, 'cart'); return false;" />
|
||||
<!--@end-->
|
||||
|
||||
<!--@if($module_info->use_category == "Y")-->
|
||||
<form action="./" method="get">
|
||||
<select name="category" id="board_category">
|
||||
<option value="" >{$lang->category}</option>
|
||||
<!--@foreach($category_list as $val)-->
|
||||
|
|
@ -31,12 +36,11 @@
|
|||
<!--@end-->
|
||||
</select>
|
||||
<input type="button" name="go_button" id= "go_button" value="GO" onclick="doChangeCategory(); return false;" class="buttonTypeGo" />
|
||||
</form>
|
||||
<!--@else-->
|
||||
{$lang->title}
|
||||
<!--@end-->
|
||||
</th>
|
||||
<th class="author" scope="col">{$lang->writer}</th>
|
||||
<!--@if($module_info->display_author!='N')--><th class="author" scope="col">{$lang->writer}</th><!--@end-->
|
||||
|
||||
<!--@if($order_type == "desc")-->
|
||||
{@ $order_icon = "buttonDescending.gif" }
|
||||
|
|
@ -46,11 +50,13 @@
|
|||
{@ $order_type = "desc"; }
|
||||
<!--@end-->
|
||||
|
||||
<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>
|
||||
<!--@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-->
|
||||
|
||||
<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>
|
||||
<!--@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-->
|
||||
|
||||
<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>
|
||||
<!--@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_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-->
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
|
|
@ -58,7 +64,7 @@
|
|||
<!--@if(!$document_list)-->
|
||||
<!-- 게시물이 없으면 등록된 글이 없음을 표시 -->
|
||||
<tr class="bg0">
|
||||
<td colspan="6" class="title">
|
||||
<td colspan="7" class="title">
|
||||
{$lang->no_documents}
|
||||
</td>
|
||||
</tr>
|
||||
|
|
@ -69,10 +75,10 @@
|
|||
<!--@if($document->isNotice())-->
|
||||
|
||||
<tr class="notice">
|
||||
<td class="num">{$lang->notice}</td>
|
||||
<!--@if($module_info->display_number!='N')--><td class="notice">{$lang->notice}</td><!--@end-->
|
||||
<td class="title" colspan="2">
|
||||
<!--@if($grant->is_admin)-->
|
||||
<input type="checkbox" value="{$document->document_srl}" onclick="doAddCart('{$mid}',this)" <!--@if($check_list[$document->document_srl])-->checked="checked"<!--@end--> />
|
||||
<input type="checkbox" name="cart" value="{$document->document_srl}" onclick="doAddDocumentCart(this)" <!--@if($document->isCarted())-->checked="checked"<!--@end--> />
|
||||
<!--@end-->
|
||||
<!--@if($module_info->use_category == "Y" && $document->get('category_srl'))-->
|
||||
<strong class="category">{$category_list[$document->get('category_srl')]->title}</strong>
|
||||
|
|
@ -90,26 +96,28 @@
|
|||
|
||||
{$document->printExtraImages(60*60*$module_info->duration_new)}
|
||||
</td>
|
||||
<td class="author"><div class="member_{$document->get('member_srl')}">{$document->getNickName()}</div></td>
|
||||
<td class="reading">{$document->get('readed_count')}</td>
|
||||
<td class="recommend">{$document->get('voted_count')}</td>
|
||||
<td class="date">{$document->getRegdate('Y-m-d')}</td>
|
||||
<!--@if($module_info->display_author!='N')--><td class="author"><div class="member_{$document->get('member_srl')}">{$document->getNickName()}</div></td><!--@end-->
|
||||
<!--@if($module_info->display_readed_count!='N')--><td class="reading">{$document->get('readed_count')>0?$document->get('readed_count'):' '}</td><!--@end-->
|
||||
<!--@if($module_info->display_voted_count!='N')--><td class="recommend">{$document->get('voted_count')>0?$document->get('voted_count'):' '}</td><!--@end-->
|
||||
<!--@if($module_info->display_regdate!='N')--><td class="date">{$document->getRegdate('Y-m-d')}</td><!--@end-->
|
||||
<!--@if($module_info->display_last_update=='Y')--><td class="date">{zdate($document->get('last_update'),'Y-m-d H:i')}</td><!--@end-->
|
||||
</tr>
|
||||
|
||||
<!--@else-->
|
||||
|
||||
<tr class="bg{($no+1)%2+1}">
|
||||
|
||||
<td rowspan="2" class="num"><!--@if($document_srl == $document->document_srl)--><img src="./images/common/iconArrowD8.gif" alt="" border="0" /><!--@else-->{$no}<!--@end--></td>
|
||||
<!--@if($document->thumbnailExists(100))-->
|
||||
<td rowspan="2" class="thumb"><a href="{getUrl('','document_srl',$document->document_srl)}" class="thumbnailMedium"><img src="{$document->getThumbnail(100)}" border="0" alt="" /></a></td>
|
||||
<!--@if($module_info->display_number!='N')--><td rowspan="2" class="num"><!--@if($document_srl == $document->document_srl)--><img src="./images/common/iconArrowD8.gif" border="0" alt="" /><!--@else-->{$no}<!--@end--></td><!--@end-->
|
||||
|
||||
<!--@if($document->thumbnailExists($module_info->thumbnail_width, $module_info->thumbnail_height, $module_info->thumbnail_type))-->
|
||||
<td rowspan="2" class="thumb"><a href="{getUrl('','document_srl',$document->document_srl)}" class="thumbnailMedium"><img src="{$document->getThumbnail($module_info->thumbnail_width, $module_info->thumbnail_height, $module_info->thumbnail_type)}" border="0" alt="" /></a></td>
|
||||
<td class="title">
|
||||
<!--@else-->
|
||||
<td class="title" colspan="2">
|
||||
<!--@end-->
|
||||
|
||||
<!--@if($grant->is_admin)-->
|
||||
<input type="checkbox" value="{$document->document_srl}" onclick="doAddCart('{$mid}',this)" <!--@if($check_list[$document->document_srl])-->checked="checked"<!--@end--> />
|
||||
<input type="checkbox" name="cart" value="{$document->document_srl}" onclick="doAddDocumentCart(this)" <!--@if($document->isCarted())-->checked="checked"<!--@end--> />
|
||||
<!--@end-->
|
||||
<!--@if($module_info->use_category == "Y" && $document->get('category_srl'))-->
|
||||
<strong>{$category_list[$document->get('category_srl')]->title}</strong>
|
||||
|
|
@ -126,23 +134,32 @@
|
|||
<!--@end-->
|
||||
{$document->printExtraImages(60*60*$module_info->duration_new)}
|
||||
</td>
|
||||
<td class="author"><div class="member_{$document->get('member_srl')}">{$document->getNickName()}</div></td>
|
||||
<td class="reading">{$document->get('readed_count')}</td>
|
||||
<td class="recommend">{$document->get('voted_count')}</td>
|
||||
<td class="date">{$document->getRegdate('Y-m-d')}</td>
|
||||
<!--@if($module_info->display_author!='N')--><td class="author"><div class="member_{$document->get('member_srl')}">{$document->getNickName()}</div></td><!--@end-->
|
||||
<!--@if($module_info->display_readed_count!='N')--><td class="reading">{$document->get('readed_count')>0?$document->get('readed_count'):' '}</td><!--@end-->
|
||||
<!--@if($module_info->display_voted_count!='N')--><td class="recommend">{$document->get('voted_count')>0?$document->get('voted_count'):' '}</td><!--@end-->
|
||||
<!--@if($module_info->display_regdate!='N')--><td class="date">{$document->getRegdate('Y-m-d')}</td><!--@end-->
|
||||
<!--@if($module_info->display_last_update=='Y')--><td class="date">{zdate($document->get('last_update'),'Y-m-d H:i')}</td><!--@end-->
|
||||
</tr>
|
||||
<!--@if($document->thumbnailExists(100))-->
|
||||
{@ $_col_count = 5}
|
||||
{@ $_col_count = 7}
|
||||
<!--@else-->
|
||||
{@ $_col_count = 6}
|
||||
{@ $_col_count = 8}
|
||||
<!--@end-->
|
||||
|
||||
<!--@if($module_info->display_number=='N')-->{@ $_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=='N')-->{@ $_col_count --; }<!--@end-->
|
||||
<tr class="bg{($no+1)%2+1}">
|
||||
<td colspan="{$_col_count}" class="summary"><a href="{getUrl('','document_srl',$document->document_srl)}">{$document->getSummary(120)}</a></td>
|
||||
<td colspan="{$_col_count}" class="summary"><a href="{getUrl('','document_srl',$document->document_srl)}">{$document->getSummary(120)}</a> </td>
|
||||
</tr>
|
||||
<!--@end-->
|
||||
<!--@end-->
|
||||
</tbody>
|
||||
</table>
|
||||
</table>
|
||||
</form>
|
||||
|
||||
|
||||
<div class="clear">
|
||||
|
|
@ -158,7 +175,7 @@
|
|||
<!--@if($grant->is_admin)-->
|
||||
<!-- 문서 관리 버튼 -->
|
||||
<div class="gap1 fl">
|
||||
<a href="{getUrl('act','dispBoardAdminManageDocument')}" onclick="popopen(this.href,'manageDocument'); return false;" class="button"><span>{$lang->cmd_manage_document}</span></a>
|
||||
<a href="{getUrl('','module','document','act','dispDocumentAdminManageDocument')}" onclick="popopen(this.href,'manageDocument'); return false;" class="button"><span>{$lang->cmd_manage_document}</span></a>
|
||||
</div>
|
||||
<!--@end-->
|
||||
|
||||
|
|
|
|||
|
|
@ -1,127 +1,198 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<skin>
|
||||
<title xml:lang="ko">제로보드XE 게시판 기본 스킨(웹진형)</title>
|
||||
<title xml:lang="jp">ゼロボードXE掲示板のデフォルトスキン(ウェブジンスタイル)</title>
|
||||
<title xml:lang="zh-CN">Zeroboard XE Board 基本皮肤(网络杂志型)</title>
|
||||
<title xml:lang="en">ZeroboardXE Basic Board Skin (Webzine Style)</title>
|
||||
<maker email_address="zero@zeroboard.com" link="http://www.zeroboard.com" date="2007. 2. 28">
|
||||
<name xml:lang="ko">(주)NHN</name>
|
||||
<name xml:lang="jp">(株)NHN</name>
|
||||
<name xml:lang="zh-CN">(株)NHN</name>
|
||||
<name xml:lang="en">NHN Corp</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 Board 网络杂志型基本皮肤。
|
||||
设计 : 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 webzine style board skin of Zeroboard XE.
|
||||
Design : Ki-Jeong Seo (http://blog.naver.com/addcozy)
|
||||
HTML/CSS : Chan-Myung Jeong (http://naradesign.net)
|
||||
</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>
|
||||
</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="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="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="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>
|
||||
</colorset>
|
||||
<extra_vars>
|
||||
<var name="order_target" type="select">
|
||||
<title xml:lang="ko">정렬 대상</title>
|
||||
<title xml:lang="jp">ソート対象</title>
|
||||
<title xml:lang="zh-CN">排序对象</title>
|
||||
<title xml:lang="en">Align Target</title>
|
||||
<type>select</type>
|
||||
<description xml:lang="ko">등록된 순서 또는 변경된 순서로 정렬을 할 수 있습니다.</description>
|
||||
<description xml:lang="jp">登録された順、変更された順でソートできます。</description>
|
||||
<description xml:lang="zh-CN">可对主题按发表顺或最后更新顺进行排序。</description>
|
||||
<description xml:lang="en">It can align articles as registered order or modified order.</description>
|
||||
<default>newest</default>
|
||||
<default>updated</default>
|
||||
<title xml:lang="ko">제로보드XE 게시판 기본 스킨(웹진형)</title>
|
||||
<title xml:lang="jp">ゼロボードXE掲示板のデフォルトスキン(ウェブジンスタイル)</title>
|
||||
<title xml:lang="zh-CN">Zeroboard XE Board 基本皮肤(网络杂志型)</title>
|
||||
<title xml:lang="en">ZeroboardXE Basic Board Skin (Webzine Style)</title>
|
||||
<maker email_address="zero@zeroboard.com" link="http://www.zeroboard.com" date="2007. 2. 28">
|
||||
<name xml:lang="ko">(주)NHN</name>
|
||||
<name xml:lang="jp">(株)NHN</name>
|
||||
<name xml:lang="zh-CN">(株)NHN</name>
|
||||
<name xml:lang="en">NHN Corp</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 Board 网络杂志型基本皮肤。
|
||||
设计 : 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 webzine style board skin of Zeroboard XE.
|
||||
Design : Ki-Jeong Seo (http://blog.naver.com/addcozy)
|
||||
HTML/CSS : Chan-Myung Jeong (http://naradesign.net)
|
||||
</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>
|
||||
</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="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="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="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>
|
||||
</colorset>
|
||||
<extra_vars>
|
||||
<var name="order_target" type="select">
|
||||
<title xml:lang="ko">정렬 대상</title>
|
||||
<title xml:lang="jp">ソート対象</title>
|
||||
<title xml:lang="zh-CN">排序对象</title>
|
||||
<title xml:lang="en">Align Target</title>
|
||||
<description xml:lang="ko">등록된 순서 또는 변경된 순서로 정렬을 할 수 있습니다.</description>
|
||||
<description xml:lang="jp">登録された順、変更された順でソートできます。</description>
|
||||
<description xml:lang="zh-CN">可对主题按发表顺或最后更新顺进行排序。</description>
|
||||
<description xml:lang="en">It can align articles as registered order or modified order.</description>
|
||||
<default>newest</default>
|
||||
<default>updated</default>
|
||||
</var>
|
||||
<var name="title" type="text">
|
||||
<title xml:lang="ko">게시판 제목</title>
|
||||
<title xml:lang="jp">掲示板タイトル</title>
|
||||
<title xml:lang="zh-CN">版面标题</title>
|
||||
<title xml:lang="en">Title of Board</title>
|
||||
<description xml:lang="ko">게시판의 제목을 적어주세요.</description>
|
||||
<description xml:lang="jp">掲示板タイトルを入力してください。</description>
|
||||
<description xml:lang="zh-CN">请输入版面标题。(留空为不显示)</description>
|
||||
<description xml:lang="en">Please 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>
|
||||
</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>
|
||||
<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>
|
||||
</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>
|
||||
<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>
|
||||
</var>
|
||||
<var name="duration_new" type="text">
|
||||
<title xml:lang="ko">new표시 시간 (hours)</title>
|
||||
<title xml:lang="zh-CN">new图标显示时间(hours)</title>
|
||||
<title xml:lang="en">Duration of indication for new item</title>
|
||||
<description xml:lang="ko">새로 등록된 게시물의 new 표시시간을 정할 수 있습니다. </description>
|
||||
<description xml:lang="zh-CN">可以设置最新更新主题的new图标显示时间。</description>
|
||||
<description xml:lang="en">You may set the duration of indication for fresh item. </description>
|
||||
<default>24</default>
|
||||
</var>
|
||||
<var name="thumbnail_type" type="select">
|
||||
<title xml:lang="ko">썸네일 생성 방법</title>
|
||||
<description xml:lang="ko">썸네일 생성 방법을 선택할 수 있습니다. (crop : 꽉 채우기, ratio : 비율 맞추기)</description>
|
||||
<default>crop</default>
|
||||
<default>ratio</default>
|
||||
</var>
|
||||
<var name="thumbnail_width" type="text">
|
||||
<title xml:lang="ko">썸네일 가로크기</title>
|
||||
<description xml:lang="ko">썸네일의 가로 크기를 지정할 수 있습니다. (기본 100px)</description>
|
||||
<default>100</default>
|
||||
</var>
|
||||
<var name="thumbnail_height" type="text">
|
||||
<title xml:lang="ko">썸네일 세로크기</title>
|
||||
<description xml:lang="ko">썸네일의 세로 크기를 지정할 수 있습니다. (기본 100px)</description>
|
||||
<default>100</default>
|
||||
</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>
|
||||
<default>Y</default>
|
||||
<default>N</default>
|
||||
<description />
|
||||
</var>
|
||||
<var name="title" type="text">
|
||||
<title xml:lang="ko">게시판 제목</title>
|
||||
<title xml:lang="jp">掲示板タイトル</title>
|
||||
<title xml:lang="zh-CN">版面标题</title>
|
||||
<title xml:lang="en">Title of Board</title>
|
||||
<description xml:lang="ko">게시판의 제목을 적어주세요.</description>
|
||||
<description xml:lang="jp">掲示板タイトルを入力してください。</description>
|
||||
<description xml:lang="zh-CN">请输入版面标题。(留空为不显示)</description>
|
||||
<description xml:lang="en">Please input the title of board.</description>
|
||||
<var name="display_author" type="select">
|
||||
<title xml:lang="ko">글쓴이 표시</title>
|
||||
<title xml:lang="jp">投稿者表示</title>
|
||||
<title xml:lang="zh-CN">显示昵称</title>
|
||||
<title xml:lang="en">Display Author</title>
|
||||
<default>Y</default>
|
||||
<default>N</default>
|
||||
<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>
|
||||
<var name="display_regdate" type="select">
|
||||
<title xml:lang="ko">작성일 표시</title>
|
||||
<title xml:lang="jp">作成日表示</title>
|
||||
<title xml:lang="zh-CN">显示发表日期</title>
|
||||
<title xml:lang="en">Display Registered Date</title>
|
||||
<default>Y</default>
|
||||
<default>N</default>
|
||||
<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>
|
||||
<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>
|
||||
<var name="display_readed_count" type="select">
|
||||
<title xml:lang="ko">조회수 표시</title>
|
||||
<title xml:lang="jp">照合数表示</title>
|
||||
<title xml:lang="zh-CN">显示查看数</title>
|
||||
<title xml:lang="en">Display Hit</title>
|
||||
<default>Y</default>
|
||||
<default>N</default>
|
||||
<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>
|
||||
<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>
|
||||
<var name="display_voted_count" type="select">
|
||||
<title xml:lang="ko">추천수 표시</title>
|
||||
<title xml:lang="jp">推薦数表示</title>
|
||||
<title xml:lang="zh-CN">显示推荐数</title>
|
||||
<title xml:lang="en">Display Votes</title>
|
||||
<default>Y</default>
|
||||
<default>N</default>
|
||||
<description />
|
||||
</var>
|
||||
<var name="duration_new" type="text">
|
||||
<title xml:lang="ko">new표시 시간 (hours)</title>
|
||||
<title xml:lang="en">Duration of indication for new item</title>
|
||||
<description xml:lang="ko">새로 등록된 게시물의 new 표시시간을 정할 수 있습니다. </description>
|
||||
<description xml:lang="en">You may set the duration of indication for fresh item. </description>
|
||||
<default>24</default>
|
||||
<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>
|
||||
<default>N</default>
|
||||
<default>Y</default>
|
||||
<description />
|
||||
</var>
|
||||
</extra_vars>
|
||||
</extra_vars>
|
||||
</skin>
|
||||
|
|
|
|||
|
|
@ -44,7 +44,18 @@
|
|||
</ul>
|
||||
|
||||
<div class="userInfo">
|
||||
<div class="author member_{$oDocument->get('member_srl')}">{$oDocument->getNickName()}</div>
|
||||
<!--@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"><div class="member_{$oDocument->get('member_srl')}">{$oDocument->getNickName()}</div></div>
|
||||
<!--@end-->
|
||||
|
||||
<!--@if($grant->is_admin)-->
|
||||
<div class="ipaddress">{$oDocument->get('ipaddress')}</div>
|
||||
<!--@end-->
|
||||
|
|
@ -68,7 +79,17 @@
|
|||
</table>
|
||||
<!--@end-->
|
||||
|
||||
<div class="readBody"><div class="contentBody">{$oDocument->getContent()}</div></div>
|
||||
<div class="readBody">
|
||||
<div class="contentBody">
|
||||
<!--@if($oDocument->isSecret() && !$oDocument->isGranted())-->
|
||||
{@ $form_include = true; }
|
||||
<!--#include("./input_password_form.html")-->
|
||||
|
||||
<!--@else-->
|
||||
{$oDocument->getContent()}
|
||||
<!--@end-->
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="readFooter">
|
||||
{@ $tag_list = $oDocument->get('tag_list') }
|
||||
|
|
|
|||
|
|
@ -49,19 +49,19 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<th scope="row">{$lang->description}</th>
|
||||
<td>{nl2br(htmlspecialchars($module_info->description))}</td>
|
||||
<td>{nl2br(htmlspecialchars($module_info->description))} </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">{$lang->header_text}</th>
|
||||
<td>{htmlspecialchars($module_info->header_text)}</td>
|
||||
<td>{htmlspecialchars($module_info->header_text)} </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">{$lang->footer_text}</th>
|
||||
<td>{htmlspecialchars($module_info->footer_text)}</td>
|
||||
<td>{htmlspecialchars($module_info->footer_text)} </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">{$lang->admin_id}</th>
|
||||
<td>{implode(",",$module_info->admin_id)}</td>
|
||||
<td>{implode(",",$module_info->admin_id)} </td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
|
|
|
|||
|
|
@ -1,53 +0,0 @@
|
|||
<!--%import("filter/manage_checked_document.xml")-->
|
||||
<!--%import("js/board_admin.js")-->
|
||||
|
||||
<div id="popHeadder">
|
||||
<h1>{$lang->cmd_manage_document}</h1>
|
||||
</div>
|
||||
|
||||
<form action="./" method="get" id="fo_management">
|
||||
<input type="hidden" name="mid" value="{$mid}" />
|
||||
<input type="hidden" name="type" value="" />
|
||||
|
||||
<div id="popBody">
|
||||
<table cellspacing="0" class="tableType5">
|
||||
<col width="150" />
|
||||
<col />
|
||||
<tr>
|
||||
<th scope="row"><label for="textfield1">{$lang->checked_count}</label></th>
|
||||
<td>{count($document_list)}</td>
|
||||
</tr>
|
||||
<!--@if(count($document_list) && count($board_list)>1)-->
|
||||
<tr>
|
||||
<th scope="row">{$lang->move_target_module}</th>
|
||||
<td>
|
||||
<select name="target_board" class="w100">
|
||||
<!--@foreach($board_list as $key => $val)-->
|
||||
<!--@if($module_srl != $val->module_srl)-->
|
||||
<option value="{$val->module_srl}">{$val->browser_title} ({$val->mid})</option>
|
||||
<!--@end-->
|
||||
<!--@end-->
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">{$lang->cmd_send_message}</th>
|
||||
<td>
|
||||
<textarea name="message_content" class="inputTypeTextArea w400" cols="45" rows="5"></textarea>
|
||||
</td>
|
||||
</tr>
|
||||
<!--@end-->
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div id="popFooter">
|
||||
<div class="tRight gap1">
|
||||
<!--@if(count($document_list))-->
|
||||
<a href="#" onclick="doManageDocument('move');return false;" class="button"><span>{$lang->cmd_move}</span></a>
|
||||
<a href="#" onclick="doManageDocument('delete');return false;" class="button"><span>{$lang->cmd_delete}</span></a>
|
||||
<!--@end-->
|
||||
<a href="#" onclick="window.close(); return false;" class="button"><span>{$lang->cmd_close}</span></a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
|
|
@ -5,7 +5,7 @@
|
|||
<!--@if($module_info)-->
|
||||
<div class="header4">
|
||||
<!--@if($module_info->mid)-->
|
||||
<h4>{$module_info->mid} <!--@if($module_info->is_default=='N')--><span class="bracket">({$lang->is_default})</span><!--@end--> <span class="vr">|</span> <a href="{getUrl('','mid',$module_info->mid)}" onclick="window.open(this.href); return false;" class="view">View</a></h4>
|
||||
<h4>{$module_info->mid} <!--@if($module_info->is_default=='Y')--><span class="bracket">({$lang->is_default})</span><!--@end--> <span class="vr">|</span> <a href="{getUrl('','mid',$module_info->mid)}" onclick="window.open(this.href); return false;" class="view">View</a></h4>
|
||||
<!--@end-->
|
||||
|
||||
<ul class="localNavigation">
|
||||
|
|
|
|||
|
|
@ -100,17 +100,3 @@ function doChangeCategory(fo_obj) {
|
|||
return true;
|
||||
}
|
||||
|
||||
/* 선택된 글의 삭제 또는 이동 */
|
||||
function doManageDocument(type, mid) {
|
||||
var fo_obj = xGetElementById("fo_management");
|
||||
fo_obj.type.value = type;
|
||||
|
||||
procFilter(fo_obj, manage_checked_document);
|
||||
}
|
||||
|
||||
/* 선택된 글의 삭제 또는 이동 후 */
|
||||
function completeManageDocument(ret_obj) {
|
||||
if(opener) opener.location.href = opener.location.href;
|
||||
alert(ret_obj['message']);
|
||||
window.close();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -125,6 +125,13 @@
|
|||
$comment_srl = $source_list[$i]->comment_srl;
|
||||
$parent_srl = $source_list[$i]->parent_srl;
|
||||
$member_srl = $source_list[$i]->member_srl;
|
||||
|
||||
// OL/LI 태그를 위한 치환 처리
|
||||
$source_list[$i]->content = preg_replace('!<(ol|ul|blockquote)>!is','<\\1 style="margin-left:40px;">',$source_list[$i]->content);
|
||||
|
||||
// url에 대해서 정규표현식으로 치환
|
||||
$source_list[$i]->content = preg_replace('!([^>^"^\'^=])(http|https|ftp|mms):\/\/([^ ^<^"^\']*)!is','$1<a href="$2://$3" onclick="window.open(this.href);return false;">$2://$3</a>',' '.$source_list[$i]->content);
|
||||
|
||||
if(!$comment_srl) continue;
|
||||
|
||||
if($is_admin || $this->isGranted($comment_srl) || $member_srl == $logged_info->member_srl) $source_list[$i]->is_granted = true;
|
||||
|
|
|
|||
|
|
@ -1,12 +1,28 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<module>
|
||||
<grants />
|
||||
<permissions>
|
||||
<permission action="dispDocumentAdminManageDocument" target="manager" />
|
||||
<permission action="getDocumentCategories" target="manager" />
|
||||
<permission action="procDocumentAdminAddCart" target="manager" />
|
||||
<permission action="procDocumentAdminManageCheckedDocument" target="manager" />
|
||||
</permissions>
|
||||
<actions>
|
||||
<action name="dispDocumentPrint" type="view" standalone="true" />
|
||||
<action name="dispDocumentPreview" type="view" standalone="true" />
|
||||
|
||||
<action name="dispDocumentAdminList" type="view" admin_index="true" standalone="true" />
|
||||
<action name="dispDocumentAdminConfig" type="view" standalone="true" />
|
||||
|
||||
<action name="dispDocumentAdminManageDocument" type="view" standalone="true"/>
|
||||
|
||||
<action name="getDocumentCategories" type="model" standalone="true"/>
|
||||
|
||||
<action name="procDocumentAdminAddCart" type="controller" standalone="true" />
|
||||
<action name="procDocumentAdminManageCheckedDocument" type="controller" standalone="true" />
|
||||
|
||||
<action name="procDocumentAdminDeleteChecked" type="controller" standalone="true" />
|
||||
<action name="procDocumentAdminInsertConfig" type="controller" standalone="true" />
|
||||
<action name="procDocumentAdminDeleteAllThumbnail" type="controller" standalone="true" />
|
||||
</actions>
|
||||
</module>
|
||||
|
|
|
|||
|
|
@ -36,25 +36,134 @@
|
|||
$this->setMessage( sprintf(Context::getLang('msg_checked_document_is_deleted'), $document_count) );
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 관리자가 글 선택시 세션에 담음
|
||||
**/
|
||||
function procDocumentAdminAddCart() {
|
||||
$document_srl = Context::get('srl');
|
||||
|
||||
$oDocumentModel = &getModel('document');
|
||||
$oDocument = $oDocumentModel->getDocument($document_srl);
|
||||
if(!$oDocument->isExists()) return;
|
||||
|
||||
$oDocument->doCart();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 세션에 담긴 선택글의 이동/ 삭제
|
||||
**/
|
||||
function procDocumentAdminManageCheckedDocument() {
|
||||
$type = Context::get('type');
|
||||
$module_srl = Context::get('target_module');
|
||||
$category_srl = Context::get('target_category');
|
||||
$message_content = Context::get('message_content');
|
||||
if($message_content) $message_content = nl2br($message_content);
|
||||
|
||||
$cart = Context::get('cart');
|
||||
if($cart) $document_srl_list = explode('|@|', $cart);
|
||||
else $document_srl_list = array();
|
||||
|
||||
$document_srl_count = count($document_srl_list);
|
||||
|
||||
// 쪽지 발송
|
||||
if($message_content) {
|
||||
|
||||
$oMemberController = &getController('member');
|
||||
$oDocumentModel = &getModel('document');
|
||||
|
||||
$logged_info = Context::get('logged_info');
|
||||
|
||||
$title = cut_str($message_content,10,'...');
|
||||
$sender_member_srl = $logged_info->member_srl;
|
||||
|
||||
for($i=0;$i<$document_srl_count;$i++) {
|
||||
$document_srl = $document_srl_list[$i];
|
||||
$oDocument = $oDocumentModel->getDocument($document_srl);
|
||||
if(!$oDocument->get('member_srl') || $oDocument->get('member_srl')==$sender_member_srl) continue;
|
||||
|
||||
if($type=='move') $purl = sprintf("<a href=\"%s\" onclick=\"window.open(this.href);return false;\">%s</a>", $oDocument->getPermanentUrl(), $oDocument->getPermanentUrl());
|
||||
else $purl = "";
|
||||
$content .= sprintf("<div>%s</div><hr />%s<div style=\"font-weight:bold\">%s</div>%s",$message_content, $purl, $oDocument->getTitleText(), $oDocument->getContent());
|
||||
|
||||
$oMemberController->sendMessage($sender_member_srl, $oDocument->get('member_srl'), $title, $content, false);
|
||||
}
|
||||
}
|
||||
|
||||
if($type == 'move') {
|
||||
if(!$module_srl) return new Object(-1, 'fail_to_move');
|
||||
|
||||
$output = $this->moveDocumentModule($document_srl_list, $module_srl, $category_srl);
|
||||
if(!$output->toBool()) return new Object(-1, 'fail_to_move');
|
||||
|
||||
$msg_code = 'success_moved';
|
||||
|
||||
} elseif($type == 'copy') {
|
||||
if(!$module_srl) return new Object(-1, 'fail_to_move');
|
||||
|
||||
$output = $this->copyDocumentModule($document_srl_list, $module_srl, $category_srl);
|
||||
if(!$output->toBool()) return new Object(-1, 'fail_to_move');
|
||||
|
||||
$msg_code = 'success_registed';
|
||||
|
||||
} elseif($type =='delete') {
|
||||
$oDB = &DB::getInstance();
|
||||
$oDB->begin();
|
||||
$oDocumentController = &getController('document');
|
||||
for($i=0;$i<$document_srl_count;$i++) {
|
||||
$document_srl = $document_srl_list[$i];
|
||||
$output = $oDocumentController->deleteDocument($document_srl, true);
|
||||
if(!$output->toBool()) return new Object(-1, 'fail_to_delete');
|
||||
}
|
||||
$oDB->commit();
|
||||
$msg_code = 'success_deleted';
|
||||
}
|
||||
|
||||
$_SESSION['document_management'] = array();
|
||||
|
||||
$this->setMessage($msg_code);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 특정 게시물들의 소속 모듈 변경 (게시글 이동시에 사용)
|
||||
**/
|
||||
function moveDocumentModule($document_srl_list, $module_srl, $source_module_srl) {
|
||||
function moveDocumentModule($document_srl_list, $module_srl, $category_srl) {
|
||||
if(!count($document_srl_list)) return;
|
||||
|
||||
$args->document_srls = implode(',',$document_srl_list);
|
||||
$args->module_srl = $module_srl;
|
||||
$oDocumentModel = &getModel('document');
|
||||
$oDocumentController = &getController('document');
|
||||
|
||||
$oDB = &DB::getInstance();
|
||||
$oDB->begin();
|
||||
|
||||
// 게시물의 이동
|
||||
$output = executeQuery('document.updateDocumentModule', $args);
|
||||
if(!$output->toBool()) {
|
||||
$oDB->rollback();
|
||||
return $output;
|
||||
for($i=0;$i<count($document_srl_list);$i++) {
|
||||
$document_srl = $document_srl_list[$i];
|
||||
$oDocument = $oDocumentModel->getDocument($document_srl);
|
||||
if(!$oDocument->isExists()) continue;
|
||||
|
||||
$source_category_srl = $oDocument->get('category_srl');
|
||||
|
||||
unset($document_args);
|
||||
$document_args->module_srl = $module_srl;
|
||||
$document_args->category_srl = $category_srl;
|
||||
$document_args->document_srl = $document_srl;
|
||||
|
||||
// 게시물의 모듈 이동
|
||||
$output = executeQuery('document.updateDocumentModule', $document_args);
|
||||
if(!$output->toBool()) {
|
||||
$oDB->rollback();
|
||||
return $output;
|
||||
}
|
||||
|
||||
// 카테고리가 변경되었으면 검사후 없는 카테고리면 0으로 세팅
|
||||
if($source_category_srl != $category_srl) {
|
||||
if($source_category_srl) $oDocumentController->updateCategoryCount($source_category_srl);
|
||||
if($category_srl) $oDocumentController->updateCategoryCount($category_srl);
|
||||
}
|
||||
}
|
||||
|
||||
$args->document_srls = implode(',',$document_srl_list);
|
||||
$args->module_srl = $module_srl;
|
||||
|
||||
// 댓글의 이동
|
||||
$output = executeQuery('comment.updateCommentModule', $args);
|
||||
if(!$output->toBool()) {
|
||||
|
|
@ -75,31 +184,53 @@
|
|||
$oDB->rollback();
|
||||
return $output;
|
||||
}
|
||||
|
||||
$oDB->commit();
|
||||
return new Object();
|
||||
}
|
||||
|
||||
// 첨부파일의 이동 (다운로드나 본문 첨부의 문제로 인하여 첨부파일은 이동하지 않기로 결정. 차후에 다시 고민)
|
||||
/*
|
||||
$image_dir = sprintf('./files/attach/images/%s/%s/', $source_module_srl, $document_srl);
|
||||
$binary_dir = sprintf('./files/attach/binaries/%s/%s/', $source_module_srl, $document_srl);
|
||||
/**
|
||||
* @brief 게시글의 복사
|
||||
**/
|
||||
function copyDocumentModule($document_srl_list, $module_srl, $category_srl) {
|
||||
if(!count($document_srl_list)) return;
|
||||
|
||||
$target_image_dir = sprintf('./files/attach/images/%s/%s/', $module_srl, $document_srl);
|
||||
$target_binary_dir = sprintf('./files/attach/binaries/%s/%s/', $module_srl, $document_srl);
|
||||
$oDocumentModel = &getModel('document');
|
||||
$oDocumentController = &getController('document');
|
||||
$oFileController = &getController('file');
|
||||
|
||||
if(is_dir($image_dir)) {
|
||||
FileHandler::moveDir($image_dir, $target_image_dir);
|
||||
if(!is_dir($target_image_dir)) {
|
||||
$oDB = &DB::getInstance();
|
||||
$oDB->begin();
|
||||
|
||||
for($i=0;$i<count($document_srl_list);$i++) {
|
||||
$document_srl = $document_srl_list[$i];
|
||||
$oDocument = $oDocumentModel->getDocument($document_srl);
|
||||
if(!$oDocument->isExists()) continue;
|
||||
|
||||
$obj = null;
|
||||
$obj = $oDocument->getObjectVars();
|
||||
$obj->document_srl = getNextSequence();
|
||||
$obj->category_srl = $category_srl;
|
||||
$obj->password_is_hashed = true;
|
||||
|
||||
// 첨부파일 미리 등록
|
||||
if($oDocument->hasUploadedFiles()) {
|
||||
$files = $oDocument->getUploadedFiles();
|
||||
foreach($files as $key => $val) {
|
||||
$file_info = array();
|
||||
$file_info['tmp_name'] = $val->uploaded_filename;
|
||||
$file_info['name'] = $val->source_filename;
|
||||
$oFileController->insertFile($file_info, $module_srl, $obj->document_srl, 0, true);
|
||||
}
|
||||
}
|
||||
|
||||
// 글의 등록
|
||||
$output = $oDocumentController->insertDocument($obj, true);
|
||||
if(!$output->toBool()) {
|
||||
$oDB->rollback();
|
||||
return new Object(-1,'fail');
|
||||
return $output;
|
||||
}
|
||||
}
|
||||
|
||||
if(is_dir($binary_dir)) {
|
||||
FileHandler::moveDir($binary_dir, $target_binary_dir);
|
||||
if(!is_dir($target_binary_dir)) {
|
||||
$oDB->rollback();
|
||||
return new Object(-1,'fail');
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
$oDB->commit();
|
||||
return new Object();
|
||||
|
|
@ -253,5 +384,45 @@
|
|||
|
||||
return new Object();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 문서 모듈의 기본설정 저장
|
||||
**/
|
||||
function procDocumentAdminInsertConfig() {
|
||||
// 기본 정보를 받음
|
||||
$args = Context::gets('thumbnail_type');
|
||||
|
||||
// module Controller 객체 생성하여 입력
|
||||
$oModuleController = &getController('module');
|
||||
$output = $oModuleController->insertModuleConfig('document',$args);
|
||||
return $output;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 모든 생성된 썸네일 삭제
|
||||
**/
|
||||
function procDocumentAdminDeleteAllThumbnail() {
|
||||
|
||||
// files/attaches/images/ 디렉토리를 순환하면서 thumbnail_*.jpg 파일을 모두 삭제
|
||||
$this->deleteThumbnailFile('./files/attach/images');
|
||||
|
||||
$this->setMessage('success_deleted');
|
||||
}
|
||||
|
||||
function deleteThumbnailFile($path) {
|
||||
$directory = dir($path);
|
||||
while($entry = $directory->read()) {
|
||||
if ($entry != "." && $entry != "..") {
|
||||
if (is_dir($path."/".$entry)) {
|
||||
$this->deleteThumbnailFile($path."/".$entry);
|
||||
} else {
|
||||
if(!eregi('^thumbnail_([^\.]*)\.jpg$',$entry)) continue;
|
||||
@unlink($path.'/'.$entry);
|
||||
}
|
||||
}
|
||||
}
|
||||
$directory->close();
|
||||
}
|
||||
|
||||
}
|
||||
?>
|
||||
|
|
|
|||
|
|
@ -77,5 +77,53 @@
|
|||
$this->setTemplateFile('document_list');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 문서 모듈 설정
|
||||
**/
|
||||
function dispDocumentAdminConfig() {
|
||||
$oDocumentModel = &getModel('document');
|
||||
$config = $oDocumentModel->getDocumentConfig();
|
||||
Context::set('config',$config);
|
||||
|
||||
// 템플릿 파일 지정
|
||||
$this->setTemplatePath($this->module_path.'tpl');
|
||||
$this->setTemplateFile('document_config');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 관리자가 선택한 문서에 대한 관리
|
||||
**/
|
||||
function dispDocumentAdminManageDocument() {
|
||||
// 선택한 목록을 세션에서 가져옴
|
||||
$flag_list = $_SESSION['document_management'];
|
||||
if(count($flag_list)) {
|
||||
foreach($flag_list as $key => $val) {
|
||||
if(!is_bool($val)) continue;
|
||||
$document_srl_list[] = $key;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if(count($document_srl_list)) {
|
||||
$oDocumentModel = &getModel('document');
|
||||
$document_list = $oDocumentModel->getDocuments($document_srl_list, $this->grant->is_admin);
|
||||
Context::set('document_list', $document_list);
|
||||
}
|
||||
|
||||
// 모듈의 목록을 가져옴
|
||||
$args->select_module = "'board','blog'";
|
||||
$output = executeQuery('document.getAllModules', $args);
|
||||
$module_list = $output->data;
|
||||
|
||||
if($module_list && !is_array($module_list)) $module_list = array($module_list);
|
||||
Context::set('module_list', $module_list);
|
||||
|
||||
// 팝업 레이아웃 선택
|
||||
$this->setLayoutPath('./common/tpl');
|
||||
$this->setLayoutFile('popup_layout');
|
||||
|
||||
$this->setTemplatePath($this->module_path.'tpl');
|
||||
$this->setTemplateFile('checked_list');
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
|
|
|||
|
|
@ -23,6 +23,7 @@
|
|||
$oModuleController = &getController('module');
|
||||
$oModuleController->insertActionForward('document', 'view', 'dispDocumentAdminList');
|
||||
$oModuleController->insertActionForward('document', 'view', 'dispDocumentPrint');
|
||||
$oModuleController->insertActionForward('document', 'view', 'dispDocumentAdminConfig');
|
||||
|
||||
$oDB = &DB::getInstance();
|
||||
$oDB->addIndex("documents","idx_module_list_order", array("module_srl","list_order"));
|
||||
|
|
@ -38,6 +39,7 @@
|
|||
**/
|
||||
function checkUpdate() {
|
||||
$oDB = &DB::getInstance();
|
||||
$oModuleModel = &getModel('module');
|
||||
|
||||
/**
|
||||
* 2007. 7. 23 : 확장변수(extra_vars1~20까지 추가)
|
||||
|
|
@ -57,6 +59,12 @@
|
|||
if(!$oDB->isIndexExists("documents","idx_module_readed_count")) return true;
|
||||
if(!$oDB->isIndexExists("documents","idx_module_voted_count")) return true;
|
||||
|
||||
/**
|
||||
* 2007. 10. 11 : 관리자 페이지의 기본 설정 Action 추가, 게시글 관리 action 추가
|
||||
**/
|
||||
if(!$oModuleModel->getActionForward('dispDocumentAdminConfig')) return true;
|
||||
if(!$oModuleModel->getActionForward('dispDocumentAdminManageDocument')) return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
@ -65,6 +73,8 @@
|
|||
**/
|
||||
function moduleUpdate() {
|
||||
$oDB = &DB::getInstance();
|
||||
$oModuleModel = &getModel('module');
|
||||
$oModuleController = &getController('module');
|
||||
|
||||
/**
|
||||
* 2007. 7. 23 : 확장변수(extra_vars1~20까지 추가)
|
||||
|
|
@ -102,6 +112,14 @@
|
|||
$oDB->addIndex("documents","idx_module_voted_count", array("module_srl","voted_count"));
|
||||
}
|
||||
|
||||
/**
|
||||
* 2007. 10. 11 : 관리자 페이지의 기본 설정 Action 추가, 게시글 관리 action 추가
|
||||
**/
|
||||
if(!$oModuleModel->getActionForward('dispDocumentAdminConfig'))
|
||||
$oModuleController->insertActionForward('document', 'view', 'dispDocumentAdminConfig');
|
||||
if(!$oModuleModel->getActionForward('dispDocumentAdminManageDocument'))
|
||||
$oModuleController->insertActionForward('document', 'view', 'dispDocumentAdminManageDocument');
|
||||
|
||||
return new Object(0,'success_updated');
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -100,6 +100,23 @@
|
|||
return $this->get('notify_message')=='Y' ? true : false;
|
||||
}
|
||||
|
||||
function doCart() {
|
||||
if($this->isCarted()) $this->removeCart();
|
||||
else $this->addCart();
|
||||
}
|
||||
|
||||
function addCart() {
|
||||
$_SESSION['document_management'][$this->document_srl] = true;
|
||||
}
|
||||
|
||||
function removeCart() {
|
||||
unset($_SESSION['document_management'][$this->document_srl]);
|
||||
}
|
||||
|
||||
function isCarted() {
|
||||
return $_SESSION['document_management'][$this->document_srl];
|
||||
}
|
||||
|
||||
function notify($type, $content) {
|
||||
// useNotify가 아니면 return
|
||||
if(!$this->useNotify()) return;
|
||||
|
|
@ -122,6 +139,24 @@
|
|||
$oMemberController = &getController('member');
|
||||
$oMemberController->sendMessage($sender_member_srl, $receiver_srl, $title, $content, false);
|
||||
}
|
||||
|
||||
function isExistsHomepage() {
|
||||
if(trim($this->get('homepage'))) return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
function getHomepageUrl() {
|
||||
$url = trim($this->get('homepage'));
|
||||
if(!$url) return;
|
||||
|
||||
if(!eregi("^http:\/\/",$url)) $url = "http://".$url;
|
||||
|
||||
return $url;
|
||||
}
|
||||
|
||||
function getMemberSrl() {
|
||||
return $this->get('member_srl');
|
||||
}
|
||||
|
||||
function getUserID() {
|
||||
return htmlspecialchars($this->get('user_id'));
|
||||
|
|
@ -168,6 +203,9 @@
|
|||
|
||||
// OL/LI 태그를 위한 치환 처리
|
||||
$content = preg_replace('!<(ol|ul|blockquote)>!is','<\\1 style="margin-left:40px;">',$content);
|
||||
|
||||
// url에 대해서 정규표현식으로 치환
|
||||
$content = preg_replace('!([^>^"^\'^=])(http|https|ftp|mms):\/\/([^ ^<^"^\']*)!is','$1<a href="$2://$3" onclick="window.open(this.href);return false;">$2://$3</a>',' '.$content);
|
||||
|
||||
if($add_document_info) return sprintf('<!--BeforeDocument(%d,%d)-->%s<!--AfterDocument(%d,%d)-->', $this->document_srl, $this->get('member_srl'), $content, $this->document_srl, $this->get('member_srl'));
|
||||
|
||||
|
|
@ -270,12 +308,12 @@
|
|||
return $oTrackbackModel->getTrackbackList($this->document_srl, $is_admin);
|
||||
}
|
||||
|
||||
function thumbnailExists($width = 80, $height = 0) {
|
||||
if(!$this->getThumbnail($width, $height)) return false;
|
||||
function thumbnailExists($width = 80, $height = 0, $type = '') {
|
||||
if(!$this->getThumbnail($width, $height, $type)) return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
function getThumbnail($width = 80, $height = 0) {
|
||||
function getThumbnail($width = 80, $height = 0, $thumbnail_type = '') {
|
||||
if(!$height) $height = $width;
|
||||
|
||||
// 문서의 이미지 첨부파일 위치를 구함
|
||||
|
|
@ -297,6 +335,13 @@
|
|||
|
||||
// 썸네일 파일이 있으면 url return
|
||||
if(file_exists($thumbnail_file)) return Context::getRequestUri().$thumbnail_file;
|
||||
|
||||
// 문서 모듈의 기본 설정에서 Thumbnail의 생성 방법을 구함
|
||||
if(!in_array($thumbnail_type, array('crop','ratio'))) {
|
||||
$oDocumentModel = &getModel('document');
|
||||
$config = $oDocumentModel->getDocumentConfig();
|
||||
$thumbnail_type = $config->thumbnail_type;
|
||||
}
|
||||
|
||||
// 생성 시작
|
||||
FileHandler::writeFile($thumbnail_file, '', 'w');
|
||||
|
|
@ -312,7 +357,7 @@
|
|||
$filename = $file->uploaded_filename;
|
||||
if(!file_exists($filename)) continue;
|
||||
|
||||
FileHandler::createImageFile($filename, $thumbnail_file, $width, $height, 'jpg');
|
||||
FileHandler::createImageFile($filename, $thumbnail_file, $width, $height, 'jpg', $thumbnail_type);
|
||||
if(file_exists($thumbnail_file)) return Context::getRequestUri().$thumbnail_file;
|
||||
}
|
||||
}
|
||||
|
|
@ -335,7 +380,7 @@
|
|||
return;
|
||||
}
|
||||
|
||||
FileHandler::createImageFile($tmp_file, $thumbnail_file, $width, $height, 'jpg');
|
||||
FileHandler::createImageFile($tmp_file, $thumbnail_file, $width, $height, 'jpg', $config->thumbnail_type);
|
||||
@unlink($tmp_file);
|
||||
|
||||
return Context::getRequestUri().$thumbnail_file;
|
||||
|
|
@ -345,21 +390,11 @@
|
|||
* @brief 새글, 최신 업데이트글, 비밀글, 이미지/동영상/첨부파일등의 아이콘 출력용 함수
|
||||
* $time_interval 에 지정된 시간(초)로 새글/최신 업데이트글의 판별
|
||||
**/
|
||||
function getExtraImages($time_interval = 7200) {
|
||||
function getExtraImages($time_interval = 43200) {
|
||||
|
||||
// 아이콘 목록을 담을 변수 미리 설정
|
||||
$buffs = array();
|
||||
|
||||
// 최신 시간 설정
|
||||
$time_check = date("YmdHis", time()-$time_interval);
|
||||
|
||||
// 새글 체크
|
||||
if($this->get('regdate')>$time_check) $buffs[] = "new";
|
||||
else if($this->get('last_update')>$time_check) $buffs[] = "update";
|
||||
|
||||
// 비밀글 체크
|
||||
if($this->isSecret()) $buffs[] = "secret";
|
||||
|
||||
$check_files = false;
|
||||
|
||||
// 사진 이미지 체크
|
||||
|
|
@ -377,13 +412,24 @@
|
|||
// 첨부파일 체크
|
||||
if(!$check_files && $this->hasUploadedFiles()) $buffs[] = "file";
|
||||
|
||||
// 비밀글 체크
|
||||
if($this->isSecret()) $buffs[] = "secret";
|
||||
|
||||
// 최신 시간 설정
|
||||
$time_check = date("YmdHis", time()-$time_interval);
|
||||
|
||||
// 새글 체크
|
||||
if($this->get('regdate')>$time_check) $buffs[] = "new";
|
||||
else if($this->get('last_update')>$time_check) $buffs[] = "update";
|
||||
|
||||
|
||||
return $buffs;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief getExtraImages로 구한 값을 이미지 태그를 씌워서 리턴
|
||||
**/
|
||||
function printExtraImages($time_check = 7200) {
|
||||
function printExtraImages($time_check = 43200) {
|
||||
// 아이콘 디렉토리 구함
|
||||
$path = sprintf('%s%s',getUrl(), 'modules/document/tpl/icons/');
|
||||
|
||||
|
|
@ -392,7 +438,7 @@
|
|||
|
||||
$buff = null;
|
||||
foreach($buffs as $key => $val) {
|
||||
$buff .= sprintf('<img src="%s%s.gif" alt="%s" title="%s" width="13" height="13" align="absmiddle"/>', $path, $val, $val, $val);
|
||||
$buff .= sprintf('<img src="%s%s.gif" alt="%s" title="%s" align="absmiddle"/>', $path, $val, $val, $val);
|
||||
}
|
||||
return $buff;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -312,5 +312,35 @@
|
|||
|
||||
return $output;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 특정 모듈의 분류를 구함
|
||||
**/
|
||||
function getDocumentCategories() {
|
||||
$module_srl = Context::get('module_srl');
|
||||
$categories= $this->getCategoryList($module_srl);
|
||||
if(!$categories) return;
|
||||
|
||||
$output = '';
|
||||
foreach($categories as $category_srl => $category) {
|
||||
$output .= sprintf("%d,%s\n",$category_srl, $category->title);
|
||||
}
|
||||
$this->add('categories', $output);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 문서 설정 정보를 구함
|
||||
**/
|
||||
function getDocumentConfig() {
|
||||
if(!$GLOBLAS['__document_config__']) {
|
||||
$oModuleModel = &getModel('module');
|
||||
$config = $oModuleModel->getModuleConfig('document');
|
||||
|
||||
if(!$config->thumbnail_type) $config->thumbnail_type = 'crop';
|
||||
$GLOBLAS['__document_config__'] = $config;
|
||||
}
|
||||
|
||||
return $GLOBLAS['__document_config__'];
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
|
|
|||
|
|
@ -5,6 +5,13 @@
|
|||
* @brief Document module's basic language pack
|
||||
**/
|
||||
|
||||
$lang->document_list = 'Document list';
|
||||
$lang->thumbnail_type = 'Thumbnail Type';
|
||||
$lang->thumbnail_crop = 'Crop';
|
||||
$lang->thumbnail_ratio = 'Ratio';
|
||||
$lang->cmd_delete_all_thumbnail = 'Delete all thumbnails';
|
||||
$lang->move_target_module = "Target module for changing position";
|
||||
|
||||
$lang->cmd_toggle_checked_document = '선택항목 반전';
|
||||
$lang->cmd_delete_checked_document = 'Delete selected';
|
||||
|
||||
|
|
|
|||
|
|
@ -5,6 +5,13 @@
|
|||
* @sumario Paquete del idioma español para el módulo de documentos.
|
||||
**/
|
||||
|
||||
$lang->document_list = 'Document list';
|
||||
$lang->thumbnail_type = 'Thumbnail Type';
|
||||
$lang->thumbnail_crop = 'Crop';
|
||||
$lang->thumbnail_ratio = 'Ratio';
|
||||
$lang->cmd_delete_all_thumbnail = 'Delete all thumbnails';
|
||||
$lang->move_target_module = "Módulo para cambiar de posición";
|
||||
|
||||
$lang->cmd_toggle_checked_document = '선택항목 반전';
|
||||
$lang->cmd_delete_checked_document = 'Eliminar lo seleccionado';
|
||||
|
||||
|
|
|
|||
|
|
@ -5,6 +5,13 @@
|
|||
* @brief ドキュメント(document)モジュルの基本言語パッケージ
|
||||
**/
|
||||
|
||||
$lang->document_list = 'Document list';
|
||||
$lang->thumbnail_type = 'Thumbnail Type';
|
||||
$lang->thumbnail_crop = 'Crop';
|
||||
$lang->thumbnail_ratio = 'Ratio';
|
||||
$lang->cmd_delete_all_thumbnail = 'Delete all thumbnails';
|
||||
$lang->move_target_module = "移動対象モジュール";
|
||||
|
||||
$lang->cmd_toggle_checked_document = '선택항목 반전';
|
||||
$lang->cmd_delete_checked_document = '選択項目削除';
|
||||
|
||||
|
|
|
|||
|
|
@ -5,6 +5,12 @@
|
|||
* @brief 문서(document) 모듈의 기본 언어팩
|
||||
**/
|
||||
|
||||
$lang->document_list = '문서 목록';
|
||||
$lang->thumbnail_type = '썸네일 생성 방법';
|
||||
$lang->thumbnail_crop = '잘라내기 (정해진 크기에 꽉 찬 모습의 썸네일을 만듭니다)';
|
||||
$lang->thumbnail_ratio = '비율 맞추기 (원본 이미지의 비율에 맞춥니다. 다만 정해진 크기에 여백이 생깁니다)';
|
||||
$lang->cmd_delete_all_thumbnail = '썸네일 모두 삭제';
|
||||
|
||||
$lang->cmd_toggle_checked_document = '선택항목 반전';
|
||||
$lang->cmd_delete_checked_document = '선택항목 삭제';
|
||||
|
||||
|
|
@ -13,6 +19,8 @@
|
|||
$lang->msg_is_secret = '비밀글입니다';
|
||||
$lang->msg_checked_document_is_deleted = '%d개의 글이 삭제되었습니다';
|
||||
|
||||
$lang->move_target_module = "이동 대상 모듈";
|
||||
|
||||
// 관리자 페이지에서 검색할 대상
|
||||
$lang->search_target_list = array(
|
||||
'title' => '제목',
|
||||
|
|
|
|||
|
|
@ -5,6 +5,13 @@
|
|||
* @brief 文章(document)模块语言包
|
||||
**/
|
||||
|
||||
$lang->document_list = 'Document list';
|
||||
$lang->thumbnail_type = 'Thumbnail Type';
|
||||
$lang->thumbnail_crop = 'Crop';
|
||||
$lang->thumbnail_ratio = 'Ratio';
|
||||
$lang->cmd_delete_all_thumbnail = 'Delete all thumbnails';
|
||||
$lang->move_target_module = "移动目标模块";
|
||||
|
||||
$lang->cmd_toggle_checked_document = '反选';
|
||||
$lang->cmd_delete_checked_document = '删除所选';
|
||||
|
||||
|
|
|
|||
14
modules/document/queries/getAllModules.xml
Normal file
14
modules/document/queries/getAllModules.xml
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
<query id="getAllModules" action="select">
|
||||
<tables>
|
||||
<table name="modules" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="*" />
|
||||
</columns>
|
||||
<conditions>
|
||||
<condition operation="in" column="module" var="select_module" />
|
||||
</conditions>
|
||||
<navigation>
|
||||
<index var="sort_index" default="mid" order="asc" />
|
||||
</navigation>
|
||||
</query>
|
||||
|
|
@ -4,8 +4,9 @@
|
|||
</tables>
|
||||
<columns>
|
||||
<column name="module_srl" var="module_srl" filter="number" default="0" />
|
||||
<column name="category_srl" var="category_srl" filter="number" default="0" />
|
||||
</columns>
|
||||
<conditions>
|
||||
<condition operation="in" column="document_srl" var="document_srls" notnull="notnull" />
|
||||
<condition operation="equal" column="document_srl" var="document_srl" notnull="notnull" />
|
||||
</conditions>
|
||||
</query>
|
||||
|
|
|
|||
74
modules/document/tpl/checked_list.html
Normal file
74
modules/document/tpl/checked_list.html
Normal file
|
|
@ -0,0 +1,74 @@
|
|||
<!--%import("filter/manage_checked_document.xml")-->
|
||||
<!--%import("js/document_admin.js")-->
|
||||
<!--%import("css/document.css")-->
|
||||
|
||||
<div id="popHeadder">
|
||||
<h1>{$lang->cmd_manage_document}</h1>
|
||||
</div>
|
||||
|
||||
<form action="./" method="get" id="fo_management">
|
||||
<input type="hidden" name="type" value="" />
|
||||
|
||||
<div id="popBody">
|
||||
<table cellspacing="0" class="tableType5">
|
||||
<col width="150" />
|
||||
<col />
|
||||
<tr>
|
||||
<th scope="row"><label for="textfield1">{$lang->checked_count} ({count($document_list)})</label></th>
|
||||
<td>
|
||||
<!--@if(count($document_list))-->
|
||||
<input type="checkbox" onclick="checkboxSelectAll(this.form, 'cart'); return false;" /> {$lang->cmd_select}
|
||||
<ul class="document_list_box">
|
||||
<!--@foreach($document_list as $key => $document)-->
|
||||
<li class="document_list"><input type="checkbox" checked="checked" name="cart" value="{$document->document_srl}" onclick="doAddDocumentCart(this);"/> <address>{$document->getNickName()}</address> <span class="document_title">{$document->getTitle()}</li>
|
||||
<!--@end-->
|
||||
</ul>
|
||||
<!--@else-->
|
||||
|
||||
<!--@end-->
|
||||
</td>
|
||||
</tr>
|
||||
<!--@if(count($document_list) && count($module_list)>1)-->
|
||||
<tr>
|
||||
<th scope="row">{$lang->move_target_module}</th>
|
||||
<td>
|
||||
<select id="target_module" name="target_module" class="w100" onchange="doGetCategoryFromModule(this); return false;">
|
||||
<!--@foreach($module_list as $key => $val)-->
|
||||
<option value="{$val->module_srl}">{$val->browser_title} ({$val->mid})</option>
|
||||
<!--@end-->
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">{$lang->category}</th>
|
||||
<td>
|
||||
<select id="target_category" name="target_category" class="w100">
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">{$lang->cmd_send_message}</th>
|
||||
<td>
|
||||
<textarea name="message_content" class="inputTypeTextArea w400" cols="45" rows="5"></textarea>
|
||||
</td>
|
||||
</tr>
|
||||
<!--@end-->
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div id="popFooter">
|
||||
<div class="tRight gap1">
|
||||
<!--@if(count($document_list))-->
|
||||
<a href="#" onclick="doManageDocument('move');return false;" class="button"><span>{$lang->cmd_move}</span></a>
|
||||
<a href="#" onclick="doManageDocument('copy');return false;" class="button"><span>{$lang->cmd_copy}</span></a>
|
||||
<a href="#" onclick="doManageDocument('delete');return false;" class="button"><span>{$lang->cmd_delete}</span></a>
|
||||
<!--@end-->
|
||||
<a href="#" onclick="window.close(); return false;" class="button"><span>{$lang->cmd_close}</span></a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
xAddEventListener(window,'load',function() { doGetCategoryFromModule(xGetElementById('target_module')); } );
|
||||
</script>
|
||||
|
||||
</form>
|
||||
|
|
@ -1 +1,5 @@
|
|||
body { margin:10px; font-size:.75em; font-family:sans-serif;}
|
||||
.document_list_box { height:300px; overflow-y:scroll; overflow-x:hidden;}
|
||||
.document_list { margin-top:.5em; overflow:hidden; white-space:nowrap; clear:both;}
|
||||
.document_list input { float:left; margin-right:10px; }
|
||||
.document_list address { float:left; width:100px; margin-right:10px; overflow:hidden; white-space:nowrap;}
|
||||
.document_list .document_title { }
|
||||
|
|
|
|||
24
modules/document/tpl/document_config.html
Normal file
24
modules/document/tpl/document_config.html
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
<!--#include("header.html")-->
|
||||
<!--%import("filter/insert_config.xml")-->
|
||||
|
||||
<form action="./" method="get" onsubmit="return procFilter(this, insert_config)">
|
||||
<table cellspacing="0" class="tableType2 gap1">
|
||||
<col width="200" />
|
||||
<col />
|
||||
<tr>
|
||||
<th scope="col">{$lang->thumbnail_type}</th>
|
||||
<td>
|
||||
<input type="radio" name="thumbnail_type" value="crop" <!--@if($config->thumbnail_type != 'ratio')-->checked="checked"<!--@end-->/> {$lang->thumbnail_crop} <br />
|
||||
<input type="radio" name="thumbnail_type" value="ratio" <!--@if($config->thumbnail_type == 'ratio')-->checked="checked"<!--@end-->/> {$lang->thumbnail_ratio}
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<!-- 버튼 -->
|
||||
<div class="fl gap1">
|
||||
<span class="button"><input type="button" value="{$lang->cmd_delete_all_thumbnail}" onclick="doDeleteAllThumbnail(); return false;"/></span>
|
||||
</div>
|
||||
<div class="fr gap1">
|
||||
<span class="button"><input type="submit" value="{$lang->cmd_registration}" accesskey="s" /></span>
|
||||
</div>
|
||||
</form>
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
<!--%import("filter/delete_checked.xml")-->
|
||||
<!--%import("js/document_admin.js")-->
|
||||
<!--%import("filter/manage_checked_document.xml")-->
|
||||
<!--#include("header.html")-->
|
||||
|
||||
<h3>{$lang->document} <span class="gray">{$lang->cmd_management}</span></h3>
|
||||
|
||||
<!-- 정보 -->
|
||||
<div class="tableSummaryType1">
|
||||
|
|
@ -13,6 +13,13 @@
|
|||
|
||||
<!-- 목록 -->
|
||||
<table cellspacing="0" class="tableType1">
|
||||
<col width="60" />
|
||||
<col width="20" />
|
||||
<col />
|
||||
<col />
|
||||
<col width="120" />
|
||||
<col width="60" />
|
||||
<col width="80" />
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col">{$lang->no}</th>
|
||||
|
|
@ -38,9 +45,9 @@
|
|||
<!--@foreach($document_list as $no => $oDocument)-->
|
||||
<tr>
|
||||
<td class="tahoma">{$no}</td>
|
||||
<td><input type="checkbox" name="cart" value="{$oDocument->document_srl}" /></td>
|
||||
<td class="blue"><a href="{getUrl('','mid',$module_list[$oDocument->get('module_srl')]->mid)}" onclick="window.open(this.href);return false">{htmlspecialchars($module_list[$oDocument->get('module_srl')]->browser_title)}</a></td>
|
||||
<td>
|
||||
<td><input type="checkbox" name="cart" value="{$oDocument->document_srl}" onclick="doAddDocumentCart(this)" <!--@if($oDocument->isCarted())-->checked="checked"<!--@end-->/></td>
|
||||
<td class="left blue category"><a href="{getUrl('','mid',$module_list[$oDocument->get('module_srl')]->mid)}" onclick="window.open(this.href);return false">{htmlspecialchars($module_list[$oDocument->get('module_srl')]->browser_title)}</a></td>
|
||||
<td class="left">
|
||||
<a href="{getUrl('','document_srl',$oDocument->document_srl)}" onclick="window.open(this.href);return false">{$oDocument->getTitleText()}</a>
|
||||
|
||||
<!--@if($oDocument->getCommentCount())-->
|
||||
|
|
@ -51,7 +58,7 @@
|
|||
[{$oDocument->getTrackbackCount()}]
|
||||
<!--@end-->
|
||||
</td>
|
||||
<td><div class="member_{$oDocument->get('member_srl')}">{$oDocument->getNickName()}</div></td>
|
||||
<td class="left"><div class="member_{$oDocument->get('member_srl')}">{$oDocument->getNickName()}</div></td>
|
||||
<td class="tahoma">{$oDocument->get('readed_count')}</td>
|
||||
<td class="tahoma">{$oDocument->get('voted_count')}</td>
|
||||
<td class="tahoma">{$oDocument->getRegdate("Y-m-d")}</td>
|
||||
|
|
@ -62,9 +69,7 @@
|
|||
|
||||
<!-- 버튼 -->
|
||||
<div class="fr gap1">
|
||||
<a href="javascript:checkboxSelectAll('fo_list', 'cart', true)" class="button"><span>{$lang->cmd_select_all}</span></a>
|
||||
<a href="javascript:checkboxSelectAll('fo_list', 'cart')" class="button"><span>{$lang->cmd_reverse_all}</span></a>
|
||||
<span class="button"><input type="submit" value="{$lang->cmd_delete_checked_document}" /></span>
|
||||
<a href="{getUrl('','module','document','act','dispDocumentAdminManageDocument')}" onclick="popopen(this.href,'manageDocument'); return false;" class="button"><span>{$lang->cmd_manage_document}</span></a>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
|
|
|
|||
7
modules/document/tpl/filter/insert_config.xml
Normal file
7
modules/document/tpl/filter/insert_config.xml
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
<filter name="insert_config" module="document" act="procDocumentAdminInsertConfig" confirm_msg_code="confirm_submit">
|
||||
<form />
|
||||
<response>
|
||||
<tag name="error" />
|
||||
<tag name="message" />
|
||||
</response>
|
||||
</filter>
|
||||
7
modules/document/tpl/filter/manage_checked_document.xml
Normal file
7
modules/document/tpl/filter/manage_checked_document.xml
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
<filter name="manage_checked_document" module="document" act="procDocumentAdminManageCheckedDocument">
|
||||
<form />
|
||||
<response callback_func="completeManageDocument">
|
||||
<tag name="error" />
|
||||
<tag name="message" />
|
||||
</response>
|
||||
</filter>
|
||||
10
modules/document/tpl/header.html
Normal file
10
modules/document/tpl/header.html
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
<!--%import("js/document_admin.js")-->
|
||||
|
||||
<h3>{$lang->document} <span class="gray">{$lang->cmd_management}</span></h3>
|
||||
|
||||
<div class="header4">
|
||||
<ul class="localNavigation">
|
||||
<li <!--@if($act=='dispDocumentAdminList')-->class="on"<!--@end-->><a href="{getUrl('act','dispDocumentAdminList')}">{$lang->document_list}</a></li>
|
||||
<li <!--@if($act=='dispDocumentAdminConfig')-->class="on"<!--@end-->><a href="{getUrl('act','dispDocumentAdminConfig')}">{$lang->cmd_module_config}</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 545 B After Width: | Height: | Size: 146 B |
Binary file not shown.
|
Before Width: | Height: | Size: 522 B After Width: | Height: | Size: 211 B |
Binary file not shown.
|
Before Width: | Height: | Size: 524 B After Width: | Height: | Size: 343 B |
|
|
@ -6,4 +6,65 @@ function doCheckAll(bToggle) {
|
|||
if( !fo_obj[i].checked || !bToggle) fo_obj[i].checked = true; else fo_obj[i].checked = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 모든 생성된 썸네일 삭제하는 액션 호출
|
||||
**/
|
||||
function doDeleteAllThumbnail() {
|
||||
exec_xml('document','procDocumentAdminDeleteAllThumbnail',new Array(), completeDeleteAllThumbnail);
|
||||
}
|
||||
|
||||
function completeDeleteAllThumbnail(ret_obj) {
|
||||
alert(ret_obj['message']);
|
||||
location.reload();
|
||||
}
|
||||
|
||||
/* 선택된 글의 삭제 또는 이동 */
|
||||
function doManageDocument(type) {
|
||||
var fo_obj = xGetElementById("fo_management");
|
||||
fo_obj.type.value = type;
|
||||
|
||||
procFilter(fo_obj, manage_checked_document);
|
||||
}
|
||||
|
||||
/* 선택된 글의 삭제 또는 이동 후 */
|
||||
function completeManageDocument(ret_obj) {
|
||||
if(opener) opener.window.location.reload();
|
||||
alert(ret_obj['message']);
|
||||
window.close();
|
||||
}
|
||||
|
||||
/* 선택된 모듈의 카테고리 목록을 가져오는 함수 */
|
||||
function doGetCategoryFromModule(obj) {
|
||||
var module_srl = obj.options[obj.selectedIndex].value;
|
||||
|
||||
var params = new Array();
|
||||
params['module_srl'] = module_srl;
|
||||
|
||||
var response_tags = new Array('error','message','categories');
|
||||
|
||||
exec_xml('document','getDocumentCategories',params, completeGetCategoryFromModules, response_tags);
|
||||
|
||||
}
|
||||
|
||||
function completeGetCategoryFromModules(ret_obj, response_tags) {
|
||||
var obj = xGetElementById('target_category');
|
||||
var length = obj.options.length;
|
||||
for(var i=0;i<length;i++) obj.remove(0);
|
||||
|
||||
var categories = ret_obj['categories'];
|
||||
if(!categories) return;
|
||||
|
||||
var category_list = categories.split("\n");
|
||||
for(var i=0;i<category_list.length;i++) {
|
||||
var item = category_list[i];
|
||||
var pos = item.indexOf(',');
|
||||
var category_srl = item.substr(0,pos);
|
||||
var category_title = item.substr(pos+1,item.length);
|
||||
if(!category_srl || !category_title) continue;
|
||||
|
||||
var opt = new Option(category_title, category_srl, false, false);
|
||||
obj.options[obj.options.length] = opt;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@
|
|||
|
||||
.xeEditor .editorInfo { background:#fbfbfb; padding:.5em; border:1px solid #e1e1dd; color:#999999; position:relative; margin:5px 20px 0 20px;}
|
||||
.xeEditor .close { cursor:pointer; position:absolute; top:3px; right:3px; _top:3px; _right:25px;}
|
||||
.xeEditor .editor_iframe_box { background:#ffffff; clear:both; border:1px solid; border-color:#a6a6a6 #d8d8d8 #d8d8d8 #a6a6a6; padding:.5em; margin:0 20px 0 20px; }
|
||||
.xeEditor .editor_iframe_box { background:#ffffff; clear:both; border:1px solid; border-color:#a6a6a6 #d8d8d8 #d8d8d8 #a6a6a6; padding:10px; margin:0 20px 0 20px; }
|
||||
.xeEditor .editor_iframe_textarea { background:#ffffff; clear:both; border:1px solid; border-color:#a6a6a6 #d8d8d8 #d8d8d8 #a6a6a6; padding:.5em; margin:0 20px 0 20px; width:100%; font-size:1em; display:none;}
|
||||
|
||||
.xeEditor .textAreaDragIndicator { text-align:center; background:url(../images/lineTextAreaDrag.gif) repeat-x left center; padding:5px 0 5px 0; }
|
||||
|
|
|
|||
|
|
@ -110,7 +110,7 @@ function editorStart(editor_sequence, primary_key, content_key, resizable, edito
|
|||
// iframe obj를 찾음
|
||||
var iframe_obj = editorGetIFrame(editor_sequence);
|
||||
if(!iframe_obj) return;
|
||||
iframe_obj.style.width = '100%'; ///<< iframe_obj의 가로 크기를 100%로 고정
|
||||
xWidth(iframe_obj, xWidth(iframe_obj.parentNode)-20);
|
||||
|
||||
// 현 에디터를 감싸고 있는 form문을 찾아서 content object를 찾아서 내용 sync
|
||||
var fo_obj = editorGetForm(editor_sequence);
|
||||
|
|
@ -189,7 +189,7 @@ function editorStart(editor_sequence, primary_key, content_key, resizable, edito
|
|||
// iframe에 focus가 될때 에디터 모드로 전환하도록 이벤트 지정
|
||||
if(xIE4Up) xAddEventListener(iframe_obj, "focus", editor_start_func[editor_sequence] );
|
||||
else xAddEventListener(iframe_obj.contentWindow, "focus", editor_start_func[editor_sequence] );
|
||||
alert('실패');
|
||||
//alert('실패');
|
||||
}
|
||||
|
||||
xAddEventListener(document,'mouseup',editorEventCheck);
|
||||
|
|
|
|||
|
|
@ -105,7 +105,7 @@
|
|||
|
||||
// 파일 이동
|
||||
if(!$manual_insert&&!move_uploaded_file($file_info['tmp_name'], $filename)) return false;
|
||||
elseif($manual_insert) @rename($file_info['tmp_name'], $filename);
|
||||
elseif($manual_insert) @copy($file_info['tmp_name'], $filename);
|
||||
|
||||
// 사용자 정보를 구함
|
||||
$oMemberModel = &getModel('member');
|
||||
|
|
@ -119,7 +119,7 @@
|
|||
$args->source_filename = $file_info['name'];
|
||||
$args->uploaded_filename = $filename;
|
||||
$args->download_count = $download_count;
|
||||
$args->file_size = filesize($filename);
|
||||
$args->file_size = @filesize($filename);
|
||||
$args->comment = NULL;
|
||||
$args->member_srl = $member_srl;
|
||||
$args->sid = md5(rand(rand(1111111,4444444),rand(4444445,9999999)));
|
||||
|
|
|
|||
|
|
@ -39,8 +39,8 @@
|
|||
<tr>
|
||||
<td class="tahoma">{$no}</td>
|
||||
<td><input type="checkbox" name="cart" value="{$val->file_srl}" /></td>
|
||||
<td class="blue"><a href="./?mid={$module_list[$val->module_srl]->mid}" onclick="window.open(this.href);return false;">{$module_list[$val->module_srl]->browser_title}</a></td>
|
||||
<td class="red"><a href="{$val->download_url}">{htmlspecialchars($val->source_filename)}</a></td>
|
||||
<td class="left blue"><a href="./?mid={$module_list[$val->module_srl]->mid}" onclick="window.open(this.href);return false;">{$module_list[$val->module_srl]->browser_title}</a></td>
|
||||
<td class="left red"><a href="{$val->download_url}">{htmlspecialchars($val->source_filename)}</a></td>
|
||||
<td class="tahoma">{$val->file_size}</td>
|
||||
<td>
|
||||
<!--@if($val->isvalid=='Y')-->
|
||||
|
|
|
|||
|
|
@ -162,8 +162,8 @@ EndOfLicense;
|
|||
$lang->admin_title = 'Administrator Info';
|
||||
|
||||
$lang->env_title = 'Configuration';
|
||||
$lang->use_optimizer = 'Optimizer 사용';
|
||||
$lang->about_optimizer = 'Optimizer를 사용하면 다수의 CSS/ JS파일을 통합/압축 전송하여 매우 빠르게 사이트 접속이 가능하게 합니다.<br />다만 CSS나 JS에 따라서 문제가 생길 수 있습니다. 이때는 Optimizer 비활성화 하시면 정상적인 동작은 가능합니다';
|
||||
$lang->use_optimizer = 'Enable Optimizer';
|
||||
$lang->about_optimizer = 'If optimizer is enabled, users can quickly access to this site, since multiple CSS / JS files are put together and compressed before transmission. <br /> Nevertheless, this optimization might be problematic according to CSS or JS. If you disable it, it would work properly though it would work slower.';
|
||||
$lang->use_rewrite = 'Use rewrite mod';
|
||||
$lang->about_rewrite = "If web server provides rewrite mod, long URL such as http://blah/?document_srl=123 can be shortened like http://blah/123";
|
||||
$lang->time_zone = 'Time zone';
|
||||
|
|
|
|||
|
|
@ -247,8 +247,8 @@ EndOfLicense;
|
|||
$lang->admin_title = '管理员信息';
|
||||
|
||||
$lang->env_title = '环境设置';
|
||||
$lang->use_optimizer = 'Optimizer 사용';
|
||||
$lang->about_optimizer = 'Optimizer를 사용하면 다수의 CSS/ JS파일을 통합/압축 전송하여 매우 빠르게 사이트 접속이 가능하게 합니다.<br />다만 CSS나 JS에 따라서 문제가 생길 수 있습니다. 이때는 Optimizer 비활성화 하시면 정상적인 동작은 가능합니다';
|
||||
$lang->use_optimizer = '使用Optimizer';
|
||||
$lang->about_optimizer = '使用Optimizer可以对大部分的CSS/ JS文件进行整合/压缩传送使之加快网站访问速度。<br />只是有时会发生小小的问题。这时候请暂时不要使用Optimizer。';
|
||||
$lang->use_rewrite = '使用rewrite模块';
|
||||
$lang->about_rewrite = '如服务器支持rewrite模块且选择此项,可以简化复杂的网址。<br />例如,http://域名/?document_srl=123简化为http://域名/123。';
|
||||
$lang->time_zone = '时区';
|
||||
|
|
|
|||
|
|
@ -43,6 +43,7 @@
|
|||
$member_info = $this->getMemberInfoByMemberSrl($member_srl);
|
||||
}
|
||||
$member_srl = $member_info->member_srl;
|
||||
if(!$member_srl) return;
|
||||
|
||||
// 변수 정리
|
||||
$user_id = $member_info->user_id;
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@
|
|||
<form action="./" method="get" onsubmit="return doChangeCategory(this);">
|
||||
<input type="hidden" name="module" value="{$module}" />
|
||||
<input type="hidden" name="act" value="{$act}" />
|
||||
<select name="module_category_srl" class="w100">
|
||||
<select name="module_category_srl" class="w80">
|
||||
<option value="">{$lang->module_category}</option>
|
||||
<!--@foreach($module_category as $key => $val)-->
|
||||
<option value="{$key}" <!--@if($module_category_srl==$key)-->selected="selected"<!--@end-->>{$val->title}</option>
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@
|
|||
<form action="./" method="get" onsubmit="return doChangeCategory(this);">
|
||||
<input type="hidden" name="module" value="{$module}" />
|
||||
<input type="hidden" name="act" value="{$act}" />
|
||||
<select name="module_category_srl" class="w100">
|
||||
<select name="module_category_srl" class="w80">
|
||||
<option value="">{$lang->module_category}</option>
|
||||
<!--@foreach($module_category as $key => $val)-->
|
||||
<option value="{$key}" <!--@if($module_category_srl==$key)-->selected="selected"<!--@end-->>{$val->title}</option>
|
||||
|
|
|
|||
|
|
@ -28,6 +28,7 @@
|
|||
|
||||
$lang->about_module_point = "You can set point for each module and modules which don't have any value will use default point.<br />All point will be restored on acting reverse.";
|
||||
|
||||
$lang->point_signup = 'Signup';
|
||||
$lang->point_insert_document = 'On Writing';
|
||||
$lang->point_delete_document = 'On Deleting';
|
||||
$lang->point_insert_comment = 'On Adding Comments';
|
||||
|
|
|
|||
|
|
@ -28,6 +28,7 @@
|
|||
|
||||
$lang->about_module_point = "Usted puede definir los puntos para cada módulo y los módulos que no tengan ningun valor usarán punto predefinido.<br />Todos los puntos serán restituidos al actuar en forma contraria.";
|
||||
|
||||
$lang->point_signup = 'Fecha del';
|
||||
$lang->point_insert_document = 'Al escribir documento';
|
||||
$lang->point_delete_document = 'Al borrar documento';
|
||||
$lang->point_insert_comment = 'Al agregar comentarios';
|
||||
|
|
|
|||
|
|
@ -28,6 +28,7 @@
|
|||
|
||||
$lang->about_module_point = 'モジュール別にポイントを指定することができますが、指定されていないモジュールでは、デフォルトポイントが使用されます。すべてのポイント数は、反対のアクションを行った際には原状復帰されます。';
|
||||
|
||||
$lang->point_signup = '加入';
|
||||
$lang->point_insert_document = '書き込み作成';
|
||||
$lang->point_delete_document = '書き込み削除';
|
||||
$lang->point_insert_comment = 'コメント作成';
|
||||
|
|
|
|||
|
|
@ -28,6 +28,7 @@
|
|||
|
||||
$lang->about_module_point = '모듈별로 포인트를 지정할 수 있으며 지정되지 않은 모듈은 기본 포인트를 이용하게 됩니다<br />모든 점수는 반대 행동을 하였을 경우 원상복귀 됩니다.';
|
||||
|
||||
$lang->point_signup = '가입';
|
||||
$lang->point_insert_document = '글 작성';
|
||||
$lang->point_delete_document = '글 삭제';
|
||||
$lang->point_insert_comment = '댓글 작성';
|
||||
|
|
|
|||
|
|
@ -28,6 +28,7 @@
|
|||
|
||||
$lang->about_module_point = '可以分别对各模块进行积分设置,没有被设置的模块将使用默认值。<br />所有积分在相反动作下恢复原始值。即:发表新帖后再删除得到的积分为0分。';
|
||||
|
||||
$lang->point_signup = '注册';
|
||||
$lang->point_insert_document = '发表新帖';
|
||||
$lang->point_delete_document = '删除主题';
|
||||
$lang->point_insert_comment = '发表评论';
|
||||
|
|
|
|||
|
|
@ -61,13 +61,14 @@
|
|||
// 변수 정리
|
||||
$args = Context::getRequestVars();
|
||||
|
||||
$config->signup = (int)$args->signup;
|
||||
$config->insert_document = (int)$args->insert_document;
|
||||
$config->insert_comment = (int)$args->insert_comment;
|
||||
$config->upload_file = (int)$args->upload_file;
|
||||
$config->download_file = (int)$args->download_file;
|
||||
|
||||
foreach($args as $key => $val) {
|
||||
preg_match("/^(insert_document|insert_comment|upload_file|download_file)_([0-9]+)$/", $key, $matches);
|
||||
preg_match("/^(signup|insert_document|insert_comment|upload_file|download_file)_([0-9]+)$/", $key, $matches);
|
||||
if(!$matches[1]) continue;
|
||||
$name = $matches[1];
|
||||
$module_srl = $matches[2];
|
||||
|
|
@ -95,6 +96,7 @@
|
|||
// 변수 정리
|
||||
$args = Context::getRequestVars();
|
||||
|
||||
$config->signup_act = $args->signup_act;
|
||||
$config->insert_document_act = $args->insert_document_act;
|
||||
$config->delete_document_act = $args->delete_document_act;
|
||||
$config->insert_comment_act = $args->insert_comment_act;
|
||||
|
|
@ -132,7 +134,8 @@
|
|||
$config = $oModuleModel->getModuleConfig('point');
|
||||
|
||||
// 각 act값을 정리
|
||||
$act_list = sprintf("%s,%s,%s,%s,%s,%s,%s",
|
||||
$act_list = sprintf("%s,%s,%s,%s,%s,%s,%s,%s",
|
||||
$config->signup_act,
|
||||
$config->insert_document_act,
|
||||
$config->delete_document_act,
|
||||
$config->insert_comment_act,
|
||||
|
|
|
|||
|
|
@ -60,10 +60,12 @@
|
|||
**/
|
||||
function dispPointAdminPointList() {
|
||||
$oPointModel = &getModel('point');
|
||||
|
||||
$args->list_count = 20;
|
||||
$args->page = Context::get('page');
|
||||
|
||||
$output = $oPointModel->getMemberList($args);
|
||||
|
||||
// 템플릿에 쓰기 위해서 context::set
|
||||
Context::set('total_count', $output->total_count);
|
||||
Context::set('total_page', $output->total_page);
|
||||
|
|
|
|||
|
|
@ -43,6 +43,11 @@
|
|||
/**
|
||||
* 모듈별 기본 점수 및 각 action 정의 (게시판,블로그외에 어떤 모듈이 생길지 모르니 act값을 명시한다
|
||||
**/
|
||||
// 회원가입
|
||||
$config->signup = 10;
|
||||
|
||||
$config->signup_act = 'procMemberInsert';
|
||||
|
||||
// 글작성
|
||||
$config->insert_document = 10;
|
||||
|
||||
|
|
@ -79,6 +84,12 @@
|
|||
* @brief 설치가 이상이 없는지 체크하는 method
|
||||
**/
|
||||
function checkUpdate() {
|
||||
// point 모듈 정보 가져옴
|
||||
$oModuleModel = &getModel('module');
|
||||
$config = $oModuleModel->getModuleConfig('point');
|
||||
|
||||
if(!$config->signup || !$config->signup_act) return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
@ -86,6 +97,21 @@
|
|||
* @brief 업데이트 실행
|
||||
**/
|
||||
function moduleUpdate() {
|
||||
// point 모듈 정보 가져옴
|
||||
$oModuleModel = &getModel('module');
|
||||
$config = $oModuleModel->getModuleConfig('point');
|
||||
|
||||
if(!$config->signup || !$config->signup_act) {
|
||||
$config->signup = 10;
|
||||
$config->signup_act = 'procMemberInsert';
|
||||
|
||||
$oModuleController = &getController('module');
|
||||
$oModuleController->insertModuleConfig('point', $config);
|
||||
|
||||
$oPointController = &getAdminController('point');
|
||||
$oPointController->cacheActList();
|
||||
}
|
||||
|
||||
return new Object(0, 'success_updated');
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -110,7 +110,7 @@
|
|||
$config = $oModuleModel->getModuleConfig('point');
|
||||
|
||||
foreach($output->data as $key => $val) {
|
||||
$output->data[$key]->level = $this->getLevel($point, $config->level_step);
|
||||
$output->data[$key]->level = $this->getLevel($val->point, $config->level_step);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
8
modules/point/queries/getMemberCount.xml
Normal file
8
modules/point/queries/getMemberCount.xml
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
<query id="getMemberCount" action="select">
|
||||
<tables>
|
||||
<table name="member" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="member_srl" />
|
||||
</columns>
|
||||
</query>
|
||||
|
|
@ -21,6 +21,9 @@
|
|||
<condition operation="like_prefix" column="last_login" var="s_last_login" pipe="or" />
|
||||
</group>
|
||||
</conditions>
|
||||
<groups>
|
||||
<group column="member.member_srl" />
|
||||
</groups>
|
||||
<navigation>
|
||||
<index var="sort_index" default="point" order="desc" />
|
||||
<list_count var="list_count" default="20" />
|
||||
|
|
|
|||
|
|
@ -26,6 +26,9 @@
|
|||
<condition operation="like_prefix" column="member.last_login" var="s_last_login" pipe="or" />
|
||||
</group>
|
||||
</conditions>
|
||||
<groups>
|
||||
<group column="member.member_srl" />
|
||||
</groups>
|
||||
<navigation>
|
||||
<index var="sort_index" default="point" order="desc" />
|
||||
<list_count var="list_count" default="20" />
|
||||
|
|
|
|||
8
modules/point/queries/getPointCount.xml
Normal file
8
modules/point/queries/getPointCount.xml
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
<query id="getPointCount" action="select">
|
||||
<tables>
|
||||
<table name="point" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="count(*)" alias="count" />
|
||||
</columns>
|
||||
</query>
|
||||
|
|
@ -7,6 +7,10 @@
|
|||
<table cellspacing="0" class="tableType2 gap1">
|
||||
<col width="200" />
|
||||
<col />
|
||||
<tr>
|
||||
<th>{$lang->point_signup}</th>
|
||||
<td><input type="text" name="signup_act" value="{$config->signup_act}" class="inputTypeText w100" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{$lang->point_insert_document}</th>
|
||||
<td><input type="text" name="insert_document_act" value="{$config->insert_document_act}" class="inputTypeText w100" /></td>
|
||||
|
|
|
|||
|
|
@ -3,6 +3,13 @@
|
|||
|
||||
<!--@if($module=='admin')-->
|
||||
<div class="header4">
|
||||
<!-- Á¤º¸ -->
|
||||
<!--@if($total_count)-->
|
||||
<div class="summary">
|
||||
<strong>Total</strong> <em>{number_format($total_count)}</em>, Page <em>{number_format($page)}/{number_format($total_page)}</em>
|
||||
</div>
|
||||
<!--@end-->
|
||||
|
||||
<ul class="localNavigation">
|
||||
<li <!--@if($act=='dispPointAdminConfig')-->class="on"<!--@end-->><a href="{getUrl('act','dispPointAdminConfig')}">{$lang->cmd_point_config}</a></li>
|
||||
<li <!--@if($act=='dispPointAdminModuleConfig')-->class="on"<!--@end-->><a href="{getUrl('act','dispPointAdminModuleConfig')}">{$lang->cmd_point_module_config}</a></li>
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@
|
|||
<table cellspacing="0" class="tableType2 gap1">
|
||||
<tr>
|
||||
<th> </th>
|
||||
<th>{$lang->point_signup}</th>
|
||||
<th>{$lang->point_insert_document}</th>
|
||||
<th>{$lang->point_insert_comment}</th>
|
||||
<th>{$lang->point_upload_file}</th>
|
||||
|
|
@ -14,6 +15,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<th scope="col">{$lang->is_default}</th>
|
||||
<td><input type="text" name="signup" value="{$config->signup}" class="inputTypeText w80" /> {$config->point_name}</td>
|
||||
<td><input type="text" name="insert_document" value="{$config->insert_document}" class="inputTypeText w80" /> {$config->point_name}</td>
|
||||
<td><input type="text" name="insert_comment" value="{$config->insert_comment}" class="inputTypeText w80" /> {$config->point_name}</td>
|
||||
<td><input type="text" name="upload_file" value="{$config->upload_file}" class="inputTypeText w80" /> {$config->point_name}</td>
|
||||
|
|
@ -22,6 +24,7 @@
|
|||
<!--@foreach($mid_list as $key => $val)-->
|
||||
<tr>
|
||||
<th scope="col">{$val->browser_title} ({$val->mid})</th>
|
||||
<td><input type="text" name="signup_{$val->module_srl}" value="{$config->module_point[$val->module_srl]['signup']}" class="inputTypeText w80" /> {$config->point_name}</td>
|
||||
<td><input type="text" name="insert_document_{$val->module_srl}" value="{$config->module_point[$val->module_srl]['insert_document']}" class="inputTypeText w80" /> {$config->point_name}</td>
|
||||
<td><input type="text" name="insert_comment_{$val->module_srl}" value="{$config->module_point[$val->module_srl]['insert_comment']}" class="inputTypeText w80" /> {$config->point_name}</td>
|
||||
<td><input type="text" name="upload_file_{$val->module_srl}" value="{$config->module_point[$val->module_srl]['upload_file']}" class="inputTypeText w80" /> {$config->point_name}</td>
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue