board api 추가

git-svn-id: http://xe-core.googlecode.com/svn/sandbox@5166 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
ngleader 2008-12-23 09:06:48 +00:00
parent f788064050
commit c40ea62b34
11 changed files with 175 additions and 31 deletions

View file

@ -0,0 +1,87 @@
<?php
/**
* @class boardAPI
* @author sol(sol@ngleader.com)
* @brief board 모듈의 View Action에 대한 API 처리
**/
class boardAPI extends board {
/* dispBoardContent 사용하지 않는다..
function dispBoardContent(&$oModule) {
}
*/
/**
* @brief 공지사항 목록
**/
function dispBoardNoticeList(&$oModule) {
$oModule->add('notice_list',$this->arrangeContentList(Context::get('notice_list')));
}
/**
* @brief 컨텐츠 목록
**/
function dispBoardContentList(&$oModule) {
$oModule->add('document_list',$this->arrangeContentList(Context::get('document_list')));
$oModule->add('page_navigation',Context::get('page_navigation'));
}
/**
* @brief 카테고리(분류) 목록
**/
function dispBoardCatogoryList(&$oModule) {
$oModule->add('category_list',Context::get('category_list'));
}
/**
* @brief 게시물 보기
**/
function dispBoardContentView(&$oModule) {
$oModule->add('oDocument',$this->arrangeContent(Context::get('oDocument')));
}
/**
* @brief 태그 목록
**/
function dispBoardTagList(&$oModule) {
$oModule->add('tag_list',Context::get('tag_list'));
}
function dispBoardConentCommentList(&$oModule) {
$oModule->add('comment_list',$this->arrangeComment(Context::get('comment_list')));
}
function arrangeContentList($content_list) {
$output = array();
if(count($content_list)) {
foreach($content_list as $key => $val) $output[] = $this->arrangeContent($val);
}
return $output;
}
function arrangeContent($content) {
$output = null;
if($content){
$output= $content->gets('document_srl','category_srl','is_secret','nick_name','user_id','user_name','title','content','tags','voted_count','blamed_count','comment_count','regdate','last_update','extra_vars1','extra_vars2','extra_vars3','extra_vars4','extra_vars5','extra_vars6','extra_vars7','extra_vars8','extra_vars9','extra_vars10','extra_vars11','extra_vars12','extra_vars13','extra_vars14','extra_vars15','extra_vars16','extra_vars17','extra_vars18','extra_vars19','extra_vars20');
}
return $output;
}
function arrangeComment($comment_list) {
$output = array();
if(count($comment_list)) {
foreach($comment_list as $key => $val){
$item = null;
$item = $val->gets('comment_srl','parent_srl','depth','is_secret','content','voted_count','blamed_count','user_id','user_name','nick_name','email_address','homepage','regdate','last_update');
$output[] = $item;
}
}
return $output;
}
}
?>

View file

