From 773350181df841f0932c792d5e0c34c29c0129f3 Mon Sep 17 00:00:00 2001 From: hylom Date: Wed, 7 Sep 2016 02:18:52 +0900 Subject: [PATCH] implement TT2Renderer plugin --- .../lib/Newslash/Plugin/TT2Renderer.pm | 40 ++++++++++++++++++++++ .../lib/Newslash/Plugins/TT2Renderer.pm | 2 -- dev/newslash_web/lib/Newslash/Web.pm | 15 ++++---- dev/newslash_web/templates/login/login.html.tt2 | 12 +++++++ 4 files changed, 61 insertions(+), 8 deletions(-) create mode 100644 dev/newslash_web/lib/Newslash/Plugin/TT2Renderer.pm delete mode 100644 dev/newslash_web/lib/Newslash/Plugins/TT2Renderer.pm create mode 100644 dev/newslash_web/templates/login/login.html.tt2 diff --git a/dev/newslash_web/lib/Newslash/Plugin/TT2Renderer.pm b/dev/newslash_web/lib/Newslash/Plugin/TT2Renderer.pm new file mode 100644 index 00000000..66655191 --- /dev/null +++ b/dev/newslash_web/lib/Newslash/Plugin/TT2Renderer.pm @@ -0,0 +1,40 @@ +package Newslash::Plugin::TT2Render; +use Mojo::Base 'Mojolicious::Plugin'; + +use Template; + +sub register { + my ($self, $app, $conf) = @_; + + $app->renderer->add_handler( 'tt2' => sub { + my ($renderer, $c, $output, $options) = @_; + my $tt_options = $options || {}; + + my $inline_template = $options->{inline}; + my $template_path = $renderer->template_path($options); + my $data_template = $renderer->get_data_template($options); + + my $tt = Template->new($tt_options); + + my $template = ''; + if ($inline_template) { + # use string as a template + $template = $inline_template; + } elsif ($data_template) { + # use template in DATA sections + $template = $data_template; + } else { + # read from file + $template = $template_path; + } + my $vars = $c->stash; + my $process_opts = {}; + + my $result = $tt->process($template, $vars, $output, $process_opts); + if (!$result) { + die $tt->error(); + } + }); +} + +1; diff --git a/dev/newslash_web/lib/Newslash/Plugins/TT2Renderer.pm b/dev/newslash_web/lib/Newslash/Plugins/TT2Renderer.pm deleted file mode 100644 index 70f7b2ba..00000000 --- a/dev/newslash_web/lib/Newslash/Plugins/TT2Renderer.pm +++ /dev/null @@ -1,2 +0,0 @@ -package Newslash::Plugin::TT2Render; - diff --git a/dev/newslash_web/lib/Newslash/Web.pm b/dev/newslash_web/lib/Newslash/Web.pm index f94f32a3..3a99f867 100644 --- a/dev/newslash_web/lib/Newslash/Web.pm +++ b/dev/newslash_web/lib/Newslash/Web.pm @@ -5,19 +5,22 @@ use Newslash::Model::Users; # This method will run once at server start sub startup { - my $self = shift; + my $app = shift; # secret key for hasing - $self->secrets(['secret strings for hasing']); + $app->secrets(['secret strings for hasing']); # add Model - $self->helper(users => sub { state $users = Newslash::Model::Users->new }); + $app->helper(users => sub { state $users = Newslash::Model::Users->new }); # Documentation browser under "/perldoc" - $self->plugin('PODRenderer'); - + $app->plugin('PODRenderer'); + + # use Template::Toolkit 2 render + $app->plugin('Newslash::Plugin::TT2Renderer'); + # Router - my $r = $self->routes; + my $r = $app->routes; # Normal route to controller $r->get('/')->to('example#welcome'); diff --git a/dev/newslash_web/templates/login/login.html.tt2 b/dev/newslash_web/templates/login/login.html.tt2 new file mode 100644 index 00000000..c0003111 --- /dev/null +++ b/dev/newslash_web/templates/login/login.html.tt2 @@ -0,0 +1,12 @@ + + + [% title %] + +

[% $msg %]

+ +
+

+

+

+

+ -- 2.11.0