App-Widget

 view release on metacpan or  search on metacpan

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


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

package App::Widget::ValidatedTextField;
$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::ValidatedTextField - 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::ValidatedTextField",
      size  => 8,                 # from HTML spec
      maxlength => 18,            # from HTML spec
      tabindex => 1,              # 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::ValidatedTextField;
   $w = App::Widget::ValidatedTextField->new($name);

=cut

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

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

# INPUTS FROM THE ENVIRONMENT

=head1 DESCRIPTION

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

=cut

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

sub set_value {
    my ($self, $value) = @_;
    my ($validate);
    $validate = $self->get("validate");
    $value = $self->format($validate,$value) if ($validate);
    $self->{context}->wset_value($self->{name}, $value);
}

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

    my ($validate, $value, $newvalue);
    $validate = $self->get("validate");

    $value = $self->{context}->wget($self->{name}, "");
    $value = "" if (!defined $value);
    if ($validate) {
        $newvalue = $self->format($validate,$value);
        if ($newvalue ne $value) {
            $self->{context}->wset_value($self->{name}, $value);
            $value = $newvalue;
        }
    }
    return $value;
}

# OBSOLETE: use set_value(), get_value()
#sub value {



( run in 0.524 second using v1.01-cache-2.11-cpan-f56aa216473 )