allow [: and :] as tag delimiters for dynamic pages only
authorTony Cook <tony@develop-help.com>
Sun, 24 Aug 2014 09:19:46 +0000 (19:19 +1000)
committerTony Cook <tony@develop-help.com>
Sun, 24 Aug 2014 09:19:46 +0000 (19:19 +1000)
site/cgi-bin/modules/BSE/Dynamic/Article.pm
site/cgi-bin/modules/BSE/Request/Base.pm
site/cgi-bin/modules/BSE/Template.pm
site/templates/include/search_results.tmpl
site/templates/search_base.tmpl

index 6ed4c10..e213ce1 100644 (file)
@@ -5,7 +5,7 @@ use BSE::Template;
 use BSE::Util::HTML;
 use base qw(BSE::Util::DynamicTags);
 
-our $VERSION = "1.005";
+our $VERSION = "1.006";
 
 sub new {
   my ($class, $req, %opts) = @_;
@@ -48,7 +48,7 @@ sub generate {
   $self->{req}->_set_vars();
   my $result =
     {
-     content => BSE::Template->replace($template, $self->{req}->cfg, \%acts, $self->{req}->{vars}),
+     content => BSE::Template->replace($template, $self->{req}->cfg, \%acts, $self->{req}->{vars}, dynamic => 1),
      type => BSE::Template->get_type($self->{req}->cfg, $article->{template}),
     };
 
index c8572bd..42a1ced 100644 (file)
@@ -5,7 +5,7 @@ use BSE::Cfg;
 use BSE::Util::HTML;
 use Carp qw(cluck confess);
 
-our $VERSION = "1.026";
+our $VERSION = "1.027";
 
 =head1 NAME
 
@@ -1513,7 +1513,8 @@ sub dyn_response {
   }
 
   return BSE::Template->get_response($template, $req->cfg, $acts,
-                                    $base_template, \@sets, $req->{vars});
+                                    $base_template, \@sets, $req->{vars},
+                                    dynamic => 1);
 }
 
 =item response($template, $acts)
index 83b124b..2868f37 100644 (file)
@@ -4,7 +4,7 @@ use Squirrel::Template;
 use Carp qw(confess cluck);
 use Config ();
 
-our $VERSION = "1.011";
+our $VERSION = "1.012";
 
 my %formats =
   (
@@ -24,7 +24,7 @@ $formats{h} = $formats{html};
 $formats{u} = $formats{uri};
 
 sub templater {
-  my ($class, $cfg, $rsets) = @_;
+  my ($class, $cfg, $rsets, %opts) = @_;
 
   my @conf_dirs = $class->template_dirs($cfg);
   my @dirs;
@@ -38,7 +38,7 @@ sub templater {
     @dirs = @conf_dirs;
   }
 
-  my %opts =
+  my %topts =
     (
      template_dir => \@dirs,
      utf8 => $cfg->utf8,
@@ -49,15 +49,22 @@ sub templater {
     );
   if ($cfg->entry("basic", "cache_templates")) {
     require BSE::Cache;
-    $opts{cache} = BSE::Cache->load($cfg);
+    $topts{cache} = BSE::Cache->load($cfg);
   }
   if ($cfg->entry("basic", "cache_templates_locally")) {
-    $opts{cache_locally} = 1;
+    $topts{cache_locally} = 1;
   }
 
-  $opts{preload} = $cfg->entry("basic", "preload_template");
+  $topts{preload} = $cfg->entry("basic", "preload_template");
+  if ($opts{dynamic}) {
+    $topts{delimiters} =
+      [
+       [ "<:", ":>" ],
+       [ "[:", ":]" ],
+      ];
+  }
 
-  return Squirrel::Template->new(%opts);
+  return Squirrel::Template->new(%topts);
 }
 
 sub _get_filename {
@@ -70,10 +77,10 @@ sub _get_filename {
 }
 
 sub get_page {
-  my ($class, $template, $cfg, $acts, $base_template, $rsets, $vars) = @_;
+  my ($class, $template, $cfg, $acts, $base_template, $rsets, $vars, %opts) = @_;
 
   my $file = $class->_get_filename($cfg, $template);
-  my $obj = $class->templater($cfg, $rsets);
+  my $obj = $class->templater($cfg, $rsets, %opts);
 
   my $out;
   if ($base_template) {
@@ -87,9 +94,9 @@ sub get_page {
 }
 
 sub replace {
-  my ($class, $source, $cfg, $acts, $vars) = @_;
+  my ($class, $source, $cfg, $acts, $vars, %opts) = @_;
 
-  my $obj = $class->templater($cfg);
+  my $obj = $class->templater($cfg, undef, %opts);
 
   $obj->replace_template($source, $acts, undef, undef, $vars);
 }
@@ -143,10 +150,10 @@ sub show_literal {
 }
 
 sub get_response {
-  my ($class, $template, $cfg, $acts, $base_template, $rsets, $vars) = @_;
+  my ($class, $template, $cfg, $acts, $base_template, $rsets, $vars, %opts) = @_;
 
   my $content = $class->get_page($template, $cfg, $acts,
-                                $base_template, $rsets, $vars);
+                                $base_template, $rsets, $vars, %opts);
 
   return $class->make_response($content, $class->get_type($cfg, $template));
 }
index 72a3175..326205a 100644 (file)
@@ -1,4 +1,4 @@
-<:if Search:>
+[:if Search:]
 <: if Results:>
 <p> <font face="Verdana, Arial, Helvetica, sans-serif" size="2"> <:count:> <:if 
   Multiple:>documents<:or Multiple:>document<:eif Multiple:> matched your search 
@@ -37,11 +37,11 @@ begin pages:> <:if CurrentSearchPage:> <b><:page:></b> | <:or CurrentSearchPage:
 <:or Results:> 
 <p> <font face="Verdana, Arial, Helvetica, sans-serif" size="2"> No documents 
   were found that matched your search requirements.</font></p>
-<: eif Results:> <:or Search:> 
+<: eif Results:> [:or Search:]
 <p> <font face="Verdana, Arial, Helvetica, sans-serif" size="2"> All lower case 
   will search case insensitively, if an upper case character is present in a word 
   then that word will be searched case sensitively. Results are returned if any 
   one of the words is found in the document. You can group words using single 
   or double quotes to find things like "search engine". </font></p>
 <p>&nbsp;</p>
-<:eif Search:>
+[:eif Search:]
index 886552d..5dd56d4 100644 (file)
@@ -1,4 +1,4 @@
-<:wrap base.tmpl:> 
+<:.wrap "base.tmpl":> 
 <table width="100%" border="0" cellspacing="0" cellpadding="0">
   <tr>
     <td width="80%" height="24">&nbsp;&nbsp;<font face="Arial, Helvetica, sans-serif" size="4" color="#FF7F00"><b><:title:></b></font></td>
@@ -50,7 +50,7 @@
     </tr>
   </table>
 </form>
-<:if Ajax:>
+[:if Ajax:]
 <script type="text/javascript" language="javascript">
 //<![CDATA[
 function do_search() {
@@ -84,7 +84,7 @@ function do_search() {
 Event.observe(document, "dom:loaded", on_load_search);
 //]]>
 </script>
-<:or Ajax:><:eif Ajax:>
+[:eif Ajax:]
 <div id="search_results">
 <:include include/search_results.tmpl:>
 </div>