package Template; use strict; # Module export stuff BEGIN { use Exporter (); use vars qw(@ISA @EXPORT); @ISA=qw(Exporter); @EXPORT=qw( TMPL ); } sub TMPL_Multi { my ($this,$vars_hash,$template,$row,$selected_fields)=@_; open(GUEST,"$template"); my @HTML=; close(GUEST); my ($html,$fields_var); my $tmpl_flag=0; my @HTML_VAR=(); my @HTML_TMPL=(); foreach $html (@HTML){ if($html=~ m/<\/TMPL_LOOP>/i){ $tmpl_flag=0; } if($tmpl_flag){ push(@HTML_TMPL,$html); } else { push(@HTML_VAR,$html); } if($html=~ m//i){ $fields_var=$1; $tmpl_flag=1; } } my @selected_fields; my $selected_field; my %fields; my $html_TMPL; my $html_all; my $html_TMPL; my $rowtemp; my $TMPL_num=0; foreach $rowtemp (@$row) { $TMPL_num++; $fields{'TMPL_num'}=$TMPL_num; my $k=0; @selected_fields=split(/\|/,$selected_fields); foreach $selected_field(@selected_fields){ $fields{$selected_field}=@$rowtemp[$k]; $k++; } my @HTML_TMPL1=@HTML_TMPL; foreach $html (@HTML_TMPL1){ while(1){ if($html=~ m//i){ $fields_var=$1; $html=~ s//$fields{$fields_var}/ig; } else{ last; } } $html_TMPL.=$html; } $html_all.=$html_TMPL; $html_TMPL=""; } my %var_hash=%$vars_hash; my $html_var_index; foreach $html (@HTML_VAR){ while(1){ if($html=~ m//i){ $fields_var=$1; $html=~ s//$var_hash{$fields_var}/ig; } else{ last; } } if($html=~ m//i){ $fields_var=$1; $html=~ s//$html_all/ig; } $html_var_index.=$html; } return ($html_var_index); } sub TMPL_Single { my ($this,$vars_hash,$template)=@_; open(GUEST,"$template"); my @HTML=; close(GUEST); my ($html,$fields_var); my $tmpl_flag=0; my @HTML_VAR=(); my @HTML_TMPL; foreach $html (@HTML){ if($html=~ m/<\/TMPL_LOOP>/i){ $tmpl_flag=0; } if($tmpl_flag){ push(@HTML_TMPL,$html); } else { push(@HTML_VAR,$html); } if($html=~ m//i){ $fields_var=$1; $tmpl_flag=1; } } my %var_hash=%$vars_hash; my $html_var_index; foreach $html (@HTML_VAR){ while(1){ if($html=~ m//i){ $fields_var=$1; $html=~ s//$var_hash{$fields_var}/ig; } else{ last; } } $html_var_index.=$html; } return ($html_var_index); } sub TMPL_Multi_hash { my ($this,$vars_hash,$template,$row,$selected_fields)=@_; open(GUEST,"$template"); my @HTML=; close(GUEST); my ($html,$fields_var); my $tmpl_flag=0; my @HTML_VAR=(); my @HTML_TMPL=(); foreach $html (@HTML){ if($html=~ m/<\/TMPL_LOOP>/i){ $tmpl_flag=0; } if($tmpl_flag){ push(@HTML_TMPL,$html); } else { push(@HTML_VAR,$html); } if($html=~ m//i){ $fields_var=$1; $tmpl_flag=1; } } my @selected_fields; my $selected_field; my %fields; my $html_TMPL; my $html_all; my $html_TMPL; my $rowtemp; my $TMPL_num=0; foreach $rowtemp (@$row) { $TMPL_num++; $rowtemp->{'TMPL_num'}=$TMPL_num; my @HTML_TMPL1=@HTML_TMPL; foreach $html (@HTML_TMPL1){ while(1){ if($html=~ m//i){ $fields_var=$1; $html=~ s//$rowtemp->{$fields_var}/ig; } else{ last; } } $html_TMPL.=$html; } $html_all.=$html_TMPL; $html_TMPL=""; } my %var_hash=%$vars_hash; my $html_var_index; foreach $html (@HTML_VAR){ while(1){ if($html=~ m//i){ $fields_var=$1; $html=~ s//$var_hash{$fields_var}/ig; } else{ last; } } if($html=~ m//i){ $fields_var=$1; $html=~ s//$html_all/ig; } $html_var_index.=$html; } return ($html_var_index); } sub TMPL_loop_param { my ($this,$vars_hash,$html_var,$row,$loop_field)=@_; my @HTML=split(/\n+/,$html_var); my ($html,$fields_var); my $tmpl_flag=0; my @HTML_VAR=(); my @HTML_TMPL=(); foreach $html (@HTML){ if($html=~ m/<\/TMPL_LOOP>/i){ $tmpl_flag=0; } if($tmpl_flag){ push(@HTML_TMPL,$html); } else { push(@HTML_VAR,$html); } if($html=~ m//i){ $fields_var=$loop_field; $tmpl_flag=1; } } my @selected_fields; my $selected_field; my %fields; my $html_TMPL; my $html_all; my $html_TMPL; my $rowtemp; my $TMPL_num=0; foreach $rowtemp (@$row) { $TMPL_num++; $rowtemp->{'TMPL_num'}=$TMPL_num; my @HTML_TMPL1=@HTML_TMPL; foreach $html (@HTML_TMPL1){ while(1){ if($html=~ m//i){ $fields_var=$1; $html=~ s//$rowtemp->{$fields_var}/ig; } else{ last; } } $html_TMPL.=$html."\n"; } $html_all.=$html_TMPL; $html_TMPL=""; } my $html_var_index; foreach $html (@HTML_VAR){ if($html=~ m//i){ $fields_var=$1; $html=~ s//$html_all/ig; } $html_var_index.=$html."\n"; } return ($html_var_index); } sub TMPL_param { my ($this,$vars_hash,$html_var)=@_; my @HTML=split(/\n+/,$html_var); my ($html,$fields_var); my $tmpl_flag=0; my $html_var_index; my @HTML_TMPL; my %var_hash=%$vars_hash; foreach $html (@HTML){ if($html=~ m/<\/TMPL_LOOP>/i){ $tmpl_flag=0; } if($tmpl_flag){ push(@HTML_TMPL,$html); } else { while(1){ if($html=~ m//i){ $fields_var=$1; $html=~ s//$var_hash{$fields_var}/ig; } else{ last; } } } if($html=~ m//i){ $tmpl_flag=1; } $html_var_index.=$html."\n"; } return ($html_var_index); } sub new { my $this={}; shift; bless $this; return $this; } 1;