Beagle
view release on metacpan or search on metacpan
lib/Beagle/Web/Router.pm view on Meta::CPAN
delete_attachments( $entry, ref $del ? @$del : $del );
add_attachments( $entry, request()->upload('attachments') );
render 'admin/entry',
entry => $entry,
form => Beagle::Web::Form->new(
field_list => scalar Beagle::Web->field_list($entry) ),
message => 'updated',
prefix => prefix() || '../../';
}
else {
render 'admin/entry',
entry => $entry,
form => Beagle::Web::Form->new(
field_list => scalar Beagle::Web->field_list($entry) ),
message => 'invalid',
prefix => prefix() || '../../';
}
}
else {
redirect '/admin/entries';
}
};
post '/admin/entry/delete' => sub {
my $id = request()->param('id');
if ( request()->header('Accept') =~ /json/ ) {
content_type('application/json');
}
if ( my $entry = handle()->map->{$id} ) {
handle()->delete_entry($entry);
my $ret = { status => 'deleted' };
$ret->{redraw_menu} = 1 unless $entry->type eq 'comment';
return to_json($ret);
}
else {
return to_json {
status => 'error',
message => 'not exist'
};
}
redirect '/admin/entries';
};
any '/admin/info' => sub {
my $entry = handle()->info;
redirect '/admin/entry/' . $entry->id;
};
get '/favicon.ico' => sub {
if ( handle()->info->avatar
&& handle()->info->avatar ne '/favicon.ico' )
{
redirect handle()->info->avatar;
}
else {
redirect '/system/images/beagle.png';
}
};
get '/static/*' => sub {
my %vars = @_;
my @parts = split '/', decode_utf8 $vars{splat}[0];
my $file =
encode( 'locale_fs',
catfile( static_root( handle() ), @parts ) );
return unless -e $file && -r $file;
content_type( mime_type($file) );
return scalar read_file $file;
};
post '/utility/markitup' => sub {
my $data = request()->param('data');
return unless $data;
my $format = request()->param('format');
return unless $format;
my $content;
my $parse_method = Beagle::Util->can( "parse_$format" );
if ( $parse_method ) {
$content = $parse_method->($data);
}
render 'markitup',
content => $content,
prefix => prefix() || '../';
};
any '/utility/markitup_preview' => sub {
render 'markitup_preview', prefix => prefix() || '../';
};
get '/extra/*' => sub {
my %vars = @_;
my $name = decode_utf8 $vars{splat}[0];
return unless $name;
return unless Beagle::Web->template_exists("extra/$name");
render("extra/$name");
};
get '/admin/term' => sub {
render('admin/term');
};
post '/admin/term' => sub {
my $data;
content_type('application/json');
eval { $data = from_json( request()->content, { utf8 => 1 } ) };
if ( $@ ) {
return to_json( { error => { message => decode( locale => $@ ) } } );
}
else {
my $params = $data->{params} || [];
( run in 0.656 second using v1.01-cache-2.11-cpan-744e820c463 )