NAME

CGI::Application::Dispatch::BuildURI - Build URI including full path_info in CGI::Application::Dispatch

SYNOPSIS

# in your CGI::Application module
use CGI::Application::Dispatch::BuildURI;
sub some_rm
{
    my $self = shift;
    my $location = $self->build_uri(
        module => 'some_module',
        rm => 'some_rm',
        query_string => 'key=value',
    );
    # $location is http://www.example.com/example.cgi/some_module/some_rm?key=value
}

sub cgiapp_prerun
{
    my $self = shift;
    $self->move_uri();
}  

DESCRIPTION

This module provides a easier way to treat relative path in template files when using CGI::Application::Dispatch.

When we use CGI::Application::Dispatch, we get follow URIs and URIs return same page.

1. http://www.example.com/example.cgi
2. http://www.example.com/example.cgi/some_module
3. http://www.example.com/example.cgi/some_module/some_rm

If we write relative path in template files, we are confused to treat relative path. For example, this link is work on URI 1 but don't work on URI 2 and 3.

<a href="./example.cgi/another_module/another_rm">another page</a>

This module provides build_uri() method. This method is create URI that including full path_info, like URI 3.

METHODS

build_uri

build_uri() method receive three arguments and generate URI that including full path_info. Three arguments are 'module', 'rm', 'query_string'. 'module' is your package name. 'module' is used lower characters all of the time. 'rm' is your run_mode. 'query_string' is $ENV{QUERY_STRING}. If these arguments does not set, build_uri() automatically fill empty argument by default setting value.

move_uri

move_uri() method work two things, generate URI by build_uri and redirect to that URI. Redirection is provided by CGI::Application::Plugin::Redirect. move_uri() is for laziness. This is useful in cgiapp_prerun() method.

cgiapp_prerun {
  my $self = shift;
  $self->move_uri();
}

You get full-path_info-including URI anytime. If you use this method in your cgiapp's base class, you only call move_uri one time on your base class's cgiapp_prerun() method.

SEE ALSO

CGI::Application, CGI::Application::Dispatch, CGI::Application::Plugin::Redirect

If you have a mailing list set up for your module, mention it here.

If you have a web site set up for your module, mention it here.

AUTHOR

Kensuke Kaneko <kyanny@gmail.com>

COPYRIGHT AND LICENSE

Copyright (C) 2005 by Kensuke Kaneko. All rights reserved.

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.6 or, at your option, any later version of Perl 5 you may have available.