fixed: problem with Calendar in EMS "Ticket" tab, "Start" field

This commit is contained in:
Yung Han Khoe 2008-07-20 22:57:16 +00:00
parent 5d333e0ee7
commit fb4eff7c4a
4 changed files with 48 additions and 20 deletions

View file

@ -13,6 +13,7 @@
an alias to getValueFromForm instead of vice-versa. getValue is still the preferred
method, getValueFromForm is still the deprecated method.
- fixed: Image Collateral Uploader in Rich Editor now works correctly
- fixed: problem with Calendar in EMS "Ticket" tab, "Start" field
7.5.17
- fixed: Payment Methods Hover Help Incomplete

View file

@ -95,13 +95,12 @@ sub definition {
label => $i18n->get("event number"),
hoverHelp => $i18n->get("event number help"),
},
startDate => {
tab => "properties",
fieldType => "dateTime",
defaultValue => $date->toDatabase,
label => $i18n->get("add/edit event start date"),
hoverHelp => $i18n->get("add/edit event start date help"),
},
startDate => {
noFormPost => 1,
fieldType => "hidden",
defaultValue => $date->toDatabase,
autoGenerate => 0,
},
duration => {
tab => "properties",
fieldType => "float",
@ -252,6 +251,9 @@ sub getEditForm {
my $self = shift;
my $form = $self->SUPER::getEditForm(@_);
my $metadata = JSON->new->utf8->decode($self->get("eventMetaData") || '{}');
my $i18n = WebGUI::International->new($self->session, "Asset_EventManagementSystem");
my $date = WebGUI::DateTime->new($self->session, time());
foreach my $field (@{$self->getParent->getEventMetaFields}) {
$form->getTab("meta")->DynamicField(
name => "eventmeta ".$field->{label},
@ -262,6 +264,14 @@ sub getEditForm {
label => $field->{label},
);
}
$form->getTab("properties")->DateTime(
name => "startDate",
defaultValue => $date->toDatabase,
label => $i18n->get("add/edit event start date"),
hoverHelp => $i18n->get("add/edit event start date help"),
timeZone => $self->getParent->get("timezone"),
value => $self->get("startDate"),
);
return $form;
}
@ -400,7 +410,10 @@ sub processPropertiesFromFormPost {
$metadata{$field->{label}} = $form->process('eventmeta '.$field->{label}, $field->{dataType},
{ defaultValue => $field->{defaultValues}, options => $field->{possibleValues}});
}
$self->update({eventMetaData => JSON->new->utf8->encode(\%metadata)});
my $date = WebGUI::DateTime->new($self->session, time())->toDatabase;
my $startDate = $form->process('startDate', "dateTime", $date,
{ defaultValue => $date, timeZone => $self->getParent->get("timezone")});
$self->update({eventMetaData => JSON->new->utf8->encode(\%metadata), startDate => $startDate});
}
#-------------------------------------------------------------------

View file

@ -1026,7 +1026,9 @@ className='WebGUI::Asset::Sku::EMSTicket' and state='published' and revisionDate
foreach my $field (keys %{$meta}) {
$description .= '<p><b>'.$field.'</b>: '.$meta->{$field}.'</p>' unless ($meta->{$field} eq "");
}
my $date = WebGUI::DateTime->new($session, $ticket->get('startDate'));
my $date = WebGUI::DateTime->new($session, mysql => $ticket->get('startDate'))
->set_time_zone($self->get("timezone"))
->webguiDate("%W %z %Z");
push(@records, {
title => $ticket->getTitle,
description => $description,
@ -1038,7 +1040,7 @@ className='WebGUI::Asset::Sku::EMSTicket' and state='published' and revisionDate
assetId => $ticket->getId,
eventNumber => $ticket->get('eventNumber'),
location => $ticket->get('location'),
startDate => $date->webguiDate("%W @ %H:%n%p"),
startDate => $date,
duration => $ticket->get('duration'),
});
last unless (scalar(@records) < $numberOfResults);

View file

@ -66,8 +66,13 @@ Defaults to 19. The displayed size of the box for the date to be typed in.
If no value is specified, this will be used. Defaults to today and now.
If the defaultValue is a MySQL date/time string, this form control will return
MySQL date/time strings adjusted for the user's time zone.
=head4 timeZone
The time zone in which MySQL date/time strings are entered. Values selected using
this form control will be converted from this time zone to UTC. This control will
return MySQL date/time strings adjusted for this time zone.
Defaults to the users time zone.
=cut
@ -85,6 +90,9 @@ sub definition {
size=>{
defaultValue=> 19
},
timeZone=>{
defaultValue=> $session->user->profileField("timeZone")
},
});
return $class->SUPER::definition($session, $definition);
}
@ -143,8 +151,8 @@ sub getValue {
unless ($value =~ m/(?:\d{2}|\d{4})\D\d{2}\D\d{2}\D\d{2}\D\d{2}\D\d{2}/);
# Fix time zone
$value = WebGUI::DateTime->new(mysql => $value, time_zone => $self->session->user->profileField("timeZone"))
->set_time_zone("UTC")->toMysql;
$value = WebGUI::DateTime->new(mysql => $value, time_zone => $self->get("timeZone"))
->set_time_zone("UTC")->toMysql;
return $value;
}
@ -170,6 +178,10 @@ sub getValueAsHtml {
else {
# MySQL format
my $value = $self->getDefaultValue;
# Fix time zone
$value = WebGUI::DateTime->new($self->session, mysql => $value)
->set_time_zone($self->get("timeZone"))
->strftime("%Y-%m-%d %H:%M:%S");
return $value;
}
}
@ -208,9 +220,9 @@ sub toHtml {
# MySQL format
$value = $self->getDefaultValue;
# Fix time zone
$value = WebGUI::DateTime->new($value)
->set_time_zone($self->session->user->profileField("timeZone"))
->toMysql;
$value = WebGUI::DateTime->new($self->session, mysql => $value)
->set_time_zone($self->get("timeZone"))
->strftime("%Y-%m-%d %H:%M:%S");
}
$self->session->style->setLink($self->session->url->extras('yui/build/calendar/assets/skins/sam/calendar.css'), { rel=>"stylesheet", type=>"text/css", media=>"all" });
$self->session->style->setScript($self->session->url->extras('yui/build/yahoo/yahoo-min.js'),{ type=>'text/javascript' });
@ -253,9 +265,9 @@ sub toHtmlAsHidden {
# MySQL format
$value = $self->getDefaultValue;
# Fix Time zone
$value = WebGUI::DateTime->new($value)
->set_time_zone($self->session->user->profileField("timeZone"))
->toMysql;
$value = WebGUI::DateTime->new($self->session, mysql => $value)
->set_time_zone($self->get("timeZone"))
->strftime("%Y-%m-%d %H:%M:%S");
}
return WebGUI::Form::Hidden->new(