Bug 5549 : circ/returns needs to import DateUtils
[koha.git] / C4 / Output.pm
index 4ec958b..9087075 100644 (file)
@@ -29,12 +29,10 @@ use strict;
 #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 {
@@ -43,193 +41,26 @@ BEGIN {
     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)],
+       %EXPORT_TAGS = ( all =>[qw(&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 getlanguagecookie pagination_bar
-    );
-    push @EXPORT, qw(
-        &output_html_with_http_headers &output_with_http_headers FormatData FormatNumber
+        &output_html_with_http_headers &output_with_http_headers FormatData FormatNumber pagination_bar
     );
 }
 
+
 =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');
-    my ( $htdocs, $theme, $lang, $filename ) = _get_template_file( $tmplbase, $interface, $query );
-    $filename =~ s/\.tmpl$/.tt/;
-    my $template = C4::Templates->new( $interface, $filename);
-    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{
@@ -460,17 +291,18 @@ sub output_with_http_headers($$$$;$) {
         $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;
-    utf8::encode($data) if utf8::is_utf8($data);
 
+# 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\;amp\; /\&amp\; /g;
     print $query->header($options), $data;
 }
 
 sub output_html_with_http_headers ($$$;$) {
     my ( $query, $cookie, $data, $status ) = @_;
-    $data =~ s/\&amp\;amp\; /\&amp\; /;
     output_with_http_headers( $query, $cookie, $data, 'html', $status );
 }