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>

DESCRIPTION

set_waft_backword_compatible_version

set_default_content_type

use_utf8

AUTHOR

Yuji Tamashiro, <yuji@tamashiro.org>

COPYRIGHT AND LICENSE

Copyright (C) 2007, 2008 by Yuji Tamashiro

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