issuetracker * 댓글에 에디터 붙임

* 첨부파일 목록 표시 미구현
  * 첨부파일 활성화 트리거 추가
  * 첨부파일 수 기록 필드 추가

file * 첨부파일 목록에서 업로드 타겟을 알 수 없을 경우
       무조건 '대기'로 타이틀을 표시하는 문제 수정

git-svn-id: http://xe-core.googlecode.com/svn/sandbox@6512 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
bnu 2009-06-11 01:32:17 +00:00
parent 0fbf4934eb
commit d0ed1a982d
7 changed files with 81 additions and 21 deletions

View file

@ -69,7 +69,11 @@
<tr class="row{$cycle_idx} bg1"> <tr class="row{$cycle_idx} bg1">
<th colspan="9"> <th colspan="9">
<!--@if(!$val->upload_target_type)--> <!--@if(!$val->upload_target_type)-->
{$lang->is_stand_by} <!--@if($val->isvalid=='Y')-->
{$lang->is_valid}
<!--@else-->
{$lang->is_stand_by}
<!--@end-->
<!--@else--> <!--@else-->
<!--@if($val->upload_target_type == 'com')-->[{$lang->comment}] <!--@end--> <!--@if($val->upload_target_type == 'com')-->[{$lang->comment}] <!--@end-->
<!--@if($val->upload_target_type == 'mod')-->[{$lang->module}] <!--@end--> <!--@if($val->upload_target_type == 'mod')-->[{$lang->module}] <!--@end-->

View file

@ -25,26 +25,53 @@
$oDB = &DB::getInstance(); $oDB = &DB::getInstance();
$oDB->addIndex("issue_changesets","idx_unique_revision", array("module_srl","revision"), true); $oDB->addIndex("issue_changesets","idx_unique_revision", array("module_srl","revision"), true);
// 히스토리(=댓글) 첨부파일 활성화 트리거
$oModuleController->insertTrigger('issuetracker.insertHistory', 'file', 'controller', 'triggerCommentCheckAttached', 'before');
$oModuleController->insertTrigger('issuetracker.insertHistory', 'file', 'controller', 'triggerCommentAttachFiles', 'after');
} }
function checkUpdate() function checkUpdate()
{ {
$oModuleModel = &getModel('module'); $oModuleModel = &getModel('module');
$oDB = &DB::getInstance();
// 아이디 클릭시 나타나는 팝업메뉴에 작성글 보기 기능 추가 // 아이디 클릭시 나타나는 팝업메뉴에 작성글 보기 기능 추가
if(!$oModuleModel->getTrigger('member.getMemberMenu', 'issuetracker', 'controller', 'triggerMemberMenu', 'after')) return true; if(!$oModuleModel->getTrigger('member.getMemberMenu', 'issuetracker', 'controller', 'triggerMemberMenu', 'after')) return true;
if(!$oModuleModel->getTrigger('document.deleteDocument', 'issuetracker', 'controller', 'triggerDeleteDocument', 'after')) return true; if(!$oModuleModel->getTrigger('document.deleteDocument', 'issuetracker', 'controller', 'triggerDeleteDocument', 'after')) return true;
// 히스토리(=댓글) 첨부파일 활성화 트리거
if(!$oModuleModel->getTrigger('issuetracker.insertHistory', 'file', 'controller', 'triggerCommentCheckAttached', 'before')) return true;
if(!$oModuleModel->getTrigger('issuetracker.insertHistory', 'file', 'controller', 'triggerCommentAttachFiles', 'after')) return true;
if(!$oDB->isColumnExists('issues_history', 'uploaded_count')) return true;
return false; return false;
} }
function moduleUpdate() { function moduleUpdate() {
$oModuleModel = &getModel('module'); $oModuleModel = &getModel('module');
$oModuleController = &getController('module'); $oModuleController = &getController('module');
$oDB = &DB::getInstance();
// 아이디 클릭시 나타나는 팝업메뉴에 작성글 보기 기능 추가 // 아이디 클릭시 나타나는 팝업메뉴에 작성글 보기 기능 추가
if(!$oModuleModel->getTrigger('member.getMemberMenu', 'issuetracker', 'controller', 'triggerMemberMenu', 'after')) if(!$oModuleModel->getTrigger('member.getMemberMenu', 'issuetracker', 'controller', 'triggerMemberMenu', 'after')) {
$oModuleController->insertTrigger('member.getMemberMenu', 'issuetracker', 'controller', 'triggerMemberMenu', 'after'); $oModuleController->insertTrigger('member.getMemberMenu', 'issuetracker', 'controller', 'triggerMemberMenu', 'after');
if(!$oModuleModel->getTrigger('document.deleteDocument', 'issuetracker', 'controller', 'triggerDeleteDocument', 'after')) }
if(!$oModuleModel->getTrigger('document.deleteDocument', 'issuetracker', 'controller', 'triggerDeleteDocument', 'after')) {
$oModuleController->insertTrigger('document.deleteDocument', 'issuetracker', 'controller', 'triggerDeleteDocument', 'after'); $oModuleController->insertTrigger('document.deleteDocument', 'issuetracker', 'controller', 'triggerDeleteDocument', 'after');
}
// 히스토리(=댓글) 첨부파일 활성화 트리거
if(!$oModuleModel->getTrigger('issuetracker.insertHistory', 'file', 'controller', 'triggerCommentCheckAttached', 'before')) {
$oModuleController->insertTrigger('issuetracker.insertHistory', 'file', 'controller', 'triggerCommentCheckAttached', 'before');
}
if(!$oModuleModel->getTrigger('issuetracker.insertHistory', 'file', 'controller', 'triggerCommentAttachFiles', 'after')) {
$oModuleController->insertTrigger('issuetracker.insertHistory', 'file', 'controller', 'triggerCommentAttachFiles', 'after');
}
if(!$oDB->isColumnExists('issues_history', 'uploaded_count')) {
$oDB->addColumn('issues_history', 'uploaded_count', 'number', 11, 0);
}
return new Object(0, 'success_updated'); return new Object(0, 'success_updated');
} }
} }

View file

@ -64,8 +64,8 @@
// 그렇지 않으면 신규 등록 // 그렇지 않으면 신규 등록
} else { } else {
// assignee name // assignee name
$oMemberModel = &getModel('member'); $oMemberModel = &getModel('member');
$member_info = $oMemberModel->getMemberInfoByMemberSrl($obj->assignee_srl); $member_info = $oMemberModel->getMemberInfoByMemberSrl($obj->assignee_srl);
$obj->assignee_name = $member_info->nick_name; $obj->assignee_name = $member_info->nick_name;
@ -156,12 +156,19 @@
$oIssuetrackerModel = &getModel('issuetracker'); $oIssuetrackerModel = &getModel('issuetracker');
$oIssue = $oIssuetrackerModel->getIssue($target_srl); $oIssue = $oIssuetrackerModel->getIssue($target_srl);
if(!$oIssue->isExists()) return new Object(-1,'msg_not_founded'); if(!$oIssue->isExists()) return new Object(-1,'msg_not_founded');
$objs->comment_srl = Context::get('history_srl');
// trigger 호출 (before)
$output = ModuleHandler::triggerCall('issuetracker.insertHistory', 'before', $objs);
if(!$output->toBool()) return $output;
$logged_info = Context::get('logged_info'); $logged_info = Context::get('logged_info');
$args = null; $args = null;
// 글작성시 필요한 변수를 세팅 // 글작성시 필요한 변수를 세팅
$args->history_srl = $args->comment_srl = $objs->comment_srl;
$args->uploaded_count = $objs->uploaded_count;
$args->target_srl = $target_srl; $args->target_srl = $target_srl;
$args->content = Context::get('content'); $args->content = Context::get('content');
if($logged_info->member_srl) { if($logged_info->member_srl) {
@ -348,9 +355,14 @@
$args->history = serialize($history); $args->history = serialize($history);
} }
} }
$args->issues_history_srl = getNextSequence(); $args->issues_history_srl = ($args->history_srl) ? $args->history_srl : getNextSequence();
$args->module_srl = $module_srl; $args->module_srl = $module_srl;
// trigger 호출 (before)
$output = ModuleHandler::triggerCall('issuetracker.insertHistory', 'after', $args);
if(!$output->toBool()) return $output;
$output = executeQueryArray('issuetracker.insertHistory', $args); $output = executeQueryArray('issuetracker.insertHistory', $args);
if(!$output->toBool()) return $output; if(!$output->toBool()) return $output;
@ -358,6 +370,7 @@
$cnt = $oIssuetrackerModel->getHistoryCount($target_srl); $cnt = $oIssuetrackerModel->getHistoryCount($target_srl);
$oDocumentController = &getController('document'); $oDocumentController = &getController('document');
$oDocumentController->updateCommentCount($target_srl, $cnt, $logged_info->member_srl); $oDocumentController->updateCommentCount($target_srl, $cnt, $logged_info->member_srl);
return new Object(); return new Object();
} }

View file

@ -150,5 +150,17 @@
if($grant->commiter) return true; if($grant->commiter) return true;
else return parent::isAccessible() || $this->isGranted(); else return parent::isAccessible() || $this->isGranted();
} }
/**
* @brief 댓글 에디터 html을 구해서 return
**/
function getCommentEditor() {
if(!$this->isEnableComment()) return;
$oEditorModel = &getModel('editor');
return $oEditorModel->getModuleEditor('comment', $this->get('module_srl'), null, 'history_srl', 'content');
}
} }
?> ?>

