mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-01-14 00:39:57 +09:00
git-svn-id: http://xe-core.googlecode.com/svn/trunk@1221 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
parent
5e35d9ff2f
commit
7b910c0f18
51 changed files with 3233 additions and 0 deletions
58
modules/blog/board.class.php
Normal file
58
modules/blog/board.class.php
Normal file
|
|
@ -0,0 +1,58 @@
|
|||
<?php
|
||||
/**
|
||||
* @class board
|
||||
* @author zero (zero@nzeo.com)
|
||||
* @brief board 모듈의 high class
|
||||
**/
|
||||
|
||||
class board extends ModuleObject {
|
||||
|
||||
var $search_option = array('title','content','title_content','user_name','user_id','tag'); ///< 검색 옵션
|
||||
|
||||
var $skin = "default"; ///< 스킨 이름
|
||||
var $list_count = 20; ///< 한 페이지에 나타날 글의 수
|
||||
var $page_count = 10; ///< 페이지의 수
|
||||
var $category_list = NULL; ///< 카테고리 목록
|
||||
|
||||
var $editor = 'default'; ///< 에디터 종류
|
||||
|
||||
/**
|
||||
* @brief 설치시 추가 작업이 필요할시 구현
|
||||
**/
|
||||
function moduleInstall() {
|
||||
// action forward에 등록 (관리자 모드에서 사용하기 위함)
|
||||
$oModuleController = &getController('module');
|
||||
$oModuleController->insertActionForward('board', 'view', 'dispBoardAdminContent');
|
||||
$oModuleController->insertActionForward('board', 'view', 'dispBoardAdminModuleConfig');
|
||||
$oModuleController->insertActionForward('board', 'view', 'dispBoardAdminBoardInfo');
|
||||
$oModuleController->insertActionForward('board', 'view', 'dispBoardAdminInsertBoard');
|
||||
$oModuleController->insertActionForward('board', 'view', 'dispBoardAdminDeleteBoard');
|
||||
$oModuleController->insertActionForward('board', 'view', 'dispBoardAdminSkinInfo');
|
||||
$oModuleController->insertActionForward('board', 'view', 'dispBoardAdminCategoryInfo');
|
||||
$oModuleController->insertActionForward('board', 'view', 'dispBoardAdminGrantInfo');
|
||||
//$oModuleController->insertActionForward('board', 'controller', 'procBoardAdminInsertGrant');
|
||||
$oModuleController->insertActionForward('board', 'controller', 'procBoardAdminUpdateSkinInfo');
|
||||
//$oModuleController->insertActionForward('board', 'controller', 'procBoardAdminDeleteBoard');
|
||||
//$oModuleController->insertActionForward('board', 'controller', 'procBoardAdminInsertCategory');
|
||||
//$oModuleController->insertActionForward('board', 'controller', 'procBoardAdminUpdateCategory');
|
||||
//$oModuleController->insertActionForward('board', 'controller', 'procBoardAdminInsertConfig');
|
||||
|
||||
return new Object();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 설치가 이상이 없는지 체크하는 method
|
||||
**/
|
||||
function moduleIsInstalled() {
|
||||
return new Object();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 업데이트 실행
|
||||
**/
|
||||
function moduleUpdate() {
|
||||
return new Object();
|
||||
}
|
||||
|
||||
}
|
||||
?>
|
||||
519
modules/blog/board.controller.php
Normal file
519
modules/blog/board.controller.php
Normal file
|
|
@ -0,0 +1,519 @@
|
|||
<?php
|
||||
/**
|
||||
* @class boardController
|
||||
* @author zero (zero@nzeo.com)
|
||||
* @brief board 모듈의 Controller class
|
||||
**/
|
||||
|
||||
class boardController extends board {
|
||||
|
||||
/**
|
||||
* @brief 초기화
|
||||
**/
|
||||
function init() {
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 문서 입력
|
||||
**/
|
||||
function procBoardInsertDocument() {
|
||||
// 글작성시 필요한 변수를 세팅
|
||||
$obj = Context::getRequestVars();
|
||||
$obj->module_srl = $this->module_srl;
|
||||
if($obj->is_notice!='Y'||!$this->grant->manager) $obj->is_notice = 'N';
|
||||
|
||||
// document module의 model 객체 생성
|
||||
$oDocumentModel = &getModel('document');
|
||||
|
||||
// document module의 controller 객체 생성
|
||||
$oDocumentController = &getController('document');
|
||||
|
||||
// 이미 존재하는 글인지 체크
|
||||
$document = $oDocumentModel->getDocument($obj->document_srl, $this->grant->manager);
|
||||
|
||||
// 이미 존재하는 경우 수정
|
||||
if($document->document_srl == $obj->document_srl) {
|
||||
$output = $oDocumentController->updateDocument($document, $obj);
|
||||
$msg_code = 'success_updated';
|
||||
|
||||
// 그렇지 않으면 신규 등록
|
||||
} else {
|
||||
$output = $oDocumentController->insertDocument($obj);
|
||||
$msg_code = 'success_registed';
|
||||
$obj->document_srl = $output->get('document_srl');
|
||||
}
|
||||
|
||||
// 오류 발생시 멈춤
|
||||
if(!$output->toBool()) return $output;
|
||||
|
||||
// 트랙백이 있으면 트랙백 발송
|
||||
$trackback_url = Context::get('trackback_url');
|
||||
$trackback_charset = Context::get('trackback_charset');
|
||||
if($trackback_url) {
|
||||
$oTrackbackController = &getController('trackback');
|
||||
$oTrackbackController->sendTrackback($obj, $trackback_url, $trackback_charset);
|
||||
}
|
||||
|
||||
// 결과를 리턴
|
||||
$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() {
|
||||
// 댓글 입력에 필요한 데이터 추출
|
||||
$obj = Context::gets('document_srl','comment_srl','parent_srl','content','password','nick_name','nick_name','member_srl','email_address','homepage');
|
||||
$obj->module_srl = $this->module_srl;
|
||||
|
||||
// comment 모듈의 model 객체 생성
|
||||
$oCommentModel = &getModel('comment');
|
||||
|
||||
// comment 모듈의 controller 객체 생성
|
||||
$oCommentController = &getController('comment');
|
||||
|
||||
// comment_srl이 존재하는지 체크
|
||||
$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);
|
||||
}
|
||||
|
||||
// comment_srl이 있으면 수정으로
|
||||
} else {
|
||||
$obj->parent_srl = $comment->parent_srl;
|
||||
$output = $oCommentController->updateComment($obj);
|
||||
$comment_srl = $obj->comment_srl;
|
||||
}
|
||||
|
||||
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', $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 = md5(Context::get('password'));
|
||||
$document_srl = Context::get('document_srl');
|
||||
$comment_srl = Context::get('comment_srl');
|
||||
|
||||
// comment_srl이 있을 경우 댓글이 대상
|
||||
if($comment_srl) {
|
||||
// 문서번호에 해당하는 글이 있는지 확인
|
||||
$oCommentModel = &getModel('comment');
|
||||
$data = $oCommentModel->getComment($comment_srl);
|
||||
// comment_srl이 없으면 문서가 대상
|
||||
} else {
|
||||
// 문서번호에 해당하는 글이 있는지 확인
|
||||
$oDocumentModel = &getModel('document');
|
||||
$data = $oDocumentModel->getDocument($document_srl);
|
||||
}
|
||||
|
||||
// 글이 없을 경우 에러
|
||||
if(!$data) return new Object(-1, 'msg_invalid_request');
|
||||
|
||||
// 문서의 비밀번호와 입력한 비밀번호의 비교
|
||||
if($data->password != $password) return new Object(-1, 'msg_invalid_password');
|
||||
|
||||
// 해당 글에 대한 권한 부여
|
||||
if($comment_srl) {
|
||||
$oCommentController = &getController('comment');
|
||||
$oCommentController->addGrant($comment_srl);
|
||||
} else {
|
||||
$oDocumentController = &getController('document');
|
||||
$oDocumentController->addGrant($document_srl);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 관리자가 글 선택시 세션에 담음
|
||||
**/
|
||||
function procBoardAdminAddCart() {
|
||||
$document_srl = Context::get('srl');
|
||||
$check_flag = Context::get('check_flag');
|
||||
if(!$document_srl || !in_array($check_flag, array('add','remove'))) return;
|
||||
|
||||
$flag_list = $_SESSION['document_management'][$this->module_srl];
|
||||
|
||||
if($check_flag == 'remove') unset($flag_list[$document_srl]);
|
||||
else $flag_list[$document_srl] = true;
|
||||
|
||||
$_SESSION['document_management'][$this->module_srl] = $flag_list;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 세션에 담긴 선택글의 이동/ 삭제
|
||||
**/
|
||||
function procBoardAdminManageCheckedDocument() {
|
||||
$type = Context::get('type');
|
||||
$module_srl = Context::get('target_board');
|
||||
$flag_list = $_SESSION['document_management'][$this->module_srl];
|
||||
|
||||
$document_srl_list = array_keys($flag_list);
|
||||
|
||||
$oDocumentController = &getController('document');
|
||||
$document_srl_count = count($document_srl_list);
|
||||
|
||||
if($type == 'move') {
|
||||
if(!$module_srl) return new Object(-1, 'fail_to_move');
|
||||
else {
|
||||
$output = $oDocumentController->moveDocumentModule($document_srl_list, $module_srl, $this->module_srl);
|
||||
if(!$output->toBool()) return new Object(-1, 'fail_to_move');
|
||||
$msg_code = 'success_moved';
|
||||
$_SESSION['document_management'][$this->module_srl] = null;
|
||||
}
|
||||
|
||||
} elseif($type =='delete') {
|
||||
$oDB = &DB::getInstance();
|
||||
$oDB->begin();
|
||||
for($i=0;$i<$document_srl_count;$i++) {
|
||||
$document_srl = $document_srl_list[$i];
|
||||
$output = $oDocumentController->deleteDocument($document_srl, true);
|
||||
if(!$output->toBool()) return new Object(-1, 'fail_to_delete');
|
||||
}
|
||||
$oDB->commit();
|
||||
$msg_code = 'success_deleted';
|
||||
$_SESSION['document_management'][$this->module_srl] = null;
|
||||
}
|
||||
|
||||
$this->setMessage($msg_code);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 권한 추가
|
||||
**/
|
||||
function procBoardAdminInsertGrant() {
|
||||
$module_srl = Context::get('module_srl');
|
||||
|
||||
// 현 모듈의 권한 목록을 가져옴
|
||||
$grant_list = $this->xml_info->grant;
|
||||
|
||||
if(count($grant_list)) {
|
||||
foreach($grant_list as $key => $val) {
|
||||
$group_srls = Context::get($key);
|
||||
if($group_srls) $arr_grant[$key] = explode('|@|',$group_srls);
|
||||
}
|
||||
$grants = serialize($arr_grant);
|
||||
}
|
||||
|
||||
$oModuleController = &getController('module');
|
||||
$oModuleController->updateModuleGrant($module_srl, $grants);
|
||||
|
||||
$this->add('module_srl',Context::get('module_srl'));
|
||||
$this->setMessage('success_registed');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 스킨 정보 업데이트
|
||||
**/
|
||||
function procBoardAdminUpdateSkinInfo() {
|
||||
// module_srl에 해당하는 정보들을 가져오기
|
||||
$module_srl = Context::get('module_srl');
|
||||
$oModuleModel = &getModel('module');
|
||||
$module_info = $oModuleModel->getModuleInfoByModuleSrl($module_srl);
|
||||
$skin = $module_info->skin;
|
||||
|
||||
// 스킨의 정보르 구해옴 (extra_vars를 체크하기 위해서)
|
||||
$skin_info = $oModuleModel->loadSkinInfo($this->module_path, $skin);
|
||||
|
||||
// 입력받은 변수들을 체크 (mo, act, module_srl, page등 기본적인 변수들 없앰)
|
||||
$obj = Context::getRequestVars();
|
||||
unset($obj->act);
|
||||
unset($obj->module_srl);
|
||||
unset($obj->page);
|
||||
|
||||
// 원 skin_info에서 extra_vars의 type이 image일 경우 별도 처리를 해줌
|
||||
if($skin_info->extra_vars) {
|
||||
foreach($skin_info->extra_vars as $vars) {
|
||||
if($vars->type!='image') continue;
|
||||
|
||||
$image_obj = $obj->{$vars->name};
|
||||
|
||||
// 삭제 요청에 대한 변수를 구함
|
||||
$del_var = $obj->{"del_".$vars->name};
|
||||
unset($obj->{"del_".$vars->name});
|
||||
if($del_var == 'Y') {
|
||||
@unlink($module_info->{$vars->name});
|
||||
continue;
|
||||
}
|
||||
|
||||
// 업로드 되지 않았다면 이전 데이터를 그대로 사용
|
||||
if(!$image_obj['tmp_name']) {
|
||||
$obj->{$vars->name} = $module_info->{$vars->name};
|
||||
continue;
|
||||
}
|
||||
|
||||
// 정상적으로 업로드된 파일이 아니면 무시
|
||||
if(!is_uploaded_file($image_obj['tmp_name'])) {
|
||||
unset($obj->{$vars->name});
|
||||
continue;
|
||||
}
|
||||
|
||||
// 이미지 파일이 아니어도 무시
|
||||
if(!eregi("\.(jpg|jpeg|gif|png)$", $image_obj['name'])) {
|
||||
unset($obj->{$vars->name});
|
||||
continue;
|
||||
}
|
||||
|
||||
// 경로를 정해서 업로드
|
||||
$path = sprintf("./files/attach/images/%s/", $module_srl);
|
||||
|
||||
// 디렉토리 생성
|
||||
if(!FileHandler::makeDir($path)) return false;
|
||||
|
||||
$filename = $path.$image_obj['name'];
|
||||
|
||||
// 파일 이동
|
||||
if(!move_uploaded_file($image_obj['tmp_name'], $filename)) {
|
||||
unset($obj->{$vars->name});
|
||||
continue;
|
||||
}
|
||||
|
||||
// 변수를 바꿈
|
||||
unset($obj->{$vars->name});
|
||||
$obj->{$vars->name} = $filename;
|
||||
}
|
||||
}
|
||||
|
||||
// serialize하여 저장
|
||||
$skin_vars = serialize($obj);
|
||||
|
||||
$oModuleController = &getController('module');
|
||||
$oModuleController->updateModuleSkinVars($module_srl, $skin_vars);
|
||||
|
||||
$this->setTemplatePath($this->module_path.'tpl');
|
||||
$this->setTemplateFile("top_refresh.html");
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 게시판 추가
|
||||
**/
|
||||
function procBoardAdminInsertBoard() {
|
||||
// 일단 입력된 값들을 모두 받아서 db 입력항목과 그외 것으로 분리
|
||||
$args = Context::gets('module_srl','module_category_srl','board_name','skin','browser_title','description','is_default','header_text','footer_text','admin_id');
|
||||
$args->module = 'board';
|
||||
$args->mid = $args->board_name;
|
||||
unset($args->board_name);
|
||||
if($args->is_default!='Y') $args->is_default = 'N';
|
||||
|
||||
// 기본 값외의 것들을 정리
|
||||
$extra_var = delObjectVars(Context::getRequestVars(), $args);
|
||||
if($extra_var->use_category!='Y') $extra_var->use_category = 'N';
|
||||
unset($extra_var->mo);
|
||||
unset($extra_var->act);
|
||||
unset($extra_var->page);
|
||||
unset($extra_var->board_name);
|
||||
|
||||
// module_srl이 넘어오면 원 모듈이 있는지 확인
|
||||
if($args->module_srl) {
|
||||
$oModuleModel = &getModel('module');
|
||||
$module_info = $oModuleModel->getModuleInfoByModuleSrl($args->module_srl);
|
||||
|
||||
// 만약 원래 모듈이 없으면 새로 입력하기 위한 처리
|
||||
if($module_info->module_srl != $args->module_srl) unset($args->module_srl);
|
||||
}
|
||||
|
||||
// $extra_var를 serialize
|
||||
$args->extra_vars = serialize($extra_var);
|
||||
|
||||
// module 모듈의 controller 객체 생성
|
||||
$oModuleController = &getController('module');
|
||||
|
||||
// is_default=='Y' 이면
|
||||
if($args->is_default=='Y') $oModuleController->clearDefaultModule();
|
||||
|
||||
// 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 procBoardAdminInsertCategory() {
|
||||
// 일단 입력된 값들을 모두 받아서 db 입력항목과 그외 것으로 분리
|
||||
$module_srl = Context::get('module_srl');
|
||||
$category_title = Context::get('category_title');
|
||||
|
||||
// module_srl이 있으면 원본을 구해온다
|
||||
$oDocumentController = &getController('document');
|
||||
$output = $oDocumentController->insertCategory($module_srl, $category_title);
|
||||
if(!$output->toBool()) return $output;
|
||||
|
||||
$this->add('page',Context::get('page'));
|
||||
$this->add('module_srl',$module_srl);
|
||||
$this->setMessage('success_registed');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 카테고리의 내용 수정
|
||||
**/
|
||||
function procBoardAdminUpdateCategory() {
|
||||
$module_srl = Context::get('module_srl');
|
||||
$category_srl = Context::get('category_srl');
|
||||
$mode = Context::get('mode');
|
||||
|
||||
$oDocumentModel = &getModel('document');
|
||||
$oDocumentController = &getController('document');
|
||||
|
||||
switch($mode) {
|
||||
case 'up' :
|
||||
$output = $oDocumentController->moveCategoryUp($category_srl);
|
||||
$msg_code = 'success_moved';
|
||||
break;
|
||||
case 'down' :
|
||||
$output = $oDocumentController->moveCategoryDown($category_srl);
|
||||
$msg_code = 'success_moved';
|
||||
break;
|
||||
case 'delete' :
|
||||
$output = $oDocumentController->deleteCategory($category_srl);
|
||||
$msg_code = 'success_deleted';
|
||||
break;
|
||||
case 'update' :
|
||||
$selected_category = $oDocumentModel->getCategory($category_srl);
|
||||
$args->category_srl = $selected_category->category_srl;
|
||||
$args->title = Context::get('category_title');
|
||||
$args->list_order = $selected_category->list_order;
|
||||
$output = $oDocumentController->updateCategory($args);
|
||||
$msg_code = 'success_updated';
|
||||
break;
|
||||
}
|
||||
if(!$output->toBool()) return $output;
|
||||
|
||||
$this->add('module_srl', $module_srl);
|
||||
$this->setMessage($msg_code);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 게시판 기본 정보의 추가
|
||||
**/
|
||||
function procBoardAdminInsertConfig() {
|
||||
// 기본 정보를 받음
|
||||
$args = Context::gets('test');
|
||||
|
||||
// module Controller 객체 생성하여 입력
|
||||
$oModuleController = &getController('module');
|
||||
$output = $oModuleController->insertModuleConfig('board',$args);
|
||||
return $output;
|
||||
}
|
||||
}
|
||||
?>
|
||||
617
modules/blog/board.view.php
Normal file
617
modules/blog/board.view.php
Normal file
|
|
@ -0,0 +1,617 @@
|
|||
<?php
|
||||
/**
|
||||
* @class boardView
|
||||
* @author zero (zero@nzeo.com)
|
||||
* @brief board 모듈의 View class
|
||||
**/
|
||||
|
||||
class boardView extends board {
|
||||
|
||||
/**
|
||||
* @brief 초기화
|
||||
*
|
||||
* board 모듈은 일반 사용과 관리자용으로 나누어진다.\n
|
||||
**/
|
||||
function init() {
|
||||
if(substr_count($this->act, 'Admin')) $this->initAdmin();
|
||||
else $this->initNormal();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 관리자 act 호출시에 관련 정보들 세팅해줌
|
||||
**/
|
||||
function initAdmin() {
|
||||
// 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 {
|
||||
$this->module_info = $module_info;
|
||||
Context::set('module_info',$module_info);
|
||||
}
|
||||
}
|
||||
|
||||
// 모듈 카테고리 목록을 구함
|
||||
$module_category = $oModuleModel->getModuleCategories();
|
||||
Context::set('module_category', $module_category);
|
||||
|
||||
// 템플릿 경로 지정 (board의 경우 tpl에 관리자용 템플릿 모아놓음)
|
||||
$template_path = sprintf("%stpl/",$this->module_path);
|
||||
$this->setTemplatePath($template_path);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 일반 게시판 호출시에 관련 정보를 세팅해줌
|
||||
**/
|
||||
function initNormal() {
|
||||
// 카테고리를 사용하는지 확인후 사용시 카테고리 목록을 구해와서 Context에 세팅
|
||||
if($this->module_info->use_category=='Y') {
|
||||
$oDocumentModel = &getModel('document');
|
||||
$this->category_list = $oDocumentModel->getCategoryList($this->module_srl);
|
||||
Context::set('category_list', $this->category_list);
|
||||
}
|
||||
|
||||
// 템플릿에서 사용할 변수를 Context::set()
|
||||
if($this->module_srl) Context::set('module_srl',$this->module_srl);
|
||||
|
||||
Context::set('module_info',$this->module_info);
|
||||
|
||||
// 기본 모듈 정보들 설정
|
||||
$this->list_count = $this->module_info->list_count?$this->module_info->list_count:20;
|
||||
$this->page_count = $this->module_info->page_count?$this->module_info->page_count:10;
|
||||
|
||||
// 스킨 템플릿 경로 지정
|
||||
$template_path = sprintf("%sskins/%s/",$this->module_path, $this->skin);
|
||||
$this->setTemplatePath($template_path);
|
||||
|
||||
// rss url
|
||||
if($this->grant->view) Context::set('rss_url', getUrl('','mid',$this->mid,'act','dispBoardRss'));
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 목록 및 선택된 글 출력
|
||||
**/
|
||||
function dispBoardContent() {
|
||||
// 권한 체크
|
||||
if(!$this->grant->list) return $this->dispBoardMessage('msg_not_permitted');
|
||||
|
||||
// 목록 구현에 필요한 변수들을 가져온다
|
||||
$document_srl = Context::get('document_srl');
|
||||
$page = Context::get('page');
|
||||
|
||||
// document 객체를 생성. 기본 데이터 구조의 경우 document모듈만 쓰면 만사 해결.. -_-;
|
||||
$oDocumentModel = &getModel('document');
|
||||
|
||||
// document_srl이 있다면 해당 글을 구해오자
|
||||
if($this->grant->view && $document_srl) {
|
||||
|
||||
// 글을 구함
|
||||
$document = $oDocumentModel->getDocument($document_srl, $this->grant->manager, true);
|
||||
|
||||
// 찾아지지 않았다면 초기화
|
||||
if($document->document_srl != $document_srl) {
|
||||
unset($document);
|
||||
unset($document_srl);
|
||||
Context::set('document_srl','',true);
|
||||
|
||||
// 글이 찾아졌으면 댓글 권한과 허용 여부를 체크하여 댓글 에디터 세팅
|
||||
} elseif($this->grant->write_comment && $document->allow_comment == 'Y' && $document->lock_comment != 'Y') {
|
||||
|
||||
// 브라우저 타이틀
|
||||
$browser_title = $this->module_info->browser_title.' - '.$document->title;
|
||||
Context::setBrowserTitle($browser_title);
|
||||
|
||||
// 댓글
|
||||
$this->setCommentEditor();
|
||||
}
|
||||
|
||||
Context::set('document', $document);
|
||||
}
|
||||
|
||||
// 만약 document_srl은 있는데 page가 없다면 글만 호출된 경우 page를 구해서 세팅해주자..
|
||||
if($document_srl && !$page) {
|
||||
$page = $oDocumentModel->getDocumentPage($document_srl, $this->module_srl, $this->list_count);
|
||||
Context::set('page', $page);
|
||||
}
|
||||
|
||||
// 목록을 구하기 위한 옵션
|
||||
$args->module_srl = $this->module_srl; ///< 현재 모듈의 module_srl
|
||||
$args->page = $page; ///< 페이지
|
||||
$args->list_count = $this->list_count; ///< 한페이지에 보여줄 글 수
|
||||
$args->page_count = $this->page_count; ///< 페이지 네비게이션에 나타날 페이지의 수
|
||||
|
||||
// 검색 옵션
|
||||
$args->search_target = Context::get('search_target'); ///< 검색 대상 (title, contents...)
|
||||
$args->search_keyword = Context::get('search_keyword'); ///< 검색어
|
||||
if($this->module_info->use_category=='Y') $args->category_srl = Context::get('category'); ///< 카테고리 사용시 선택된 카테고리
|
||||
|
||||
$args->sort_index = 'list_order'; ///< 소팅 값
|
||||
|
||||
// 목록 구함, document->getDocumentList 에서 걍 알아서 다 해버리는 구조이다... (아.. 이거 나쁜 버릇인데.. ㅡ.ㅜ 어쩔수 없다)
|
||||
$output = $oDocumentModel->getDocumentList($args);
|
||||
|
||||
// 템플릿에 쓰기 위해서 document_model::getDocumentList() 의 return object에 있는 값들을 세팅
|
||||
Context::set('total_count', $output->total_count);
|
||||
Context::set('total_page', $output->total_page);
|
||||
Context::set('page', $output->page);
|
||||
Context::set('document_list', $output->data);
|
||||
Context::set('page_navigation', $output->page_navigation);
|
||||
|
||||
// 템플릿에서 사용할 검색옵션 세팅
|
||||
$count_search_option = count($this->search_option);
|
||||
for($i=0;$i<$count_search_option;$i++) {
|
||||
$search_option[$this->search_option[$i]] = Context::getLang($this->search_option[$i]);
|
||||
}
|
||||
Context::set('search_option', $search_option);
|
||||
|
||||
// 관리자일 경우 체크한 문서들의 목록을 세팅
|
||||
if($this->grant->is_admin) {
|
||||
Context::set('check_list',$_SESSION['document_management'][$this->module_srl]);
|
||||
}
|
||||
|
||||
$this->setTemplateFile('list');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 글 작성 화면 출력
|
||||
**/
|
||||
function dispBoardWrite() {
|
||||
// 권한 체크
|
||||
if(!$this->grant->write_document) return $this->dispBoardMessage('msg_not_permitted');
|
||||
|
||||
// GET parameter에서 document_srl을 가져옴
|
||||
$document_srl = Context::get('document_srl');
|
||||
|
||||
// document 모듈 객체 생성
|
||||
$oDocumentModel = &getModel('document');
|
||||
|
||||
// 지정된 글이 없다면 (신규) 새로운 번호를 만든다
|
||||
if($document_srl) {
|
||||
$document = $oDocumentModel->getDocument($document_srl, $this->grant->manager);
|
||||
if(!$document) {
|
||||
unset($document_srl);
|
||||
Context::set('document_srl','');
|
||||
}
|
||||
}
|
||||
|
||||
if(!$document_srl) $document_srl = getNextSequence();
|
||||
|
||||
// 글을 수정하려고 할 경우 권한이 없는 경우 비밀번호 입력화면으로
|
||||
if($document&&!$document->is_granted) return $this->setTemplateFile('input_password_form');
|
||||
|
||||
Context::set('document_srl',$document_srl);
|
||||
Context::set('document', $document);
|
||||
|
||||
// 에디터 모듈의 getEditor를 호출하여 세팅
|
||||
$oEditorModel = &getModel('editor');
|
||||
$editor = $oEditorModel->getEditor($document_srl, $this->grant->fileupload, true);
|
||||
Context::set('editor', $editor);
|
||||
|
||||
$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');
|
||||
$document = $oDocumentModel->getDocument($document_srl);
|
||||
}
|
||||
|
||||
// 삭제하려는 글이 없으면 에러
|
||||
if(!$document) return $this->dispBoardContent();
|
||||
|
||||
// 권한이 없는 경우 비밀번호 입력화면으로
|
||||
if($document&&!$document->is_granted) return $this->setTemplateFile('input_password_form');
|
||||
|
||||
Context::set('document',$document);
|
||||
|
||||
$this->setTemplateFile('delete_form');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 댓글의 답글 화면 출력
|
||||
**/
|
||||
function dispBoardReplyComment() {
|
||||
// 권한 체크
|
||||
if(!$this->grant->write_comment) return $this->dispBoardMessage('msg_not_permitted');
|
||||
|
||||
// 목록 구현에 필요한 변수들을 가져온다
|
||||
$document_srl = Context::get('document_srl');
|
||||
$parent_srl = Context::get('comment_srl');
|
||||
|
||||
// 지정된 원 댓글이 없다면 오류
|
||||
if(!$parent_srl) return new Object(-1, 'msg_invalid_request');
|
||||
|
||||
// 해당 댓글를 찾아본다
|
||||
$oCommentModel = &getModel('comment');
|
||||
$source_comment = $oCommentModel->getComment($parent_srl, $this->grant->manager);
|
||||
|
||||
// 댓글이 없다면 오류
|
||||
if(!$source_comment) return $this->dispBoardMessage('msg_invalid_request');
|
||||
|
||||
// 필요한 정보들 세팅
|
||||
Context::set('document_srl',$document_srl);
|
||||
Context::set('parent_srl',$parent_srl);
|
||||
Context::set('comment_srl',NULL);
|
||||
Context::set('source_comment',$source_comment);
|
||||
|
||||
// 댓글 에디터 세팅
|
||||
$this->setCommentEditor();
|
||||
|
||||
$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');
|
||||
$comment = $oCommentModel->getComment($comment_srl, $this->grant->manager);
|
||||
|
||||
// 댓글이 없다면 오류
|
||||
if(!$comment) return $this->dispBoardMessage('msg_invalid_request');
|
||||
|
||||
// 글을 수정하려고 할 경우 권한이 없는 경우 비밀번호 입력화면으로
|
||||
if($comment_srl&&$comment&&!$comment->is_granted) return $this->setTemplateFile('input_password_form');
|
||||
|
||||
// 필요한 정보들 세팅
|
||||
Context::set('document_srl',$document_srl);
|
||||
Context::set('comment_srl',$comment_srl);
|
||||
Context::set('comment', $comment);
|
||||
|
||||
// 댓글 에디터 세팅
|
||||
$this->setCommentEditor($comment_srl);
|
||||
|
||||
$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');
|
||||
$comment = $oCommentModel->getComment($comment_srl, $this->grant->manager);
|
||||
}
|
||||
|
||||
// 삭제하려는 글이 없으면 에러
|
||||
if(!$comment) return $this->dispBoardContent();
|
||||
|
||||
// 권한이 없는 경우 비밀번호 입력화면으로
|
||||
if($comment_srl&&$comment&&!$comment->is_granted) return $this->setTemplateFile('input_password_form');
|
||||
|
||||
Context::set('comment',$comment);
|
||||
|
||||
$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);
|
||||
|
||||
$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 RSS 출력
|
||||
**/
|
||||
function dispBoardRss() {
|
||||
// 권한 체크
|
||||
if(!$this->grant->list) return $this->dispBoardMessage('msg_not_permitted');
|
||||
|
||||
// 컨텐츠 추출
|
||||
$args->module_srl = $this->module_srl; ///< 현재 모듈의 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'); ///< 검색 대상 (title, contents...)
|
||||
$args->search_keyword = Context::get('search_keyword'); ///< 검색어
|
||||
if($this->module_info->use_category=='Y') $args->category_srl = Context::get('category'); ///< 카테고리 사용시 선택된 카테고리
|
||||
|
||||
$args->sort_index = 'list_order'; ///< 소팅 값
|
||||
|
||||
$oDocumentModel = &getModel('document');
|
||||
$output = $oDocumentModel->getDocumentList($args);
|
||||
$document_list = $output->data;
|
||||
|
||||
// rss 제목 및 정보등을 추출
|
||||
$info->title = Context::getBrowserTitle();
|
||||
$info->description = $this->module_info->description;
|
||||
$info->language = Context::getLangType();
|
||||
$info->date = gmdate("D, d M Y H:i:s");
|
||||
$info->link = sprintf("%s?mid=%s", Context::getRequestUri(), Context::get('mid'));
|
||||
$info->total_count = $output->total_count;
|
||||
|
||||
// RSS 모듈을 불러서 출력할 내용을 지정
|
||||
$oRssView = &getView('rss');
|
||||
$oRssView->dispRss($info, $document_list);
|
||||
|
||||
// RSS 모듈의 tempate을 가져옴
|
||||
$this->setTemplatePath($oRssView->getTemplatePath());
|
||||
$this->setTemplateFile($oRssView->getTemplateFile());
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 댓글의 editor 를 세팅
|
||||
* 댓글의 경우 수정하는 경우가 아니라면 고유값이 없음.\n
|
||||
* 따라서 고유값이 없을 경우 고유값을 가져와서 지정해 주어야 함
|
||||
**/
|
||||
function setCommentEditor($comment_srl=0) {
|
||||
if(!$comment_srl) {
|
||||
$comment_srl = getNextSequence();
|
||||
Context::set('comment_srl', $comment_srl);
|
||||
}
|
||||
|
||||
// 에디터 모듈의 getEditor를 호출하여 세팅
|
||||
$oEditorModel = &getModel('editor');
|
||||
$comment_editor = $oEditorModel->getEditor($comment_srl, $this->grant->fileupload);
|
||||
Context::set('comment_editor', $comment_editor);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 게시판 관리 목록 보여줌
|
||||
**/
|
||||
function dispBoardAdminContent() {
|
||||
// 등록된 board 모듈을 불러와 세팅
|
||||
$args->sort_index = "module_srl";
|
||||
$args->page = Context::get('page');
|
||||
$args->list_count = 40;
|
||||
$args->page_count = 10;
|
||||
$args->s_module_category_srl = Context::get('module_category_srl');
|
||||
$output = executeQuery('board.getBoardList', $args);
|
||||
|
||||
// 템플릿에 쓰기 위해서 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 dispBoardAdminModuleConfig() {
|
||||
|
||||
// 설정 정보를 받아옴 (module model 객체를 이용)
|
||||
$oModuleModel = &getModel('module');
|
||||
$config = $oModuleModel->getModuleConfig('board');
|
||||
Context::set('config',$config);
|
||||
|
||||
// 템플릿 파일 지정
|
||||
$this->setTemplateFile('board_config');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 선택된 게시판의 정보 출력
|
||||
**/
|
||||
function dispBoardAdminBoardInfo() {
|
||||
|
||||
// module_srl 값이 없다면 그냥 index 페이지를 보여줌
|
||||
if(!Context::get('module_srl')) return $this->dispBoardAdminContent();
|
||||
|
||||
// 레이아웃이 정해져 있다면 레이아웃 정보를 추가해줌(layout_title, layout)
|
||||
if($this->module_info->layout_srl) {
|
||||
$oLayoutModel = &getModel('layout');
|
||||
$layout_info = $oLayoutModel->getLayout($this->module_info->layout_srl);
|
||||
$this->module_info->layout = $layout_info->layout;
|
||||
$this->module_info->layout_title = $layout_info->layout_title;
|
||||
}
|
||||
|
||||
// 정해진 스킨이 있으면 해당 스킨의 정보를 구함
|
||||
if($this->module_info->skin) {
|
||||
$oModuleModel = &getModel('module');
|
||||
$skin_info = $oModuleModel->loadSkinInfo($this->module_path, $this->module_info->skin);
|
||||
$this->module_info->skin_title = $skin_info->title;
|
||||
}
|
||||
|
||||
// 템플릿 파일 지정
|
||||
$this->setTemplateFile('board_info');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 게시판 추가 폼 출력
|
||||
**/
|
||||
function dispBoardAdminInsertBoard() {
|
||||
|
||||
// 스킨 목록을 구해옴
|
||||
$oModuleModel = &getModel('module');
|
||||
$skin_list = $oModuleModel->getSkins($this->module_path);
|
||||
Context::set('skin_list',$skin_list);
|
||||
|
||||
// 템플릿 파일 지정
|
||||
$this->setTemplateFile('board_insert');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 게시판 삭제 화면 출력
|
||||
**/
|
||||
function dispBoardAdminDeleteBoard() {
|
||||
|
||||
if(!Context::get('module_srl')) return $this->dispBoardAdminContent();
|
||||
|
||||
$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 dispBoardAdminSkinInfo() {
|
||||
|
||||
// 현재 선택된 모듈의 스킨의 정보 xml 파일을 읽음
|
||||
$module_info = Context::get('module_info');
|
||||
$skin = $module_info->skin;
|
||||
|
||||
$oModuleModel = &getModel('module');
|
||||
$skin_info = $oModuleModel->loadSkinInfo($this->module_path, $skin);
|
||||
|
||||
// skin_info에 extra_vars 값을 지정
|
||||
if(count($skin_info->extra_vars)) {
|
||||
foreach($skin_info->extra_vars as $key => $val) {
|
||||
$name = $val->name;
|
||||
$type = $val->type;
|
||||
$value = $module_info->{$name};
|
||||
if($type=="checkbox"&&!$value) $value = array();
|
||||
$skin_info->extra_vars[$key]->value= $value;
|
||||
}
|
||||
}
|
||||
|
||||
Context::set('skin_info', $skin_info);
|
||||
$this->setTemplateFile('skin_info');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 카테고리의 정보 출력
|
||||
**/
|
||||
function dispBoardAdminCategoryInfo() {
|
||||
|
||||
// module_srl을 구함
|
||||
$module_srl = Context::get('module_srl');
|
||||
|
||||
// 카테고리의 목록을 구해옴
|
||||
$oDocumentModel = &getModel('document');
|
||||
$category_list = $oDocumentModel->getCategoryList($module_srl);
|
||||
Context::set('category_list', $category_list);
|
||||
|
||||
// 수정하려는 카테고리가 있다면해당 카테고리의 정보를 가져옴
|
||||
$category_srl = Context::get('category_srl');
|
||||
|
||||
if($category_srl) {
|
||||
|
||||
$selected_category = $oDocumentModel->getCategory($category_srl);
|
||||
|
||||
if(!$selected_category) Context::set('category_srl','');
|
||||
else Context::set('selected_category',$selected_category);
|
||||
|
||||
$this->setTemplateFile('category_update_form');
|
||||
|
||||
} else {
|
||||
|
||||
$this->setTemplateFile('category_list');
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 권한 목록 출력
|
||||
**/
|
||||
function dispBoardAdminGrantInfo() {
|
||||
// module_srl을 구함
|
||||
$module_srl = Context::get('module_srl');
|
||||
|
||||
// module.xml에서 권한 관련 목록을 구해옴
|
||||
$grant_list = $this->xml_info->grant;
|
||||
Context::set('grant_list', $grant_list);
|
||||
|
||||
// 권한 그룹의 목록을 가져온다
|
||||
$oMemberModel = &getModel('member');
|
||||
$group_list = $oMemberModel->getGroups();
|
||||
Context::set('group_list', $group_list);
|
||||
|
||||
$this->setTemplateFile('grant_list');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 선택한 목록 출력
|
||||
**/
|
||||
function dispBoardAdminManageDocument() {
|
||||
// 선택한 목록을 세션에서 가져옴
|
||||
$flag_list = $_SESSION['document_management'][$this->module_srl];
|
||||
|
||||
// 목록이 있으면 게시글을 가져옴
|
||||
if(count($flag_list)) $document_srl_list = array_keys($flag_list);
|
||||
if(is_array($document_srl_list) && count($document_srl_list)) {
|
||||
$oDocumentModeul = &getModel('document');
|
||||
$document_list = $oDocumentModeul->getDocuments($document_srl_list, $this->grant->is_admin);
|
||||
Context::set('document_list', $document_list);
|
||||
}
|
||||
|
||||
// 게시판의 목록을 가져옴
|
||||
$output = executeQuery('board.getAllBoard', $args);
|
||||
$board_list = $output->data;
|
||||
if($board_list && !is_array($board_list)) $board_list = array($board_list);
|
||||
Context::set('board_list', $board_list);
|
||||
|
||||
// 팝업 레이아웃 선택
|
||||
$this->setLayoutPath('./common/tpl');
|
||||
$this->setLayoutFile('popup_layout');
|
||||
|
||||
$this->setTemplateFile('checked_list');
|
||||
}
|
||||
}
|
||||
?>
|
||||
8
modules/blog/conf/info.xml
Normal file
8
modules/blog/conf/info.xml
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<module version="0.1">
|
||||
<title xml:lang="ko">게시판</title>
|
||||
<author email_address="zero@zeroboard.com" link="http://www.zeroboard.com" date="2007. 2. 28">
|
||||
<name xml:lang="ko">제로</name>
|
||||
<description xml:lang="ko">게시판의 기능을 담당하는 모듈. 게시판의 생성/추가 관리등의 관리자 기능도 포함합니다.</description>
|
||||
</author>
|
||||
</module>
|
||||
71
modules/blog/conf/module.xml
Normal file
71
modules/blog/conf/module.xml
Normal file
|
|
@ -0,0 +1,71 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<module>
|
||||
<grants>
|
||||
<grant name="list" default="guest">
|
||||
<title xml:lang="ko">목록</title>
|
||||
<title xml:lang="en">list</title>
|
||||
</grant>
|
||||
<grant name="view" default="guest">
|
||||
<title xml:lang="ko">열람</title>
|
||||
<title xml:lang="en">view</title>
|
||||
</grant>
|
||||
<grant name="write_document" default="guest">
|
||||
<title xml:lang="ko">글 작성</title>
|
||||
<title xml:lang="en">write document</title>
|
||||
</grant>
|
||||
<grant name="write_comment" default="guest">
|
||||
<title xml:lang="ko">댓글 작성</title>
|
||||
<title xml:lang="en">write comment</title>
|
||||
</grant>
|
||||
<grant name="fileupload" default="guest">
|
||||
<title xml:lang="ko">파일 첨부</title>
|
||||
<title xml:lang="en">file upload</title>
|
||||
</grant>
|
||||
<grant name="manager" default="root">
|
||||
<title xml:lang="ko">관리</title>
|
||||
<title xml:lang="en">manager</title>
|
||||
</grant>
|
||||
</grants>
|
||||
<actions>
|
||||
<action name="dispBoardContent" type="view" index="true" />
|
||||
<action name="dispBoardWrite" type="view" />
|
||||
<action name="dispBoardDelete" 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="dispBoardRss" 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="dispBoardAdminModuleConfig" type="view" standalone="true" />
|
||||
<action name="dispBoardAdminBoardInfo" type="view" standalone="true" />
|
||||
<action name="dispBoardAdminInsertBoard" type="view" standalone="true" />
|
||||
<action name="dispBoardAdminDeleteBoard" type="view" standalone="true" />
|
||||
<action name="dispBoardAdminSkinInfo" type="view" standalone="true" />
|
||||
<action name="dispBoardAdminCategoryInfo" type="view" standalone="true" />
|
||||
<action name="dispBoardAdminGrantInfo" type="view" standalone="true" />
|
||||
<action name="dispBoardAdminManageDocument" type="view" />
|
||||
|
||||
<action name="procBoardAdminAddCart" type="controller" standalone="true" />
|
||||
<action name="procBoardAdminInsertGrant" type="controller" standalone="true" />
|
||||
<action name="procBoardAdminUpdateSkinInfo" type="controller" standalone="true" />
|
||||
<action name="procBoardAdminInsertBoard" type="controller" standalone="true" />
|
||||
<action name="procBoardAdminDeleteBoard" type="controller" standalone="true" />
|
||||
<action name="procBoardAdminInsertCategory" type="controller" standalone="true" />
|
||||
<action name="procBoardAdminUpdateCategory" type="controller" standalone="true" />
|
||||
<action name="procBoardAdminInsertConfig" type="controller" standalone="true" />
|
||||
<action name="procBoardAdminManageCheckedDocument" type="controller" standalone="true" />
|
||||
</actions>
|
||||
</module>
|
||||
53
modules/blog/lang/ko.lang.php
Normal file
53
modules/blog/lang/ko.lang.php
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
<?php
|
||||
/**
|
||||
* @file ko.lang.php
|
||||
* @author zero (zero@nzeo.com)
|
||||
* @brief 게시판(board) 모듈의 기본 언어팩
|
||||
**/
|
||||
|
||||
// 버튼에 사용되는 언어
|
||||
$lang->cmd_board_list = '게시판 목록';
|
||||
$lang->cmd_module_config = '게시판 공통 설정';
|
||||
$lang->cmd_view_info = '게시판 정보';
|
||||
$lang->cmd_manage_category = '분류관리';
|
||||
$lang->cmd_manage_grant = '권한관리';
|
||||
$lang->cmd_manage_skin = '스킨관리';
|
||||
$lang->cmd_manage_document = '게시글 관리';
|
||||
|
||||
// 항목
|
||||
$lang->header_text = '상단 내용';
|
||||
$lang->footer_text = '하단 내용';
|
||||
$lang->use_category = '분류 사용';
|
||||
$lang->category_title = '분류명';
|
||||
$lang->checked_count = '선택된 글 수';
|
||||
|
||||
$lang->skin_default_info = '스킨 기본정보';
|
||||
$lang->skin_maker = '스킨제작자';
|
||||
$lang->skin_maker_homepage = '홈페이지';
|
||||
|
||||
$lang->test = '테스트';
|
||||
$lang->about_test = '테스트는 블라블라...';
|
||||
|
||||
// 주절 주절..
|
||||
$lang->about_mid = '모듈이름은 http://주소/?mid=모듈이름 처럼 직접 호출할 수 있는 값입니다. (영문+숫자만 가능)';
|
||||
$lang->about_category = '분류를 통한 관리를 할 수 있도록 합니다. 모듈 분류의 관리는 <a href=\"./?module=admin&act=dispCategory&mo=module\">모듈관리 > 모듈카테고리</a>에서 하실 수 있습니다.';
|
||||
$lang->about_browser_title = '브라우저의 제목에 나타나는 값입니다. RSS/Trackback에서도 사용됩니다.';
|
||||
$lang->about_description= '관리용으로 사용되는 설명입니다';
|
||||
$lang->about_default = '선택하시면 사이트에 mid값 없이 접속하였을 경우 기본으로 보여줍니다';
|
||||
$lang->about_header_text = '모듈의 상단에 표시되는 내용입니다 (html 태그 사용 가능)';
|
||||
$lang->about_footer_text = '모듈의 하단에 표시되는 내용입니다 (html 태그 사용 가능)';
|
||||
$lang->about_skin = '모듈의 스킨을 선택하실 수 있습니다';
|
||||
$lang->about_use_category = '선택하시면 분류기능을 사용할 수 있습니다';
|
||||
$lang->about_list_count = '한페이지에 표시될 글의 수를 지정하실 수 있습니다. (기본 20개)';
|
||||
$lang->about_page_count = '목록 하단 페이지 이동 하는 링크의 수를 지정하실 수 있습니다. (기본 10개)';
|
||||
|
||||
$lang->about_admin_id = '해당 모듈에 대해 최고 권한을 가지는 관리자를 지정할 수 있습니다.<br />,(콤마)로 다수 아이디 지정이 가능합니다. (관리자페이지 접근은 불가능)';
|
||||
$lang->about_grant = '특정 권한의 대상을 모두 해제하시면 로그인하지 않은 회원까지 권한을 가질 수 있습니다';
|
||||
|
||||
$lang->msg_new_module = '모듈 생성';
|
||||
$lang->msg_update_module = '모듈 수정';
|
||||
$lang->msg_category_is_null = '등록된 분류가 없습니다';
|
||||
$lang->msg_grant_is_null = '등록된 권한 대상이 없습니다';
|
||||
$lang->msg_no_checked_document = '선택된 게시물이 없습니다';
|
||||
$lang->msg_move_failed = '이동 실패하였습니다';
|
||||
?>
|
||||
14
modules/blog/queries/getAllBoard.xml
Normal file
14
modules/blog/queries/getAllBoard.xml
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
<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>
|
||||
24
modules/blog/queries/getBoardList.xml
Normal file
24
modules/blog/queries/getBoardList.xml
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
<query id="getBoardList" action="select">
|
||||
<tables>
|
||||
<table name="modules" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="*" />
|
||||
</columns>
|
||||
<conditions>
|
||||
<condition operation="equal" column="module" default="board" />
|
||||
<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>
|
||||
75
modules/blog/skins/default/comment.html
Normal file
75
modules/blog/skins/default/comment.html
Normal file
|
|
@ -0,0 +1,75 @@
|
|||
<!-- 댓글 정보 출력 -->
|
||||
<a name="comment_top_{$document_srl}"></a>
|
||||
<div>
|
||||
{$lang->comment} : {count($document->comment_list)}
|
||||
</div>
|
||||
|
||||
<!-- 댓글 출력 -->
|
||||
<div>
|
||||
<!-- 댓글 목록 -->
|
||||
|
||||
<!--@if($document->comment_list)-->
|
||||
|
||||
<!--@foreach($document->comment_list as $key => $val)-->
|
||||
<a name="comment_{$key}"></a>
|
||||
<div style="margin-left:{$val->depth*15}px" >
|
||||
<table border="1" width="100%">
|
||||
<col width="120" />
|
||||
<col width="*" />
|
||||
<tr>
|
||||
<th>{$lang->date}</th>
|
||||
<td>{zdate($val->regdate, "Y-m-d H:i:s")}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{$lang->writer}</th>
|
||||
<td><div class="member_{$val->member_srl}">{htmlspecialchars($val->nick_name)}</div></td>
|
||||
</tr>
|
||||
<!--@if($val->homepage)-->
|
||||
<tr>
|
||||
<th>{$lang->homepage}</th>
|
||||
<td><a href="{$val->homepage}" onclick="winopen('{$val->homepage}'); return false;">{htmlspecialchars($val->homepage)}</a></td>
|
||||
</tr>
|
||||
<!--@end-->
|
||||
<tr>
|
||||
<th>{$lang->content}</th>
|
||||
<td height="100" valign="top">{$val->content}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>ipaddress</th>
|
||||
<td>{$val->ipaddress}</td>
|
||||
</tr>
|
||||
|
||||
<!--@if($val->uploaded_count && $val->uploaded_list)-->
|
||||
<tr>
|
||||
<th>{$lang->uploaded_file}</th>
|
||||
<td>
|
||||
<!--@foreach($val->uploaded_list as $key => $file)-->
|
||||
<div><a href="{$file->download_url}">{$file->source_filename} ({FileHandler::filesize($file->file_size)})</a> ({number_format($file->download_count)})</div>
|
||||
<!--@end-->
|
||||
</td>
|
||||
</tr>
|
||||
<!--@end-->
|
||||
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<a href="{getUrl('act','dispBoardReplyComment','comment_srl',$val->comment_srl)}">[{$lang->cmd_reply}]</a>
|
||||
|
||||
<!--@if($val->is_granted)-->
|
||||
<a href="{getUrl('act','dispBoardModifyComment','comment_srl',$val->comment_srl)}">[{$lang->cmd_modify}]</a>
|
||||
<a href="{getUrl('act','dispBoardDeleteComment','comment_srl',$val->comment_srl)}">[{$lang->cmd_delete}]</a>
|
||||
<!--@end-->
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<!--@end-->
|
||||
|
||||
<!--@end-->
|
||||
|
||||
<!-- 댓글 입력 폼 -->
|
||||
|
||||
<!--@if($grant->write_comment && $document->lock_comment == 'N')-->
|
||||
<!--#include("./comment_form.html")-->
|
||||
<!--@end-->
|
||||
|
||||
</div>
|
||||
79
modules/blog/skins/default/comment_form.html
Normal file
79
modules/blog/skins/default/comment_form.html
Normal file
|
|
@ -0,0 +1,79 @@
|
|||
<!--%import("filter/insert_comment.xml")-->
|
||||
|
||||
<!--@if($source_comment)-->
|
||||
<!--#include("header.html")-->
|
||||
<!--@else-->
|
||||
<!--%import("js/board.js")-->
|
||||
<!--@end-->
|
||||
|
||||
<!-- 만약 댓글의 답을 다는 것이라면 원문 보여줌 -->
|
||||
<!--@if($source_comment)-->
|
||||
<div>
|
||||
<table border="1" width="100%">
|
||||
<col width="120" />
|
||||
<col width="*" />
|
||||
<tr>
|
||||
<th>{$lang->date}</th>
|
||||
<td>{$source_comment->regdate}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{$lang->writer}</th>
|
||||
<td><div class="member_{$source_comment->member_srl}">{htmlspecialchars($source_comment->nick_name)}</div></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{$lang->content}</th>
|
||||
<td height="100" valign="top">{$source_comment->content}</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<!--@end-->
|
||||
|
||||
<!-- 글쓰기 폼 -->
|
||||
<form action="./" method="post" onsubmit="return procFilter(this, insert_comment)" <!--@if($grant->fileupload)-->enctype="multipart/form-data"<!--@end-->>
|
||||
<input type="hidden" name="mid" value="{$mid}" />
|
||||
<input type="hidden" name="document_srl" value="{$document_srl}" />
|
||||
<input type="hidden" name="comment_srl" value="{$comment_srl}" />
|
||||
<input type="hidden" name="content" value="{htmlspecialchars($comment->content)}" />
|
||||
<input type="hidden" name="parent_srl" value="{$parent_srl}" />
|
||||
|
||||
<table width="100%" border="1">
|
||||
<col width="120" />
|
||||
<col width="*" />
|
||||
|
||||
<!--@if(!$is_logged)-->
|
||||
<tr>
|
||||
<th>{$lang->writer}</th>
|
||||
<td><input type="text" name="nick_name" value="{htmlspecialchars($comment->nick_name)}" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{$lang->password}</th>
|
||||
<td><input type="password" name="password" value="" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{$lang->email_address}</th>
|
||||
<td><input type="text" name="email_address" value="{htmlspecialchars($comment->email_address)}"/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{$lang->homepage}</th>
|
||||
<td><input type="text" name="homepage" value="{htmlspecialchars($comment->homepage)}" /></td>
|
||||
</tr>
|
||||
<!--@end-->
|
||||
|
||||
<tr>
|
||||
<td colspan="2">{$comment_editor}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<!--@if($act&&$act!='dispBoardContent')-->
|
||||
<input type="button" value="{$lang->cmd_cancel}" onclick="location.href='{getUrl('act','')}'" />
|
||||
<!--@end-->
|
||||
|
||||
<input type="submit" value="{$lang->cmd_registration}" accesskey="s" />
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
|
||||
<!--@if($source_comment)-->
|
||||
<!--#include("footer.html")-->
|
||||
<!--@end-->
|
||||
23
modules/blog/skins/default/delete_comment_form.html
Normal file
23
modules/blog/skins/default/delete_comment_form.html
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
<!--%import("filter/delete_comment.xml")-->
|
||||
<!--#include("header.html")-->
|
||||
|
||||
<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="{$document_srl}" />
|
||||
<input type="hidden" name="comment_srl" value="{$comment_srl}" />
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<th colspan="2">{$lang->confirm_delete}</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<input type="submit" value="{$lang->cmd_delete}" />
|
||||
<input type="button" value="{$lang->cmd_back}" onclick="location.href='{getUrl('act','')}'" />
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
|
||||
<!--#include("footer.html")-->
|
||||
27
modules/blog/skins/default/delete_form.html
Normal file
27
modules/blog/skins/default/delete_form.html
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
<!--%import("filter/delete_document.xml")-->
|
||||
<!--#include("header.html")-->
|
||||
|
||||
<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}" />
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<th colspan="2">{$lang->confirm_delete}</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{$lang->title}</th>
|
||||
<td>{$document->title}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<input type="submit" value="{$lang->cmd_delete}" />
|
||||
<input type="button" value="{$lang->cmd_back}" onclick="location.href='{getUrl('act','')}'" />
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
</form>
|
||||
|
||||
<!--#include("footer.html")-->
|
||||
23
modules/blog/skins/default/delete_trackback_form.html
Normal file
23
modules/blog/skins/default/delete_trackback_form.html
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
<!--%import("filter/delete_trackback.xml")-->
|
||||
<!--#include("header.html")-->
|
||||
|
||||
<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}" />
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<th colspan="2">{$lang->confirm_delete}</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<input type="submit" value="{$lang->cmd_delete}" />
|
||||
<input type="button" value="{$lang->cmd_back}" onclick="location.href='{getUrl('act','')}'" />
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
|
||||
<!--#include("footer.html")-->
|
||||
18
modules/blog/skins/default/filter/delete_comment.xml
Normal file
18
modules/blog/skins/default/filter/delete_comment.xml
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
<filter name="delete_comment" module="board" act="procBoardDeleteComment">
|
||||
<form>
|
||||
<node target="comment_srl" required="true" />
|
||||
</form>
|
||||
<parameter>
|
||||
<param name="mid" target="mid" />
|
||||
<param name="page" target="page" />
|
||||
<param name="document_srl" target="document_srl" />
|
||||
<param name="comment_srl" target="comment_srl" />
|
||||
</parameter>
|
||||
<response callback_func="completeDeleteComment">
|
||||
<tag name="error" />
|
||||
<tag name="message" />
|
||||
<tag name="mid" />
|
||||
<tag name="document_srl" />
|
||||
<tag name="page" />
|
||||
</response>
|
||||
</filter>
|
||||
16
modules/blog/skins/default/filter/delete_document.xml
Normal file
16
modules/blog/skins/default/filter/delete_document.xml
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
<filter name="delete_document" module="board" act="procBoardDeleteDocument">
|
||||
<form>
|
||||
<node target="document_srl" required="true" />
|
||||
</form>
|
||||
<parameter>
|
||||
<param name="mid" target="mid" />
|
||||
<param name="page" target="page" />
|
||||
<param name="document_srl" target="document_srl" />
|
||||
</parameter>
|
||||
<response callback_func="completeDeleteDocument">
|
||||
<tag name="error" />
|
||||
<tag name="message" />
|
||||
<tag name="mid" />
|
||||
<tag name="page" />
|
||||
</response>
|
||||
</filter>
|
||||
18
modules/blog/skins/default/filter/delete_trackback.xml
Normal file
18
modules/blog/skins/default/filter/delete_trackback.xml
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
<filter name="delete_trackback" module="board" act="procBoardDeleteTrackback">
|
||||
<form>
|
||||
<node target="trackback_srl" required="true" />
|
||||
</form>
|
||||
<parameter>
|
||||
<param name="mid" target="mid" />
|
||||
<param name="page" target="page" />
|
||||
<param name="document_srl" target="document_srl" />
|
||||
<param name="trackback_srl" target="trackback_srl" />
|
||||
</parameter>
|
||||
<response callback_func="completeDeleteTrackback">
|
||||
<tag name="error" />
|
||||
<tag name="message" />
|
||||
<tag name="mid" />
|
||||
<tag name="document_srl" />
|
||||
<tag name="page" />
|
||||
</response>
|
||||
</filter>
|
||||
16
modules/blog/skins/default/filter/input_password.xml
Normal file
16
modules/blog/skins/default/filter/input_password.xml
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
<filter name="input_password" module="board" act="procBoardVerificationPassword" >
|
||||
<form>
|
||||
<node target="document_srl" required="true" />
|
||||
<node target="password" required="true" />
|
||||
</form>
|
||||
<parameter>
|
||||
<param name="mid" target="mid" />
|
||||
<param name="document_srl" target="document_srl" />
|
||||
<param name="comment_srl" target="comment_srl" />
|
||||
<param name="password" target="password" />
|
||||
</parameter>
|
||||
<response>
|
||||
<tag name="error" />
|
||||
<tag name="message" />
|
||||
</response>
|
||||
</filter>
|
||||
18
modules/blog/skins/default/filter/insert.xml
Normal file
18
modules/blog/skins/default/filter/insert.xml
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
<filter name="insert" module="board" act="procBoardInsertDocument" confirm_msg_code="confirm_submit">
|
||||
<form>
|
||||
<node target="document_srl" required="true" />
|
||||
<node target="nick_name" required="true" />
|
||||
<node target="password" required="true" />
|
||||
<node target="email_address" maxlength="250" />
|
||||
<node target="homepage" maxlength="250"/>
|
||||
<node target="title" required="true" minlength="1" maxlength="250" />
|
||||
<node target="content" required="true" />
|
||||
</form>
|
||||
<response callback_func="completeDocumentInserted">
|
||||
<tag name="error" />
|
||||
<tag name="message" />
|
||||
<tag name="mid" />
|
||||
<tag name="document_srl" />
|
||||
<tag name="category_srl" />
|
||||
</response>
|
||||
</filter>
|
||||
28
modules/blog/skins/default/filter/insert_comment.xml
Normal file
28
modules/blog/skins/default/filter/insert_comment.xml
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
<filter name="insert_comment" module="board" act="procBoardInsertComment" confirm_msg_code="confirm_submit">
|
||||
<form>
|
||||
<node target="document_srl" required="true" />
|
||||
<node target="nick_name" required="true" />
|
||||
<node target="password" required="true" />
|
||||
<node target="email_address" maxlength="250" />
|
||||
<node target="homepage" maxlength="250"/>
|
||||
<node target="content" required="true" minlength="1" />
|
||||
</form>
|
||||
<parameter>
|
||||
<param name="mid" target="mid" />
|
||||
<param name="document_srl" target="document_srl" />
|
||||
<param name="comment_srl" target="comment_srl" />
|
||||
<param name="parent_srl" target="parent_srl" />
|
||||
<param name="nick_name" target="nick_name" />
|
||||
<param name="password" target="password" />
|
||||
<param name="email_address" target="email_address" />
|
||||
<param name="homepage" target="homepage" />
|
||||
<param name="content" target="content" />
|
||||
</parameter>
|
||||
<response callback_func="completeInsertComment">
|
||||
<tag name="error" />
|
||||
<tag name="message" />
|
||||
<tag name="mid" />
|
||||
<tag name="document_srl" />
|
||||
<tag name="comment_srl" />
|
||||
</response>
|
||||
</filter>
|
||||
15
modules/blog/skins/default/filter/search.xml
Normal file
15
modules/blog/skins/default/filter/search.xml
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
<filter name="search" module="board">
|
||||
<form>
|
||||
<node target="search_target" required="true" />
|
||||
<node target="search_keyword" minlegnth="2" maxlength="40" required="true" />
|
||||
</form>
|
||||
<parameter>
|
||||
<param name="mid" target="mid" />
|
||||
<param name="search_target" target="search_target" />
|
||||
<param name="search_keyword" target="search_keyword" />
|
||||
</parameter>
|
||||
<response callback_func="completeSearch">
|
||||
<tag name="error" />
|
||||
<tag name="message" />
|
||||
</response>
|
||||
</filter>
|
||||
13
modules/blog/skins/default/filter/vote.xml
Normal file
13
modules/blog/skins/default/filter/vote.xml
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
<filter name="vote" module="board" act="procBoardVoteDocument" confirm_msg_code="confirm_vote">
|
||||
<form>
|
||||
<node target="document_srl" required="true" />
|
||||
</form>
|
||||
<parameter>
|
||||
<param name="mid" target="mid" />
|
||||
<param name="document_srl" target="document_srl" />
|
||||
</parameter>
|
||||
<response callback_func="completeVote">
|
||||
<tag name="error" />
|
||||
<tag name="message" />
|
||||
</response>
|
||||
</filter>
|
||||
1
modules/blog/skins/default/footer.html
Normal file
1
modules/blog/skins/default/footer.html
Normal file
|
|
@ -0,0 +1 @@
|
|||
{$module_info->footer_text}
|
||||
32
modules/blog/skins/default/header.html
Normal file
32
modules/blog/skins/default/header.html
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
<!--%import("js/board.js")-->
|
||||
{$module_info->header_text}
|
||||
|
||||
<!-- 게시판 정보 -->
|
||||
<div>
|
||||
<!--@if($total_count)-->
|
||||
{$lang->document_count} : {number_format($total_count)},
|
||||
{$lang->page_count} : {number_format($page)} / {number_format($total_page)}
|
||||
<!--@end-->
|
||||
|
||||
<!--@if($rss_url)-->
|
||||
<a href="{$rss_url}">rss</a>
|
||||
<!--@end-->
|
||||
|
||||
<!--@if($is_logged)-->
|
||||
[
|
||||
<a href="{getUrl('act','dispMemberInfo')}">{$lang->cmd_view_member_info}</a> |
|
||||
<a href="{getUrl('act','dispMemberLogout')}">{$lang->cmd_logout}</a>
|
||||
]
|
||||
|
||||
<!--@else-->
|
||||
[
|
||||
<a href="{getUrl('act','dispMemberSignUpForm')}">{$lang->cmd_signup}</a> |
|
||||
<a href="{getUrl('act','dispMemberLoginForm')}">{$lang->cmd_login}</a>
|
||||
]
|
||||
<!--@end-->
|
||||
|
||||
<!--@if($logged_info->is_admin =='Y')-->
|
||||
<a href="{getUrl('act','dispBoardAdminBoardInfo')}">[{$lang->cmd_management}]</a>
|
||||
<!--@end-->
|
||||
</div>
|
||||
|
||||
27
modules/blog/skins/default/input_password_form.html
Normal file
27
modules/blog/skins/default/input_password_form.html
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
<!--%import("filter/input_password.xml")-->
|
||||
<!--#include("header.html")-->
|
||||
|
||||
<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="{$document_srl}" />
|
||||
<input type="hidden" name="comment_srl" value="{$comment_srl}" />
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<th colspan="2">{$lang->msg_input_password}</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{$lang->password}</th>
|
||||
<td><input type="password" name="password" value="" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<input type="submit" value="{$lang->cmd_input}" />
|
||||
<input type="button" value="{$lang->cmd_back}" onclick="location.href='{getUrl('act','','document_srl','','comment_srl','')}'" />
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
|
||||
<!--#include("footer.html")-->
|
||||
129
modules/blog/skins/default/js/board.js
Normal file
129
modules/blog/skins/default/js/board.js
Normal file
|
|
@ -0,0 +1,129 @@
|
|||
/**
|
||||
* @file modules/board/js/board.js
|
||||
* @author zero (zero@nzeo.com)
|
||||
* @brief board 모듈의 javascript
|
||||
**/
|
||||
|
||||
/* 관리자가 카트 선택시 세션에 넣음 */
|
||||
function doAddCart(mid, obj) {
|
||||
var srl = obj.value;
|
||||
var check_flag = obj.checked?'add':'remove';
|
||||
|
||||
var params = new Array();
|
||||
params["mid"] = mid;
|
||||
params["srl"] = srl;
|
||||
params["check_flag"] = check_flag;
|
||||
|
||||
exec_xml("board","procBoardAdminAddCart", params, null);
|
||||
}
|
||||
|
||||
/* 글쓰기 작성후 */
|
||||
function completeDocumentInserted(ret_obj) {
|
||||
var error = ret_obj['error'];
|
||||
var message = ret_obj['message'];
|
||||
var mid = ret_obj['mid'];
|
||||
var document_srl = ret_obj['document_srl'];
|
||||
var category_srl = ret_obj['category_srl'];
|
||||
|
||||
alert(message);
|
||||
|
||||
var url = location.href.setQuery('mid',mid).setQuery('document_srl',document_srl).setQuery('act','');
|
||||
if(category_srl) url = url.setQuery('category',category_srl);
|
||||
location.href = url;
|
||||
}
|
||||
|
||||
/* 글 삭제 */
|
||||
function completeDeleteDocument(ret_obj) {
|
||||
var error = ret_obj['error'];
|
||||
var message = ret_obj['message'];
|
||||
var mid = ret_obj['mid'];
|
||||
var page = ret_obj['page'];
|
||||
|
||||
var url = "./?mid="+mid;
|
||||
if(page) url += "&page="+page;
|
||||
|
||||
alert(message);
|
||||
|
||||
location.href = url;
|
||||
}
|
||||
|
||||
/* 검색 실행 */
|
||||
function completeSearch(fo_obj, params) {
|
||||
fo_obj.submit();
|
||||
}
|
||||
|
||||
/* 추천, 추천은 별도의 폼입력이 필요 없어 직접 필터 사용 */
|
||||
function doVote() {
|
||||
var fo_obj = document.getElementById('fo_document_info');
|
||||
procFilter(fo_obj, vote);
|
||||
}
|
||||
|
||||
function completeVote(ret_obj) {
|
||||
var error = ret_obj['error'];
|
||||
var message = ret_obj['message'];
|
||||
alert(message);
|
||||
location.href = location.href;
|
||||
}
|
||||
|
||||
// 현재 페이지 reload
|
||||
function completeReload(ret_obj) {
|
||||
var error = ret_obj['error'];
|
||||
var message = ret_obj['message'];
|
||||
|
||||
location.href = location.href;
|
||||
}
|
||||
|
||||
/* 댓글 글쓰기 작성후 */
|
||||
function completeInsertComment(ret_obj) {
|
||||
var error = ret_obj['error'];
|
||||
var message = ret_obj['message'];
|
||||
var mid = ret_obj['mid'];
|
||||
var document_srl = ret_obj['document_srl'];
|
||||
var comment_srl = ret_obj['comment_srl'];
|
||||
|
||||
var url = "./?mid="+mid+"&document_srl="+document_srl;
|
||||
if(comment_srl) url += "#comment_"+comment_srl;
|
||||
|
||||
alert(message);
|
||||
|
||||
location.href = url;
|
||||
}
|
||||
|
||||
/* 댓글 삭제 */
|
||||
function completeDeleteComment(ret_obj) {
|
||||
var error = ret_obj['error'];
|
||||
var message = ret_obj['message'];
|
||||
var mid = ret_obj['mid'];
|
||||
var document_srl = ret_obj['document_srl'];
|
||||
var page = ret_obj['page'];
|
||||
|
||||
var url = "./?mid="+mid+'&document_srl='+document_srl;
|
||||
if(page) url += "&page="+page;
|
||||
|
||||
alert(message);
|
||||
|
||||
location.href = url;
|
||||
}
|
||||
|
||||
/* 트랙백 삭제 */
|
||||
function completeDeleteTrackback(ret_obj) {
|
||||
var error = ret_obj['error'];
|
||||
var message = ret_obj['message'];
|
||||
var mid = ret_obj['mid'];
|
||||
var document_srl = ret_obj['document_srl'];
|
||||
var page = ret_obj['page'];
|
||||
|
||||
var url = "./?mid="+mid+'&document_srl='+document_srl;
|
||||
if(page) url += "&page="+page;
|
||||
|
||||
alert(message);
|
||||
|
||||
location.href = url;
|
||||
}
|
||||
|
||||
/* 카테고리 이동 */
|
||||
function doChangeCategory(sel_obj, url) {
|
||||
var category_srl = sel_obj.options[sel_obj.selectedIndex].value;
|
||||
if(!category_srl) location.href=url;
|
||||
else location.href=url+'&category='+category_srl;
|
||||
}
|
||||
121
modules/blog/skins/default/list.html
Normal file
121
modules/blog/skins/default/list.html
Normal file
|
|
@ -0,0 +1,121 @@
|
|||
<!--%import("filter/search.xml")-->
|
||||
<!--#include("header.html")-->
|
||||
|
||||
<!-- 게시물 내용 include -->
|
||||
<!--@if($document && $grant->view)-->
|
||||
<!--#include("./view_document.html")-->
|
||||
<!--@end-->
|
||||
|
||||
<!-- 목록 -->
|
||||
<div>
|
||||
<table width="100%" border="1">
|
||||
<tr>
|
||||
<th>{$lang->no}</th>
|
||||
|
||||
<!--@if($category_list)-->
|
||||
<th>
|
||||
<form action="./" method="get">
|
||||
<select name="category" onchange="doChangeCategory(this, '{getUrl('category','')}')" >
|
||||
<option value="">{$lang->category}</option>
|
||||
<!--@foreach($category_list as $val)-->
|
||||
<option value="{$val->category_srl}" <!--@if($category==$val->category_srl)-->selected="true"<!--@end-->>{$val->title} <!--@if($val->document_count)-->({$val->document_count})<!--@end--></option>
|
||||
<!--@end-->
|
||||
</select>
|
||||
</form>
|
||||
</th>
|
||||
<!--@end-->
|
||||
|
||||
<th>{$lang->title}</th>
|
||||
<th>{$lang->writer}</th>
|
||||
<th>{$lang->readed_count}</th>
|
||||
<th>{$lang->voted_count}</th>
|
||||
<th>{$lang->date}</th>
|
||||
</tr>
|
||||
|
||||
<!--@foreach($document_list as $no => $val)-->
|
||||
<tr>
|
||||
<td>{$no}</td>
|
||||
|
||||
<!--@if($category_list)-->
|
||||
<td>{$category_list[$val->category_srl]->title}</td>
|
||||
<!--@end-->
|
||||
|
||||
<td>
|
||||
<!--@if($grant->is_admin == 'Y')-->
|
||||
<input type="checkbox" value="{$val->document_srl}" onclick="doAddCart('{$mid}',this)" <!--@if($check_list[$val->document_srl])-->checked="true"<!--@end--> />
|
||||
<!--@end-->
|
||||
|
||||
<!--@if($grant->view)-->
|
||||
<a href="{getUrl('document_srl',$val->document_srl)}">{htmlspecialchars($val->title)}</a>
|
||||
<!--@else-->
|
||||
{htmlspecialchars($val->title)}
|
||||
<!--@end-->
|
||||
|
||||
<!--@if($val->comment_count>0)-->
|
||||
[<a href="{getUrl('document_srl',$val->document_srl)}#comment">{$val->comment_count}</a>]
|
||||
<!--@end-->
|
||||
|
||||
<!--@if($val->trackback_count>0)-->
|
||||
[<a href="{getUrl('document_srl',$val->document_srl)}#trackback">{$val->trackback_count}</a>]
|
||||
<!--@end-->
|
||||
|
||||
</td>
|
||||
<td><div class="member_{$val->member_srl}">{$val->nick_name}</div></td>
|
||||
<td>{$val->readed_count}</td>
|
||||
<td>{$val->voted_count}</td>
|
||||
<td>{zdate($val->regdate,"Y-m-d")}</td>
|
||||
</tr>
|
||||
<!--@end-->
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<!-- 버튼 -->
|
||||
<div>
|
||||
<!--@if($grant->write_document)-->
|
||||
<!-- 글쓰기 버튼 -->
|
||||
<a href="{getUrl('act','dispBoardWrite','document_srl','')}">[{$lang->cmd_write}]</a>
|
||||
<!--@end-->
|
||||
|
||||
<!--@if($logged_info->is_admin == 'Y')-->
|
||||
<!-- 문서 관리 버튼 -->
|
||||
<a href="#" onclick="popopen('{getUrl('act','dispBoardAdminManageDocument')}','manageDocument'); return false;">[{$lang->cmd_manage_document}]</a>
|
||||
<!--@end-->
|
||||
</div>
|
||||
|
||||
<!--@if($grant->view)-->
|
||||
|
||||
<!-- 검색 -->
|
||||
<div>
|
||||
<form action="./" method="get" onsubmit="return procFilter(this, search)">
|
||||
<input type="hidden" name="mid" value="{$mid}" />
|
||||
<input type="hidden" name="category" value="{$category}" />
|
||||
|
||||
<select name="search_target">
|
||||
<!--@foreach($search_option as $key => $val)-->
|
||||
<option value="{$key}" <!--@if($search_target==$key)-->selected="true"<!--@end-->>{$val}</option>
|
||||
<!--@end-->
|
||||
</select>
|
||||
<input type="text" name="search_keyword" value="{htmlspecialchars($search_keyword)}" />
|
||||
<input type="submit" value="{$lang->cmd_search}" />
|
||||
<input type="button" value="{$lang->cmd_cancel}" onclick="location.href='{getUrl('search_target','','search_keyword','','page','1','document_srl','')}'"/>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<!-- 페이지 네비게이션 -->
|
||||
<div>
|
||||
<a href="{getUrl('page','','document_srl','')}">[{$lang->first_page}]</a>
|
||||
|
||||
<!--@while($page_no = $page_navigation->getNextPage())-->
|
||||
<!--@if($page == $page_no)-->
|
||||
{$page_no}
|
||||
<!--@else-->
|
||||
<a href="{getUrl('page',$page_no,'document_srl','')}">[{$page_no}]</a>
|
||||
<!--@end-->
|
||||
<!--@end-->
|
||||
|
||||
<a href="{getUrl('page',$page_navigation->last_page,'document_srl','')}">[{$lang->last_page}]</a>
|
||||
</div>
|
||||
|
||||
<!--@end-->
|
||||
|
||||
<!--#include("footer.html")-->
|
||||
11
modules/blog/skins/default/message.html
Normal file
11
modules/blog/skins/default/message.html
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
<!--#include("header.html")-->
|
||||
|
||||
<div>
|
||||
{$message}
|
||||
</div>
|
||||
|
||||
<!--@if(!$is_logged)-->
|
||||
<a href="{getUrl('act','dispMemberLoginForm')}">{$lang->cmd_login}</a>
|
||||
<!--@end-->
|
||||
|
||||
<!--#include("footer.html")-->
|
||||
53
modules/blog/skins/default/skin.xml
Normal file
53
modules/blog/skins/default/skin.xml
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<skin>
|
||||
<title xml:lang="ko">게시판 기본 스킨</title>
|
||||
<maker email_address="zero@zeroboard.com" link="http://www.zeroboard.com" date="2007. 2. 28">
|
||||
<name xml:lang="ko">제로</name>
|
||||
<description xml:lang="ko">board모듈의 default스킨</description>
|
||||
</maker>
|
||||
<colorset>
|
||||
<color name="normal" src="screenshot/normal.gif">
|
||||
<title xml:lang="ko">기본</title>
|
||||
</color>
|
||||
<color name="deep" src="screenshot/blue.gif">
|
||||
<title xml:lang="ko">이상한거</title>
|
||||
</color>
|
||||
</colorset>
|
||||
<extra_vars>
|
||||
<var name="title" type="text">
|
||||
<title xml:lang="ko">제목</title>
|
||||
<description xml:lang="ko">그냥 테스트용입니다</description>
|
||||
</var>
|
||||
<var name="title2" type="text">
|
||||
<title xml:lang="ko">제목 2</title>
|
||||
<default>haha</default>
|
||||
</var>
|
||||
<var name="memo" type="textarea">
|
||||
<title xml:lang="ko">내용</title>
|
||||
<default lang="ko">내용의 기본값</default>
|
||||
</var>
|
||||
<var name="select" type="select">
|
||||
<title xml:lang="ko">선택1</title>
|
||||
<default>1</default>
|
||||
<default>2</default>
|
||||
<default>3</default>
|
||||
<default>4</default>
|
||||
<default>5</default>
|
||||
</var>
|
||||
<var name="checkbox" type="checkbox">
|
||||
<title xml:lang="ko">다중선택</title>
|
||||
<default>a</default>
|
||||
<default>b</default>
|
||||
<default>c</default>
|
||||
</var>
|
||||
<var name="radio" type="radio">
|
||||
<title xml:lang="ko">하나선택</title>
|
||||
<default>A</default>
|
||||
<default>B</default>
|
||||
<default>C</default>
|
||||
</var>
|
||||
<var name="logo_image" type="image" width="60" height="60">
|
||||
<title xml:lang="ko">로고이미지</title>
|
||||
</var>
|
||||
</extra_vars>
|
||||
<skin>
|
||||
46
modules/blog/skins/default/trackback.html
Normal file
46
modules/blog/skins/default/trackback.html
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
<!-- 엮인글 정보 출력 -->
|
||||
<div>
|
||||
{$lang->trackback} : {count($document->trackback_list)}
|
||||
</div>
|
||||
|
||||
<!-- 엮인글 목록 -->
|
||||
<!--@if($document->trackback_list)-->
|
||||
<div>
|
||||
<!--@foreach($document->trackback_list as $key => $val)-->
|
||||
<a name="trackback_{$val->trackback_srl}"></a>
|
||||
|
||||
<div style="margin-left:{$val->depth*15}px" >
|
||||
<table>
|
||||
<col width="120" />
|
||||
<col width="*" />
|
||||
<tr>
|
||||
<th>{$lang->title}</th>
|
||||
<td>{$val->title}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{$lang->date}</th>
|
||||
<td>{zdate($val->regdate, "Y-m-d H:i:s")}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{$lang->blog_name}</th>
|
||||
<td><a href="{$val->url}">{$val->blog_name}</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{$lang->excerpt}</th>
|
||||
<td height="100" valign="top">{nl2br($val->excerpt)}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>ipaddress</th>
|
||||
<td>{$val->ipaddress}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<a href="{getUrl('act','dispBoardDeleteTrackback','trackback_srl',$val->trackback_srl)}">[{$lang->cmd_delete}]</a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<!--@end-->
|
||||
</div>
|
||||
<!--@end-->
|
||||
130
modules/blog/skins/default/view_document.html
Normal file
130
modules/blog/skins/default/view_document.html
Normal file
|
|
@ -0,0 +1,130 @@
|
|||
<!--%import("filter/vote.xml")-->
|
||||
|
||||
<!-- 현 글의 기본 정보를 담고 있는 form. 필수 -->
|
||||
<form id="fo_document_info" action="./" method="get">
|
||||
<input type="hidden" name="mid" value="{$mid}" />
|
||||
<input type="hidden" name="document_srl" value="{$document_srl}" />
|
||||
</form>
|
||||
|
||||
<!-- 글 내용 보여주기 -->
|
||||
<div>
|
||||
<table border="1" width="100%" style="table-layout:fixed">
|
||||
<col width="120" />
|
||||
<col width="*" />
|
||||
|
||||
<!--@if($category_list && $document->category_srl)-->
|
||||
<tr>
|
||||
<th>{$lang->category}</th>
|
||||
<td>{$category_list[$document->category_srl]->title}</td>
|
||||
</tr>
|
||||
<!--@end-->
|
||||
|
||||
<tr>
|
||||
<th>{$lang->title}</th>
|
||||
<td>{htmlspecialchars($document->title)}</td>
|
||||
</tr>
|
||||
<!--@if($document->homepage)-->
|
||||
<tr>
|
||||
<th>{$lang->homepage}</th>
|
||||
<td><a href="{$document->homepage}" onclick="winopen('{$document->homepage}'); return false;">{htmlspecialchars($document->homepage)}</a></td>
|
||||
</tr>
|
||||
<!--@end-->
|
||||
<tr>
|
||||
<th>{$lang->date}</th>
|
||||
<td>{zdate($document->regdate,"Y-m-d H:i:s")}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{$lang->writer}</th>
|
||||
<td><div class="member_{$document->member_srl}">{htmlspecialchars($document->nick_name)}</div></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{$lang->readed_count}</th>
|
||||
<td>{$document->readed_count}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{$lang->voted_count}</th>
|
||||
<td>{$document->voted_count}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{$lang->content}</th>
|
||||
<td height="100" valign="top">{$document->content}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{$lang->document_url}</th>
|
||||
<td>{getUrl()}{$document->document_srl}</td>
|
||||
</tr>
|
||||
|
||||
<!--@if($document->allow_trackback=='Y')-->
|
||||
<tr>
|
||||
<th>{$lang->trackback_url}</th>
|
||||
<td>{getUrl()}trackback/{$document->document_srl}</td>
|
||||
</tr>
|
||||
<!--@end-->
|
||||
|
||||
<!--@if($document->tag_list)-->
|
||||
<tr>
|
||||
<th>{$lang->tag}</th>
|
||||
<td>
|
||||
<!--@foreach($document->tag_list as $val)-->
|
||||
<a href="{getUrl('search_target','tag','search_keyword',$val,'document_srl','')}">{htmlspecialchars($val)}</a>
|
||||
<!--@end-->
|
||||
</td>
|
||||
</tr>
|
||||
<!--@end-->
|
||||
|
||||
<!--@if($document->uploaded_count && $document->uploaded_list)-->
|
||||
<tr>
|
||||
<th>{$lang->uploaded_file}</th>
|
||||
<td>
|
||||
<!--@foreach($document->uploaded_list as $key => $file)-->
|
||||
<div><a href="{$file->download_url}">{$file->source_filename} ({FileHandler::filesize($file->file_size)})</a> ({number_format($file->download_count)})</div>
|
||||
<!--@end-->
|
||||
</td>
|
||||
</tr>
|
||||
<!--@end-->
|
||||
|
||||
<tr>
|
||||
<th>ipaddress</th>
|
||||
<td>{$document->ipaddress}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<!--@if($document->allow_comment=='Y')-->
|
||||
{$lang->allow_comment}
|
||||
<!--@end-->
|
||||
|
||||
<!--@if($document->lock_comment=='Y')-->
|
||||
{$lang->lock_comment}
|
||||
<!--@end-->
|
||||
|
||||
<!--@if($document->allow_trackback=='Y')-->
|
||||
{$lang->allow_trackback}
|
||||
<!--@end-->
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<!-- 관련 링크 -->
|
||||
<div>
|
||||
<a href="{getUrl('document_srl','')}">[{$lang->cmd_list}]</a>
|
||||
<a href="#" onclick="doVote();return false;">[{$lang->cmd_vote}]</a>
|
||||
|
||||
<!--@if($document->is_granted)-->
|
||||
<a href="{getUrl('act','dispBoardWrite')}">[{$lang->cmd_modify}]</a>
|
||||
<a href="{getUrl('act','dispBoardDelete')}">[{$lang->cmd_delete}]</a>
|
||||
<!--@end-->
|
||||
</div>
|
||||
|
||||
|
||||
<!-- 엮인글 파일 include -->
|
||||
<!--@if($document->allow_trackback=='Y')-->
|
||||
<a name="trackback"></a>
|
||||
<!--#include("./trackback.html")-->
|
||||
<!--@end-->
|
||||
|
||||
<!-- 댓글 파일 include -->
|
||||
<!--@if($grant->write_comment&&$document->allow_comment=='Y')-->
|
||||
<a name="comment"></a>
|
||||
<!--#include("./comment.html")-->
|
||||
<!--@end-->
|
||||
104
modules/blog/skins/default/write_form.html
Normal file
104
modules/blog/skins/default/write_form.html
Normal file
|
|
@ -0,0 +1,104 @@
|
|||
<!--%import("filter/insert.xml")-->
|
||||
<!--#include("header.html")-->
|
||||
|
||||
<form action="./" method="post" onsubmit="return procFilter(this, insert)" <!--@if($grant->fileupload)-->enctype="multipart/form-data"<!--@end-->>
|
||||
<input type="hidden" name="mid" value="{$mid}" />
|
||||
<input type="hidden" name="content" value="{htmlspecialchars($document->content)}" />
|
||||
<input type="hidden" name="document_srl" value="{$document_srl}" />
|
||||
|
||||
<table border="1" width="100%">
|
||||
<col width="120" />
|
||||
<col width="*" />
|
||||
|
||||
<!--@if($category_list)-->
|
||||
<tr>
|
||||
<th>{$lang->category}</th>
|
||||
<td>
|
||||
<select name="category_srl" >
|
||||
<option value="">{$lang->category}</option>
|
||||
<!--@foreach($category_list as $val)-->
|
||||
<option value="{$val->category_srl}" <!--@if($category==$val->category_srl||$val->category_srl==$document->category_srl)-->selected="true"<!--@end-->>{$val->title} <!--@if($val->document_count)-->({$val->document_count})<!--@end--></option>
|
||||
<!--@end-->
|
||||
</select>
|
||||
</td>
|
||||
<!--@end-->
|
||||
|
||||
<!--@if(!$is_logged)-->
|
||||
<tr>
|
||||
<th>{$lang->writer}</th>
|
||||
<td><input type="text" name="nick_name" value="{$document->nick_name}" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{$lang->password}</th>
|
||||
<td><input type="password" name="password" value="" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{$lang->email_address}</th>
|
||||
<td><input type="text" name="email_address" value="{htmlspecialchars($document->email_address)}"/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{$lang->homepage}</th>
|
||||
<td><input type="text" name="homepage" value="{htmlspecialchars($document->homepage)}" /></td>
|
||||
</tr>
|
||||
<!--@end-->
|
||||
|
||||
<tr>
|
||||
<th>{$lang->title}</th>
|
||||
<td><input type="text" name="title" value="{htmlspecialchars($document->title)}" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<!--@if($grant->manager)-->
|
||||
<input type="checkbox" name="is_notice" value="Y" <!--@if($document->is_notice== "Y")-->checked="true"<!--@end--> id="is_notice" />
|
||||
<label for="is_notice">{$lang->notice}</label>
|
||||
<!--@end-->
|
||||
|
||||
<input type="checkbox" name="is_secret" value="Y" <!--@if($document->is_secret== "Y")-->checked="true"<!--@end--> id="is_secret" />
|
||||
<label for="is_secret">{$lang->secret}</label>
|
||||
|
||||
<input type="checkbox" name="allow_comment" value="Y" <!--@if($document->allow_comment != "N")-->checked="true"<!--@end--> id="allow_comment" />
|
||||
<label for="allow_comment">{$lang->allow_comment}</label>
|
||||
|
||||
<input type="checkbox" name="lock_comment" value="Y" <!--@if($document->lock_comment == "Y")-->checked="true"<!--@end--> id="lock_comment" />
|
||||
<label for="lock_comment">{$lang->lock_comment}</label>
|
||||
|
||||
<input type="checkbox" name="allow_trackback" value="Y" <!--@if($document->allow_trackback != "N")-->checked="true"<!--@end--> id="allow_trackback" />
|
||||
<label for="allow_trackback">{$lang->allow_trackback}</label>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">{$editor}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{$lang->cmd_send_trackback}</th>
|
||||
<td>
|
||||
<input type="text" name="trackback_url" />
|
||||
<select name="trackback_charset">
|
||||
<option value='UTF-8'>UTF-8</option>
|
||||
<option value='EUC-KR'>EUC-KR</option>
|
||||
<option value='EUC-JP'>EUC-JP</option>
|
||||
<option value='SHIFT_JIS'>SHIFT_JIS</option>
|
||||
<option value='EUC-CN'>EUC-CN</option>
|
||||
<option value='HZ'>HZ</option>
|
||||
<option value='BIG5'>BIG5</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{$lang->tag}</th>
|
||||
<td>
|
||||
<input type="text" name="tags" value="{htmlspecialchars($document->tags)}" /> <br />
|
||||
{$lang->about_tag}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<input type="button" value="{$lang->cmd_cancel}" onclick="location.href='{getUrl('act','')}'" />
|
||||
<input type="submit" value="{$lang->cmd_registration}" accesskey="s" />
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
</form>
|
||||
|
||||
<!--#include("footer.html")-->
|
||||
19
modules/blog/tpl/board_config.html
Normal file
19
modules/blog/tpl/board_config.html
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
<!--#include("header.html")-->
|
||||
<!--%import("filter/insert_config.xml")-->
|
||||
|
||||
<form action="./" method="get" onsubmit="return procFilter(this, insert_config)">
|
||||
<table border="1">
|
||||
<tr>
|
||||
<th rowspan="2">{$lang->test}</th>
|
||||
<td><input type="text" name="test" value="{$config->test}" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{$lang->about_test}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<input type="submit" value="{$lang->cmd_registration}" accesskey="s" />
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
33
modules/blog/tpl/board_delete.html
Normal file
33
modules/blog/tpl/board_delete.html
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
<!--%import("filter/delete_board.xml")-->
|
||||
<!--%import("js/board_admin.js")-->
|
||||
|
||||
<form action="./" method="get" onsubmit="return procFilter(this, delete_board)">
|
||||
<input type="hidden" name="page" value="{$page}" />
|
||||
<input type="hidden" name="module_srl" value="{$module_info->module_srl}" />
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<th colspan="2">{$lang->confirm_delete}</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{$lang->module_name}</th>
|
||||
<td>{$module_info->mid}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{$lang->module}</th>
|
||||
<td>{$module_info->module}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{$lang->document_count}</th>
|
||||
<td>{$module_info->document_count}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<input type="submit" value="{$lang->cmd_delete}" />
|
||||
<input type="button" value="{$lang->cmd_back}" onclick="location.href='{getUrl('act','dispBoardAdminContent')}'" />
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
</form>
|
||||
|
||||
65
modules/blog/tpl/board_info.html
Normal file
65
modules/blog/tpl/board_info.html
Normal file
|
|
@ -0,0 +1,65 @@
|
|||
<!--#include("header.html")-->
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<th>{$lang->category}</th>
|
||||
<td>
|
||||
<!--@if(!$module_info->module_category_srl)-->
|
||||
{$lang->not_exists}
|
||||
<!--@else-->
|
||||
{$module_category[$module_info->module_category_srl]->title}
|
||||
<!--@end-->
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{$lang->layout}</th>
|
||||
<td>
|
||||
<!--@if($module_info->layout_srl)-->
|
||||
{$module_info->layout_title} ({$module_info->layout})
|
||||
<!--@else-->
|
||||
{$lang->not_exists}
|
||||
<!--@end-->
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{$lang->skin}</th>
|
||||
<td>{$module_info->skin_title} ({$module_info->skin})</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{$lang->browser_title}</th>
|
||||
<td>{htmlspecialchars($module_info->browser_title)}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{$lang->use_category}</th>
|
||||
<td><!--@if($module_info->use_category=='Y')-->{$lang->use}<!--@else-->{$lang->notuse}<!--@end--></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{$lang->list_count}</th>
|
||||
<td>{$module_info->list_count?$module_info->list_count:20}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{$lang->page_count}</th>
|
||||
<td>{$module_info->page_count?$module_info->page_count:10}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{$lang->description}</th>
|
||||
<td>{nl2br(htmlspecialchars($module_info->description))}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{$lang->header_text}</th>
|
||||
<td>{htmlspecialchars($module_info->header_text)}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{$lang->footer_text}</th>
|
||||
<td>{htmlspecialchars($module_info->footer_text)}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{$lang->admin_id}</th>
|
||||
<td>{implode(",",$module_info->admin_id)}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<input type="button" value="{$lang->cmd_modify}" onclick="location.href='{getUrl('act','dispBoardAdminInsertBoard')}'" />
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
132
modules/blog/tpl/board_insert.html
Normal file
132
modules/blog/tpl/board_insert.html
Normal file
|
|
@ -0,0 +1,132 @@
|
|||
<!--%import("filter/insert_board.xml")-->
|
||||
<!--%import("js/board_admin.js")-->
|
||||
|
||||
<!--@if($module_srl)-->
|
||||
<!--#include("header.html")-->
|
||||
<!--@end-->
|
||||
|
||||
<div>
|
||||
<!--@if(!$module_srl)-->
|
||||
{$lang->msg_new_module}
|
||||
<!--@else-->
|
||||
{$lang->msg_update_module}
|
||||
<!--@end-->
|
||||
</div>
|
||||
|
||||
<form action="./" method="post" onsubmit="return procFilter(this, insert_board)" enctype="multipart/form-data">
|
||||
<input type="hidden" name="page" value="{$page}" />
|
||||
<input type="hidden" name="module_srl" value="{$module_srl}" />
|
||||
<!--@if($module_info->is_default=='Y')-->
|
||||
<input type="hidden" name="is_default" value="Y" />
|
||||
<!--@end-->
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<th rowspan="2">{$lang->mid}</th>
|
||||
<td><input type="text" name="mid" value="{$module_info->mid}" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{$lang->about_mid}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th rowspan="2">{$lang->category}</th>
|
||||
<td>
|
||||
<select name="module_category_srl">
|
||||
<option value="0">{$lang->notuse}</option>
|
||||
<!--@foreach($module_category as $key => $val)-->
|
||||
<option value="{$key}" <!--@if($module_info->module_category_srl==$key)-->selected="true"<!--@end-->>{$val->title}</option>
|
||||
<!--@end-->
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{$lang->about_category}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th rowspan="2">{$lang->browser_title}</th>
|
||||
<td><input type="text" name="browser_title" value="{htmlspecialchars($module_info->browser_title)}" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{$lang->about_browser_title}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th rowspan="2">{$lang->skin}</th>
|
||||
<td>
|
||||
<select name="skin">
|
||||
<!--@foreach($skin_list as $key=>$val)-->
|
||||
<option value="{$key}" <!--@if($module_info->skin==$key)-->selected="true"<!--@end-->>{$val->title}</option>
|
||||
<!--@end-->
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{$lang->about_skin}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th rowspan="2">{$lang->use_category}</th>
|
||||
<td><input type="checkbox" name="use_category" value="Y" <!--@if($module_info->use_category=='Y')-->checked="true"<!--@end--> /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{$lang->about_use_category}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th rowspan="2">{$lang->list_count}</th>
|
||||
<td><input type="text" name="list_count" value="{$module_info->list_count?$module_info->list_count:20}" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{$lang->about_list_count}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th rowspan="2">{$lang->page_count}</th>
|
||||
<td><input type="text" name="page_count" value="{$module_info->page_count?$module_info->page_count:10}" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{$lang->about_page_count}</td>
|
||||
</tr>
|
||||
|
||||
<!--@if($module_info->is_default!='Y')-->
|
||||
<tr>
|
||||
<th rowspan="2">{$lang->is_default}</th>
|
||||
<td><input type="checkbox" name="is_default" value="Y" <!--@if($module_info->is_default=='Y')-->checked="true"<!--@end-->/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{$lang->about_default}</td>
|
||||
</tr>
|
||||
<!--@end-->
|
||||
|
||||
<tr>
|
||||
<th rowspan="2">{$lang->description}</th>
|
||||
<td><textarea name="description">{htmlspecialchars($module_info->description)}</textarea></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{$lang->about_description}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th rowspan="2">{$lang->header_text}</th>
|
||||
<td><textarea name="header_text">{htmlspecialchars($module_info->header_text)}</textarea></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{$lang->about_header_text}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th rowspan="2">{$lang->footer_text}</th>
|
||||
<td><textarea name="footer_text">{htmlspecialchars($module_info->footer_text)}</textarea></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{$lang->about_footer_text}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th rowspan="2">{$lang->admin_id}</th>
|
||||
<td><textarea name="admin_id"><!--@if($module_info->admin_id)-->{implode(",",$module_info->admin_id)}<!--@end--></textarea></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{$lang->about_admin_id}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<input type="button" value="{$lang->cmd_cancel}" onclick="location.href='{getUrl('act','dispBoardAdminContent')}'" />
|
||||
<input type="submit" value="{$lang->cmd_registration}" accesskey="s" />
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
55
modules/blog/tpl/category_list.html
Normal file
55
modules/blog/tpl/category_list.html
Normal file
|
|
@ -0,0 +1,55 @@
|
|||
<!--%import("filter/insert_category.xml")-->
|
||||
<!--%import("filter/update_category.xml")-->
|
||||
|
||||
<!--#include("./header.html")-->
|
||||
|
||||
<!-- 카테고리의 위/아래, 삭제와 관련된 form -->
|
||||
<form id="fo_category_info" action="./" method="get">
|
||||
<input type="hidden" name="module_srl" value="{$module_srl}" />
|
||||
<input type="hidden" name="category_srl" value="" />
|
||||
<input type="hidden" name="mode" value="" />
|
||||
</form>
|
||||
|
||||
<div>
|
||||
<table>
|
||||
<tr>
|
||||
<th>{$lang->category_title}</th>
|
||||
<th>{$lang->last_update}</th>
|
||||
<th>{$lang->cmd_modify}</th>
|
||||
<th colspan="2">{$lang->cmd_move}</th>
|
||||
<th>{$lang->cmd_delete}</th>
|
||||
</tr>
|
||||
|
||||
<!--@if(!count($category_list))-->
|
||||
<tr>
|
||||
<td colspan="6">{$lang->msg_category_is_null}</td>
|
||||
</tr>
|
||||
<!--@end-->
|
||||
|
||||
<!--@foreach($category_list as $category_srl => $category_info)-->
|
||||
<tr>
|
||||
<td>{htmlspecialchars($category_info->title)}</td>
|
||||
<td>{zdate($category_info->last_update,"Y-m-d H:i:s")}</td>
|
||||
<td><a href="{getUrl('category_srl',$category_info->category_srl)}">{$lang->cmd_modify}</a></td>
|
||||
<td><a href="#" onclick="doUpdateCategory('{$category_info->category_srl}','up');return false;">{$lang->cmd_move_up}</a></td>
|
||||
<td><a href="#" onclick="doUpdateCategory('{$category_info->category_srl}','down');return false;">{$lang->cmd_move_down}</a></td>
|
||||
<td><a href="#" onclick="doUpdateCategory('{$category_info->category_srl}','delete','{$lang->confirm_delete}');return false;">{$lang->cmd_delete}</a></td>
|
||||
</tr>
|
||||
<!--@end-->
|
||||
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<!-- 카테고리 추가 -->
|
||||
<form action="./" method="post" onsubmit="return procFilter(this, insert_category)">
|
||||
<input type="hidden" name="page" value="{$page}" />
|
||||
<input type="hidden" name="module_srl" value="{$module_srl}" />
|
||||
<input type="hidden" name="category_srl" value="" />
|
||||
|
||||
<div>
|
||||
{$lang->category_title} :
|
||||
<input type="text" name="category_title" />
|
||||
<input type="submit" value="{$lang->cmd_registration}" accesskey="s" />
|
||||
</div>
|
||||
|
||||
</form>
|
||||
21
modules/blog/tpl/category_update_form.html
Normal file
21
modules/blog/tpl/category_update_form.html
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
<!--%import("filter/update_category.xml")-->
|
||||
|
||||
<!--#include("./header.html")-->
|
||||
|
||||
<!-- 카테고리 수정 -->
|
||||
|
||||
<!--@if($selected_category)-->
|
||||
<form action="./" method="post" onsubmit="return procFilter(this, update_category)" enctype="multipart/form-data">
|
||||
<input type="hidden" name="module_srl" value="{$module_srl}" />
|
||||
<input type="hidden" name="category_srl" value="{$selected_category->category_srl}" />
|
||||
<input type="hidden" name="mode" value="update" />
|
||||
|
||||
<div style="margin-bottom:30px">
|
||||
{$lang->category_title} :
|
||||
<input type="text" name="category_title" value="{htmlspecialchars($selected_category->title)}" />
|
||||
<input type="submit" value="{$lang->cmd_modify}" />
|
||||
<input type="button" value="{$lang->cmd_cancel}" onclick="location.href='{getUrl('category_srl','')}'" />
|
||||
</div>
|
||||
|
||||
</form>
|
||||
<!--@end-->
|
||||
35
modules/blog/tpl/checked_list.html
Normal file
35
modules/blog/tpl/checked_list.html
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
<!--%import("filter/manage_checked_document.xml")-->
|
||||
<!--%import("js/board_admin.js")-->
|
||||
|
||||
<div style="width:400px">
|
||||
|
||||
<div>{$lang->cmd_manage_document}</div>
|
||||
|
||||
<!--@if(!count($document_list))-->
|
||||
<div>{$lang->msg_no_checked_document}</div>
|
||||
<!--@else-->
|
||||
<form action="./" method="get" id="fo_management">
|
||||
<input type="hidden" name="mid" value="{$mid}" />
|
||||
<input type="hidden" name="type" value="" />
|
||||
<div>{$lang->checked_count} : {count($document_list)}</div>
|
||||
|
||||
<div><a href="#" onclick="doManageDocument('delete');return false;">{$lang->cmd_delete}</a></div>
|
||||
|
||||
<!--@if(count($board_list)>1)-->
|
||||
<div>
|
||||
<select name="target_board">
|
||||
<!--@foreach($board_list as $key => $val)-->
|
||||
<!--@if($module_srl != $val->module_srl)-->
|
||||
<option value="{$val->module_srl}">{$val->browser_title} ({$val->mid})</option>
|
||||
<!--@end-->
|
||||
<!--@end-->
|
||||
</select>
|
||||
<a href="#" onclick="doManageDocument('move');return false;">{$lang->cmd_move}</a>
|
||||
</div>
|
||||
<!--@end-->
|
||||
</form>
|
||||
<!--@end-->
|
||||
|
||||
<div><a href="#" onclick="window.close(); return false;">{$lang->cmd_close}</a></div>
|
||||
|
||||
</div>
|
||||
10
modules/blog/tpl/filter/delete_board.xml
Normal file
10
modules/blog/tpl/filter/delete_board.xml
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
<filter name="delete_board" module="board" act="procBoardAdminDeleteBoard">
|
||||
<form>
|
||||
<node target="module_srl" required="true" />
|
||||
</form>
|
||||
<response callback_func="completeDeleteBoard">
|
||||
<tag name="error" />
|
||||
<tag name="message" />
|
||||
<tag name="page" />
|
||||
</response>
|
||||
</filter>
|
||||
32
modules/blog/tpl/filter/insert_board.xml
Normal file
32
modules/blog/tpl/filter/insert_board.xml
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
<filter name="insert_board" module="board" act="procBoardAdminInsertBoard" confirm_msg_code="confirm_submit">
|
||||
<form>
|
||||
<node target="mid" required="true" filter="alpha_number" />
|
||||
<node target="browser_title" required="true" maxlength="250" />
|
||||
<node target="list_count" required="true" filter="number" />
|
||||
<node target="page_count" required="true" filter="number" />
|
||||
</form>
|
||||
<parameter>
|
||||
<param name="board_name" target="mid" />
|
||||
<param name="module_srl" target="module_srl" />
|
||||
<param name="module_category_srl" target="module_category_srl" />
|
||||
<param name="layout_srl" target="layout_srl" />
|
||||
<param name="skin" target="skin" />
|
||||
<param name="browser_title" target="browser_title" />
|
||||
<param name="use_category" target="use_category" />
|
||||
<param name="list_count" target="list_count" />
|
||||
<param name="page_count" target="page_count" />
|
||||
<param name="is_default" target="is_default" />
|
||||
<param name="description" target="description" />
|
||||
<param name="header_text" target="header_text" />
|
||||
<param name="footer_text" target="footer_text" />
|
||||
<param name="admin_id" target="admin_id" />
|
||||
</parameter>
|
||||
<response callback_func="completeInsertBoard">
|
||||
<tag name="error" />
|
||||
<tag name="message" />
|
||||
<tag name="module" />
|
||||
<tag name="act" />
|
||||
<tag name="page" />
|
||||
<tag name="module_srl" />
|
||||
</response>
|
||||
</filter>
|
||||
12
modules/blog/tpl/filter/insert_category.xml
Normal file
12
modules/blog/tpl/filter/insert_category.xml
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
<filter name="insert_category" module="board" act="procBoardAdminInsertCategory" confirm_msg_code="confirm_submit">
|
||||
<form>
|
||||
<node target="module_srl" required="true" />
|
||||
<node target="category_title" required="true" />
|
||||
</form>
|
||||
<response callback_func="completeUpdateCategory">
|
||||
<tag name="error" />
|
||||
<tag name="message" />
|
||||
<tag name="page" />
|
||||
<tag name="module_srl" />
|
||||
</response>
|
||||
</filter>
|
||||
7
modules/blog/tpl/filter/insert_config.xml
Normal file
7
modules/blog/tpl/filter/insert_config.xml
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
<filter name="insert_config" module="board" act="procBoardAdminInsertConfig" confirm_msg_code="confirm_submit">
|
||||
<form />
|
||||
<response>
|
||||
<tag name="error" />
|
||||
<tag name="message" />
|
||||
</response>
|
||||
</filter>
|
||||
11
modules/blog/tpl/filter/insert_grant.xml
Normal file
11
modules/blog/tpl/filter/insert_grant.xml
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
<filter name="insert_grant" module="board" act="procBoardAdminInsertGrant" confirm_msg_code="confirm_submit">
|
||||
<form>
|
||||
<node target="module_srl" required="true" filter="number" />
|
||||
</form>
|
||||
<response callback_func="completeInsertGrant">
|
||||
<tag name="error" />
|
||||
<tag name="message" />
|
||||
<tag name="page" />
|
||||
<tag name="module_srl" />
|
||||
</response>
|
||||
</filter>
|
||||
7
modules/blog/tpl/filter/manage_checked_document.xml
Normal file
7
modules/blog/tpl/filter/manage_checked_document.xml
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
<filter name="manage_checked_document" module="board" act="procBoardAdminManageCheckedDocument">
|
||||
<form />
|
||||
<response callback_func="completeManageDocument">
|
||||
<tag name="error" />
|
||||
<tag name="message" />
|
||||
</response>
|
||||
</filter>
|
||||
11
modules/blog/tpl/filter/update_category.xml
Normal file
11
modules/blog/tpl/filter/update_category.xml
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
<filter name="update_category" module="board" act="procBoardAdminUpdateCategory">
|
||||
<form>
|
||||
<node target="category_srl" required="true" />
|
||||
<node target="mode" required="true" />
|
||||
</form>
|
||||
<response callback_func="completeUpdateCategory">
|
||||
<tag name="error" />
|
||||
<tag name="message" />
|
||||
<tag name="module_srl" />
|
||||
</response>
|
||||
</filter>
|
||||
45
modules/blog/tpl/grant_list.html
Normal file
45
modules/blog/tpl/grant_list.html
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
<!--#include("./header.html")-->
|
||||
<!--%import("filter/insert_grant.xml")-->
|
||||
|
||||
<form action="./" method="post" onsubmit="return procFilter(this, insert_grant)">
|
||||
<input type="hidden" name="page" value="{$page}" />
|
||||
<input type="hidden" name="module_srl" value="{$module_srl}" />
|
||||
|
||||
<div>
|
||||
{$lang->about_grant}
|
||||
</div>
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<th>{$lang->grant}</th>
|
||||
<th>{$lang->target}</th>
|
||||
</tr>
|
||||
|
||||
<!--@foreach($grant_list as $key => $val)-->
|
||||
<tr>
|
||||
<td>{$val->title}</td>
|
||||
<td>
|
||||
<div>
|
||||
<!--@foreach($group_list as $k => $v)-->
|
||||
<span>
|
||||
<input type="checkbox" name="{$key}" value="{$v->group_srl}" id="grant_{$key}_{$v->group_srl}" <!--@if(is_array($module_info->grants)&&in_array($v->group_srl,$module_info->grants[$key]))-->checked="true"<!--@end-->/>
|
||||
<label for="grant_{$key}_{$v->group_srl}">{$v->title}</label>
|
||||
</span>
|
||||
<!--@end-->
|
||||
</div>
|
||||
<div>
|
||||
<input type="button" value="{$lang->cmd_select_all}" onclick="doSelectAll(this, '{$key}')"/>
|
||||
<input type="button" value="{$lang->cmd_unselect_all}" onclick="doUnSelectAll(this, '{$key}')"/>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<!--@end-->
|
||||
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<input type="submit" value="{$lang->cmd_save}" />
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
</form>
|
||||
28
modules/blog/tpl/header.html
Normal file
28
modules/blog/tpl/header.html
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
<!--%import("js/board_admin.js")-->
|
||||
|
||||
<!--@if($module=='admin')-->
|
||||
<div style="margin-bottom:20px;">
|
||||
<span <!--@if($act=='dispBoardAdminContent')-->style="font-weight:bold"<!--@end-->>[<a href="{getUrl('act','dispBoardAdminContent','module_srl','')}">{$lang->cmd_board_list}</a>]</span>
|
||||
<span <!--@if($act=='dispBoardAdminModuleConfig')-->style="font-weight:bold"<!--@end-->>[<a href="{getUrl('act','dispBoardAdminModuleConfig','module_srl','')}">{$lang->cmd_module_config}</a>]</span>
|
||||
</div>
|
||||
<!--@end-->
|
||||
|
||||
<!--@if($module_info)-->
|
||||
<div style="margin-bottom:20px;">
|
||||
<!--@if($mid == $module_info->mid)-->
|
||||
<span>[<a href="#" onclick="location.href=location.href.setQuery('act',''); return false;">{$lang->cmd_back}</a>]</span>
|
||||
<!--@end-->
|
||||
<span <!--@if($act=='dispBoardAdminBoardInfo')-->style="font-weight:bold"<!--@end-->>[<a href="{getUrl('act','dispBoardAdminBoardInfo')}">{$lang->cmd_view_info}</a>]</span>
|
||||
<span <!--@if($act=='dispBoardAdminCategoryInfo')-->style="font-weight:bold"<!--@end-->>[<a href="{getUrl('act','dispBoardAdminCategoryInfo')}">{$lang->cmd_manage_category}</a>]</span>
|
||||
<span <!--@if($act=='dispBoardAdminGrantInfo')-->style="font-weight:bold"<!--@end-->>[<a href="{getUrl('act','dispBoardAdminGrantInfo')}">{$lang->cmd_manage_grant}</a>]</span>
|
||||
<span <!--@if($act=='dispBoardAdminSkinInfo')-->style="font-weight:bold"<!--@end-->>[<a href="{getUrl('act','dispBoardAdminSkinInfo')}">{$lang->cmd_manage_skin}</a>]</span>
|
||||
</div>
|
||||
|
||||
<div style="margin-bottom:20px;font-weight:bold;">
|
||||
{$lang->mid} : {$module_info->mid}
|
||||
<!--@if($mid != $module_info->mid)-->
|
||||
(<a href="#" onclick="location.href='./?mid={$module_info->mid}';return false">{$lang->cmd_move}</a>)
|
||||
<!--@end-->
|
||||
<!--@if($module_info->is_default=='Y')-->[{$lang->is_default}]<!--@end-->
|
||||
</div>
|
||||
<!--@end-->
|
||||
77
modules/blog/tpl/index.html
Normal file
77
modules/blog/tpl/index.html
Normal file
|
|
@ -0,0 +1,77 @@
|
|||
<!--#include("header.html")-->
|
||||
|
||||
<!-- 게시판 정보 -->
|
||||
<div>
|
||||
{$lang->total_count} {number_format($total_count)},
|
||||
{$lang->page_count} : {number_format($page)} / {number_format($total_page)}
|
||||
</div>
|
||||
|
||||
|
||||
<!-- 목록 -->
|
||||
<div>
|
||||
<table border="1" width="100%">
|
||||
<tr>
|
||||
<th>{$lang->no}</th>
|
||||
<th>
|
||||
<form action="./" method="get">
|
||||
<select name="category" onchange="doChangeCategory(this, '{getUrl('module_category_srl','')}')" >
|
||||
<option value="">{$lang->category}</option>
|
||||
<!--@foreach($module_category as $key => $val)-->
|
||||
<option value="{$key}" <!--@if($module_category_srl==$key)-->selected="true"<!--@end-->>{$val->title}</option>
|
||||
<!--@end-->
|
||||
</select>
|
||||
</form>
|
||||
</th>
|
||||
<th>{$lang->mid}</th>
|
||||
<th>{$lang->browser_title}</th>
|
||||
<th>{$lang->is_default}</th>
|
||||
<th>{$lang->skin}</th>
|
||||
<th>{$lang->admin_id}</th>
|
||||
<th>{$lang->regdate}</th>
|
||||
<th>{$lang->cmd_move}</th>
|
||||
<th>{$lang->cmd_delete}</th>
|
||||
</tr>
|
||||
|
||||
<!--@foreach($board_list as $no => $val)-->
|
||||
<tr>
|
||||
<td>{$no}</td>
|
||||
<td>
|
||||
<!--@if(!$val->module_category_srl)-->
|
||||
{$lang->not_exists}
|
||||
<!--@else-->
|
||||
{$module_category[$val->module_category_srl]->title}
|
||||
<!--@end-->
|
||||
</td>
|
||||
<td><a href="{getUrl('act','dispBoardAdminBoardInfo','module_srl',$val->module_srl)}">{$val->mid}</a></td>
|
||||
<td>{htmlspecialchars($val->browser_title)}</td>
|
||||
<td>{$val->is_default}</td>
|
||||
<td>{$val->skin}</td>
|
||||
<td>{$val->admin_id}</td>
|
||||
<td>{zdate($val->regdate,"Y-m-d")}</td>
|
||||
<td><a href="./?mid={$val->mid}" target="_blank">{$lang->cmd_move}</a></td>
|
||||
<td><!--@if($val->is_default!='Y')--><a href="{getUrl('act','dispBoardAdminDeleteBoard','module_srl', $val->module_srl)}">{$lang->cmd_delete}</a><!--@end--></td>
|
||||
</tr>
|
||||
<!--@end-->
|
||||
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<!-- 버튼 -->
|
||||
<div>
|
||||
[<a href="{getUrl('act','dispBoardAdminInsertBoard','module_srl','')}">{$lang->cmd_make}</a>]
|
||||
</div>
|
||||
|
||||
<!-- 페이지 네비게이션 -->
|
||||
<div>
|
||||
<a href="{getUrl('page','','module_srl','')}">[{$lang->first_page}]</a>
|
||||
|
||||
<!--@while($page_no = $page_navigation->getNextPage())-->
|
||||
<!--@if($page == $page_no)-->
|
||||
{$page_no}
|
||||
<!--@else-->
|
||||
<a href="{getUrl('page',$page_no,'module_srl','')}">[{$page_no}]</a>
|
||||
<!--@end-->
|
||||
<!--@end-->
|
||||
|
||||
<a href="{getUrl('page',$page_navigation->last_page,'module_srl','')}">[{$lang->last_page}]</a>
|
||||
</div>
|
||||
116
modules/blog/tpl/js/board_admin.js
Normal file
116
modules/blog/tpl/js/board_admin.js
Normal file
|
|
@ -0,0 +1,116 @@
|
|||
/**
|
||||
* @file modules/board/js/board_admin.js
|
||||
* @author zero (zero@nzeo.com)
|
||||
* @brief board 모듈의 관리자용 javascript
|
||||
**/
|
||||
|
||||
/* 모듈 생성 후 */
|
||||
function completeInsertBoard(ret_obj) {
|
||||
var error = ret_obj['error'];
|
||||
var message = ret_obj['message'];
|
||||
|
||||
var page = ret_obj['page'];
|
||||
var module_srl = ret_obj['module_srl'];
|
||||
|
||||
alert(message);
|
||||
|
||||
var url = location.href.setQuery('module_srl',module_srl).setQuery('act','dispBoardAdminBoardInfo');
|
||||
if(page) url.setQuery('page',page);
|
||||
location.href = url;
|
||||
}
|
||||
|
||||
/* 모듈 삭제 후 */
|
||||
function completeDeleteBoard(ret_obj) {
|
||||
var error = ret_obj['error'];
|
||||
var message = ret_obj['message'];
|
||||
var page = ret_obj['page'];
|
||||
alert(message);
|
||||
|
||||
var url = location.href.setQuery('act','dispBoardAdminContent').setQuery('module_srl','');
|
||||
if(page) url = url.setQuery('page',page);
|
||||
location.href = url;
|
||||
}
|
||||
|
||||
/* 카테고리 관련 작업들 */
|
||||
function doUpdateCategory(category_srl, mode, message) {
|
||||
if(typeof(message)!='undefined'&&!confirm(message)) return;
|
||||
|
||||
var fo_obj = xGetElementById('fo_category_info');
|
||||
fo_obj.category_srl.value = category_srl;
|
||||
fo_obj.mode.value = mode;
|
||||
|
||||
procFilter(fo_obj, update_category);
|
||||
}
|
||||
|
||||
/* 카테고리 정보 수정 후 */
|
||||
function completeUpdateCategory(ret_obj) {
|
||||
var error = ret_obj['error'];
|
||||
var message = ret_obj['message'];
|
||||
var module_srl = ret_obj['module_srl'];
|
||||
var page = ret_obj['page'];
|
||||
alert(message);
|
||||
|
||||
var url = location.href.setQuery('module_srl',module_srl).setQuery('act','dispBoardAdminCategoryInfo');
|
||||
if(page) url.setQuery('page',page);
|
||||
location.href = url;
|
||||
}
|
||||
|
||||
/* 권한 관련 */
|
||||
function doSelectAll(obj, key) {
|
||||
var fo_obj = obj.parentNode;
|
||||
while(fo_obj.nodeName != 'FORM') {
|
||||
fo_obj = fo_obj.parentNode;
|
||||
}
|
||||
|
||||
for(var i=0;i<fo_obj.length;i++) {
|
||||
var tobj = fo_obj[i];
|
||||
if(tobj.name == key) tobj.checked=true;
|
||||
}
|
||||
}
|
||||
|
||||
function doUnSelectAll(obj, key) {
|
||||
var fo_obj = obj.parentNode;
|
||||
while(fo_obj.nodeName != 'FORM') {
|
||||
fo_obj = fo_obj.parentNode;
|
||||
}
|
||||
|
||||
for(var i=0;i<fo_obj.length;i++) {
|
||||
var tobj = fo_obj[i];
|
||||
if(tobj.name == key) tobj.checked = false;
|
||||
}
|
||||
}
|
||||
|
||||
function completeInsertGrant(ret_obj) {
|
||||
var error = ret_obj['error'];
|
||||
var message = ret_obj['message'];
|
||||
var page = ret_obj['page'];
|
||||
var module_srl = ret_obj['module_srl'];
|
||||
|
||||
alert(message);
|
||||
|
||||
var url = location.href.setQuery('module_srl',module_srl).setQuery('act','dispBoardAdminGrantInfo');
|
||||
if(page) url.setQuery('page',page);
|
||||
location.href = url;
|
||||
}
|
||||
|
||||
/* 카테고리 이동 */
|
||||
function doChangeCategory(sel_obj, url) {
|
||||
var module_category_srl = sel_obj.options[sel_obj.selectedIndex].value;
|
||||
if(!module_category_srl) location.href=url;
|
||||
else location.href=url+'&module_category_srl='+module_category_srl;
|
||||
}
|
||||
|
||||
/* 선택된 글의 삭제 또는 이동 */
|
||||
function doManageDocument(type, mid) {
|
||||
var fo_obj = xGetElementById("fo_management");
|
||||
fo_obj.type.value = type;
|
||||
|
||||
procFilter(fo_obj, manage_checked_document);
|
||||
}
|
||||
|
||||
/* 선택된 글의 삭제 또는 이동 후 */
|
||||
function completeManageDocument(ret_obj) {
|
||||
if(opener) opener.location.href = opener.location.href;
|
||||
alert(ret_obj['message']);
|
||||
window.close();
|
||||
}
|
||||
127
modules/blog/tpl/skin_info.html
Normal file
127
modules/blog/tpl/skin_info.html
Normal file
|
|
@ -0,0 +1,127 @@
|
|||
<!--#include("./header.html")-->
|
||||
|
||||
<form action="./" method="post" enctype="multipart/form-data" target="hidden_iframe">
|
||||
<input type="hidden" name="module" value="{$module}" />
|
||||
<input type="hidden" name="act" value="procBoardAdminUpdateSkinInfo" />
|
||||
<input type="hidden" name="module_srl" value="{$module_srl}" />
|
||||
<input type="hidden" name="page" value="{$page}" />
|
||||
|
||||
<div style="margin-bottom:10px;">
|
||||
<table>
|
||||
<tr>
|
||||
<th colspan="2">{$lang->skin_default_info}</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{$lang->skin}</th>
|
||||
<td>{$skin_info->title}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{$lang->skin_maker}</th>
|
||||
<td>{$skin_info->maker->name} (<a href="mailto:{$skin_info->maker->email_address}">{$skin_info->maker->email_address}</a>)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{$lang->skin_maker_homepage}</th>
|
||||
<td><a href="{$skin_info->maker->homepage}" target="_blank">{$skin_info->maker->homepage}</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{$lang->date}</th>
|
||||
<td>{$skin_info->maker->date}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{$lang->description}</th>
|
||||
<td>{nl2br($skin_info->maker->description)}</td>
|
||||
</tr>
|
||||
<tr valign="top">
|
||||
<th>{$lang->colorset}</th>
|
||||
<td>
|
||||
|
||||
<!--@foreach($skin_info->colorset as $key => $val)-->
|
||||
<div>
|
||||
<!--@if($val->screenshot)-->
|
||||
<img src="{$val->screenshot}" align="left" alt="{$val->title}" />
|
||||
<!--@end-->
|
||||
|
||||
<input type="radio" name="colorset" value="{$val->name}" id="colorset_{$key}" <!--@if($module_info->colorset==$val->name)-->checked="true"<!--@end-->/>
|
||||
<label for="colorset_{$key}">{$val->title}</label>
|
||||
</div>
|
||||
<!--@end-->
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<!--@if($skin_info->extra_vars)-->
|
||||
<div>
|
||||
<table>
|
||||
<tr>
|
||||
<th colspan="2">{$lang->extra_vars}</th>
|
||||
</tr>
|
||||
|
||||
<!--@foreach($skin_info->extra_vars as $key => $val)-->
|
||||
<tr>
|
||||
<th <!--@if($val->description)-->rowspan="2"<!--@end-->>{$val->title}</th>
|
||||
<td>
|
||||
<!--@if($val->type=="text")-->
|
||||
<input type="text" name="{$val->name}" value="{htmlspecialchars($val->value)}" />
|
||||
|
||||
<!--@elseif($val->type=="textarea")-->
|
||||
<textarea name="{$val->name}">{htmlspecialchars($val->value)}</textarea>
|
||||
|
||||
<!--@elseif($val->type=="select")-->
|
||||
<select name="{$val->name}">
|
||||
<!--@foreach($val->default as $k=>$v)-->
|
||||
<option value="{$v}" <!--@if($v==$val->value)-->selected="true"<!--@end-->>{$v}</option>
|
||||
<!--@end-->
|
||||
</select>
|
||||
|
||||
<!--@elseif($val->type=="checkbox")-->
|
||||
<!--@foreach($val->default as $k=>$v)-->
|
||||
<span>
|
||||
<input type="checkbox" name="{$val->name}[]" value="{$v}" id="ch_{$key}_{$k}" <!--@if(in_array($v, $val->value))-->checked="true"<!--@end-->/>
|
||||
<label for="ch_{$key}_{$k}">{$v}</label>
|
||||
</span>
|
||||
<!--@end-->
|
||||
|
||||
<!--@elseif($val->type=="radio")-->
|
||||
<!--@foreach($val->default as $k=>$v)-->
|
||||
<span>
|
||||
<input type="radio" name="{$val->name}" value="{$v}" id="ch_{$key}_{$k}" <!--@if($v==$val->value)-->checked="true"<!--@end-->/>
|
||||
<label for="ch_{$key}_{$k}">{$v}</label>
|
||||
</span>
|
||||
<!--@end-->
|
||||
|
||||
<!--@elseif($val->type=="image")-->
|
||||
|
||||
<!--@if($val->value)-->
|
||||
<div>
|
||||
<img src="{$val->value}" /><br />
|
||||
<input type="checkbox" name="del_{$val->name}" value="Y" id="del_{$val->name}" />
|
||||
<label for="del_{$val->name}">{$lang->cmd_delete}</label>
|
||||
</div>
|
||||
<!--@end-->
|
||||
|
||||
<input type="file" name="{$val->name}" value="" />
|
||||
<!--@end-->
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<!--@if($val->description)-->
|
||||
<tr>
|
||||
<td>{nl2br($val->description)}</td>
|
||||
</tr>
|
||||
<!--@end-->
|
||||
|
||||
<!--@end-->
|
||||
</table>
|
||||
|
||||
</div>
|
||||
<!--@end-->
|
||||
|
||||
<div>
|
||||
<input type="submit" value="{$lang->cmd_registration}" />
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<iframe name="hidden_iframe" frameborder="0" style="display:none"></iframe>
|
||||
3
modules/blog/tpl/top_refresh.html
Normal file
3
modules/blog/tpl/top_refresh.html
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
<script type="text/javascript">
|
||||
top.location.href = top.location.href;
|
||||
</script>
|
||||
Loading…
Add table
Add a link
Reference in a new issue