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
      );

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)

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 => { search => $query->param('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.