#!/usr/bin/perl use strict; use warnings; package Widget::Date; use Moose; use Date::Calc qw/check_date Today/; has 'day' => ( is => 'rw' ); has 'month' => ( is => 'rw' ); has 'year' => ( is => 'rw' ); has 'name' => ( is => 'rw' ); sub set_today { my $self = shift; ($self->{'year'}, $self->{'month'}, $self->{'day'}) = Today; } sub is_valid { my $self = shift; return check_date($self->year, $self->month, $self->day); } sub as_text { my $self = shift; return $self->day . '.' . $self->month . '.' . $self->year; } sub from_cgi { my $self = shift; my $q = shift; die 'Widget::Date->from_cgi_query needs a CGI-object!' unless ref $q eq 'CGI'; $self->day($q->param($self->name . '_d')); $self->month($q->param($self->name . '_m')); $self->year($q->param($self->name . '_y')); } sub as_form { my $self = shift; my $o = '' . "\n" . " " . "\n"; $o .= '' . "\n" . " " . "\n"; $o .= '' . "\n" . " " . "\n"; return $o; } 1;