]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 345826: Ability to save column list in saved searches
authormkanat%bugzilla.org <>
Thu, 8 Mar 2007 02:37:07 +0000 (02:37 +0000)
committermkanat%bugzilla.org <>
Thu, 8 Mar 2007 02:37:07 +0000 (02:37 +0000)
Patch By Ronaldo Maia <romaia@async.com.br> r=LpSolit, a=LpSolit

colchange.cgi
template/en/default/list/change-columns.html.tmpl

index de834b8bc498a5285503baf5fd34e080c76174ed..b52433924c6b53ca72ad8a0e05932389a6c3a2da 100755 (executable)
@@ -28,6 +28,8 @@ use lib qw(.);
 
 use Bugzilla;
 use Bugzilla::Constants;
+use Bugzilla::CGI;
+use Bugzilla::Search::Saved;
 use Bugzilla::Error;
 use Bugzilla::User;
 use Bugzilla::Keyword;
@@ -101,9 +103,13 @@ if (defined $cgi->param('rememberedquery')) {
     my $urlbase = Bugzilla->params->{"urlbase"};
 
     if ($list) {
-        $cgi->send_cookie(-name => 'COLUMNLIST',
-                          -value => $list,
-                          -expires => 'Fri, 01-Jan-2038 00:00:00 GMT');
+        # Only set the cookie if this is not a saved search.
+        # Saved searches have their own column list
+        if (!$cgi->param('save_columns_for_search')) {
+            $cgi->send_cookie(-name => 'COLUMNLIST',
+                              -value => $list,
+                              -expires => 'Fri, 01-Jan-2038 00:00:00 GMT');
+        }
     }
     else {
         $cgi->remove_cookie('COLUMNLIST');
@@ -118,7 +124,27 @@ if (defined $cgi->param('rememberedquery')) {
     }
 
     $vars->{'message'} = "change_columns";
-    $vars->{'redirect_url'} = "buglist.cgi?".$cgi->param('rememberedquery');
+
+    my $search;
+    if (defined $cgi->param('saved_search')) {
+        $search = new Bugzilla::Search::Saved($cgi->param('saved_search'));
+    }
+
+    if ($cgi->param('save_columns_for_search')
+        && defined $search && $search->user->id == Bugzilla->user->id) 
+    {
+        my $params = new Bugzilla::CGI($search->url);
+        $params->param('columnlist', join(",", @collist));
+        $search->set_url($params->query_string());
+        $search->update();
+        $vars->{'redirect_url'} = "buglist.cgi?".$cgi->param('rememberedquery');
+    }
+    else {
+        my $params = new Bugzilla::CGI($cgi->param('rememberedquery'));
+        $params->param('columnlist', join(",", @collist));
+        $vars->{'redirect_url'} = "buglist.cgi?".$params->query_string();
+    }
+
 
     # If we're running on Microsoft IIS, using cgi->redirect discards
     # the Set-Cookie lines -- workaround is to use the old-fashioned 
@@ -149,6 +175,24 @@ $vars->{'splitheader'} = $cgi->cookie('SPLITHEADER') ? 1 : 0;
 
 $vars->{'buffer'} = $cgi->query_string();
 
+my $search;
+if (defined $cgi->param('query_based_on')) {
+    my $searches = Bugzilla->user->queries;
+    my ($search) = grep($_->name eq $cgi->param('query_based_on'), @$searches);
+
+    # Only allow users to edit their own queries.
+    if ($search && $search->user->id == Bugzilla->user->id) {
+        $vars->{'saved_search'} = $search;
+        $vars->{'buffer'} = "cmdtype=runnamed&namedcmd=".$search->name;
+
+        my $params = new Bugzilla::CGI($search->url);
+        if ($params->param('columnlist')) {
+            my @collist = split(',', $params->param('columnlist'));
+            $vars->{'collist'} = \@collist if scalar (@collist);
+        }
+    }
+}
+
 # Generate and return the UI (HTML page) from the appropriate template.
 print $cgi->header();
 $template->process("list/change-columns.html.tmpl", $vars)
index 9b610fe0ca72f0b9bf25b706ca36d757f9e5c6b6..78d5e4b7fbd66ee7812be011c2b3f42ff0954199 100644 (file)
     </label>
   </p>
 
+  [% IF saved_search %]
+    <p>
+      <input type="hidden" name="saved_search"
+             value="[% saved_search.id FILTER html%]" >
+      <input type="checkbox" id="save_columns_for_search" checked="checked" 
+             name="save_columns_for_search" value="1">
+      <label for="save_columns_for_search">Save this column list only 
+        for search '[% saved_search.name FILTER html %]'</label>
+    </p>
+  [% END %]
+
   <p>
     <input type="submit" id="change" value="Change Columns">
   </p>