@ -67,10 +67,8 @@
/** /**
* 카테고리를 사용하는지 확인후 사용시 카테고리 목록을 구해와서 Context에 세팅 * 카테고리를 사용하는지 확인후 사용시 카테고리 목록을 구해와서 Context에 세팅
**/ **/
if($this->module_info->use_category=='Y') { $this->dispBoardCatogoryList();
$oDocumentModel = &getModel('document');
Context::set('category_list', $oDocumentModel->getCategoryList($this->module_srl));
}
/** /**
* 목록이 노출될때 같이 나오는 검색 옵션을 정리하여 스킨에서 있도록 context set * 목록이 노출될때 같이 나오는 검색 옵션을 정리하여 스킨에서 있도록 context set
@ -82,14 +80,34 @@
for($i=1;$i<=20;$i++) { for($i=1;$i<=20;$i++) {
$ex_name = trim($this->module_info->extra_vars[$i]->name); $ex_name = trim($this->module_info->extra_vars[$i]->name);
if(!$ex_name) continue; if(!$ex_name) continue;
if($this->module_info->extra_vars[$i]->search == 'Y') $search_option['extra_vars'.$i] = $ex_name; if($this->module_info->extra_vars[$i]->search == 'Y') $search_option['extra_vars'.$i] = $ex_name;
} }
Context::set('search_option', $search_option); Context::set('search_option', $search_option);
/**
* 게시글 목록을 추출함 // 게시글을 가져옴
**/ $this->dispBoardContentView();
// 공지사항 목록을 구해서 context set (공지사항을 매페이지 제일 상단에 위치하기 위해서)
$this->dispBoardNoticeList();
// 목록
$this->dispBoardContentList();
// template_file을 list.html로 지정
$this->setTemplateFile('list');
}
function dispBoardCatogoryList(){
if($this->module_info->use_category=='Y') {
$oDocumentModel = &getModel('document');
Context::set('category_list', $oDocumentModel->getCategoryList($this->module_srl));
}
}
function dispBoardContentView(){
$oDocumentModel = &getModel('document');
$args->module_srl = $this->module_srl; ///< 현재 모듈의 module_srl
// 목록 구현에 필요한 변수들을 가져온다 // 목록 구현에 필요한 변수들을 가져온다
$document_srl = Context::get('document_srl'); $document_srl = Context::get('document_srl');
@ -135,9 +153,7 @@
if(!$this->grant->view && !$oDocument->isGranted()) { if(!$this->grant->view && !$oDocument->isGranted()) {
$oDocument = null; $oDocument = null;
$oDocument = $oDocumentModel->getDocument(0); $oDocument = $oDocumentModel->getDocument(0);
Context::set('document_srl','',true); Context::set('document_srl','',true);
$this->alertMessage('msg_not_permitted'); $this->alertMessage('msg_not_permitted');
} else { } else {
// 브라우저 타이틀에 글의 제목을 추가 // 브라우저 타이틀에 글의 제목을 추가
@ -145,21 +161,49 @@
// 조회수 증가 (비밀글일 경우 권한 체크) // 조회수 증가 (비밀글일 경우 권한 체크)
if(!$oDocument->isSecret() || $oDocument->isGranted()) $oDocument->updateReadedCount(); if(!$oDocument->isSecret() || $oDocument->isGranted()) $oDocument->updateReadedCount();
// 비밀글일때 컨텐츠를 보여주지 말자.
if($oDocument->isSecret() && !$oDocument->isGranted()){
$oDocument->add('content',Context::getLang('thisissecret'));
$obj = null;
for($i=1;$i<=20;$i++) $obj->{"extra_vars".$i} = '';
$oDocument->adds($obj);
}
} }
} }
} }
// 스킨에서 사용하기 위해 context set // 스킨에서 사용하기 위해 context set
Context::set('oDocument', $oDocument); Context::set('oDocument', $oDocument);
}
// 공지사항 목록을 구해서 context set (공지사항을 매페이지 제일 상단에 위치하기 위해서) function dispBoardContentCommentList(){
$oDocumentModel = &getModel('document');
$document_srl = Context::get('document_srl');
$oDocument = $oDocumentModel->getDocument($document_srl);
$comment_list = $oDocument->getComments();
// 비밀글일때 컨텐츠를 보여주지 말자.
foreach($comment_list as $key => $val){
if(!$val->isAccessible()){
$val->add('content',Context::getLang('thisissecret'));
}
}
Context::set('comment_list',$comment_list);
}
function dispBoardNoticeList(){
$oDocumentModel = &getModel('document');
$args->module_srl = $this->module_srl; ///< 현재 모듈의 module_srl $args->module_srl = $this->module_srl; ///< 현재 모듈의 module_srl
$notice_output = $oDocumentModel->getNoticeList($args); $notice_output = $oDocumentModel->getNoticeList($args);
Context::set('notice_list', $notice_output->data); Context::set('notice_list', $notice_output->data);
}
function dispBoardContentList(){
$oDocumentModel = &getModel('document');
$args->module_srl = $this->module_srl; ///< 현재 모듈의 module_srl
// 목록을 구하기 위한 대상 모듈/ 페이지 수/ 목록 수/ 페이지 목록 수에 대한 옵션 설정 // 목록을 구하기 위한 대상 모듈/ 페이지 수/ 목록 수/ 페이지 목록 수에 대한 옵션 설정
$args->page = $page; ///< 페이지 $args->page = Context::get('page');; ///< 페이지
$args->list_count = $this->list_count; ///< 한페이지에 보여줄 글 수 $args->list_count = $this->list_count; ///< 한페이지에 보여줄 글 수
$args->page_count = $this->page_count; ///< 페이지 네비게이션에 나타날 페이지의 수 $args->page_count = $this->page_count; ///< 페이지 네비게이션에 나타날 페이지의 수
@ -199,11 +243,9 @@
Context::set('total_page', $output->total_page); Context::set('total_page', $output->total_page);
Context::set('page', $output->page); Context::set('page', $output->page);
Context::set('page_navigation', $output->page_navigation); Context::set('page_navigation', $output->page_navigation);
// template_file을 list.html로 지정
$this->setTemplateFile('list');
} }
/** /**
* @brief 태그 목록 모두 보기 * @brief 태그 목록 모두 보기
**/ **/

