added primitive issue management pages.

still far more to be done
This commit is contained in:
hyung-hwan 2010-03-10 13:48:48 +00:00
parent d9121598aa
commit d1420f9c2b
28 changed files with 349 additions and 90 deletions

View File

@ -52,12 +52,12 @@ CREATE TABLE wiki (
CREATE TABLE issue ( CREATE TABLE issue (
projectid VARCHAR(32) NOT NULL, projectid VARCHAR(32) NOT NULL,
# id BIGINT NOT NULL AUTO_INCREMENT,
id BIGINT NOT NULL, id BIGINT NOT NULL,
summary VARCHAR(255) NOT NULL, summary VARCHAR(255) NOT NULL,
type VARCHAR(32) NOT NULL, type VARCHAR(32) NOT NULL,
status VARCHAR(32) NOT NULL, status VARCHAR(32) NOT NULL,
assignedto VARCHAR(255) NOT NULL, owner VARCHAR(255) NOT NULL,
priority VARCHAR(32) NOT NULL,
description TEXT NOT NULL, description TEXT NOT NULL,
createdon DATETIME, createdon DATETIME,
@ -66,7 +66,8 @@ CREATE TABLE issue (
updatedby VARCHAR(32), updatedby VARCHAR(32),
PRIMARY KEY (projectid, id), PRIMARY KEY (projectid, id),
UNIQUE KEY issue_id (projectid, summary), KEY issue_status_type_summary (projectid, status, type, summary),
KEY issue_summary (projectid, summary),
CONSTRAINT issue_projectid FOREIGN KEY (projectid) REFERENCES project(id) CONSTRAINT issue_projectid FOREIGN KEY (projectid) REFERENCES project(id)
ON DELETE RESTRICT ON UPDATE CASCADE ON DELETE RESTRICT ON UPDATE CASCADE

View File

@ -44,7 +44,8 @@ $db['default']['database'] = CODEPOT_DATABASE_NAME;
$db['default']['dbdriver'] = CODEPOT_DATABASE_DRIVER; $db['default']['dbdriver'] = CODEPOT_DATABASE_DRIVER;
$db['default']['dbprefix'] = CODEPOT_DATABASE_PREFIX; $db['default']['dbprefix'] = CODEPOT_DATABASE_PREFIX;
$db['default']['pconnect'] = FALSE; $db['default']['pconnect'] = FALSE;
$db['default']['db_debug'] = FALSE; //$db['default']['db_debug'] = FALSE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE; $db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = ""; $db['default']['cachedir'] = "";
$db['default']['char_set'] = "utf8"; $db['default']['char_set'] = "utf8";

View File

@ -62,7 +62,7 @@ class Issue extends Controller
} }
} }
function _show_issue ($projectid, $name, $create) function show ($projectid = '', $id = '')
{ {
$this->load->model ('ProjectModel', 'projects'); $this->load->model ('ProjectModel', 'projects');
$this->load->model ('IssueModel', 'issues'); $this->load->model ('IssueModel', 'issues');
@ -72,14 +72,14 @@ class Issue extends Controller
redirect ('main/signin'); redirect ('main/signin');
$data['login'] = $login; $data['login'] = $login;
if ($name == '') if ($id == '')
{ {
$data['message'] = 'INVALID PARAMETERS'; $data['message'] = 'INVALID PARAMETERS';
$this->load->view ($this->VIEW_ERROR, $data); $this->load->view ($this->VIEW_ERROR, $data);
return; return;
} }
$name = $this->converter->HexToAscii ($name); $id = $this->converter->HexToAscii ($id);
$project = $this->projects->get ($projectid); $project = $this->projects->get ($projectid);
if ($project === FALSE) if ($project === FALSE)
@ -96,7 +96,7 @@ class Issue extends Controller
} }
else else
{ {
$issue = $this->issues->get ($login['id'], $project, $name); $issue = $this->issues->get ($login['id'], $project, $id);
if ($issue === FALSE) if ($issue === FALSE)
{ {
$data['message'] = 'DATABASE ERROR'; $data['message'] = 'DATABASE ERROR';
@ -104,18 +104,10 @@ class Issue extends Controller
} }
else if ($issue === NULL) else if ($issue === NULL)
{ {
if ($create) $data['message'] =
{ $this->lang->line('MSG_NO_SUCH_ISSUE') .
redirect ("issue/create/{$projectid}/". " - {$id}";
$this->converter->AsciiToHex($name)); $this->load->view ($this->VIEW_ERROR, $data);
}
else
{
$data['message'] =
$this->lang->line('MSG_NO_SUCH_ISSUE') .
" - {$name}";
$this->load->view ($this->VIEW_ERROR, $data);
}
} }
else else
{ {
@ -126,17 +118,7 @@ class Issue extends Controller
} }
} }
function show ($projectid = '' , $name = '') function _edit_issue ($projectid, $id, $mode)
{
$this->_show_issue ($projectid, $name, TRUE);
}
function show_r ($projectid = '' , $name = '')
{
$this->_show_issue ($projectid, $name, FALSE);
}
function _edit_issue ($projectid, $name, $mode)
{ {
$this->load->helper ('form'); $this->load->helper ('form');
$this->load->library ('form_validation'); $this->load->library ('form_validation');
@ -147,7 +129,7 @@ class Issue extends Controller
if ($login['id'] == '') redirect ('main'); if ($login['id'] == '') redirect ('main');
$data['login'] = $login; $data['login'] = $login;
$name = $this->converter->HexToAscii ($name); $id = $this->converter->HexToAscii ($id);
$project = $this->projects->get ($projectid); $project = $this->projects->get ($projectid);
if ($project === FALSE) if ($project === FALSE)
@ -173,9 +155,17 @@ class Issue extends Controller
$this->form_validation->set_rules ( $this->form_validation->set_rules (
'issue_projectid', 'project ID', 'required|alpha_dash|max_length[32]'); 'issue_projectid', 'project ID', 'required|alpha_dash|max_length[32]');
$this->form_validation->set_rules ( $this->form_validation->set_rules (
'issue_name', 'name', 'required|max_length[255]'); 'issue_summary', 'summary', 'required|max_length[255]');
$this->form_validation->set_rules ( $this->form_validation->set_rules (
'issue_text', 'text', 'required'); 'issue_status', 'status', 'required');
$this->form_validation->set_rules (
'issue_type', 'type', 'required');
$this->form_validation->set_rules (
'issue_priority', 'priority', 'required');
$this->form_validation->set_rules (
'issue_owner', 'owner', 'required');
$this->form_validation->set_rules (
'issue_description', 'description', 'required');
$this->form_validation->set_error_delimiters ( $this->form_validation->set_error_delimiters (
'<span class="form_field_error">','</span>'); '<span class="form_field_error">','</span>');
@ -186,15 +176,20 @@ class Issue extends Controller
if ($this->input->post('issue')) if ($this->input->post('issue'))
{ {
$issue->projectid = $this->input->post('issue_projectid'); $issue->projectid = $this->input->post('issue_projectid');
$issue->name = $this->input->post('issue_name'); $issue->id = $this->input->post('issue_id');
$issue->text = $this->input->post('issue_text'); $issue->summary = $this->input->post('issue_summary');
$issue->description = $this->input->post('issue_description');
$issue->type = $this->input->post('issue_type');
$issue->status = $this->input->post('issue_status');
$issue->priority = $this->input->post('issue_priority');
$issue->owner = $this->input->post('issue_owner');
if ($this->form_validation->run()) if ($this->form_validation->run())
{ {
$result = ($mode == 'update')? $id = ($mode == 'update')?
$this->issues->update ($login['id'], $issue): $this->issues->update ($login['id'], $issue):
$this->issues->create ($login['id'], $issue); $this->issues->create ($login['id'], $issue);
if ($result === FALSE) if ($id === FALSE)
{ {
$data['message'] = 'DATABASE ERROR'; $data['message'] = 'DATABASE ERROR';
$data['issue'] = $issue; $data['issue'] = $issue;
@ -202,8 +197,8 @@ class Issue extends Controller
} }
else else
{ {
redirect ('issue/show/' . $project->id . '/' . redirect ("issue/show/{$project->id}/" .
$this->converter->AsciiToHex($issue->name)); $this->converter->AsciiToHex((string)$id));
} }
} }
else else
@ -217,7 +212,7 @@ class Issue extends Controller
{ {
if ($mode == 'update') if ($mode == 'update')
{ {
$issue = $this->issues->get ($login['id'], $project, $name); $issue = $this->issues->get ($login['id'], $project, $id);
if ($issue === FALSE) if ($issue === FALSE)
{ {
$data['message'] = 'DATABASE ERROR'; $data['message'] = 'DATABASE ERROR';
@ -227,7 +222,7 @@ class Issue extends Controller
{ {
$data['message'] = $data['message'] =
$this->lang->line('MSG_NO_SUCH_ISSUE') . $this->lang->line('MSG_NO_SUCH_ISSUE') .
" - {$name}"; " - {$id}";
$this->load->view ($this->VIEW_ERROR, $data); $this->load->view ($this->VIEW_ERROR, $data);
} }
else else
@ -239,8 +234,13 @@ class Issue extends Controller
else else
{ {
$issue->projectid = $projectid; $issue->projectid = $projectid;
$issue->name = $name; $issue->id = $id;
$issue->text = ''; $issue->summary = '';
$issue->type = '';
$issue->status = '';
$issue->owner = '';
$issue->priority = '';
$issue->description = '';
$data['issue'] = $issue; $data['issue'] = $issue;
$this->load->view ($this->VIEW_EDIT, $data); $this->load->view ($this->VIEW_EDIT, $data);
@ -250,17 +250,17 @@ class Issue extends Controller
} }
} }
function create ($projectid = '', $name = '') function create ($projectid = '', $id = '')
{ {
return $this->_edit_issue ($projectid, $name, 'create'); return $this->_edit_issue ($projectid, $id, 'create');
} }
function update ($projectid = '', $name = '') function update ($projectid = '', $id = '')
{ {
return $this->_edit_issue ($projectid, $name, 'update'); return $this->_edit_issue ($projectid, $id, 'update');
} }
function delete ($projectid = '', $name = '') function delete ($projectid = '', $id = '')
{ {
$this->load->helper ('form'); $this->load->helper ('form');
$this->load->library ('form_validation'); $this->load->library ('form_validation');
@ -271,7 +271,7 @@ class Issue extends Controller
if ($login['id'] == '') redirect ('main'); if ($login['id'] == '') redirect ('main');
$data['login'] = $login; $data['login'] = $login;
$name = $this->converter->HexToAscii ($name); $id = $this->converter->HexToAscii ($id);
$project = $this->projects->get ($projectid); $project = $this->projects->get ($projectid);
if ($project === FALSE) if ($project === FALSE)
@ -303,7 +303,7 @@ class Issue extends Controller
if($this->input->post('issue')) if($this->input->post('issue'))
{ {
$issue->projectid = $this->input->post('issue_projectid'); $issue->projectid = $this->input->post('issue_projectid');
$issue->name = $this->input->post('issue_name'); $issue->id = $this->input->post('issue_id');
$data['issue_confirm'] = $this->input->post('issue_confirm'); $data['issue_confirm'] = $this->input->post('issue_confirm');
if ($this->form_validation->run()) if ($this->form_validation->run())
@ -325,7 +325,7 @@ class Issue extends Controller
else else
{ {
redirect ("issue/show/{$project->id}/" . redirect ("issue/show/{$project->id}/" .
$this->converter->AsciiToHex($issue->name)); $this->converter->AsciiToHex($issue->id));
} }
} }
else else
@ -337,7 +337,7 @@ class Issue extends Controller
} }
else else
{ {
$issue = $this->issues->get ($login['id'], $project, $name); $issue = $this->issues->get ($login['id'], $project, $id);
if ($issue === FALSE) if ($issue === FALSE)
{ {
$data['message'] = 'DATABASE ERROR'; $data['message'] = 'DATABASE ERROR';
@ -347,7 +347,7 @@ class Issue extends Controller
{ {
$data['message'] = $data['message'] =
$this->lang->line('MSG_NO_SUCH_ISSUE') . $this->lang->line('MSG_NO_SUCH_ISSUE') .
" - {$name}"; " - {$id}";
$this->load->view ($this->VIEW_ERROR, $data); $this->load->view ($this->VIEW_ERROR, $data);
} }
else else

View File

@ -39,8 +39,10 @@ $lang['Last updated on'] = 'Last updated on';
$lang['Latest projects'] = 'Latest projects'; $lang['Latest projects'] = 'Latest projects';
$lang['Other projects'] = 'Other projects'; $lang['Other projects'] = 'Other projects';
$lang['Overview'] = 'Overview'; $lang['Overview'] = 'Overview';
$lang['Owner'] = 'Owner';
$lang['Password'] = 'Password'; $lang['Password'] = 'Password';
$lang['Path'] = 'Path'; $lang['Path'] = 'Path';
$lang['Priority'] = 'Priority';
$lang['Project'] = 'Project'; $lang['Project'] = 'Project';
$lang['Projects'] = 'Projects'; $lang['Projects'] = 'Projects';
$lang['Repository'] = 'Repository'; $lang['Repository'] = 'Repository';
@ -49,11 +51,13 @@ $lang['Sign in'] = 'Sign in';
$lang['Sign out'] = 'Sign out'; $lang['Sign out'] = 'Sign out';
$lang['Size'] = 'Size'; $lang['Size'] = 'Size';
$lang['Source'] = 'Source'; $lang['Source'] = 'Source';
$lang['Status'] = 'Status';
$lang['Summary'] = 'Summary'; $lang['Summary'] = 'Summary';
$lang['System'] = 'System'; $lang['System'] = 'System';
$lang['Tag'] = 'Tag'; $lang['Tag'] = 'Tag';
$lang['Text'] = 'Text'; $lang['Text'] = 'Text';
$lang['Time'] = 'Time'; $lang['Time'] = 'Time';
$lang['Type'] = 'Type';
$lang['Update'] = 'Update'; $lang['Update'] = 'Update';
$lang['Username'] = 'Username'; $lang['Username'] = 'Username';
$lang['Wiki'] = 'Wiki'; $lang['Wiki'] = 'Wiki';
@ -69,6 +73,7 @@ $lang['MSG_NO_DIFF'] = 'No difference found';
$lang['MSG_NO_CODE_AVAIL'] = 'No source code available'; $lang['MSG_NO_CODE_AVAIL'] = 'No source code available';
$lang['MSG_NO_FILES_AVAIL'] = 'No files available'; $lang['MSG_NO_FILES_AVAIL'] = 'No files available';
$lang['MSG_NO_ISSUES_AVAIL'] = 'No outstanding issues'; $lang['MSG_NO_ISSUES_AVAIL'] = 'No outstanding issues';
$lang['MSG_NO_SUCH_ISSUE'] = 'No such issue';
$lang['MSG_NO_SUCH_PROJECT'] = 'No such project'; $lang['MSG_NO_SUCH_PROJECT'] = 'No such project';
$lang['MSG_NO_SUCH_WIKI_PAGE'] = 'No such wiki page'; $lang['MSG_NO_SUCH_WIKI_PAGE'] = 'No such wiki page';
$lang['MSG_NO_WIKIS_AVAIL'] = 'No wiki pages available'; $lang['MSG_NO_WIKIS_AVAIL'] = 'No wiki pages available';

View File

@ -39,8 +39,10 @@ $lang['Last updated on'] = 'Waktu memperbaharui terakhir';
$lang['Latest projects'] = 'Proyek terakhir'; $lang['Latest projects'] = 'Proyek terakhir';
$lang['Other projects'] = 'Proyek lain'; $lang['Other projects'] = 'Proyek lain';
$lang['Overview'] = 'Ringkasan'; $lang['Overview'] = 'Ringkasan';
$lang['Owner'] = 'Owner';
$lang['Password'] = 'Kata sandi'; $lang['Password'] = 'Kata sandi';
$lang['Path'] = 'Path'; $lang['Path'] = 'Path';
$lang['Priority'] = 'Pirority';
$lang['Project'] = 'Proyek'; $lang['Project'] = 'Proyek';
$lang['Projects'] = 'Proyek'; $lang['Projects'] = 'Proyek';
$lang['Repository'] = 'Repository'; $lang['Repository'] = 'Repository';
@ -49,11 +51,13 @@ $lang['Sign in'] = 'Masuk';
$lang['Sign out'] = 'Keluar'; $lang['Sign out'] = 'Keluar';
$lang['Size'] = 'Ukuran'; $lang['Size'] = 'Ukuran';
$lang['Source'] = 'Sumber'; $lang['Source'] = 'Sumber';
$lang['Status'] = 'Status';
$lang['Summary'] = 'Rangkuman'; $lang['Summary'] = 'Rangkuman';
$lang['System'] = 'Sistem'; $lang['System'] = 'Sistem';
$lang['Tag'] = 'Label'; $lang['Tag'] = 'Label';
$lang['Text'] = 'Teks'; $lang['Text'] = 'Teks';
$lang['Time'] = 'Waktu'; $lang['Time'] = 'Waktu';
$lang['Type'] = 'Type';
$lang['Update'] = 'Memperbaharui'; $lang['Update'] = 'Memperbaharui';
$lang['Username'] = 'Nama pemakai'; $lang['Username'] = 'Nama pemakai';
$lang['Wiki'] = 'Wiki'; $lang['Wiki'] = 'Wiki';
@ -68,6 +72,7 @@ $lang['MSG_NO_DIFF'] = 'Tidak ada bedanya';
$lang['MSG_NO_CODE_AVAIL'] = 'Tidak ada kode sumber tersedia'; $lang['MSG_NO_CODE_AVAIL'] = 'Tidak ada kode sumber tersedia';
$lang['MSG_NO_FILES_AVAIL'] = 'Tidak ada file tersedia'; $lang['MSG_NO_FILES_AVAIL'] = 'Tidak ada file tersedia';
$lang['MSG_NO_ISSUES_AVAIL'] = 'Tidak ada issue'; $lang['MSG_NO_ISSUES_AVAIL'] = 'Tidak ada issue';
$lang['MSG_NO_SUCH_ISSUE'] = 'No such issue';
$lang['MSG_NO_SUCH_PROJECT'] = 'No such project'; $lang['MSG_NO_SUCH_PROJECT'] = 'No such project';
$lang['MSG_NO_SUCH_WIKI_PAGE'] = 'No such wiki page'; $lang['MSG_NO_SUCH_WIKI_PAGE'] = 'No such wiki page';
$lang['MSG_NO_WIKIS_AVAIL'] = 'Tidak ada halaman wiki tersedia'; $lang['MSG_NO_WIKIS_AVAIL'] = 'Tidak ada halaman wiki tersedia';

View File

@ -39,8 +39,10 @@ $lang['Last updated on'] = '최종수정시간';
$lang['Latest projects'] = '최근 프로젝트'; $lang['Latest projects'] = '최근 프로젝트';
$lang['Other projects'] = '다른 프로젝트'; $lang['Other projects'] = '다른 프로젝트';
$lang['Overview'] = '개요'; $lang['Overview'] = '개요';
$lang['Owner'] = '소유자';
$lang['Password'] = '패스워드'; $lang['Password'] = '패스워드';
$lang['Path'] = '경로'; $lang['Path'] = '경로';
$lang['Priority'] = '중요도';
$lang['Project'] = '프로젝트'; $lang['Project'] = '프로젝트';
$lang['Projects'] = '프로젝트'; $lang['Projects'] = '프로젝트';
$lang['Repository'] = '저장소'; $lang['Repository'] = '저장소';
@ -48,12 +50,14 @@ $lang['Revision'] = '리비전';
$lang['Sign in'] = '로그인'; $lang['Sign in'] = '로그인';
$lang['Sign out'] = '로그아웃'; $lang['Sign out'] = '로그아웃';
$lang['Size'] = '크기'; $lang['Size'] = '크기';
$lang['Status'] = '상태';
$lang['Source'] = '소스'; $lang['Source'] = '소스';
$lang['Summary'] = '요약'; $lang['Summary'] = '요약';
$lang['System'] = '시스템'; $lang['System'] = '시스템';
$lang['Tag'] = '태그'; $lang['Tag'] = '태그';
$lang['Text'] = '본문'; $lang['Text'] = '본문';
$lang['Time'] = '시간'; $lang['Time'] = '시간';
$lang['Type'] = '종류';
$lang['Update'] = '수정'; $lang['Update'] = '수정';
$lang['Username'] = '사용자명'; $lang['Username'] = '사용자명';
$lang['Wiki'] = '위키'; $lang['Wiki'] = '위키';
@ -68,6 +72,7 @@ $lang['MSG_NO_DIFF'] = '차이점이 없습니다';
$lang['MSG_NO_CODE_AVAIL'] = '소스코드가 없습니다'; $lang['MSG_NO_CODE_AVAIL'] = '소스코드가 없습니다';
$lang['MSG_NO_FILES_AVAIL'] = '파일이 없습니다'; $lang['MSG_NO_FILES_AVAIL'] = '파일이 없습니다';
$lang['MSG_NO_ISSUES_AVAIL'] = '이슈항목이 없습니다'; $lang['MSG_NO_ISSUES_AVAIL'] = '이슈항목이 없습니다';
$lang['MSG_NO_SUCH_ISSUE'] = '이슈항목이 없습니다';
$lang['MSG_NO_SUCH_PROJECT'] = '프로젝트가 없습니다'; $lang['MSG_NO_SUCH_PROJECT'] = '프로젝트가 없습니다';
$lang['MSG_NO_SUCH_WIKI_PAGE'] = '위키페이지가 없습니다'; $lang['MSG_NO_SUCH_WIKI_PAGE'] = '위키페이지가 없습니다';
$lang['MSG_NO_WIKIS_AVAIL'] = '사용가능한 위키페이지가 없습니다'; $lang['MSG_NO_WIKIS_AVAIL'] = '사용가능한 위키페이지가 없습니다';

View File

@ -37,12 +37,23 @@ class IssueModel extends Model
{ {
// TODO: check if userid can do this.. // TODO: check if userid can do this..
$this->db->trans_start (); $this->db->trans_start ();
$this->db->where ('projectid', $issue->projectid);
$this->db->select ('MAX(id) as maxid');
$query = $this->db->get ('issue');
$result = $query->result();
$maxid = (empty($result) || $result[0] == NULL)? 0: $result[0]->maxid;
$newid = $maxid + 1;
$this->db->set ('projectid', $issue->projectid); $this->db->set ('projectid', $issue->projectid);
$this->db->set ('id', $newid);
$this->db->set ('summary', $issue->summary); $this->db->set ('summary', $issue->summary);
$this->db->set ('type', $issue->type); $this->db->set ('type', $issue->type);
$this->db->set ('status', $issue->status); $this->db->set ('status', $issue->status);
$this->db->set ('owner', $issue->owner);
$this->db->set ('priority', $issue->priority);
$this->db->set ('description', $issue->description); $this->db->set ('description', $issue->description);
$this->db->set ('assignedto', $issue->assignedto);
$this->db->set ('createdon', date('Y-m-d H:i:s')); $this->db->set ('createdon', date('Y-m-d H:i:s'));
$this->db->set ('updatedon', date('Y-m-d H:i:s')); $this->db->set ('updatedon', date('Y-m-d H:i:s'));
$this->db->set ('createdby', $userid); $this->db->set ('createdby', $userid);
@ -54,12 +65,13 @@ class IssueModel extends Model
$this->db->set ('action', 'create'); $this->db->set ('action', 'create');
$this->db->set ('projectid', $issue->projectid); $this->db->set ('projectid', $issue->projectid);
$this->db->set ('userid', $userid); $this->db->set ('userid', $userid);
//$this->db->set ('message', 'LAST_INSERT_ID()'); $this->db->set ('message', $newid);
$this->db->set ('message', 'CONVERT(LAST_INSERT_ID(),CHAR)');
$this->db->insert ('log'); $this->db->insert ('log');
$this->db->trans_complete (); $this->db->trans_complete ();
return $this->db->trans_status(); if ($this->db->trans_status() === FALSE) return FALSE;
return $newid;
} }
function update ($userid, $issue) function update ($userid, $issue)
@ -72,7 +84,8 @@ class IssueModel extends Model
$this->db->set ('type', $issue->type); $this->db->set ('type', $issue->type);
$this->db->set ('status', $issue->status); $this->db->set ('status', $issue->status);
$this->db->set ('description', $issue->description); $this->db->set ('description', $issue->description);
$this->db->set ('assignedto', $issue->assignedto); $this->db->set ('owner', $issue->owner);
$this->db->set ('priority', $issue->priority);
$this->db->set ('updatedon', date('Y-m-d H:i:s')); $this->db->set ('updatedon', date('Y-m-d H:i:s'));
$this->db->set ('updatedby', $userid); $this->db->set ('updatedby', $userid);
$this->db->update ('issue'); $this->db->update ('issue');
@ -86,7 +99,9 @@ class IssueModel extends Model
$this->db->insert ('log'); $this->db->insert ('log');
$this->db->trans_complete (); $this->db->trans_complete ();
return $this->db->trans_status(); if ($this->db->trans_status() === FALSE) return FALSE;
return $issue->id;
} }
function delete ($userid, $issue) function delete ($userid, $issue)

View File

@ -13,8 +13,10 @@ www_DATA = \
file_show.php \ file_show.php \
footer.php \ footer.php \
index.html \ index.html \
issue_delete.php \
issue_edit.php \ issue_edit.php \
issue_home.php \ issue_home.php \
issue_show.php \
log.php \ log.php \
login.php \ login.php \
project_delete.php \ project_delete.php \

View File

@ -176,8 +176,10 @@ www_DATA = \
file_show.php \ file_show.php \
footer.php \ footer.php \
index.html \ index.html \
issue_delete.php \
issue_edit.php \ issue_edit.php \
issue_home.php \ issue_home.php \
issue_show.php \
log.php \ log.php \
login.php \ login.php \
project_delete.php \ project_delete.php \

View File

@ -20,11 +20,14 @@
<!----------------------------------------------------------------------------> <!---------------------------------------------------------------------------->
<?php <?php
if (!isset($project)) $project = NULL;
if (!isset($site)) $site = NULL;
$this->load->view ( $this->load->view (
'projectbar', 'projectbar',
array ( array (
'site' => NULL, 'site' => $site,
'project' => NULL, 'project' => $project,
'pageid' => '', 'pageid' => '',
'ctxmenuitems' => array () 'ctxmenuitems' => array ()
) )

View File

@ -0,0 +1,72 @@
<html>
<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" />
<title><title><?=htmlspecialchars($issue->id)?></title></title>
</head>
<body>
<div class="content" id="project_issue_delete_content">
<!---------------------------------------------------------------------------->
<?php $this->load->view ('taskbar'); ?>
<!---------------------------------------------------------------------------->
<?php
$this->load->view (
'projectbar',
array (
'site' => NULL,
'pageid' => 'issue',
'ctxmenuitems' => array ()
)
);
?>
<!---------------------------------------------------------------------------->
<div class="mainarea">
<?php if ($message != "") print '<div id="issue_delete_message" class="form_message">'.htmlspecialchars($message).'</div>'; ?>
<?=form_open("issue/delete/{$project->id}/".$this->converter->AsciiToHex($issue->id))?>
<?=form_fieldset()?>
<div>
<div>
<?=form_checkbox('issue_confirm', 'yes', set_checkbox('issue_confirm', $issue_confirm))?>
<?=$this->lang->line('MSG_SURE_TO_DELETE_THIS')?> - <?=htmlspecialchars($issue->id)?>
<?=form_error('issue_confirm')?>
</div>
</div>
<div>
<?=form_hidden('issue_projectid', set_value('issue_projectid', $issue->projectid))?>
<?=form_hidden('issue_id', set_value('issue_id', $issue->id))?>
</div>
<div>
<?=form_submit('issue', $this->lang->line('Delete'))?>
</div>
<?=form_fieldset_close()?>
<?=form_close();?>
</div> <!-- mainarea -->
<!---------------------------------------------------------------------------->
<?php $this->load->view ('footer'); ?>
<!---------------------------------------------------------------------------->
</div> <!-- project_issue_delete_content -->
</body>
</html>

View File

@ -4,7 +4,8 @@
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <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/common.css" />
<link type="text/css" rel="stylesheet" href="<?=base_url()?>/css/project.css" /> <link type="text/css" rel="stylesheet" href="<?=base_url()?>/css/project.css" />
<title><?=htmlspecialchars($issue->name)?></title>
<title><?=htmlspecialchars($issue->id)?></title>
</head> </head>
<body> <body>
@ -18,7 +19,6 @@
<!----------------------------------------------------------------------------> <!---------------------------------------------------------------------------->
<?php <?php
$hexname = $this->converter->AsciiToHex ($issue->name);
$this->load->view ( $this->load->view (
'projectbar', 'projectbar',
array ( array (
@ -35,29 +35,79 @@ $this->load->view (
<?php if ($message != "") print '<div id="issue_edit_message" class="form_message">'.htmlspecialchars($message).'</div>'; ?> <?php if ($message != "") print '<div id="issue_edit_message" class="form_message">'.htmlspecialchars($message).'</div>'; ?>
<?=form_open("issue/{$mode}/".$project->id.'/'.$this->converter->AsciiToHex($issue->name))?> <?=form_open("issue/{$mode}/{$project->id}/".$this->converter->AsciiToHex($issue->id))?>
<?=form_fieldset()?> <?=form_fieldset()?>
<div> <div>
<div> <div>
<?=form_label($this->lang->line('Name').': ', 'issue_name')?> <?=form_label($this->lang->line('ID').': ', 'issue_id')?>
<?=form_error('issue_name');?> <?=form_error('issue_id');?>
</div> </div>
<div> <div>
<?php <?php
$extra = ($mode == 'update')? 'readonly="readonly"': ''; $extra = ($mode == 'update')? 'readonly="readonly"': '';
$extra .= 'maxlength="80" size="40"'; $extra .= 'maxlength="80" size="40"';
?> ?>
<?=form_input('issue_name', set_value('issue_name', $issue->name), $extra)?> <?=form_input('issue_id', set_value('issue_id', $issue->id), $extra)?>
</div> </div>
</div> </div>
<div> <div>
<div> <div>
<?=form_label($this->lang->line('Text').': ', 'issue_text')?> <?=form_label($this->lang->line('Summary').': ', 'issue_summary')?>
<?=form_error('issue_text');?> <?=form_error('issue_summary');?>
</div> </div>
<div> <div>
<?=form_textarea('issue_text', set_value('issue_text', $issue->text))?> <?=form_input('issue_summary', set_value('issue_summary', $issue->summary))?>
</div>
</div>
<div>
<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"')?>
</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('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('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('Owner').': ', 'issue_owner')?>
<?=form_error('issue_owner');?>
</div>
<div>
<?=form_input('issue_owner', set_value('issue_owner', $issue->owner))?>
</div> </div>
</div> </div>

View File

@ -4,7 +4,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <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/common.css" />
<link type="text/css" rel="stylesheet" href="<?=base_url()?>/css/project.css" /> <link type="text/css" rel="stylesheet" href="<?=base_url()?>/css/project.css" />
<title><?=htmlspecialchars($project->name)?></title> <title><?=htmlspecialchars($project->id)?></title>
</head> </head>
<body> <body>
@ -46,8 +46,12 @@ else
print '<ul>'; print '<ul>';
foreach ($issues as $issue) foreach ($issues as $issue)
{ {
$hexname = $this->converter->AsciiToHex ($issue->name); $hexid = $this->converter->AsciiToHex ($issue->id);
print '<li>' . anchor ("issue/show/{$project->id}/{$hexname}", htmlspecialchars($issue->name)) .'</li>'; print '<li>';
print anchor ("issue/show/{$project->id}/{$hexid}", htmlspecialchars($issue->id));
print ': ';
print htmlspecialchars($issue->summary);
print '</li>';
} }
print '</ul>'; print '</ul>';
} }

View File

@ -0,0 +1,82 @@
<html>
<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" />
<script type="text/javascript" src="<?=base_url()?>/js/creole.js"></script>
<title><?=htmlspecialchars($issue->id)?></title>
</head>
<script type="text/javascript">
function render_wiki()
{
creole_render_wiki (
"project_issue_show_textpre",
"project_issue_show_textarea",
"<?=site_url()?>/issue/show/<?=$project->id?>/"
);
}
</script>
<body onLoad="render_wiki()">
<div class="content" id="project_issue_show_content">
<!---------------------------------------------------------------------------->
<?php $this->load->view ('taskbar'); ?>
<!---------------------------------------------------------------------------->
<?php
$hexname = $this->converter->AsciiToHex ($issue->id);
$this->load->view (
'projectbar',
array (
'site' => NULL,
'pageid' => 'issue',
'ctxmenuitems' => array (
array ("issue/create/{$project->id}", $this->lang->line('New')),
array ("issue/update/{$project->id}/{$hexname}", $this->lang->line('Edit')),
array ("issue/delete/{$project->id}/{$hexname}", $this->lang->line('Delete'))
)
)
);
?>
<!---------------------------------------------------------------------------->
<div class="mainarea" id="project_issue_show_mainarea">
<div class="title">
<?=$this->lang->line('Issue')?> <?=htmlspecialchars($issue->id)?>:
<?=htmlspecialchars($issue->summary)?>
</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)?>
</div>
<div id="project_issue_show_textarea">
<pre id="project_issue_show_textpre" style="visibility: hidden">
<?php print htmlspecialchars($issue->description); ?>
</pre>
</div> <!-- project_issue_show_textarea -->
</div> <!-- project_issue_show_mainarea -->
<!---------------------------------------------------------------------------->
<?php $this->load->view ('footer'); ?>
<!---------------------------------------------------------------------------->
</div> <!-- project_issue_show_content -->
</body>
</html>

View File

@ -133,6 +133,11 @@ $this->load->view (
$hex = $this->converter->AsciiToHex ($log['message']); $hex = $this->converter->AsciiToHex ($log['message']);
$uri = "/file/show/{$log['projectid']}/{$hex}"; $uri = "/file/show/{$log['projectid']}/{$hex}";
} }
else if ($log['type'] == 'issue')
{
$hex = $this->converter->AsciiToHex ($log['message']);
$uri = "/issue/show/{$log['projectid']}/{$hex}";
}
$trimmed = preg_replace("/(.{10}).+/u", "$1…", $log['message']); $trimmed = preg_replace("/(.{10}).+/u", "$1…", $log['message']);
if ($uri != '') if ($uri != '')

View File

@ -147,6 +147,11 @@ $this->load->view (
$hex = $this->converter->AsciiToHex ($log['message']); $hex = $this->converter->AsciiToHex ($log['message']);
$uri = "/file/show/{$log['projectid']}/{$hex}"; $uri = "/file/show/{$log['projectid']}/{$hex}";
} }
else if ($log['type'] == 'issue')
{
$hex = $this->converter->AsciiToHex ($log['message']);
$uri = "/issue/show/{$log['projectid']}/{$hex}";
}
$trimmed = preg_replace("/(.{20}).+/u", "$1…", $log['message']); $trimmed = preg_replace("/(.{20}).+/u", "$1…", $log['message']);
if ($uri != '') if ($uri != '')

View File

@ -160,6 +160,11 @@ foreach ($latest_projects as $project)
$hex = $this->converter->AsciiToHex ($log['message']); $hex = $this->converter->AsciiToHex ($log['message']);
$uri = "/file/show/{$log['projectid']}/{$hex}"; $uri = "/file/show/{$log['projectid']}/{$hex}";
} }
else if ($log['type'] == 'issue')
{
$hex = $this->converter->AsciiToHex ($log['message']);
$uri = "/issue/show/{$log['projectid']}/{$hex}";
}
$trimmed = preg_replace("/(.{15}).+/u", "$1…", $log['message']); $trimmed = preg_replace("/(.{15}).+/u", "$1…", $log['message']);
if ($uri != '') if ($uri != '')

View File

@ -39,8 +39,10 @@ function show_taskbar ($con, $loginid, $issysadmin)
print '<div class="boxa">'; print '<div class="boxa">';
print anchor ('site/home', $con->lang->line('Home')); print anchor ('site/home', $con->lang->line('Home'));
print anchor ('site/projectlist', $con->lang->line('Projects')); print anchor ('site/projectlist', $con->lang->line('Projects'));
/*
if ($issysadmin) if ($issysadmin)
print anchor ('site/admin', $con->lang->line('System')); print anchor ('site/admin', $con->lang->line('System'));
*/
print '</div>'; print '</div>';
print '</div>'; print '</div>';

View File

@ -18,7 +18,6 @@
<!----------------------------------------------------------------------------> <!---------------------------------------------------------------------------->
<?php <?php
$hexname = $this->converter->AsciiToHex ($wiki->name);
$this->load->view ( $this->load->view (
'projectbar', 'projectbar',
array ( array (
@ -35,7 +34,7 @@ $this->load->view (
<?php if ($message != "") print '<div id="wiki_edit_message" class="form_message">'.htmlspecialchars($message).'</div>'; ?> <?php if ($message != "") print '<div id="wiki_edit_message" class="form_message">'.htmlspecialchars($message).'</div>'; ?>
<?=form_open("wiki/{$mode}/".$project->id.'/'.$this->converter->AsciiToHex($wiki->name))?> <?=form_open("wiki/{$mode}/{$project->id}/".$this->converter->AsciiToHex($wiki->name))?>
<?=form_fieldset()?> <?=form_fieldset()?>
<div> <div>
<div> <div>

View File

@ -80,12 +80,12 @@ body {
.content .projectbar .ctxmenu { .content .projectbar .ctxmenu {
float: right; float: right;
padding-top: 0.1em 0em 0.1em 0em; padding: 0.1em 0em 0.1em 0em;
} }
.content .projectbar .fixedmenu { .content .projectbar .fixedmenu {
float: none; float: none;
padding-top: 0.1em 0em 0.1em 0em; padding: 0.1em 0em 0.1em 0em;
} }
.content .projectbar a { .content .projectbar a {
@ -236,7 +236,7 @@ body {
} }
.content .mainarea table tr td.code { .content .mainarea table tr td.code {
white-space: nowarp; white-space: nowrap;
} }
.content .mainarea table tr td.code pre { .content .mainarea table tr td.code pre {

View File

@ -14,7 +14,6 @@ www_DATA = \
diff.png \ diff.png \
e-node.png \ e-node.png \
exclamation.png \ exclamation.png \
favicon.ico \
file.png \ file.png \
filec.png \ filec.png \
filedb.png \ filedb.png \
@ -39,8 +38,7 @@ www_DATA = \
textbg.png \ textbg.png \
toggledown.png \ toggledown.png \
toggleup.png \ toggleup.png \
up.png \ up.png
xml.gif
EXTRA_DIST = $(www_DATA) EXTRA_DIST = $(www_DATA)

View File

@ -177,7 +177,6 @@ www_DATA = \
diff.png \ diff.png \
e-node.png \ e-node.png \
exclamation.png \ exclamation.png \
favicon.ico \
file.png \ file.png \
filec.png \ filec.png \
filedb.png \ filedb.png \
@ -202,8 +201,7 @@ www_DATA = \
textbg.png \ textbg.png \
toggledown.png \ toggledown.png \
toggleup.png \ toggleup.png \
up.png \ up.png
xml.gif
EXTRA_DIST = $(www_DATA) EXTRA_DIST = $(www_DATA)
all: all-am all: all-am

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 560 B

View File

@ -1,7 +1,7 @@
SUBDIRS = prettify SUBDIRS = prettify
wwwdir=$(WWWDIR)/js wwwdir=$(WWWDIR)/js
www_DATA = \ www_DATA = \
creole.js creole.js
EXTRA_DIST = $(www_DATA) EXTRA_DIST = $(www_DATA)