diff --git a/docs/changelog/7.x.x.txt b/docs/changelog/7.x.x.txt
index 60e54aab5..25b07a61c 100644
--- a/docs/changelog/7.x.x.txt
+++ b/docs/changelog/7.x.x.txt
@@ -2,7 +2,8 @@
- fixed: The indent loop of the Navigation wobject has an incorrect number of
iterations in some cases. (Martin Kamerbeek / Oqapi)
- fixed: Thingy: Setting the size of a field has no effect
-
+ - fixed: Form/* now all use getOriginalValue (split off from getDefaultValue) which resolves the Layout bug not being able to uncheck all hidden assets.
+ Tests were updated, but need are still lacking and need a major overhaul.
7.5.19
- fixed: paginator doesn't show correct number of page links with a limit applied
- fixed: user profile defaults can contain arbitrary perl code
diff --git a/lib/WebGUI/Form/Asset.pm b/lib/WebGUI/Form/Asset.pm
index 3d9409392..07a90277a 100644
--- a/lib/WebGUI/Form/Asset.pm
+++ b/lib/WebGUI/Form/Asset.pm
@@ -118,7 +118,8 @@ Formats as a link.
sub getValueAsHtml {
my $self = shift;
- my $asset = WebGUI::Asset->newByDynamicClass($self->session,$self->getDefaultValue);
+# my $asset = WebGUI::Asset->newByDynamicClass($self->session,$self->getDefaultValue);
+ my $asset = WebGUI::Asset->newByDynamicClass($self->session,$self->getOriginalValue);
if (defined $asset) {
return ''.$asset->getTitle.'';
}
@@ -148,7 +149,7 @@ Renders an asset selector.
sub toHtml {
my $self = shift;
- my $asset = WebGUI::Asset->newByDynamicClass($self->session, $self->getDefaultValue) || WebGUI::Asset->getRoot($self->session);
+ my $asset = WebGUI::Asset->newByDynamicClass($self->session, $self->getOriginalValue) || WebGUI::Asset->getRoot($self->session);
my $url = $asset->getUrl("op=formHelper;sub=assetTree;class=Asset;formId=".$self->get('id'));
$url .= ";classLimiter=".$self->get("class") if ($self->get("class"));
return WebGUI::Form::Hidden->new($self->session,
diff --git a/lib/WebGUI/Form/Attachments.pm b/lib/WebGUI/Form/Attachments.pm
index ce555d53a..a2840599e 100644
--- a/lib/WebGUI/Form/Attachments.pm
+++ b/lib/WebGUI/Form/Attachments.pm
@@ -148,7 +148,7 @@ Renders an attachments control.
sub toHtml {
my $self = shift;
- my @assetIds = @{$self->getDefaultValue};
+ my @assetIds = @{$self->getOriginalValue};
my $thumbnail = $self->get("thumbnailSize") || $self->session->setting->get("thumbnailSize");
my $image = $self->get("maxImageSize") || $self->session->setting->get("maxImageSize");
my $attachmentsList = "attachments=".join(";attachments=", @assetIds) if (scalar(@assetIds));
diff --git a/lib/WebGUI/Form/Button.pm b/lib/WebGUI/Form/Button.pm
index 6642db7c9..c89473be1 100644
--- a/lib/WebGUI/Form/Button.pm
+++ b/lib/WebGUI/Form/Button.pm
@@ -88,7 +88,7 @@ Renders a button.
sub toHtml {
my $self = shift;
- my $value = $self->fixQuotes($self->getDefaultValue);
+ my $value = $self->fixQuotes($self->getOriginalValue);
my $html = 'get("name").'" ' if ($self->get("name"));
$html .= 'id="'.$self->get('id').'" ' unless ($self->get('id') eq "_formId");
diff --git a/lib/WebGUI/Form/CheckList.pm b/lib/WebGUI/Form/CheckList.pm
index 62ba6001f..6959081a8 100644
--- a/lib/WebGUI/Form/CheckList.pm
+++ b/lib/WebGUI/Form/CheckList.pm
@@ -148,7 +148,7 @@ sub toHtml {
my $options = $self->getOptions;
foreach my $key (keys %{$options}) {
$i++;
- my @values = $self->getDefaultValue;
+ my @values = $self->getOriginalValue;
my $checked = (grep { $_ eq $key } @values)
? 1
: 0
diff --git a/lib/WebGUI/Form/Checkbox.pm b/lib/WebGUI/Form/Checkbox.pm
index fc827f5d5..acaf31188 100644
--- a/lib/WebGUI/Form/Checkbox.pm
+++ b/lib/WebGUI/Form/Checkbox.pm
@@ -118,7 +118,7 @@ Renders and input tag of type checkbox.
sub toHtml {
my $self = shift;
- my $value = $self->getDefaultValue;
+ my $value = $self->getOriginalValue;
$value = defined $value ? $self->fixMacros($self->fixQuotes($self->fixSpecialCharacters($value))) : '';
my $checkedText = $self->get("checked") ? ' checked="checked"' : '';
my $idText = $self->get('id') ? ' id="'.$self->get('id').'" ' : '';
diff --git a/lib/WebGUI/Form/Color.pm b/lib/WebGUI/Form/Color.pm
index a0fc1e8a3..482369dac 100644
--- a/lib/WebGUI/Form/Color.pm
+++ b/lib/WebGUI/Form/Color.pm
@@ -117,7 +117,7 @@ sub toHtml {
$style->setLink($url->extras('/colorpicker/colorpicker.css'),{ type=>'text/css', rel=>"stylesheet" });
$style->setScript($url->extras('/colorpicker/colorpicker.js'),{ type=>'text/javascript' });
my $id = $self->get("id");
- my $value = $self->getDefaultValue;
+ my $value = $self->getOriginalValue;
my $name = $self->get("name");
return qq{
get("value");
return $value if (defined $value);
+ return $self->getDefaultValue();
+}
+#-------------------------------------------------------------------
+
+=head2 getDefaultValue ( )
+
+Returns the "defaultValue" passed in to the object in that order
+
+=cut
+
+sub getDefaultValue {
+ my $self = shift;
return $self->get("defaultValue");
}
@@ -660,7 +672,7 @@ Renders the form field to HTML. This method should be overridden by all subclass
sub toHtml {
my $self = shift;
- return $self->get("value");
+ return $self->getOriginalValue();
}
#-------------------------------------------------------------------
@@ -673,7 +685,8 @@ Renders the form field to HTML as a hidden field rather than whatever field type
sub toHtmlAsHidden {
my $self = shift;
- return ''."\n";
+ return ''."\n";
}
#-------------------------------------------------------------------
diff --git a/lib/WebGUI/Form/DatabaseLink.pm b/lib/WebGUI/Form/DatabaseLink.pm
index 6651d1bb2..e92a82d2b 100644
--- a/lib/WebGUI/Form/DatabaseLink.pm
+++ b/lib/WebGUI/Form/DatabaseLink.pm
@@ -170,7 +170,7 @@ sub toHtmlWithWrapper {
if ($self->session->user->isInGroup(3)) {
my $subtext;
if ($self->get("afterEdit")) {
- $subtext = $self->session->icon->edit("op=editDatabaseLink;lid=".$self->getDefaultValue.";afterEdit=".$self->session->url->escape($self->get("afterEdit")));
+ $subtext = $self->session->icon->edit("op=editDatabaseLink;lid=".$self->getOriginalValue.";afterEdit=".$self->session->url->escape($self->get("afterEdit")));
}
$subtext .= $self->session->icon->manage("op=listDatabaseLinks");
$self->set("subtext", $subtext . $self->get("subtext"));
diff --git a/lib/WebGUI/Form/Date.pm b/lib/WebGUI/Form/Date.pm
index e7a3526ff..1f18905e3 100644
--- a/lib/WebGUI/Form/Date.pm
+++ b/lib/WebGUI/Form/Date.pm
@@ -54,11 +54,11 @@ The following additional parameters have been added via this sub class.
=head4 maxlength
-Defaults to 10. Determines the maximum number of characters allowed in this field.
+Originals to 10. Determines the maximum number of characters allowed in this field.
=head4 size
-Defaults to 10. The displayed size of the box for the date to be typed in.
+Originals to 10. The displayed size of the box for the date to be typed in.
=head4 noDate
@@ -66,7 +66,7 @@ A default date is placed in the value field. Set this to "1" to leave it empty.
=head4 defaultValue
-If no value is specified, this will be used. Defaults to today and now.
+If no value is specified, this will be used. Originals to today and now.
If the defaultValue is a MySQL date string, this form control will return MySQL
date strings instead of epoch times.
@@ -179,11 +179,11 @@ sub getValueAsHtml {
|| $self->get("defaultValue") =~ m/^\d+$/
|| !$self->get("value")
|| $self->get("value") =~ m/^\d+$/) {
- return $self->session->datetime->epochToHuman($self->getValue,"%z");
+ return $self->session->datetime->epochToHuman($self->getOriginalValue,"%z");
}
else {
# MySQL format
- my $value = $self->getDefaultValue;
+ my $value = $self->getOriginalValue;
return $value;
}
}
@@ -221,11 +221,11 @@ sub toHtml {
|| !$self->get("value")
|| $self->get("value") =~ m/^\d+$/) {
# Epoch format
- $value = $self->set("value",$self->session->datetime->epochToSet($self->getDefaultValue));
+ $value = $self->set("value",$self->session->datetime->epochToSet($self->getOriginalValue));
}
else {
# MySQL format
- $value = $self->getDefaultValue;
+ $value = $self->getOriginalValue;
# NOTE: Cannot fix time zone since we don't have a complete date/time
}
@@ -265,10 +265,10 @@ sub toHtmlAsHidden {
|| $self->get("defaultValue") =~ m/^\d+$/
|| !$self->get("value")
|| $self->get("value") =~ m/^\d+$/) {
- $value = $self->session->datetime->epochToSet($self->getDefaultValue,"%z");
+ $value = $self->session->datetime->epochToSet($self->getOriginalValue,"%z");
} else {
# MySQL format
- $value = $self->getDefaultValue;
+ $value = $self->getOriginalValue;
# NOTE: Cannot fix time zone since we don't have a complete date/time
}
diff --git a/lib/WebGUI/Form/DateTime.pm b/lib/WebGUI/Form/DateTime.pm
index 1bad4194a..8a20b293c 100644
--- a/lib/WebGUI/Form/DateTime.pm
+++ b/lib/WebGUI/Form/DateTime.pm
@@ -182,11 +182,11 @@ sub getValueAsHtml {
|| $self->get("defaultValue") =~ m/^\d+$/
|| !$self->get("value")
|| $self->get("value") =~ m/^\d+$/) {
- return $self->session->datetime->epochToHuman($self->getDefaultValue,"%z %Z");
+ return $self->session->datetime->epochToHuman($self->getOriginalValue,"%z %Z");
}
else {
# MySQL format
- my $value = $self->getDefaultValue;
+ my $value = $self->getOriginalValue;
# Fix time zone
$value = WebGUI::DateTime->new($self->session, mysql => $value)
->set_time_zone($self->get("timeZone"))
@@ -224,10 +224,10 @@ sub toHtml {
|| !$self->get("value")
|| $self->get("value") =~ m/^\d+$/) {
# Epoch format
- $value = $self->session->datetime->epochToSet($self->getDefaultValue,1);
+ $value = $self->session->datetime->epochToSet($self->getOriginalValue,1);
} else {
# MySQL format
- $value = $self->getDefaultValue;
+ $value = $self->getOriginalValue;
# Fix time zone
$value = WebGUI::DateTime->new($self->session, mysql => $value)
->set_time_zone($self->get("timeZone"))
@@ -269,10 +269,10 @@ sub toHtmlAsHidden {
|| $self->get("defaultValue") =~ m/^\d+$/
|| !$self->get("value")
|| $self->get("value") =~ m/^\d+$/) {
- $value = $self->session->datetime->epochToSet($self->getDefaultValue,1);
+ $value = $self->session->datetime->epochToSet($self->getOriginalValue,1);
} else {
# MySQL format
- $value = $self->getDefaultValue;
+ $value = $self->getOriginalValue;
# Fix Time zone
$value = WebGUI::DateTime->new($self->session, mysql => $value)
->set_time_zone($self->get("timeZone"))
diff --git a/lib/WebGUI/Form/Email.pm b/lib/WebGUI/Form/Email.pm
index 1c0eeb75a..c4cb15670 100644
--- a/lib/WebGUI/Form/Email.pm
+++ b/lib/WebGUI/Form/Email.pm
@@ -81,7 +81,7 @@ Formats as an email link.
sub getValueAsHtml {
my $self = shift;
- my $email = $self->getDefaultValue;
+ my $email = $self->getOriginalValue;
return ''.$email.'';
}
diff --git a/lib/WebGUI/Form/File.pm b/lib/WebGUI/Form/File.pm
index e61f61911..a5a22fb1b 100644
--- a/lib/WebGUI/Form/File.pm
+++ b/lib/WebGUI/Form/File.pm
@@ -154,7 +154,7 @@ Returns the WebGUI::Storage object for this control.
sub getStorageLocation {
my $self = shift;
- my $value = $self->getDefaultValue;
+ my $value = $self->getOriginalValue;
my $storage = WebGUI::Storage->get($self->session, $value) if ( defined $value );
return $storage;
}
@@ -210,7 +210,7 @@ Displays the file as a link.
sub getValueAsHtml {
my ($self) = @_;
- my $value = $self->getDefaultValue;
+ my $value = $self->getOriginalValue;
return '' unless $value;
my $location = WebGUI::Storage->get($self->session,$value);
my $file = shift @{ $location->getFiles };
@@ -274,7 +274,7 @@ sub toHtml {
else {
$uploadControl .= WebGUI::Form::Hidden->new($self->session, {
name => $self->get("name"),
- value => $self->getDefaultValue,
+ value => $self->getOriginalValue,
id => $self->get("id")
})->toHtml()." ";
$uploadControl .= WebGUI::Form::Hidden->new($self->session, {
diff --git a/lib/WebGUI/Form/Group.pm b/lib/WebGUI/Form/Group.pm
index 1a1e79a1e..dd500ec31 100644
--- a/lib/WebGUI/Form/Group.pm
+++ b/lib/WebGUI/Form/Group.pm
@@ -133,7 +133,7 @@ Formats as a name.
sub getValueAsHtml {
my $self = shift;
- my $group = WebGUI::Group->new($self->session, $self->getDefaultValue);
+ my $group = WebGUI::Group->new($self->session, $self->getOriginalValue);
if (defined $group) {
return $group->name;
}
diff --git a/lib/WebGUI/Form/Hidden.pm b/lib/WebGUI/Form/Hidden.pm
index 18f10a8f9..cc2db8846 100644
--- a/lib/WebGUI/Form/Hidden.pm
+++ b/lib/WebGUI/Form/Hidden.pm
@@ -97,7 +97,7 @@ Renders an input tag of type hidden.
sub toHtmlAsHidden {
my $self = shift;
- my $value = $self->getDefaultValue;
+ my $value = $self->getOriginalValue;
$value = defined $value ? $self->fixMacros($self->fixQuotes($self->fixSpecialCharacters($value))) : '';
my $idText = $self->get('id') ? ' id="'.$self->get('id').'" ' : '';
return 'get("extras")||'').$idText.' />'."\n";
diff --git a/lib/WebGUI/Form/Image.pm b/lib/WebGUI/Form/Image.pm
index 9a2a0a630..8b27bf5d5 100644
--- a/lib/WebGUI/Form/Image.pm
+++ b/lib/WebGUI/Form/Image.pm
@@ -132,7 +132,7 @@ Returns the WebGUI::Storage object for this control.
sub getStorageLocation {
my $self = shift;
- my $value = $self->getDefaultValue;
+ my $value = $self->getOriginalValue;
my $storage = WebGUI::Storage::Image->get($self->session, $value) if ($value);
return $storage;
}
@@ -181,7 +181,7 @@ Displays the image using an img tag.
sub getValueAsHtml {
my ($self) = @_;
- my $value = $self->getDefaultValue;
+ my $value = $self->getOriginalValue;
return '' unless $value;
my $location = WebGUI::Storage::Image->get($self->session, $value);
my $file = shift @{ $location->getFiles };
diff --git a/lib/WebGUI/Form/IntSlider.pm b/lib/WebGUI/Form/IntSlider.pm
index 47d1d8a95..329751635 100644
--- a/lib/WebGUI/Form/IntSlider.pm
+++ b/lib/WebGUI/Form/IntSlider.pm
@@ -89,7 +89,7 @@ sub getInputElement {
return WebGUI::Form::Integer($self->session, {
name => $self->get('name'),
- value => $self->get('value'),
+ value => $self->getValue(),
size => $self->get('size'),
id => 'view-'.$self->get('id'),
});
diff --git a/lib/WebGUI/Form/Interval.pm b/lib/WebGUI/Form/Interval.pm
index f7f693a61..b062b3709 100644
--- a/lib/WebGUI/Form/Interval.pm
+++ b/lib/WebGUI/Form/Interval.pm
@@ -149,7 +149,7 @@ sub toHtml {
'weeks'=>$i18n->get(701),
'months'=>$i18n->get(702),
'years'=>$i18n->get(703));
- my ($interval, $units) = $self->session->datetime->secondsToInterval($self->getDefaultValue);
+ my ($interval, $units) = $self->session->datetime->secondsToInterval($self->getOriginalValue);
# not sure why, but these things need to be defined like this or
# they fail under some circumstnaces
my $cmd = "WebGUI::Form::Integer";
@@ -180,7 +180,7 @@ Returns the field as hidden controls rather than displayable controls.
sub toHtmlAsHidden {
my $self = shift;
- my ($interval, $units) = $self->session->datetime->secondsToInterval($self->getDefaultValue);
+ my ($interval, $units) = $self->session->datetime->secondsToInterval($self->getOriginalValue);
return WebGUI::Form::Hidden->new($self->session,
name=>$self->get("name").'_interval',
value=>$interval
diff --git a/lib/WebGUI/Form/LdapLink.pm b/lib/WebGUI/Form/LdapLink.pm
index 87ae2e913..9fc357659 100644
--- a/lib/WebGUI/Form/LdapLink.pm
+++ b/lib/WebGUI/Form/LdapLink.pm
@@ -191,7 +191,7 @@ sub toHtmlWithWrapper {
if ($self->session->user->isInGroup(3)) {
my $subtext;
if ($self->get("afterEdit")) {
- $subtext = $self->session->icon->edit("op=editLDAPLink;llid=".$self->getDefaultValue.";afterEdit=".$self->session->url->escape($self->get("afterEdit")));
+ $subtext = $self->session->icon->edit("op=editLDAPLink;llid=".$self->getOriginalValue.";afterEdit=".$self->session->url->escape($self->get("afterEdit")));
}
$subtext .= $self->session->icon->manage("op=listLDAPLinks");
$self->set("subtext", $subtext . $self->get("subtext"));
diff --git a/lib/WebGUI/Form/List.pm b/lib/WebGUI/Form/List.pm
index bd6bdc740..60f0de6be 100644
--- a/lib/WebGUI/Form/List.pm
+++ b/lib/WebGUI/Form/List.pm
@@ -203,6 +203,7 @@ Optional values to process, instead of POST input.
sub getValue {
my ($self, $value) = @_;
+
my @values = ();
if (defined $value) {
if (ref $value eq "ARRAY") {
@@ -236,7 +237,47 @@ Returns the either the "value" ore "defaultValue" passed in to the object in tha
sub getDefaultValue {
my $self = shift;
my @values = ();
- foreach my $value ($self->get("value"), $self->get("defaultValue")) {
+
+ foreach my $value ($self->get('defaultValue')) {
+ if (scalar @values < 1 && defined $value) {
+ if (ref $value eq "ARRAY") {
+ @values = @{$value};
+ }
+ else {
+ $value =~ s/\r//g;
+ @values = split "\n", $value;
+ }
+ }
+ }
+ return wantarray ? @values : join("\n",@values);
+}
+
+
+=head2 getOriginalValue ( )
+
+Returns the either the "value" ore "defaultValue" passed in to the object in that order, and doesn't take into account form processing.
+
+=cut
+
+sub getOriginalValue {
+ my $self = shift;
+ my @values = ();
+ foreach my $value ($self->get("value")) {
+ if (scalar @values < 1 && defined $value) {
+ if (ref $value eq "ARRAY") {
+ @values = @{$value};
+ }
+ else {
+ $value =~ s/\r//g;
+ @values = split "\n", $value;
+ }
+ }
+ }
+ if(@values){
+ return wantarray ? @values : join("\n",@values);
+ }
+
+ foreach my $value ($self->getDefaultValue()) {
if (scalar @values < 1 && defined $value) {
if (ref $value eq "ARRAY") {
@values = @{$value};
@@ -261,7 +302,7 @@ Return all the options
sub getValueAsHtml {
my ($self) = @_;
my $options = $self->getOptions;
- return join ", ", map { $options->{$_} } $self->getDefaultValue;
+ return join ", ", map { $options->{$_} } $self->getOriginalValue;
}
#-------------------------------------------------------------------
@@ -290,7 +331,7 @@ sub toHtmlAsHidden {
my $self = shift;
my $options = $self->getOptions();
my $output;
- my @values = $self->getDefaultValue();
+ my @values = $self->getOriginalValue();
foreach my $key (keys %{$options}) {
foreach my $item (@values) {
if ($item eq $key) {
diff --git a/lib/WebGUI/Form/Password.pm b/lib/WebGUI/Form/Password.pm
index b291e1f07..62be99b74 100644
--- a/lib/WebGUI/Form/Password.pm
+++ b/lib/WebGUI/Form/Password.pm
@@ -119,7 +119,7 @@ Renders an input tag of type password.
sub toHtml {
my $self = shift;
- my $html = 'get("maxlength").'" ' if ($self->get("maxlength"));
$html .= $self->get("extras").' />';
return $html;
diff --git a/lib/WebGUI/Form/Radio.pm b/lib/WebGUI/Form/Radio.pm
index 4064c79e2..e778c9933 100644
--- a/lib/WebGUI/Form/Radio.pm
+++ b/lib/WebGUI/Form/Radio.pm
@@ -100,7 +100,7 @@ Renders and input tag of type radio.
sub toHtml {
my$self = shift;
- my $value = $self->get('value');
+ my $value = $self->getOriginalValue();
$value = defined $value ? $self->fixMacros($self->fixQuotes($self->fixSpecialCharacters($value))) : '';
my $checkedText = $self->get("checked") ? ' checked="checked"' : '';
my $idText = $self->get('id') ? ' id="'.$self->get('id').'" ' : '';
diff --git a/lib/WebGUI/Form/RadioList.pm b/lib/WebGUI/Form/RadioList.pm
index 5789a5bad..6f9c891c4 100644
--- a/lib/WebGUI/Form/RadioList.pm
+++ b/lib/WebGUI/Form/RadioList.pm
@@ -110,6 +110,19 @@ sub getDefaultValue {
#-------------------------------------------------------------------
+=head2 getOriginalValue( [ value ] )
+
+See WebGUI::Form::Control::getOriginalValue()
+
+=cut
+
+sub getOriginalValue{
+ my $self = shift;
+ return $self->WebGUI::Form::Control::getOriginalValue(@_);
+}
+
+#-------------------------------------------------------------------
+
=head2 isDynamicCompatible ( )
A class method that returns a boolean indicating whether this control is compatible with the DynamicField control.
@@ -137,7 +150,7 @@ sub toHtml {
foreach my $key (keys %{$options}) {
$i++;
my $checked = 0;
- if ($self->get('value') eq $key) {
+ if ($self->getOriginalValue() eq $key) {
$checked = 1;
}
$output .= WebGUI::Form::Radio->new($self->session, {
diff --git a/lib/WebGUI/Form/ReadOnly.pm b/lib/WebGUI/Form/ReadOnly.pm
index 3367b5e64..b5976eb26 100644
--- a/lib/WebGUI/Form/ReadOnly.pm
+++ b/lib/WebGUI/Form/ReadOnly.pm
@@ -84,7 +84,7 @@ Renders the value.
sub toHtml {
my $self = shift;
- return $self->getDefaultValue;
+ return $self->getOriginalValue;
}
#-------------------------------------------------------------------
diff --git a/lib/WebGUI/Form/SelectBox.pm b/lib/WebGUI/Form/SelectBox.pm
index 6f039a5e9..bd61989e7 100644
--- a/lib/WebGUI/Form/SelectBox.pm
+++ b/lib/WebGUI/Form/SelectBox.pm
@@ -115,16 +115,30 @@ Returns the either the "value" ore "defaultValue" passed in to the object in tha
sub getDefaultValue {
my $self = shift;
- my $value = $self->get("value");
- unless (defined $value) {
- $value = $self->get("defaultValue");
- }
+ my $value = $self->get("defaultValue");
if (ref $value eq 'ARRAY') {
$value = $value->[0];
}
return $value;
}
+=head2 getOriginalValue ( )
+
+Returns the either the "value" ore "defaultValue" passed in to the object in that order, and doesn't take into account form processing.
+
+=cut
+
+sub getOriginalValue {
+ my $self = shift;
+ my $value = $self->get("value");
+ unless (defined $value) {
+ $value = $self->getDefaultValue();
+ }
+ if (ref $value eq 'ARRAY') {
+ $value = $value->[0];
+ }
+ return $value;
+}
#-------------------------------------------------------------------
@@ -150,7 +164,7 @@ sub toHtml {
my $self = shift;
my $output = '