adding "opacstylesheet" systempreference.
[koha.git] / C4 / Output.pm
1 package C4::Output;
2
3 # $Id$
4
5 #package to deal with marking up output
6 #You will need to edit parts of this pm
7 #set the value of path to be where your html lives
8
9
10 # Copyright 2000-2002 Katipo Communications
11 #
12 # This file is part of Koha.
13 #
14 # Koha is free software; you can redistribute it and/or modify it under the
15 # terms of the GNU General Public License as published by the Free Software
16 # Foundation; either version 2 of the License, or (at your option) any later
17 # version.
18 #
19 # Koha is distributed in the hope that it will be useful, but WITHOUT ANY
20 # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
21 # A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
22 #
23 # You should have received a copy of the GNU General Public License along with
24 # Koha; if not, write to the Free Software Foundation, Inc., 59 Temple Place,
25 # Suite 330, Boston, MA  02111-1307 USA
26
27 # NOTE: I'm pretty sure this module is deprecated in favor of
28 # templates.
29
30 use strict;
31 require Exporter;
32
33 use C4::Context;
34 use C4::Database;
35 use HTML::Template;
36
37 use vars qw($VERSION @ISA @EXPORT);
38
39 # set the version for version checking
40 $VERSION = 0.01;
41
42 =head1 NAME
43
44 C4::Output - Functions for managing templates
45
46 =head1 FUNCTIONS
47
48 =over 2
49
50 =cut
51
52 @ISA = qw(Exporter);
53 @EXPORT = qw(
54                 &themelanguage &gettemplate setlanguagecookie
55                 );
56
57 #FIXME: this is a quick fix to stop rc1 installing broken
58 #Still trying to figure out the correct fix.
59 my $path = C4::Context->config('intrahtdocs')."/default/en/includes/";
60
61 #---------------------------------------------------------------------------------------------------------
62 # FIXME - POD
63 sub gettemplate {
64         my ($tmplbase, $opac, $query) = @_;
65 if (!$query){
66   warn "no query in gettemplate";
67   }
68         my $htdocs;
69         if ($opac ne "intranet") {
70                 $htdocs = C4::Context->config('opachtdocs');
71         } else {
72                 $htdocs = C4::Context->config('intrahtdocs');
73         }
74
75         my ($theme, $lang) = themelanguage($htdocs, $tmplbase, $opac, $query);
76         my $opacstylesheet = C4::Context->preference('opacstylesheet');
77         my $template = HTML::Template->new(filename      => "$htdocs/$theme/$lang/$tmplbase",
78                                    die_on_bad_params => 0,
79                                    global_vars       => 1,
80                                    path              => ["$htdocs/$theme/$lang/includes"]);
81
82         $template->param(themelang => ($opac ne 'intranet'? '/opac-tmpl': '/intranet-tmpl') . "/$theme/$lang",
83                                                         interface => ($opac ne 'intranet'? '/opac-tmpl': '/intranet-tmpl'),
84                                                         theme => $theme,
85                                                         opacstylesheet => $opacstylesheet,
86                                                         lang => $lang);
87
88         
89         return $template;
90 }
91
92 #---------------------------------------------------------------------------------------------------------
93 # FIXME - POD
94 sub themelanguage {
95   my ($htdocs, $tmpl, $section, $query) = @_;
96 #   if (!$query) {
97 #     warn "no query";
98 #   }
99   my $dbh = C4::Context->dbh;
100   my @languages;
101   my @themes;
102   if ( $section eq "intranet")
103   {
104     @languages = split " ", C4::Context->preference("opaclanguages");
105     @themes = split " ", C4::Context->preference("template");
106   }
107   else
108   {
109   # we are in the opac here, what im trying to do is let the individual user
110   # set the theme they want to use.
111   # and perhaps the them as well.
112   my $lang=$query->cookie('KohaOpacLanguage');
113   if ($lang){
114   
115     push @languages,$lang;
116     @themes = split " ", C4::Context->preference("opacthemes");
117   } 
118   else {
119     @languages = split " ", C4::Context->preference("opaclanguages");
120     @themes = split " ", C4::Context->preference("opacthemes");
121     }
122   }
123
124   my ($theme, $lang);
125 # searches through the themes and languages. First template it find it returns.
126 # Priority is for getting the theme right.
127   THEME:
128   foreach my $th (@themes) {
129     foreach my $la (@languages) {
130         for (my $pass = 1; $pass <= 2; $pass += 1) {
131           $la =~ s/([-_])/ $1 eq '-'? '_': '-' /eg if $pass == 2;
132           if (-e "$htdocs/$th/$la/$tmpl") {
133               $theme = $th;
134               $lang = $la;
135               last THEME;
136           }
137         last unless $la =~ /[-_]/;
138         }
139     }
140   }
141   if ($theme and $lang) {
142     return ($theme, $lang);
143   } else {
144     return ('default', 'en');
145   }
146 }
147
148 sub setlanguagecookie {
149    my ($query,$language,$uri)=@_;
150    my $cookie=$query->cookie(-name => 'KohaOpacLanguage',
151                                            -value => $language,
152                                            -expires => '');
153    print $query->redirect(-uri=>$uri,
154    -cookie=>$cookie);
155 }                                  
156
157
158 END { }       # module clean-up code here (global destructor)
159
160 1;
161 __END__
162
163 =back
164
165 =head1 AUTHOR
166
167 Koha Developement team <info@koha.org>
168
169 =cut