added the commitable field to a project

This commit is contained in:
hyung-hwan 2012-04-09 07:33:12 +00:00
parent d5d2aacf19
commit 6a5a585b21
9 changed files with 43 additions and 3 deletions

View File

@ -17,6 +17,7 @@ CREATE TABLE project (
name VARCHAR(255) UNIQUE NOT NULL, name VARCHAR(255) UNIQUE NOT NULL,
summary VARCHAR(255) NOT NULL, summary VARCHAR(255) NOT NULL,
description TEXT NOT NULL, description TEXT NOT NULL,
commitable CHAR(1) NOT NULL DEFAULT 'Y',
createdon DATETIME NOT NULL, createdon DATETIME NOT NULL,
updatedon DATETIME NOT NULL, updatedon DATETIME NOT NULL,

View File

@ -3,17 +3,17 @@
REPOBASE="`basename "${1}"`" REPOBASE="`basename "${1}"`"
USER="${2}" USER="${2}"
ans="`wget -q -O- "%API%/projectHasMember/${REPOBASE}/${USER}" 2>/dev/null`" ans="`wget -q -O- "%API%/projectIsCommitable/${REPOBASE}/${USER}" 2>/dev/null`"
[ "${ans}" = "YES" ] && exit 0 [ "${ans}" = "YES" ] && exit 0
[ "${ans}" = "NO" ] && { [ "${ans}" = "NO" ] && {
echo "-------------------------------------------------------------" >&2 echo "-------------------------------------------------------------" >&2
echo " ${USER} is not a member of ${REPOBASE}" >&2 echo " ${REPOBASE} is read-only or ${USER} is not a member of ${REPOBASE}" >&2
echo "-------------------------------------------------------------" >&2 echo "-------------------------------------------------------------" >&2
exit 1 exit 1
} }
echo "---------------------------------------------------------------------" >&2 echo "---------------------------------------------------------------------" >&2
echo " Failed to check membership of ${REPOBASE} for ${USER}" >&2 echo " Failed to check commitability of ${REPOBASE} for ${USER}" >&2
echo "---------------------------------------------------------------------" >&2 echo "---------------------------------------------------------------------" >&2
exit 1 exit 1

View File

@ -34,6 +34,18 @@ class API extends Controller
print ($this->projects->projectIsOwnedBy ($projectid, $userid) === FALSE)? 'NO': 'YES'; print ($this->projects->projectIsOwnedBy ($projectid, $userid) === FALSE)? 'NO': 'YES';
} }
function projectIsCommitable ($projectid, $userid)
{
$this->check_access ();
if (!isset($projectid) || !isset($userid)) return 'NO';
$this->load->model ('ProjectModel', 'projects');
print ($this->projects->projectIsOwnedBy ($projectid, $userid) === FALSE ||
$this->projects->projectIsCommitable ($projectid) === FALSE)? 'NO': 'YES';
}
function logCodeCommit ($type, $repo, $rev) function logCodeCommit ($type, $repo, $rev)
{ {
$this->check_access (); $this->check_access ();

View File

@ -168,6 +168,8 @@ class Project extends Controller
'project_summary', 'summary', 'required|max_length[255]'); 'project_summary', 'summary', 'required|max_length[255]');
$this->form_validation->set_rules ( $this->form_validation->set_rules (
'project_description', 'description', 'required'); 'project_description', 'description', 'required');
$this->form_validation->set_rules (
'project_commitable', 'commitable', 'alpha');
$this->form_validation->set_rules ( $this->form_validation->set_rules (
'project_members', 'members', 'required'); 'project_members', 'members', 'required');
$this->form_validation->set_error_delimiters( $this->form_validation->set_error_delimiters(
@ -187,6 +189,7 @@ class Project extends Controller
$project->name = $this->input->post('project_name'); $project->name = $this->input->post('project_name');
$project->summary = $this->input->post('project_summary'); $project->summary = $this->input->post('project_summary');
$project->description = $this->input->post('project_description'); $project->description = $this->input->post('project_description');
$project->commitable = $this->input->post('project_commitable');
$project->members = $this->input->post('project_members'); $project->members = $this->input->post('project_members');
// validate the form // validate the form
@ -244,6 +247,7 @@ class Project extends Controller
$project->name = ''; $project->name = '';
$project->summary = ''; $project->summary = '';
$project->description = ''; $project->description = '';
$project->commitable = 'Y';
$project->members = $login['id']; $project->members = $login['id'];
$this->_edit_project ($project, 'create', $login); $this->_edit_project ($project, 'create', $login);

View File

@ -11,6 +11,7 @@ $lang['Change log'] = 'Change log';
$lang['Code'] = 'Code'; $lang['Code'] = 'Code';
$lang['Code changes'] = 'Code changes'; $lang['Code changes'] = 'Code changes';
$lang['Comment'] = 'Comment'; $lang['Comment'] = 'Comment';
$lang['Commitable'] = 'Commitable';
$lang['Create'] = 'Create'; $lang['Create'] = 'Create';
$lang['Created by'] = 'Created by'; $lang['Created by'] = 'Created by';
$lang['Created on'] = 'Created on'; $lang['Created on'] = 'Created on';

View File

@ -9,6 +9,7 @@ $lang['Change log'] = 'Change log';
$lang['Code'] = 'Kode'; $lang['Code'] = 'Kode';
$lang['Code changes'] = 'Kode changes' $lang['Code changes'] = 'Kode changes'
$lang['Comment'] = 'Comment'; $lang['Comment'] = 'Comment';
$lang['Commitable'] = 'Commitable';
$lang['Create'] = 'Dibuat'; $lang['Create'] = 'Dibuat';
$lang['Created by'] = 'Dibuat oleh'; $lang['Created by'] = 'Dibuat oleh';
$lang['Created on'] = 'Waktu dibuat'; $lang['Created on'] = 'Waktu dibuat';

View File

@ -11,6 +11,7 @@ $lang['Change log'] = '변경기록';
$lang['Code'] = '코드'; $lang['Code'] = '코드';
$lang['Code changes'] = '코드변경'; $lang['Code changes'] = '코드변경';
$lang['Comment'] = '소견'; $lang['Comment'] = '소견';
$lang['Commitable'] = '커밋가능';
$lang['Create'] = '생성'; $lang['Create'] = '생성';
$lang['Created by'] = '최초생성인'; $lang['Created by'] = '최초생성인';
$lang['Created on'] = '최초생성시간'; $lang['Created on'] = '최초생성시간';

View File

@ -99,6 +99,7 @@ class ProjectModel extends Model
$this->db->set ('name', $project->name); $this->db->set ('name', $project->name);
$this->db->set ('summary', $project->summary); $this->db->set ('summary', $project->summary);
$this->db->set ('description', $project->description); $this->db->set ('description', $project->description);
$this->db->set ('commitable', $project->commitable);
$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 ('createdby', $userid); $this->db->set ('createdby', $userid);
$this->db->set ('updatedon', date('Y-m-d H:i:s')); $this->db->set ('updatedon', date('Y-m-d H:i:s'));
@ -207,6 +208,7 @@ class ProjectModel extends Model
$this->db->set ('name', $project->name); $this->db->set ('name', $project->name);
$this->db->set ('summary', $project->summary); $this->db->set ('summary', $project->summary);
$this->db->set ('description', $project->description); $this->db->set ('description', $project->description);
$this->db->set ('commitable', $project->commitable);
$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 ('project'); $this->db->update ('project');
@ -422,6 +424,16 @@ class ProjectModel extends Model
return ($count == 1)? TRUE: FALSE; return ($count == 1)? TRUE: FALSE;
} }
function projectIsCommitable ($projectid)
{
$this->db->trans_start ();
$this->db->where ('id', $projectid);
$this->db->where ('commitable', 'Y');
$count = $this->db->count_all_results ('project');
$this->db->trans_complete ();
if ($this->db->trans_status() === FALSE) return FALSE;
return ($count == 1)? TRUE: FALSE;
}
function _delete_files_uploaded ($files) function _delete_files_uploaded ($files)
{ {

View File

@ -104,6 +104,14 @@ $this->load->view (
</div> </div>
</div> </div>
<div>
<div>
<?=form_label($this->lang->line('Commitable').': ', 'project_commitable')?>
<?=form_checkbox('project_commitable', 'Y', set_checkbox('project_commitable', $project->commitable, $project->commitable == 'Y'))?>
<?=form_error('project_commitable')?>
</div>
</div>
<div> <div>
<div> <div>
<?=form_label($this->lang->line('Members').': ', 'project_members')?> <?=form_label($this->lang->line('Members').': ', 'project_members')?>