Hilfsfunktion 'render()' zum Rendern von Templates inklusive Titel & $::form->header
authorMoritz Bunkus <m.bunkus@linet-services.de>
Thu, 30 Dec 2010 15:25:39 +0000 (16:25 +0100)
committerMoritz Bunkus <m.bunkus@linet-services.de>
Thu, 30 Dec 2010 15:25:39 +0000 (16:25 +0100)
zzgl. notwendiger Anpassung von locales.pl

SL/Controller/Base.pm
scripts/locales.pl

index a2a380b..4f6bd19 100644 (file)
@@ -37,6 +37,21 @@ sub redirect_to {
   print $::cgi->redirect($url);
 }
 
+sub render {
+  my $self = shift;
+
+  my $template;
+  $template  = shift if scalar(@_) % 2;
+  my %params = @_;
+
+  if ($params{title}) {
+    $::form->{title} = delete $params{title};
+    $::form->header;
+  }
+
+  print $self->parse_html_template($template, $params{locals});
+}
+
 #
 # private functions -- for use in Base only
 #
@@ -157,6 +172,15 @@ Outputs an HTML template. It is a thin wrapper around
 C<Form::parse_html_template> which also adds the current object as the
 template variable C<SELF>.
 
+=item C<render $template, %params>
+
+Renders the template C<$template> by calling
+L</parse_html_template>. C<$params{locals}> will be used as the second
+parameter to L</parse_html_template>.
+
+If C<$params{title}> is trueish then the function also sets
+C<< $::form->{header} >> to that value and calls C<< $::form->header >>.
+
 =item C<url_for $url>
 
 =item C<url_for $params>
index a5ec52f..bdc3852 100755 (executable)
@@ -346,7 +346,7 @@ sub scanfile {
       }
 
       # is this a template call?
-      if (/parse_html_template2?\s*\(\s*[\"\']([\w\/]+)\s*[\"\']/) {
+      if (/(?:parse_html_template2?|render)\s*\(\s*[\"\']([\w\/]+)\s*[\"\']/) {
         my $newfile = "$basedir/templates/webpages/$1.html";
         if (/parse_html_template2/) {
           print "E: " . strip_base($file) . " is still using 'parse_html_template2' for " . strip_base($newfile) . ".\n";