OSDN Git Service

Plugin::NewslashHelpers: supprt helpers in box template rendering
authorhylom <hylom@users.osdn.me>
Mon, 10 Jun 2019 04:48:14 +0000 (04:48 +0000)
committerhylom <hylom@users.osdn.me>
Mon, 10 Jun 2019 04:48:14 +0000 (04:48 +0000)
src/newslash_web/lib/Newslash/Plugin/NewslashHelpers.pm

index c8e68a1..632b11e 100644 (file)
@@ -459,7 +459,22 @@ sub _get_sidebar_item {
         my $template = $box->{template};
         next if !$rs || !$template;
 
-        if ($tt->process(\$template, {items => $rs}, \$result)) {
+       my $vars = {items => $rs};
+
+       # register helpers
+       $vars->{helpers} = {};
+       my $helpers = $c->helpers;
+       for my $helper (keys %$helpers) {
+           my $f = $helpers->{$helper};
+           if (ref($f) eq 'CODE') {
+               $vars->{helpers}->{$helper} = sub { $helpers->{$helper}->($c, @_); };
+           }
+           else {
+               $vars->{helpers}->{$helper} = $helpers->{$helper};
+           }
+       }
+
+        if ($tt->process(\$template, $vars, \$result)) {
             push @$items, { type => $box->{type}, name => $box->{name}, contents => $result };
         }
     }