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);

Reply via email to