Koha/C4/Output.pm
tipaul cb32ef4fc1 adding "opacstylesheet" systempreference.
if this parameter is defined, the url is used instead of the default one.
So, you can have your own stylesheet somewhere, and use it instead of the official Koha one.
2005-01-03 10:58:46 +00:00

169 lines
4.4 KiB
Perl

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.
#
# Koha is free software; you can redistribute it and/or modify it under the
# terms of the GNU General Public License as published by the Free Software
# Foundation; either version 2 of the License, or (at your option) any later
# version.
#
# Koha is distributed in the hope that it will be useful, but WITHOUT ANY
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
# A PARTICULAR PURPOSE. See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along with
# 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 C4::Context;
use C4::Database;
use HTML::Template;
use vars qw($VERSION @ISA @EXPORT);
# set the version for version checking
$VERSION = 0.01;
=head1 NAME
C4::Output - Functions for managing templates
=head1 FUNCTIONS
=over 2
=cut
@ISA = qw(Exporter);
@EXPORT = qw(
&themelanguage &gettemplate setlanguagecookie
);
#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')."/default/en/includes/";
#---------------------------------------------------------------------------------------------------------
# FIXME - POD
sub gettemplate {
my ($tmplbase, $opac, $query) = @_;
if (!$query){
warn "no query in gettemplate";
}
my $htdocs;
if ($opac ne "intranet") {
$htdocs = C4::Context->config('opachtdocs');
} else {
$htdocs = C4::Context->config('intrahtdocs');
}
my ($theme, $lang) = themelanguage($htdocs, $tmplbase, $opac, $query);
my $opacstylesheet = C4::Context->preference('opacstylesheet');
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 => ($opac ne 'intranet'? '/opac-tmpl': '/intranet-tmpl') . "/$theme/$lang",
interface => ($opac ne 'intranet'? '/opac-tmpl': '/intranet-tmpl'),
theme => $theme,
opacstylesheet => $opacstylesheet,
lang => $lang);
return $template;
}
#---------------------------------------------------------------------------------------------------------
# FIXME - POD
sub themelanguage {
my ($htdocs, $tmpl, $section, $query) = @_;
# if (!$query) {
# warn "no query";
# }
my $dbh = C4::Context->dbh;
my @languages;
my @themes;
if ( $section eq "intranet")
{
@languages = split " ", C4::Context->preference("opaclanguages");
@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');
if ($lang){
push @languages,$lang;
@themes = split " ", C4::Context->preference("opacthemes");
}
else {
@languages = split " ", C4::Context->preference("opaclanguages");
@themes = split " ", C4::Context->preference("opacthemes");
}
}
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) {
for (my $pass = 1; $pass <= 2; $pass += 1) {
$la =~ s/([-_])/ $1 eq '-'? '_': '-' /eg if $pass == 2;
if (-e "$htdocs/$th/$la/$tmpl") {
$theme = $th;
$lang = $la;
last THEME;
}
last unless $la =~ /[-_]/;
}
}
}
if ($theme and $lang) {
return ($theme, $lang);
} else {
return ('default', 'en');
}
}
sub setlanguagecookie {
my ($query,$language,$uri)=@_;
my $cookie=$query->cookie(-name => 'KohaOpacLanguage',
-value => $language,
-expires => '');
print $query->redirect(-uri=>$uri,
-cookie=>$cookie);
}
END { } # module clean-up code here (global destructor)
1;
__END__
=back
=head1 AUTHOR
Koha Developement team <info@koha.org>
=cut