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 6ed4c108783fa6dd19312d584fec5f1dbc76e398..e213ce17981ce74942610cba7a93563c6d0b308d 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 c8572bd73840ba667fd59238a9589856a2bbfa90..42a1cedc52f09efca0a18d59b0a9cea03a193297 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 83b124bafbddcd1cd29353fe9dd2ab11f098eaf6..2868f37e0ddbe8a235dcfad3d28427eacc2bf8ed 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 72a3175a4a3a3c84e5e06473068c91c80a5f9de9..326205a31d90cfb0eebeec448426c6bf6a70b3ee 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 886552dda13a3245b0662f9cd87c66c5e9f6a07a..5dd56d40909176384ca77e1d16849d9d8000a089 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>