Make the monotone master branch editable on forge level at least to
make it possible to switch the default project branch (partially fixes issue 560)
This commit is contained in:
parent
e6f255bc56
commit
b4bc6abace
@ -37,6 +37,8 @@ class IDF_Form_Admin_ProjectUpdate extends Pluf_Form
|
|||||||
{
|
{
|
||||||
$this->project = $extra['project'];
|
$this->project = $extra['project'];
|
||||||
$members = $this->project->getMembershipData('string');
|
$members = $this->project->getMembershipData('string');
|
||||||
|
$conf = $this->project->getConf();
|
||||||
|
|
||||||
$this->fields['name'] = new Pluf_Form_Field_Varchar(
|
$this->fields['name'] = new Pluf_Form_Field_Varchar(
|
||||||
array('required' => true,
|
array('required' => true,
|
||||||
'label' => __('Name'),
|
'label' => __('Name'),
|
||||||
@ -45,12 +47,22 @@ class IDF_Form_Admin_ProjectUpdate extends Pluf_Form
|
|||||||
|
|
||||||
$this->fields['shortdesc'] = new Pluf_Form_Field_Varchar(
|
$this->fields['shortdesc'] = new Pluf_Form_Field_Varchar(
|
||||||
array('required' => true,
|
array('required' => true,
|
||||||
'label' => __('short description'),
|
'label' => __('Short description'),
|
||||||
'help_text' => __('A one line description of the project.'),
|
'help_text' => __('A one line description of the project.'),
|
||||||
'initial' => $this->project->shortdesc,
|
'initial' => $this->project->shortdesc,
|
||||||
'widget_attrs' => array('size' => '35'),
|
'widget_attrs' => array('size' => '35'),
|
||||||
));
|
));
|
||||||
|
|
||||||
|
if ($this->project->getConf()->getVal('scm') == 'mtn') {
|
||||||
|
$this->fields['mtn_master_branch'] = new Pluf_Form_Field_Varchar(
|
||||||
|
array('required' => false,
|
||||||
|
'label' => __('Master branch'),
|
||||||
|
'initial' => $conf->getVal('mtn_master_branch'),
|
||||||
|
'widget_attrs' => array('size' => '35'),
|
||||||
|
'help_text' => __('This should be a world-wide unique identifier for your project. A reverse DNS notation like "com.my-domain.my-project" is a good idea.'),
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
$this->fields['owners'] = new Pluf_Form_Field_Varchar(
|
$this->fields['owners'] = new Pluf_Form_Field_Varchar(
|
||||||
array('required' => false,
|
array('required' => false,
|
||||||
'label' => __('Project owners'),
|
'label' => __('Project owners'),
|
||||||
@ -69,6 +81,30 @@ class IDF_Form_Admin_ProjectUpdate extends Pluf_Form
|
|||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function clean_mtn_master_branch()
|
||||||
|
{
|
||||||
|
$mtn_master_branch = mb_strtolower($this->cleaned_data['mtn_master_branch']);
|
||||||
|
if (!preg_match('/^([\w\d]+([-][\w\d]+)*)(\.[\w\d]+([-][\w\d]+)*)*$/',
|
||||||
|
$mtn_master_branch)) {
|
||||||
|
throw new Pluf_Form_Invalid(__(
|
||||||
|
'The master branch is empty or contains illegal characters, '.
|
||||||
|
'please use only letters, digits, dashs and dots as separators.'
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
$sql = new Pluf_SQL('vkey=%s AND vdesc=%s AND project!=%s',
|
||||||
|
array('mtn_master_branch', $mtn_master_branch,
|
||||||
|
(string)$this->project->id));
|
||||||
|
$l = Pluf::factory('IDF_Conf')->getList(array('filter'=>$sql->gen()));
|
||||||
|
if ($l->count() > 0) {
|
||||||
|
throw new Pluf_Form_Invalid(__(
|
||||||
|
'This master branch is already used. Please select another one.'
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
return $mtn_master_branch;
|
||||||
|
}
|
||||||
|
|
||||||
public function clean_owners()
|
public function clean_owners()
|
||||||
{
|
{
|
||||||
return IDF_Form_MembersConf::checkBadLogins($this->cleaned_data['owners']);
|
return IDF_Form_MembersConf::checkBadLogins($this->cleaned_data['owners']);
|
||||||
@ -84,12 +120,19 @@ class IDF_Form_Admin_ProjectUpdate extends Pluf_Form
|
|||||||
if (!$this->isValid()) {
|
if (!$this->isValid()) {
|
||||||
throw new Exception(__('Cannot save the model from an invalid form.'));
|
throw new Exception(__('Cannot save the model from an invalid form.'));
|
||||||
}
|
}
|
||||||
IDF_Form_MembersConf::updateMemberships($this->project,
|
IDF_Form_MembersConf::updateMemberships($this->project,
|
||||||
$this->cleaned_data);
|
$this->cleaned_data);
|
||||||
$this->project->membershipsUpdated();
|
$this->project->membershipsUpdated();
|
||||||
$this->project->name = $this->cleaned_data['name'];
|
$this->project->name = $this->cleaned_data['name'];
|
||||||
$this->project->shortdesc = $this->cleaned_data['shortdesc'];
|
$this->project->shortdesc = $this->cleaned_data['shortdesc'];
|
||||||
$this->project->update();
|
$this->project->update();
|
||||||
|
|
||||||
|
$keys = array('mtn_master_branch');
|
||||||
|
foreach ($keys as $key) {
|
||||||
|
if (!empty($this->cleaned_data[$key])) {
|
||||||
|
$this->project->getConf()->setVal($key, $this->cleaned_data[$key]);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -128,7 +128,7 @@ class IDF_Views_Project
|
|||||||
public function timeline($request, $match)
|
public function timeline($request, $match)
|
||||||
{
|
{
|
||||||
$prj = $request->project;
|
$prj = $request->project;
|
||||||
|
|
||||||
$model_filter = @$match[2];
|
$model_filter = @$match[2];
|
||||||
$all_model_filters = self::getAvailableModelFilters();
|
$all_model_filters = self::getAvailableModelFilters();
|
||||||
if (!array_key_exists($model_filter, $all_model_filters)) {
|
if (!array_key_exists($model_filter, $all_model_filters)) {
|
||||||
@ -156,7 +156,7 @@ class IDF_Views_Project
|
|||||||
$pag->items_per_page = 20;
|
$pag->items_per_page = 20;
|
||||||
$pag->no_results_text = __('No changes were found.');
|
$pag->no_results_text = __('No changes were found.');
|
||||||
$pag->setFromRequest($request);
|
$pag->setFromRequest($request);
|
||||||
|
|
||||||
if (!$request->user->isAnonymous() and $prj->isRestricted()) {
|
if (!$request->user->isAnonymous() and $prj->isRestricted()) {
|
||||||
$feedurl = Pluf_HTTP_URL_urlForView('idf_project_timeline_feed_auth',
|
$feedurl = Pluf_HTTP_URL_urlForView('idf_project_timeline_feed_auth',
|
||||||
array($prj->shortname,
|
array($prj->shortname,
|
||||||
@ -198,7 +198,7 @@ class IDF_Views_Project
|
|||||||
$model_filter = 'all';
|
$model_filter = 'all';
|
||||||
}
|
}
|
||||||
$title = $all_model_filters[$model_filter];
|
$title = $all_model_filters[$model_filter];
|
||||||
|
|
||||||
$classes = self::determineModelClasses($request, $model_filter);
|
$classes = self::determineModelClasses($request, $model_filter);
|
||||||
$sqls = sprintf('model_class IN (%s)', implode(', ', $classes));
|
$sqls = sprintf('model_class IN (%s)', implode(', ', $classes));
|
||||||
$sql = new Pluf_SQL('project=%s AND '.$sqls, array($prj->id));
|
$sql = new Pluf_SQL('project=%s AND '.$sqls, array($prj->id));
|
||||||
|
@ -25,6 +25,15 @@
|
|||||||
<span class="helptext">{$form.f.shortdesc.help_text}</span>
|
<span class="helptext">{$form.f.shortdesc.help_text}</span>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
{if $project.getConf().getVal('scm') == 'mtn'}
|
||||||
|
<tr class="mtn-form">
|
||||||
|
<th><strong>{$form.f.mtn_master_branch.labelTag}:</strong></th>
|
||||||
|
<td>{if $form.f.mtn_master_branch.errors}{$form.f.mtn_master_branch.fieldErrors}{/if}
|
||||||
|
{$form.f.mtn_master_branch|unsafe}<br />
|
||||||
|
<span class="helptext">{$form.f.mtn_master_branch.help_text}</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
{/if}
|
||||||
<tr>
|
<tr>
|
||||||
<th><strong>{$form.f.owners.labelTag}:</strong></th>
|
<th><strong>{$form.f.owners.labelTag}:</strong></th>
|
||||||
<td>
|
<td>
|
||||||
@ -44,7 +53,7 @@
|
|||||||
<td> </td>
|
<td> </td>
|
||||||
<td> {aurl 'url', 'IDF_Views_Admin::projectDelete', array($project.id)}
|
<td> {aurl 'url', 'IDF_Views_Admin::projectDelete', array($project.id)}
|
||||||
{* float left is a fix for Firefox < 3.5 *}
|
{* float left is a fix for Firefox < 3.5 *}
|
||||||
<span style="float: left;"><input type="submit" value="{trans 'Update Project'}" name="submit" />
|
<span style="float: left;"><input type="submit" value="{trans 'Update Project'}" name="submit" />
|
||||||
| <a href="{url 'IDF_Views_Admin::projects'}">{trans 'Cancel'}</a></span> {if $isAdmin}
|
| <a href="{url 'IDF_Views_Admin::projects'}">{trans 'Cancel'}</a></span> {if $isAdmin}
|
||||||
<span class="dellink"><a href="{$url}" title="{trans 'Delete this project'}"><img src="{media '/idf/img/trash.png'}" style="vertical-align: text-bottom;" alt="{trans 'Trash'}" /></a> <a href="{$url}" title="{trans 'Delete this project'}">{trans 'Delete this project'}</a><br /><span class="note helptext">{trans 'You will be asked to confirm.'}</span></span>{/if}
|
<span class="dellink"><a href="{$url}" title="{trans 'Delete this project'}"><img src="{media '/idf/img/trash.png'}" style="vertical-align: text-bottom;" alt="{trans 'Trash'}" /></a> <a href="{$url}" title="{trans 'Delete this project'}">{trans 'Delete this project'}</a><br /><span class="note helptext">{trans 'You will be asked to confirm.'}</span></span>{/if}
|
||||||
</td>
|
</td>
|
||||||
|
Loading…
Reference in New Issue
Block a user