View file

@ -3,43 +3,43 @@
<grants> <grants>
<grant name="list" default="guest"> <grant name="list" default="guest">
<title xml:lang="ko">목록</title> <title xml:lang="ko">목록</title>
<title xml:lang="zh-CN">目录</title> <title xml:lang="zh-CN">目录</title>
<title xml:lang="jp">リスト</title> <title xml:lang="jp">リスト</title>
<title xml:lang="en">list</title> <title xml:lang="en">list</title>
<title xml:lang="es">Lista</title> <title xml:lang="es">Lista</title>
<title xml:lang="zh-TW">列表</title> <title xml:lang="zh-TW">列表</title>
</grant> </grant>
<grant name="view" default="guest"> <grant name="view" default="guest">
<title xml:lang="ko">열람</title> <title xml:lang="ko">열람</title>
<title xml:lang="zh-CN">查看</title> <title xml:lang="zh-CN">查看</title>
<title xml:lang="jp">閲覧</title> <title xml:lang="jp">閲覧</title>
<title xml:lang="en">view</title> <title xml:lang="en">view</title>
<title xml:lang="es">Opinión</title> <title xml:lang="es">Opinión</title>
<title xml:lang="zh-TW">檢視</title> <title xml:lang="zh-TW">檢視</title>
</grant> </grant>
<grant name="write_document" default="guest"> <grant name="write_document" default="guest">
<title xml:lang="ko">글 작성</title> <title xml:lang="ko">글 작성</title>
<title xml:lang="zh-CN">发表新主题</title> <title xml:lang="zh-CN">发表新主题</title>
<title xml:lang="jp">書き込み作成</title> <title xml:lang="jp">書き込み作成</title>
<title xml:lang="en">write document</title> <title xml:lang="en">write document</title>
<title xml:lang="es">Escribir el documento</title> <title xml:lang="es">Escribir el documento</title>
<title xml:lang="zh-TW">發表主題</title> <title xml:lang="zh-TW">發表主題</title>
</grant> </grant>
<grant name="write_comment" default="guest"> <grant name="write_comment" default="guest">
<title xml:lang="ko">댓글 작성</title> <title xml:lang="ko">댓글 작성</title>
<title xml:lang="zh-CN">发表评论</title> <title xml:lang="zh-CN">发表评论</title>
<title xml:lang="jp">コメント作成</title> <title xml:lang="jp">コメント作成</title>
<title xml:lang="en">write comment</title> <title xml:lang="en">write comment</title>
<title xml:lang="es">Escribir comentario</title> <title xml:lang="es">Escribir comentario</title>
<title xml:lang="zh-TW">發表評論</title> <title xml:lang="zh-TW">發表評論</title>
</grant> </grant>
<grant name="manager" default="root"> <grant name="manager" default="root">
<title xml:lang="ko">관리</title> <title xml:lang="ko">관리</title>
<title xml:lang="zh-CN">管理</title> <title xml:lang="zh-CN">管理</title>
<title xml:lang="jp">管理</title> <title xml:lang="jp">管理</title>
<title xml:lang="en">manager</title> <title xml:lang="en">manager</title>
<title xml:lang="es">Administrador</title> <title xml:lang="es">Administrador</title>
<title xml:lang="zh-TW">管理</title> <title xml:lang="zh-TW">管理</title>
</grant> </grant>
</grants> </grants>
<permissions> <permissions>
@ -81,6 +81,13 @@
</permissions> </permissions>
<actions> <actions>
<action name="dispBoardContent" type="view" index="true" /> <action name="dispBoardContent" type="view" index="true" />
<action name="dispBoardNoticeList" type="view" />
<action name="dispBoardContentList" type="view" />
<action name="dispBoardContentView" type="view" />
<action name="dispBoardCatogoryList" type="view" />
<action name="dispBoardContentCommentList" type="view" />
<action name="dispBoardTagList" type="view" /> <action name="dispBoardTagList" type="view" />
<action name="dispBoardWrite" type="view" /> <action name="dispBoardWrite" type="view" />
<action name="dispBoardDelete" type="view" /> <action name="dispBoardDelete" type="view" />

