package C4::Output; #asummes C4/Output #package to deal with marking up output #You will need to edit parts of this pm #set the value of path to be where your html lives use strict; use warnings; use C4::Database; require Exporter; use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS); # set the version for version checking $VERSION = 0.01; @ISA = qw(Exporter); @EXPORT = qw(&startpage &endpage &mktablehdr &mktableft &mktablerow &mklink &startmenu &endmenu &mkheadr ¢er &endcenter &mkform &mkform2 &bold &gotopage &mkformnotable &mkform3 picktemplate); %EXPORT_TAGS = ( ); # eg: TAG => [ qw!name1 name2! ], # your exported package globals go here, # as well as any optionally exported functions @EXPORT_OK = qw($Var1 %Hashit); # non-exported package globals go here use vars qw(@more $stuff); # initalize package globals, first exported ones my $Var1 = ''; my %Hashit = (); # then the others (which are still accessible as $Some::Module::stuff) my $stuff = ''; my @more = (); # all file-scoped lexicals must be created before # the functions below that use them. # # Change this value to reflect where you will store your includes # my %configfile; open (KC, "/etc/koha.conf"); while () { chomp; (next) if (/^\s*#/); if (/(.*)\s*=\s*(.*)/) { my $variable=$1; my $value=$2; $variable =~ s/^\s*//g; $variable =~ s/\s*$//g; $value =~ s/^\s*//g; $value =~ s/\s*$//g; $configfile{$variable}=$value; } # if } # while close(KC); my $path=$configfile{'includes'}; ($path) || ($path="/usr/local/www/hdl/htdocs/includes"); # make all your functions, whether exported or not; sub picktemplate { my ($includes, $base) = @_; my $dbh=C4Connect; my $templates; opendir (D, "$includes/templates"); my @dirlist=readdir D; foreach (@dirlist) { (next) if (/^\./); #(next) unless (/\.tmpl$/); (next) unless (-e "$includes/templates/$_/$base"); $templates->{$_}=1; } my $sth=$dbh->prepare("select value from systempreferences where variable='template'"); $sth->execute; my ($preftemplate) = $sth->fetchrow; $sth->finish; $dbh->disconnect; if ($templates->{$preftemplate}) { return $preftemplate; } else { return 'default'; } } sub startpage{ return("\n"); } sub gotopage{ my ($target) = @_; print "
goto target = $target
"; my $string = ""; return $string; } sub startmenu{ # edit the paths in here my ($type)=@_; if ($type eq 'issue') { open (FILE,"$path/issues-top.inc") || die; } elsif ($type eq 'opac') { open (FILE,"$path/opac-top.inc") || die; } elsif ($type eq 'member') { open (FILE,"$path/members-top.inc") || die; } elsif ($type eq 'acquisitions'){ open (FILE,"$path/acquisitions-top.inc") || die "Cannot open $path/acquisitions-top.inc"; } elsif ($type eq 'report'){ open (FILE,"$path/reports-top.inc") || die; } elsif ($type eq 'circulation') { open (FILE,"$path/circulation-top.inc") || die; } else { open (FILE,"$path/cat-top.inc") || die; } my @string=; close FILE; my $count=@string; # $string[$count]="
"; return @string; } sub endmenu { my ($type) = @_; if ( ! defined $type ) { $type=''; } if ($type eq 'issue') { open (FILE,"$path/issues-bottom.inc") || die; } elsif ($type eq 'opac') { open (FILE,"$path/opac-bottom.inc") || die; } elsif ($type eq 'member') { open (FILE,"$path/members-bottom.inc") || die; } elsif ($type eq 'acquisitions') { open (FILE,"$path/acquisitions-bottom.inc") || die; } elsif ($type eq 'report') { open (FILE,"$path/reports-bottom.inc") || die; } elsif ($type eq 'circulation') { open (FILE,"$path/circulation-bottom.inc") || die; } else { open (FILE,"$path/cat-bottom.inc") || die; } my @string=; close FILE; return @string; } sub mktablehdr { return("\n"); } sub mktablerow { #the last item in data may be a backgroundimage # FIXME # should this be a foreach (1..$cols) loop? my ($cols,$colour,@data)=@_; my $i=0; my $string=""; while ($i <$cols){ if ($data[$cols] ne ''){ #check for backgroundimage $string.=""; } else { $string.="$data[$i]"; } $i++; } $string=$string."\n"; return($string); } sub mktableft { return("
"; } else { $string.=""; } if ($data[$i] eq "") { $string.="  
\n"); } sub mkform{ my ($action,%inputs)=@_; my $string="
\n"; $string=$string.mktablehdr(); my $key; my @keys=sort keys %inputs; my $count=@keys; my $i2=0; while ( $i2<$count) { my $value=$inputs{$keys[$i2]}; my @data=split('\t',$value); #my $posn = shift(@data); if ($data[0] eq 'hidden'){ $string=$string."\n"; } else { my $text; if ($data[0] eq 'radio') { $text="$data[1] $data[2]"; } if ($data[0] eq 'text') { $text=""; } if ($data[0] eq 'textarea') { $text=""; } if ($data[0] eq 'select') { $text=""; } $string=$string.mktablerow(2,'white',$keys[$i2],$text); #@order[$posn] =mktablerow(2,'white',$keys[$i2],$text); } $i2++; } #$string=$string.join("\n",@order); $string=$string.mktablerow(2,'white','',''); $string=$string.mktableft; $string=$string."
"; } sub mkform3 { my ($action, %inputs) = @_; my $string = "
\n"; $string .= mktablehdr(); my $key; my @keys = sort(keys(%inputs)); my @order; my $count = @keys; my $i2 = 0; while ($i2 < $count) { my $value=$inputs{$keys[$i2]}; my @data=split('\t',$value); my $posn = $data[2]; if ($data[0] eq 'hidden'){ $order[$posn]="\n"; } else { my $text; if ($data[0] eq 'radio') { $text="$data[1] $data[2]"; } if ($data[0] eq 'text') { $text=""; } if ($data[0] eq 'textarea') { $text=""; } if ($data[0] eq 'select') { $text=""; } # $string=$string.mktablerow(2,'white',$keys[$i2],$text); $order[$posn]=mktablerow(2,'white',$keys[$i2],$text); } $i2++; } my $temp=join("\n",@order); $string=$string.$temp; $string=$string.mktablerow(1,'white',''); $string=$string.mktableft; $string=$string."
"; } sub mkformnotable{ my ($action,@inputs)=@_; my $string="
\n"; my $count=@inputs; for (my $i=0; $i<$count; $i++){ if ($inputs[$i][0] eq 'hidden'){ $string=$string."\n"; } if ($inputs[$i][0] eq 'radio') { $string.="$inputs[$i][2]"; } if ($inputs[$i][0] eq 'text') { $string.=""; } if ($inputs[$i][0] eq 'textarea') { $string.=""; } if ($inputs[$i][0] eq 'reset'){ $string.=""; } if ($inputs[$i][0] eq 'submit'){ $string.=""; } } $string=$string."
"; } sub mkform2{ my ($action,%inputs)=@_; my $string="
\n"; $string=$string.mktablehdr(); my $key; my @order; while ( my ($key, $value) = each %inputs) { my @data=split('\t',$value); my $posn = shift(@data); my $reqd = shift(@data); my $ltext = shift(@data); if ($data[0] eq 'hidden'){ $string=$string."\n"; } else { my $text; if ($data[0] eq 'radio') { $text="$data[1] $data[2]"; } elsif ($data[0] eq 'text') { my $size = $data[1]; if ($size eq "") { $size=40; } $text=""; } elsif ($data[0] eq 'textarea') { my @size=split("x",$data[1]); if ($data[1] eq "") { $size[0] = 40; $size[1] = 4; } $text=""; } elsif ($data[0] eq 'select') { $text=""; } if ($reqd eq "R") { $ltext = $ltext." (Req)"; } $order[$posn] =mktablerow(2,'white',$ltext,$text); } } $string=$string.join("\n",@order); $string=$string.mktablerow(2,'white','',''); $string=$string.mktableft; $string=$string."
"; } sub endpage{ return("\n"); } sub mklink { my ($url,$text)=@_; my $string="$text"; return ($string); } sub mkheadr { my ($type,$text)=@_; my $string; if ($type eq '1'){ $string="$text
"; } if ($type eq '2'){ $string="$text"; } if ($type eq '3'){ $string="$text

"; } return ($string); } sub center { return ("

\n"); } sub endcenter { return ("
\n"); } sub bold { my ($text)=@_; my $string="$text"; return($string); } END { } # module clean-up code here (global destructor)