X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=C4%2FOutput.pm;h=5bebf6c0c6510f4f96f7fb12f1f57de6e7e6646b;hb=5962dee647457f2b25e9d8c853218b445c41b858;hp=0bd05ac53053ea3d1ab4bebe253b0a13fcf27cf7;hpb=6098d9c4eb571e46475994e567aca74091595cf6;p=koha.git diff --git a/C4/Output.pm b/C4/Output.pm index 0bd05ac530..5bebf6c0c6 100644 --- a/C4/Output.pm +++ b/C4/Output.pm @@ -1,12 +1,9 @@ package C4::Output; -# $Id$ - #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 - # Copyright 2000-2002 Katipo Communications # # This file is part of Koha. @@ -24,35 +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 vars qw($VERSION @ISA @EXPORT); - -# set the version for version checking -$VERSION = 0.01; +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); + +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 @@ -60,996 +63,349 @@ 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 - ); - -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 ne "intranet") { - $htdocs = C4::Context->config('opachtdocs'); - } else { - $htdocs = C4::Context->config('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", - theme => $theme, - lang => $lang); return $template; } #--------------------------------------------------------------------------------------------------------- # FIXME - POD sub themelanguage { - my ($htdocs, $tmpl) = @_; - - my $dbh = C4::Context->dbh; - my @languages = split " ", C4::Context->preference("opaclanguages"); - # language preference - my @themes = split " ", C4::Context->preference("opacthemes"); - # theme preferences - - 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