diff --git a/docs/changelog/7.x.x.txt b/docs/changelog/7.x.x.txt index 11f9571e9..a23d3b788 100644 --- a/docs/changelog/7.x.x.txt +++ b/docs/changelog/7.x.x.txt @@ -13,6 +13,7 @@ - fixed: DataForm can't export fields containing newlines - fixed: UserList templates use incorrect variable names - fixed: International characters in password prevents login + - fixed: SelectSlider form control is broken 7.6.0 - added: users may now customize the post received page for the CS diff --git a/lib/WebGUI/Form/List.pm b/lib/WebGUI/Form/List.pm index 60f0de6be..0675112a4 100644 --- a/lib/WebGUI/Form/List.pm +++ b/lib/WebGUI/Form/List.pm @@ -168,7 +168,7 @@ sub getOptions { } else { foreach my $line (split "\n", $possibleValues) { - $line =~ s/^(.*)\r|\s*$/$1/; + $line =~ s/^(.*)\r|\s*$/$1/; if ($line =~ m/(.*)\|(.*)/) { $options{$1} = $2; } diff --git a/lib/WebGUI/Form/SelectSlider.pm b/lib/WebGUI/Form/SelectSlider.pm index 8d6a6dbf6..6e34cf52a 100644 --- a/lib/WebGUI/Form/SelectSlider.pm +++ b/lib/WebGUI/Form/SelectSlider.pm @@ -16,7 +16,7 @@ package WebGUI::Form::SelectSlider; use strict; use base 'WebGUI::Form::Slider'; -use WebGUI::Form::SelectList; +use WebGUI::Form::SelectBox; use WebGUI::International; =head1 NAME @@ -46,7 +46,6 @@ sub definition { defaultValue=>{}, }, value =>{ - defaultValue=>[], }, }); return $class->SUPER::definition($session, $definition); @@ -87,8 +86,8 @@ Returns the value that should be displayed initially. sub getDisplayValue { my $self = shift; - - return $self->getOptions->{$self->getValue()->[0]}; + my $options = $self->getOptions; + return $options->{$self->getOriginalValue} || $options->{(keys %$options)[0]}; } #------------------------------------------------------------------- @@ -102,12 +101,11 @@ Returns the form element used for manual input. sub getInputElement { my $self = shift; - return WebGUI::Form::selectList($self->session, { + return WebGUI::Form::SelectBox($self->session, { -name => $self->get('name'), - -value => $self->getValue(), + -value => $self->getOriginalValue, -options=> $self->getOptions, -id => 'view-'.$self->get('id'), - -size => 1, }); } @@ -139,7 +137,7 @@ Returns the javascript code to update the form on a change of slider position. sub getOnChangeSlider { my $self = shift; - return + return $self->getInputVariable.'.selectedIndex = this.getValue();'. $self->getDisplayVariable.'.innerHTML = '.$self->getInputVariable.'.options[this.getValue()].text;'; } @@ -215,10 +213,9 @@ sub getSliderValue { my @keys = keys %{$self->getOptions}; for (my $i = 0; $i < @keys; $i++) { - return $i if $keys[$i] eq $self->getValue()->[0]; + return $i if $keys[$i] eq $self->getOriginalValue; } - - return undef; + return $keys[0]; } #------------------------------------------------------------------- @@ -244,10 +241,10 @@ sub getValue { -value => $self->get('value'), -options=> $self->getOptions, -id => 'view-'.$self->get('id'), - -size => 1, }; - return WebGUI::Form::SelectList->new($self->session, $properties)->getValue(@args); + my $newValue = WebGUI::Form::SelectBox->new($self->session, $properties)->getValue(@args); + return $self->{_param}{value} = $newValue; } diff --git a/lib/WebGUI/Form/Slider.pm b/lib/WebGUI/Form/Slider.pm index 8873b5259..1f9ab460d 100644 --- a/lib/WebGUI/Form/Slider.pm +++ b/lib/WebGUI/Form/Slider.pm @@ -91,7 +91,7 @@ Returns the value that should be displayed initially. sub getDisplayValue { my $self = shift; - return $self->getValue(); + return $self->getOriginalValue(); } #------------------------------------------------------------------- @@ -237,7 +237,7 @@ Returns the initial position of the slider in slider units. sub getSliderValue { my $self = shift; - return $self->getValue(); + return $self->getOriginalValue(); } #------------------------------------------------------------------- @@ -283,7 +283,7 @@ sub toHtml { $output .= '
get("extras").' tabindex="1">'; $output .= WebGUI::Form::hidden($self->session, { -name => 'slider-'.$self->get('name'), - -value => $self->getValue(), + -value => $self->getOriginalValue(), -id => $self->get('id').'-input', -extras => 'class="slider-input"', }); diff --git a/lib/WebGUI/Operation/Graphics.pm b/lib/WebGUI/Operation/Graphics.pm index 243e2d958..d3e61c64b 100644 --- a/lib/WebGUI/Operation/Graphics.pm +++ b/lib/WebGUI/Operation/Graphics.pm @@ -60,7 +60,7 @@ sub _getColorForm { ); $f->selectSlider( -name => 'fillAlpha', - -value => [ $color->getFillAlpha ], + -value => $color->getFillAlpha, -options=> \%transparencies, -label => $i18n->get('fill alpha'), -hoverHelp => $i18n->get('fill alpha description'), @@ -78,7 +78,7 @@ sub _getColorForm { ); $f->selectSlider( -name => 'strokeAlpha', - -value => [ $color->getStrokeAlpha ], + -value => $color->getStrokeAlpha, -options=> \%transparencies, -label => $i18n->get('stroke alpha'), -hoverHelp => $i18n->get('stroke alpha description'),