touched up the issue show page
- added 'change' - added 'undo' touched up the issue home page - added pagination
This commit is contained in:
parent
4c7ca4edf7
commit
343ff629f0
@ -91,6 +91,11 @@ max_upload_size = "10000"
|
||||
;------------------------------------------------------------------------------
|
||||
max_latest_projects = "10"
|
||||
|
||||
;------------------------------------------------------------------------------
|
||||
; Maximum number of issues to show
|
||||
;------------------------------------------------------------------------------
|
||||
max_issues_per_page = "50"
|
||||
|
||||
;------------------------------------------------------------------------------
|
||||
; Maximum number of log entries to show per details page
|
||||
;------------------------------------------------------------------------------
|
||||
|
@ -8,6 +8,24 @@ class Issue extends Controller
|
||||
var $VIEW_EDIT = 'issue_edit';
|
||||
var $VIEW_DELETE = 'issue_delete';
|
||||
|
||||
var $TYPE_DEFECT = 'defect';
|
||||
var $TYPE_REQUEST = 'request';
|
||||
var $TYPE_OTHER = 'other';
|
||||
|
||||
var $STATUS_NEW = 'new';
|
||||
var $STATUS_ACCEPTED = 'accepted';
|
||||
var $STATUS_REJECTED = 'rejected';
|
||||
var $STATUS_FIXED = 'fixed';
|
||||
var $STATUS_WONTFIX = 'wontfix';
|
||||
var $STATUS_DUPLICATE = 'duplicate';
|
||||
var $STATUS_OTHER = 'other';
|
||||
|
||||
var $PRIORITY_CRITICAL = 'critical';
|
||||
var $PRIORITY_HIGH = 'high';
|
||||
var $PRIORITY_MEDIUM = 'medium';
|
||||
var $PRIORITY_LOW = 'low';
|
||||
var $PRIORITY_OTHER = 'other';
|
||||
|
||||
function Issue ()
|
||||
{
|
||||
parent::Controller ();
|
||||
@ -19,10 +37,10 @@ class Issue extends Controller
|
||||
|
||||
$this->load->library ('Language', 'lang');
|
||||
$this->lang->load ('common', CODEPOT_LANG);
|
||||
|
||||
$this->lang->load ('issue', CODEPOT_LANG);
|
||||
}
|
||||
|
||||
function home ($projectid = '')
|
||||
function home ($projectid = '', $offset = 0)
|
||||
{
|
||||
$this->load->model ('ProjectModel', 'projects');
|
||||
$this->load->model ('IssueModel', 'issues');
|
||||
@ -49,25 +67,51 @@ class Issue extends Controller
|
||||
{
|
||||
if ($this->input->post('filter'))
|
||||
{
|
||||
$filter->status = $this->input->post('filter_status');
|
||||
$filter->summary = $this->input->post('filter_summary');
|
||||
$filter->owner = $this->input->post('filter_owner');
|
||||
$data['filter'] = $filter;
|
||||
}
|
||||
else
|
||||
{
|
||||
$filter->status = '';
|
||||
$filter->summary = '';
|
||||
$filter->owner = '';
|
||||
$data['filter'] = $filter;
|
||||
}
|
||||
|
||||
$issues = $this->issues->getAll ($login['id'], $project);
|
||||
|
||||
$this->load->library ('pagination');
|
||||
|
||||
$num_entries = $this->issues->getNumEntries ($login['id'], $project);
|
||||
if ($num_entries === FALSE)
|
||||
{
|
||||
$data['project'] = $project;
|
||||
$data['message'] = 'DATABASE ERROR';
|
||||
$this->load->view ($this->VIEW_ERROR, $data);
|
||||
return;
|
||||
}
|
||||
|
||||
$pagecfg['base_url'] = site_url() . "/issue/home/{$projectid}/";
|
||||
$pagecfg['total_rows'] = $num_entries;
|
||||
$pagecfg['per_page'] = CODEPOT_MAX_ISSUES_PER_PAGE;
|
||||
$pagecfg['uri_segment'] = 4;
|
||||
$pagecfg['first_link'] = $this->lang->line('First');
|
||||
$pagecfg['last_link'] = $this->lang->line('Last');
|
||||
|
||||
//$issues = $this->issues->getAll ($login['id'], $project);
|
||||
$issues = $this->issues->getEntries ($login['id'], $offset, $pagecfg['per_page'], $project);
|
||||
if ($issues === FALSE)
|
||||
{
|
||||
$data['project'] = $project;
|
||||
$data['message'] = 'DATABASE ERROR';
|
||||
$this->load->view ($this->VIEW_ERROR, $data);
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->pagination->initialize ($pagecfg);
|
||||
$data['page_links'] = $this->pagination->create_links ();
|
||||
$data['issue_type_array'] = $this->_get_type_array();
|
||||
$data['issue_status_array'] = $this->_get_status_array();
|
||||
$data['issue_priority_array'] = $this->_get_priority_array();
|
||||
$data['project'] = $project;
|
||||
$data['issues'] = $issues;
|
||||
$this->load->view ($this->VIEW_HOME, $data);
|
||||
@ -109,7 +153,8 @@ class Issue extends Controller
|
||||
}
|
||||
else
|
||||
{
|
||||
if ($this->input->post('issue_change'))
|
||||
$change_post = $this->input->post('issue_change');
|
||||
if ($change_post == 'change')
|
||||
{
|
||||
$change->type = $this->input->post('issue_change_type');
|
||||
$change->status = $this->input->post('issue_change_status');
|
||||
@ -117,7 +162,35 @@ class Issue extends Controller
|
||||
$change->priority = $this->input->post('issue_change_priority');
|
||||
$change->comment = $this->input->post('issue_change_comment');
|
||||
|
||||
if ($this->issues->change ($login['id'], $project, $id, $change) === FALSE)
|
||||
if (!$login['sysadmin?'] &&
|
||||
$this->projects->projectHasMember($project->id, $login['id']) === FALSE)
|
||||
{
|
||||
$data['project'] = $project;
|
||||
$data['message'] = "NO PERMISSION - $projectid";
|
||||
$this->load->view ($this->VIEW_ERROR, $data);
|
||||
}
|
||||
else if ($this->issues->change ($login['id'], $project, $id, $change) === FALSE)
|
||||
{
|
||||
$data['project'] = $project;
|
||||
$data['message'] = 'DATABASE ERROR';
|
||||
$this->load->view ($this->VIEW_ERROR, $data);
|
||||
}
|
||||
else
|
||||
{
|
||||
redirect ("/issue/show/{$projectid}/{$hexid}");
|
||||
}
|
||||
return;
|
||||
}
|
||||
else if ($change_post == 'undo')
|
||||
{
|
||||
if (!$login['sysadmin?'] &&
|
||||
$this->projects->projectHasMember($project->id, $login['id']) === FALSE)
|
||||
{
|
||||
$data['project'] = $project;
|
||||
$data['message'] = "NO PERMISSION - $projectid";
|
||||
$this->load->view ($this->VIEW_ERROR, $data);
|
||||
}
|
||||
else if ($this->issues->undo_last_change ($login['id'], $project, $id) === FALSE)
|
||||
{
|
||||
$data['project'] = $project;
|
||||
$data['message'] = 'DATABASE ERROR';
|
||||
@ -141,12 +214,15 @@ class Issue extends Controller
|
||||
{
|
||||
$data['project'] = $project;
|
||||
$data['message'] =
|
||||
$this->lang->line('MSG_NO_SUCH_ISSUE') .
|
||||
$this->lang->line('MSG_NO_SUCH_ISSUE').
|
||||
" - {$id}";
|
||||
$this->load->view ($this->VIEW_ERROR, $data);
|
||||
}
|
||||
else
|
||||
{
|
||||
$data['issue_type_array'] = $this->_get_type_array();
|
||||
$data['issue_status_array'] = $this->_get_status_array();
|
||||
$data['issue_priority_array'] = $this->_get_priority_array();
|
||||
$data['project'] = $project;
|
||||
$data['issue'] = $issue;
|
||||
$this->load->view ($this->VIEW_SHOW, $data);
|
||||
@ -194,21 +270,22 @@ class Issue extends Controller
|
||||
$this->form_validation->set_rules (
|
||||
'issue_summary', 'summary', 'required|max_length[255]');
|
||||
$this->form_validation->set_rules (
|
||||
'issue_status', 'status', 'required');
|
||||
'issue_description', 'description', 'required');
|
||||
$this->form_validation->set_rules (
|
||||
'issue_type', 'type', 'required');
|
||||
$this->form_validation->set_rules (
|
||||
'issue_priority', 'priority', 'required');
|
||||
'issue_type', 'status', 'required');
|
||||
$this->form_validation->set_rules (
|
||||
'issue_owner', 'owner', 'required');
|
||||
$this->form_validation->set_rules (
|
||||
'issue_description', 'description', 'required');
|
||||
'issue_type', 'priority', 'required');
|
||||
$this->form_validation->set_error_delimiters (
|
||||
'<span class="form_field_error">','</span>');
|
||||
|
||||
$data['mode'] = $mode;
|
||||
$data['message'] = '';
|
||||
$data['project'] = $project;
|
||||
$data['issue_type_array'] = $this->_get_type_array();
|
||||
$data['issue_status_array'] = $this->_get_status_array();
|
||||
$data['issue_priority_array'] = $this->_get_priority_array();
|
||||
|
||||
if ($this->input->post('issue'))
|
||||
{
|
||||
@ -224,7 +301,7 @@ class Issue extends Controller
|
||||
if ($this->form_validation->run())
|
||||
{
|
||||
$id = ($mode == 'update')?
|
||||
$this->issues->update ($login['id'], $issue):
|
||||
$this->issues->update_partial ($login['id'], $issue):
|
||||
$this->issues->create ($login['id'], $issue);
|
||||
if ($id === FALSE)
|
||||
{
|
||||
@ -234,7 +311,8 @@ class Issue extends Controller
|
||||
}
|
||||
else
|
||||
{
|
||||
redirect ("issue/show/{$project->id}/{$hexid}");
|
||||
redirect ("issue/show/{$project->id}/" .
|
||||
$this->converter->AsciiToHex((string)$id));
|
||||
}
|
||||
}
|
||||
else
|
||||
@ -272,11 +350,11 @@ class Issue extends Controller
|
||||
$issue->projectid = $projectid;
|
||||
$issue->id = $id;
|
||||
$issue->summary = '';
|
||||
$issue->type = '';
|
||||
$issue->status = '';
|
||||
$issue->owner = '';
|
||||
$issue->priority = '';
|
||||
$issue->description = '';
|
||||
$issue->type = $this->TYPE_DEFECT;
|
||||
$issue->status = $this->STATUS_NEW;
|
||||
$issue->priority = $this->PRIORITY_OTHER;
|
||||
$issue->owner = '';
|
||||
|
||||
$data['issue'] = $issue;
|
||||
$this->load->view ($this->VIEW_EDIT, $data);
|
||||
@ -286,9 +364,9 @@ class Issue extends Controller
|
||||
}
|
||||
}
|
||||
|
||||
function create ($projectid = '', $hexid = '')
|
||||
function create ($projectid = '')
|
||||
{
|
||||
return $this->_edit_issue ($projectid, $hexid, 'create');
|
||||
return $this->_edit_issue ($projectid, '', 'create');
|
||||
}
|
||||
|
||||
function update ($projectid = '', $hexid = '')
|
||||
@ -396,4 +474,53 @@ class Issue extends Controller
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
function _get_type_array ()
|
||||
{
|
||||
return array (
|
||||
$this->TYPE_DEFECT =>
|
||||
$this->lang->line('ISSUE_TYPE_DEFECT'),
|
||||
$this->TYPE_REQUEST =>
|
||||
$this->lang->line('ISSUE_TYPE_REQUEST'),
|
||||
$this->TYPE_OTHER =>
|
||||
$this->lang->line('ISSUE_TYPE_OTHER')
|
||||
);
|
||||
}
|
||||
|
||||
function _get_status_array ()
|
||||
{
|
||||
return array (
|
||||
$this->STATUS_NEW =>
|
||||
$this->lang->line('ISSUE_STATUS_NEW'),
|
||||
$this->STATUS_ACCEPTED =>
|
||||
$this->lang->line('ISSUE_STATUS_ACCEPTED'),
|
||||
$this->STATUS_REJECTED =>
|
||||
$this->lang->line('ISSUE_STATUS_REJECTED'),
|
||||
$this->STATUS_FIXED =>
|
||||
$this->lang->line('ISSUE_STATUS_FIXED'),
|
||||
$this->STATUS_WONTFIX =>
|
||||
$this->lang->line('ISSUE_STATUS_WONTFIX'),
|
||||
$this->STATUS_DUPLICATE =>
|
||||
$this->lang->line('ISSUE_STATUS_DUPLICATE'),
|
||||
$this->STATUS_OTHER =>
|
||||
$this->lang->line('ISSUE_STATUS_OTHER')
|
||||
);
|
||||
}
|
||||
|
||||
function _get_priority_array ()
|
||||
{
|
||||
return array (
|
||||
$this->PRIORITY_CRITICAL =>
|
||||
$this->lang->line('ISSUE_PRIORITY_CRITICAL'),
|
||||
$this->PRIORITY_HIGH =>
|
||||
$this->lang->line('ISSUE_PRIORITY_HIGH'),
|
||||
$this->PRIORITY_MEDIUM =>
|
||||
$this->lang->line('ISSUE_PRIORITY_MEDIUM'),
|
||||
$this->PRIORITY_LOW =>
|
||||
$this->lang->line('ISSUE_PRIORITY_LOW'),
|
||||
$this->PRIORITY_OTHER =>
|
||||
$this->lang->line('ISSUE_PRIORITY_OTHER')
|
||||
);
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -1,6 +1,7 @@
|
||||
wwwdir=$(WWWDIR)/codepot/language/english
|
||||
www_DATA = \
|
||||
common_lang.php \
|
||||
issue_lang.php \
|
||||
index.html
|
||||
|
||||
EXTRA_DIST = $(www_DATA)
|
||||
|
@ -164,6 +164,7 @@ top_srcdir = @top_srcdir@
|
||||
wwwdir = $(WWWDIR)/codepot/language/english
|
||||
www_DATA = \
|
||||
common_lang.php \
|
||||
issue_lang.php \
|
||||
index.html
|
||||
|
||||
EXTRA_DIST = $(www_DATA)
|
||||
|
@ -1,9 +1,12 @@
|
||||
<?php
|
||||
$lang['Author'] = 'Author';
|
||||
$lang['Blame'] = 'Blame';
|
||||
$lang['Cancel'] = 'Cancel';
|
||||
$lang['Change'] = 'Change';
|
||||
$lang['Change log'] = 'Change log';
|
||||
$lang['Code'] = 'Code';
|
||||
$lang['Code changes'] = 'Code changes';
|
||||
$lang['Comment'] = 'Comment';
|
||||
$lang['Create'] = 'Create';
|
||||
$lang['Created by'] = 'Created by';
|
||||
$lang['Created on'] = 'Created on';
|
||||
@ -37,6 +40,7 @@ $lang['New'] = 'New';
|
||||
$lang['Last updated by'] = 'Last updated by';
|
||||
$lang['Last updated on'] = 'Last updated on';
|
||||
$lang['Latest projects'] = 'Latest projects';
|
||||
$lang['OK'] = 'OK';
|
||||
$lang['Other projects'] = 'Other projects';
|
||||
$lang['Overview'] = 'Overview';
|
||||
$lang['Owner'] = 'Owner';
|
||||
@ -58,6 +62,7 @@ $lang['Tag'] = 'Tag';
|
||||
$lang['Text'] = 'Text';
|
||||
$lang['Time'] = 'Time';
|
||||
$lang['Type'] = 'Type';
|
||||
$lang['Undo'] = 'Undo';
|
||||
$lang['Update'] = 'Update';
|
||||
$lang['Username'] = 'Username';
|
||||
$lang['Wiki'] = 'Wiki';
|
||||
@ -65,6 +70,7 @@ $lang['Wikis'] = 'Wikis';
|
||||
|
||||
|
||||
$lang['MSG_LOG_COMMIT_BY'] = 'Committed by %s';
|
||||
$lang['MSG_LOG_CHANGE_BY'] = 'Changed by %s';
|
||||
$lang['MSG_LOG_CREATE_BY'] = 'Created by %s';
|
||||
$lang['MSG_LOG_DELETE_BY'] = 'Deleted by %s';
|
||||
$lang['MSG_LOG_UPDATE_BY'] = 'Updated by %s';
|
||||
|
22
codepot/src/codepot/language/english/issue_lang.php
Normal file
22
codepot/src/codepot/language/english/issue_lang.php
Normal file
@ -0,0 +1,22 @@
|
||||
<?php
|
||||
$lang['ISSUE_TYPE_DEFECT'] = 'Defect';
|
||||
$lang['ISSUE_TYPE_REQUEST'] = 'Request';
|
||||
$lang['ISSUE_TYPE_OTHER'] = 'Other';
|
||||
|
||||
$lang['ISSUE_STATUS_NEW'] = 'New';
|
||||
$lang['ISSUE_STATUS_ACCEPTED'] = 'Accepted';
|
||||
$lang['ISSUE_STATUS_REJECTED'] = 'Rejected';
|
||||
$lang['ISSUE_STATUS_FIXED'] = 'Fixed';
|
||||
$lang['ISSUE_STATUS_WONTFIX'] = "Wont't fix";
|
||||
$lang['ISSUE_STATUS_DUPLICATE'] = 'Duplicate';
|
||||
$lang['ISSUE_STATUS_OTHER'] = 'Other';
|
||||
|
||||
$lang['ISSUE_PRIORITY_CRITICAL'] = 'Critical';
|
||||
$lang['ISSUE_PRIORITY_HIGH'] = 'High';
|
||||
$lang['ISSUE_PRIORITY_MEDIUM'] = 'Medium';
|
||||
$lang['ISSUE_PRIORITY_LOW'] = 'Low';
|
||||
$lang['ISSUE_PRIORITY_OTHER'] = 'Other';
|
||||
|
||||
$lang['ISSUE_MSG_CHANGED_X_FROM_Y_TO_Z'] = "Changed <span class='quoted'>%s</span> from <span class='quoted'>%s</span> to <span class='quoted'>%s</span>";
|
||||
$lang['ISSUE_MSG_CONFIRM_UNDO'] = 'Are you sure to undo the last change?';
|
||||
?>
|
@ -1,9 +1,12 @@
|
||||
<?php
|
||||
$lang['Author'] = 'Pengarang ';
|
||||
$lang['Blame'] = 'Menyalahkan';
|
||||
$lang['Cancel'] = 'Cancel';
|
||||
$lang['Change'] = 'Change';
|
||||
$lang['Change log'] = 'Change log';
|
||||
$lang['Code'] = 'Kode';
|
||||
$lang['Code changes'] = 'Kode changes'
|
||||
$lang['Comment'] = 'Comment';
|
||||
$lang['Create'] = 'Dibuat';
|
||||
$lang['Created by'] = 'Dibuat oleh';
|
||||
$lang['Created on'] = 'Waktu dibuat';
|
||||
@ -37,6 +40,7 @@ $lang['New'] = 'Baru';
|
||||
$lang['Last updated by'] = 'Terakhir memperbaharui oleh';
|
||||
$lang['Last updated on'] = 'Waktu memperbaharui terakhir';
|
||||
$lang['Latest projects'] = 'Proyek terakhir';
|
||||
$lang['OK projects'] = 'OK';
|
||||
$lang['Other projects'] = 'Proyek lain';
|
||||
$lang['Overview'] = 'Ringkasan';
|
||||
$lang['Owner'] = 'Owner';
|
||||
@ -58,12 +62,14 @@ $lang['Tag'] = 'Label';
|
||||
$lang['Text'] = 'Teks';
|
||||
$lang['Time'] = 'Waktu';
|
||||
$lang['Type'] = 'Type';
|
||||
$lang['Undo'] = 'Undo';
|
||||
$lang['Update'] = 'Memperbaharui';
|
||||
$lang['Username'] = 'Nama pemakai';
|
||||
$lang['Wiki'] = 'Wiki';
|
||||
$lang['Wikis'] = 'Wiki';
|
||||
|
||||
$lang['MSG_LOG_COMMIT_BY'] = 'Dicommit oleh %s';
|
||||
$lang['MSG_LOG_CHANGE_BY'] = 'Change oleh %s';
|
||||
$lang['MSG_LOG_CREATE_BY'] = 'Dibuat oleh %s';
|
||||
$lang['MSG_LOG_DELETE_BY'] = 'Dihapus oleh %s';
|
||||
$lang['MSG_LOG_UPDATE_BY'] = 'Diupdate oleh %s';
|
||||
|
@ -1,6 +1,7 @@
|
||||
wwwdir=$(WWWDIR)/codepot/language/korean
|
||||
www_DATA = \
|
||||
common_lang.php \
|
||||
issue_lang.php \
|
||||
index.html
|
||||
|
||||
EXTRA_DIST = $(www_DATA)
|
||||
|
@ -164,6 +164,7 @@ top_srcdir = @top_srcdir@
|
||||
wwwdir = $(WWWDIR)/codepot/language/korean
|
||||
www_DATA = \
|
||||
common_lang.php \
|
||||
issue_lang.php \
|
||||
index.html
|
||||
|
||||
EXTRA_DIST = $(www_DATA)
|
||||
|
@ -1,9 +1,12 @@
|
||||
<?php
|
||||
$lang['Author'] = '저자';
|
||||
$lang['Blame'] = '책임전가';
|
||||
$lang['Change log'] = '변경내역';
|
||||
$lang['Cancel'] = '취소';
|
||||
$lang['Change'] = '변경';
|
||||
$lang['Change log'] = '변경기록';
|
||||
$lang['Code'] = '코드';
|
||||
$lang['Code changes'] = '코드변경';
|
||||
$lang['Comment'] = '소견';
|
||||
$lang['Create'] = '생성';
|
||||
$lang['Created by'] = '최초생성인';
|
||||
$lang['Created on'] = '최초생성시간';
|
||||
@ -13,7 +16,7 @@ $lang['Description'] = '설명';
|
||||
$lang['Details'] = '상세내역';
|
||||
$lang['Difference'] = '차이점';
|
||||
$lang['Directory'] = '디렉토리';
|
||||
$lang['Download'] = '내려받기';
|
||||
$lang['Download'] = '내려받음';
|
||||
$lang['Edit'] = '수정';
|
||||
$lang['Error'] = '오류';
|
||||
$lang['File'] = '파일';
|
||||
@ -37,9 +40,10 @@ $lang['New'] = '신규';
|
||||
$lang['Last updated by'] = '최종수정인';
|
||||
$lang['Last updated on'] = '최종수정시간';
|
||||
$lang['Latest projects'] = '최근 프로젝트';
|
||||
$lang['OK'] = '확인';
|
||||
$lang['Other projects'] = '다른 프로젝트';
|
||||
$lang['Overview'] = '개요';
|
||||
$lang['Owner'] = '소유자';
|
||||
$lang['Owner'] = '담당자';
|
||||
$lang['Password'] = '패스워드';
|
||||
$lang['Path'] = '경로';
|
||||
$lang['Priority'] = '중요도';
|
||||
@ -58,12 +62,14 @@ $lang['Tag'] = '태그';
|
||||
$lang['Text'] = '본문';
|
||||
$lang['Time'] = '시간';
|
||||
$lang['Type'] = '종류';
|
||||
$lang['Undo'] = '되돌림';
|
||||
$lang['Update'] = '수정';
|
||||
$lang['Username'] = '사용자명';
|
||||
$lang['Wiki'] = '위키';
|
||||
$lang['Wikis'] = '위키';
|
||||
|
||||
$lang['MSG_LOG_COMMIT_BY'] = '%s에 의해 커밋되었습니다';
|
||||
$lang['MSG_LOG_CHANGE_BY'] = '%s에 의해 변경되었습니다';
|
||||
$lang['MSG_LOG_CREATE_BY'] = '%s에 의해 생성되었습니다';
|
||||
$lang['MSG_LOG_DELETE_BY'] = '%s에 의해 삭제되었습니다';
|
||||
$lang['MSG_LOG_UPDATE_BY'] = '%s에 의해 갱신되었습니다';
|
||||
|
24
codepot/src/codepot/language/korean/issue_lang.php
Normal file
24
codepot/src/codepot/language/korean/issue_lang.php
Normal file
@ -0,0 +1,24 @@
|
||||
<?php
|
||||
$lang['ISSUE_TYPE_DEFECT'] = '문제점';
|
||||
$lang['ISSUE_TYPE_REQUEST'] = '요청';
|
||||
$lang['ISSUE_TYPE_OTHER'] = '기타';
|
||||
|
||||
$lang['ISSUE_STATUS_NEW'] = '신규';
|
||||
$lang['ISSUE_STATUS_ACCEPTED'] = '승인';
|
||||
$lang['ISSUE_STATUS_REJECTED'] = '거부';
|
||||
$lang['ISSUE_STATUS_FIXED'] = '수정됨';
|
||||
$lang['ISSUE_STATUS_WONTFIX'] = '수정안함';
|
||||
$lang['ISSUE_STATUS_DUPLICATE'] = '중복';
|
||||
$lang['ISSUE_STATUS_OTHER'] = '기타';
|
||||
|
||||
$lang['ISSUE_PRIORITY_CRITICAL'] = '긴급';
|
||||
$lang['ISSUE_PRIORITY_HIGH'] = '높음';
|
||||
$lang['ISSUE_PRIORITY_MEDIUM'] = '중간';
|
||||
$lang['ISSUE_PRIORITY_LOW'] = '낮음';
|
||||
$lang['ISSUE_PRIORITY_OTHER'] = '기타';
|
||||
|
||||
|
||||
$lang['ISSUE_MSG_CHANGED_X_FROM_Y_TO_Z'] = "<span class='quoted'>%s</span>을/를 <span class='quoted'>%s</span>에서 <span class='quoted'>%s</span>(으)로 변경";
|
||||
$lang['ISSUE_MSG_CONFIRM_UNDO'] = '마지막 변경내용을 취소할까요?';
|
||||
|
||||
?>
|
@ -29,7 +29,7 @@ class IssueModel extends Model
|
||||
|
||||
$this->db->where ('projectid', $project->id);
|
||||
$this->db->where ('id', $id);
|
||||
$this->db->order_by ('sno', 'desc');
|
||||
$this->db->order_by ('sno', 'asc');
|
||||
$query = $this->db->get ('issue_change');
|
||||
|
||||
$this->db->trans_complete ();
|
||||
@ -41,10 +41,41 @@ class IssueModel extends Model
|
||||
return $result[0];
|
||||
}
|
||||
|
||||
function getNumEntries ($userid, $project)
|
||||
{
|
||||
$this->db->trans_start ();
|
||||
|
||||
$this->db->where ('projectid', $project->id);
|
||||
$this->db->select ('count(id) as count');
|
||||
$query = $this->db->get ('issue');
|
||||
$result = $query->result();
|
||||
|
||||
$num = empty($result)? 0: $result[0]->count;
|
||||
|
||||
$this->db->trans_complete ();
|
||||
if ($this->db->trans_status() === FALSE) return FALSE;
|
||||
|
||||
return $num;
|
||||
}
|
||||
|
||||
function getEntries ($userid, $offset, $limit, $project)
|
||||
{
|
||||
$this->db->trans_start ();
|
||||
|
||||
$this->db->where ('projectid', $project->id);
|
||||
$this->db->order_by ('id', 'desc');
|
||||
$query = $this->db->get ('issue', $limit, $offset);
|
||||
$this->db->trans_complete ();
|
||||
|
||||
if ($this->db->trans_status() === FALSE) return FALSE;
|
||||
return $query->result ();
|
||||
}
|
||||
|
||||
function getAll ($userid, $project)
|
||||
{
|
||||
$this->db->trans_start ();
|
||||
$this->db->where ('projectid', $project->id);
|
||||
$this->db->order_by ('id', 'desc');
|
||||
$query = $this->db->get ('issue');
|
||||
$this->db->trans_complete ();
|
||||
|
||||
@ -111,6 +142,31 @@ class IssueModel extends Model
|
||||
return $newid;
|
||||
}
|
||||
|
||||
function update_partial ($userid, $issue)
|
||||
{
|
||||
$this->db->trans_start ();
|
||||
$this->db->where ('projectid', $issue->projectid);
|
||||
$this->db->where ('id', $issue->id);
|
||||
$this->db->set ('summary', $issue->summary);
|
||||
$this->db->set ('description', $issue->description);
|
||||
$this->db->set ('updatedon', date('Y-m-d H:i:s'));
|
||||
$this->db->set ('updatedby', $userid);
|
||||
$this->db->update ('issue');
|
||||
|
||||
$this->db->set ('createdon', date('Y-m-d H:i:s'));
|
||||
$this->db->set ('type', 'issue');
|
||||
$this->db->set ('action', 'update');
|
||||
$this->db->set ('projectid', $issue->projectid);
|
||||
$this->db->set ('userid', $userid);
|
||||
$this->db->set ('message', $issue->id);
|
||||
$this->db->insert ('log');
|
||||
|
||||
$this->db->trans_complete ();
|
||||
if ($this->db->trans_status() === FALSE) return FALSE;
|
||||
|
||||
return $issue->id;
|
||||
}
|
||||
|
||||
function update ($userid, $issue)
|
||||
{
|
||||
// TODO: check if userid can do this..
|
||||
@ -127,9 +183,9 @@ class IssueModel extends Model
|
||||
$this->db->set ('updatedby', $userid);
|
||||
$this->db->update ('issue');
|
||||
|
||||
$this->db->set ('projectid', $issue->projectid);
|
||||
$this->db->set ('id', $issue->id);
|
||||
$this->db->set ('sno', 1);
|
||||
$this->db->where ('projectid', $issue->projectid);
|
||||
$this->db->where ('id', $issue->id);
|
||||
$this->db->where ('sno', 1);
|
||||
$this->db->set ('type', $issue->type);
|
||||
$this->db->set ('status', $issue->status);
|
||||
$this->db->set ('owner', $issue->owner);
|
||||
@ -206,26 +262,95 @@ class IssueModel extends Model
|
||||
return $id;
|
||||
}
|
||||
|
||||
function undo_last_change ($userid, $project, $id)
|
||||
{
|
||||
$this->db->trans_start ();
|
||||
|
||||
$this->db->where ('projectid', $project->id);
|
||||
$this->db->where ('id', $id);
|
||||
$this->db->select ('MAX(sno) as maxsno');
|
||||
$query = $this->db->get ('issue_change');
|
||||
if ($this->db->trans_status() === FALSE)
|
||||
{
|
||||
$this->db->trans_complete ();
|
||||
return FALSE;
|
||||
}
|
||||
$result = $query->result();
|
||||
if (!empty($result))
|
||||
{
|
||||
$maxsno = $result[0]->maxsno;
|
||||
if ($maxsno > 1)
|
||||
{
|
||||
$this->db->where ('projectid', $project->id);
|
||||
$this->db->where ('id', $id);
|
||||
$this->db->where ('sno', $maxsno);
|
||||
$this->db->delete ('issue_change');
|
||||
|
||||
$this->db->where ('projectid', $project->id);
|
||||
$this->db->where ('id', $id);
|
||||
$this->db->select ('MAX(sno) as maxsno');
|
||||
$query = $this->db->get ('issue_change');
|
||||
if ($this->db->trans_status() === FALSE)
|
||||
{
|
||||
$this->db->trans_complete ();
|
||||
return FALSE;
|
||||
}
|
||||
$result = $query->result();
|
||||
if (!empty($result))
|
||||
{
|
||||
$maxsno = $result[0]->maxsno;
|
||||
$this->db->where ('projectid', $project->id);
|
||||
$this->db->where ('id', $id);
|
||||
$this->db->where ('sno', $maxsno);
|
||||
$query = $this->db->get ('issue_change');
|
||||
if ($this->db->trans_status() === FALSE)
|
||||
{
|
||||
$this->db->trans_complete ();
|
||||
return FALSE;
|
||||
}
|
||||
$result = $query->result();
|
||||
if (!empty($result))
|
||||
{
|
||||
$change = $result[0];
|
||||
$this->db->where ('projectid', $project->id);
|
||||
$this->db->where ('id', $id);
|
||||
$this->db->set ('type', $change->type);
|
||||
$this->db->set ('status', $change->status);
|
||||
$this->db->set ('owner', $change->owner);
|
||||
$this->db->set ('priority', $change->priority);
|
||||
$this->db->set ('updatedon', $change->updatedon);
|
||||
$this->db->set ('updatedby', $change->updatedby);
|
||||
$this->db->update ('issue');
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$this->db->trans_complete ();
|
||||
return $this->db->trans_status();
|
||||
}
|
||||
|
||||
function delete ($userid, $issue)
|
||||
{
|
||||
// TODO: check if userid can do this..
|
||||
$this->db->trans_start ();
|
||||
$this->db->where ('projectid', $issue->projectid);
|
||||
$this->db->where ('id', $issue->id);
|
||||
$this->db->delete ('issue');
|
||||
|
||||
$this->db->where ('projectid', $issue->projectid);
|
||||
$this->db->where ('id', $issue->id);
|
||||
$this->db->delete ('issue_change');
|
||||
|
||||
$this->db->where ('projectid', $issue->projectid);
|
||||
$this->db->where ('id', $issue->id);
|
||||
$this->db->delete ('issue');
|
||||
|
||||
$this->db->set ('createdon', date('Y-m-d H:i:s'));
|
||||
$this->db->set ('type', 'issue');
|
||||
$this->db->set ('action', 'delete');
|
||||
$this->db->set ('projectid', $issue->projectid);
|
||||
$this->db->set ('userid', $userid);
|
||||
$this->db->set ('message', $issue->id);
|
||||
|
||||
$this->db->insert ('log');
|
||||
|
||||
$this->db->trans_complete ();
|
||||
return $this->db->trans_status();
|
||||
}
|
||||
|
@ -40,10 +40,11 @@ class LogModel extends Model
|
||||
$this->db->order_by ('createdon', 'desc');
|
||||
$query = $this->db->get ('log', $limit, $offset);
|
||||
|
||||
$result = $query->result ();
|
||||
$this->db->trans_complete ();
|
||||
if ($this->db->trans_status() === FALSE) return FALSE;
|
||||
|
||||
$result = $query->result ();
|
||||
|
||||
$count = 0;
|
||||
$commits = array ();
|
||||
foreach ($result as $row)
|
||||
|
@ -12,7 +12,7 @@ function render_wiki()
|
||||
creole_render_wiki (
|
||||
"project_file_show_textpre",
|
||||
"project_file_show_textarea",
|
||||
"<?=dirname(dirname(dirname(dirname(current_url()))))?>/wiki/show/<?=$project->id?>/"
|
||||
"<?=site_url()?>/wiki/show/<?=$project->id?>/"
|
||||
);
|
||||
}
|
||||
</script>
|
||||
|
@ -3,7 +3,7 @@
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||||
<link type="text/css" rel="stylesheet" href="<?=base_url()?>/css/common.css" />
|
||||
<link type="text/css" rel="stylesheet" href="<?=base_url()?>/css/project.css" />
|
||||
<link type="text/css" rel="stylesheet" href="<?=base_url()?>/css/issue.css" />
|
||||
|
||||
<title><?=htmlspecialchars($issue->id)?></title>
|
||||
</head>
|
||||
@ -31,92 +31,79 @@ $this->load->view (
|
||||
|
||||
<!---------------------------------------------------------------------------->
|
||||
|
||||
<div class="mainarea" id="issue_edit_mainarea">
|
||||
<div class="mainarea" id="project_issue_edit_mainarea">
|
||||
|
||||
<?php if ($message != "") print '<div id="issue_edit_message" class="form_message">'.htmlspecialchars($message).'</div>'; ?>
|
||||
<?php
|
||||
if ($message != "")
|
||||
{
|
||||
print '<div id="project_issue_edit_message" class="form_message">';
|
||||
print htmlspecialchars($message);
|
||||
print '</div>';
|
||||
}
|
||||
?>
|
||||
|
||||
<?=form_open("issue/{$mode}/{$project->id}/".$this->converter->AsciiToHex($issue->id))?>
|
||||
<?=form_fieldset()?>
|
||||
<div>
|
||||
<?php if ($mode == 'create'): ?>
|
||||
<?=form_hidden('issue_id', set_value('issue_id', $issue->id))?>
|
||||
<?php else: ?>
|
||||
<div>
|
||||
<?=form_label($this->lang->line('ID').': ', 'issue_id')?>
|
||||
<?=form_error('issue_id');?>
|
||||
</div>
|
||||
<div>
|
||||
<?=form_input('issue_id', set_value('issue_id', $issue->id), 'readonly="readonly"')?>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
<?=form_hidden('issue_projectid', set_value('issue_projectid', $issue->projectid))?>
|
||||
<?=form_hidden('issue_status', set_value('issue_status', $issue->status))?>
|
||||
<?=form_hidden('issue_priority', set_value('issue_priority', $issue->priority))?>
|
||||
<?=form_hidden('issue_owner', set_value('issue_owner', $issue->owner))?>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<div id='project_issue_edit_mainarea_type'>
|
||||
<?php
|
||||
if ($mode == 'update')
|
||||
{
|
||||
print form_hidden('issue_type', set_value('issue_type', $issue->type));
|
||||
}
|
||||
else
|
||||
{
|
||||
print form_label($this->lang->line('Type').': ', 'issue_type');
|
||||
print form_dropdown (
|
||||
'issue_type',
|
||||
$issue_type_array,
|
||||
set_value('issue_type', $issue->type),
|
||||
'id="project_issue_type"');
|
||||
print form_error('issue_type');
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
|
||||
<div id='project_issue_edit_mainarea_summary'>
|
||||
<div>
|
||||
<?=form_label($this->lang->line('Summary').': ', 'issue_summary')?>
|
||||
<?=form_error('issue_summary');?>
|
||||
</div>
|
||||
<div>
|
||||
<?=form_input('issue_summary', set_value('issue_summary', $issue->summary), 'size="80"')?>
|
||||
<?=form_input('issue_summary',
|
||||
set_value('issue_summary', $issue->summary),
|
||||
'size="80" id="project_issue_summary"')
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<div id='project_issue_edit_mainarea_description'>
|
||||
<div>
|
||||
<?=form_label($this->lang->line('Description').': ', 'issue_description')?>
|
||||
<?=form_error('issue_description');?>
|
||||
</div>
|
||||
<div>
|
||||
<?=form_textarea('issue_description', set_value('issue_description', $issue->description), 'id="issue_description"')?>
|
||||
<?php
|
||||
$xdata = array (
|
||||
'name' => 'issue_description',
|
||||
'value' => set_value ('issue_description', $issue->description),
|
||||
'id' => 'project_issue_description',
|
||||
'rows' => 20,
|
||||
'cols' => 80
|
||||
);
|
||||
print form_textarea ($xdata);
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<div>
|
||||
<?=form_label($this->lang->line('Type').': ', 'issue_type')?>
|
||||
<?=form_error('issue_type');?>
|
||||
</div>
|
||||
<div>
|
||||
<?=form_input('issue_type', set_value('issue_type', $issue->type), 'id="issue_type"')?>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<div>
|
||||
<?=form_label($this->lang->line('Priority').': ', 'issue_priority')?>
|
||||
<?=form_error('issue_priority');?>
|
||||
</div>
|
||||
<div>
|
||||
<?=form_input('issue_priority', set_value('issue_priority', $issue->priority))?>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div>
|
||||
<div>
|
||||
<?=form_label($this->lang->line('Status').': ', 'issue_status')?>
|
||||
<?=form_error('issue_status');?>
|
||||
</div>
|
||||
<div>
|
||||
<?=form_input('issue_status', set_value('issue_status', $issue->status))?>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<div>
|
||||
<?=form_label($this->lang->line('Owner').': ', 'issue_owner')?>
|
||||
<?=form_error('issue_owner');?>
|
||||
</div>
|
||||
<div>
|
||||
<?=form_input('issue_owner', set_value('issue_owner', $issue->owner))?>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<?=form_hidden('issue_projectid', set_value('issue_projectid', $issue->projectid))?>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<div id='project_issue_edit_mainarea_buttons'>
|
||||
<?php $caption = ($mode == 'update')? $this->lang->line('Update'): $this->lang->line('Create'); ?>
|
||||
<?=form_submit('issue', $caption)?>
|
||||
</div>
|
||||
@ -124,7 +111,7 @@ $this->load->view (
|
||||
<?=form_fieldset_close()?>
|
||||
<?=form_close();?>
|
||||
|
||||
</div> <!-- issue_edit_mainarea -->
|
||||
</div> <!-- project_issue_edit_mainarea -->
|
||||
|
||||
<!---------------------------------------------------------------------------->
|
||||
|
||||
|
@ -3,7 +3,7 @@
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||||
<link type="text/css" rel="stylesheet" href="<?=base_url()?>/css/common.css" />
|
||||
<link type="text/css" rel="stylesheet" href="<?=base_url()?>/css/project.css" />
|
||||
<link type="text/css" rel="stylesheet" href="<?=base_url()?>/css/issue.css" />
|
||||
|
||||
<script type="text/javascript" src="<?=base_url()?>/js/jquery.min.js"></script>
|
||||
<script type="text/javascript" src="<?=base_url()?>/js/jquery-ui.min.js"></script>
|
||||
@ -20,7 +20,7 @@ $(
|
||||
buttons: {
|
||||
'Ok': function () {
|
||||
$('#filter_owner').val ($('#jq_owner').val());
|
||||
$('#filter_status').val ($('#jq_status').val());
|
||||
$('#filter_summary').val ($('#jq_status').val());
|
||||
$(this).dialog('close');
|
||||
}
|
||||
},
|
||||
@ -32,7 +32,7 @@ $(
|
||||
$("#project_issue_home_mainarea_filter_open").button().click (
|
||||
function () {
|
||||
$('#jq_owner').val ($('#filter_owner').val());
|
||||
$('#jq_status').val ($('#filter_status').val());
|
||||
$('#jq_status').val ($('#filter_summary').val());
|
||||
$('#project_issue_home_mainarea_options').dialog('open');
|
||||
}
|
||||
);
|
||||
@ -40,7 +40,7 @@ $(
|
||||
);
|
||||
</script>
|
||||
|
||||
<title><?=htmlspecialchars($project->id)?></title>
|
||||
<title><?=htmlspecialchars($project->name)?></title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
@ -76,8 +76,8 @@ $this->load->view (
|
||||
|
||||
<input type="hidden" id="filter_owner" name="filter_owner" value='<?=$filter->owner?>' />
|
||||
|
||||
<?=form_label ($this->lang->line('Status'), 'form_status')?>
|
||||
<?=form_input('filter_status', set_value('filter_status', $filter->status), 'id="filter_status"')?>
|
||||
<?=form_label ($this->lang->line('Summary'), 'form_summary')?>
|
||||
<?=form_input('filter_summary', set_value('filter_summary', $filter->summary), 'id="filter_summary"')?>
|
||||
|
||||
|
||||
<?=form_submit('filter', 'Search')?>
|
||||
@ -104,21 +104,62 @@ if (empty($issues))
|
||||
}
|
||||
else
|
||||
{
|
||||
print '<ul>';
|
||||
print '<table id="project_issue_home_mainarea_result_table">';
|
||||
print '<tr class="heading">';
|
||||
print '<th class="project_issue_home_mainarea_result_table_id">' . $this->lang->line('ID') . '</th>';
|
||||
print '<th class="project_issue_home_mainarea_result_table_type">' . $this->lang->line('Type') . '</th>';
|
||||
print '<th class="project_issue_home_mainarea_result_table_status">' . $this->lang->line('Status') . '</th>';
|
||||
print '<th class="project_issue_home_mainarea_result_table_priority">' . $this->lang->line('Priority') . '</th>';
|
||||
print '<th class="project_issue_home_mainarea_result_table_owner">' . $this->lang->line('Owner') . '</th>';
|
||||
print '<th class="project_issue_home_mainarea_result_table_summary">' . $this->lang->line('Summary') . '</th>';
|
||||
print '</tr>';
|
||||
|
||||
$rowclasses = array ('odd', 'even'); $rowno = 1;
|
||||
foreach ($issues as $issue)
|
||||
{
|
||||
$hexid = $this->converter->AsciiToHex ($issue->id);
|
||||
print '<li>';
|
||||
|
||||
$rowclass = $rowclasses[++$rowno % 2];
|
||||
print "<tr class='{$rowclass}'>";
|
||||
|
||||
print '<td class="project_issue_home_mainarea_result_table_id">';
|
||||
print anchor ("issue/show/{$project->id}/{$hexid}", htmlspecialchars($issue->id));
|
||||
print ': ';
|
||||
print htmlspecialchars($issue->summary);
|
||||
print '</td>';
|
||||
|
||||
print '<td class="project_issue_home_mainarea_result_table_type">';
|
||||
print (htmlspecialchars(
|
||||
array_key_exists($issue->type, $issue_type_array)?
|
||||
$issue_type_array[$issue->type]: $issue->type));
|
||||
print '</td>';
|
||||
|
||||
print '<td class="project_issue_home_mainarea_result_table_status">';
|
||||
print (htmlspecialchars(
|
||||
array_key_exists($issue->status, $issue_status_array)?
|
||||
$issue_status_array[$issue->status]: $issue->status));
|
||||
print '</td>';
|
||||
|
||||
print '<td class="project_issue_home_mainarea_result_table_priority">';
|
||||
print (htmlspecialchars(
|
||||
array_key_exists($issue->priority, $issue_priority_array)?
|
||||
$issue_priority_array[$issue->priority]: $issue->priority));
|
||||
print '</td>';
|
||||
|
||||
print '<td class="project_issue_home_mainarea_result_table_owner">';
|
||||
print htmlspecialchars($issue->owner);
|
||||
print htmlspecialchars($issue->createdby);
|
||||
print '</td>';
|
||||
|
||||
print '</li>';
|
||||
print '<td class="project_issue_home_mainarea_result_table_summary">';
|
||||
print htmlspecialchars($issue->summary);
|
||||
print '</td>';
|
||||
|
||||
print '</tr>';
|
||||
}
|
||||
print '</ul>';
|
||||
|
||||
print '<tr class="foot">';
|
||||
print "<td colspan='6' class='pages'>{$page_links}</td>";
|
||||
print '</tr>';
|
||||
|
||||
print '</table>';
|
||||
}
|
||||
?>
|
||||
</div> <!-- project_issue_home_mainarea_result -->
|
||||
|
@ -3,57 +3,147 @@
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||||
<link type="text/css" rel="stylesheet" href="<?=base_url()?>/css/common.css" />
|
||||
<link type="text/css" rel="stylesheet" href="<?=base_url()?>/css/project.css" />
|
||||
<link type="text/css" rel="stylesheet" href="<?=base_url()?>/css/issue.css" />
|
||||
<script type="text/javascript" src="<?=base_url()?>/js/creole.js"></script>
|
||||
|
||||
|
||||
<script type="text/javascript" src="<?=base_url()?>/js/jquery.min.js"></script>
|
||||
<script type="text/javascript" src="<?=base_url()?>/js/jquery-ui.min.js"></script>
|
||||
<link type="text/css" rel="stylesheet" href="<?=base_url()?>/css/jquery-ui.css" />
|
||||
|
||||
<script type="text/javascript">
|
||||
$(
|
||||
function () {
|
||||
|
||||
$.widget("ui.combobox", {
|
||||
_create: function() {
|
||||
var self = this;
|
||||
var select = this.element.hide();
|
||||
var input = $("<input>").insertAfter(select);
|
||||
|
||||
input.autocomplete({
|
||||
source: function(request, response) {
|
||||
var matcher = new RegExp(request.term, "i");
|
||||
response(select.children("option").map(function() {
|
||||
var text = $(this).text();
|
||||
if (!request.term || matcher.test(text))
|
||||
return {
|
||||
id: $(this).val(),
|
||||
label: text.replace(new RegExp("(?![^&;]+;)(?!<[^<>]*)(" + request.term.replace(/([\^\$\(\)\[\]\{\}\*\.\+\?\|\\])/gi, "\\$1") + ")(?![^<>]*>)(?![^&;]+;)", "gi"), "<strong>$1</strong>"),
|
||||
value: text
|
||||
};
|
||||
}));
|
||||
},
|
||||
delay: 0,
|
||||
select: function(e, ui) {
|
||||
if (!ui.item) {
|
||||
// remove invalid value, as it didn't match anything
|
||||
$(this).val("");
|
||||
return false;
|
||||
}
|
||||
$(this).focus();
|
||||
select.val(ui.item.id);
|
||||
self._trigger("selected", null, {
|
||||
item: select.find("[value='" + ui.item.id + "']")
|
||||
});
|
||||
|
||||
},
|
||||
minLength: 0
|
||||
})
|
||||
|
||||
var fn = function() {
|
||||
// close if already visible
|
||||
//if (input.autocomplete("widget").is(":visible")) {
|
||||
// input.autocomplete("close");
|
||||
// return;
|
||||
//}
|
||||
// pass empty string as value to search for, displaying all results
|
||||
input.autocomplete("search", "");
|
||||
input.focus();
|
||||
};
|
||||
|
||||
input.click (fn);
|
||||
input.focusin (fn);
|
||||
|
||||
input.addClass("ui-widget ui-widget-content");
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
$(function () {
|
||||
/*
|
||||
$("#issue_change_type").combobox();
|
||||
$("#issue_change_status").combobox();
|
||||
$("#issue_change_priority").combobox();
|
||||
*/
|
||||
/*$("#issue_change_owner").combobox();*/
|
||||
|
||||
$("#project_issue_show_mainarea_change_form").dialog (
|
||||
{
|
||||
title: 'Change',
|
||||
title: '<?=$this->lang->line('Change')?>',
|
||||
autoOpen: false,
|
||||
modal: true,
|
||||
width: '85%',
|
||||
buttons: {
|
||||
'Submit': function () {
|
||||
'<?=$this->lang->line('Cancel')?>': function () {
|
||||
$(this).dialog('close');
|
||||
$('#issue').submit ();
|
||||
},
|
||||
'<?=$this->lang->line('OK')?>': function () {
|
||||
var comment = $('#issue_change_comment');
|
||||
if (comment.val().trim().length <= 0)
|
||||
{
|
||||
comment.addClass ('ui-state-error');
|
||||
setTimeout (function () {
|
||||
comment.removeClass ('ui-state-error', 500);
|
||||
}, 500);
|
||||
}
|
||||
else
|
||||
{
|
||||
$(this).dialog('close');
|
||||
$('#issue_change').val ('change');
|
||||
$('#project_issue_change_form').submit ();
|
||||
}
|
||||
}
|
||||
},
|
||||
close: function() {}
|
||||
close: function() { }
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
$("#project_issue_show_mainarea_change_form_open").button().click (
|
||||
function () {
|
||||
$('#project_issue_show_mainarea_change_form').dialog('open');
|
||||
}
|
||||
);
|
||||
|
||||
$("#project_issue_show_mainarea_undo_change_confirm").dialog (
|
||||
{
|
||||
title: '<?=$this->lang->line('Undo')?>',
|
||||
resizable: false,
|
||||
autoOpen: false,
|
||||
modal: true,
|
||||
buttons: {
|
||||
'<?=$this->lang->line('Cancel')?>': function () {
|
||||
$(this).dialog('close');
|
||||
},
|
||||
'<?=$this->lang->line('OK')?>': function () {
|
||||
$('#issue_change').val ('undo');
|
||||
$('#project_issue_change_form').submit ();
|
||||
$(this).dialog('close');
|
||||
}
|
||||
);
|
||||
},
|
||||
close: function() { }
|
||||
}
|
||||
);
|
||||
|
||||
$("#project_issue_show_mainarea_undo_change").button().click (
|
||||
function () {
|
||||
$('#project_issue_show_mainarea_undo_change_confirm').dialog('open');
|
||||
}
|
||||
);
|
||||
|
||||
});
|
||||
</script>
|
||||
|
||||
<title><?=htmlspecialchars($issue->id)?></title>
|
||||
</head>
|
||||
|
||||
<script type="text/javascript">
|
||||
function render_wiki()
|
||||
{
|
||||
creole_render_wiki (
|
||||
"project_issue_show_mainarea_description_pre",
|
||||
"project_issue_show_mainarea_description",
|
||||
"<?=site_url()?>/issue/show/<?=$project->id?>/"
|
||||
);
|
||||
}
|
||||
</script>
|
||||
|
||||
<body onLoad="render_wiki()">
|
||||
|
||||
<div class="content" id="project_issue_show_content">
|
||||
@ -90,10 +180,39 @@ $this->load->view (
|
||||
</div>
|
||||
|
||||
<div class="infostrip" id="project_issue_show_mainarea_infostrip">
|
||||
Reported by <?=htmlspecialchars($issue->createdby)?> on <?=$issue->createdon?> |
|
||||
<?=$this->lang->line('Status') ?>: <?=htmlspecialchars($issue->status)?> |
|
||||
<?=$this->lang->line('Type') ?>: <?=htmlspecialchars($issue->type)?>
|
||||
<a id="project_issue_show_mainarea_change_form_open" href='#'>Change</a>
|
||||
<?php
|
||||
print $this->lang->line('Type');
|
||||
print ': ';
|
||||
print htmlspecialchars(
|
||||
array_key_exists($issue->type, $issue_type_array)?
|
||||
$issue_type_array[$issue->type]: $issue->type
|
||||
);
|
||||
print ' | ';
|
||||
|
||||
print $this->lang->line('Status');
|
||||
print ': ';
|
||||
print htmlspecialchars(
|
||||
array_key_exists($issue->status, $issue_status_array)?
|
||||
$issue_status_array[$issue->status]: $issue->status
|
||||
);
|
||||
print ' | ';
|
||||
|
||||
print $this->lang->line('Priority');
|
||||
print ': ';
|
||||
print htmlspecialchars(
|
||||
array_key_exists($issue->priority, $issue_priority_array)?
|
||||
$issue_priority_array[$issue->priority]: $issue->priority
|
||||
);
|
||||
print ' | ';
|
||||
if ($issue->owner != '')
|
||||
{
|
||||
print $this->lang->line('Owner');
|
||||
print ': ';
|
||||
print htmlspecialchars($issue->owner);
|
||||
print ' | ';
|
||||
}
|
||||
?>
|
||||
<a id="project_issue_show_mainarea_change_form_open" href="#"><?=$this->lang->line('Change')?></a>
|
||||
</div>
|
||||
|
||||
<div id="project_issue_show_mainarea_description">
|
||||
@ -104,66 +223,176 @@ $this->load->view (
|
||||
|
||||
<div id="project_issue_show_mainarea_changes">
|
||||
<?php
|
||||
print "<ul>";
|
||||
foreach ($issue->changes as $change)
|
||||
{
|
||||
$commentno = 0;
|
||||
|
||||
print '<li>';
|
||||
print date ('Y-m-d', strtotime($change->updatedon)) . ' ' . htmlspecialchars($change->status);
|
||||
print ' ';
|
||||
print htmlspecialchars($change->comment);
|
||||
print '</li>';
|
||||
}
|
||||
print "</ul>";
|
||||
$msgfmt_changed = $this->lang->line ('ISSUE_MSG_CHANGED_X_FROM_Y_TO_Z');
|
||||
$count = count($issue->changes);
|
||||
if ($count > 1)
|
||||
{
|
||||
print '<div class="infostrip">';
|
||||
print '<span class="title">';
|
||||
print $this->lang->line('Change log');
|
||||
print '</span>';
|
||||
print '<a id="project_issue_show_mainarea_undo_change" href="#">';
|
||||
print $this->lang->line('Undo');
|
||||
print '</a>';
|
||||
print '</div>';
|
||||
}
|
||||
|
||||
print '<table id="project_issue_show_mainarea_changes_table">';
|
||||
while ($count > 1)
|
||||
{
|
||||
$new = $issue->changes[--$count];
|
||||
$old = $issue->changes[$count-1];
|
||||
|
||||
print "<tr>";
|
||||
|
||||
print '<td class="project_issue_show_mainarea_changes_table_date">';
|
||||
print '<span title="';
|
||||
print date ('Y-m-d H:s:i', strtotime($new->updatedon));
|
||||
print '">';
|
||||
print date ('Y-m-d', strtotime($new->updatedon));
|
||||
print '</span>';
|
||||
print '</td>';
|
||||
|
||||
print '<td class="project_issue_show_mainarea_changes_table_updater">';
|
||||
print htmlspecialchars($new->updatedby);
|
||||
print '</td>';
|
||||
|
||||
print '<td class="project_issue_show_mainarea_changes_table_details">';
|
||||
if ($new->comment != "")
|
||||
{
|
||||
print "<div id='project_issue_show_mainarea_changes_comment_{$commentno}' class='project_issue_show_mainarea_changes_comment'>";
|
||||
print "<pre id='project_issue_show_mainarea_changes_comment_pre_{$commentno}'>";
|
||||
print htmlspecialchars($new->comment);
|
||||
print '</pre>';
|
||||
print '</div>';
|
||||
$commentno++;
|
||||
}
|
||||
|
||||
print '<div class="project_issue_show_mainarea_changes_list">';
|
||||
print '<ul>';
|
||||
if ($new->type != $old->type)
|
||||
{
|
||||
printf ("<li>{$msgfmt_changed}</li>",
|
||||
strtolower($this->lang->line('Type')),
|
||||
htmlspecialchars(
|
||||
array_key_exists($old->type, $issue_type_array)?
|
||||
$issue_type_array[$old->type]: $old->type),
|
||||
htmlspecialchars(
|
||||
array_key_exists($new->type, $issue_type_array)?
|
||||
$issue_type_array[$new->type]: $new->type));
|
||||
}
|
||||
|
||||
if ($new->status != $old->status)
|
||||
{
|
||||
printf ("<li>{$msgfmt_changed}</li>",
|
||||
strtolower($this->lang->line('Status')),
|
||||
htmlspecialchars(
|
||||
array_key_exists($old->status, $issue_status_array)?
|
||||
$issue_status_array[$old->status]: $old->status),
|
||||
htmlspecialchars(
|
||||
array_key_exists($new->status, $issue_status_array)?
|
||||
$issue_status_array[$new->status]: $new->status));
|
||||
}
|
||||
|
||||
if ($new->priority != $old->priority)
|
||||
{
|
||||
printf ("<li>{$msgfmt_changed}</li>",
|
||||
strtolower($this->lang->line('Priority')),
|
||||
htmlspecialchars(
|
||||
array_key_exists($old->priority, $issue_priority_array)?
|
||||
$issue_priority_array[$old->priority]: $old->priority),
|
||||
htmlspecialchars(
|
||||
array_key_exists($new->priority, $issue_priority_array)?
|
||||
$issue_priority_array[$new->priority]: $new->priority));
|
||||
}
|
||||
|
||||
if ($new->owner != $old->owner)
|
||||
{
|
||||
printf ("<li>{$msgfmt_changed}</li>",
|
||||
strtolower($this->lang->line('Owner')),
|
||||
htmlspecialchars($old->owner), htmlspecialchars($new->owner));
|
||||
}
|
||||
print '</ul>';
|
||||
print '</div>';
|
||||
|
||||
print '</td>';
|
||||
print '</tr>';
|
||||
}
|
||||
print '</table>';
|
||||
?>
|
||||
|
||||
</div>
|
||||
|
||||
<div id="project_issue_show_mainarea_change_form">
|
||||
|
||||
<?=form_open("issue/show/{$project->id}/{$hexid}/", 'id="issue"')?>
|
||||
<?=form_open("issue/show/{$project->id}/{$hexid}/", 'id="project_issue_change_form"')?>
|
||||
|
||||
<?=form_hidden ('issue_change', 'yes');?>
|
||||
<input type='hidden' name='issue_change' id='issue_change' value='change' />
|
||||
|
||||
<div>
|
||||
<?=form_label ($this->lang->line('Type'), 'issue_change_type')?>
|
||||
<?=form_input('issue_change_type', set_value('issue_change_type', $issue->type), 'id="issue_change_type" class="text ui-widget-content ui-corner-all"')?>
|
||||
<?=form_label ($this->lang->line('Type'),
|
||||
'issue_change_type')
|
||||
?>
|
||||
<?=form_dropdown('issue_change_type',
|
||||
$issue_type_array,
|
||||
set_value('issue_change_type', $issue->type),
|
||||
'id="issue_change_type"')
|
||||
?>
|
||||
|
||||
<?=form_label ($this->lang->line('Status'),
|
||||
'issue_change_status')
|
||||
?>
|
||||
<?=form_dropdown('issue_change_status',
|
||||
$issue_status_array,
|
||||
set_value('issue_change_status', $issue->status),
|
||||
'id="issue_change_status"')
|
||||
?>
|
||||
|
||||
<?=form_label ($this->lang->line('Priority'),
|
||||
'issue_change_priority')
|
||||
?>
|
||||
|
||||
<?=form_dropdown (
|
||||
'issue_change_priority',
|
||||
$issue_priority_array,
|
||||
set_value('issue_change_priority', $issue->priority),
|
||||
'id="issue_change_priority"')
|
||||
?>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<?=form_label ($this->lang->line('Status'), 'issue_change_status')?>
|
||||
<?=form_input('issue_change_status', set_value('issue_change_status', $issue->status), 'id="issue_change_status" class="text ui-widget-content ui-corner-all"')?>
|
||||
<?=form_label ($this->lang->line('Owner'),
|
||||
'issue_change_owner')
|
||||
?>
|
||||
<?=form_input('issue_change_owner',
|
||||
set_value('issue_change_owner', $issue->owner),
|
||||
'id="issue_change_owner"')
|
||||
?>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<?=form_label ($this->lang->line('Owner'), 'issue_change_owner')?>
|
||||
<?=form_input('issue_change_owner', set_value('issue_change_owner', $issue->owner), 'id="issue_change_owner" class="text ui-widget-content ui-corner-all"')?>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<?=form_label ($this->lang->line('Priority'), 'issue_change_priority')?>
|
||||
<?=form_input('issue_change_priority', set_value('issue_change_priority', $issue->priority), 'id="issue_change_priority" class="text ui-widget-content ui-corner-all"')?>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<?=form_label ('Comment', 'issue_change_comment')?>
|
||||
<?=form_label ($this->lang->line('Comment'), 'issue_change_comment')?>
|
||||
<?php
|
||||
$xdata = array (
|
||||
'name' => 'issue_change_comment',
|
||||
'value' => set_value ('issue_change_comment', ''),
|
||||
'id' => 'issue_change_comment',
|
||||
'rows' => 3,
|
||||
'cols' => 80,
|
||||
'class' => 'text ui-widget-content ui-corner-all'
|
||||
'rows' => 10,
|
||||
'cols' => 80
|
||||
);
|
||||
print form_textarea ($xdata);
|
||||
?>
|
||||
</div>
|
||||
<?=form_close()?>
|
||||
|
||||
|
||||
</div> <!-- project_issue_show_change_form -->
|
||||
|
||||
|
||||
<div id="project_issue_show_mainarea_undo_change_confirm">
|
||||
<?=$this->lang->line ('ISSUE_MSG_CONFIRM_UNDO')?>
|
||||
</div>
|
||||
|
||||
</div> <!-- project_issue_show_mainarea -->
|
||||
|
||||
<!---------------------------------------------------------------------------->
|
||||
@ -174,6 +403,32 @@ print "</ul>";
|
||||
|
||||
</div> <!-- project_issue_show_content -->
|
||||
|
||||
<script type="text/javascript">
|
||||
function render_wiki()
|
||||
{
|
||||
<?php $creole_base = site_url() . "/wiki/show/{$project->id}/"; ?>
|
||||
|
||||
creole_render_wiki (
|
||||
"project_issue_show_mainarea_description_pre",
|
||||
"project_issue_show_mainarea_description",
|
||||
"<?=$creole_base?>"
|
||||
);
|
||||
|
||||
<?php
|
||||
if ($commentno > 0)
|
||||
{
|
||||
for ($xxx = 0; $xxx < $commentno; $xxx++)
|
||||
{
|
||||
print "creole_render_wiki (
|
||||
'project_issue_show_mainarea_changes_comment_pre_{$xxx}',
|
||||
'project_issue_show_mainarea_changes_comment_{$xxx}',
|
||||
'{$creole_base}');";
|
||||
}
|
||||
}
|
||||
?>
|
||||
}
|
||||
</script>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
|
@ -167,6 +167,7 @@ $this->load->view (
|
||||
?>
|
||||
<tr class='foot'>
|
||||
<td colspan='<?=$numcols?>' class='pages'><?= $page_links ?></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
</div> <!-- log_mainarea_result -->
|
||||
|
@ -29,6 +29,7 @@ function load_ini ($file)
|
||||
array ('sysadmin_userids', 'string', ''),
|
||||
array ('max_upload_size', 'string', '10000'), // kbytes
|
||||
array ('max_latest_projects', 'integer', 10),
|
||||
array ('max_issues_per_page', 'integer', 50),
|
||||
array ('max_logs_per_page', 'integer', 50),
|
||||
array ('max_logs_in_site_home', 'integer', 10),
|
||||
array ('max_logs_in_project_home', 'integer', 5),
|
||||
|
@ -3,6 +3,7 @@ SUBDIRS = images
|
||||
wwwdir=$(WWWDIR)/css
|
||||
www_DATA = \
|
||||
common.css \
|
||||
issue.css \
|
||||
jquery-ui.css \
|
||||
project.css \
|
||||
websvn.css
|
||||
|
@ -205,6 +205,7 @@ wwwdir = $(WWWDIR)/css
|
||||
SUBDIRS = images
|
||||
www_DATA = \
|
||||
common.css \
|
||||
issue.css \
|
||||
jquery-ui.css \
|
||||
project.css \
|
||||
websvn.css
|
||||
|
@ -396,3 +396,7 @@ pre.prettyprint .nocode a:hover {
|
||||
color: red;
|
||||
}
|
||||
|
||||
.content span.quoted {
|
||||
color: #bb2322;
|
||||
font-style: italic;
|
||||
}
|
||||
|
163
codepot/src/css/issue.css
Normal file
163
codepot/src/css/issue.css
Normal file
@ -0,0 +1,163 @@
|
||||
|
||||
/*---------------------------------------------
|
||||
* issue home
|
||||
*---------------------------------------------*/
|
||||
#project_issue_home_mainarea_result {
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
#project_issue_home_mainarea_result_table {
|
||||
border-collapse: collapse;
|
||||
width: 100%;
|
||||
font-size: inherit;
|
||||
}
|
||||
|
||||
#project_issue_home_mainarea_result_table td.pages {
|
||||
padding-top: 1em;
|
||||
text-align: center;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.project_issue_home_mainarea_result_table_id {
|
||||
white-space: nowrap;
|
||||
width: 1px;
|
||||
}
|
||||
|
||||
.project_issue_home_mainarea_result_table_type {
|
||||
white-space: nowrap;
|
||||
width: 1px;
|
||||
}
|
||||
|
||||
.project_issue_home_mainarea_result_table_status {
|
||||
white-space: nowrap;
|
||||
width: 1px;
|
||||
}
|
||||
|
||||
.project_issue_home_mainarea_result_table_priority {
|
||||
white-space: nowrap;
|
||||
width: 1px;
|
||||
}
|
||||
|
||||
.project_issue_home_mainarea_result_table_owner {
|
||||
white-space: nowrap;
|
||||
width: 1px;
|
||||
}
|
||||
|
||||
.project_issue_home_mainarea_result_table_summary {
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
|
||||
/*---------------------------------------------
|
||||
* issue show
|
||||
*---------------------------------------------*/
|
||||
#project_issue_show_mainarea_change_form {
|
||||
font-size: .9em;
|
||||
}
|
||||
|
||||
#project_issue_show_mainarea_change_form div {
|
||||
padding: 0.3em;
|
||||
}
|
||||
|
||||
#project_issue_show_mainarea_change_form input {
|
||||
padding: 1px;
|
||||
}
|
||||
|
||||
#project_issue_show_mainarea_change_form select {
|
||||
padding: 1px;
|
||||
}
|
||||
|
||||
#project_issue_show_mainarea_change_form textarea {
|
||||
display: block;
|
||||
padding: 1px;
|
||||
font-size: inherit;
|
||||
font-family: inherit;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
#project_issue_show_mainarea_changes {
|
||||
margin-top: 1em;
|
||||
padding-top: 0.5em;
|
||||
padding-bottom: 0.5em;
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
#project_issue_show_mainarea_changes .infostrip {
|
||||
margin-bottom: 0.5em;
|
||||
}
|
||||
|
||||
#project_issue_show_mainarea_changes .infostrip .title {
|
||||
float: left;
|
||||
}
|
||||
|
||||
#project_issue_show_mainarea_changes_table {
|
||||
border-collapse: collapse;
|
||||
width: 100%;
|
||||
font-size: inherit;
|
||||
}
|
||||
|
||||
#project_issue_show_mainarea_changes_table td.project_issue_show_mainarea_changes_table_date {
|
||||
width: 1px;
|
||||
white-space: nowrap;
|
||||
vertical-align: top;
|
||||
padding-top: 0.2em;
|
||||
padding-bottom: 0.2em;
|
||||
border-bottom: 1px solid lightgray;
|
||||
}
|
||||
|
||||
#project_issue_show_mainarea_changes_table td.project_issue_show_mainarea_changes_table_updater {
|
||||
width: 1px;
|
||||
white-space: nowrap;
|
||||
vertical-align: top;
|
||||
padding-top: 0.2em;
|
||||
padding-bottom: 0.2em;
|
||||
border-bottom: 1px solid lightgray;
|
||||
}
|
||||
|
||||
#project_issue_show_mainarea_changes_table td.project_issue_show_mainarea_changes_table_details {
|
||||
white-space: nowrap;
|
||||
vertical-align: top;
|
||||
padding-top: 0.2em;
|
||||
padding-bottom: 0.2em;
|
||||
border-bottom: 1px solid lightgray;
|
||||
}
|
||||
|
||||
.project_issue_show_mainarea_changes_list {
|
||||
background-color: #F1F1FF;
|
||||
}
|
||||
|
||||
.project_issue_show_mainarea_changes_list ul {
|
||||
list-style: square;
|
||||
}
|
||||
|
||||
.project_issue_show_mainarea_changes_list ul li {
|
||||
padding-bottom: 0.3em;
|
||||
}
|
||||
|
||||
.project_issue_show_mainarea_changes_comment p {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
|
||||
/*---------------------------------------------
|
||||
* issue edit
|
||||
*---------------------------------------------*/
|
||||
#project_issue_edit_mainarea_type {
|
||||
padding-bottom: 0.3em;
|
||||
}
|
||||
|
||||
#project_issue_edit_mainarea form textarea {
|
||||
display: block;
|
||||
padding: 1px;
|
||||
font-size: inherit;
|
||||
font-family: inherit;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
#project_issue_summary {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
#project_issue_edit_mainarea_buttons {
|
||||
padding-top: 0.5em;
|
||||
}
|
2
codepot/src/css/jquery-ui.css
vendored
2
codepot/src/css/jquery-ui.css
vendored
@ -332,7 +332,7 @@
|
||||
text-decoration:none;
|
||||
display:block;
|
||||
padding:.2em .4em;
|
||||
line-height:1.5;
|
||||
/*line-height:1.5;*/
|
||||
}
|
||||
.ui-menu .ui-menu-item a.ui-state-hover,
|
||||
.ui-menu .ui-menu-item a.ui-state-active {
|
||||
|
Loading…
Reference in New Issue
Block a user