XE Core 패키지를 위해서 별도로 분리할 모듈들을 모두 제거

git-svn-id: http://xe-core.googlecode.com/svn/sandbox@6696 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
zero 2009-07-10 10:35:43 +00:00
parent 42c050fb56
commit 245f6d2d07
1746 changed files with 0 additions and 61039 deletions

View file

@ -24,7 +24,6 @@
$oAddonController->doInsert('referer');
$oAddonController->doInsert('resize_image');
$oAddonController->doInsert('openid_delegation_id');
$oAddonController->doInsert('rainbow_link');
$oAddonController->doInsert('point_level_icon');
// 몇가지 애드온을 기본 활성화 상태로 변경

View file

@ -1,96 +0,0 @@
<?php
/**
* @class boardAdminController
* @author zero (zero@nzeo.com)
* @brief board 모듈의 admin controller class
**/
class boardAdminController extends board {
/**
* @brief 초기화
**/
function init() {
}
/**
* @brief 게시판 추가
**/
function procBoardAdminInsertBoard($args = null) {
// module 모듈의 model/controller 객체 생성
$oModuleController = &getController('module');
$oModuleModel = &getModel('module');
// 게시판 모듈의 정보 설정
$args = Context::getRequestVars();
$args->module = 'board';
$args->mid = $args->board_name;
unset($args->board_name);
// 기본 값외의 것들을 정리
if($args->use_category!='Y') $args->use_category = 'N';
if($args->except_notice!='Y') $args->except_notice = 'N';
if($args->use_anonymous!='Y') $args->use_anonymous= 'N';
if($args->consultation!='Y') $args->consultation = 'N';
if(!in_array($args->order_target,$this->order_target)) $args->order_target = 'list_order';
if(!in_array($args->order_type,array('asc','desc'))) $args->order_type = 'asc';
// module_srl이 넘어오면 원 모듈이 있는지 확인
if($args->module_srl) {
$module_info = $oModuleModel->getModuleInfoByModuleSrl($args->module_srl);
if($module_info->module_srl != $args->module_srl) unset($args->module_srl);
}
// module_srl의 값에 따라 insert/update
if(!$args->module_srl) {
$output = $oModuleController->insertModule($args);
$msg_code = 'success_registed';
} else {
$output = $oModuleController->updateModule($args);
$msg_code = 'success_updated';
}
if(!$output->toBool()) return $output;
$this->add('page',Context::get('page'));
$this->add('module_srl',$output->get('module_srl'));
$this->setMessage($msg_code);
}
/**
* @brief 게시판 삭제
**/
function procBoardAdminDeleteBoard() {
$module_srl = Context::get('module_srl');
// 원본을 구해온다
$oModuleController = &getController('module');
$output = $oModuleController->deleteModule($module_srl);
if(!$output->toBool()) return $output;
$this->add('module','board');
$this->add('page',Context::get('page'));
$this->setMessage('success_deleted');
}
/**
* @brief 게시판 목록 지정
**/
function procBoardAdminInsertListConfig() {
$module_srl = Context::get('module_srl');
$list = explode(',',Context::get('list'));
if(!count($list)) return new Object(-1, 'msg_invalid_request');
$list_arr = array();
foreach($list as $val) {
$val = trim($val);
if(!$val) continue;
if(substr($val,0,10)=='extra_vars') $val = substr($val,10);
$list_arr[] = $val;
}
$oModuleController = &getController('module');
$oModuleController->insertModulePartConfig('board', $module_srl, $list_arr);
}
}
?>

View file

@ -1,220 +0,0 @@
<?php
/**
* @class boardAdminView
* @author zero (zero@nzeo.com)
* @brief board 모듈의 admin view class
**/
class boardAdminView extends board {
/**
* @brief 초기화
*
* board 모듈은 일반 사용과 관리자용으로 나누어진다.\n
**/
function init() {
// module_srl이 있으면 미리 체크하여 존재하는 모듈이면 module_info 세팅
$module_srl = Context::get('module_srl');
if(!$module_srl && $this->module_srl) {
$module_srl = $this->module_srl;
Context::set('module_srl', $module_srl);
}
// module model 객체 생성
$oModuleModel = &getModel('module');
// module_srl이 넘어오면 해당 모듈의 정보를 미리 구해 놓음
if($module_srl) {
$module_info = $oModuleModel->getModuleInfoByModuleSrl($module_srl);
if(!$module_info) {
Context::set('module_srl','');
$this->act = 'list';
} else {
ModuleModel::syncModuleToSite($module_info);
$this->module_info = $module_info;
Context::set('module_info',$module_info);
}
}
if($module_info && $module_info->module != 'board') return $this->stop("msg_invalid_request");
// 모듈 카테고리 목록을 구함
$module_category = $oModuleModel->getModuleCategories();
Context::set('module_category', $module_category);
// 템플릿 경로 지정 (board의 경우 tpl에 관리자용 템플릿 모아놓음)
$template_path = sprintf("%stpl/",$this->module_path);
$this->setTemplatePath($template_path);
// 정렬 옵션을 세팅
foreach($this->order_target as $key) $order_target[$key] = Context::getLang($key);
$order_target['list_order'] = Context::getLang('document_srl');
$order_target['update_order'] = Context::getLang('last_update');
Context::set('order_target', $order_target);
}
/**
* @brief 게시판 관리 목록 보여줌
**/
function dispBoardAdminContent() {
// 등록된 board 모듈을 불러와 세팅
$args->sort_index = "module_srl";
$args->page = Context::get('page');
$args->list_count = 20;
$args->page_count = 10;
$args->s_module_category_srl = Context::get('module_category_srl');
$output = executeQueryArray('board.getBoardList', $args);
ModuleModel::syncModuleToSite($output->data);
// 템플릿에 쓰기 위해서 context::set
Context::set('total_count', $output->total_count);
Context::set('total_page', $output->total_page);
Context::set('page', $output->page);
Context::set('board_list', $output->data);
Context::set('page_navigation', $output->page_navigation);
// 템플릿 파일 지정
$this->setTemplateFile('index');
}
/**
* @brief 선택된 게시판의 정보 출력 (바로 정보 입력으로 변경)
**/
function dispBoardAdminBoardInfo() {
$this->dispBoardAdminInsertBoard();
}
/**
* @brief 게시판 추가 출력
**/
function dispBoardAdminInsertBoard() {
if(!in_array($this->module_info->module, array('admin', 'board','blog','guestbook'))) {
return $this->alertMessage('msg_invalid_request');
}
// 스킨 목록을 구해옴
$oModuleModel = &getModel('module');
$skin_list = $oModuleModel->getSkins($this->module_path);
Context::set('skin_list',$skin_list);
// 레이아웃 목록을 구해옴
$oLayoutMode = &getModel('layout');
$layout_list = $oLayoutMode->getLayoutList();
Context::set('layout_list', $layout_list);
// 템플릿 파일 지정
$this->setTemplateFile('board_insert');
}
/**
* @brief 게시판 추가 설정 보여줌
* 추가설정은 서비스형 모듈들에서 다른 모듈과의 연계를 위해서 설정하는 페이지임
**/
function dispBoardAdminBoardAdditionSetup() {
// content는 다른 모듈에서 call by reference로 받아오기에 미리 변수 선언만 해 놓음
$content = '';
// 추가 설정을 위한 트리거 호출
// 게시판 모듈이지만 차후 다른 모듈에서의 사용도 고려하여 trigger 이름을 공용으로 사용할 수 있도록 하였음
$output = ModuleHandler::triggerCall('module.dispAdditionSetup', 'before', $content);
$output = ModuleHandler::triggerCall('module.dispAdditionSetup', 'after', $content);
Context::set('setup_content', $content);
// 템플릿 파일 지정
$this->setTemplateFile('addition_setup');
}
/**
* @brief 게시판 삭제 화면 출력
**/
function dispBoardAdminDeleteBoard() {
if(!Context::get('module_srl')) return $this->dispBoardAdminContent();
if(!in_array($this->module_info->module, array('admin', 'board','blog','guestbook'))) {
return $this->alertMessage('msg_invalid_request');
}
$module_info = Context::get('module_info');
$oDocumentModel = &getModel('document');
$document_count = $oDocumentModel->getDocumentCount($module_info->module_srl);
$module_info->document_count = $document_count;
Context::set('module_info',$module_info);
// 템플릿 파일 지정
$this->setTemplateFile('board_delete');
}
/**
* @brief 게시판의 목록 설정
**/
function dispBoardAdminListSetup() {
$oBoardModel = &getModel('board');
// 대상 항목을 구함
Context::set('extra_vars', $oBoardModel->getDefaultListConfig($this->module_info->module_srl));
// 설정 항목 추출 (설정항목이 없을 경우 기본 값을 세팅)
Context::set('list_config', $oBoardModel->getListConfig($this->module_info->module_srl));
$this->setTemplateFile('list_setting');
}
/**
* @brief 카테고리의 정보 출력
**/
function dispBoardAdminCategoryInfo() {
$oDocumentModel = &getModel('document');
$catgegory_content = $oDocumentModel->getCategoryHTML($this->module_info->module_srl);
Context::set('category_content', $catgegory_content);
Context::set('module_info', $this->module_info);
$this->setTemplateFile('category_list');
}
/**
* @brief 권한 목록 출력
**/
function dispBoardAdminGrantInfo() {
// 공통 모듈 권한 설정 페이지 호출
$oModuleAdminModel = &getAdminModel('module');
$grant_content = $oModuleAdminModel->getModuleGrantHTML($this->module_info->module_srl, $this->xml_info->grant);
Context::set('grant_content', $grant_content);
$this->setTemplateFile('grant_list');
}
/**
* @brief 확장 변수 설정
**/
function dispBoardAdminExtraVars() {
$oDocumentAdminModel = &getModel('document');
$extra_vars_content = $oDocumentAdminModel->getExtraVarsHTML($this->module_info->module_srl);
Context::set('extra_vars_content', $extra_vars_content);
$this->setTemplateFile('extra_vars');
}
/**
* @brief 스킨 정보 보여줌
**/
function dispBoardAdminSkinInfo() {
// 공통 모듈 권한 설정 페이지 호출
$oModuleAdminModel = &getAdminModel('module');
$skin_content = $oModuleAdminModel->getModuleSkinHTML($this->module_info->module_srl);
Context::set('skin_content', $skin_content);
$this->setTemplateFile('skin_info');
}
/**
* @brief board module용 메시지 출력
**/
function alertMessage($message) {
$script = sprintf('<script type="text/javascript"> xAddEventListener(window,"load", function() { alert("%s"); } );</script>', Context::getLang($message));
Context::addHtmlHeader( $script );
}
}
?>

View file

@ -1,136 +0,0 @@
<?php
/**
* @class boardAPI
* @author sol(sol@ngleader.com)
* @brief board 모듈의 View Action에 대한 API 처리
**/
class boardAPI extends board {
/* dispBoardContent 사용하지 않는다..
function dispBoardContent(&$oModule) {
}
*/
/**
* @brief 공지사항 목록
**/
function dispBoardNoticeList(&$oModule) {
$oModule->add('notice_list',$this->arrangeContentList(Context::get('notice_list')));
}
/**
* @brief 컨텐츠 목록
**/
function dispBoardContentList(&$oModule) {
$document_list = $this->arrangeContentList(Context::get('document_list'));
$oModule->add('document_list',$document_list);
$oModule->add('page_navigation',Context::get('page_navigation'));
}
/**
* @brief 카테고리(분류) 목록
**/
function dispBoardCatogoryList(&$oModule) {
$oModule->add('category_list',Context::get('category_list'));
}
/**
* @brief 게시물 보기
**/
function dispBoardContentView(&$oModule) {
$oDocument = Context::get('oDocument');
$extra_vars = $oDocument->getExtraVars();
$oDocument->add('extra_vars',$this->arrangeExtraVars($extra_vars));
$oModule->add('oDocument',$this->arrangeContent($oDocument));
}
/**
* @brief 컨텐츠의 파일 목록
**/
function dispBoardContentFileList(&$oModule) {
$oModule->add('file_list',$this->arrangeFile(Context::get('file_list')));
}
/**
* @brief 태그 목록
**/
function dispBoardTagList(&$oModule) {
$oModule->add('tag_list',Context::get('tag_list'));
}
/**
* @brief 컨텐츠의 코멘트 목록
**/
function dispBoardContentCommentList(&$oModule) {
$oModule->add('comment_list',$this->arrangeComment(Context::get('comment_list')));
}
function arrangeContentList($content_list) {
$output = array();
if(count($content_list)) {
foreach($content_list as $key => $val) $output[] = $this->arrangeContent($val);
}
return $output;
}
function arrangeContent($content) {
$output = null;
if($content){
$output= $content->gets('document_srl','category_srl','is_secret','nick_name','user_id','user_name','title','content','tags','voted_count','blamed_count','comment_count','regdate','last_update','extra_vars');
}
return $output;
}
function arrangeComment($comment_list) {
$output = array();
if(count($comment_list) > 0 ) {
foreach($comment_list as $key => $val){
$item = null;
$item = $val->gets('comment_srl','parent_srl','depth','is_secret','content','voted_count','blamed_count','user_id','user_name','nick_name','email_address','homepage','regdate','last_update');
$output[] = $item;
}
}
return $output;
}
function arrangeFile($file_list) {
$output = array();
if(count($file_list) > 0) {
foreach($file_list as $key => $val){
$item = null;
$item->sid = $val->sid;
$item->download_count = $val->download_count;
$item->source_filename = $val->source_filename;
$item->uploaded_filename = $val->uploaded_filename;
$item->file_size = $val->file_size;
$item->regdate = $val->regdate;
$item->download_url = $val->download_url;
$output[] = $item;
}
}
return $output;
}
function arrangeExtraVars($list) {
$output = array();
if(count($list)) {
foreach($list as $key => $val){
$item = null;
$item->name = $val->name;
$item->type = $val->type;
$item->desc = $val->desc;
$item->value = $val->value;
$output[] = $item;
}
}
return $output;
}
}
?>

View file

@ -1,83 +0,0 @@
<?php
/**
* @class board
* @author zero (zero@nzeo.com)
* @brief board 모듈의 high class
**/
class board extends ModuleObject {
var $search_option = array('title','content','title_content','comment','user_name','nick_name','user_id','tag'); ///< 검색 옵션
var $order_target = array('list_order', 'update_order', 'regdate', 'voted_count', 'readed_count', 'comment_count', 'title'); // 정렬 옵션
var $skin = "default"; ///< 스킨 이름
var $list_count = 20; ///< 한 페이지에 나타날 글의 수
var $page_count = 10; ///< 페이지의 수
var $category_list = NULL; ///< 카테고리 목록
/**
* @brief 설치시 추가 작업이 필요할시 구현
**/
function moduleInstall() {
// action forward에 등록 (관리자 모드에서 사용하기 위함)
$oModuleController = &getController('module');
$oModuleModel = &getModel('module');
// 2007. 10. 17 아이디 클릭시 나타나는 팝업메뉴에 작성글 보기 기능 추가
$oModuleController->insertTrigger('member.getMemberMenu', 'board', 'controller', 'triggerMemberMenu', 'after');
// 기본 게시판 생성
$args->site_srl = 0;
$output = executeQuery('module.getSite', $args);
if(!$output->data->index_module_srl) {
$args->mid = 'board';
$args->module = 'board';
$args->browser_title = 'XpressEngine';
$args->skin = 'xe_default';
$args->site_srl = 0;
$output = $oModuleController->insertModule($args);
$module_srl = $output->get('module_srl');
$site_args->site_srl = 0;
$site_args->index_module_srl = $module_srl;
$oModuleController = &getController('module');
$oModuleController->updateSite($site_args);
}
return new Object();
}
/**
* @brief 설치가 이상이 없는지 체크하는 method
**/
function checkUpdate() {
$oModuleModel = &getModel('module');
// 2007. 10. 17 아이디 클릭시 나타나는 팝업메뉴에 작성글 보기 기능 추가
if(!$oModuleModel->getTrigger('member.getMemberMenu', 'board', 'controller', 'triggerMemberMenu', 'after')) return true;
return false;
}
/**
* @brief 업데이트 실행
**/
function moduleUpdate() {
$oModuleModel = &getModel('module');
$oModuleController = &getController('module');
// 2007. 10. 17 아이디 클릭시 나타나는 팝업메뉴에 작성글 보기 기능 추가
if(!$oModuleModel->getTrigger('member.getMemberMenu', 'board', 'controller', 'triggerMemberMenu', 'after'))
$oModuleController->insertTrigger('member.getMemberMenu', 'board', 'controller', 'triggerMemberMenu', 'after');
return new Object(0, 'success_updated');
}
/**
* @brief 캐시 파일 재생성
**/
function recompileCache() {
}
}
?>

View file

@ -1,343 +0,0 @@
<?php
/**
* @class boardController
* @author zero (zero@nzeo.com)
* @brief board 모듈의 Controller class
**/
class boardController extends board {
/**
* @brief 초기화
**/
function init() {
}
/**
* @brief 문서 입력
**/
function procBoardInsertDocument() {
// 권한 체크
if(!$this->grant->write_document) return new Object(-1, 'msg_not_permitted');
// 글작성시 필요한 변수를 세팅
$obj = Context::getRequestVars();
$obj->module_srl = $this->module_srl;
if($obj->is_notice!='Y'||!$this->grant->manager) $obj->is_notice = 'N';
settype($obj->title, "string");
if($obj->title == '') $obj->title = cut_str(strip_tags($obj->content),20,'...');
//그래도 없으면 Untitled
if($obj->title == '') $obj->title = 'Untitled';
// 관리자가 아니라면 게시글 색상/굵기 제거
if(!$this->grant->manager) {
unset($obj->title_color);
unset($obj->title_bold);
}
// document module의 model 객체 생성
$oDocumentModel = &getModel('document');
// document module의 controller 객체 생성
$oDocumentController = &getController('document');
// 이미 존재하는 글인지 체크
$oDocument = $oDocumentModel->getDocument($obj->document_srl, $this->grant->manager);
// 익명 설정일 경우 여러가지 요소를 미리 제거 (알림용 정보들 제거)
if($this->module_info->use_anonymous == 'Y') {
$obj->notify_message = 'N';
$this->module_info->admin_mail = '';
}
// 이미 존재하는 경우 수정
if($oDocument->isExists() && $oDocument->document_srl == $obj->document_srl) {
$output = $oDocumentController->updateDocument($oDocument, $obj);
$msg_code = 'success_updated';
// 그렇지 않으면 신규 등록
} else {
$output = $oDocumentController->insertDocument($obj);
$msg_code = 'success_registed';
$obj->document_srl = $output->get('document_srl');
// 문제가 없고 모듈 설정에 관리자 메일이 등록되어 있으면 메일 발송
if($output->toBool() && $this->module_info->admin_mail) {
$oMail = new Mail();
$oMail->setTitle($obj->title);
$oMail->setContent( sprintf("From : <a href=\"%s\">%s</a><br/>\r\n%s", getUrl('','document_srl',$obj->document_srl), getUrl('','document_srl',$obj->document_srl), $obj->content));
$oMail->setSender($obj->user_name, $obj->email_address);
$target_mail = explode(',',$this->module_info->admin_mail);
for($i=0;$i<count($target_mail);$i++) {
$email_address = trim($target_mail[$i]);
if(!$email_address) continue;
$oMail->setReceiptor($email_address, $email_address);
$oMail->send();
}
}
}
// 오류 발생시 멈춤
if(!$output->toBool()) return $output;
// 익명 사용시 글의 글쓴이 정보를 모두 제거
if($this->module_info->use_anonymous == 'Y' && Context::get('is_logged')) {
$logged_info = Context::get('logged_info');
$document_args->document_srl = $output->get('document_srl');
$document = executeQuery('document.getDocument', $document_args);
if($document->toBool() && $document->data) {
$obj = $document->data;
$obj->member_srl = -1*$logged_info->member_srl;
$obj->email_address = $obj->homepage = $obj->user_id = '';
$obj->user_name = $obj->nick_name = 'anonymous';
$anonymous_output = executeQuery('document.updateDocument', $obj);
if(!$anonymous_output->toBool()) return $output;
}
}
// 결과를 리턴
$this->add('mid', Context::get('mid'));
$this->add('document_srl', $output->get('document_srl'));
// 성공 메세지 등록
$this->setMessage($msg_code);
}
/**
* @brief 문서 삭제
**/
function procBoardDeleteDocument() {
// 문서 번호 확인
$document_srl = Context::get('document_srl');
// 문서 번호가 없다면 오류 발생
if(!$document_srl) return $this->doError('msg_invalid_document');
// document module model 객체 생성
$oDocumentController = &getController('document');
// 삭제 시도
$output = $oDocumentController->deleteDocument($document_srl, $this->grant->manager);
if(!$output->toBool()) return $output;
// 성공 메세지 등록
$this->add('mid', Context::get('mid'));
$this->add('page', $output->get('page'));
$this->setMessage('success_deleted');
}
/**
* @brief 추천
**/
function procBoardVoteDocument() {
// document module controller 객체 생성
$oDocumentController = &getController('document');
$document_srl = Context::get('document_srl');
return $oDocumentController->updateVotedCount($document_srl);
}
/**
* @brief 코멘트 추가
**/
function procBoardInsertComment() {
// 권한 체크
if(!$this->grant->write_comment) return new Object(-1, 'msg_not_permitted');
// 댓글 입력에 필요한 데이터 추출
$obj = Context::gets('document_srl','comment_srl','parent_srl','content','password','nick_name','nick_name','member_srl','email_address','homepage','is_secret','notify_message');
$obj->module_srl = $this->module_srl;
// 원글이 존재하는지 체크
$oDocumentModel = &getModel('document');
$oDocument = $oDocumentModel->getDocument($obj->document_srl);
if(!$oDocument->isExists()) return new Object(-1,'msg_not_permitted');
// 익명 설정일 경우 여러가지 요소를 미리 제거 (알림용 정보들 제거)
if($this->module_info->use_anonymous == 'Y') {
$obj->notify_message = 'N';
$this->module_info->admin_mail = '';
}
// comment 모듈의 model 객체 생성
$oCommentModel = &getModel('comment');
// comment 모듈의 controller 객체 생성
$oCommentController = &getController('comment');
// comment_srl이 존재하는지 체크
// 만일 comment_srl이 n/a라면 getNextSequence()로 값을 얻어온다.
if(!$obj->comment_srl) {
$obj->comment_srl = getNextSequence();
} else {
$comment = $oCommentModel->getComment($obj->comment_srl, $this->grant->manager);
}
// comment_srl이 없을 경우 신규 입력
if($comment->comment_srl != $obj->comment_srl) {
// parent_srl이 있으면 답변으로
if($obj->parent_srl) {
$parent_comment = $oCommentModel->getComment($obj->parent_srl);
if(!$parent_comment->comment_srl) return new Object(-1, 'msg_invalid_request');
$output = $oCommentController->insertComment($obj);
// 없으면 신규
} else {
$output = $oCommentController->insertComment($obj);
}
// 문제가 없고 모듈 설정에 관리자 메일이 등록되어 있으면 메일 발송
if($output->toBool() && $this->module_info->admin_mail) {
$oMail = new Mail();
$oMail->setTitle($oDocument->getTitleText());
$oMail->setContent( sprintf("From : <a href=\"%s#comment_%d\">%s#comment_%d</a><br/>\r\n%s", $oDocument->getPermanentUrl(), $obj->comment_srl, $oDocument->getPermanentUrl(), $obj->comment_srl, $obj->content));
$oMail->setSender($obj->user_name, $obj->email_address);
$target_mail = explode(',',$this->module_info->admin_mail);
for($i=0;$i<count($target_mail);$i++) {
$email_address = trim($target_mail[$i]);
if(!$email_address) continue;
$oMail->setReceiptor($email_address, $email_address);
$oMail->send();
}
}
// comment_srl이 있으면 수정으로
} else {
$obj->parent_srl = $comment->parent_srl;
$output = $oCommentController->updateComment($obj, $this->grant->manager);
$comment_srl = $obj->comment_srl;
}
if(!$output->toBool()) return $output;
// 익명 사용시 글의 글쓴이 정보를 모두 제거
if($this->module_info->use_anonymous == 'Y' && Context::get('is_logged')) {
$logged_info = Context::get('logged_info');
$comment = $oCommentModel->getComment($output->get('comment_srl'), $this->grant->manager);
$obj = $comment->getObjectVars();
$obj->member_srl = -1*$logged_info->member_srl;
$obj->email_address = $obj->homepage = $obj->user_id = '';
$obj->user_name = $obj->nick_name = 'anonymous';
$output = executeQuery('comment.updateComment', $obj);
if(!$output->toBool()) return $output;
}
$this->setMessage('success_registed');
$this->add('mid', Context::get('mid'));
$this->add('document_srl', $obj->document_srl);
$this->add('comment_srl', $obj->comment_srl);
}
/**
* @brief 코멘트 삭제
**/
function procBoardDeleteComment() {
// 댓글 번호 확인
$comment_srl = Context::get('comment_srl');
if(!$comment_srl) return $this->doError('msg_invalid_request');
// comment 모듈의 controller 객체 생성
$oCommentController = &getController('comment');
$output = $oCommentController->deleteComment($comment_srl, $this->grant->manager);
if(!$output->toBool()) return $output;
$this->add('mid', Context::get('mid'));
$this->add('page', Context::get('page'));
$this->add('document_srl', $output->get('document_srl'));
$this->setMessage('success_deleted');
}
/**
* @brief 엮인글 삭제
**/
function procBoardDeleteTrackback() {
$trackback_srl = Context::get('trackback_srl');
// trackback module의 controller 객체 생성
$oTrackbackController = &getController('trackback');
$output = $oTrackbackController->deleteTrackback($trackback_srl, $this->grant->manager);
if(!$output->toBool()) return $output;
$this->add('mid', Context::get('mid'));
$this->add('page', Context::get('page'));
$this->add('document_srl', $output->get('document_srl'));
$this->setMessage('success_deleted');
}
/**
* @brief 문서와 댓글의 비밀번호를 확인
**/
function procBoardVerificationPassword() {
// 비밀번호와 문서 번호를 받음
$password = Context::get('password');
$document_srl = Context::get('document_srl');
$comment_srl = Context::get('comment_srl');
$oMemberModel = &getModel('member');
// comment_srl이 있을 경우 댓글이 대상
if($comment_srl) {
// 문서번호에 해당하는 글이 있는지 확인
$oCommentModel = &getModel('comment');
$oComment = $oCommentModel->getComment($comment_srl);
if(!$oComment->isExists()) return new Object(-1, 'msg_invalid_request');
// 문서의 비밀번호와 입력한 비밀번호의 비교
if(!$oMemberModel->isValidPassword($oComment->get('password'),$password)) return new Object(-1, 'msg_invalid_password');
$oComment->setGrant();
} else {
// 문서번호에 해당하는 글이 있는지 확인
$oDocumentModel = &getModel('document');
$oDocument = $oDocumentModel->getDocument($document_srl);
if(!$oDocument->isExists()) return new Object(-1, 'msg_invalid_request');
// 문서의 비밀번호와 입력한 비밀번호의 비교
if(!$oMemberModel->isValidPassword($oDocument->get('password'),$password)) return new Object(-1, 'msg_invalid_password');
$oDocument->setGrant();
}
}
/**
* @brief 아이디 클릭시 나타나는 팝업메뉴에 "작성글 보기" 메뉴를 추가하는 trigger
**/
function triggerMemberMenu(&$obj) {
$member_srl = Context::get('target_srl');
$mid = Context::get('cur_mid');
if(!$member_srl || !$mid) return new Object();
$logged_info = Context::get('logged_info');
// 호출된 모듈의 정보 구함
$oModuleModel = &getModel('module');
$cur_module_info = $oModuleModel->getModuleInfoByMid($mid);
if($cur_module_info->module != 'board') return new Object();
// 자신의 아이디를 클릭한 경우
if($member_srl == $logged_info->member_srl) {
$member_info = $logged_info;
} else {
$oMemberModel = &getModel('member');
$member_info = $oMemberModel->getMemberInfoByMemberSrl($member_srl);
}
if(!$member_info->user_id) return new Object();
// 아이디로 검색기능 추가
$url = getUrl('','mid',$mid,'search_target','user_id','search_keyword',$member_info->user_id);
$oMemberController = &getController('member');
$oMemberController->addMemberPopupMenu($url, 'cmd_view_own_document', './modules/member/tpl/images/icon_view_written.gif');
return new Object();
}
}
?>

View file

@ -1,58 +0,0 @@
<?php
/**
* @class boardModel
* @author zero (zero@nzeo.com)
* @brief board 모듈의 Model class
**/
class boardModel extends module {
/**
* @brief 초기화
**/
function init() {
}
/**
* @brief 목록 설정 값을 가져옴
**/
function getListConfig($module_srl) {
$oModuleModel = &getModel('module');
$oDocumentModel = &getModel('document');
// 저장된 목록 설정값을 구하고 없으면 기본 값으로 설정
$list_config = $oModuleModel->getModulePartConfig('board', $module_srl);
if(!$list_config || !count($list_config)) $list_config = array( 'no', 'title', 'nick_name','regdate','readed_count');
// 사용자 선언 확장변수 구해와서 배열 변환후 return
$inserted_extra_vars = $oDocumentModel->getExtraKeys($module_srl);
foreach($list_config as $key) {
if(preg_match('/^([0-9]+)$/',$key)) $output['extra_vars'.$key] = $inserted_extra_vars[$key];
else $output[$key] = new ExtraItem($module_srl, -1, Context::getLang($key), $key, 'N', 'N', 'N', null);
}
return $output;
}
/**
* @brief 기본 목록 설정값을 return
**/
function getDefaultListConfig($module_srl) {
// 가상번호, 제목, 등록일, 수정일, 닉네임, 아이디, 이름, 조회수, 추천수 추가
$virtual_vars = array( 'no', 'title', 'regdate', 'last_update', 'last_post', 'nick_name', 'user_id', 'user_name', 'readed_count', 'voted_count','thumbnail','summary');
foreach($virtual_vars as $key) {
$extra_vars[$key] = new ExtraItem($module_srl, -1, Context::getLang($key), $key, 'N', 'N', 'N', null);
}
// 사용자 선언 확장변수 정리
$oDocumentModel = &getModel('document');
$inserted_extra_vars = $oDocumentModel->getExtraKeys($module_srl);
if(count($inserted_extra_vars)) foreach($inserted_extra_vars as $obj) $extra_vars['extra_vars'.$obj->idx] = $obj;
return $extra_vars;
}
}
?>

View file

@ -1,44 +0,0 @@
<?php
/**
* @class boardSmartphone
* @author haneul0318 (haneul0318@gmail.com)
* @brief board 모듈의 SmartPhone IPhone class
**/
class boardSPhone extends board {
function procSmartPhone(&$oSmartPhone) {
$oDocumentModel = &getModel('document');
if(!$this->grant->list || $this->module_info->consultation == 'Y') return $oSmartPhone->setContent(Context::getLang('msg_not_permitted'));
$oDocument = Context::get('oDocument');
if($oDocument->isExists()) {
if(Context::get('comment') == 'true' && $oDocument->getCommentCount()) {
Context::set('comment_list', $oDocument->getComments());
$comment_page_navigation = $oDocument->comment_page_navigation;
if($comment_page_navigation) {
if($comment_page_navigation->cur_page > $comment_page_navigation->first_page) $oSmartPhone->setPrevUrl(getUrl('cpage',$comment_page_navigation->cur_page-1));
if($comment_page_navigation->cur_page < $comment_page_navigation->last_page) $oSmartPhone->setNextUrl(getUrl('cpage',$comment_page_navigation->cur_page+1));
}
$oSmartPhone->setParentUrl(getUrl('comment',''));
$tpl_file = 'comment_list';
} else {
$oSmartPhone->setParentUrl(getUrl('document_srl',''));
$tpl_file = 'view_document';
}
} else {
$page_navigation = Context::get('page_navigation');
if($page_navigation) {
if($page_navigation->cur_page > $page_navigation->first_page) $oSmartPhone->setPrevUrl(getUrl('page',$page_navigation->cur_page-1));
if($page_navigation->cur_page < $page_navigation->last_page) $oSmartPhone->setNextUrl(getUrl('page',$page_navigation->cur_page+1));
}
$tpl_file = 'list';
}
$oTemplate = new TemplateHandler();
$content = $oTemplate->compile($this->module_path.'tpl/smartphone', $tpl_file);
$oSmartPhone->setContent($content);
}
}
?>

View file

