Author: spadkins
Date: Thu Oct 22 13:58:11 2009
New Revision: 13420
Modified:
p5ee/trunk/App-Context/lib/App/Request/CGI.pm
Log:
fixed the last bug again, but did it right
Modified: p5ee/trunk/App-Context/lib/App/Request/CGI.pm
==============================================================================
--- p5ee/trunk/App-Context/lib/App/Request/CGI.pm (original)
+++ p5ee/trunk/App-Context/lib/App/Request/CGI.pm Thu Oct 22 13:58:11 2009
@@ -693,20 +693,24 @@
if ($cgi) {
my $context = $self->{context};
my $options = $context->{options};
- my (%keep_param);
+
+ my %standard_keep_param = ( u => 1, p => 1, eu => 1, eu_normal => 1 );
+
+ my (%additional_keep_param);
if ($options->{"app.Request.keep_url_params"}) {
- %keep_param = map { $_ => 1 } split(/[ ,]+/,
$options->{"app.Request.keep_url_params"});
- }
- else {
- %keep_param = ( u => 1, p => 1, eu => 1, eu_normal => 1 );
+ %additional_keep_param = map { $_ => 1 } split(/[ ,]+/,
$options->{"app.Request.keep_url_params"});
}
- my $newcgi = CGI->new($cgi);
- foreach my $param ($cgi->param()) {
- if (!$keep_param{$param}) {
- $newcgi->delete($param);
+
+ my %keep_param = (%standard_keep_param, %additional_keep_param);
+
+ my $query_string = "";
+ foreach my $param ($cgi->url_param()) {
+ if ($keep_param{$param}) {
+ $query_string .= ($query_string ? "&" : "?") . "$param=" .
$cgi->url_param($param);
}
}
- $url = $newcgi->url(-path_info=>1, -query_string=>1);
+
+ $url = $cgi->url(-path_info=>1) . $query_string;
}
&App::sub_exit($url) if ($App::trace);
return($url);