View file

@ -22,6 +22,7 @@
$lang->search_result = 'Search Result'; $lang->search_result = 'Search Result';
$lang->consultation = 'Consultation'; $lang->consultation = 'Consultation';
$lang->secret = 'Secret'; $lang->secret = 'Secret';
$lang->thisissecret = '비밀글입니다.';
$lang->admin_mail = "Administrator's Mail"; $lang->admin_mail = "Administrator's Mail";
// words used in button // words used in button

View file

@ -24,6 +24,7 @@
$lang->search_result = 'Resultado de la búsqueda'; $lang->search_result = 'Resultado de la búsqueda';
$lang->consultation = '상담 기능'; $lang->consultation = '상담 기능';
$lang->secret = '비밀글 기능'; $lang->secret = '비밀글 기능';
$lang->thisissecret = '비밀글입니다.';
$lang->admin_mail = '관리자 메일'; $lang->admin_mail = '관리자 메일';
// Palabras utilizadas en los botones // Palabras utilizadas en los botones

View file

@ -21,6 +21,7 @@
$lang->search_result = 'Résultat de la Recherche'; $lang->search_result = 'Résultat de la Recherche';
$lang->consultation = 'Consultation'; $lang->consultation = 'Consultation';
$lang->secret = '비밀글 기능'; $lang->secret = '비밀글 기능';
$lang->thisissecret = '비밀글입니다.';
$lang->admin_mail = 'Mél de l\'administrateur'; $lang->admin_mail = 'Mél de l\'administrateur';
// Mots utilisés en bouton // Mots utilisés en bouton

View file

@ -23,6 +23,7 @@
$lang->search_result = '検索結果'; $lang->search_result = '検索結果';
$lang->consultation = '相談機能'; $lang->consultation = '相談機能';
$lang->secret = '秘密文機能'; $lang->secret = '秘密文機能';
$lang->thisissecret = '비밀글입니다.';
$lang->admin_mail = '管理者メールアドレス'; $lang->admin_mail = '管理者メールアドレス';

View file

@ -23,6 +23,7 @@
$lang->search_result = '검색결과'; $lang->search_result = '검색결과';
$lang->consultation = '상담 기능'; $lang->consultation = '상담 기능';
$lang->secret = '비밀글 기능'; $lang->secret = '비밀글 기능';
$lang->thisissecret = '비밀글입니다.';
$lang->admin_mail = '관리자 메일'; $lang->admin_mail = '관리자 메일';

View file

@ -26,6 +26,7 @@
$lang->search_result = 'Результат поиска'; $lang->search_result = 'Результат поиска';
$lang->consultation = '상담 기능'; $lang->consultation = '상담 기능';
$lang->secret = '비밀글 기능'; $lang->secret = '비밀글 기능';
$lang->thisissecret = '비밀글입니다.';
$lang->admin_mail = '관리자 메일'; $lang->admin_mail = '관리자 메일';
// слова, использованные в кнопке // слова, использованные в кнопке

View file

@ -25,6 +25,7 @@
$lang->search_result = '搜索结果'; $lang->search_result = '搜索结果';
$lang->consultation = '咨询功能'; $lang->consultation = '咨询功能';
$lang->secret = '密帖'; $lang->secret = '密帖';
$lang->thisissecret = '비밀글입니다.';
$lang->admin_mail = '管理员电子邮件'; $lang->admin_mail = '管理员电子邮件';
// 按钮语言 // 按钮语言

View file

@ -22,6 +22,7 @@
$lang->search_result = '搜尋結果'; $lang->search_result = '搜尋結果';
$lang->consultation = '咨詢功能'; $lang->consultation = '咨詢功能';
$lang->secret = '秘密'; $lang->secret = '秘密';
$lang->thisissecret = '비밀글입니다.';
$lang->admin_mail = '管理員電子郵件'; $lang->admin_mail = '管理員電子郵件';
// 按鈕語言 // 按鈕語言