@ -1,626 +0,0 @@
<?php
/**
* @class boardView
* @author zero (zero@nzeo.com)
* @brief board 모듈의 View class
**/
class boardView extends board {
/**
* @brief 초기화
* board 모듈은 일반 사용과 관리자용으로 나누어진다.\n
**/
function init() {
/**
* 기본 모듈 정보들 설정 (list_count, page_count는 게시판 모듈 전용 정보이고 기본 값에 대한 처리를 )
**/
if($this->module_info->list_count) $this->list_count = $this->module_info->list_count;
if($this->module_info->search_list_count) $this->search_list_count = $this->module_info->search_list_count;
if($this->module_info->page_count) $this->page_count = $this->module_info->page_count;
$this->except_notice = $this->module_info->except_notice == 'N' ? false : true;
/**
* 상담 기능 체크. 현재 게시판의 관리자이면 상담기능을 off시킴
* 현재 사용자가 비로그인 사용자라면 글쓰기/댓글쓰기/목록보기/글보기 권한을 제거함
**/
if($this->module_info->consultation == 'Y' && !$this->grant->manager) {
$this->consultation = true;
if(!Context::get('is_logged')) $this->grant->list = $this->grant->write_document = $this->grant->write_comment = $this->grant->view = false;
} else {
$this->consultation = false;
}
/**
* 스킨 경로를 미리 template_path 라는 변수로 설정함
* 스킨이 존재하지 않는다면 xe_board로 변경
**/
$template_path = sprintf("%sskins/%s/",$this->module_path, $this->module_info->skin);
if(!is_dir($template_path)||!$this->module_info->skin) {
$this->module_info->skin = 'xe_board';
$template_path = sprintf("%sskins/%s/",$this->module_path, $this->module_info->skin);
}
$this->setTemplatePath($template_path);
/**
* 확장 변수 사용시 미리 확장변수의 대상 키들을 가져와서 context set
**/
$oDocumentModel = &getModel('document');
$extra_keys = $oDocumentModel->getExtraKeys($this->module_info->module_srl);
Context::set('extra_keys', $extra_keys);
/**
* 게시판 전반적으로 사용되는 javascript, JS 필터 추가
**/
Context::addJsFilter($this->module_path.'tpl/filter', 'input_password.xml');
Context::addJsFile($this->module_path.'tpl/js/board.js');
}
/**
* @brief 목록 선택된 출력
**/
function dispBoardContent() {
/**
* 목록보기 권한 체크 (모든 권한은 ModuleObject에서 xml 정보와 module_info의 grant 값을 비교하여 미리 설정하여 놓음)
**/
if(!$this->grant->access || !$this->grant->list) return $this->dispBoardMessage('msg_not_permitted');
/**
* 카테고리를 사용하는지 확인후 사용시 카테고리 목록을 구해와서 Context에 세팅
**/
$this->dispBoardCategoryList();
/**
* 목록이 노출될때 같이 나오는 검색 옵션을 정리하여 스킨에서 있도록 context set
* 확장변수에서 검색 선택된 항목이 있으면 역시 추가
**/
// 템플릿에서 사용할 검색옵션 세팅 (검색옵션 key값은 미리 선언되어 있는데 이에 대한 언어별 변경을 함)
foreach($this->search_option as $opt) $search_option[$opt] = Context::getLang($opt);
$extra_keys = Context::get('extra_keys');
if($extra_keys) {
foreach($extra_keys as $key => $val) {
if($val->search == 'Y') $search_option['extra_vars'.$val->idx] = $val->name;
}
}
Context::set('search_option', $search_option);
// 게시글을 가져옴
$this->dispBoardContentView();
// 공지사항 목록을 구해서 context set (공지사항을 매페이지 제일 상단에 위치하기 위해서)
$this->dispBoardNoticeList();
// 목록
$this->dispBoardContentList();
/**
* 사용되는 javascript 필터 추가
**/
Context::addJsFilter($this->module_path.'tpl/filter', 'search.xml');
// template_file을 list.html로 지정
$this->setTemplateFile('list');
}
/**
* @brief 카테고리 항목을 구해와서 스킨에서 사용할 있도록 세팅
**/
function dispBoardCategoryList(){
// 카테고리를 사용할때에만 데이터를 추출
if($this->module_info->use_category=='Y') {
$oDocumentModel = &getModel('document');
Context::set('category_list', $oDocumentModel->getCategoryList($this->module_srl));
}
}
/**
* @brief 선택된 게시글이 있을 경우 글을 가져와서 스킨에서 사용하도록 세팅
**/
function dispBoardContentView(){
// 요청된 변수 값들을 정리
$document_srl = Context::get('document_srl');
$page = Context::get('page');
// document model 객체 생성
$oDocumentModel = &getModel('document');
/**
* 요청된 문서 번호가 있다면 문서를 구함
**/
if($document_srl) {
$oDocument = $oDocumentModel->getDocument($document_srl);
// 해당 문서가 존재할 경우 필요한 처리를 함
if($oDocument->isExists()) {
// 글과 요청된 모듈이 다르다면 오류 표시
if($oDocument->get('module_srl')!=$this->module_info->module_srl ) return $this->stop('msg_invalid_request');
// 관리 권한이 있다면 권한을 부여
if($this->grant->manager) $oDocument->setGrant();
// 상담기능이 사용되고 공지사항이 아니고 사용자의 글도 아니면 무시
if($this->consultation && !$oDocument->isNotice()) {
$logged_info = Context::get('logged_info');
if($oDocument->get('member_srl')!=$logged_info->member_srl) $oDocument = $oDocumentModel->getDocument(0);
}
// 요청된 문서번호의 문서가 없으면 document_srl null 처리 및 경고 메세지 출력
} else {
Context::set('document_srl','',true);
$this->alertMessage('msg_not_founded');
}
/**
* 요청된 문서 번호가 아예 없다면 문서 객체 생성
**/
} else {
$oDocument = $oDocumentModel->getDocument(0);
}
/**
* 보기 권한을 체크해서 권한이 없으면 오류 메세지 출력하도록 처리
**/
if($oDocument->isExists()) {
if(!$this->grant->view && !$oDocument->isGranted()) {
$oDocument = $oDocumentModel->getDocument(0);
Context::set('document_srl','',true);
$this->alertMessage('msg_not_permitted');
} else {
// 브라우저 타이틀에 글의 제목을 추가
Context::addBrowserTitle($oDocument->getTitleText());
// 조회수 증가 (비밀글일 경우 권한 체크)
if(!$oDocument->isSecret() || $oDocument->isGranted()) $oDocument->updateReadedCount();
// 비밀글일때 컨텐츠를 보여주지 말자.
if($oDocument->isSecret() && !$oDocument->isGranted()) $oDocument->add('content',Context::getLang('thisissecret'));
}
}
// 스킨에서 사용할 oDocument 변수 세팅
$oDocument->add('module_srl', $this->module_srl);
Context::set('oDocument', $oDocument);
/**
* 사용되는 javascript 필터 추가
**/
Context::addJsFilter($this->module_path.'tpl/filter', 'insert_comment.xml');
// return new Object();
}
/**
* @brief 선택된 글이 있을 경우 첨부파일에 대한 정보를 API 에서 사용할 있도록 세팅
**/
function dispBoardContentFileList(){
$oDocumentModel = &getModel('document');
$document_srl = Context::get('document_srl');
$oDocument = $oDocumentModel->getDocument($document_srl);
Context::set('file_list',$oDocument->getUploadedFiles());
}
/**
* @brief 선택된 글이 있을 경우 글의 댓글 목록을 API 에서 사용할 있도록 세팅
**/
function dispBoardContentCommentList(){
$oDocumentModel = &getModel('document');
$document_srl = Context::get('document_srl');
$oDocument = $oDocumentModel->getDocument($document_srl);
$comment_list = $oDocument->getComments();
// 비밀글일때 컨텐츠를 보여주지 말자.
foreach($comment_list as $key => $val){
if(!$val->isAccessible()){
$val->add('content',Context::getLang('thisissecret'));
}
}
Context::set('comment_list',$comment_list);
}
/**
* @brief 공지사항이 있을 경우 API에서 사용할 있게 하기 위해서 세팅
**/
function dispBoardNoticeList(){
$oDocumentModel = &getModel('document');
$args->module_srl = $this->module_srl;
$notice_output = $oDocumentModel->getNoticeList($args);
Context::set('notice_list', $notice_output->data);
}
/**
* @brief 게시글 목록
**/
function dispBoardContentList(){
// 만약 목록 보기 권한이 없을 경우 목록을 보여주지 않음
if(!$this->grant->list) {
Context::set('document_list', array());
Context::set('total_count', 0);
Context::set('total_page', 1);
Context::set('page', 1);
Context::set('page_navigation', new PageHandler(0,0,1,10));
return;
}
$oDocumentModel = &getModel('document');
// 목록을 구하기 위한 대상 모듈/ 페이지 수/ 목록 수/ 페이지 목록 수에 대한 옵션 설정
$args->module_srl = $this->module_srl;
$args->page = Context::get('page');
$args->list_count = $this->list_count;
$args->page_count = $this->page_count;
// 검색과 정렬을 위한 변수 설정
$args->search_target = Context::get('search_target');
$args->search_keyword = Context::get('search_keyword');
// 카테고리를 사용한다면 카테고리 값을 받음
if($this->module_info->use_category=='Y') $args->category_srl = Context::get('category'); ///< 카테고리 사용시 선택된 카테고리
// 지정된 정렬값이 없다면 스킨에서 설정한 정렬 값을 이용함
$args->sort_index = Context::get('sort_index');
$args->order_type = Context::get('order_type');
if(!in_array($args->sort_index, $this->order_target)) $args->sort_index = $this->module_info->order_target?$this->module_info->order_target:'list_order';
if(!in_array($args->order_type, array('asc','desc'))) $args->order_type = $this->module_info->order_type?$this->module_info->order_type:'asc';
// 특정 문서의 permalink로 직접 접속할 경우 page값을 직접 구함
$_get = $_GET;
if(count($_get)==2) unset($_get['mid']);
if(count($_get)==1 && ($_GET['document_srl'] || $_GET['entry'])) {
$oDocument = $oDocumentModel->getDocument(Context::get('document_srl'));
if($oDocument->isExists() && !$oDocument->isNotice()) {
$page = $oDocumentModel->getDocumentPage($oDocument, $args);
Context::set('page', $page);
$args->page = $page;
}
}
// 만약 카테고리가 있거나 검색어가 있으면list_count를 search_list_count 로 이용
if($args->category_srl || $args->search_keyword) $args->list_count = $this->search_list_count;
// 상담 기능이 on되어 있으면 현재 로그인 사용자의 글만 나타나도록 옵션 변경
if($this->consultation) {
$logged_info = Context::get('logged_info');
$args->member_srl = $logged_info->member_srl;
}
// 일반 글을 구해서 context set
$output = $oDocumentModel->getDocumentList($args, $this->except_notice);
Context::set('document_list', $output->data);
Context::set('total_count', $output->total_count);
Context::set('total_page', $output->total_page);
Context::set('page', $output->page);
Context::set('page_navigation', $output->page_navigation);
// 목록 설정값을 세팅
$oBoardModel = &getModel('board');
Context::set('list_config', $oBoardModel->getListConfig($this->module_info->module_srl));
}
/**
* @brief 태그 목록 모두 보기
**/
function dispBoardTagList() {
// 만약 목록 보기 권한조치 없을 경우 태그 목록도 보여주지 않음
if(!$this->grant->list) return $this->dispBoardMessage('msg_not_permitted');
// 태그 모델 객체에서 태그 목록을 구해옴
$oTagModel = &getModel('tag');
$obj->mid = $this->module_info->mid;
$obj->list_count = 10000;
$output = $oTagModel->getTagList($obj);
// 내용을 랜덤으로 정렬
if(count($output->data)) {
$numbers = array_keys($output->data);
shuffle($numbers);
if(count($output->data)) {
foreach($numbers as $k => $v) {
$tag_list[] = $output->data[$v];
}
}
}
Context::set('tag_list', $tag_list);
$this->setTemplateFile('tag_list');
}
/**
* @brief 작성 화면 출력
**/
function dispBoardWrite() {
// 권한 체크
if(!$this->grant->write_document) return $this->dispBoardMessage('msg_not_permitted');
$oDocumentModel = &getModel('document');
/**
* 카테고리를 사용하는지 확인후 사용시 카테고리 목록을 구해와서 Context에 세팅, 권한도 함께 체크
**/
if($this->module_info->use_category=='Y') {
// 로그인한 사용자의 그룹 정보를 구함
if(Context::get('is_logged')) {
$logged_info = Context::get('logged_info');
$group_srls = array_keys($logged_info->group_list);
} else {
$group_srls = array();
}
$group_srls_count = count($group_srls);
// 카테고리 목록을 구하고 권한을 체크
$normal_category_list = $oDocumentModel->getCategoryList($this->module_srl);
if(count($normal_category_list)) {
foreach($normal_category_list as $category_srl => $category) {
$is_granted = true;
if($category->group_srls) {
$category_group_srls = explode(',',$category->group_srls);
$is_granted = false;
if(count(array_intersect($group_srls, $category_group_srls))) $is_granted = true;
}
if($is_granted) $category_list[$category_srl] = $category;
}
}
Context::set('category_list', $category_list);
}
// GET parameter에서 document_srl을 가져옴
$document_srl = Context::get('document_srl');
$oDocument = $oDocumentModel->getDocument(0, $this->grant->manager);
$oDocument->setDocument($document_srl);
$oDocument->add('module_srl', $this->module_srl);
// 글을 수정하려고 할 경우 권한이 없는 경우 비밀번호 입력화면으로
if($oDocument->isExists()&&!$oDocument->isGranted()) return $this->setTemplateFile('input_password_form');
if(!$oDocument->isExists()) {
$oModuleModel = &getModel('module');
$point_config = $oModuleModel->getModulePartConfig('point',$this->module_srl);
$logged_info = Context::get('logged_info');
$oPointModel = &getModel('point');
$pointForInsert = $point_config["insert_document"];
if($pointForInsert < 0) {
if( !$logged_info ) return $this->dispBoardMessage('msg_not_permitted');
else if (($oPointModel->getPoint($logged_info->member_srl) + $pointForInsert )< 0 ) return $this->dispBoardMessage('msg_not_enough_point');
}
}
Context::set('document_srl',$document_srl);
Context::set('oDocument', $oDocument);
// 확장변수처리를 위해 xml_js_filter를 직접 header에 적용
$oDocumentController = &getController('document');
$oDocumentController->addXmlJsFilter($this->module_info->module_srl);
// 존재하는 글이면 확장변수 값을 context set
if($oDocument->isExists()) Context::set('extra_keys', $oDocument->getExtraVars());
/**
* 사용되는 javascript 필터 추가
**/
Context::addJsFilter($this->module_path.'tpl/filter', 'insert.xml');
$this->setTemplateFile('write_form');
}
/**
* @brief 문서 삭제 화면 출력
**/
function dispBoardDelete() {
// 권한 체크
if(!$this->grant->write_document) return $this->dispBoardMessage('msg_not_permitted');
// 삭제할 문서번호를 가져온다
$document_srl = Context::get('document_srl');
// 지정된 글이 있는지 확인
if($document_srl) {
$oDocumentModel = &getModel('document');
$oDocument = $oDocumentModel->getDocument($document_srl);
}
// 삭제하려는 글이 없으면 에러
if(!$oDocument->isExists()) return $this->dispBoardContent();
// 권한이 없는 경우 비밀번호 입력화면으로
if(!$oDocument->isGranted()) return $this->setTemplateFile('input_password_form');
Context::set('oDocument',$oDocument);
/**
* 필요한 필터 추가
**/
Context::addJsFilter($this->module_path.'tpl/filter', 'delete_document.xml');
$this->setTemplateFile('delete_form');
}
/**
* @brief 댓글의 답글 화면 출력
**/
function dispBoardWriteComment() {
$document_srl = Context::get('document_srl');
// 권한 체크
if(!$this->grant->write_comment) return $this->dispBoardMessage('msg_not_permitted');
// 원본글을 구함
$oDocumentModel = &getModel('document');
$oDocument = $oDocumentModel->getDocument($document_srl);
if(!$oDocument->isExists()) return $this->dispBoardMessage('msg_invalid_request');
// 해당 댓글를 찾아본다 (comment_form을 같이 쓰기 위해서 빈 객체 생성)
$oCommentModel = &getModel('comment');
$oSourceComment = $oComment = $oCommentModel->getComment(0);
$oComment->add('document_srl', $document_srl);
$oComment->add('module_srl', $this->module_srl);
// 필요한 정보들 세팅
Context::set('oDocument',$oDocument);
Context::set('oSourceComment',$oSourceComment);
Context::set('oComment',$oComment);
/**
* 필요한 필터 추가
**/
Context::addJsFilter($this->module_path.'tpl/filter', 'insert_comment.xml');
$this->setTemplateFile('comment_form');
}
/**
* @brief 댓글의 답글 화면 출력
**/
function dispBoardReplyComment() {
// 권한 체크
if(!$this->grant->write_comment) return $this->dispBoardMessage('msg_not_permitted');
// 목록 구현에 필요한 변수들을 가져온다
$parent_srl = Context::get('comment_srl');
// 지정된 원 댓글이 없다면 오류
if(!$parent_srl) return new Object(-1, 'msg_invalid_request');
// 해당 댓글를 찾아본다
$oCommentModel = &getModel('comment');
$oSourceComment = $oCommentModel->getComment($parent_srl, $this->grant->manager);
// 댓글이 없다면 오류
if(!$oSourceComment->isExists()) return $this->dispBoardMessage('msg_invalid_request');
if(Context::get('document_srl') && $oSourceComment->get('document_srl') != Context::get('document_srl')) return $this->dispBoardMessage('msg_invalid_request');
// 대상 댓글을 생성
$oComment = $oCommentModel->getComment();
$oComment->add('parent_srl', $parent_srl);
$oComment->add('document_srl', $oSourceComment->get('document_srl'));
// 필요한 정보들 세팅
Context::set('oSourceComment',$oSourceComment);
Context::set('oComment',$oComment);
Context::set('module_srl',$this->module_info->module_srl);
/**
* 사용되는 javascript 필터 추가
**/
Context::addJsFilter($this->module_path.'tpl/filter', 'insert_comment.xml');
$this->setTemplateFile('comment_form');
}
/**
* @brief 댓글 수정 출력
**/
function dispBoardModifyComment() {
// 권한 체크
if(!$this->grant->write_comment) return $this->dispBoardMessage('msg_not_permitted');
// 목록 구현에 필요한 변수들을 가져온다
$document_srl = Context::get('document_srl');
$comment_srl = Context::get('comment_srl');
// 지정된 댓글이 없다면 오류
if(!$comment_srl) return new Object(-1, 'msg_invalid_request');
// 해당 댓글를 찾아본다
$oCommentModel = &getModel('comment');
$oComment = $oCommentModel->getComment($comment_srl, $this->grant->manager);
// 댓글이 없다면 오류
if(!$oComment->isExists()) return $this->dispBoardMessage('msg_invalid_request');
// 글을 수정하려고 할 경우 권한이 없는 경우 비밀번호 입력화면으로
if(!$oComment->isGranted()) return $this->setTemplateFile('input_password_form');
// 필요한 정보들 세팅
Context::set('oSourceComment', $oCommentModel->getComment());
Context::set('oComment', $oComment);
/**
* 사용되는 javascript 필터 추가
**/
Context::addJsFilter($this->module_path.'tpl/filter', 'insert_comment.xml');
$this->setTemplateFile('comment_form');
}
/**
* @brief 댓글 삭제 화면 출력
**/
function dispBoardDeleteComment() {
// 권한 체크
if(!$this->grant->write_comment) return $this->dispBoardMessage('msg_not_permitted');
// 삭제할 댓글번호를 가져온다
$comment_srl = Context::get('comment_srl');
// 삭제하려는 댓글이 있는지 확인
if($comment_srl) {
$oCommentModel = &getModel('comment');
$oComment = $oCommentModel->getComment($comment_srl, $this->grant->manager);
}
// 삭제하려는 글이 없으면 에러
if(!$oComment->isExists() ) return $this->dispBoardContent();
// 권한이 없는 경우 비밀번호 입력화면으로
if(!$oComment->isGranted()) return $this->setTemplateFile('input_password_form');
Context::set('oComment',$oComment);
/**
* 필요한 필터 추가
**/
Context::addJsFilter($this->module_path.'tpl/filter', 'delete_comment.xml');
$this->setTemplateFile('delete_comment_form');
}
/**
* @brief 엮인글 삭제 화면 출력
**/
function dispBoardDeleteTrackback() {
// 삭제할 댓글번호를 가져온다
$trackback_srl = Context::get('trackback_srl');
// 삭제하려는 댓글가 있는지 확인
$oTrackbackModel = &getModel('trackback');
$output = $oTrackbackModel->getTrackback($trackback_srl);
$trackback = $output->data;
// 삭제하려는 글이 없으면 에러
if(!$trackback) return $this->dispBoardContent();
Context::set('trackback',$trackback);
/**
* 필요한 필터 추가
**/
Context::addJsFilter($this->module_path.'tpl/filter', 'delete_trackback.xml');
$this->setTemplateFile('delete_trackback_form');
}
/**
* @brief 메세지 출력
**/
function dispBoardMessage($msg_code) {
$msg = Context::getLang($msg_code);
if(!$msg) $msg = $msg_code;
Context::set('message', $msg);
$this->setTemplateFile('message');
}
/**
* @brief 오류메세지를 system alert로 출력하는 method
* 특별한 오류를 알려주어야 하는데 별도의 디자인까지는 필요 없을 경우 페이지를 모두 그린후에
* 오류를 출력하도록
**/
function alertMessage($message) {
$script = sprintf('<script type="text/javascript"> xAddEventListener(window,"load", function() { alert("%s"); } );</script>', Context::getLang($message));
Context::addHtmlHeader( $script );
}
}
?>

View file

