NAME

HTML::SearchPage - Generic framework for building web-based search pages

SYNOPSIS

Please refer to HTML::SearchPage::Tutorial for a tutorial on using HTML::SearchPage & HTML::SearchPage::Param.

DESCRIPTION

This module provides a generic framework for building web-based search pages.

USAGE

Please refer to HTML::SearchPage::Tutorial for a tutorial on using HTML::SearchPage & HTML::SearchPage::Param.

QUICK REFERENCE

All the parameters listed below have a get/set method. However, the set functionality of the params in the 3rd group is not intended to be utilized except for development.

Group 1 - Parameters required by the constructor

The following parameters are required by the constructor.

Parameter            Description                                    Format
---------            -----------                                    ------
db_access_params     Database access parameters                     [$datasource, $user,
                                                                    $password]
temp_dir             Temporary directory to store images scalar     scalar
                     and session files
temp_dir_eq          URL-equivalent to access files in temp_dir     scalar
base_sql_table       Base SQL table (or table join) to build final  scalar
                     SQL queries
base_sql_fields      Fields that will be retrieved by the SQL       arrayref
                     statement
base_output_headers  Headers output in results                      arrayref
base_identifier      Unique identifier column used by display_info  scalar
                     method (* required only when display_info
                     method is used)

Group 2 - Optional parameters

The following parameters are optional.

Parameter               Description                    Format       Default
---------               -----------                    ------       -------
page_title              Page title                     scalar       'Search
                                                                    Page'

header                  HTML header in views           scalar(i)    ''
footer                  HTML footer in views           scalar(i)    ''
cookie                  Name of cookie                 scalar       html-searchpage
cookie_expires_in_min   Expiration tim eof cookie      scalar       30
                                                       (number)
css                     CSS for views                  scalar(i)    ''
instructions            Instructions for views         scalar(i)    ''
distinct                Make SQL query "distinct"      0|1          0
no_reset                No reset button                0|1          0
new_search              Place a new search button,     0|<URL>      0
                        (implies no_reset)
group_by                Group by statement             scalar       ''
                                                       (exclude
                                                       GROUP BY)
sort_fields             Number of sort fields          scalar       0
                                                       (number)
sort_defaults           Default sort options           arrayref(ii) []

method                  HTML form method to use        GET|POST     GET
action                  HTML URL to script             scalar       $ENV{SCRIPT_NAME}
page_size               Number of records per          scalar       50
                        result page                    (number)
show_search_url         Whether to display a
                        self-referencing search URL    0|1          0
debug_level             Level of debug information:    0|1|2(iii)   0
go_to_results           If set, a click on the page    0|1          1
                        will take the display to the
                        beginning of the results
                        on the subsequent page
modifier                The page modifier object       ref          undef
external_where_clauses  External where clauses         arrayref     []

Notes:
(i) The parameter provided here can be of the following types, specified by the preceding keyword:
    - FILE:<something> : Contents of file <something> is retrieved
    - EXEC:<something> : <something> is executed and its STDOUT is retrieved
    - GET:<something>  : URL <something> is retrieved by LWP
    - <something>      : <something> is used as it is

(ii) Format for sort defaults:
     ["(asc|desc) <field>", "(asc|desc) <field>", "(asc|desc) <field>"]

(iii) Debug levels:
      - 0: No debug information
      - 1: Time, URL, version information of critical code components, generated SQL statements
      - 2: In addition to (1), environment variables

Group 3 - Internal methods

The following parameters are set automatically but they can be get/set after object instantiation.

Parameter             Description                     Format
---------             -----------                     ------
cgi                   CGI object                      CGI ref
cgi_params            CGI params                      hashref
count                 Retrieved data count            scalar
count_sql_statement   Generated SQL statement for     scalar
                      retrieving count of results
data                  Retrieved data                  arrayref (each element is
                                                      an arrayref of a row)
debug_info            HTML code for retrieved debug   scalar
                      info based on debug level
db_display            Display name for the database   scalar
                      in effect
dbh                   Database handle                 DBI ref
db_selected           Database specified using the    scalar
                      database param in the URL
formatted_data        HTML code or text for of data   scalar
                      formatted based on output
                      format
modifications         Scheduled modifications         arrayref
param_fields          Stored HTML::SearchPage::Param  hashref
                      objects
query_sql_statement   Generated SQL statement for     scalar
                      retrieving results
search_form           HTML code for generated search  scalar
                      form
session               Session object                  CGI::Session ref
session_id            Session id                      scalar
super_output_headers  Headers and super               hashref
                      headers

OTHER

"db_access_params" can be specified in two forms:

The following format is used when there is only one database that the page will be running on.

db_access_params => [$datasource, $username, $password];

Alternatively, a set of databases can be specified and can be addressed by "database=<alias>" URL parameter.

db_access_params => {
    database => [
        {
          alias      => $alias,
          display    => 'Database 1',
          datasource => $datasource2,
          username   => $username2,
          password   => $password2,
         },
         {
          alias      => $alias,
          display    => 'Database 2',
          datasource => $datasource2,
          username   => $username2,
          password   => $password2,
         },
    ],
}

When multiple databases are provided, database selection is persistent between pages that use HTML::SearchPage. This feature requires cookies to be enabled.

AUTHOR

Payan Canaran <pcanaran@cpan.org>

BUGS

VERSION

Version 0.05

ACKNOWLEDGEMENTS

This module has been initially written for implementing search pages for displaying maize diversity data on Panzea (www.panzea.org), the public web site of the "Molecular and Functional Diversity of the Maize Genome" project. Thanks to project members for their feedback on user features and help in testing the web displays.

COPYRIGHT & LICENSE

Copyright (c) 2005-2007 Cold Spring Harbor Laboratory

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. See DISCLAIMER.txt for disclaimers of warranty.