From fe9108c755e6919e3feba8ac9ebb5ee0be8217ae Mon Sep 17 00:00:00 2001 From: Don Armstrong Date: Sun, 11 Aug 2019 10:07:08 -0700 Subject: [PATCH] add xslate helper and serve xslate templates --- lib/Debbugs/Mojo.pm | 1 + lib/Debbugs/Mojo/Controller/Bug.pm | 9 +++++++-- lib/Debbugs/Mojo/Plugin/Xslate.pm | 26 ++++++++++++++++++++++++++ 3 files changed, 34 insertions(+), 2 deletions(-) create mode 100644 lib/Debbugs/Mojo/Plugin/Xslate.pm diff --git a/lib/Debbugs/Mojo.pm b/lib/Debbugs/Mojo.pm index 779b833..c8005ec 100644 --- a/lib/Debbugs/Mojo.pm +++ b/lib/Debbugs/Mojo.pm @@ -6,6 +6,7 @@ sub startup { my $self = shift; $self->plugin('Debbugs::Mojo::Plugin::DBI'); + $self->plugin('Debbugs::Mojo::Plugin::Xslate'); my $r = $self->routes; $r->namespaces(['Debbugs::Mojo::Controller']); $r->add_type(bug => qr/\d+/); diff --git a/lib/Debbugs/Mojo/Controller/Bug.pm b/lib/Debbugs/Mojo/Controller/Bug.pm index 939169b..686e8bb 100644 --- a/lib/Debbugs/Mojo/Controller/Bug.pm +++ b/lib/Debbugs/Mojo/Controller/Bug.pm @@ -10,8 +10,13 @@ sub show { my $bug = Debbugs::Bug->new(bug => $id, schema => $c->db ); - - return $c->render(text => 'Bug '.$bug->id); + return $c->reply->not_found if not $bug->exists; + $c->respond_to(json => {json => $bug->structure}, + any => sub {$c->render(template => 'cgi/bugreport', + handler => 'tx', + bug => $bug)}, + ); + } 1; diff --git a/lib/Debbugs/Mojo/Plugin/Xslate.pm b/lib/Debbugs/Mojo/Plugin/Xslate.pm new file mode 100644 index 0000000..041d369 --- /dev/null +++ b/lib/Debbugs/Mojo/Plugin/Xslate.pm @@ -0,0 +1,26 @@ +package Debbugs::Mojo::Plugin::Xslate; + +use Mojo::Base 'Mojolicious::Plugin'; + +use Debbugs::Text qw(:all); + +sub register { + my ($self,$app) = @_; + + my $xslate = sub { + my ($renderer,$c,$output,$options) = @_; + my $template = $c->stash->{template_name} || + $renderer->template_name($options); + my %params = (%{$c->stash},c => $c); + $$output = + fill_in_template(template => $template, + variables => \%params, + ); + }; + $app->renderer->add_handler(tx => $xslate); + return $self; +} + + +1; + -- 2.39.2