@ -1,115 +0,0 @@
<?php
/**
* @class boardWAP
* @author zero (zero@nzeo.com)
* @brief board 모듈의 WAP class
**/
class boardWAP extends board {
/**
* @brief wap procedure method
**/
function procWAP(&$oMobile) {
// 권한 체크
if(!$this->grant->list || $this->module_info->consultation == 'Y') return $oMobile->setContent(Context::getLang('msg_not_permitted'));
// document model 객체 생성
$oDocumentModel = &getModel('document');
// 선택된 게시글이 있을 경우
$document_srl = Context::get('document_srl');
if($document_srl) {
$oDocument = $oDocumentModel->getDocument($document_srl);
if($oDocument->isExists()) {
// 권한 확인
if(!$this->grant->view) return $oMobile->setContent(Context::getLang('msg_not_permitted'));
// 글 제목 설정
Context::setBrowserTitle($oDocument->getTitleText());
// 댓글 보기 일 경우
if($this->act=='dispBoardContentCommentList') {
$oCommentModel = &getModel('comment');
$output = $oCommentModel->getCommentList($oDocument->document_srl, 0, false, $oDocument->getCommentCount());
$content = '';
if(count($output->data)) {
foreach($output->data as $key => $val){
$oComment = new commentItem();
$oComment->setAttribute($val);
if(!$oComment->isAccessible()) continue;
$content .= "<b>".$oComment->getNickName()."</b> (".$oComment->getRegdate("Y-m-d").")<br>\r\n".$oComment->getContent(false,false)."<br>\r\n";
}
}
// 내용 설정
$oMobile->setContent( $content );
// 상위 페이지를 목록으로 돌아가기로 지정
$oMobile->setUpperUrl( getUrl('act',''), Context::getLang('cmd_go_upper') );
// 댓글 보기가 아니면 글 보여줌
} else {
// 내용 지정 (태그를 모두 제거한 내용을 설정)
$content = strip_tags(str_replace('<p>','<br>&nbsp;&nbsp;&nbsp;',$oDocument->getContent(false,false,false)),'<br><b><i><u><em><small><strong><big>');
// 내용 상단에 정보 출력 (댓글 보기 링크 포함)
$content = Context::getLang('replies').' : <a href="'.getUrl('act','dispBoardContentCommentList').'">'.$oDocument->getCommentCount().'</a><br>'."\r\n".$content;
$content = '<b>'.$oDocument->getNickName().'</b> ('.$oDocument->getRegdate("Y-m-d").")<br>\r\n".$content;
// 내용 설정
$oMobile->setContent( $content );
// 상위 페이지를 목록으로 돌아가기로 지정
$oMobile->setUpperUrl( getUrl('document_srl',''), Context::getLang('cmd_list') );
}
return;
}
}
// 게시글 목록
$args->module_srl = $this->module_srl;
$args->page = Context::get('page');;
$args->list_count = 9;
$args->sort_index = $this->module_info->order_target?$this->module_info->order_target:'list_order';
$args->order_type = $this->module_info->order_type?$this->module_info->order_type:'asc';
$output = $oDocumentModel->getDocumentList($args, $this->except_notice);
$document_list = $output->data;
$page_navigation = $output->page_navigation;
$childs = array();
if($document_list && count($document_list)) {
foreach($document_list as $key => $val) {
$href = getUrl('mid',$_GET['mid'],'document_srl',$val->document_srl);
$obj = null;
$obj['href'] = $val->getPermanentUrl();
$title = htmlspecialchars($val->getTitleText());
if($val->getCommentCount()) $title .= ' ['.$val->getCommentCount().']';
$obj['link'] = $obj['text'] = '['.$val->getNickName().'] '.$title;
$childs[] = $obj;
}
$oMobile->setChilds($childs);
}
$totalPage = $page_navigation->last_page;
$page = (int)Context::get('page');
if(!$page) $page = 1;
// next/prevUrl 지정
if($page>1) $oMobile->setPrevUrl(getUrl('mid',$_GET['mid'],'page',$page-1), sprintf('%s (%d/%d)', Context::getLang('cmd_prev'), $page-1, $totalPage));
if($page<$totalPage) $oMobile->setNextUrl(getUrl('mid',$_GET['mid'],'page',$page+1), sprintf('%s (%d/%d)', Context::getLang('cmd_next'), $page+1, $totalPage));
$oMobile->mobilePage = $page;
$oMobile->totalPage = $totalPage;
}
}
?>

View file

@ -1,30 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<module version="0.2">
<title xml:lang="ko">게시판</title>
<title xml:lang="zh-CN">版面管理</title>
<title xml:lang="en">Board</title>
<title xml:lang="es">Tablero</title>
<title xml:lang="jp">掲示板</title>
<title xml:lang="ru">Форум</title>
<title xml:lang="zh-TW">討論板</title>
<description xml:lang="ko">게시판의 기능을 담당하는 모듈. 게시판의 생성/추가 관리등의 관리자 기능도 포함합니다.</description>
<description xml:lang="zh-CN">给用户提供相应版面功能,将包含版面的生成/添加及版面管理等管理员功能。</description>
<description xml:lang="en">Module in charge of function of the board. Also includes administrator functions such as creating/managing boards.</description>
<description xml:lang="es">Módulo para la función del tablero. Incluye funciones de administración como crear/ agregar o el manejo de los tableros.</description>
<description xml:lang="jp">掲示板の機能を担うモジュールです。掲示板の生成・追加・管理などの管理者機能も含まれています。</description>
<description xml:lang="ru">Модуль для функционирования форума. Также включает в себя функции администратора такие как создание/управление форумами.</description>
<description xml:lang="zh-TW">提供用戶相對應的討論板功能,包含建立/新增及管理等功能。</description>
<version>0.1</version>
<date>2007-02-28</date>
<category>service</category>
<author email_address="zero@zeroboard.com" link="http://blog.nzeo.com">
<name xml:lang="ko">zero</name>
<name xml:lang="zh-CN">zero</name>
<name xml:lang="en">zero</name>
<name xml:lang="es">zero</name>
<name xml:lang="jp">zero</name>
<name xml:lang="ru">zero</name>
<name xml:lang="zh-TW">zero</name>
</author>
</module>

View file

@ -1,92 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<module>
<grants>
<grant name="list" default="guest">
<title xml:lang="ko">목록</title>
<title xml:lang="zh-CN">目录</title>
<title xml:lang="jp">リスト</title>
<title xml:lang="en">list</title>
<title xml:lang="es">Lista</title>
<title xml:lang="zh-TW">列表</title>
</grant>
<grant name="view" default="guest">
<title xml:lang="ko">열람</title>
<title xml:lang="zh-CN">查看</title>
<title xml:lang="jp">閲覧</title>
<title xml:lang="en">view</title>
<title xml:lang="es">Opinión</title>
<title xml:lang="zh-TW">檢視</title>
</grant>
<grant name="write_document" default="guest">
<title xml:lang="ko">글 작성</title>
<title xml:lang="zh-CN">发表新主题</title>
<title xml:lang="jp">書き込み作成</title>
<title xml:lang="en">write document</title>
<title xml:lang="es">Escribir el documento</title>
<title xml:lang="zh-TW">發表主題</title>
</grant>
<grant name="write_comment" default="guest">
<title xml:lang="ko">댓글 작성</title>
<title xml:lang="zh-CN">发表评论</title>
<title xml:lang="jp">コメント作成</title>
<title xml:lang="en">write comment</title>
<title xml:lang="es">Escribir comentario</title>
<title xml:lang="zh-TW">發表評論</title>
</grant>
</grants>
<permissions>
<permission action="dispBoardAdminInsertBoard" target="manager" />
<permission action="dispBoardAdminBoardInfo" target="manager" />
<permission action="dispBoardAdminExtraVars" target="manager" />
<permission action="dispBoardAdminBoardAdditionSetup" target="manager" />
<permission action="dispBoardAdminSkinInfo" target="manager" />
<permission action="dispBoardAdminListSetup" target="manager" />
<permission action="procBoardAdminInsertBoard" target="manager" />
<permission action="procBoardAdminInsertListConfig" target="manager" />
</permissions>
<actions>
<action name="dispBoardContent" type="view" index="true" />
<action name="dispBoardNoticeList" type="view" />
<action name="dispBoardContentList" type="view" />
<action name="dispBoardContentView" type="view" />
<action name="dispBoardCatogoryList" type="view" />
<action name="dispBoardContentCommentList" type="view" />
<action name="dispBoardContentFileList" type="view" />
<action name="dispBoardTagList" type="view" />
<action name="dispBoardWrite" type="view" />
<action name="dispBoardDelete" type="view" />
<action name="dispBoardWriteComment" type="view" />
<action name="dispBoardReplyComment" type="view" />
<action name="dispBoardModifyComment" type="view" />
<action name="dispBoardDeleteComment" type="view" />
<action name="dispBoardDeleteTrackback" type="view" />
<action name="dispBoardMessage" type="view" />
<action name="procBoardInsertDocument" type="controller" />
<action name="procBoardDeleteDocument" type="controller" />
<action name="procBoardVoteDocument" type="controller" />
<action name="procBoardInsertComment" type="controller" />
<action name="procBoardDeleteComment" type="controller" />
<action name="procBoardDeleteTrackback" type="controller" />
<action name="procBoardVerificationPassword" type="controller" />
<action name="procBoardDeleteFile" type="controller" />
<action name="procBoardUploadFile" type="controller" />
<action name="procBoardDownloadFile" type="controller" />
<action name="dispBoardAdminContent" type="view" standalone="true" admin_index="true" />
<action name="dispBoardAdminBoardInfo" type="view" standalone="true" />
<action name="dispBoardAdminExtraVars" type="view" standalone="true" />
<action name="dispBoardAdminBoardAdditionSetup" type="view" standalone="true" />
<action name="dispBoardAdminInsertBoard" type="view" standalone="true" setup_index="true" />
<action name="dispBoardAdminDeleteBoard" type="view" standalone="true" />
<action name="dispBoardAdminSkinInfo" type="view" standalone="true" />
<action name="dispBoardAdminGrantInfo" type="view" standalone="true" />
<action name="dispBoardAdminListSetup" type="view" standalone="true" />
<action name="dispBoardAdminCategoryInfo" type="view" />
<action name="procBoardAdminInsertBoard" type="controller" standalone="true" />
<action name="procBoardAdminDeleteBoard" type="controller" standalone="true" />
<action name="procBoardAdminInsertListConfig" type="controller" standalone="true" />
</actions>
</module>

View file

@ -1,45 +0,0 @@
<?php
/**
* @file en.lang.php
* @author zero (zero@nzeo.com)
* @brief board modules's basic language pack
**/
$lang->board = 'Board';
$lang->except_notice = 'Exclude Notices';
$lang->use_anonymous = 'Use Anonymous';
$lang->cmd_manage_menu = 'Manage Menus';
$lang->list_target_item = 'Target Item';
$lang->list_display_item = 'Display Item';
$lang->summary = 'Summary';
$lang->thumbnail = 'Thumbnail';
$lang->last_post = 'Last post';
// Item
$lang->search_result = 'Search Result';
$lang->consultation = 'Consultation';
$lang->secret = 'Secret';
$lang->thisissecret = 'This is a secret article.';
$lang->admin_mail = "Administrator's Mail";
// words used in button
$lang->cmd_board_list = 'Boards List';
$lang->cmd_module_config = 'Common Board Setting';
$lang->cmd_view_info = 'Board Info';
$lang->cmd_list_setting = 'List Setting';
// blah blah..
$lang->about_layout_setup = 'You can manually modify board layout code. Insert or manage the widget code anywhere you want';
$lang->about_board_category = 'You can make board categories.<br />When board category is broken, try rebuilding the cache file manually.';
$lang->about_except_notice = 'Notice articles will not be displayed on normal list.';
$lang->about_use_anonymous = 'Make a board into anonymous board by hiding the author\'s information.';
$lang->about_board = 'This module is for creating and managing boards.';
$lang->about_consultation = "Non-administrator members would see their own articles.\nNon-members would not be able to write articles when using consultation.";
$lang->about_secret = 'Users will be able to write secret articles or comments.';
$lang->about_admin_mail = 'A mail will be sent when an article or comment is submitted.<br />Multiple mails can be sent with commas(,).';
$lang->about_list_config = 'If using list-style skin, you may arrange items to display.<br />However, this feature might not be availble for non-official skins.<br />If you double-click target items and display items, then you can add / remove them';
$lang->msg_not_enough_point = 'Your point is not enough to write an article in this board.';
?>

View file

@ -1,47 +0,0 @@
<?php
/**
* @archivo es.lang.php
* @autor zero (zero@nzeo.com)
* @sumario Paquete del idioma español para el Módulo de Teblero
**/
$lang->board = 'Tablero';
$lang->except_notice = 'Excluir Avisos';
$lang->use_anonymous = '익명 사용';
$lang->cmd_manage_menu = 'Manejo del menú';
$lang->list_target_item = 'Target Item';
$lang->list_display_item = 'Display Item';
$lang->summary = '요약';
$lang->thumbnail = '썸네일';
$lang->last_post = '최종 글';
$lang->cmd_remake_cache = 'Rehacer archivo caché';
$lang->cmd_layout_setup = 'Configuración del diseño';
$lang->cmd_layout_edit = 'Editar el diseño';
// Artículos
$lang->consultation = 'Funciones de asesoramiento';
$lang->search_result = 'Resultado de la búsqueda';
$lang->secret = 'Características Bimilgeul';
$lang->thisissecret = 'Es bimilgeul.';
$lang->admin_mail = 'Administrador de Correo';
// Palabras utilizadas en los botones
$lang->cmd_board_list = 'Lista del tableros';
$lang->cmd_module_config = 'Configuración común del Tablero';
$lang->cmd_view_info = 'Información del Tablero';
$lang->cmd_list_setting = 'List Setting';
// bla bla...
$lang->about_layout_setup = 'Puede modificar manualmente el código del diseño de tableros. Insertar o modificar el código de widget.';
$lang->about_board_category = 'Puede crear las categorias de tableros.<br />Cuando no funciona la categoría de tableros, rehacer el archivo caché manualmente para solucionar.';
$lang->about_except_notice = 'Aviso de los artículos no se mostrará en la lista normal.';
$lang->about_use_anonymous = '글쓴이의 정보를 없애고 익명으로 게시판 사용을 할 수 있게 합니다. 스킨설정에서 글쓰인 정보등을 보이지 않도록 하시면 더욱 유용합니다';
$lang->about_board = 'Este módulo es para crear y manejar los tableros.';
$lang->about_consultation = "No administrador de los miembros que consideran que su propia artocles. \ NNon miembros no serían capaces de escribir artículos al utilizar la consulta.";
$lang->about_secret = 'Boletín y los comentarios de bimilgeul utilizar.';
$lang->about_admin_mail = 'Comentarios por e-mail registrado geulyina cuando la inscripción se enviará a <br />, (coma) como una conexión, puede enviar a varios e-mail.';
$lang->about_list_config = 'Boletín de la lista, utilice el tipo de elemento que desee, puede colocar. <br /> Si no está sólo apoyada por la piel no puede ser apoyada <br /> meta de entrada y mostrar el tema cuando hace doble clic en la entrada en Agregar o quitar es.';
$lang->msg_not_enough_point = 'Your point is not enough to write an article in this board.';
?>

View file

@ -1,44 +0,0 @@
<?php
/**
* @file modules/board/lang/fr.lang.php
* @author Traduit par Pierre Duvent(PierreDuvent@gamil.com)
* @brief Paquet du langage en français pour le module de Panneau d'Affichage
**/
$lang->board = 'Panneau';
$lang->except_notice = 'Exclure des Notices';
$lang->use_anonymous = '익명 사용';
$lang->cmd_manage_menu = 'Administration de Menu';
$lang->list_target_item = 'Target Item';
$lang->list_display_item = 'Display Item';
$lang->summary = '요약';
$lang->thumbnail = '썸네일';
$lang->last_post = '최종 글';
// Item
$lang->search_result = 'Résultat de la Recherche';
$lang->consultation = 'Consultation';
$lang->secret = '비밀글 기능';
$lang->thisissecret = '비밀글입니다.';
$lang->admin_mail = 'Mél de l\'administrateur';
// Mots utilisés en bouton
$lang->cmd_board_list = 'Liste des Panneaux';
$lang->cmd_module_config = 'Configuration commun pour les Panneaux';
$lang->cmd_view_info = 'Information des Panneaux';
$lang->cmd_list_setting = 'List Setting';
// murmure..
$lang->about_layout_setup = 'Vous pouvez manuellement modifier le code de Mise en Page du blogue. Insérez ou administrez le code de Gadget n\'importe où vous voulez.';
$lang->about_board_category = 'Vous pouvez créer des catégories de Panneau d\'Affichage. Quand la catégorie d\'affichage est cassé, essayez manuellement rétablir l\'antémémoire du fichier.';
$lang->about_except_notice = "Le titre de Notice dont l'article se représentera toujours en tête de la liste ne sera exposé sur la liste générale.";
$lang->about_use_anonymous = '글쓴이의 정보를 없애고 익명으로 게시판 사용을 할 수 있게 합니다. 스킨설정에서 글쓰인 정보등을 보이지 않도록 하시면 더욱 유용합니다';
$lang->about_board = 'Ce module se sert à créer et à administrer des Panneaux d\'Affichage.';
$lang->about_consultation = "Les membres non-administratifs verront seulement les ariticles d\'eux-même.\nNon-membres ne pourraient pas écrire des articles quand la Consultation est appliqué.";
$lang->about_secret = '게시판 및 댓글의 비밀글 사용할 수 있도록 합니다.';
$lang->about_admin_mail = 'Un message éléctronique sera envoyé à l\'adresse inscrite quand un article ou commentaire se soumet. <br />On peut inscrire multiple adresses délimité par les virgules.';
$lang->about_list_config = '게시판의 목록형식 사용시 원하는 항목들로 배치를 할 수 있습니다.<br />단 스킨에서 지원하지 않는 경우 지원되지 않을 수 있습니다<br />대상항목/ 표시항목의 항목을 더블클릭하면 추가/ 제거가 됩니다.';
$lang->msg_not_enough_point = 'Your point is not enough to write an article in this board.';
?>

View file

@ -1,44 +0,0 @@
<?php
/**
* @file modules/board/lang/jp.lang.php
* @author zero (zero@nzeo.com) 翻訳RisaPapa、ミニミ // 細かい修正liahona
* @brief 掲示板(board)モジュールの基本言語パッケージ
**/
$lang->board = '掲示板';
$lang->except_notice = 'お知らせの非表示機能';
$lang->use_anonymous = '匿名機能を使う';
$lang->cmd_manage_menu = 'メニュー管理';
$lang->list_target_item = 'ターゲットアイテム';
$lang->list_display_item = '表示アイテム';
$lang->summary = '요약';
$lang->thumbnail = '썸네일';
$lang->last_post = '최종 글';
// 項目
$lang->search_result = '検索結果';
$lang->consultation = '相談機能';
$lang->secret = '非公開文機能';
$lang->thisissecret = '非公開文です。';
$lang->admin_mail = '管理者メールアドレス';
// ボタンに使用する用語
$lang->cmd_board_list = '掲示板リスト';
$lang->cmd_module_config = '掲示板共通設定';
$lang->cmd_view_info = '掲示板情報';
$lang->cmd_list_setting = 'リストの設定';
// その他
$lang->about_layout_setup = 'ブログのレイアウトのコードを直接修正します。ウィジェットコードを好きなところに入力、又は管理して下さい。';
$lang->about_board_category = 'ブログのカテゴリを作成します。<br />ブログのカテゴリが誤作動する場合、「キャッシュファイルの再生性」を手動で行うことで解決出来ます。';
$lang->about_except_notice = 'リストの上段に常に表示されるお知らせの書き込みを一般リストからお知らせの書き込みが表示されないようにします。';
$lang->about_use_anonymous = '匿名掲示板として活用出来ます。スキン設定で登録者の情報を表示しないに設定をお勧めします。';
$lang->about_board = '掲示板の生成、および管理するモジュールです。';
$lang->about_consultation = "相談機能とは、管理権限のない会員に本人の書き込みだけを表示する機能です。\n但し、相談機能を使用する際は、非会員の書き込みは自動的に禁止されます。";
$lang->about_secret = '掲示板およびコメントの非公開文を登録出来るようにします。';
$lang->about_admin_mail = '書き込みやコメントが掲載される時、登録メールアドレス宛にメールが送信されます。<br /> 複数のメールアドレスへ送信する場合は「,」(半額コンマ)区切りで登録して下さい。';
$lang->about_list_config = '掲示板スタイルが「リスト型」の場合、好きな列の項目配置が出来ます。<br />ただし、スキンによってこの機能をサポートしない場合もあります。<br />ターゲットアイテム/表示アイテムをダブルクリックすると追加・削除が出来ます。';
$lang->msg_not_enough_point = '書き込みするためのポイントが足りません。';
?>

