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

XAO::DO::Web::Cookie - cookies manipulations

=head1 SYNOPSIS

 Hello, <%Cookie/html name="customername"%>

 <%Cookie name="customername" value={<%CgiParam/f param="cname"%>}"%>

=head1 DESCRIPTION

Displays or sets a cookie. Arguments are:

  name => cookie name
  value => cookie value; nothing is displayed if value is given
  default => what to display if there is no cookie set, nothing by default
  expires => when to expire the cookie (same as in CGI->cookie)
  path => cookie visibility path (same as in CGI->cookie)
  domain => cookie domain (same as in CGI->cookie)
  secure => cookie secure flag (same as in CGI->cookie)

=cut

###############################################################################
package XAO::DO::Web::Cookie;
use strict;
use XAO::Utils;
use base XAO::Objects->load(objname => 'Web::Page');

use vars qw($VERSION);
$VERSION=(0+sprintf('%u.%03u',(q$Id: Cookie.pm,v 2.1 2005/01/14 01:39:57 am Exp $ =~ /\s(\d+)\.(\d+)\s/))) || die "Bad VERSION";

sub display ($;%) {
    my $self=shift;
    my $args=get_args(\@_);

    my $cgi=$self->siteconfig->cgi;

    my $name=$args->{name};
    defined($name) || $self->throw("display - no name given");

    if(defined($args->{value})) {
        my $value=$args->{value};
        dprint "Adding a cookie, name='$name', value='$value'";
        my $c=$cgi->cookie(-name => $name,
                           -value => $value,
                           -expires => $args->{expires},
                           -path => $args->{path},
                           -domain => $args->{domain},
                           -secure => $args->{secure});
        $self->siteconfig->add_cookie($c);
        return;
    }

    my $c=$cgi->cookie($name) || $args->{default} || '';

    $self->textout($c);
}

###############################################################################
1;
__END__

=head1 METHODS

No publicly available methods except overriden display().

=head1 EXPORTS

Nothing.

=head1 AUTHOR

Copyright (c) 2005 Andrew Maltsev

Copyright (c) 2001-2004 Andrew Maltsev, XAO Inc.

<am@ejelta.com> -- http://ejelta.com/xao/

=head1 SEE ALSO

Recommended reading:
L<XAO::Web>,
L<XAO::DO::Web::Page>.