-
-=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 - POD
-sub gettemplate {
- my ($tmplbase, $opac) = @_;
-
- my $htdocs;
- if ($opac ne "intranet") {
- $htdocs = C4::Context->config('opachtdocs');
- } else {
- $htdocs = C4::Context->config('intrahtdocs');
- }
-
- 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");
- 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<template>
-argument specifies the template you're looking for (this should be the
-name of the script you're using to generate an HTML page, without the
-C<.pl> extension). Only the C<template> argument is required; the
-others are optional.
-
-C<theme> specifies the name of the theme to use. This will be used
-only if it is allowed by the C<allowthemeoverride> system preference
-option (in the C<systempreferences> table of the Koha database).
-
-C<language> specifies the desired language. If not specified,
-C<&pathtotemplate> will use the list of acceptable languages specified
-by the browser, then C<all>, and finally C<en> as fallback options.
-
-C<type> may be C<intranet>, C<opac>, C<none>, or some other value.
-C<intranet> and C<opac> specify that you want a template for the
-internal web site or the public OPAC, respectively. C<none> specifies
-that the template you're looking for is at the top level of one of the
-include directories. Any other value is taken as-is, as a subdirectory
-of one of the include directories.
-
-C<path> specifies an include directory.
-
-C<&pathtotemplate> searches first in the directory given by the
-C<path> argument, if any, then in the directories given by the
-C<templatedirectory> and C<includes> directives in F</etc/koha.conf>,
-in that order.
-
-C<&pathtotemplate> returns a hash with the following keys:
-
-=over 4
-
-=item C<path>
-
-The full pathname to the desired template.
-
-=item C<foundlanguage>
-
-The value is set to 1 if a template in the desired language was found,
-or 0 otherwise.
-
-=item C<foundtheme>
-
-The value is set to 1 if a template of the desired theme was found, or
-0 otherwise.
-
-=back
-
-If C<&pathtotemplate> cannot find an acceptable template, it returns 0.
-
-Note that if a template of the desired language or theme cannot be
-found, C<&pathtotemplate> will print a warning message. Unless you've
-set C<$SIG{__WARN__}>, though, this won't show up in the output HTML
-document.
-
-=cut
-#'
-# FIXME - Fix POD: it doesn't look in the directory given by the
-# 'includes' option in /etc/koha.conf.
-sub pathtotemplate {
- my %params = @_;
- my $template = $params{'template'};
- my $themeor = $params{'theme'};
- my $languageor = lc($params{'language'});
- my $ptype = lc($params{'type'} or 'intranet');
-
- # FIXME - Make sure $params{'template'} was given. Or else assume
- # "default".
- my $type;
- if ($ptype eq 'opac') {$type = 'opac-tmpl/'; }
- elsif ($ptype eq 'none') {$type = ''; }
- elsif ($ptype eq 'intranet') {$type = 'intranet-tmpl/'; }
- else {$type = $ptype . '/'; }
-
- my %returns;
- my $theme = C4::Context->preference("theme") || "default";
- if ($themeor and
- C4::Context->preference("allowthemeoverride") =~ qr/$themeor/i)
- {
- $theme = $themeor;
- }
- my @languageorder = getlanguageorder();
- my $language = $languageor || shift(@languageorder);
-
- #where to search for templates
- my @tmpldirs = ("$path/templates", $path);
- unshift (@tmpldirs, C4::Context->config('templatedirectory')) if C4::Context->config('templatedirectory');
- unshift (@tmpldirs, $params{'path'}) if $params{'path'};
-
- my ($etheme, $elanguage, $epath);
-
- CHECK: foreach my $edir (@tmpldirs) {
- foreach $etheme ($theme, 'all', 'default') {
- foreach $elanguage ($language, @languageorder, 'all','en') {
- # 'en' is the fallback-language
- if (-e "$edir/$type$etheme/$elanguage/$template") {
- $epath = "$edir/$type$etheme/$elanguage/$template";
- last CHECK;
- }
- }
- }
- }
-
- unless ($epath) {
- warn "Could not find $template in @tmpldirs";
- return 0;
- }
-
- if ($language eq $elanguage) {
- $returns{'foundlanguage'} = 1;
- } else {
- $returns{'foundlanguage'} = 0;
- warn "The language $language could not be found for $template of $theme.\nServing $elanguage instead.\n";
- }
- if ($theme eq $etheme) {
- $returns{'foundtheme'} = 1;
- } else {
- $returns{'foundtheme'} = 0;
- warn "The template $template could not be found for theme $theme.\nServing $template of $etheme instead.\n";
- }
-
- $returns{'path'} = $epath;
-
- return (%returns);
-}
-
-=item getlanguageorder
-
- @languages = &getlanguageorder();
-
-Returns the list of languages that the user will accept, and returns
-them in order of decreasing preference. This is retrieved from the
-browser's headers, if possible; otherwise, C<&getlanguageorder> uses
-the C<languageorder> setting from the C<systempreferences> table in
-the Koha database. If neither is set, it defaults to C<en> (English).
-
-=cut
-#'
-sub getlanguageorder () {
- my @languageorder;
-
- if ($ENV{'HTTP_ACCEPT_LANGUAGE'}) {
- @languageorder = split (/\s*,\s*/ ,lc($ENV{'HTTP_ACCEPT_LANGUAGE'}));
- } elsif (my $order = C4::Context->preference("languageorder")) {
- @languageorder = split (/\s*,\s*/ ,lc($order));
- } else { # here should be another elsif checking for apache's languageorder
- @languageorder = ('en');
- }
-
- return (@languageorder);
-}
-
-=item startpage
-
- $str = &startpage();
- print $str;
-
-Returns a string of HTML, the beginning of a new HTML document.
-
-=cut
-#'
-sub startpage() {
- return("<html>\n");
-}
-
-=item gotopage
-
- $str = &gotopage("//opac.koha.org/index.html");
- print $str;
-
-Generates a snippet of HTML code that will redirect to the given URL
-(which should not include the initial C<http:>), and returns it.
-
-=cut
-#'
-sub gotopage($) {
- my ($target) = shift;
- #print "<br>goto target = $target<br>";
- my $string = "<META HTTP-EQUIV=Refresh CONTENT=\"0;URL=http:$target\">";
- return $string;
-}
-
-=item startmenu
-
- @lines = &startmenu($type);
- print join("", @lines);
-
-Given a page type, or category, returns a set of lines of HTML which,
-when concatenated, generate the menu at the top of the web page.
-
-C<$type> may be one of C<issue>, C<opac>, C<member>, C<acquisitions>,
-C<report>, C<circulation>, or something else, in which case the menu
-will be for the catalog pages.
-