package Tropy::C::Edit; use strict; use base 'Catalyst::Base'; sub default : Private { my ( $self, $c ) = @_; $c->stash->{template} = "edit.tt"; $c->forward('Tropy::V::TT'); } sub update : Regex('^edit\/(\w+)$') { my ($self, $c) = @_; $c->stash->{entry} = Tropy::M::CDBI::Entry->retrieve( $c->req->snippets->[0] ); $c->forward('default'); } sub post : Local { my ( $self, $c ) = @_; my $entry; if ($c->req->param('id')) { $entry = $self->update_entry($c); } else { $c->form(title => [qw/NOT_BLANK/]); return $c->forward('default') if $c->form->has_missing or $c->form->has_invalid; $entry = $self->create_entry($c); } $c->res->redirect('/entry/' . $entry->id); } sub update_entry { my ($self, $c) = @_; my $entry = Tropy::M::CDBI::Entry->retrieve($c->req->param('id')) or $c->res->redirect('/'); $entry->body($c->req->param('body')); $entry->update; return $entry; } sub create_entry { my ($self, $c) = @_; return Tropy::M::CDBI::Entry->create({ id => Tropy::M::CDBI::Entry->generate_id, title => $c->req->param('title') || '', body => $c->req->param('body') || '', }); } 1;