NAME
HTML::StickyQuery - add sticky QUERY_STRING
SYNOPSIS
use HTML::StickyQuery;
# create an object
my $s = HTML::StickyQuery->new(
regexp => '\.cgi$',
abs => 0,
keep_original => 1,
);
print $s->sticky(
file => 'foo.html',
param => { SESSIONID => 'xxx' }
);
or
my $q = CGI->new;
print $s->sticky(
file => 'foo.html',
param => $q,
sticky_keys => [qw(SESSIONID)]
);
DESCRIPTION
this module is a sub class of the HTML::Parser manpage. parse HTML
document and add QUERY_STRING to href attributes. Handy for maintaining
state without cookie or something, transparently.
if you want to use sticky CGI data via FORM. it is better to use the
HTML::FillInForm manpage.
CONSTRUCTOR
new(%option)
constructor of HTML::StickyQuery object. the options are below.
abs add QUERY_STRING to absolute URI or not. (default: 0)
override this option is obsolete. please use keep_original option.
keep_original
keep original QUERY_STRING or not. (default: 1) when this
option is false. all old QUERY_STRING is removed.
regexp regular expression of affected URI. (default: *none*)
METHODS
sticky(%options)
parse HTML and add QUERY_STRING. return HTML document. the options
are below.
file specify the HTML file.
scalarref
specify the HTML document as scalarref.
arrayref specify the HTML document as arrayref.
param QUERY_STRING data. as hashref or object which implements *param*
method. (eg. CGI, Apache::Request)
sticky_keys
specify sticky data keys as arrayref. any keys which are not in
this list are ignored. if not specified, all keys are kept.
EXAMPLES
KEEP SESSION ID
typical example of CGI application using session.
use the Apache::Session>,L<HTML::Template manpage and the
HTML::StickyQuery manpage
template file:
<html>
<head>
<title>Session Test</title>
</head>
<body>
COUNT: <TMPL_VAR NAME="count"><br>
<hr>
<a href="session.cgi">countup</a><br>
<hr>
</body>
</html>
session.cgi:
#!perl
use strict;
use CGI;
use HTML::Template;
use HTML::StickyQuery;
use Apache::Session::DB_File;
my %session;
my $cgi = CGI->new;
# create session.
my $id = $cgi->param('SESSIONID');
tie %session,'Apache::Session::DB_File',$id,{
FileName => './session.db',
LockDirectory => './lock'
};
$session{count} = $session{count} + 1;
my $tmpl = HTML::Template->new(filename => './test.html');
$tmpl->param(count => $session{count});
my $output = $tmpl->output;
# no COOKIE
print $cgi->header;
my $stq = HTML::StickyQuery->new;
print $stq->sticky(
scalarref => \$output,
param => { SESSIONID => $session{_session_id} }
);
KEEP SEARCH WORD IN HTML PAGING
template file (simplified):
<A href="./search.cgi?pagenum=<TMPL_VAR name=nextpage>">Next 20 results</A>
search.cgi:
#!perl
use CGI;
use HTML::StickyQuery;
use HTML::Template;
my $query = CGI->new;
my $tmpl = HTML::Template->new(filename => 'search.html');
# do searching with $query and put results into $tmpl
# ...
# set next page offset
$tmpl->param(nextpagee => $query->param('pagenum') + 1);
my $output = $tmpl->output;
my $sticky = HTML::StickyQuery->new(regexp => qr/search\.cgi$/);
print $query->header, $sticky->sticky(
scalarref => \$output,
param => $qyery,
sticky_keys => [qw(search)]
);
AUTHOR
IKEBE Tomohiro <ikebe@edge.co.jp>
SEE ALSO
the HTML::Parser manpage the HTML::FillInForm manpage
CREDITS
Fixes,Bug Reports.
Tatsuhiko Miyagawa <miyagawa@bulknews.net>
COPYRIGHT
Copyright(C) 2002 IKEBE Tomohiro All rights reserved.
This program is free software; you can redistribute it and/or modify it
under the same terms as Perl itself.