mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-01-07 02:31:40 +09:00
issuetracker * 댓글에 에디터 붙임
* 첨부파일 목록 표시 미구현
* 첨부파일 활성화 트리거 추가
* 첨부파일 수 기록 필드 추가
file * 첨부파일 목록에서 업로드 타겟을 알 수 없을 경우
무조건 '대기'로 타이틀을 표시하는 문제 수정
git-svn-id: http://xe-core.googlecode.com/svn/sandbox@6512 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
parent
0fbf4934eb
commit
d0ed1a982d
7 changed files with 81 additions and 21 deletions
|
|
@ -69,7 +69,11 @@
|
|||
<tr class="row{$cycle_idx} bg1">
|
||||
<th colspan="9">
|
||||
<!--@if(!$val->upload_target_type)-->
|
||||
{$lang->is_stand_by}
|
||||
<!--@if($val->isvalid=='Y')-->
|
||||
{$lang->is_valid}
|
||||
<!--@else-->
|
||||
{$lang->is_stand_by}
|
||||
<!--@end-->
|
||||
<!--@else-->
|
||||
<!--@if($val->upload_target_type == 'com')-->[{$lang->comment}] <!--@end-->
|
||||
<!--@if($val->upload_target_type == 'mod')-->[{$lang->module}] <!--@end-->
|
||||
|
|
|
|||
|
|
@ -1,13 +1,13 @@
|
|||
<?PHP
|
||||
/**
|
||||
* @class issuetracker
|
||||
* @class issuetracker
|
||||
* @author haneul (haneul0318@gmail.com)
|
||||
* @brief base class for the issue tracker
|
||||
* @brief base class for the issue tracker
|
||||
**/
|
||||
|
||||
require_once(_XE_PATH_.'modules/issuetracker/issuetracker.item.php');
|
||||
|
||||
class issuetracker extends ModuleObject
|
||||
class issuetracker extends ModuleObject
|
||||
{
|
||||
// 검색 대상 지정
|
||||
var $search_option = array('title','content','title_content','user_name','nick_name','user_id','tag');
|
||||
|
|
@ -16,7 +16,7 @@
|
|||
var $display_option = array('no','title','milestone','priority','type','component','status','occured_version','package','regdate','assignee', 'writer');
|
||||
var $default_enable = array('no','title','status','release','regdate','assignee','writer');
|
||||
|
||||
function moduleInstall()
|
||||
function moduleInstall()
|
||||
{
|
||||
// 아이디 클릭시 나타나는 팝업메뉴에 작성글 보기 기능 추가
|
||||
$oModuleController = &getController('module');
|
||||
|
|
@ -25,26 +25,53 @@
|
|||
|
||||
$oDB = &DB::getInstance();
|
||||
$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()
|
||||
{
|
||||
$oModuleModel = &getModel('module');
|
||||
$oDB = &DB::getInstance();
|
||||
|
||||
// 아이디 클릭시 나타나는 팝업메뉴에 작성글 보기 기능 추가
|
||||
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('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;
|
||||
}
|
||||
|
||||
function moduleUpdate() {
|
||||
$oModuleModel = &getModel('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');
|
||||
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');
|
||||
}
|
||||
|
||||
// 히스토리(=댓글) 첨부파일 활성화 트리거
|
||||
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');
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -64,11 +64,11 @@
|
|||
|
||||
// 그렇지 않으면 신규 등록
|
||||
} else {
|
||||
// assignee name
|
||||
$oMemberModel = &getModel('member');
|
||||
// assignee name
|
||||
$oMemberModel = &getModel('member');
|
||||
$member_info = $oMemberModel->getMemberInfoByMemberSrl($obj->assignee_srl);
|
||||
$obj->assignee_name = $member_info->nick_name;
|
||||
|
||||
|
||||
// transaction start
|
||||
$oDB = &DB::getInstance();
|
||||
$oDB->begin();
|
||||
|
|
@ -148,7 +148,7 @@
|
|||
if(!$output->toBool()) return $output;
|
||||
|
||||
$output = executeQuery('issuetracker.deleteHistories', $args);
|
||||
return $output;
|
||||
return $output;
|
||||
}
|
||||
|
||||
function insertHistory($target_srl, $objs, $module_srl, $grant)
|
||||
|
|
@ -156,12 +156,19 @@
|
|||
$oIssuetrackerModel = &getModel('issuetracker');
|
||||
$oIssue = $oIssuetrackerModel->getIssue($target_srl);
|
||||
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');
|
||||
|
||||
$args = null;
|
||||
|
||||
// 글작성시 필요한 변수를 세팅
|
||||
$args->history_srl = $args->comment_srl = $objs->comment_srl;
|
||||
$args->uploaded_count = $objs->uploaded_count;
|
||||
$args->target_srl = $target_srl;
|
||||
$args->content = Context::get('content');
|
||||
if($logged_info->member_srl) {
|
||||
|
|
@ -348,9 +355,14 @@
|
|||
$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;
|
||||
|
||||
|
||||
// trigger 호출 (before)
|
||||
$output = ModuleHandler::triggerCall('issuetracker.insertHistory', 'after', $args);
|
||||
if(!$output->toBool()) return $output;
|
||||
|
||||
$output = executeQueryArray('issuetracker.insertHistory', $args);
|
||||
if(!$output->toBool()) return $output;
|
||||
|
||||
|
|
@ -358,6 +370,7 @@
|
|||
$cnt = $oIssuetrackerModel->getHistoryCount($target_srl);
|
||||
$oDocumentController = &getController('document');
|
||||
$oDocumentController->updateCommentCount($target_srl, $cnt, $logged_info->member_srl);
|
||||
|
||||
return new Object();
|
||||
}
|
||||
|
||||
|
|
@ -367,7 +380,7 @@
|
|||
|
||||
// 원 이슈를 가져옴
|
||||
$target_srl = Context::get('target_srl');
|
||||
$args = Context::gets('milestone_srl', 'priority_srl', 'type_srl', 'component_srl', 'package_srl', 'occured_version_srl', 'action', 'status', 'assignee_srl');
|
||||
$args = Context::gets('milestone_srl', 'priority_srl', 'type_srl', 'component_srl', 'package_srl', 'occured_version_srl', 'action', 'status', 'assignee_srl');
|
||||
$output = $this->insertHistory($target_srl, $args, $this->module_srl, $this->grant->commiter);
|
||||
if(!$output->toBool())
|
||||
{
|
||||
|
|
@ -436,7 +449,7 @@
|
|||
$oController = &getController('issuetracker');
|
||||
while($latestRevision < $status->revision)
|
||||
{
|
||||
$gap = $status->revision-$latestRevision;
|
||||
$gap = $status->revision-$latestRevision;
|
||||
if($gap > 500) $gap = 500;
|
||||
$logs = $oSvn->getLog("/", $latestRevision+1, $status->revision, false, $gap, false);
|
||||
foreach($logs as $log)
|
||||
|
|
@ -444,7 +457,7 @@
|
|||
$obj = null;
|
||||
$obj->revision = $log->revision;
|
||||
$obj->author = $log->author;
|
||||
$obj->date = date("YmdHis", strtotime($log->date));
|
||||
$obj->date = date("YmdHis", strtotime($log->date));
|
||||
$obj->message = trim($log->msg);
|
||||
$obj->module_srl = $module_info->module_srl;
|
||||
executeQuery("issuetracker.insertChangeset", $obj);
|
||||
|
|
|
|||
|
|
@ -150,5 +150,17 @@
|
|||
if($grant->commiter) return true;
|
||||
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');
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
?>
|
||||
|
|
|
|||
|
|
@ -12,5 +12,6 @@
|
|||
<column name="nick_name" var="nick_name" notnull="notnull"/>
|
||||
<column name="password" var="password" />
|
||||
<column name="regdate" default="curdate()" />
|
||||
<column name="uploaded_count" var="uploaded_count" default="0" />
|
||||
</columns>
|
||||
</query>
|
||||
|
|
|
|||
|
|
@ -8,4 +8,5 @@
|
|||
<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="password" type="varchar" size="60" />
|
||||
<column name="uploaded_count" type="number" size="11" default="0" notnull="notnull" index="idx_uploaded_count" />
|
||||
</table>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
<td><SPAn class="member_{$oIssue->getMemberSrl()}">{$oIssue->getNickName()}</span></td>
|
||||
</tr>
|
||||
<!--@if(!$oIssue->isSecret() || $oIssue->isAccessible())-->
|
||||
<!--@if(!$oIssue->isSecret() || $oIssue->isAccessible())-->
|
||||
<tr>
|
||||
<th>{$lang->milestone} :</th>
|
||||
<td>{$oIssue->getMilestoneTitle()}</td>
|
||||
|
|
@ -66,9 +66,9 @@
|
|||
<tr>
|
||||
<td colspan="4" class="description">{$oIssue->getContent(false, true)}</td>
|
||||
</tr>
|
||||
<!--@if($oIssue->hasUploadedFiles())-->
|
||||
<tr>
|
||||
<td colspan="4">
|
||||
<!--@if($oIssue->hasUploadedFiles())-->
|
||||
<div class="fileAttached">
|
||||
{@ $uploaded_list = $oIssue->getUploadedFiles() }
|
||||
<ul>
|
||||
|
|
@ -78,10 +78,10 @@
|
|||
</ul>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
<!--@end-->
|
||||
</td>
|
||||
</tr>
|
||||
<!--@else-->
|
||||
<!--@endif-->
|
||||
<!--@else-->
|
||||
<tr>
|
||||
<td colspan="4" class="inputPassword">
|
||||
<form action="./" method="get" onsubmit="return procFilter(this, input_password)">
|
||||
|
|
@ -95,7 +95,7 @@
|
|||
</form>
|
||||
</td>
|
||||
</tr>
|
||||
<!--@end-->
|
||||
<!--@end-->
|
||||
</table>
|
||||
|
||||
<div class="button">
|
||||
|
|
@ -162,6 +162,8 @@
|
|||
<form action="./" method="post" onsubmit="return procFilter(this, insert_history)">
|
||||
<input type="hidden" name="mid" value="{$mid}" />
|
||||
<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">
|
||||
<col width="140" />
|
||||
<col width="*" />
|
||||
|
|
@ -266,7 +268,7 @@
|
|||
<!--@end-->
|
||||
<tr>
|
||||
<td colspan="4">
|
||||
<textarea name="content" id="inputContent" class="inputTypeTextArea wide"></textarea>
|
||||
<div class="editor">{$oIssue->getCommentEditor()}</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue