* Creating releases.
This commit is contained in:
@ -217,9 +217,34 @@ sub releases : Chained('project') PathPart('releases') Args(0) {
|
||||
}
|
||||
|
||||
|
||||
sub create_release : Chained('project') PathPart('releases/create') {
|
||||
sub create_release : Chained('project') PathPart('create-release') Args(0) {
|
||||
my ($self, $c) = @_;
|
||||
$c->stash->{template} = 'create-release.tt';
|
||||
requireProjectOwner($c, $c->stash->{project});
|
||||
$c->stash->{template} = 'edit-release.tt';
|
||||
$c->stash->{create} = 1;
|
||||
}
|
||||
|
||||
|
||||
sub create_release_submit : Chained('project') PathPart('create-release/submit') Args(0) {
|
||||
my ($self, $c) = @_;
|
||||
|
||||
requireProjectOwner($c, $c->stash->{project});
|
||||
|
||||
my $releaseName = $c->request->params->{name};
|
||||
|
||||
my $release;
|
||||
txn_do($c->model('DB')->schema, sub {
|
||||
# Note: $releaseName is validated in updateRelease, which will
|
||||
# abort the transaction if the name isn't valid.
|
||||
$release = $c->stash->{project}->releases->create(
|
||||
{ name => $releaseName
|
||||
, timestamp => time
|
||||
});
|
||||
Hydra::Controller::Release::updateRelease($c, $release);
|
||||
});
|
||||
|
||||
$c->res->redirect($c->uri_for($c->controller('Release')->action_for('view'),
|
||||
[$c->stash->{project}->name, $release->name]));
|
||||
}
|
||||
|
||||
|
||||
|
37
src/lib/Hydra/Controller/Release.pm
Normal file
37
src/lib/Hydra/Controller/Release.pm
Normal file
@ -0,0 +1,37 @@
|
||||
package Hydra::Controller::Release;
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
use base 'Catalyst::Controller';
|
||||
use Hydra::Helper::Nix;
|
||||
use Hydra::Helper::CatalystUtils;
|
||||
|
||||
|
||||
sub release : Chained('/') PathPart('release') CaptureArgs(2) {
|
||||
my ($self, $c, $projectName, $releaseName) = @_;
|
||||
#$c->stash->{project} = $project;
|
||||
#$c->stash->{release} = $view;
|
||||
}
|
||||
|
||||
|
||||
sub view : Chained('release') PathPart('') Args(0) {
|
||||
my ($self, $c) = @_;
|
||||
$c->stash->{template} = 'release.tt';
|
||||
}
|
||||
|
||||
|
||||
sub updateRelease {
|
||||
my ($c, $release) = @_;
|
||||
|
||||
my $releaseName = trim $c->request->params->{name};
|
||||
error($c, "Invalid release name: $releaseName")
|
||||
unless $releaseName =~ /^[[:alpha:]][\w\-]*$/;
|
||||
|
||||
$release->update(
|
||||
{ name => $releaseName
|
||||
, description => trim $c->request->params->{description}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
1;
|
Reference in New Issue
Block a user