Form/* now all use getOriginalValue and getDefaultValue. This resolves the Layout bug where all the check lists could not be unchecked. Tests were updated, but still need a major overhaul.
This commit is contained in:
parent
96b7047d22
commit
173c2a12cd
42 changed files with 173 additions and 76 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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 '<a href="'.$asset->getUrl.'">'.$asset->getTitle.'</a>';
|
||||
}
|
||||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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));
|
||||
|
|
|
|||
|
|
@ -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 = '<input type="button" ';
|
||||
$html .= 'name="'.$self->get("name").'" ' if ($self->get("name"));
|
||||
$html .= 'id="'.$self->get('id').'" ' unless ($self->get('id') eq "_formId");
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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').'" ' : '';
|
||||
|
|
|
|||
|
|
@ -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{<a href="javascript:YAHOO.WebGUI.Form.ColorPicker.display('$id', '${id}_swatch');" id="${id}_swatch" class="colorPickerFormSwatch" style="background-color: $value"></a>
|
||||
<input onchange="YAHOO.util.Dom.setStyle('${id}_swatch', 'background-color', this.value)"
|
||||
|
|
|
|||
|
|
@ -411,16 +411,28 @@ sub getValue {
|
|||
|
||||
#-------------------------------------------------------------------
|
||||
|
||||
=head2 getDefaultValue ( )
|
||||
=head2 getOriginalValue ( )
|
||||
|
||||
Returns the either the "value" or "defaultValue" passed in to the object in that order, and doesn't take into account form processing.
|
||||
|
||||
=cut
|
||||
|
||||
sub getDefaultValue {
|
||||
sub getOriginalValue {
|
||||
my $self = shift;
|
||||
my $value = $self->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 '<input type="hidden" name="'.$self->get("name").'" value="'.$self->fixQuotes($self->fixMacros($self->fixSpecialCharacters($self->get("value")))).'" />'."\n";
|
||||
return '<input type="hidden" name="'.$self->get("name").'" value="'.
|
||||
$self->fixQuotes($self->fixMacros($self->fixSpecialCharacters($self->getOriginalValue()))).'" />'."\n";
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
|
|
|
|||
|
|
@ -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"));
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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"))
|
||||
|
|
|
|||
|
|
@ -81,7 +81,7 @@ Formats as an email link.
|
|||
|
||||
sub getValueAsHtml {
|
||||
my $self = shift;
|
||||
my $email = $self->getDefaultValue;
|
||||
my $email = $self->getOriginalValue;
|
||||
return '<a href="mailto:'.$email.'">'.$email.'</a>';
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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()."<br />";
|
||||
$uploadControl .= WebGUI::Form::Hidden->new($self->session, {
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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 '<input type="hidden" name="'.($self->get("name")||'').'" value="'.$value.'" '.($self->get("extras")||'').$idText.' />'."\n";
|
||||
|
|
|
|||
|
|
@ -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 };
|
||||
|
|
|
|||
|
|
@ -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'),
|
||||
});
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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"));
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -119,7 +119,7 @@ Renders an input tag of type password.
|
|||
|
||||
sub toHtml {
|
||||
my $self = shift;
|
||||
my $html = '<input type="password" name="'.$self->get("name").'" value="'.$self->fixQuotes($self->getDefaultValue).'" size="'.$self->get("size").'" id="'.$self->get('id').'" ';
|
||||
my $html = '<input type="password" name="'.$self->get("name").'" value="'.$self->fixQuotes($self->getOriginalValue).'" size="'.$self->get("size").'" id="'.$self->get('id').'" ';
|
||||
$html .= 'maxlength="'.$self->get("maxlength").'" ' if ($self->get("maxlength"));
|
||||
$html .= $self->get("extras").' />';
|
||||
return $html;
|
||||
|
|
|
|||
|
|
@ -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').'" ' : '';
|
||||
|
|
|
|||
|
|
@ -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, {
|
||||
|
|
|
|||
|
|
@ -84,7 +84,7 @@ Renders the value.
|
|||
|
||||
sub toHtml {
|
||||
my $self = shift;
|
||||
return $self->getDefaultValue;
|
||||
return $self->getOriginalValue;
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
|
|
|
|||
|
|
@ -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 = '<select name="'.($self->get("name")||'').'" size="'.($self->get("size")||'').'" id="'.($self->get('id')||'').'" '.($self->get("extras")||'').'>';
|
||||
my $options = $self->getOptions;
|
||||
my $value = $self->getDefaultValue();
|
||||
my $value = $self->getOriginalValue();
|
||||
foreach my $key (keys %{$options}) {
|
||||
$output .= '<option value="'.$key.'"';
|
||||
if ($value eq $key) {
|
||||
|
|
|
|||
|
|
@ -109,7 +109,7 @@ sub toHtml {
|
|||
my $multiple = $self->get("multiple") ? ' multiple="multiple"' : '';
|
||||
my $output = '<select name="'.($self->get("name")||'').'" size="'.($self->get("size")||'').'" id="'.($self->get('id')||'').'" '.($self->get("extras")||'').$multiple.'>';
|
||||
my $options = $self->getOptions;
|
||||
my @values = $self->getDefaultValue();
|
||||
my @values = $self->getOriginalValue();
|
||||
foreach my $key (keys %{$options}) {
|
||||
$output .= '<option value="'.$key.'"';
|
||||
foreach my $item (@values) {
|
||||
|
|
|
|||
|
|
@ -88,7 +88,7 @@ Returns the value that should be displayed initially.
|
|||
sub getDisplayValue {
|
||||
my $self = shift;
|
||||
|
||||
return $self->getOptions->{$self->get('value')->[0]};
|
||||
return $self->getOptions->{$self->getValue()->[0]};
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
|
|
@ -104,7 +104,7 @@ sub getInputElement {
|
|||
|
||||
return WebGUI::Form::selectList($self->session, {
|
||||
-name => $self->get('name'),
|
||||
-value => $self->get('value'),
|
||||
-value => $self->getValue(),
|
||||
-options=> $self->getOptions,
|
||||
-id => 'view-'.$self->get('id'),
|
||||
-size => 1,
|
||||
|
|
@ -215,7 +215,7 @@ sub getSliderValue {
|
|||
|
||||
my @keys = keys %{$self->getOptions};
|
||||
for (my $i = 0; $i < @keys; $i++) {
|
||||
return $i if $keys[$i] eq $self->get('value')->[0];
|
||||
return $i if $keys[$i] eq $self->getValue()->[0];
|
||||
}
|
||||
|
||||
return undef;
|
||||
|
|
|
|||
|
|
@ -91,7 +91,7 @@ Returns the value that should be displayed initially.
|
|||
sub getDisplayValue {
|
||||
my $self = shift;
|
||||
|
||||
return $self->get('value');
|
||||
return $self->getValue();
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
|
|
@ -237,7 +237,7 @@ Returns the initial position of the slider in slider units.
|
|||
sub getSliderValue {
|
||||
my $self = shift;
|
||||
|
||||
return $self->get('value');
|
||||
return $self->getValue();
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
|
|
@ -283,7 +283,7 @@ sub toHtml {
|
|||
$output .= '<td><div class="slider" id="'.$self->get('id').'" '.$self->get("extras").' tabindex="1">';
|
||||
$output .= WebGUI::Form::hidden($self->session, {
|
||||
-name => 'slider-'.$self->get('name'),
|
||||
-value => $self->get('value'),
|
||||
-value => $self->getValue(),
|
||||
-id => $self->get('id').'-input',
|
||||
-extras => 'class="slider-input"',
|
||||
});
|
||||
|
|
|
|||
|
|
@ -59,7 +59,7 @@ Renders a button.
|
|||
|
||||
sub toHtml {
|
||||
my $self = shift;
|
||||
my $value = $self->fixQuotes($self->getDefaultValue);
|
||||
my $value = $self->fixQuotes($self->getOriginalValue);
|
||||
my $extras = $self->get("extras") || q|class="forwardButton"|;
|
||||
my $i18n = WebGUI::International->new($self->session);
|
||||
$self->{_params}{extras} ||= 'onclick="this.value=\''.$i18n->get(452).'\'"';
|
||||
|
|
|
|||
|
|
@ -72,7 +72,7 @@ Renders the form field to HTML as a table row. The row is not displayed because
|
|||
|
||||
sub toHtmlWithWrapper {
|
||||
my $self = shift;
|
||||
my $value = $self->fixMacros($self->fixQuotes($self->fixSpecialCharacters($self->getDefaultValue))) || '';
|
||||
my $value = $self->fixMacros($self->fixQuotes($self->fixSpecialCharacters($self->getOriginalValue))) || '';
|
||||
my $manageButton = " ";
|
||||
if ($value) {
|
||||
$manageButton = $self->session->icon->manage("op=editGroup;gid=".$value);
|
||||
|
|
|
|||
|
|
@ -169,7 +169,7 @@ Renders the form field to HTML as a table row complete with labels, subtext, hov
|
|||
|
||||
sub toHtmlWithWrapper {
|
||||
my $self = shift;
|
||||
my $template = WebGUI::Asset::Template->new($self->session,$self->get('value'));
|
||||
my $template = WebGUI::Asset::Template->new($self->session,$self->getOriginalValue());
|
||||
if (defined $template && $template->canEdit) {
|
||||
my $returnUrl;
|
||||
if (defined $self->session->asset && ref $self->session->asset ne "WebGUI::Asset::Template") {
|
||||
|
|
|
|||
|
|
@ -125,7 +125,7 @@ Renders an input tag of type text.
|
|||
|
||||
sub toHtml {
|
||||
my $self = shift;
|
||||
my $value = $self->fixMacros($self->fixQuotes($self->fixSpecialCharacters($self->getDefaultValue)));
|
||||
my $value = $self->fixMacros($self->fixQuotes($self->fixSpecialCharacters($self->getOriginalValue)));
|
||||
return '<input id="'.$self->get('id').'" type="text" name="'.$self->get("name").'" value="'.$value.'" size="'.$self->get("size").'" maxlength="'.$self->get("maxlength").'" '.$self->get("extras").' />';
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -132,7 +132,7 @@ Renders an input tag of type text.
|
|||
|
||||
sub toHtml {
|
||||
my $self = shift;
|
||||
my $value = $self->fixMacros($self->fixTags($self->fixSpecialCharacters($self->getDefaultValue)));
|
||||
my $value = $self->fixMacros($self->fixTags($self->fixSpecialCharacters($self->getOriginalValue)));
|
||||
my $width = $self->get('width') || 400;
|
||||
my $height = $self->get('height') || 150;
|
||||
my ($style, $url) = $self->session->quick(qw(style url));
|
||||
|
|
|
|||
|
|
@ -184,7 +184,7 @@ Renders a time field.
|
|||
|
||||
sub toHtml {
|
||||
my $self = shift;
|
||||
my $value = $self->getDefaultValue;
|
||||
my $value = $self->getOriginalValue;
|
||||
my $i18n = WebGUI::International->new($self->session);
|
||||
$self->session->style->setScript($self->session->url->extras('inputCheck.js'),{ type=>'text/javascript' });
|
||||
$self->set("extras", $self->get('extras') . ' onkeyup="doInputCheck(document.getElementById(\''.$self->get("id").'\'),\'0123456789:\')"');
|
||||
|
|
@ -206,7 +206,7 @@ Renders the field as a hidden field.
|
|||
|
||||
sub toHtmlAsHidden {
|
||||
my $self = shift;
|
||||
my $value = $self->getDefaultValue;
|
||||
my $value = $self->getOriginalValue;
|
||||
return WebGUI::Form::Hidden->new($self->session,
|
||||
name=>$self->get("name"),
|
||||
value=>$value
|
||||
|
|
|
|||
|
|
@ -120,7 +120,7 @@ Formats as a link.
|
|||
|
||||
sub getValueAsHtml {
|
||||
my $self = shift;
|
||||
my $url = $self->getDefaultValue;
|
||||
my $url = $self->getOriginalValue;
|
||||
return '<a href="'.$url.'">'.$url.'</a>';
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -117,7 +117,7 @@ Formats as a name.
|
|||
|
||||
sub getValueAsHtml {
|
||||
my $self = shift;
|
||||
my $user = WebGUI::User->new($self->session, $self->getDefaultValue);
|
||||
my $user = WebGUI::User->new($self->session, $self->getOriginalValue);
|
||||
if (defined $user) {
|
||||
return $user->username;
|
||||
}
|
||||
|
|
@ -147,7 +147,7 @@ Renders a user selector.
|
|||
|
||||
sub toHtml {
|
||||
my $self = shift;
|
||||
my $user = WebGUI::User->new($self->session, $self->getDefaultValue);
|
||||
my $user = WebGUI::User->new($self->session, $self->getOriginalValue);
|
||||
my $manage = undef;
|
||||
if ($self->session->user->isInGroup(3)) {
|
||||
$manage = " ".$self->session->icon->manage('op=listUsers');
|
||||
|
|
|
|||
|
|
@ -119,7 +119,7 @@ Formats as a name.
|
|||
|
||||
sub getValueAsHtml {
|
||||
my $self = shift;
|
||||
my $vendor = eval{WebGUI::Shop::Vendor->new($self->session, $self->getDefaultValue)};
|
||||
my $vendor = eval{WebGUI::Shop::Vendor->new($self->session, $self->getOriginalValue)};
|
||||
if (!$@ && defined $vendor) {
|
||||
return $vendor->get('name');
|
||||
}
|
||||
|
|
|
|||
|
|
@ -119,7 +119,7 @@ Shows either Yes or No.
|
|||
sub getValueAsHtml {
|
||||
my $self = shift;
|
||||
my $i18n = WebGUI::International->new($self->session);
|
||||
if ($self->getDefaultValue) {
|
||||
if ($self->getOriginalValue) {
|
||||
return $i18n->get(138);
|
||||
}
|
||||
return $i18n->get(139);
|
||||
|
|
@ -149,7 +149,7 @@ sub toHtml {
|
|||
my $self = shift;
|
||||
my $i18n = WebGUI::International->new($self->session);
|
||||
my ($checkYes, $checkNo);
|
||||
if ($self->getDefaultValue) {
|
||||
if ($self->getOriginalValue) {
|
||||
$checkYes = 1;
|
||||
} else {
|
||||
$checkNo = 1;
|
||||
|
|
|
|||
|
|
@ -105,7 +105,7 @@ Renders an input tag of type text.
|
|||
|
||||
sub toHtml {
|
||||
my $self = shift;
|
||||
my $value = $self->fixMacros($self->fixQuotes($self->fixSpecialCharacters($self->getDefaultValue)));
|
||||
my $value = $self->fixMacros($self->fixQuotes($self->fixSpecialCharacters($self->getOriginalValue)));
|
||||
return '<input id="'.$self->get('id').'" type="text" name="'.$self->get("name").'" value="'.$value.'" size="'.$self->get("size").'" '.$self->get("extras").' />';
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ my $session = WebGUI::Test->session;
|
|||
my $formClass = 'WebGUI::Form::CheckList';
|
||||
my $formType = 'Checkbox';
|
||||
|
||||
my $numTests = 15;
|
||||
my $numTests = 20;
|
||||
|
||||
|
||||
plan tests => $numTests;
|
||||
|
|
@ -99,3 +99,13 @@ is( $inputs[0]->{value},
|
|||
WebGUI::International->new($session,"Form_CheckList")->get("selectAll label"),
|
||||
'The value is internationalized'
|
||||
);
|
||||
|
||||
my $cl = WebGUI::Form::CheckList->new($session, {defaultValue => 'default'});
|
||||
is($cl->getValue(),'default','Check getvalue with null returns default value');
|
||||
is($cl->getValue("value"), "value", "Check getValue returns a value");
|
||||
$cl->set('value',"original");
|
||||
is($cl->getDefaultValue(), "default", "Check getDefaultValue returns the default value");
|
||||
my $c2 = WebGUI::Form::CheckList->new($session, {defaultValue => 'default'});
|
||||
is($c2->getOriginalValue(), "default", "Get original value returns the default value");
|
||||
$c2->set('value',"original");
|
||||
is($c2->getOriginalValue(), "original", "Get original value return original value");
|
||||
|
|
|
|||
|
|
@ -73,7 +73,10 @@ my $input = $inputs[0];
|
|||
|
||||
is($input->name, 'TestDate', 'Checking input name');
|
||||
is($input->type, 'text', 'Checking input type');
|
||||
#is($input->value, $defaultTime, "Checking default value");
|
||||
TODO: {
|
||||
local $TODO = "Figure out why this is returning a MySQL value instead of an epoch.";
|
||||
is($input->value, $defaultTime, "Checking default value");
|
||||
}
|
||||
is($input->{size}, 10, 'Checking size param, default');
|
||||
is($input->{maxlength}, 10, 'Checking maxlength param, default');
|
||||
|
||||
|
|
@ -95,7 +98,7 @@ $html = join "\n",
|
|||
$input = $inputs[0];
|
||||
is($input->name, 'preDateValue', 'Checking input name');
|
||||
TODO: {
|
||||
local $TODO = "Figure out why this is returning a MySQL value instead of an epoch.";
|
||||
local $TODO = "Figure out why this is returning a MySQL value instead of an epoch.";
|
||||
is($input->value, 1217608466, 'Checking default value');
|
||||
}
|
||||
is($input->{size}, 10, 'Checking size param, set');
|
||||
|
|
|
|||
|
|
@ -60,6 +60,7 @@ my $html = join "\n",
|
|||
checked => 1,
|
||||
})->toHtml,
|
||||
$footer;
|
||||
use Data::Dumper;
|
||||
|
||||
my @forms = HTML::Form->parse($html, 'http://www.webgui.org');
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue