Rose-HTML-Objects

 view release on metacpan or  search on metacpan

lib/Rose/HTML/Form/Field/DateTime/Split/MDYHMS.pm  view on Meta::CPAN

package Rose::HTML::Form::Field::DateTime::Split::MDYHMS;

use strict;

use Rose::DateTime::Util();

use Rose::HTML::Form::Field::DateTime::Split::MonthDayYear;
use Rose::HTML::Form::Field::Time::Split::HourMinuteSecond;

use base 'Rose::HTML::Form::Field::DateTime::Split';

our $VERSION = '0.550';

sub build_field
{
  my($self) = shift;

  $self->add_fields
  (
    date => 'datetime split mdy',
    time => 'time split hms',
  );
}

sub decompose_value
{
  my($self, $value) = @_;

  return undef  unless(defined $value);

  my $date = $self->SUPER::inflate_value($value);

  unless($date)
  {
    no warnings;
    return
    {
      date  => substr($value, 0, 10) || '',
      time  => substr($value, 10) || '',
    }
  }

  my($mdy, $time) = Rose::DateTime::Util::format_date($date, '%m/%d/%Y', '%I:%M:%S %p');

  return
  {
    date => $mdy,
    time => $time,
  };
}

sub coalesce_value
{
  my($self) = shift;
  return join(' ', map { defined($_) ? $_ : '' } 
                   map { $self->field($_)->output_value }  qw(date time));
}

sub is_full
{
  my($self) = shift;

  my $count = grep { defined && length } 
              map { $self->field($_)->internal_value }  qw(date time);

  return $count == 2 ? 1 : 0;
}

sub deflate_value
{
  my($self, $date) = @_;
  return $self->input_value_filtered  unless($date);
  return Rose::DateTime::Util::format_date($date, '%m/%d/%Y %I:%M:%S %p');
}

sub html_field
{
  my($self) = shift;

  return '<span class="datetime">' .



( run in 0.944 second using v1.01-cache-2.11-cpan-71847e10f99 )