2AUODJBTW2UJ47UB3SREZ7O7UTTJDQ4AGUQMPZAI4F3Y6BUF6LUQC HCKFTNQ6J62JYGWKRSO2523L67JXRKG64NFHUMTHDO2JXIDVUIHQC L2E6EVE2RVFVDCUNRJ4CZYSQNS2DZUA5DTBETHBDUQUV2KQQRAOQC K5BEBWKMPMTXDZTZECMJ32LCL354WMOM3RPEFWGHJFB3QH7FH6WAC J5UVLXOK6EDIL5I7VKWH4V2QDS4DPD7FHRK6XBWSXFRQS4JKXFZQC LQNBKF3DKVYK3NPDGK7OLOTIWIF4HR3EKLRYNLZJB4G3NMIVBCEAC JD27RBKM7ROBUKBEQDFSCPO3MDE2AFZ6DSSKFUPJ7IC2MCGDVFGAC UVMFS73TI6RARMAAGY2UVS5LCPZUKLQECXQQVER4F7S4BNUXQQ3AC 7LKUAIGCURNGNBBOAGK4EYIUF6KNWHJNLA6ZJEXFLA5HUADAJP6QC TQKGQ5R36VOLLJ3SR2WWIQ6VSN245N3QG4JHI2ZCP5T6RXN3PJWAC PBFZEQLZXMOBQIWL5WQWH7D62XG6M7ROEEAH6PWAKKKOM3W5I3RQC 7YBYT2LQML2PKEO6UO4444AGSASS664UCDXW2YO3ALB7THQHCEBQC X27GNHDV5KPZ5GSH6DCAJMNCEMZLCP7M43JWF2X3O5QWXMOX273AC M552HLIAP52D42AVXVC5SGROAYN2TBCEUZOXESWEMBBUX7G3U6TAC N22GPKYTOLZLBGTGDATQDVZ4R5APZEAOIA7L32X4UXBH4XNI7MWAC }sub updateProject {my ($c, $project) = @_;my $projectName = $c->request->params->{name};die "Invalid project name: $projectName" unless $projectName =~ /^[[:alpha:]]\w*$/;my $displayName = $c->request->params->{displayname};die "Invalid display name: $displayName" unless $displayName =~ /^\w.*\w$/;$project->name($projectName);$project->displayname($displayName);$project->description($c->request->params->{description});$project->update;
my $isPosted = $c->request->method eq "POST";$subcommand = "" unless defined $subcommand;if ($subcommand eq "edit") {$c->stash->{edit} = 1;} elsif ($subcommand eq "submit" && $isPosted) {$c->model('DB')->schema->txn_do(sub {updateProject($c, $project);});return $c->res->redirect($c->uri_for("/project", $projectName));} elsif ($subcommand eq "delete" && $isPosted) {$c->model('DB')->schema->txn_do(sub {$project->delete;});return $c->res->redirect($c->uri_for("/"));} elsif ($subcommand eq "") {} else {return error($c, "Unknown subcommand $subcommand.");}
if (defined $subcommand && $subcommand eq "submit") {eval {my $projectName = $c->request->params->{name};$c->model('DB')->schema->txn_do(sub {# Note: $projectName is validated in updateProject,# which will abort the transaction if the name isn't# valid.my $project = $c->model('DB::Projects')->create({name => $projectName, displayname => ""});updateProject($c, $project);});return $c->res->redirect($c->uri_for("/project", $projectName));};if ($@) {return error($c, $@);}}$c->stash->{template} = 'project.tt';$c->stash->{create} = 1;$c->stash->{edit} = 1;}
/* Editing */input.string {font-family: sans-serif;font-size: 100%;background-color: #fffff0;width: 30em;}
<h1>Project <tt>[% curProject.name %]</tt></h1>
[% BLOCK maybeEditString %][% IF edit %]<input type='text' class='string' [% HTML.attributes(name => param, value => value) %] />[% ELSE %][% HTML.escape(value) %][% END %][% END %][% IF edit %]<form action="[% IF create %][% c.uri_for('/createproject/submit') %][% ELSE %][% c.uri_for('/project' curProject.name 'submit') %][% END %]" method="post">[% END %][% IF create %]<h1>New Project</h1>[% ELSE %]<h1>Project <tt>[% curProject.name %]</tt></h1>[% END %]
<p><strong>Description:</strong> [% curProject.description %]</p>
<table>[% IF edit %]<tr><th>Identifier:</th><td><tt>[% INCLUDE maybeEditString param="name" value=curProject.name %]</tt></td></tr>[% END %]<tr><th>Display name:</th><td>[% INCLUDE maybeEditString param="displayname" value=curProject.displayname %]</td></tr><tr><th>Description:</th><td>[% INCLUDE maybeEditString param="description" value=curProject.description %]</td></tr></table>
<td><tt>[% input.name %]</tt></td><td><tt>[% input.type %]</tt></td>
<td><tt>[% INCLUDE maybeEditString value=input.name %]</tt></td><td><tt>[% IF edit %]<select><option>svn</option><option>cvs</option><option>uri</option><option>string</option><option>path</option></select>[% ELSE %][% input.type %][% END %]</tt></td>
insert into jobSets(project, name, description, nixExprInput, nixExprPath) values('patchelf', 'trunk', 'PatchELF', 'patchelfSrc', 'release.nix');
insert into jobSets(project, name, description, nixExprInput, nixExprPath) values('patchelf', 'trunk', 'PatchELF trunk', 'patchelfSrc', 'release.nix');