View file

@ -12,5 +12,6 @@
<column name="nick_name" var="nick_name" notnull="notnull"/> <column name="nick_name" var="nick_name" notnull="notnull"/>
<column name="password" var="password" /> <column name="password" var="password" />
<column name="regdate" default="curdate()" /> <column name="regdate" default="curdate()" />
<column name="uploaded_count" var="uploaded_count" default="0" />
</columns> </columns>
</query> </query>

View file

@ -8,4 +8,5 @@
<column name="member_srl" type="number" size="11" notnull="notnull" index="idx_member_srl" /> <column name="member_srl" type="number" size="11" notnull="notnull" index="idx_member_srl" />
<column name="nick_name" type="varchar" size="80" notnull="notnull" /> <column name="nick_name" type="varchar" size="80" notnull="notnull" />
<column name="password" type="varchar" size="60" /> <column name="password" type="varchar" size="60" />
<column name="uploaded_count" type="number" size="11" default="0" notnull="notnull" index="idx_uploaded_count" />
</table> </table>

View file

@ -9,7 +9,7 @@
<th colspan="3" class="title"><a href="{getUrl('','document_srl',$oIssue->document_srl)}">{$oIssue->getTitle()}</a><span>- {$oIssue->getStatus()}</span></th> <th colspan="3" class="title"><a href="{getUrl('','document_srl',$oIssue->document_srl)}">{$oIssue->getTitle()}</a><span>- {$oIssue->getStatus()}</span></th>
<td><SPAn class="member_{$oIssue->getMemberSrl()}">{$oIssue->getNickName()}</span></td> <td><SPAn class="member_{$oIssue->getMemberSrl()}">{$oIssue->getNickName()}</span></td>
</tr> </tr>
<!--@if(!$oIssue->isSecret() || $oIssue->isAccessible())--> <!--@if(!$oIssue->isSecret() || $oIssue->isAccessible())-->
<tr> <tr>
<th>{$lang->milestone} :</th> <th>{$lang->milestone} :</th>
<td>{$oIssue->getMilestoneTitle()}</td> <td>{$oIssue->getMilestoneTitle()}</td>
@ -66,9 +66,9 @@
<tr> <tr>
<td colspan="4" class="description">{$oIssue->getContent(false, true)}</td> <td colspan="4" class="description">{$oIssue->getContent(false, true)}</td>
</tr> </tr>
<!--@if($oIssue->hasUploadedFiles())-->
<tr> <tr>
<td colspan="4"> <td colspan="4">
<!--@if($oIssue->hasUploadedFiles())-->
<div class="fileAttached"> <div class="fileAttached">
{@ $uploaded_list = $oIssue->getUploadedFiles() } {@ $uploaded_list = $oIssue->getUploadedFiles() }
<ul> <ul>
@ -78,10 +78,10 @@
</ul> </ul>
<div class="clear"></div> <div class="clear"></div>
</div> </div>
<!--@end-->
</td> </td>
</tr> </tr>
<!--@else--> <!--@endif-->
<!--@else-->
<tr> <tr>
<td colspan="4" class="inputPassword"> <td colspan="4" class="inputPassword">
<form action="./" method="get" onsubmit="return procFilter(this, input_password)"> <form action="./" method="get" onsubmit="return procFilter(this, input_password)">
@ -95,7 +95,7 @@
</form> </form>
</td> </td>
</tr> </tr>
<!--@end--> <!--@end-->
</table> </table>
<div class="button"> <div class="button">
@ -162,6 +162,8 @@
<form action="./" method="post" onsubmit="return procFilter(this, insert_history)"> <form action="./" method="post" onsubmit="return procFilter(this, insert_history)">
<input type="hidden" name="mid" value="{$mid}" /> <input type="hidden" name="mid" value="{$mid}" />
<input type="hidden" name="target_srl" value="{$oIssue->get('target_srl')}" /> <input type="hidden" name="target_srl" value="{$oIssue->get('target_srl')}" />
<input type="hidden" name="history_srl" value="" />
<input type="hidden" name="content" value="" />
<table cellspacing="0"> <table cellspacing="0">
<col width="140" /> <col width="140" />
<col width="*" /> <col width="*" />
@ -266,7 +268,7 @@
<!--@end--> <!--@end-->
<tr> <tr>
<td colspan="4"> <td colspan="4">
<textarea name="content" id="inputContent" class="inputTypeTextArea wide"></textarea> <div class="editor">{$oIssue->getCommentEditor()}</div>
</td> </td>
</tr> </tr>
<tr> <tr>