View file

@ -1,43 +0,0 @@
<?php
/**
* @file ko.lang.php
* @author zero (zero@nzeo.com)
* @brief 게시판(board) 모듈의 기본 언어팩
**/
$lang->board = '게시판';
$lang->except_notice = '공지사항 제외';
$lang->use_anonymous = '익명 사용';
$lang->cmd_manage_menu = '메뉴관리';
$lang->list_target_item = '대상 항목';
$lang->list_display_item = '표시 항목';
$lang->summary = '요약';
$lang->thumbnail = '썸네일';
$lang->last_post = '최종 글';
// 항목
$lang->search_result = '검색결과';
$lang->consultation = '상담 기능';
$lang->secret = '비밀글 기능';
$lang->thisissecret = '비밀글입니다.';
$lang->admin_mail = '관리자 메일';
// 버튼에 사용되는 언어
$lang->cmd_board_list = '게시판 목록';
$lang->cmd_module_config = '게시판 공통 설정';
$lang->cmd_view_info = '게시판 정보';
$lang->cmd_list_setting = '목록설정';
// 주절 주절..
$lang->about_layout_setup = '블로그의 레이아웃 코드를 직접 수정할 수 있습니다. 위젯 코드를 원하는 곳에 삽입하시거나 관리하세요';
$lang->about_board_category = '분류를 만드실 수 있습니다.<br />분류가 오동작을 할 경우 캐시파일 재생성을 수동으로 해주시면 해결이 될 수 있습니다.';
$lang->about_except_notice = '목록 상단에 늘 나타나는 공지사항을 일반 목록에서 공지사항을 출력하지 않도록 합니다.';
$lang->about_use_anonymous = '글쓴이의 정보를 없애고 익명으로 게시판 사용을 할 수 있게 합니다. 스킨설정에서 글쓴이 정보등을 보이지 않도록 하시면 더욱 유용합니다.';
$lang->about_board = '게시판을 생성하고 관리할 수 있는 게시판 모듈입니다.';
$lang->about_consultation = "상담 기능은 관리권한이 없는 회원은 자신이 쓴 글만 보이도록 하는 기능입니다\n단 상담기능 사용시 비회원 글쓰기는 자동으로 금지됩니다.";
$lang->about_secret = '게시판 및 댓글의 비밀글 사용할 수 있도록 합니다.';
$lang->about_admin_mail = '글이나 댓글이 등록될때 등록된 메일주소로 메일이 발송됩니다<br /> ,(콤마)로 연결시 다수의 메일주소로 발송할 수 있습니다.';
$lang->about_list_config = '게시판의 목록형식 사용시 원하는 항목들로 배치를 할 수 있습니다.<br />단 스킨에서 지원하지 않는 경우 지원되지 않을 수 있습니다<br />대상항목/ 표시항목의 항목을 더블클릭하면 추가/ 제거가 됩니다.';
$lang->msg_not_enough_point = '포인트가 부족합니다';
?>

View file

@ -1,50 +0,0 @@
<?php
/**
* @file ru.lang.php
* @author Maslennikov Evgeny aka X-[Vr]bL1s5 | e-mail: x-bliss[a]tut.by; ICQ: 225035467;
* @brief Russian basic language pack
**/
$lang->board = 'Форум';
$lang->except_notice = '공지사항 제외';
$lang->use_anonymous = '익명 사용';
$lang->cmd_manage_menu = 'Управление меню';
$lang->list_target_item = 'Target Item';
$lang->list_display_item = 'Display Item';
$lang->summary = '요약';
$lang->thumbnail = '썸네일';
$lang->last_post = '최종 글';
$lang->cmd_make_child = 'Добавить дочернюю категорию';
$lang->cmd_enable_move_category = "Изменить позицию категории (Перетащите верхнее меню после выделения)";
$lang->cmd_remake_cache = 'Перепостроить файл кеша';
$lang->cmd_layout_setup = 'Конфигурировать лейаут';
$lang->cmd_layout_edit = 'Редактировать лейаут';
// Объект
$lang->search_result = 'Результат поиска';
$lang->consultation = '상담 기능';
$lang->secret = '비밀글 기능';
$lang->thisissecret = '비밀글입니다.';
$lang->admin_mail = '관리자 메일';
// слова, использованные в кнопке
$lang->cmd_board_list = 'Список форумов';
$lang->cmd_module_config = 'Общие настройки форума';
$lang->cmd_view_info = 'Информация форума';
$lang->cmd_list_setting = 'List Setting';
// blah blah.. или чушь всякая... ;)
$lang->about_layout_setup = 'Вы можете вручную изменять лейаут код блога. Вставляйте или управляйте кодом виджетов везде, где хотите';
$lang->about_board_category = 'Вы можете сделать категории блога.<br />Когда категория блога испорчена, попробуйте перепостроить файл кеша вручную.';
$lang->about_except_notice = "목록 상단에 늘 나타나는 공지사항을 일반 목록에서 공지사항을 출력하지 않도록 합니다.";
$lang->about_use_anonymous = '글쓴이의 정보를 없애고 익명으로 게시판 사용을 할 수 있게 합니다. 스킨설정에서 글쓰인 정보등을 보이지 않도록 하시면 더욱 유용합니다';
$lang->about_board = 'Этот модуль служит для создания и управления форумами.';
$lang->about_consultation = "상담 기능은 관리권한이 없는 회원은 자신이 쓴 글만 보이도록 하는 기능입니다\n단 상담기능 사용시 비회원 글쓰기는 자동으로 금지됩니다.";
$lang->about_secret = '게시판 및 댓글의 비밀글 사용할 수 있도록 합니다.';
$lang->about_admin_mail = '글이나 댓글이 등록될때 등록된 메일주소로 메일이 발송됩니다<br /> ,(콤마)로 연결시 다수의 메일주소로 발송할 수 있습니다.';
$lang->about_list_config = '게시판의 목록형식 사용시 원하는 항목들로 배치를 할 수 있습니다.<br />단 스킨에서 지원하지 않는 경우 지원되지 않을 수 있습니다<br />대상항목/ 표시항목의 항목을 더블클릭하면 추가/ 제거가 됩니다.';
$lang->msg_not_enough_point = 'Your point is not enough to write an article in this board.';
?>

View file

@ -1,44 +0,0 @@
<?php
/**
* @file zh-CN.lang.php
* @author zero (zero@nzeo.com)
* @brief 版面(board) 模块语言包
**/
$lang->board = "版面";
$lang->except_notice = "公告选项";
$lang->use_anonymous = '익명 사용';
$lang->cmd_manage_menu = '菜单管理';
$lang->list_target_item = '备选项';
$lang->list_display_item = '显示项';
$lang->summary = '요약';
$lang->thumbnail = '썸네일';
$lang->last_post = '최종 글';
// 项目
$lang->search_result = '搜索结果';
$lang->consultation = '咨询功能';
$lang->secret = '密帖';
$lang->thisissecret = '此为密帖。';
$lang->admin_mail = '管理员电子邮件';
// 按钮语言
$lang->cmd_board_list = '版面目录';
$lang->cmd_module_config = '版面共同设置';
$lang->cmd_view_info = '版面信息';
$lang->cmd_list_setting = '列表设置';
// 信息、提示..
$lang->about_layout_setup = '可直接编辑博客布局代码。可以把控件代码插入到您喜欢的位置。';
$lang->about_board_category = '可以添加/删除分类项<br />分类有异常情况时,可以尝试重新生成缓冲文件。';
$lang->about_except_notice = "设置公告目录项不再重复显示到普通目录当中。";
$lang->about_use_anonymous = '글쓴이의 정보를 없애고 익명으로 게시판 사용을 할 수 있게 합니다. 스킨설정에서 글쓰인 정보등을 보이지 않도록 하시면 더욱 유용합니다';
$lang->about_board = "可生成及管理版面的模块。";
$lang->about_consultation = "咨询功能是指除有管理权限的会员以外,其他会员只能浏览自己发表的主题。\n使用咨询功能时系统将自动禁止非会员的发表主题权限。";
$lang->about_secret = '设置主题及评论当中使用密帖与否。';
$lang->about_admin_mail = '有新的主题或评论时,将自动发电子邮件来通知管理员。<br />多数电子邮件由逗号(,)来分隔。';
$lang->about_list_config = '设置使用目录型目录页面时要显示的项目。<br />前提是使用的皮肤也支持此功能。<br />添加/删除项目,双击备选项/显示项即可。';
$lang->msg_not_enough_point = '很遗憾!您的积分不够。';
?>

View file

@ -1,44 +0,0 @@
<?php
/**
* @file modules/board/lang/zh-TW.lang.php
* @author zero (zero@nzeo.com) 翻譯royallin
* @brief 討論板(board)模組正體中文語言
**/
$lang->board = '討論板';
$lang->except_notice = '公告選項';
$lang->use_anonymous = '匿名功能';
$lang->cmd_manage_menu = '選單管理';
$lang->list_target_item = '目標項目';
$lang->list_display_item = '顯示項目';
$lang->summary = '요약';
$lang->thumbnail = '썸네일';
$lang->last_post = '최종 글';
// 項目
$lang->search_result = '搜尋結果';
$lang->consultation = '咨詢功能';
$lang->secret = '秘密';
$lang->thisissecret = '這是秘密文。';
$lang->admin_mail = '管理員電子郵件';
// 按鈕語言
$lang->cmd_board_list = '討論板列表';
$lang->cmd_module_config = '討論板共同設置';
$lang->cmd_view_info = '討論板資料';
$lang->cmd_list_setting = '列表設定';
// 其他
$lang->about_layout_setup = '可直接編輯部落格版面設計原始碼。可把控件原始碼插入到您喜歡的位置。';
$lang->about_board_category = '可以新增/刪除分類項目<br />分類有異常情況時,可以嘗試重新建立暫存檔。';
$lang->about_except_notice = '設置公告列表項目,不再重複顯示到普通列表當中。';
$lang->about_use_anonymous = '討論板可使用匿名功能。可在面板設定中設置隱藏作者的資料。';
$lang->about_board = '可建立及管理討論板的模組。';
$lang->about_consultation = "咨詢功能是指除有管理權限的會員以外,其他會員只能瀏覽自己發表的主題。\n使用咨詢功能時系統將自動禁止非會員的發表主題權限。";
$lang->about_secret = '可用於討論板或回覆時選擇是否使用。';
$lang->about_admin_mail = '有新的主題或評論時,將自動發電子郵件來通知管理員。<br />多數電子郵件由逗號(,)區隔。';
$lang->about_list_config = '可以放置想要的項目種類。<br />當所使用的面板支援此功能時才會正常實現。<br />對目標項目/顯示項目中的物件按兩下可新增或移除。';
$lang->msg_not_enough_point = '你的點數不夠在此討論板發表主題。';
?>

View file

@ -1,14 +0,0 @@
<query id="getAllBoard" action="select">
<tables>
<table name="modules" />
</tables>
<columns>
<column name="*" />
</columns>
<conditions>
<condition operation="equal" column="module" default="board" />
</conditions>
<navigation>
<index var="sort_index" default="mid" order="asc" />
</navigation>
</query>

View file

@ -1,24 +0,0 @@
<query id="getBoardList" action="select">
<tables>
<table name="modules" />
</tables>
<columns>
<column name="*" />
</columns>
<conditions>
<condition operation="in" column="module" default="'board','guestbook','blog'" />
<group pipe="and">
<condition operation="like" column="mid" var="s_mid" pipe="or" />
<condition operation="like" column="title" var="s_title" pipe="or" />
<condition operation="like" column="comment" var="s_comment" pipe="or" />
<condition operation="equal" column="module" var="s_module" pipe="or" />
<condition operation="equal" column="module_category_srl" var="s_module_category_srl" pipe="or" />
</group>
</conditions>
<navigation>
<index var="sort_index" default="module_srl" order="desc" />
<list_count var="list_count" default="20" />
<page_count var="page_count" default="10" />
<page var="page" default="1" />
</navigation>
</query>

View file

@ -1,104 +0,0 @@
<!--@if($oDocument->getCommentCount())-->
<div class="replyBox">
{@ $_comment_list = $oDocument->getComments() }
<!--@foreach($_comment_list as $key => $comment)-->
<div class="replyItem <!--@if($comment->get('depth'))-->reply<!--@end-->">
<!--@if($comment->get('depth'))-->
<div style="margin-left:{($comment->get('depth')-1)*20}px" class="replyIndent">
<!--@end-->
<a name="comment_{$comment->comment_srl}"></a>
<div class="replyOption">
<!--@if($comment->isGranted() || !$comment->get('member_srl'))-->
<a href="{getUrl('act','dispBoardDeleteComment','comment_srl',$comment->comment_srl)}"><img src="./images/common/buttonDeleteX.gif" alt="{$lang->cmd_delete}" width="12" height="13" /></a>
<a href="{getUrl('act','dispBoardModifyComment','comment_srl',$comment->comment_srl)}"><img src="./images/{$module_info->colorset}/buttonModifyE.gif" alt="{$lang->cmd_modify}" width="20" height="17" /></a>
<!--@end-->
<a href="{getUrl('act','dispBoardReplyComment','comment_srl',$comment->comment_srl)}"><img src="./images/{$module_info->colorset}/buttonReply.gif" alt="{$lang->cmd_reply}" width="20" height="17" /></a>
</div>
<div class="date">
<strong>{$comment->getRegdate('Y.m.d')}</strong> {$comment->getRegdate('H:i:s')}
<!--@if($grant->manager|| $module_info->display_ip_address!='N')-->({$comment->getIpaddress()})<!--@end-->
</div>
<div class="author">
<!--@if(!$comment->member_srl)-->
<!--@if($comment->homepage)-->
<a href="{$comment->homepage}" onclick="window.open(this.href);return false;">{$comment->getNickName()}</a>
<!--@else-->
{$comment->getNickName()}
<!--@end-->
<!--@else-->
<div class="member_{$comment->member_srl}">{$comment->getNickName()}</div>
<!--@end-->
</div>
<!--@if($comment->get('voted_count')!=0 || $comment->get('blamed_count') != 0)-->
<div class="voted">
({$lang->voted_count}:
<strong>{$comment->get('voted_count')?$comment->get('voted_count'):0}</strong> / <strong>{$comment->get('blamed_count')?$comment->get('blamed_count'):0}</strong>)
</div>
<!--@end-->
<div class="clear"></div>
<div class="replyContent">
<!--@if(!$comment->isAccessible())-->
<div class="secretContent">
<form action="./" method="get" onsubmit="return procFilter(this, input_password)">
<input type="hidden" name="mid" value="{$mid}" />
<input type="hidden" name="page" value="{$page}" />
<input type="hidden" name="document_srl" value="{$comment->get('document_srl')}" />
<input type="hidden" name="comment_srl" value="{$comment->get('comment_srl')}" />
<div class="title">{$lang->msg_is_secret}</div>
<div class="content"><input type="password" name="password" class="inputTypeText" /><span class="button {$btn_class}"><input type="submit" value="{$lang->cmd_input}" accesskey="s" /></span></div>
</form>
</div>
<!--@else-->
<!--@if($comment->getProfileImage())-->
<img src="{$comment->getProfileImage()}" alt="profile" class="commentProfileImage" />
<!--@end-->
{$comment->getContent(true)}
<!--@end-->
<div class="clear"></div>
</div>
<!--@if($comment->hasUploadedFIles())-->
<div class="fileAttached">
<ul>
{@ $_uploaded_files = $comment->getUploadedFiles() }
<!--@foreach($_uploaded_files as $key => $file)-->
<li><a href="{getUrl('')}{$file->download_url}">{$file->source_filename} ({FileHandler::filesize($file->file_size)})({number_format($file->download_count)})</a></li>
<!--@end-->
</ul>
<div class="clear"></div>
</div>
<!--@end-->
<!--@if($comment->get('depth'))-->
</div>
<!--@end-->
</div>
<!--@end-->
<!-- 댓글 페이지 네비게이션 -->
<!--@if($oDocument->comment_page_navigation)-->
<div class="pagination a1">
<a href="{getUrl('cpage',1)}#comment" class="prevEnd">{$lang->first_page}</a>
<!--@while($page_no = $oDocument->comment_page_navigation->getNextPage())-->
<!--@if($cpage == $page_no)-->
<strong>{$page_no}</strong>
<!--@else-->
<a href="{getUrl('cpage',$page_no)}#comment">{$page_no}</a>
<!--@end-->
<!--@end-->
<a href="{getUrl('cpage',$oDocument->comment_page_navigation->last_page)}#comment" class="nextEnd">{$lang->last_page}</a>
</div>
<!--@end-->
</div>
<!--@end-->

View file

