#19745697 trash module devlopement

Document Status DB Column added, and Document module refactoring


git-svn-id: http://xe-core.googlecode.com/svn/branches/1.5.0@8401 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
ovclas 2011-05-30 01:25:01 +00:00
parent 4b9faef300
commit 2e86e56bf5
31 changed files with 220 additions and 129 deletions

View file

@ -17,6 +17,7 @@
<action name="dispDocumentPrint" type="view" standalone="true" />
<action name="dispDocumentPreview" type="view" standalone="true" />
<action name="dispDocumentManageDocument" type="view" standalone="true" />
<action name="dispTempSavedList" type="view" standalone="true" />
<action name="getDocumentCategories" type="model" standalone="true" />
<action name="getDocumentMenu" type="model" standalone="true" />
@ -41,6 +42,7 @@
<action name="procDocumentDeleteCategory" type="controller" standalone="true" />
<action name="procDocumentMoveCategory" type="controller" standalone="true" />
<action name="procDocumentMakeXmlFile" type="controller" standalone="true" />
<action name="procDocumentTempSave" type="controller" standalone="true" />
<action name="procDocumentAdminInsertAlias" type="controller" standalone="true" />
<action name="procDocumentAdminDeleteAlias" type="controller" standalone="true" />

View file

@ -33,11 +33,15 @@
$oDocumentModel = &getModel('document');
$output = $oDocumentModel->getDocumentList($args);
// get Status name list
$statusNameList = $oDocumentModel->getStatusConfigList();
// Set values of document_model::getDocumentList() objects for a template
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('status_name_list', $statusNameList);
Context::set('page_navigation', $output->page_navigation);
// set a search option used in the template

View file

@ -102,6 +102,9 @@
//2011. 04. 07 adding description column to document categories
if(!$oDB->isColumnExists("document_categories","description")) return true;
//2011. 05. 23 adding status column to document
if(!$oDB->isColumnExists('documents', 'status')) return true;
return false;
}
@ -237,6 +240,16 @@
//2011. 04. 07 adding description column to document categories
if(!$oDB->isColumnExists("document_categories","description")) $oDB->addColumn('document_categories',"description","varchar",200,0);
//2011. 05. 23 adding status column to document
if(!$oDB->isColumnExists('documents', 'status'))
{
$oDB->addColumn('documents', 'status', 'varchar', 20, 'PUBLIC');
$args->is_secret = 'Y';
$output = executeQuery('document.updateDocumentStatus', $args);
if($output->toBool())
$oDB->dropColumn('documents', 'is_secret');
}
return new Object(0,'success_updated');
}

View file

