X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=C4%2FOutput.pm;h=5bebf6c0c6510f4f96f7fb12f1f57de6e7e6646b;hb=5962dee647457f2b25e9d8c853218b445c41b858;hp=ebe5cc21ef90fd1cbff3e3c715e6414c3742dc28;hpb=dbca39823f826d5e8d1cd7c0fc8d768be1f57b64;p=koha.git diff --git a/C4/Output.pm b/C4/Output.pm index ebe5cc21ef..5bebf6c0c6 100644 --- a/C4/Output.pm +++ b/C4/Output.pm @@ -4,7 +4,6 @@ package C4::Output; #You will need to edit parts of this pm #set the value of path to be where your html lives - # Copyright 2000-2002 Katipo Communications # # This file is part of Koha. @@ -22,33 +21,41 @@ package C4::Output; # Koha; if not, write to the Free Software Foundation, Inc., 59 Temple Place, # Suite 330, Boston, MA 02111-1307 USA + +# NOTE: I'm pretty sure this module is deprecated in favor of +# templates. + use strict; -require Exporter; +use warnings; use C4::Context; -use C4::Database; -use C4::Search; #for getting the systempreferences +use C4::Languages qw(getTranslatedLanguages get_bidi regex_lang_subtags language_get_description accept_language ); +use HTML::Template::Pro; use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS); -# set the version for version checking -$VERSION = 0.01; +BEGIN { + # set the version for version checking + $VERSION = 3.03; + require Exporter; + @ISA = qw(Exporter); + @EXPORT_OK = qw(&is_ajax ajax_fail); # More stuff should go here instead + %EXPORT_TAGS = ( all =>[qw(&themelanguage &gettemplate setlanguagecookie pagination_bar + &output_with_http_headers &output_html_with_http_headers)], + ajax =>[qw(&output_with_http_headers is_ajax)], + html =>[qw(&output_with_http_headers &output_html_with_http_headers)] + ); + push @EXPORT, qw( + &themelanguage &gettemplate setlanguagecookie pagination_bar + ); + push @EXPORT, qw( + &output_html_with_http_headers &output_with_http_headers + ); +} =head1 NAME -C4::Output - Functions for generating HTML for the Koha web interface - -=head1 SYNOPSIS - - use C4::Output; - - $str = &mklink("http://www.koha.org/", "Koha web page"); - print $str; - -=head1 DESCRIPTION - -The functions in this module generate HTML, and return the result as a -printable string. +C4::Output - Functions for managing templates =head1 FUNCTIONS @@ -56,1033 +63,357 @@ printable string. =cut -@ISA = qw(Exporter); -@EXPORT = qw(&startpage &endpage - &mktablehdr &mktableft &mktablerow &mklink - &startmenu &endmenu &mkheadr - ¢er &endcenter - &mkform &mkform2 &bold - &gotopage &mkformnotable &mkform3 - &getkeytableselectoptions - &pathtotemplate - &themelanguage &gettemplate - ); -%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); # FIXME - These are never used - - -# non-exported package globals go here -use vars qw(@more $stuff); # FIXME - These are never used - -# initalize package globals, first exported ones - -# FIXME - These are never used -my $Var1 = ''; -my %Hashit = (); - - -# then the others (which are still accessible as $Some::Module::stuff) -# FIXME - These are never used -my $stuff = ''; -my @more = (); - -# all file-scoped lexicals must be created before -# the functions below that use them. - -my $path = C4::Context->config('includes') || - "/usr/local/www/hdl/htdocs/includes"; +#FIXME: this is a quick fix to stop rc1 installing broken +#Still trying to figure out the correct fix. +my $path = C4::Context->config('intrahtdocs') . "/prog/en/includes/"; #--------------------------------------------------------------------------------------------------------- +# FIXME - POD sub gettemplate { - my ($tmplbase, $opac) = @_; - + my ( $tmplbase, $interface, $query ) = @_; + ($query) or warn "no query in gettemplate"; my $htdocs; - if ($opac) { - $htdocs = $configfile->{'opachtdocs'}; - } else { - $htdocs = $configfile->{'intrahtdocs'}; + if ( $interface ne "intranet" ) { + $htdocs = C4::Context->config('opachtdocs'); } + else { + $htdocs = C4::Context->config('intrahtdocs'); + } + my $path = C4::Context->preference('intranet_includes') || 'includes'; + my ( $theme, $lang ) = themelanguage( $htdocs, $tmplbase, $interface, $query ); + + # if the template doesn't exist, load the English one as a last resort + my $filename = "$htdocs/$theme/$lang/modules/$tmplbase"; + unless (-f $filename) { + $lang = 'en'; + $filename = "$htdocs/$theme/$lang/modules/$tmplbase"; + } + my $template = HTML::Template::Pro->new( + filename => $filename, + die_on_bad_params => 1, + global_vars => 1, + case_sensitive => 1, + loop_context_vars => 1, # enable: __first__, __last__, __inner__, __odd__, __counter__ + path => ["$htdocs/$theme/$lang/$path"] + ); + my $themelang=( $interface ne 'intranet' ? '/opac-tmpl' : '/intranet-tmpl' ) + . "/$theme/$lang"; + $template->param( + themelang => $themelang, + yuipath => (C4::Context->preference("yuipath") eq "local"?"$themelang/lib/yui":C4::Context->preference("yuipath")), + interface => ( $interface ne 'intranet' ? '/opac-tmpl' : '/intranet-tmpl' ), + theme => $theme, + lang => $lang + ); + + # Bidirectionality + my $current_lang = regex_lang_subtags($lang); + my $bidi; + $bidi = get_bidi($current_lang->{script}) if $current_lang->{script}; + # Languages + my $languages_loop = getTranslatedLanguages($interface,$theme,$lang); + my $num_languages_enabled = 0; + foreach my $lang (@$languages_loop) { + foreach my $sublang (@{ $lang->{'sublanguages_loop'} }) { + $num_languages_enabled++ if $sublang->{enabled}; + } + } + $template->param( + languages_loop => $languages_loop, + bidi => $bidi, + one_language_enabled => ($num_languages_enabled <= 1) ? 1 : 0, # deal with zero enabled langs as well + ) unless @$languages_loop<2; - my ($theme, $lang) = themelanguage($htdocs, $tmplbase); - - my $template = HTML::Template->new(filename => "$htdocs/$theme/$lang/$tmplbase", - die_on_bad_params => 0, - global_vars => 1, - path => ["$htdocs/$theme/$lang/includes"]); - - $template->param(themelang => "/$theme/$lang"); return $template; } #--------------------------------------------------------------------------------------------------------- +# FIXME - POD sub themelanguage { - my ($htdocs, $tmpl) = @_; - -# language preferences.... - my $dbh=C4Connect; - my $sth=$dbh->prepare("SELECT value FROM systempreferences WHERE variable='opaclanguages'"); - $sth->execute; - my ($lang) = $sth->fetchrow; - $sth->finish; - my @languages = split " ", $lang; - -# theme preferences.... - my $sth=$dbh->prepare("SELECT value FROM systempreferences WHERE variable='opacthemes'"); - $sth->execute; - my ($theme) = $sth->fetchrow; - $sth->finish; - my @themes = split " ", $theme; - - $dbh->disconnect; - - my ($theme, $lang); -# searches through the themes and languages. First template it find it returns. -# Priority is for getting the theme right. - THEME: - foreach my $th (@themes) { - foreach my $la (@languages) { - warn "File = $htdocs/$th/$la/$tmpl\n"; - if (-e "$htdocs/$th/$la/$tmpl") { - $theme = $th; - $lang = $la; - last THEME; - } - } - } - if ($theme and $lang) { - return ($theme, $lang); - } else { - return ('default', 'en'); - } -} - - -=item pathtotemplate - - %values = &pathtotemplate(template => $template, - theme => $themename, - language => $language, - type => $ptype, - path => $includedir); - -Finds a directory containing the desired template. The C