App-Widget

 view release on metacpan or  search on metacpan

lib/App/Widget/DateField.pm  view on Meta::CPAN


######################################################################
## $Id: DateField.pm 3668 2006-03-11 20:51:13Z spadkins $
######################################################################

package App::Widget::DateField;
$VERSION = (q$Revision: 3668 $ =~ /(\d[\d\.]*)/)[0];  # VERSION numbers generated by svn

use App;
use App::Widget::TextField;
@ISA = ( "App::Widget::TextField" );

use strict;

=head1 NAME

App::Widget::DateField - An HTML text field

=head1 SYNOPSIS

   $name = "first_name";
   # official way
   use App;
   $context = App->context();
   $w = $context->widget($name);
   # OR ...
   $w = $context->widget($name,
      class => "App::Widget::DateField",
      size  => 8,                 # from HTML spec
      maxlength => 18,            # from HTML spec
      style => "mystyle",         # from HTML to support CSS
      color => "#6666CC",         # from CSS spec
      font_size => "10px",        # from CSS spec
      border_style => "solid",    # from CSS spec
      border_width => "1px",      # from CSS spec
      border_color => "#6666CC",  # from CSS spec
      padding => "2px",           # from CSS spec
      background_color => "#ccffcc",           # from CSS spec
      font_family => "Verdana, Geneva, Arial", # from CSS spec
      override => 1,              # increase precedence of following options to "override" from "default"
      #validate => "date",         # not impl. yet ("date", "time", "datetime", "enum", "number", "integer", ":regexp")
      #autocomplete => \@previous_choices,  # not impl. yet
   );

   # internal way
   use App::Widget::DateField;
   $w = App::Widget::DateField->new($name);

=cut

######################################################################
# CONSTANTS
######################################################################

######################################################################
# ATTRIBUTES
######################################################################

# INPUTS FROM THE ENVIRONMENT

=head1 DESCRIPTION

This class is a <input type=text> HTML element.

=cut

######################################################################
# INITIALIZATION
######################################################################

# no special initialization

######################################################################
# EVENTS
######################################################################

# no events

######################################################################
# METHODS
######################################################################

sub value {
    my ($self, $value) = @_;
    if (defined $value) {
        if ($value !~ /^[0-9]{4}-[0-9]{2}-[0-9]{2}$/) {
            $value = $self->format_date($value);
        }
        $self->{context}->wvalue($self->{name}, $value);
    }
    else {
        $value = $self->{context}->wvalue($self->{name});
        if ($value ne "" && $value !~ /^[0-9]{4}-[0-9]{2}-[0-9]{2}$/) {
            $value = $self->format_date($value);
            $self->{context}->wvalue($self->{name}, $value);
        }
        return $value;
    }
}

sub get_value {
    my ($self, $default, $setdefault) = @_;
    $self->{context}->wget($self->{name}, "", $default, $setdefault);
}

sub fget_value {
    my ($self, $format) = @_;
    $format = $self->get("format") if (!defined $format);
    if (! defined $format) {
        return $self->{context}->wget($self->{name}, "", "");
    }
    else {
        my ($value, $type);
        $type = $self->get("validate");
        $value = $self->{context}->wget($self->{name}, "", "");
        if ($type) {
            $value = App::Widget->format($value, $type, $format);
        }
        return $value;



( run in 0.506 second using v1.01-cache-2.11-cpan-39bf76dae61 )