Adding projectrequest files
This commit is contained in:
parent
f62d20f0d1
commit
2f981e42e5
72
indefero/src/IDF/Form/ProjectRequest.php
Normal file
72
indefero/src/IDF/Form/ProjectRequest.php
Normal file
@ -0,0 +1,72 @@
|
||||
<?php
|
||||
class IDF_Form_ProjectRequest extends Pluf_Form
|
||||
{
|
||||
public $user = null;
|
||||
|
||||
public function initFields($extra=array())
|
||||
{
|
||||
|
||||
$choices = array();
|
||||
$options = array(
|
||||
'git' => __('git'),
|
||||
'svn' => __('Subversion'),
|
||||
'mercurial' => __('mercurial'),
|
||||
'mtn' => __('monotone'),
|
||||
);
|
||||
foreach (Pluf::f('allowed_scm', array()) as $key => $class) {
|
||||
$choices[$options[$key]] = $key;
|
||||
}
|
||||
|
||||
$this->fields['shortname'] = new Pluf_Form_Field_Varchar(
|
||||
array('required' => true,
|
||||
'label' => __('Name'),
|
||||
'initial' => '',
|
||||
'help_text' => __('This will be the name of your repo and of your project - however - you can change the project name later.'),
|
||||
));
|
||||
|
||||
$this->fields['repotype'] = new Pluf_Form_Field_Varchar(
|
||||
array('required' => true,
|
||||
'label' => __('Repository type'),
|
||||
'initial' => 'git',
|
||||
'widget_attrs' => array('choices' => $choices),
|
||||
'widget' => 'Pluf_Form_Widget_SelectInput',
|
||||
));
|
||||
|
||||
$this->fields['desc'] = new Pluf_Form_Field_Varchar(
|
||||
array('required' => true,
|
||||
'label' => __('Short description'),
|
||||
'help_text' => __('A one line description of the project.'),
|
||||
'initial' => '',
|
||||
'widget_attrs' => array('size' => '35'),
|
||||
));
|
||||
|
||||
$this->user = $extra['user'];
|
||||
}
|
||||
|
||||
|
||||
function save($commit=true)
|
||||
{
|
||||
if (!$this->isValid()) {
|
||||
throw new Exception(__('Cannot save the model from an invalid form.'));
|
||||
}
|
||||
|
||||
$checksql = new Pluf_SQL(sprintf("shortname='%s'", $this->cleaned_data['shortname']));
|
||||
$requestcheck = Pluf::factory("IDF_Project")->getCount(array('filter'=>$checksql->gen()));
|
||||
if ($requestcheck == 1)
|
||||
return false;
|
||||
try
|
||||
{
|
||||
$request = new IDF_ProjectRequest();
|
||||
$request->shortname = $this->cleaned_data['shortname'];
|
||||
$request->repotype = $this->cleaned_data['repotype'];
|
||||
$request->desc = $this->cleaned_data['desc'];
|
||||
$request->submitter = $this->user;
|
||||
$request->create();
|
||||
return true;
|
||||
} catch (Exception $e)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
85
indefero/src/IDF/ProjectRequest.php
Normal file
85
indefero/src/IDF/ProjectRequest.php
Normal file
@ -0,0 +1,85 @@
|
||||
<?php
|
||||
/*
|
||||
* This is the model for people to request a repo
|
||||
* An administrator can then approve/deny the repo
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
class IDF_ProjectRequest extends Pluf_Model
|
||||
{
|
||||
public $_model = __CLASS__;
|
||||
|
||||
function init()
|
||||
{
|
||||
$this->_a['table'] = 'idf_projectrequest';
|
||||
$this->_a['model'] = __CLASS__;
|
||||
|
||||
$this->_a['cols'] = array(
|
||||
// It is mandatory to have an "id" column.
|
||||
'id' =>
|
||||
array(
|
||||
'type' => 'Pluf_DB_Field_Sequence',
|
||||
'blank' => true,
|
||||
),
|
||||
'shortname' =>
|
||||
array(
|
||||
'type' => 'Pluf_DB_Field_Varchar',
|
||||
'blank' => false,
|
||||
'size' => 50,
|
||||
'verbose' => __('shortname'),
|
||||
'unique' => true,
|
||||
),
|
||||
'repotype' =>
|
||||
array(
|
||||
'type' => 'Pluf_DB_Field_Varchar',
|
||||
'blank' => false,
|
||||
'size' => 25,
|
||||
'verbose' => __('Repository Type'),
|
||||
),
|
||||
'desc' =>
|
||||
array(
|
||||
'type' => 'Pluf_DB_Field_Varchar',
|
||||
'blank' => false,
|
||||
'size' => 250,
|
||||
'verbose' => __('Description'),
|
||||
),
|
||||
'creation_dtime' =>
|
||||
array(
|
||||
'type' => 'Pluf_DB_Field_Datetime',
|
||||
'blank' => true,
|
||||
'verbose' => __('creation date'),
|
||||
),
|
||||
'submitter' =>
|
||||
array(
|
||||
'type' => 'Pluf_DB_Field_Foreignkey',
|
||||
'model' => 'Pluf_User',
|
||||
'blank' => false,
|
||||
'verbose' => __('submitter'),
|
||||
));
|
||||
}
|
||||
|
||||
/**
|
||||
* String representation of the abstract.
|
||||
*/
|
||||
function __toString()
|
||||
{
|
||||
return $this->shortname;
|
||||
}
|
||||
|
||||
/**
|
||||
* String ready for indexation.
|
||||
*/
|
||||
function _toIndex()
|
||||
{
|
||||
return '';
|
||||
}
|
||||
|
||||
function preSave($create=false)
|
||||
{
|
||||
if ($this->id == '') {
|
||||
$this->creation_dtime = gmdate('Y-m-d H:i:s');
|
||||
}
|
||||
|
||||
}
|
||||
}
|
60
indefero/src/IDF/templates/idf/admin/approveprojects.html
Normal file
60
indefero/src/IDF/templates/idf/admin/approveprojects.html
Normal file
@ -0,0 +1,60 @@
|
||||
{extends "idf/gadmin/base.html"}
|
||||
{block request} class="active"{/block}
|
||||
|
||||
{block body}
|
||||
{if $createdtext}
|
||||
{$createdtext}
|
||||
<br/>
|
||||
<br/>
|
||||
{/if}
|
||||
{if $errors}
|
||||
{foreach $errors as $error}
|
||||
{$error}
|
||||
{/foreach}
|
||||
{/if}
|
||||
<table>
|
||||
<tr>
|
||||
<th>
|
||||
Short Name
|
||||
</th>
|
||||
<th>
|
||||
Description
|
||||
</th>
|
||||
<th>
|
||||
Repotype
|
||||
</th>
|
||||
<th>
|
||||
Submitter
|
||||
</th>
|
||||
<th>
|
||||
Date
|
||||
</th>
|
||||
<th>
|
||||
Approve
|
||||
</th>
|
||||
</tr>
|
||||
{foreach $requests as $req}
|
||||
<tr>
|
||||
<td>
|
||||
{$req.shortname}
|
||||
</td>
|
||||
<td>
|
||||
{$req.desc}
|
||||
</td>
|
||||
<td>
|
||||
{$req.repotype}
|
||||
</td>
|
||||
<td>
|
||||
{$req.get_submitter.login}
|
||||
</td>
|
||||
<td>
|
||||
{$req.creation_dtime}
|
||||
</td>
|
||||
<td>
|
||||
<a href="{url 'IDF_Views_Admin::projectRequestCreate'}{$req.id}/">Approve</a>
|
||||
</td>
|
||||
</tr>
|
||||
{/foreach}
|
||||
</table>
|
||||
|
||||
{/block}
|
10
indefero/src/IDF/templates/idf/admin/request-email.txt
Normal file
10
indefero/src/IDF/templates/idf/admin/request-email.txt
Normal file
@ -0,0 +1,10 @@
|
||||
Hello {$user},
|
||||
|
||||
You are receiving this email because you have requested a repository.
|
||||
Your request for {$shortname|safe} was approved!
|
||||
|
||||
If you have any questions please feel free to email a member of the development team.
|
||||
|
||||
Yours faithfully,
|
||||
The development team.
|
||||
|
60
indefero/src/IDF/templates/idf/user/projectrequest.html
Normal file
60
indefero/src/IDF/templates/idf/user/projectrequest.html
Normal file
@ -0,0 +1,60 @@
|
||||
{extends "idf/base-simple.html"}
|
||||
{block body}
|
||||
|
||||
{if $form.errors}
|
||||
<div class="px-message-error">
|
||||
<p>{trans 'Oops, please check the errors on the form.'}</p>
|
||||
{if $form.get_top_errors}
|
||||
{$form.render_top_errors|unsafe}
|
||||
{/if}
|
||||
</div>
|
||||
{/if}
|
||||
{if $success}
|
||||
<div>
|
||||
<p>
|
||||
Thank you - your request has been received and will be approved by an admin shortly.
|
||||
</p>
|
||||
</div>
|
||||
{/if}
|
||||
{if $error}
|
||||
<div class="px-message-error">
|
||||
{$error}
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
<form method="post" action=".">
|
||||
<table class="form" summary="">
|
||||
<tr>
|
||||
<th><strong>{$form.f.shortname.labelTag}:</strong></th>
|
||||
<td>{if $form.f.shortname.errors}{$form.f.shortname.fieldErrors}{/if}
|
||||
{$form.f.shortname|unsafe}<br />
|
||||
<span class="helptext">{$form.f.shortname.help_text}</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><strong>{$form.f.repotype.labelTag}:</strong></th>
|
||||
<td>{if $form.f.repotype.errors}{$form.f.repotype.fieldErrors}{/if}
|
||||
{$form.f.repotype|unsafe}<br />
|
||||
<span class="helptext">{$form.f.repotype.help_text}</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><strong>{$form.f.desc.labelTag}:</strong></th>
|
||||
<td>{if $form.f.desc.errors}{$form.f.desc.fieldErrors}{/if}
|
||||
{$form.f.desc|unsafe}<br />
|
||||
<span class="helptext">{$form.f.desc.help_text}</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td> </td>
|
||||
<td><input type="submit" value="Request Project" name="submit" /></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
</form>
|
||||
|
||||
{/block}
|
||||
{block context}
|
||||
|
||||
|
||||
{/block}
|
Loading…
Reference in New Issue
Block a user