fixed script, now handles URL replacement properly
[koha.git] / installer / html-template-to-template-toolkit.pl
index d2903a7..5f1c245 100755 (executable)
@@ -27,6 +27,9 @@ EOH
 my $tmpl_in_dir      = 'koha-tmpl';
 my $tmpl_out_dir     = 'koha-tt';
 
+# template toolkit variables NOT to scope, in other words, variables that need to remain global (case sensitive)
+my @globals = ("themelang");
+
 # Arguments:
 my $KOHA_ROOT;
 my $tmpl_extn_match  = "tmpl|inc|xsl"; # Type match defaults to *.tmpl plus *.inc if not specified
@@ -82,7 +85,7 @@ foreach my $file (@template_files) {
        $input_tmpl =~ s/"(\w+)\+"/"$1plus"/ig;
        $input_tmpl =~ s/"(\w+)\-"/"$1minus"/ig;
        $input_tmpl =~ s/"(\w+)!"/"$1exclamation"/ig;
-       $input_tmpl =~ s/"(\w+),(\w+)"/"$1comma$2"/ig;
+#      $input_tmpl =~ s/"(\w+),(\w+)"/"$1comma$2"/ig; #caused a problem in patron search
        $input_tmpl =~ s/NAME="mod"/NAME="modname"/ig;
        # handle 'naked' TMPL_VAR "parameter" by turning them into what they should be, TMPL_VAR NAME="parameter"
        $input_tmpl =~ s/TMPL_VAR\s+"(\w+)"/TMPL_VAR NAME="$1"/ig;
@@ -128,7 +131,13 @@ foreach my $file (@template_files) {
        $input_tmpl =~ s/<[!-]*\s*TMPL_INCLUDE\s+NAME\s?=\s?"(.*?\.inc)"\s*-*>/[% INCLUDE '$1' %]/ig;
        $input_tmpl =~ s/<[!-]*\s*TMPL_INCLUDE\s+NAME\s?=\s?"(.*?)"\s*-*>/[% INCLUDE $1 %]/ig;
 
-       if ($input_tmpl =~ m/<[!-]*\s*TMPL_LOOP/i ){
+        #reverse scoping bug fix
+        for my $tag (@globals){
+            next unless $cur_scope[-1];
+            $input_tmpl =~ s/$cur_scope[-1]$tag/$tag/g;
+        }
+
+       if ($input_tmpl =~ m/<[!-]*\s*TMPL_LOOP/i ){
            $for_loop_found = 1;
        }
 
@@ -153,19 +162,20 @@ foreach my $file (@template_files) {
        # misc 'patches'
        $input_tmpl =~ s/\seq\s/ == /ig;
        $input_tmpl =~ s/HTML/html/ig;
-       $input_tmpl =~ s/URL/url/ig;
+       $input_tmpl =~ s/URL/url/g;
        $input_tmpl =~ s/\w*\.__first__/loop.first/ig;
        $input_tmpl =~ s/\w*\.__last__/loop.last/ig;
        $input_tmpl =~ s/\w*\.__odd__/loop.odd/ig;
        $input_tmpl =~ s/\w*\.__even__/loop.even/ig;
        $input_tmpl =~ s/\w*\.__counter__/loop.count/ig; #loop.count gives the range (0..max) whereas loop.index gives the range (1..max+1), __counter__ is unknown
 
-       #hack to get around lack of javascript filter
+       # hack to get around lack of javascript filter
        $input_tmpl =~ s/\|JS/|replace("'", "\\'") |replace('"', '\\"') |replace('\\n', '\\\\n') |replace('\\r', '\\\\r')/ig;
     
        # Write out..
-       print $OTT $input_tmpl;
+        print $OTT $input_tmpl;
     }
+    close $ITMPL;
     close $OTT;
 }