The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Waft - A simple web application framework

SYNOPSIS

    ==========================================================================
    myform.cgi
    --------------------------------------------------------------------------
    #!/usr/bin/perl
    use lib 'lib';
    require MyForm;
    MyForm->waft;

    ==========================================================================
    lib/MyForm.pm
    --------------------------------------------------------------------------
    package MyForm;

    use base 'Waft';

    sub __default__direct {
        my ($self) = @_;

        $self->{name} = q{};
        $self->{address} = q{};
        $self->{phone} = q{};
        $self->{comment} = q{};

        return 'TEMPLATE';
    }

    sub __default__submit {
        my ($self) = @_;

        $self->{name} = $self->query->param('name');
        $self->{address} = $self->query->param('address');
        $self->{phone} = $self->query->param('phone');
        $self->{comment} = $self->query->param('comment');

        return 'confirm.html';
    }

    sub __confirm__indirect {
        my ($self) = @_;

        return 'default.html', 'error!' if length $self->{name} == 0;

        return 'TEMPLATE';
    }

    sub __confirm__submit {
        return 'thankyou.html';
    }

    sub __confirm__back {
        return 'default.html';
    }

    sub __thankyou__indirect {
        my ($self) = @_;

        open my $fh, '>> form.log';
        print {$fh} $self->{name}, "\n";
        print {$fh} $self->{address}, "\n";
        print {$fh} $self->{phone}, "\n";
        print {$fh} $self->{comment}, "\n";
        close $fh;

        return 'TEMPLATE';
    }

    1;

    ==========================================================================
    lib/MyForm.template/default.html
    --------------------------------------------------------------------------
    <%
    my ($self, $error) = @_;
    %>
    <html>

    <head>
        <title>FORM</title>
    </head>

    <body>
        <% if ($error) { %>
            <p>
            <% = $error %>
            </p>
        <% } %>

        <form action="<% = $self->url %>" method="POST">

        <p>
        Name:
        <input type="text" name="name" value="<% = $self->{name} %>" />
        </p>

        <p>
        Address:
        <input type="text" name="address" value="<% = $self->{address} %>" />
        </p>

        <p>
        Phone:
        <input type="text" name="phone" value="<% = $self->{phone} %>" />
        </p>

        <p>
        Comment: <br />
        <textarea name="comment"><% = $self->{comment} %></textarea>
        </p>

        <p>
        <input type="submit" />
        </p>

        </form>
    </body>

    </html>

    ==========================================================================
    lib/MyForm.template/confirm.html
    --------------------------------------------------------------------------
    <%
    my ($self) = @_;
    %>
    <html>

    <head>
        <title>FORM - CONFIRM</title>
    </head>

    <body>
        <form action="<% = $self->url %>" method="POST">

        <p>
        Name: <% = $self->{name} %>
        </p>

        <p>
        Address: <% = $self->{address} %>
        </p>

        <p>
        Phone: <% = $self->{phone} %>
        </p>

        <p>
        Comment: <br />
        <% text = $self->{comment} %>
        </p>

        <p>
        <input type="submit" />
        <input type="submit" name="back" value="back to FORM" />
        </p>

        </form>
    </body>

    </html>

    ==========================================================================
    lib/MyForm.template/thankyou.html
    --------------------------------------------------------------------------
    <%
    my ($self) = @_;
    %>
    <html>

    <head>
        <title>FORM - THANKYOU</title>
    </head>

    <body>
        <p>
        Thank you for your comment!
        </p>

        <p>
        Name: <% = $self->{name} %>
        </p>

        <p>
        Address: <% = $self->{address} %>
        </p>

        <p>
        Phone: <% = $self->{phone} %>
        </p>

        <p>
        Comment: <br />
        <% text = $self->{comment} %>
        </p>
    </body>

    </html>

AUTHOR

Yuji Tamashiro, <yuji@tamashiro.org>

COPYRIGHT AND LICENSE

Copyright (C) 2007 by Yuji Tamashiro

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.