#use warnings; FIXME - Bug 2505
use C4::Context;
-use C4::Languages qw(getTranslatedLanguages get_bidi regex_lang_subtags language_get_description accept_language );
use C4::Dates qw(format_date);
use C4::Budgets qw(GetCurrency);
use C4::Templates;
-#use HTML::Template::Pro;
use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
BEGIN {
# set the version for version checking
- $VERSION = 3.03;
+ $VERSION = 3.07.00.049;
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)]
- );
+
+ @ISA = qw(Exporter);
+ @EXPORT_OK = qw(&is_ajax ajax_fail); # More stuff should go here instead
+ %EXPORT_TAGS = ( all =>[qw(setlanguagecookie pagination_bar
+ &output_with_http_headers &output_ajax_with_http_headers &output_html_with_http_headers)],
+ ajax =>[qw(&output_with_http_headers &output_ajax_with_http_headers is_ajax)],
+ html =>[qw(&output_with_http_headers &output_html_with_http_headers)]
+ );
push @EXPORT, qw(
- &themelanguage &gettemplate setlanguagecookie getlanguagecookie pagination_bar
+ setlanguagecookie getlanguagecookie pagination_bar
);
push @EXPORT, qw(
- &output_html_with_http_headers &output_with_http_headers FormatData FormatNumber
+ &output_html_with_http_headers &output_ajax_with_http_headers &output_with_http_headers FormatData FormatNumber
);
+
}
=head1 NAME
-C4::Output - Functions for managing templates
+C4::Output - Functions for managing output, is slowly being deprecated
=head1 FUNCTIONS
=over 2
-
=cut
-#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 _get_template_file {
- my ( $tmplbase, $interface, $query ) = @_;
- my $htdocs = C4::Context->config( $interface ne 'intranet' ? 'opachtdocs' : 'intrahtdocs' );
- my ( $theme, $lang ) = themelanguage( $htdocs, $tmplbase, $interface, $query );
- my $opacstylesheet = C4::Context->preference('opacstylesheet');
-
- # 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";
- }
-
- return ( $htdocs, $theme, $lang, $filename );
-}
-
-sub gettemplate {
- my ( $tmplbase, $interface, $query ) = @_;
- ($query) or warn "no query in gettemplate";
- my $path = C4::Context->preference('intranet_includes') || 'includes';
- my $opacstylesheet = C4::Context->preference('opacstylesheet');
- $tmplbase =~ s/\.tmpl$/.tt/;
- my ( $htdocs, $theme, $lang, $filename ) = _get_template_file( $tmplbase, $interface, $query );
- my $template = C4::Templates->new( $interface, $filename, $tmplbase);
- 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;
-
- return $template;
-}
-
-# FIXME - this is a horrible hack to cache
-# the current known-good language, temporarily
-# put in place to resolve bug 4403. It is
-# used only by C4::XSLT::XSLTParse4Display;
-# the language is set via the usual call
-# to themelanguage.
-my $_current_language = 'en';
-sub _current_language {
- return $_current_language;
-}
-
-#---------------------------------------------------------------------------------------------------------
-# FIXME - POD
-sub themelanguage {
- my ( $htdocs, $tmpl, $interface, $query ) = @_;
- ($query) or warn "no query in themelanguage";
-
- # Set some defaults for language and theme
- # First, check the user's preferences
- my $lang;
- my $http_accept_language = $ENV{ HTTP_ACCEPT_LANGUAGE };
- $lang = accept_language( $http_accept_language,
- getTranslatedLanguages($interface,'prog') )
- if $http_accept_language;
- # But, if there's a cookie set, obey it
- $lang = $query->cookie('KohaOpacLanguage') if (defined $query and $query->cookie('KohaOpacLanguage'));
- # Fall back to English
- my @languages;
- if ($interface eq 'intranet') {
- @languages = split ",", C4::Context->preference("language");
- } else {
- @languages = split ",", C4::Context->preference("opaclanguages");
- }
- if ($lang){
- @languages=($lang,@languages);
- } else {
- $lang = $languages[0];
- }
- my $theme = 'prog'; # in the event of theme failure default to 'prog' -fbcit
- my $dbh = C4::Context->dbh;
- my @themes;
- if ( $interface eq "intranet" ) {
- @themes = split " ", C4::Context->preference("template");
- }
- else {
- # we are in the opac here, what im trying to do is let the individual user
- # set the theme they want to use.
- # and perhaps the them as well.
- #my $lang = $query->cookie('KohaOpacLanguage');
- @themes = split " ", C4::Context->preference("opacthemes");
- }
-
- # 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) {
- #for ( my $pass = 1 ; $pass <= 2 ; $pass += 1 ) {
- # warn "$htdocs/$th/$la/modules/$interface-"."tmpl";
- #$la =~ s/([-_])/ $1 eq '-'? '_': '-' /eg if $pass == 2;
- if ( -e "$htdocs/$th/$la/modules/$tmpl") {
- #".($interface eq 'intranet'?"modules":"")."/$tmpl" ) {
- $theme = $th;
- $lang = $la;
- last THEME;
- }
- last unless $la =~ /[-_]/;
- #}
- }
- }
-
- $_current_language = $lang; # FIXME part of bad hack to paper over bug 4403
- return ( $theme, $lang );
-}
-
-sub setlanguagecookie {
- my ( $query, $language, $uri ) = @_;
- my $cookie = $query->cookie(
- -name => 'KohaOpacLanguage',
- -value => $language,
- -expires => ''
- );
- print $query->redirect(
- -uri => $uri,
- -cookie => $cookie
- );
-}
-
-sub getlanguagecookie {
- my ($query) = @_;
- my $lang;
- if ($query->cookie('KohaOpacLanguage')){
- $lang = $query->cookie('KohaOpacLanguage') ;
- }else{
- $lang = $ENV{HTTP_ACCEPT_LANGUAGE};
-
- }
- $lang = substr($lang, 0, 2);
-
- return $lang;
-}
-
=item FormatNumber
=cut
sub FormatNumber{
$options->{'Content-Style-Type' } = 'text/css';
$options->{'Content-Script-Type'} = 'text/javascript';
}
- # remove SUDOC specific NSB NSE
- $data =~ s/\x{C2}\x{98}|\x{C2}\x{9C}/ /g;
- $data =~ s/\x{C2}\x{88}|\x{C2}\x{89}/ /g;
-
+
# We can't encode here, that will double encode our templates, and xslt
# We need to fix the encoding as it comes out of the database, or when we pass the variables to templates
# utf8::encode($data) if utf8::is_utf8($data);
+ $data =~ s/\&\;amp\; /\&\; /g;
print $query->header($options), $data;
}
sub output_html_with_http_headers ($$$;$) {
my ( $query, $cookie, $data, $status ) = @_;
- $data =~ s/\&\;amp\; /\&\; /g;
output_with_http_headers( $query, $cookie, $data, 'html', $status );
}
-sub is_ajax () {
+
+sub output_ajax_with_http_headers {
+ my ( $query, $js ) = @_;
+ print $query->header(
+ -type => 'text/javascript',
+ -charset => 'UTF-8',
+ -Pragma => 'no-cache',
+ -'Cache-Control' => 'no-cache',
+ -expires => '-1d',
+ ), $js;
+}
+
+sub is_ajax {
my $x_req = $ENV{HTTP_X_REQUESTED_WITH};
return ( $x_req and $x_req =~ /XMLHttpRequest/i ) ? 1 : 0;
}