@ -141,7 +141,6 @@ class documentController extends document {
$oDB = &DB::getInstance();
$oDB->begin();
// List variables
if($obj->is_secret!='Y') $obj->is_secret = 'N';
if($obj->allow_comment!='Y') $obj->allow_comment = 'N';
if($obj->lock_comment!='Y') $obj->lock_comment = 'N';
if($obj->allow_trackback!='Y') $obj->allow_trackback = 'N';
@ -275,7 +274,6 @@ class documentController extends document {
$obj->ipaddress = $source_obj->get('ipaddress');
}
// List variables
if($obj->is_secret!='Y') $obj->is_secret = 'N';
if($obj->allow_comment!='Y') $obj->allow_comment = 'N';
if($obj->lock_comment!='Y') $obj->lock_comment = 'N';
if($obj->allow_trackback!='Y') $obj->allow_trackback = 'N';
@ -408,7 +406,6 @@ class documentController extends document {
$oDocumentModel = &getModel('document');
// Check if the documnet exists
$oDocument = $oDocumentModel->getDocument($document_srl, $is_admin);
debugPrint('normal');
}
else if($isEmptyTrash && $oDocument == null) return new Object(-1, 'document is not exists');
@ -1621,6 +1618,8 @@ class documentController extends document {
$document_config->use_vote_down = Context::get('use_vote_down');
if(!$document_config->use_vote_down) $document_config->use_vote_down = 'Y';
$document_config->use_status = Context::get('use_status');
$oModuleController = &getController('module');
for($i=0;$i<count($module_srl);$i++) {
$srl = trim($module_srl[$i]);
@ -1630,5 +1629,53 @@ class documentController extends document {
$this->setError(-1);
$this->setMessage('success_updated');
}
/**
* @brief
**/
function procDocumentTempSave()
{
// Check login information
if(!Context::get('is_logged')) return new Object(-1, 'msg_not_logged');
$module_info = Context::get('module_info');
$logged_info = Context::get('logged_info');
// Get form information
$obj = Context::getRequestVars();
// Change the target module to log-in information
$obj->module_srl = $module_info->module_srl;
$obj->status = 'TEMP';
unset($obj->is_notice);
// Extract from beginning part of contents in the guestbook
if(!$obj->title) {
$obj->title = cut_str(strip_tags($obj->content), 20, '...');
}
$oDocumentModel = &getModel('document');
$oDocumentController = &getController('document');
// Check if already exist geulinji
$oDocument = $oDocumentModel->getDocument($obj->document_srl, $this->grant->manager);
// Update if already exists
if($oDocument->isExists() && $oDocument->document_srl == $obj->document_srl) {
$output = $oDocumentController->updateDocument($oDocument, $obj);
$msg_code = 'success_updated';
// Otherwise, get a new
} else {
$output = $oDocumentController->insertDocument($obj);
$msg_code = 'success_registed';
$obj->document_srl = $output->get('document_srl');
$oDocument = $oDocumentModel->getDocument($obj->document_srl, $this->grant->manager);
}
// Set the attachment to be invalid state
if($oDocument->hasUploadedFiles()) {
$args->upload_target_srl = $oDocument->document_srl;
$args->isvalid = 'N';
executeQuery('file.updateFileValid', $args);
}
$this->setMessage('success_saved');
$this->add('document_srl', $obj->document_srl);
}
}
?>

View file

@ -122,7 +122,7 @@
}
function isSecret() {
return $this->get('is_secret') == 'Y' ? true : false;
return $this->get('status') == 'SECRET' ? true : false;
}
function isNotice() {
@ -239,7 +239,8 @@
if($this->isSecret() && !$this->isGranted() && !$this->isAccessible()) return Context::getLang('msg_is_secret');
$_SESSION['accessible'][$this->document_srl] = true;
$result = $this->_checkAccessibleFromStatus();
if($result) $_SESSION['accessible'][$this->document_srl] = true;
$content = $this->get('content');
@ -253,7 +254,8 @@
if($this->isSecret() && !$this->isGranted() && !$this->isAccessible()) return Context::getLang('msg_is_secret');
$_SESSION['accessible'][$this->document_srl] = true;
$result = $this->_checkAccessibleFromStatus();
if($result) $_SESSION['accessible'][$this->document_srl] = true;
$content = $this->get('content');
if(!$stripEmbedTagException) stripEmbedTagForAdmin($content, $this->get('member_srl'));
@ -738,5 +740,22 @@
function replaceResourceRealPath($matches) {
return preg_replace('/src=(["\']?)files/i','src=$1'.Context::getRequestUri().'files', $matches[0]);
}
function _checkAccessibleFromStatus()
{
$logged_info = Context::get('logged_info');
if($logged_info->is_admin == 'Y') return true;
$status = $this->get('status');
if(empty($status)) return false;
if($status == 'PUBLIC' || $status == 'PUBLISH') return true;
else if($status == 'PRIVATE' || $status == 'SECRET')
{
if($this->get('member_srl') == $logged_info->member_srl)
return true;
}
return false;
}
}
?>

View file

@ -6,7 +6,6 @@
**/
class documentModel extends document {
/**
* @brief Initialization
**/
@ -153,6 +152,7 @@
* @brief module_srl value, bringing the list of documents
**/
function getDocumentList($obj, $except_notice = false, $load_extra_vars=true, $columnList = array()) {
$logged_info = Context::get('logged_info');
$sort_check = $this->_setSortIndex($obj, $load_extra_vars);
$obj->sort_index = $sort_check->sort_index;
@ -180,6 +180,8 @@
$args->start_date = $obj->start_date?$obj->start_date:null;
$args->end_date = $obj->end_date?$obj->end_date:null;
$args->member_srl = $obj->member_srl;
$args->statusList = $obj->statusList?$obj->statusList:array('SECRET', 'PUBLIC', 'PUBLISH');
if($logged_info->is_admin == 'Y') $args->statusList = array('SECRET', 'PUBLIC', 'PUBLISH');
// Category is selected, further sub-categories until all conditions
if($args->category_srl) {
$category_list = $this->getCategoryList($args->module_srl);
@ -235,6 +237,7 @@
$division_args->list_count = 1;
$division_args->sort_index = $args->sort_index;
$division_args->order_type = $args->order_type;
$division_args->statusList = $args->statusList;
$output = executeQuery($listSqlID, $division_args, $columnList);
if($output->data) {
$item = array_pop($output->data);
@ -258,7 +261,6 @@
$item = array_pop($output->data);
$last_division = $item->list_order;
}
}
// Make sure that after last_division article
if($last_division) {
@ -925,9 +927,8 @@
break;
case 'is_notice' :
case 'is_secret' :
if($search_keyword=='N') $args->{"s_".$search_target} = 'N';
elseif($search_keyword=='Y') $args->{"s_".$search_target} = 'Y';
else $args->{"s_".$search_target} = '';
if($search_keyword=='N') $args->statusList = array('PUBLIC', 'PUBLISH');
elseif($search_keyword=='Y') $args->statusList = array('SECRET');
break;
case 'member_srl' :
case 'readed_count' :
@ -1002,6 +1003,14 @@
$this->add('voted_member_list',$output->data);
}
function getStatusConfigList()
{
global $lang;
if(!isset($lang->status_name_list))
return array('PRIVATE'=>'private', 'PUBLIC'=>'public', 'SECRET'=>'secret', 'TEMP'=>'temporary');
else return $lang->status_name_list;
}
function _setSortIndex($obj, $load_extra_vars)
{
$sortIndex = $obj->sort_index;
@ -1074,9 +1083,8 @@
break;
case 'is_notice' :
case 'is_secret' :
if($search_keyword=='N') $args->{"s_".$search_target} = 'N';
elseif($search_keyword=='Y') $args->{"s_".$search_target} = 'Y';
else $args->{"s_".$search_target} = '';
if($search_keyword=='N') $args->statusList = array('PUBLIC', 'PUBLISH');
elseif($search_keyword=='Y') $args->statusList = array('SECRET');
break;
case 'member_srl' :
case 'readed_count' :

View file

@ -111,5 +111,30 @@
return new Object();
}
function dispTempSavedList()
{
$this->setLayoutFile('popup_layout');
$oMemberModel = &getModel('member');
// A message appears if the user is not logged-in
if(!$oMemberModel->isLogged()) return $this->stop('msg_not_logged');
// Get the saved document (module_srl is set to member_srl instead)
$logged_info = Context::get('logged_info');
$args->member_srl = $logged_info->member_srl;
$args->statusList = array('TEMP');
$args->page = (int)Context::get('page');
$args->list_count = 10;
$oDocumentModel = &getModel('document');
$output = $oDocumentModel->getDocumentList($args, true);
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);
$this->setTemplatePath($this->module_path.'tpl');
$this->setTemplateFile('saved_list_popup');
}
}
?>

View file

@ -83,4 +83,6 @@
$lang->success_trashed = '휴지통으로 이동되었습니다.';
$lang->msg_not_selected_document = '선택된 문서가 없습니다.';
$lang->show_voted_member = '사용자 노출';
$lang->status = '상태';
$lang->status_name_list = array('PRIVATE'=>'비공개', 'PUBLIC'=>'공개', 'SECRET'=>'비밀', 'TEMP'=>'임시');
?>

View file

@ -11,6 +11,7 @@
<condition operation="in" column="category_srl" var="category_srl" pipe="and" />
<condition operation="equal" column="is_notice" var="s_is_notice" pipe="and" />
<condition operation="equal" column="member_srl" var="member_srl" filter="number" pipe="and" />
<condition operation="in" column="status" var="statusList" pipe="and" />
<group pipe="and">
<condition operation="more" column="list_order" var="division" pipe="and" />
<condition operation="below" column="list_order" var="last_division" pipe="and" />
@ -24,7 +25,6 @@
<condition operation="like" column="email_address" var="s_email_addres" pipe="or" />
<condition operation="like" column="homepage" var="s_homepage" pipe="or" />
<condition operation="like" column="tags" var="s_tags" pipe="or" />
<condition operation="equal" column="is_secret" var="s_is_secret" pipe="or" />
<condition operation="equal" column="member_srl" var="s_member_srl" pipe="or" />
<condition operation="more" column="readed_count" var="s_readed_count" pipe="or" />
<condition operation="more" column="voted_count" var="s_voted_count" pipe="or" />

View file

@ -25,7 +25,6 @@
<condition operation="like" column="email_address" var="s_email_addres" pipe="or" />
<condition operation="like" column="homepage" var="s_homepage" pipe="or" />
<condition operation="like" column="tags" var="s_tags" pipe="or" />
<condition operation="equal" column="is_secret" var="s_is_secret" pipe="or" />
<condition operation="equal" column="member_srl" var="s_member_srl" pipe="or" />
<condition operation="more" column="readed_count" var="s_readed_count" pipe="or" />
<condition operation="more" column="voted_count" var="s_voted_count" pipe="or" />

View file

@ -9,6 +9,7 @@
<condition operation="equal" column="documents.member_srl" var="member.member_srl" notnull="notnull" pipe="and" />
<condition operation="equal" column="documents.module_srl" var="module_srl" filter="number" pipe="and" />
<condition operation="equal" column="documents.category_srl" var="category_srl" pipe="and" />
<condition operation="in" column="status" var="statusList" pipe="and" />
<group pipe="and">
<condition operation="like" column="documents.title" var="s_title" />
<condition operation="like" column="documents.content" var="s_content" pipe="or" />
@ -18,7 +19,6 @@
<condition operation="like" column="documents.homepage" var="s_homepage" pipe="or" />
<condition operation="like" column="documents.tags" var="s_tags" pipe="or" />
<condition operation="equal" column="documents.is_notice" var="s_is_notice" pipe="or" />
<condition operation="equal" column="documents.is_secret" var="s_is_secret" pipe="or" />
<condition operation="equal" column="documents.member_srl" var="s_member_srl" pipe="or" />
<condition operation="more" column="documents.readed_count" var="s_readed_count" pipe="or" />
<condition operation="more" column="documents.voted_count" var="s_voted_count" pipe="or" />

View file

@ -21,6 +21,7 @@
<condition operation="less" column="regdate" var="rev_regdate" filter="number" pipe="and" />
<condition operation="less" column="update_order" var="update_order" filter="number" pipe="and" />
<condition operation="more" column="update_order" var="rev_update_order" filter="number" pipe="and" />
<condition operation="in" column="status" var="statusList" pipe="and" />
<group pipe="and">
<condition operation="like" column="title" var="s_title" />
<condition operation="like" column="content" var="s_content" pipe="or" />
@ -30,7 +31,6 @@
<condition operation="like" column="email_address" var="s_email_addres" pipe="or" />
<condition operation="like" column="homepage" var="s_homepage" pipe="or" />
<condition operation="like" column="tags" var="s_tags" pipe="or" />
<condition operation="equal" column="is_secret" var="s_is_secret" pipe="or" />
<condition operation="equal" column="member_srl" var="s_member_srl" pipe="or" />
<condition operation="more" column="readed_count" var="s_readed_count" pipe="or" />
<condition operation="more" column="voted_count" var="s_voted_count" pipe="or" />

View file

@ -9,7 +9,6 @@
<column name="category_srl" var="category_srl" filter="number" default="0" />
<column name="lang_code" var="lang_code" default="" />
<column name="is_notice" var="is_notice" notnull="notnull" default="N" />
<column name="is_secret" var="is_secret" notnull="notnull" default="N" />
<column name="title" var="title" notnull="notnull" minlength="1" maxlength="250" />
<column name="title_bold" var="title_bold" default="N" />
<column name="title_color" var="title_color" default="N" />
@ -38,5 +37,6 @@
<column name="lock_comment" var="lock_comment" default="N" />
<column name="allow_trackback" var="allow_trackback" default="Y" />
<column name="notify_message" var="notify_message" default="N" />
<column name="status" var="status" default="PUBLIC" />
</columns>
</query>

View file

@ -7,7 +7,6 @@
<column name="module_srl" var="module_srl" filter="number" default="0" />
<column name="category_srl" var="category_srl" filter="number" default="0" />
<column name="is_notice" var="is_notice" notnull="notnull" default="N" />
<column name="is_secret" var="is_secret" notnull="notnull" default="N" />
<column name="title" var="title" notnull="notnull" minlength="1" maxlength="250" />
<column name="title_bold" var="title_bold" default="N" />
<column name="title_color" var="title_color" default="N" />
@ -30,6 +29,7 @@
<column name="lock_comment" var="lock_comment" default="N" />
<column name="allow_trackback" var="allow_trackback" default="Y" />
<column name="notify_message" var="notify_message" default="N" />
<column name="status" var="status" default="PUBLIC" />
</columns>
<conditions>
<condition operation="equal" column="document_srl" var="document_srl" filter="number" notnull="notnull" />

View file

@ -0,0 +1,13 @@
<query id="updateDocumentStatus" action="update">
<tables>
<table name="documents" />
</tables>
<columns>
<column name="status" var="status" default="SECRET" notnull="notnull" />
</columns>
<conditions>
<condition operation="equal" column="document_srl" var="document_srl" pipe="and" />
<condition operation="equal" column="is_secret" var="is_secret" pipe="and" />
</conditions>
</query>

View file

@ -4,7 +4,6 @@
<column name="category_srl" type="number" size="11" default="0" notnull="notnull" index="idx_category_srl" />
<column name="lang_code" type="varchar" size="10" default="" notnull="notnull" />
<column name="is_notice" type="char" size="1" default="N" notnull="notnull" index="idx_is_notice" />
<column name="is_secret" type="char" size="1" default="N" notnull="notnull" index="idx_is_secret" />
<column name="title" type="varchar" size="250" />
<column name="title_bold" type="char" size="1" default="N" notnull="notnull" />
<column name="title_color" type="varchar" size="7" />
@ -34,4 +33,5 @@
<column name="lock_comment" type="char" size="1" default="N" notnull="notnull" />
<column name="allow_trackback" type="char" size="1" default="Y" notnull="notnull" />
<column name="notify_message" type="char" size="1" default="N" notnull="notnull" />
<column name="status" type="varchar" size="20" default="PUBLIC" />
</table>

View file

@ -41,6 +41,7 @@
<th scope="col"><div>{$lang->no}</div></th>
<th scope="col"><div><input type="checkbox" onclick="XE.checkboxToggleAll({ doClick:true }); return false;" /></div></th>
<th scope="col" class="wide"><div>{$lang->document}</div></th>
<th scope="col"><div>{$lang->status}</div></th>
<th scope="col"><div>{$lang->nick_name}</div></th>
<th scope="col"><div>{$lang->readed_count}</div></th>
<th scope="col"><div>{$lang->voted_count}</div></th>
@ -73,6 +74,7 @@
[{$oDocument->getTrackbackCount()}]
<!--@end-->
</td>
<td class="nowrap">{$status_name_list[$oDocument->get('status')]}</td>
<td class="nowrap"><span class="member_{$oDocument->get('member_srl')}">{$oDocument->getNickName()}</span></td>
<td class="number center">{$oDocument->get('readed_count')}</td>
<td class="number center">{$oDocument->get('voted_count')} / {$oDocument->get('blamed_count')}</td>

View file

@ -7,6 +7,6 @@
<li <!--@if($act=='dispDocumentAdminList')-->class="on"<!--@end-->><a href="{getUrl('act','dispDocumentAdminList')}">{$lang->document_list}</a></li>
<li <!--@if($act=='dispDocumentAdminConfig')-->class="on"<!--@end-->><a href="{getUrl('act','dispDocumentAdminConfig')}">{$lang->cmd_module_config}</a></li>
<li <!--@if($act=='dispDocumentAdminDeclared')-->class="on"<!--@end-->><a href="{getUrl('act','dispDocumentAdminDeclared')}">{$lang->cmd_declared_list}</a></li>
<li <!--@if($act=='dispDocumentAdminTrashList')-->class="on"<!--@end-->><a href="{getUrl('act','dispDocumentAdminTrashList')}">{$lang->cmd_trash}</a></li>
<!--li <!--@if($act=='dispDocumentAdminTrashList')-->class="on"<!--@end-->><a href="{getUrl('act','dispDocumentAdminTrashList')}">{$lang->cmd_trash}</a></li-->
</ul>
</div>

View file

@ -0,0 +1,49 @@
<!--%import("css/default.css")-->
<div id="memberModule">
<div id="popHeader" class="wide">
<h3 class="xeAdmin">{$lang->cmd_view_saved_document}</h3>
</div>
<div id="popBody">
<div id="memberModule">
<!-- 목록 -->
<table cellspacing="0" class="colTable">
<caption>Total : {number_format($total_count)}, Page {number_format($page)}/{number_format($total_page)}</caption>
<thead>
<tr>
<th class="title"><div>{$lang->date}</div></th>
<th class="title"><div>{$lang->title}</div></th>
<th class="title"><div>{$lang->cmd_select}</div></th>
</tr>
</thead>
<tbody>
<!--@foreach($document_list as $no => $val)-->
<tr>
<td class="nowrap">{$val->getRegdate("Y-m-d H:i:s")}</td>
<td class="wide">
<div><a href="#" onclick="jQuery('#saved_document_{$val->document_srl}').toggle(); setFixedPopupSize(); return false;">{$val->getTitle()}</a></div>
<div id="saved_document_{$val->document_srl}" class="saved_content" style="display:none;">{$val->getContent(false)}</div>
</td>
<td><a href="#" onclick="doDocumentSelect('{$val->document_srl}'); return false;" class="buttonSet buttonActive"><span>{$lang->cmd_select}</span></a></td>
</tr>
<!--@end-->
</tbody>
</table>
<!-- 페이지 네비게이션 -->
<div class="pagination a1">
<a href="{getUrl('page','','module_srl','')}" class="prevEnd">{$lang->first_page}</a>
<!--@while($page_no = $page_navigation->getNextPage())-->
<!--@if($page == $page_no)-->
<strong>{$page_no}</strong>
<!--@else-->
<a href="{getUrl('page',$page_no,'module_srl','')}">{$page_no}</a>
<!--@end-->
<!--@end-->
<a href="{getUrl('page',$page_navigation->last_page,'module_srl','')}" class="nextEnd">{$lang->last_page}</a>
</div>
</div>
</div>
</div>