/usr/lib/swish-e/perl/SWISH/TemplateHTMLTemplate.pm is in swish-e 2.4.7-5ubuntu1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 | #=======================================================================
# Module for using HTML::Template for generating output
# $Id: TemplateHTMLTemplate.pm 1440 2003-12-18 05:00:40Z whmoseley $
#
# This module probably does not automatically support all the features
# of the swish.cgi script (such as selecting index files). See
# the TemplateToolkit.pm module for examples.
#
#=======================================================================
package SWISH::TemplateHTMLTemplate;
use strict;
use HTML::Template;
use HTML::FillInForm;
use CGI ();
use vars '$Template';
use SWISH::TemplateDefault; # ugly hack
sub show_template {
my ( $class, $template_params, $results ) = @_;
my $cgi = $results->CGI;
my $template = HTML::Template->new( %{$template_params->{options}} );
# I like scoping in Template Toolkit much better.
my $page_array = $results->navigation('page_array');
if ( ref $page_array ) {
$_->{QUERY_HREF} = $results->{query_href}
for @$page_array;
}
my %params = (
TITLE => ($results->config('title') || 'Search Page'),
QUERY_SIMPLE => CGI::escapeHTML( $results->{query_simple} ),
MESSAGE => CGI::escapeHTML( $results->errstr ),
QUERY_HREF => $results->{query_href},
MY_URL => $cgi->script_name,
MOD_PERL => $ENV{MOD_PERL},
DATE_RANGES => $results->get_date_ranges,
);
if ( $results->results ) {
%params = ( %params,
FILES => $results->results,
HITS => $results->navigation('hits'),
FROM => $results->navigation('from'),
TO => $results->navigation('to'),
SHOWING => $results->navigation('showing'),
PAGES => $results->navigation('pages'),
NEXT => $results->navigation('next'),
NEXT_COUNT => $results->navigation('next_count'),
PREV => $results->navigation('prev'),
PREV_COUNT => $results->navigation('prev_count'),
RUN_TIME => $results->navigation('run_time'),
SEARCH_TIME => $results->navigation('search_time'),
);
$params{PAGE_ARRAY} = $page_array if $results->navigation('pages');
my $display_props = load_display_properties( $results );
$params{PROPERTIES} = $display_props if $display_props;
};
my $params = \%params;
my $MapNames = $results->config('name_labels') || {};
my $Sorts = $results->config('sorts');
my $MetaNames = $results->config('metanames');
# set a default
if ( $MetaNames && !$cgi->param('metanames') ) {
$cgi->param('metaname', $MetaNames->[0] );
}
$params->{SORTS} = [ map { { NAME => $_, LABEL => ($MapNames->{$_} || $_) } } @$Sorts ] if $Sorts;
$params->{METANAMES} = [ map { { NAME => $_, LABEL => ($MapNames->{$_} || $_) } } @$MetaNames ] if $MetaNames;
# Limit Select
my $Limit = $results->config('select_by_meta');
if ( $Limit ) {
$params->{LIMIT_TITLE} = $Limit->{description} || 'Limit By';
my $labels = $Limit->{labels} || {};
$params->{LIMITS} = [ map { { VALUE => $_, LABEL => ($labels->{$_} || $_) } } @{$Limit->{values}} ] if $Limit;
}
$template->param( $params );
my $page = $template->output;
my $fif = new HTML::FillInForm;
print $cgi->header,
'<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">',
$fif->fill(
scalarref => \$page,
fobject => $cgi,
);
}
# This function creates a key "PROPERTIES" in each result's hash that is
# a hash with two keys PROP_NAME and PROP_VALUE
# Allows automatic display of properties listed in the "display_prop" config option.
sub load_display_properties {
my $results = shift;
my $labels = $results->config('name_labels');
my $display_props = $results->config('display_props');
return unless $display_props;
for my $this_result ( @{$results->results} ) {
$this_result->{PROPERTIES} = [ map {
{
PROP_NAME => $labels->{$_} || $_,
PROP_VALUE => $this_result->{$_} || '',
}
} @$display_props ];
}
}
1;
|