From 519a0915c39fd06dea4c0ef6608e3d8dc37dde18 Mon Sep 17 00:00:00 2001 From: Colin Kuskie Date: Fri, 20 Nov 2009 08:47:21 -0800 Subject: [PATCH] Prevent the back button from resubmitting data as much as possible. Fixes bug #11143. --- docs/changelog/7.x.x.txt | 1 + lib/WebGUI/TabForm.pm | 7 +++++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/docs/changelog/7.x.x.txt b/docs/changelog/7.x.x.txt index b464d2617..bc35c272b 100644 --- a/docs/changelog/7.x.x.txt +++ b/docs/changelog/7.x.x.txt @@ -3,6 +3,7 @@ - fixed #11251: perload.perl tries to load t/lib/WebGUI/Test.pm - fixed #11249: Recaptcha https bug - fixed #11200: Navigation in AssetProxy cached in browser + - fixed #11143: cancel button 7.8.5 - added the EMS submission subsystem diff --git a/lib/WebGUI/TabForm.pm b/lib/WebGUI/TabForm.pm index daa1676f3..909886298 100644 --- a/lib/WebGUI/TabForm.pm +++ b/lib/WebGUI/TabForm.pm @@ -197,7 +197,6 @@ sub new { my $session = shift; my $startingTabs = shift; my $css = shift || $session->url->extras('tabs/tabs.css'); - my $cancelUrl = shift || $session->url->page(); my %tabs; tie %tabs, 'Tie::IxHash'; foreach my $key (keys %{$startingTabs}) { @@ -206,9 +205,13 @@ sub new { $tabs{$key}{uiLevel} = $startingTabs->{$key}->{uiLevel}; } my $i18n = WebGUI::International->new($session); + my $cancelJS = 'history.go(-1);'; + if (my $cancelURL = $session->env->get('HTTP_REFERER')) { + $cancelJS = sprintf q{window.location.href='%s';}, $cancelURL; + } my $cancel = WebGUI::Form::button($session,{ value=>$i18n->get('cancel'), - extras=>q|onclick="history.go(-1);" class="backwardButton"| + extras=>sprintf(q|onclick="%s" class="backwardButton"|, $cancelJS), }); bless { _session=>$session, _cancel=>$cancel, _submit=>WebGUI::Form::submit($session), _form=>WebGUI::Form::formHeader($session), _hidden=>"", _tab=>\%tabs, _css=>$css }, $class;