@ -1,66 +0,0 @@
<!--#include("header.html")-->
<!--// 만약 댓글의 답을 다는 것이라면 원문 보여줌 -->
<!--@if($oSourceComment->isExists())-->
<div class="replyBox">
<div class="replyItem">
<div class="author"><div class="member_{$oSourceComment->getMemberSrl()}">{$oSourceComment->getNickName()}</div></div>
<div class="date">
{$oSourceComment->getRegdate("Y.m.d H:i")}
<!--@if($grant->manager)-->
({$oSourceComment->get('ipaddress')})
<!--@end-->
</div>
<div class="clear"></div>
<div class="replyContent gap1">
{$oSourceComment->getContent(false)}
</div>
</div>
</div>
<!--@end-->
<!-- 글쓰기 폼 -->
<form action="./" method="post" onsubmit="return procFilter(this, insert_comment)" class="boardEditor" >
<input type="hidden" name="mid" value="{$mid}" />
<input type="hidden" name="document_srl" value="{$oComment->get('document_srl')}" />
<input type="hidden" name="comment_srl" value="{$oComment->get('comment_srl')}" />
<input type="hidden" name="content" value="{htmlspecialchars($oComment->get('content'))}" />
<input type="hidden" name="parent_srl" value="{$oComment->get('parent_srl')}" />
<div class="boardWrite commentEditor">
<div class="userNameAndPw">
<!--@if(!$is_logged)-->
<label for="userName">{$lang->writer}</label>
<input type="text" name="nick_name" value="{$oComment->get('nick_name')}" class="userName inputTypeText" id="userName"/>
<label for="userPw">{$lang->password}</label>
<input type="password" name="password" value="" id="userPw" class="userPw inputTypeText" />
<label for="emailAddress">{$lang->email_address}</label>
<input type="text" name="email_address" value="{htmlspecialchars($oComment->get('email_address'))}" id="emailAddress" class="emailAddress inputTypeText"/>
<label for="homePage">{$lang->homepage}</label>
<input type="text" name="homepage" value="{htmlspecialchars($oComment->get('homepage'))}" id="homePage" class="homePage inputTypeText"/>
<!--@else-->
<input type="checkbox" name="notify_message" value="Y" <!--@if($oComment->useNotify())-->checked="checked"<!--@end--> id="notify_message" />
<label for="notify_message">{$lang->notify}</label>
<!--@end-->
<!--@if($module_info->secret=="Y")-->
<input type="checkbox" name="is_secret" value="Y" <!--@if($oComment->isSecret())-->checked="checked"<!--@end--> id="is_secret" />
<label for="is_secret">{$lang->secret}</label>
<!--@end-->
</div>
<div class="editor">{$oComment->getEditor()}</div>
</div>
<div class="commentButton tRight">
<span class="button {$btn_class}"><input type="button" value="{$lang->cmd_back}" onclick="location.href='{getUrl('act','')}'"/></span>
<span class="button {$btn_class}"><input type="submit" value="{$lang->cmd_comment_registration}" accesskey="s" /></span>
</div>
</form>
<!--#include("footer.html")-->

View file

@ -1,135 +0,0 @@
@charset "utf-8";
.viewDocument { color:#888; }
/* board Title */
.boardHeader h1,
.boardHeader h2,
.boardHeader h3,
.boardHeader h4,
.boardHeader h5,
.boardHeader h6
{ border-bottom:3px solid #fe3614; }
/* board Information */
.articleNum { float:left; background:url(../images/black/iconArticle.gif) no-repeat left top; }
.articleNum strong { font:bold 11px Tahoma; color:#BBBBBB;}
/* account Navigation */
.accountNavigation li.join a { background:url(../images/black/iconMyInfo.gif) no-repeat left top; padding-left:14px; }
.accountNavigation li.myInfo a { background:url(../images/black/iconMyInfo.gif) no-repeat left top; padding-left:14px; }
/* boardRead */
.boardRead .fileAttached li { background:url(../images/black/iconFile.gif) no-repeat left top;}
.boardRead .titleAndUser { border-bottom:1px solid #555555; }
.boardRead .contentButton { border-top:1px solid #555555; }
/* style.list */
.boardList th { background:transparent url(../images/black/lineBoardListTh.gif) no-repeat left bottom; }
.boardList td.recommend { color:#ff6600; }
.boardList td .replyAndTrackback { color:#BBBBBB; }
.boardList td.title strong.category { color:#BBBBBB; }
.buttonTypeGo { background:url(../images/black/buttonTypeInput24.gif) no-repeat; }
/* Pagination*/
.pagination a, .pagination strong{ color:#888; }
.pagination a:hover, .pagination a:active, .pagination a:focus{ background-color:#555 !important; }
.pagination strong{ color:#ff6600 !important;}
.pagination.a1 a, .pagination.a1 strong{ background:#000; border-left:1px solid #555; border-right:1px solid #666; color:#888;}
.pagination.a1 a.prev, .pagination.a1 a.prevEnd, .pagination.a1 a.next, .pagination.a1 a.nextEnd { background:#000; }
.pagination.a2 a, .pagination.a2 strong{ background:#000; border-left:1px solid #555; border-right:1px solid #666; color:#888; }
.pagination.a2 a.prev, .pagination.a2 a.prevEnd, .pagination.a2 a.next, .pagination.a2 a.nextEnd { background:#000; }
/* replyAndTrackback */
.buttonBox .replyAndTrackback a strong { color:#BBBBBB;}
.replyBox .fileAttached li { background:url(../images/black/iconFile.gif) no-repeat left top;}
/* replace common images */
.boardHeader { border:1px solid #ABA9B4; border-bottom:0; background:transparent url(../images/black/bgH3.gif) repeat-x left bottom; overflow:hidden;}
.boardHeader h1,
.boardHeader h2,
.boardHeader h3,
.boardHeader h4,
.boardHeader h5,
.boardHeader h6
{ background:transparent url(../images/black/lineH3.gif) no-repeat right bottom; color:#AAAAAA; border-bottom:3px solid #ABA9B4;}
.boardDescription { color:#666666; border:1px solid #666666; overflow:hidden; padding:10px; margin-top:5px; background-color:transparent;}
.accountNavigation li.setup a { background:url(../images/black/iconSetup.gif) no-repeat left top; padding-left:14px; }
.accountNavigation li.admin a { background:url(../images/black/iconAdmin.gif) no-repeat left top; padding-left:12px; }
.accountNavigation li.loginAndLogout a { background:url(../images/black/line_1x10_e0e0e0.gif) no-repeat left 2px; padding-left:8px; }
.boardSubMenu { border-bottom:1px solid #444444;}
.boardList { width:100%; border:1px solid #444444; border-top:none; overflow:hidden;}
.boardList thead th { color:#999999; font-weight:normal; border-top:1px solid #444444; border-bottom:1px solid #888888; white-space:nowrap; padding-top:5px; height:28px; overflow:hidden;}
.boardList thead th a { color:#999999; }
.boardList thead th.num { border-left:0px solid #444444; }
.boardList tbody td { border-top:1px solid #444444; padding:.5em;}
.boardList tbody td.title, .boardList tr.notice { background-color:transparent; }
#board_category { background-color:#444444; color:#AAAAAA; }
#go_button { color:#AAAAAA; }
.boardList tr.bg1, .boardList tr.bg2 { background-color:transparent; }
.boardList td.topic strong a, .boardList td.title a { color:#AAAAAA; }
.boardList td.author div { color:#AAAAAA; }
.boardList td.topic div.author strong { font-size:9pt; }
.boardList td.webzineTitle, .boardList td.webzineTitle a { color:#AAAAAA; }
.boardRead .readHeader .title h4 a { color:#BBBBBB; }
.boardRead .dateAndCount .replyAndTrackback .replyCount { background:transparent url(../images/black/iconReply.gif) no-repeat left 1px; color:#888888; }
.boardRead .dateAndCount .replyAndTrackback .trackbackCount { background:transparent url(../images/black/iconTrackback.gif) no-repeat left 1px; color:#888888; }
.boardRead .dateAndCount .replyAndTrackback .replyCount a,.boardRead .dateAndCount .replyAndTrackback .trackbackCount a { color:#888888; }
.boardRead .dateAndCount .readedCount { background:transparent url("../images/black/read.gif") no-repeat left top; color:#4A3FD7;}
.boardRead .dateAndCount .date { color:#888888; background:transparent url("../images/black/calendar.gif") no-repeat left top; }
.comment_popup_menu, .document_popup_menu { background:url(../images/black/document_menu.gif) no-repeat right top;}
.tagsBox { border:1px solid #888888; padding:10px; overflow:hidden;}
.tags div a:hover { background-color:#444444; color:#FFFFFF;}
.tags .tagTypeA a { color:#555555; background-color:#444444; margin:0;}
.tags .tagTypeB a { color:#888888; }
.tags .tagTypeC a { background-color:#333333;}
.tags .tagTypeD a { background-color:#111111;}
.boardRead .tag { background:transparent url(../images/common/iconTag.gif) no-repeat 3px 2px; }
.boardRead .fileAttached { border:1px solid #888888; background-color:transparent; padding:5px; margin-top:10px; overflow:hidden;}
.boardRead .fileAttached ul li a { color:#AAAAAA; }
.replyBox .fileAttached { border:1px solid #888888; background-color:transparent; padding:5px; margin-top:10px; overflow:hidden;}
.replyBox .fileAttached ul li a { color:#AAAAAA; }
.boardWrite * { color:#888888; }
.boardWrite dl.option dd * { color:#888888; }
.replyBox .replyItem { background-color:transparent; border-bottom:1px dotted #888888; }
.replyBox .date { color:#888888; }
.trackbackBox .trackbackItem { background-color:transparent; }
#fo_search select { background-color:#444444; color:#AAAAAA; }
.inputTypeText { background-color:transparent; color:#AAAAAA; }
.inputTypeText:hover, .inputTypeText:focus { background-color:transparent; color:#AAAAAA; }
.boardWrite .tag .inputTypeText { background:transparent; }
.secretContent { border:1px solid #888888; width:240px; }
.secretContent .title { background-color:#444444; color:#AAAAAA;}
.secretContent .content { background-color:#222222; color:#888888; }
.boardRead .readBody { color:#BBBBBB; }
.smallBox { border:1px solid #555555; }
.smallBox .messageBox { background-color:#444444; border-bottom:1px solid #888888; color:#AAAAAA;}
.smallBox .header { background:transparent !important; }
/* button */
a.button,
a.button span,
span.button,
span.button button,
span.button input { background-image:url(../../../../../common/tpl/images/buttonBlack.gif); color:#fff;}
del.button span,
a.button, span.button, del.button,
a.button span, span.button button, span.button input, del.button span{
color:#FFFFFF;
}

View file

@ -1,412 +0,0 @@
@charset "utf-8";
/*
NHN UIT Lab. WebStandardization Team (http://html.nhndesign.com/)
Jeong, Chan Myeong 070601~070630
*/
/**
* Header
**/
/* board Title */
.boardHeader { border:1px solid #e1e1dd; border-bottom:0; background:#ffffff url(../images/common/bgH3.gif) repeat-x left bottom; overflow:hidden;}
.boardHeader .boardHeaderBorder { width:100%;}
.boardHeader h1,
.boardHeader h2,
.boardHeader h3,
.boardHeader h4,
.boardHeader h5,
.boardHeader h6
{ margin:0; float:left; padding:15px 15px 12px 15px; font-size:1.2em; background:#ffffff url(../images/common/lineH3.gif) no-repeat right bottom;}
/* board Description */
.boardDescription { color:#AEAEAE; border:1px solid #DDDDDD; overflow:hidden; padding:10px; margin: 5px 0; background-color:#FFFFFF;}
/* board Information */
.boardInformation { width:100%; clear:both; margin:5px 0 2px 0; overflow:hidden; color:#666666;}
.articleNum { float:left; padding:0 0 0 15px; }
/* account Navigation */
.accountNavigation { margin:0; padding:0; float:right; }
.accountNavigation li { float:left; margin-left:7px; list-style:none; }
.accountNavigation li a { white-space:nowrap; color:#666666; text-decoration:none;}
.accountNavigation li.setup a { background:url(../images/common/iconSetup.gif) no-repeat left top; padding-left:14px; }
.accountNavigation li.admin a { background:url(../images/common/iconAdmin.gif) no-repeat left top; padding-left:12px; }
.accountNavigation li.listType { margin-left:5px; }
.accountNavigation li.loginAndLogout a { background:url(../images/common/line_1x10_e0e0e0.gif) no-repeat left 2px; padding-left:8px; }
/* secret Content */
.secretContent { margin:20px auto; text-align:center; border:1px solid #EFEFEF; width:240px; }
.secretContent .title { padding:10px 0 10px 0; background-color:#EFEFEF; display:block; font-weight:bold; }
.secretContent .content { padding:10px 0 10px 0; background-color:#FFFFFF; display:block; }
/* blog Style Notice */
.blogNotice { margin-bottom:10px; padding:5px; border:1px solid #e0e1db;}
.blogNotice .item { background:url("../images/common/notice.gif") no-repeat -2px 3px; padding:3px 0 3px 18px; }
.blogNotice .item .date { font-family:verdana; font-size:.9em;color:#AAAAAA; }
.blogNotice .item a { text-decoration:none; color:#444444; }
.blogNotice .item a:hover { text-decoration:underline}
.blogNotice .item .replyAndTrackback { color:#AAAAAA; font-size:.9em; }
/* boardRead */
.viewDocument { border-bottom:2px solid #AAAAAA; margin-bottom:20px; }
.boardRead { margin:10px 0 10px 0; }
.boardRead .titleAndUser { overflow:hidden; border-bottom:1px solid #e0e1db; }
.boardRead .titleAndUser .title { float:left; margin:10px 0 5px 0; }
.boardRead .titleAndUser .title a { color:#000000; text-decoration:none; }
.boardRead .titleAndUser .title a:hover { text-decoration:underline; }
.boardRead .titleAndUser h1,
.boardRead .titleAndUser h2,
.boardRead .titleAndUser h3,
.boardRead .titleAndUser h4,
.boardRead .titleAndUser h5,
.boardRead .titleAndUser h6
{ margin:0; font-size:1.5em; margin-left:3px;}
.boardRead .titleAndUser .userInfo { float:right; white-space:nowrap; margin-top:11px; }
.boardRead .titleAndUser .userInfo .author { color:#3074a5; }
.boardRead .titleAndUser .userInfo .author a { color:#3074a5; text-decoration:none; }
.boardRead .dateAndCount { clear:both; white-space:nowrap; color:#444444; margin:5px 0 0 0; font-size:.9em; font-family:tahoma; line-height:17px; padding-bottom:10px; }
.boardRead .dateAndCount .uri { float:left; }
.boardRead .dateAndCount .uri a { text-decoration:none; margin-left:4px; color:#BBBBBB; }
.boardRead .dateAndCount .date { float:right; background:url("../images/common/calendar.gif") no-repeat left top; padding-left:18px; margin-left:10px; }
.boardRead .dateAndCount .readedCount { float:right; color:#AAAAAA; margin-left:10px; background:url("../images/common/read.gif") no-repeat left top; padding-left:18px; color:#4A3FD7;}
.boardRead .dateAndCount .votedCount { float:right; color:#AAAAAA; margin-left:10px; background:url("../images/common/vote.gif") no-repeat left top; padding-left:18px; color:#D76A3F;}
.boardRead .dateAndCount .replyAndTrackback { float:right; }
.boardRead .dateAndCount .replyAndTrackback .replyCount { margin-left:10px; float:left; background:#FFFFFF url(../images/common/iconReply.gif) no-repeat left 1px; padding-left:15px; }
.boardRead .dateAndCount .replyAndTrackback .trackbackCount { margin-left:10px; float:left; background:#FFFFFF url(../images/common/iconTrackback.gif) no-repeat left 1px; padding-left:15px; }
.boardRead .dateAndCount .replyAndTrackback a { color:#333333; white-space:nowrap; text-decoration:none; }
.boardRead .dateAndCount .replyAndTrackback a:hover { text-decoration:underline; }
.boardRead .dateAndCount .category { float:left; margin-right:10px; }
.boardRead .dateAndCount .category a { color:#555555; text-decoration:none; background:url("../images/common/category.gif") no-repeat left -1px; padding-left:18px; font-weight:bold;}
.boardRead .dateAndCount .category a:hover { text-decoration:underline; }
/* extraVars list */
.boardRead .extraVarsList { width:100%; border:1px solid #e0e1db; border-bottom:none; margin:0 0 30px 0; table-layout:fixed;}
.boardRead .extraVarsList th { font-weight:normal; color:#555555; text-align:left; padding:4px 0 4px 10px; border-bottom:1px solid #e0e1db; border-right:1px solid #e0e1db;}
.boardRead .extraVarsList td { color:#555555; border-bottom:1px solid #e0e1db; padding:4px 0 4px 10px; }
.boardRead .extraVarsList td a { color:#555555; }
.boardRead .readBody { color:#555555; margin-top:20px; }
.boardRead .tag { background:#FFFFFF url(../images/common/iconTag.gif) no-repeat 3px 2px; padding-left:25px; margin:10px 0 0 0; }
.boardRead .tag ul { margin:0; padding:0; }
.boardRead .tag li { display:inline; list-style:none; }
.boardRead .tag li a { color:#444444;}
.boardRead .fileAttached { border:1px solid #EFEFEF; background-color:#F4F4F4; padding:5px; margin-top:10px; overflow:hidden;}
.boardRead .fileAttached h5 { font-weight:normal; color:#999999; font-size:1em; line-height:22px; }
.boardRead .fileAttached ul { padding:0; margin:0; }
.boardRead .fileAttached li { padding-left:15px; display:block; float:left; white-space:nowrap; list-style:none; margin:0 10px 5px 0; }
.boardRead .fileAttached li a { text-decoration:none; font-size:.9em; white-space:nowrap; color:#444444; }
.boardRead .fileAttached li a:visited { color:#777777;}
.boardRead .contentButton { text-align:right;margin:10px 0 5px 0; border-top:1px solid #DDDDDD; padding-top:10px;}
.trackbackBox { padding:.6em .6em; color:#666666; border:1px solid #e0e1db;;margin-top:.5em; }
.trackbackBox .trackbackUrl { color:#1F3DAE; font-size:.9em; background:url("../images/common/iconTrackback.gif") no-repeat left top; padding-left:18px; margin:0; }
.trackbackBox .trackbackItem { background-color:#F3F3F3; padding:.6em .8em .6em .6em; line-height:1.25em; border-top:1px dotted #EEEEEE; list-style:none;}
.trackbackBox p { display:inline; margin-bottom:1em;}
.trackbackBox a { color:#666666; text-decoration:none;}
.trackbackBox div { clear:both; }
.trackbackBox address { display:block; padding:0 .3em 0 0; }
.trackbackBox address a { font-size:.9em; color:#3074a5; margin-right:.3em; float:left;}
.trackbackBox address .date { font:.8em Tahoma; color:#cccccc; float:right;}
.replyBox { padding:10px; color:#666666; border:1px solid #e0e1db; margin-top:.5em;}
.replyBox .replyItem { background-color:#FFFFFF; padding:.6em .8em .6em .6em; line-height:1.25em; clear:both; border-bottom:1px dotted #EEEEEE; list-style:none;}
.replyBox p { display:inline; }
.replyBox .author { float:left; padding:0 .3em 0 0; color:#3074a5; margin:0 .3em .5em 0;}
.replyBox .author a { color:#3074a5; margin-right:.3em; text-decoration:none; }
.replyBox .voted { float:left; font-size:.9em; color:#AAAAAA; margin:0 .3em .5em 1em;}
.replyBox .date { float:right; font:.8em Tahoma; color:#cccccc; margin:.3em 0 .5em 0;}
.replyBox .replyOption { height:20px; float:right; white-space:nowrap; margin-left:.2em;}
.replyBox .replyOption img { vertical-align:middle;}
.replyBox .replyContent { clear:left; }
.replyBox .replyContent p { display:block; }
.replyBox .reply { background-color:#F4F4F4; border-bottom:1px dotted #DDDDDD;}
.replyBox .replyIndent { background:url(../images/common/iconReplyArrow.gif) no-repeat .0em .3em; padding-left:1.3em;}
.replyBox .fileAttached { border:1px solid #EFEFEF; background-color:#F4F4F4; padding:5px; margin-top:10px; overflow:hidden;}
.replyBox .fileAttached ul { border:0; margin:0; padding:0;}
.replyBox .fileAttached h5 { font-weight:normal; color:#999999; float:left; font-size:1em; }
.replyBox .fileAttached li { padding-left:15px; display:block; float:left; white-space:nowrap; list-style:none; margin:0px 10px 5px 0; }
.replyBox .fileAttached li a { text-decoration:none; font-size:.9em; white-space:nowrap; color:#444444; }
.replyBox .fileAttached li a:visited { color:#777777;}
.commentButton { margin-top:.5em; }
/* gallery sub menu */
.boardSubMenu { margin:0 0 .5em 0; padding:1em 0 .5em .5em; border-bottom:1px solid #e0e1db;}
.boardSubMenu a { text-decoration:none; color:#666666; vertical-align:bottom; background:url(../images/common/line_1x10_e0e0e0.gif) no-repeat right 5px; padding-left:10px; padding-right:10px; _padding-top:5px; position:relative; top:5px; }
.boardSubMenu img.sort { vertical-align:middle; }
/* list */
.boardList { width:100%; border:1px solid #e0e1db; border-top:none; overflow:hidden; }
.boardList thead tr th div { white-space:nowrap; margin:0 5px; }
.boardList thead tr th.title , .boardList thead tr th.category, .boardList thead tr th.topic { width:100%; }
.boardList tbody td { white-space:nowrap; }
.boardList tbody td.title { white-space:normal; }
.boardList tbody td.webzineTitle { white-space:normal; }
.boardList tbody td.wrap { white-space:normal; }
.boardListNoTopBorder { border:none; }
.boardList th { color:#3e3f3e; font-weight:normal; border-top:1px solid #e0e1db; border-bottom:1px solid #ffffff; white-space:nowrap; padding-top:5px; height:28px; overflow:hidden;}
html:not([lang*=""]) .boardList th { height:33px; }
.boardList th.no_line { background-position:-3px bottom; }
.boardList th a { color:#3e3f3e; text-decoration:none; }
.boardList th.num { border-left:1px solid #ffffff; }
.boardList th.checkbox { text-align:center; }
.boardList th.title { text-align:center; padding-left:1em; }
.boardList th.topic { text-align:left; padding-left:1em; }
.boardList th.category { text-align:left; padding-left:1em; }
.boardList th.category select { vertical-align:middle; width:200px; height:20px;}
.boardList th.reading, th.recommend , th.date { white-space:nowrap;}
.boardList th .sort { padding:0 .2em; vertical-align:middle;}
.boardList tr.notice { background:#f8f8f8; }
.boardList tr.notice .num { font-weight:bold;}
.boardList tr.bg1 { background:#ffffff}
.boardList tr.bg2 { background:#fbfbfb;}
.boardList td { border-top:1px solid #eff0ed; padding:.5em;}
.boardList td.num { font:.8em tahoma; color:#999999; padding:.5em 1em; text-align:center;}
.boardList td.checkbox { font:.8em tahoma; color:#999999; text-align:center;}
.boardList tr.notice td.num { padding:.5em; white-space:nowrap;}
.boardList tr.notice td.notice { font-size:.9em; color:#999999; font-weight:bold; text-align:center;}
.boardList td.thumb { }
.boardList td.thumb img { border:1px solid #E0E1DB; padding:3px; margin:none; }
.boardList td.title {padding-left:1em; }
.boardList td.title strong.category { font-size:1em; background:url(../images/common/line_1x10_e0e0e0.gif) no-repeat right 3px; padding-right:.5em; margin-right:.5em;}
.boardList td.title.bold { font-size:1.2em; font-weight:bold;}
.boardList td.title.bold a { position:relative; top:.3em;}
.boardList td.title * { vertical-align:middle;}
.boardList td.title,
.boardList td.title a { color:#444444; text-decoration:none;}
.boardList td.title a:visited { color:#777777;}
.boardList td.topic { padding-left:1em; color:#888888; }
.boardList td.topic strong a { font-size:1em; font-weight:normal; text-decoration:none; color:#222222; }
.boardList td.topic strong a:visited { color:#777777; }
.boardList td.topic .category { background:url(../images/common/line_1x10_e0e0e0.gif) no-repeat left 3px; padding-left:.5em; margin-left:.5em; color:#AAAAAA; }
.boardList td.topic div.author { margin-top:.5em; color:#BBBBBB; }
.boardList td.topic div.author strong { font-weight:normal; color:#666666; }
.boardList td.commentCount { font:bold .8em Tahoma; color:#888888; text-align:center; }
.boardList td.latestPost { color:#888888; }
.boardList td.latestPost div.author { margin-top:.5em; color:#BBBBBB; }
.boardList td.latestPost div.author strong { font-weight:normal; color:#666666; }
.boardList td.latestPost div.date { font-size:0.8em; margin-top:.5em; }
.boardList td.latestPost div.date strong { font-family:Tahoma; font-weight:normal; color:#666666; }
.boardListNoTopBorder td { border-top:none; border-bottom:1px solid #eff0ed; padding:.5em;}
.boardList td.webzineTitle { padding-left:1em; color:#777777; height:1.2em; width:100%;}
.boardList td.webzineTitle strong.category { font-size:1em; background:url(../images/common/line_1x10_e0e0e0.gif) no-repeat right 3px; padding-right:.5em; margin-right:.5em;}
.boardList td.webzineTitle.bold { font-size:1.2em; font-weight:bold;}
.boardList td.webzineTitle * { vertical-align:middle;}
.boardList td.webzineTitle,
.boardList td.webzineTitle a { color:#444444; text-decoration:none;}
.boardList td.webzineTitle a:visited { color:#777777;}
.boardList td.summary { border-top:none; vertical-align:top; color:#666666; line-height:1.25em; padding-left:1em; white-space:normal; }
.boardList td.summary a { color:#666666; text-decoration:none; line-height:inherit;}
.boardList td.summary a:visited { color:#999999;}
.boardList td .replyAndTrackback img.trackback { margin-bottom:-.1em;}
.boardList td .replyAndTrackback strong { font:bold 1em Tahoma;}
.boardList td .replyAndTrackback { font:.8em Tahoma; }
.boardList td.author { color:#333333; padding-left:1em;}
.boardList td.author a { color:#333333;}
.boardList td.reading { font:.8em Tahoma; color:#999999; text-align:center;}
.boardList td.recommend { font:bold .8em Tahoma; text-align:center;}
.boardList td.date { font:.8em Tahoma; color:#999999; text-align:center; white-space:nowrap;}
.boardList td input { _margin:-3px;}
.buttonTypeGo { border:none; cursor:pointer; width:24px; height:20px; _position:relative; _top:3px; font:.75em Tahoma; text-align:center;}
*:first-child+html .buttonTypeGo { position:relative; top:3px; }
.thumbnailBox { margin-top:1em; clear:both; overflow:hidden; border-bottom:1px solid #e0e1db; }
.thumbnailBox div.cell { display:block; float:left; overflow:hidden; margin-bottom:1em; margin-right: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;}
/* board Bottom */
.boardBottom { margin-top:10px; }
/* list button */
.leftButtonBox { float: left; }
.rightButtonBox { float: right; }
/* Search Form */
.boardSearch { margin-top:30px; margin-left:auto; margin-right:auto; clear:both; text-align:center;}
.boardSearch select { height:20px; }
.boardSearch input { height:18px; }
/* boardWrite */
.boardEditor { margin-bottom:10px; }
.commentEditor { margin-top:10px; }
.boardWrite { border:1px solid #e0e1db; padding-bottom:10px;}
.boardWrite fieldset { border:none; }
.boardWrite .userNameAndPw { margin:10px 10px 0 10px; }
.boardWrite .userNameAndPw .userName {width:60px; margin-right:10px; }
.boardWrite .userNameAndPw .userPw {width:60px; margin-right:10px; }
.boardWrite .userNameAndPw .emailAddress {width:60px; margin-right:10px; }
.boardWrite .userNameAndPw .homePage {width:60px; margin-right:10px; }
.boardWrite .title { margin-top:5px; }
.boardWrite .title .category { margin-left:10px; }
.boardWrite .title label.title { margin:0 10px 0 10px; }
.boardWrite .title input.title { width:60%;}
.boardWrite dl { padding:0; margin:0; }
.boardWrite dl dd { padding:0; margin:0; }
.boardWrite dl.option { margin:10px 0 3px 10px; padding:0;}
.boardWrite dl.option dd { display:inline; margin-right:5px; }
.boardWrite dl.option dd * { vertical-align:middle;}
.boardWrite dl.option dd select { width:8em; font-size:.95em; }
.boardWrite .tag { margin-top:10px; margin-left:10px; }
.boardWrite .tag .inputTypeText { width:90%; background:#FFFFFF url(../images/common/iconTag.gif) no-repeat 5px 5px; padding-left:30px;}
.boardWrite .tag .help { vertical-align:middle;}
.boardWrite .tag .info { font-size:.9em; color:#999999; background:url(../images/common/iconArrowD8.gif) no-repeat 0% 40%; margin-top:5px; padding-left:5px;}
.boardWrite .extraVarsList { width:100%; border-top:1px solid #e0e1db; border-bottom:none; margin:10px 0 10px 0; table-layout:fixed;}
.boardWrite .extraVarsList th { font-weight:normal; color:#555555; text-align:left; padding:4px 0 4px 10px; border-bottom:1px solid #e0e1db; border-right:1px solid #e0e1db;}
.boardWrite .extraVarsList td { color:#555555; border-bottom:1px solid #e0e1db; padding:4px 0 4px 10px; }
.boardWrite .extraVarsList td a { color:#555555; }
.boardWrite .extraVarsList p { margin:5px 0 0 0; padding:0; }
.boardWrite .extraVarsList ul { margin:0; padding:0; }
.smallBox { border:1px solid #e0e1db; margin-left:auto; margin-right:auto; padding-bottom:10px; }
.smallBox.w268 { width:268px;}
.smallBox .header { margin:0; padding:0; position:relative; _width:100%; background:#ffffff url(../images/common/bgH3.gif) no-repeat left bottom; overflow:hidden;}
.smallBox .header h3 { margin:0; padding:0; clear:both; font-size:1.2em; padding:.8em 2em .6em 1.2em; border-bottom:3px solid #fe3614; }
.smallBox .complex { padding:1.5em 2em 2em 2em;}
.smallBox .inputPassword { position:relative; border:none; padding:2em 2em 1.5em 2em;}
.smallBox .inputPassword .inputTypeText { float:left; margin-right:.5em; width:8em;}
.smallBox .inputPassword legend { position:absolute; overflow:hidden; width:1px; height:1px; font-size:.001em; text-indent:-100em;}
.smallBox .messageBox { background-color:#F3F3F3; padding:10px; border-bottom:1px solid #EEEEEE;}
/* Pagination Reset */
.pagination{ padding:15px 0; margin:0; text-align:center;}
.pagination *{ margin:0; padding:0;}
.pagination img{ border:0;}
.pagination a,
.pagination strong{ position:relative; display:inline-block; text-decoration:none; line-height:normal; color:#333; font-family:Tahoma, Sans-serif; vertical-align:middle;}
.pagination a:hover,
.pagination a:active,
.pagination a:focus{ background-color:#f4f4f4 !important; }
.pagination strong{ color:#ff6600 !important;}
.pagination a.prev,
.pagination a.prevEnd,
.pagination a.next,
.pagination a.nextEnd{ font-weight:normal !important; border:none !important; margin:0 !important; white-space:nowrap; }
/* Pagination A1 */
.pagination.a1 a,
.pagination.a1 strong{ margin:0 -4px; padding:1px 10px 1px 8px; border:none; border-left:1px solid #ccc; border-right:1px solid #ddd; font-weight:bold; font-size:12px; background:#fff;}
.pagination.a1 a.prev{ padding-left:10px; background:#fff url(../images/common/arrowPrevA1.gif) no-repeat left center; }
.pagination.a1 a.prevEnd{ padding-left:15px; background:#fff url(../images/common/arrowPrevEndA1.gif) no-repeat left center; }
.pagination.a1 a.next{ padding-right:10px; background:#fff url(../images/common/arrowNextA1.gif) no-repeat right center; }
.pagination.a1 a.nextEnd{ padding-right:15px; background:#fff url(../images/common/arrowNextEndA1.gif) no-repeat right center; }
/* Pagination A2 */
.pagination.a2 a,
.pagination.a2 strong{ margin:0 -4px; padding:0 10px 0 8px; font-weight:bold; font-size:11px; border:none; border-left:1px solid #ddd; border-right:1px solid #ccc; background:#fff; }
.pagination.a2 a.prev{ padding-left:10px; background:#fff url(../images/common/arrowPrevA1.gif) no-repeat left center; }
.pagination.a2 a.prevEnd{ padding-left:15px; background:#fff url(../images/common/arrowPrevEndA1.gif) no-repeat left center; }
.pagination.a2 a.next{ padding-right:10px; background:#fff url(../images/common/arrowNextA1.gif) no-repeat right center; }
.pagination.a2 a.nextEnd{ padding-right:15px; background:#fff url(../images/common/arrowNextEndA1.gif) no-repeat right center; }
/* Pagination B1 */
.pagination.b1 a,
.pagination.b1 strong{ margin:0 -2px; padding:2px 8px; font-weight:bold; font-size:12px;}
.pagination.b1 a.prev{ padding-left:16px; background:url(../images/common/arrowPrevB1.gif) no-repeat left center; }
.pagination.b1 a.next{ padding-right:16px; background:url(../images/common/arrowNextB1.gif) no-repeat right center; }
/* Pagination B2 */
.pagination.b2 a,
.pagination.b2 strong{ margin:0 -2px; padding:2px 6px; font-size:11px;}
.pagination.b2 a.prev{ padding-left:12px; background:url(../images/common/arrowPrevB1.gif) no-repeat left center; }
.pagination.b2 a.next{ padding-right:12px; background:url(../images/common/arrowNextB1.gif) no-repeat right center; }
/* Pagination C1 */
.pagination.c1 a,
.pagination.c1 strong{ margin:0 -2px; padding:2px 4px; font-size:12px;}
.pagination.c1 a.prev,
.pagination.c1 a.next{ display:inline-block; width:13px; height:14px; padding:3px 4px; margin:0;}
.pagination.c1 a.prev{ background:url(../images/common/arrowPrevC1.gif) no-repeat center;}
.pagination.c1 a.next{ background:url(../images/common/arrowNextC1.gif) no-repeat center;}
.pagination.c1 a.prev span,
.pagination.c1 a.next span{ position:absolute; width:0; height:0; overflow:hidden; visibility:hidden;}
/* Pagination C2 */
.pagination.c2 a,
.pagination.c2 strong{ margin:0 -2px; padding:2px 4px; font-size:11px;}
.pagination.c2 a.prev,
.pagination.c2 a.next{ display:inline-block; width:13px; height:14px; padding:3px 4px; margin:0;}
.pagination.c2 a.prev{ background:url(../images/common/arrowPrevC1.gif) no-repeat center;}
.pagination.c2 a.next{ background:url(../images/common/arrowNextC1.gif) no-repeat center;}
.pagination.c2 a.prev span,
.pagination.c2 a.next span{ position:absolute; width:0; height:0; overflow:hidden; visibility:hidden;}
/* 게시물의 팝업 메뉴 */
.comment_popup_menu, .document_popup_menu { text-align:right; background:url(../images/common/document_menu.gif) no-repeat right top !important; padding:0 15px 0 0; height:18px; clear:both;}
.comment_popup_menu a, .document_popup_menu a { cursor:pointer; display:inline; color:#555555 !important; text-decoration:none; }
/* tag list */
.tagsBox { border:1px solid #EEEEEE; padding:10px; overflow:hidden;}
.tagsBox h5 { margin:0; padding:2px; }
.tags { width:100%; }
.tags div { float:left; padding:2px; margin-right:10px; overflow:hidden; white-space:nowrap; height:15px;}
.tags div a { text-decoration:none; color:#555555; line-height:150%;}
.tags div a:hover { background-color:#888888; color:#FFFFFF;}
.tags .tagTypeA a { color:#fe3614; font-weight:bold; font-size:12pt; background-color:#EFEFEF; margin:0;}
.tags .tagTypeB a { color:#fe3614; font-size:11pt; margin:0;}
.tags .tagTypeC a { font-weight:bold; font-size:11pt; margin:0; background-color:#EFEFEF;}
.tags .tagTypeD a { font-weight:bold; margin:0; background-color:#EFEFEF;}
.tags .tagTypeE a { font-weight:normal; margin:0;}
/* 회원 서명 및 프로필 이미지 출력 */
.memberSignature { border:1px solid #e0e1db; padding:10px; margin-top:20px; clear:both;}
.memberSignature .profile { float:left; margin-right:20px; }
.commentProfileImage { margin:0 10px 10px 0; float:left; }
.replyBox .xe_content { display:inline; }
.display_date { cursor:pointer; width:80px; border:1px solid; border-color:#a6a6a6 #d8d8d8 #d8d8d8 #a6a6a6; height:1em; padding:3px; margin-right:10px;}
/* 확장 변수 폼 */
.extraVarsList tr td .text { border:1px solid; border-color:#a6a6a6 #d8d8d8 #d8d8d8 #a6a6a6; padding:3px; margin-right:10px; width:90%; }
.extraVarsList tr td .email_address { border:1px solid; border-color:#a6a6a6 #d8d8d8 #d8d8d8 #a6a6a6; padding:3px; margin-right:10px; width:300px; }
.extraVarsList tr td .homepage { border:1px solid; border-color:#a6a6a6 #d8d8d8 #d8d8d8 #a6a6a6; padding:3px; margin-right:10px; width:300px; }
.extraVarsList tr td .tel { border:1px solid; border-color:#a6a6a6 #d8d8d8 #d8d8d8 #a6a6a6; padding:3px; margin-right:10px; width:40px; margin-right:10px;}
.extraVarsList tr td .textarea { border:1px solid; border-color:#a6a6a6 #d8d8d8 #d8d8d8 #a6a6a6; padding:3px; margin-right:10px; width:90%; height:80px; font-size:12px;}
.extraVarsList tr td ul { margin:0; padding:0; list-style:none; }
.extraVarsList tr td ul li { display:inline-block; margin-right:10px; }
.extraVarsList tr td ul li input { margin-right:5px; vertical-align:middle;}
.extraVarsList tr td .date { border:1px solid; border-color:#a6a6a6 #d8d8d8 #d8d8d8 #a6a6a6; padding:3px; margin-right:10px; width:100px; }
.extraVarsList tr td .address { border:1px solid; border-color:#a6a6a6 #d8d8d8 #d8d8d8 #a6a6a6; padding:3px; margin-right:10px; width:300px; }

View file

@ -1,35 +0,0 @@
@charset "utf-8";
/* board Title */
.boardHeader h1,
.boardHeader h2,
.boardHeader h3,
.boardHeader h4,
.boardHeader h5,
.boardHeader h6
{ border-bottom:3px solid #2895c0; }
/* board Information */
.articleNum { float:left; background:url(../images/cyan/iconArticle.gif) no-repeat left top; }
.articleNum strong { font:bold 11px Tahoma; color:#2895c0;}
/* account Navigation */
.accountNavigation li.join a { background:url(../images/cyan/iconMyInfo.gif) no-repeat left top; padding-left:14px; }
.accountNavigation li.myInfo a { background:url(../images/cyan/iconMyInfo.gif) no-repeat left top; padding-left:14px; }
/* style.list */
.boardList th { background:#ffffff url(../images/cyan/lineBoardListTh.gif) no-repeat left bottom; }
.boardList td.recommend { color:#2895c0; }
.boardList td .replyAndTrackback { color:#2895c0; }
.buttonTypeGo { background:url(../images/cyan/buttonTypeInput24.gif) no-repeat; }
/* pagination */
.pagenation strong { color:#2895c0; }
/* boardRead */
.boardRead .fileAttached li { background:url(../images/cyan/iconFile.gif) no-repeat left top;}
/* replyAndTrackback */
.buttonBox .replyAndTrackback a strong { color:#2895c0;}
.replyBox .fileAttached li { background:url(../images/cyan/iconFile.gif) no-repeat left top;}

View file

@ -1,35 +0,0 @@
@charset "utf-8";
/* board Title */
.boardHeader h1,
.boardHeader h2,
.boardHeader h3,
.boardHeader h4,
.boardHeader h5,
.boardHeader h6
{ border-bottom:3px solid #38b549; }
/* board Information */
.articleNum { float:left; background:url(../images/green/iconArticle.gif) no-repeat left top; }
.articleNum strong { font:bold 11px Tahoma; color:#ff6600;}
/* account Navigation */
.accountNavigation li.join a { background:url(../images/green/iconMyInfo.gif) no-repeat left top; padding-left:14px; }
.accountNavigation li.myInfo a { background:url(../images/green/iconMyInfo.gif) no-repeat left top; padding-left:14px; }
/* style.list */
.boardList th { background:#ffffff url(../images/green/lineBoardListTh.gif) no-repeat left bottom; }
.boardList td.recommend { color:#38b549; }
.boardList td .replyAndTrackback { color:#38b549; }
.buttonTypeGo { background:url(../images/green/buttonTypeInput24.gif) no-repeat; }
/* pagination */
.pagenation strong { color:#38b549; }
/* boardRead */
.boardRead .fileAttached li { background:url(../images/green/iconFile.gif) no-repeat left top;}
/* replyAndTrackback */
.buttonBox .replyAndTrackback a strong { color:#38b549;}
.replyBox .fileAttached li { background:url(../images/green/iconFile.gif) no-repeat left top;}

View file

@ -1,35 +0,0 @@
@charset "utf-8";
/* board Title */
.boardHeader h1,
.boardHeader h2,
.boardHeader h3,
.boardHeader h4,
.boardHeader h5,
.boardHeader h6
{ border-bottom:3px solid #ac19a9; }
/* board Information */
.articleNum { float:left; background:url(../images/purple/iconArticle.gif) no-repeat left top; }
.articleNum strong { font:bold 11px Tahoma; color:#b1ae00;}
/* account Navigation */
.accountNavigation li.join a { background:url(../images/purple/iconMyInfo.gif) no-repeat left top; padding-left:14px; }
.accountNavigation li.myInfo a { background:url(../images/purple/iconMyInfo.gif) no-repeat left top; padding-left:14px; }
/* style.list */
.boardList th { background:#ffffff url(../images/purple/lineBoardListTh.gif) no-repeat left bottom; }
.boardList td.recommend { color:#b1ae00; }
.boardList td .replyAndTrackback { color:#b1ae00; }
.buttonTypeGo { background:url(../images/purple/buttonTypeInput24.gif) no-repeat; }
/* pagination */
.pagenation strong { color:#b1ae00; }
/* boardRead */
.boardRead .fileAttached li { background:url(../images/purple/iconFile.gif) no-repeat left top;}
/* replyAndTrackback */
.buttonBox .replyAndTrackback a strong { color:#b1ae00;}
.replyBox .fileAttached li { background:url(../images/purple/iconFile.gif) no-repeat left top;}

View file

@ -1,35 +0,0 @@
@charset "utf-8";
/* board Title */
.boardHeader h1,
.boardHeader h2,
.boardHeader h3,
.boardHeader h4,
.boardHeader h5,
.boardHeader h6
{ border-bottom:3px solid #ed135a; }
/* board Information */
.articleNum { float:left; background:url(../images/red/iconArticle.gif) no-repeat left top; }
.articleNum strong { font:bold 11px Tahoma; color:#ff6600;}
/* account Navigation */
.accountNavigation li.join a { background:url(../images/red/iconMyInfo.gif) no-repeat left top; padding-left:14px; }
.accountNavigation li.myInfo a { background:url(../images/red/iconMyInfo.gif) no-repeat left top; padding-left:14px; }
/* style.list */
.boardList th { background:#ffffff url(../images/red/lineBoardListTh.gif) no-repeat left bottom; }
.boardList td.recommend { color:#ff6600; }
.boardList td .replyAndTrackback { color:#ff6600; }
.buttonTypeGo { background:url(../images/red/buttonTypeInput24.gif) no-repeat; }
/* pagination */
.pagenation strong { color:#ff6600; }
/* boardRead */
.boardRead .fileAttached li { background:url(../images/red/iconFile.gif) no-repeat left top;}
/* replyAndTrackback */
.buttonBox .replyAndTrackback a strong { color:#ff6600;}
.replyBox .fileAttached li { background:url(../images/red/iconFile.gif) no-repeat left top;}

View file

@ -1,35 +0,0 @@
@charset "utf-8";
/* board Title */
.boardHeader h1,
.boardHeader h2,
.boardHeader h3,
.boardHeader h4,
.boardHeader h5,
.boardHeader h6
{ border-bottom:3px solid #fe3614; }
/* board Information */
.articleNum { float:left; background:url(../images/white/iconArticle.gif) no-repeat left top; }
.articleNum strong { font:bold 11px Tahoma; color:#ff6600;}
/* account Navigation */
.accountNavigation li.join a { background:url(../images/white/iconMyInfo.gif) no-repeat left top; padding-left:14px; }
.accountNavigation li.myInfo a { background:url(../images/white/iconMyInfo.gif) no-repeat left top; padding-left:14px; }
/* boardRead */
.boardRead .fileAttached li { background:url(../images/white/iconFile.gif) no-repeat left top;}
/* style.list */
.boardList th { background:#ffffff url(../images/white/lineBoardListTh.gif) no-repeat left bottom; }
.boardList td.recommend { color:#ff6600; }
.boardList td .replyAndTrackback { color:#ff6600; }
.buttonTypeGo { background:url(../images/white/buttonTypeInput24.gif) no-repeat; }
/* pagination */
.pagenation strong { color:#ff6600; }
/* replyAndTrackback */
.buttonBox .replyAndTrackback a strong { color:#ff6600;}
.replyBox .fileAttached li { background:url(../images/white/iconFile.gif) no-repeat left top;}

View file

@ -1,23 +0,0 @@
<!--#include("header.html")-->
<div class="smallBox w268">
<div class="header">
<h3>{$lang->confirm_delete}</h3>
</div>
<form action="./" method="get" onsubmit="return procFilter(this, delete_comment)">
<input type="hidden" name="mid" value="{$mid}" />
<input type="hidden" name="page" value="{$page}" />
<input type="hidden" name="document_srl" value="{$oComment->get('document_srl')}" />
<input type="hidden" name="comment_srl" value="{$oComment->get('comment_srl')}" />
<div class="inputPassword tCenter">
<span class="button {$btn_class}"><input type="submit" value="{$lang->cmd_delete}" accesskey="s" /></span>
<a href="{getUrl('act','','comment_srl','')}" class="button {$btn_class}"><span>{$lang->cmd_cancel}</span></a>
</div>
</form>
</div>
<!--#include("footer.html")-->

View file

@ -1,22 +0,0 @@
<!--#include("header.html")-->
<div class="smallBox w268">
<div class="header">
<h3>{$lang->confirm_delete}</h3>
</div>
<form action="./" method="get" onsubmit="return procFilter(this, delete_document)">
<input type="hidden" name="mid" value="{$mid}" />
<input type="hidden" name="page" value="{$page}" />
<input type="hidden" name="document_srl" value="{$document_srl}" />
<div class="inputPassword tCenter">
<span class="button {$btn_class}"><input type="submit" value="{$lang->cmd_delete}" accesskey="s" /></span>
<a href="{getUrl('act','')}" class="button {$btn_class}"><span>{$lang->cmd_cancel}</span></a>
</div>
</form>
</div>
<!--#include("footer.html")-->

View file

@ -1,24 +0,0 @@
<!--#include("header.html")-->
<div class="smallBox w268">
<div class="header">
<h3>{$lang->confirm_delete}</h3>
</div>
<form action="./" method="get" onsubmit="return procFilter(this, delete_trackback)">
<input type="hidden" name="mid" value="{$mid}" />
<input type="hidden" name="page" value="{$page}" />
<input type="hidden" name="document_srl" value="{$document_srl}" />
<input type="hidden" name="trackback_srl" value="{$trackback_srl}" />
<div class="inputPassword tCenter">
<span class="button {$btn_class}"><input type="submit" value="{$lang->cmd_delete}" accesskey="s" /></span>
<a href="{getUrl('act','')}" class="button {$btn_class}"><span>{$lang->cmd_cancel}</span></a>
</div>
</form>
</div>
<!--#include("footer.html")-->

View file

@ -1,2 +0,0 @@
<!-- 하단 텍스트 출력 -->
{$module_info->footer_text}

View file

@ -1,122 +0,0 @@
<!--// 컬러셋 체크 -->
<!--@if(!$module_info->colorset)-->
{@$module_info->colorset = "white"}
<!--@end-->
<!--// CSS 파일 로드 (컬러셋에 따라서) -->
<!--%import("css/common.css")-->
<!--@if($module_info->colorset == "cyan")--> <!--%import("css/cyan.css")-->
<!--@elseif($module_info->colorset == "red")--> <!--%import("css/red.css")-->
<!--@elseif($module_info->colorset == "green")--> <!--%import("css/green.css")-->
<!--@elseif($module_info->colorset == "purple")--> <!--%import("css/purple.css")-->
<!--@elseif($module_info->colorset == "black")-->
<!--%import("css/black.css")-->
{@ $btn_class = "black" }
<!--@else--> <!--%import("css/white.css")-->
<!--@end-->
<!--// 스킨 설정중 새글의 시간 설정 값이 없으면 임의로 지정 -->
<!--@if(!$module_info->duration_new = (int)$module_info->duration_new)-->{@ $module_info->duration_new = 12 }<!--@end-->
<!--@if(!$module_info->content_cut_size = (int)$module_info->content_cut_size)-->{@ $module_info->content_cut_size= 240 }<!--@end-->
<!--// 스킨 설정중 썸네일 관련 항목을 지정 -->
<!--@if(!$module_info->thumbnail_type)-->{@ $module_info->thumbnail_type = 'crop'; }<!--@end-->
<!--@if(!$module_info->thumbnail_width)-->{@ $module_info->thumbnail_width = 100; }<!--@end-->
<!--@if(!$module_info->thumbnail_height)-->{@ $module_info->thumbnail_height = 100; }<!--@end-->
<!--// 정렬에 따른 아이콘 미리 지정 -->
<!--@if($order_type == "desc")-->
{@ $order_icon = "buttonDescending.gif" }
{@ $order_type = "asc"; }
<!--@else-->
{@ $order_icon = "buttonAscending.gif" }
{@ $order_type = "desc"; }
<!--@end-->
<!--// 사용자가 선택한 게시판 형태에 따른 설정(포럼형은 적용 안됨) -->
<!--@if($module_info->default_style != 'forum' && $module_info->default_style != 'blog')-->
<!--@if($listStyle=='gallery')-->
{@ $module_info->default_style = 'gallery'}
<!--@elseif($listStyle=='webzine')-->
{@ $module_info->default_style = 'webzine'}
<!--@elseif($listStyle=='list')-->
{@ $module_info->default_style = 'list'}
<!--@end-->
<!--@end-->
<!--@if(!$module_info->header_title_format)-->
{@ $module_info->header_title_format = 'h3'}
<!--@end-->
<!--// 상단 텍스트 출력 -->
{$module_info->header_text}
<!-- 스킨의 제목/간단한 설명 출력 -->
<!--@if($module_info->title)-->
<div class="boardHeader">
<div class="boardHeaderBorder">
<{$module_info->header_title_format}>{$module_info->title}<!--@if($module_info->sub_title)--> - {$module_info->sub_title}<!--@end--></{$module_info->header_title_format}>
</div>
</div>
<!--@end-->
<!-- 스킨의 상세 설명 -->
<!--@if($module_info->comment)-->
<div class="boardDescription">{$module_info->comment}</div>
<!--@end-->
<!-- 게시판 정보 -->
<!--@if($module_info->display_login_info != 'N' || $module_info->display_setup_button != 'N')-->
<div class="boardInformation">
<!-- 게시물 수 -->
<!--@if($total_count && $module_info->default_style != 'blog')-->
<div class="articleNum">{$lang->document_count} <strong>{number_format($total_count)}</strong></div>
<!--@end-->
<!-- 로그인 정보 -->
<ul class="accountNavigation">
<!--// 로그인 되어 있을 경우 -->
<!--@if($is_logged)-->
<!--// 관리자이면 설정 버튼 출력 -->
<!--@if($grant->manager && $module_info->display_setup_button != 'N')-->
<li class="setup"><a href="{getUrl('act','dispBoardAdminBoardInfo')}">{$lang->cmd_setup}</a></li>
<!--@end-->
<!--// 최고관리자이면 관리자 페이지 버튼 출력 -->
<!--@if($logged_info->is_admin == 'Y' && $module_info->display_setup_button != 'N')-->
<li class="admin"><a href="{getUrl('','module','admin','act','dispBoardAdminContent')}" onclick="window.open(this.href); return false;">{$lang->cmd_management}</a></li>
<!--@end-->
<!--// 회원정보 버튼 출력 -->
<!--@if($module_info->display_login_info != 'N')-->
<li class="myInfo"><a href="{getUrl('act','dispMemberInfo')}">{$lang->cmd_view_member_info}</a></li>
<li class="loginAndLogout"><a href="{getUrl('act','dispMemberLogout')}">{$lang->cmd_logout}</a></li>
<!--@end-->
<!--// 로그인 되어 있지 않고 회원정보 버튼 출력하도록 되어있으면 -->
<!--@elseif(!$is_logged && $module_info->display_login_info != 'N')-->
<li class="join"><a href="{getUrl('act','dispMemberSignUpForm')}">{$lang->cmd_signup}</a></li>
<li class="loginAndLogout"><a href="{getUrl('act','dispMemberLoginForm')}">{$lang->cmd_login}</a></li>
<!--@end-->
<!--@if($rss_url)-->
<li class="rss"><a href="{$rss_url}"><img src="./images/{$module_info->colorset}/iconRss.gif" alt="RSS" width="13" height="13" /></a></li>
<!--@end-->
<li class="skin_info"><a href="{getUrl('','module','module','act','dispModuleSkinInfo','selected_module',$module_info->module, 'skin', $module_info->skin)}" onclick="popopen(this.href,'skinInfo'); return false;"><img src="./images/{$module_info->colorset}/buttonHelp.gif" alt="Skin Info" width="13" height="13"/></a></li>
<li class="tag_info"><a href="{getUrl('act','dispBoardTagList')}"><img src="./images/{$module_info->colorset}/iconAllTags.gif" alt="Tag list" width="13" height="13"/></a></li>
<!--// 목록형태 (포럼형/ 블로그형이 기본으로 되어 있을 경우 다른 형태를 지정 못하게 함) -->
<!--@if($module_info->default_style != 'forum' && $module_info->default_style != 'blog')-->
<li class="listType"><a href="{getUrl('listStyle','list','act','','document_srl','')}"><img src="./images/{$module_info->colorset}/typeList.gif" border="0" width="13" height="13" alt="List" /></a></li>
<li class="listType"><a href="{getUrl('listStyle','webzine','act','','document_srl','')}"><img src="./images/{$module_info->colorset}/typeWebzine.gif" border="0" width="13" height="13" alt="Webzine" /></a></li>
<li class="listType"><a href="{getUrl('listStyle','gallery','act','','document_srl','')}"><img src="./images/{$module_info->colorset}/typeGallery.gif" border="0" width="13" height="13" alt="Gallery" /></a></li>
<!--@end-->
</ul>
</div>
<!--@end-->

Binary file not shown.

Before

Width:  |  Height:  |  Size: 189 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 101 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 407 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 400 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 419 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 170 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 216 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 88 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 220 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 211 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 146 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 101 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 125 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 106 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 155 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 101 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 525 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 565 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 133 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 149 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 166 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 218 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 46 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 51 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 152 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 52 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 47 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 51 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 151 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 51 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 46 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 58 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 61 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 46 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 101 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 70 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 170 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 115 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 216 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 88 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 220 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 46 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 321 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 452 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 106 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 54 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 988 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 155 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 205 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 101 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 45 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 363 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 565 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 133 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 149 B

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