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","JacketImages","OPACAmazonCoverImages","GoogleJackets","BakerTaylorEnabled",
+"SyndeticsEnabled", "OpacRenewalAllowed", "item_level_itypes","noItemTypeImages",
+"virtualshelves", "RequestOnOpac", "COinSinOPACResults", "OPACXSLTResultsDisplay",
+"OPACItemsResultsDisplay", "LibraryThingForLibrariesID", "opacuserlogin", "TagsEnabled",
+"TagsShowOnList", "TagsInputOnList","loggedinusername","AllowOnShelfHolds","opacbookbag",
+"OPACAmazonEnabled", "SyndeticsCoverImages","using_https");
+
# Arguments:
my $KOHA_ROOT;
my $tmpl_extn_match = "tmpl|inc|xsl"; # Type match defaults to *.tmpl plus *.inc if not specified
my $for_loop_found = 0;
for my $input_tmpl(<$ITMPL>){
+ my @parts = split "<", $input_tmpl;
+ for( my $i=0; $i<=$#parts; ++$i ){
+ my $input_tmpl = $i ? "<" . $parts[$i] : $parts[$i]; # add < sign back in to every part except the first
$for_loop_found = 0;
# handle poorly names variable such as f1!, f1+, f1-, f1| and mod
$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;
$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;
}
# misc 'patches'
$input_tmpl =~ s/\seq\s/ == /ig;
- $input_tmpl =~ s/HTML/html/ig;
- $input_tmpl =~ s/URL/url/ig;
+ $input_tmpl =~ s/HTML/html/g;
+ $input_tmpl =~ s/URL/url/g;
+ $input_tmpl =~ s/dhtmlcalendar_dateformat/DHTMLcalendar_dateformat/ig;
$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*\.__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
- $input_tmpl =~ s/\|JS/|replace("'", "\\'") |replace('"', '\\"') |replace('\\n', '\\\\n') |replace('\\r', '\\\\r')/ig;
+ $input_tmpl =~ s/\|\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;