]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 179339 - Simplify and improve the stored query mechanism. Patch by gerv; r,a...
authorgerv%gerv.net <>
Sun, 9 Nov 2003 05:49:18 +0000 (05:49 +0000)
committergerv%gerv.net <>
Sun, 9 Nov 2003 05:49:18 +0000 (05:49 +0000)
buglist.cgi
template/en/default/account/prefs/prefs.html.tmpl
template/en/default/global/site-navigation.html.tmpl
template/en/default/global/useful-links.html.tmpl
template/en/default/list/list.html.tmpl
template/en/default/search/knob.html.tmpl
userprefs.cgi

index 1c5161481cbe7678f7a1aff3bb7debb17e4eee7f..2183d5a790566ed108f1df3ae856de0d78abaf23 100755 (executable)
@@ -274,7 +274,7 @@ if ($::FORM{'cmdtype'} eq "dorem" && $::FORM{'remaction'} =~ /^run/) {
 if ($::FORM{'cmdtype'} eq "dorem") {  
     if ($::FORM{'remaction'} eq "run") {
         $::buffer = LookupNamedQuery($::FORM{"namedcmd"});
-        $vars->{'title'} = "Bug List: $::FORM{'namedcmd'}";
+        $vars->{'searchname'} = $::FORM{'namedcmd'};
         $params = new Bugzilla::CGI($::buffer);
         $order = $params->param('order') || $order;
     }
@@ -284,17 +284,6 @@ if ($::FORM{'cmdtype'} eq "dorem") {
         $params = new Bugzilla::CGI($::buffer);
         $order = $params->param('order') || $order;
     }
-    elsif ($::FORM{'remaction'} eq "load") {
-        my $url = "query.cgi?" . LookupNamedQuery($::FORM{"namedcmd"});
-        print $cgi->redirect(-location=>$url);
-        # Generate and return the UI (HTML page) from the appropriate template.
-        $vars->{'message'} = "buglist_load_named_query";
-        $vars->{'namedcmd'} = $::FORM{'namedcmd'};
-        $vars->{'url'} = $url;
-        $template->process("global/message.html.tmpl", $vars)
-          || ThrowTemplateError($template->error());
-        exit;
-    }
     elsif ($::FORM{'remaction'} eq "forget") {
         confirm_login();
         my $userid = DBNameToIdAndCheck($::COOKIE{"Bugzilla_login"});
@@ -314,18 +303,18 @@ if ($::FORM{'cmdtype'} eq "dorem") {
         exit;
     }
 }
-elsif ($::FORM{'cmdtype'} eq "doit" && $::FORM{'remember'}) {
-    if ($::FORM{'remember'} == 1 && $::FORM{'remtype'} eq "asdefault") {
+elsif ($::FORM{'cmdtype'} eq "doit") {
+    if ($::FORM{'remtype'} eq "asdefault") {
         confirm_login();
         my $userid = DBNameToIdAndCheck($::COOKIE{"Bugzilla_login"});
         my $qname = SqlQuote($::defaultqueryname);
         my $qbuffer = SqlQuote($::buffer);
         SendSQL("REPLACE INTO namedqueries (userid, name, query)
                  VALUES ($userid, $qname, $qbuffer)");
-        # Generate and return the UI (HTML page) from the appropriate template.
+                 
         $vars->{'message'} = "buglist_new_default_query";
     }
-    elsif ($::FORM{'remember'} == 1 && $::FORM{'remtype'} eq "asnamed") {
+    elsif ($::FORM{'remtype'} eq "asnamed") {
         confirm_login();
         my $userid = DBNameToIdAndCheck($::COOKIE{"Bugzilla_login"});
 
@@ -334,10 +323,9 @@ elsif ($::FORM{'cmdtype'} eq "doit" && $::FORM{'remember'}) {
         $name !~ /[<>&]/ || ThrowUserError("illegal_query_name");
         my $qname = SqlQuote($name);
 
-        $::buffer =~ s/[\&\?]cmdtype=[a-z]+//;
-        my $qbuffer = SqlQuote($::buffer);
+        my $qbuffer = SqlQuote($::FORM{'newquery'});
 
-        my $tofooter = $::FORM{'tofooter'} ? 1 : 0;
+        my $tofooter = 1;
 
         $vars->{'message'} = "buglist_new_named_query";
 
@@ -363,6 +351,11 @@ elsif ($::FORM{'cmdtype'} eq "doit" && $::FORM{'remember'}) {
         Bugzilla->user->flush_queries_cache();
 
         $vars->{'queryname'} = $name;
+        
+        print "Content-Type: text/html\n\n";
+        $template->process("global/message.html.tmpl", $vars)
+          || ThrowTemplateError($template->error());
+        exit;
     }
 }
 
index 5892cb40edb2eb2d55a6321eaeb356c9782bb763..54cc14f66f8e9f4f6804f10f9b51a70e20197421 100644 (file)
@@ -53,8 +53,6 @@
               saveable => "1" },
             { name => "email", description => "Email settings", 
               saveable => "1" },
-            { name => "footer", description => "Page footer", 
-              saveable => "1" },
             { name => "permissions", description => "Permissions", 
               saveable => "0" } ] %]
 
index be64c2a86c1a854796d3da9558ac3e0fe4d2e32b..36c73f292ad4741eeeaaa951b0cd36a2343a708a 100644 (file)
   [% END %]
 
 
-  [%# *** Preset Queries *** %]
+  [%# *** Saved Searches *** %]
   [% IF user.showmybugslink %]
     [% user_login = user.login FILTER url_quote %]
-    <link rel="Preset&nbsp;Queries" title="My [% terms.Bugs %]"                 
+    <link rel="Saved&nbsp;Searches" title="My [% terms.Bugs %]"
           href="[% Param('mybugstemplate').replace('%userid%', user_login) %]">
   [% END %]
 
   [% FOREACH q = user.queries %]
-     [% IF q.linkinfooter %]
-        <link rel="Preset&nbsp;Queries" 
-              title="[% q.name FILTER html %]"
-              href="buglist.cgi?cmdtype=runnamed&amp;namedcmd=[% q.name FILTER url_quote %]">
-     [% END %]        
+    <link rel="Saved&nbsp;Searches" 
+          title="[% q.name FILTER html %]"
+          href="buglist.cgi?cmdtype=runnamed&amp;namedcmd=[% q.name FILTER url_quote %]">
   [% END %]
 
   [%# *** Bugzilla Administration Tools *** %]
index 135dad987efcdd59604d17575c903cc3a617e4e0..cf84abbb2a3f552db68426882032350db123f85f 100644 (file)
@@ -33,7 +33,7 @@
       
       <td valign="middle" nowrap="nowrap">
         <a href="enter_bug.cgi">New</a> | 
-        <a href="query.cgi">Query</a> |
+        <a href="query.cgi">Search</a> |
         
         <input type="submit" value="Find"> [% terms.bug %] # 
         <input name="id" size="6"> | 
       </td>
     </tr> 
 
-    [%# Preset queries %]
+    [%# Saved searches %]
     
-    [% preset_queries = user.showmybugslink %]
-    [% IF NOT preset_queries %]
-       [% FOREACH q = user.queries %]
-         [% IF q.linkinfooter %]
-           [% preset_queries = 1 %]
-           [% LAST %]
-         [% END %]
-       [% END %]
-     [% END %]
-      
     <tr>
-      [% IF preset_queries %]
+      [% IF user.showmybugslink OR user.queries.size %]
         <td>
-          Preset&nbsp;Queries:
+          Saved&nbsp;Searches:
         </td>
       [% END %]
       
index a61bdef9810826688eb51115dc0481fed19089fa..4d5a48c795ef6bb6998aac0bfb071db84735badc 100644 (file)
 
 [% PROCESS global/variables.none.tmpl %]
 
-[% DEFAULT title = "$terms.Bug List" %]
+[% title = "$terms.Bug List" %]
+[% IF searchname %]
+  [% title = title _ ": " _ searchname FILTER html %]
+[% END %]
+
 [% style_urls = [ "css/buglist.css" ] %]
 [% qorder = order FILTER url_quote IF order %]
 [% message = "buglist_sorted_by_relevance" IF sorted_by_relevance %]
 [%############################################################################%]
 
 [% IF bugs.size > 0 %]
-  <form method="post" action="long_list.cgi">
-    <input type="hidden" name="buglist" value="[% buglist %]">
-    <input type="submit" value="Long Format">
-    &nbsp;&nbsp;
-    <a href="buglist.cgi?
-             [% urlquerypart FILTER html %]&amp;ctype=csv">CSV</a> &nbsp;&nbsp;
-    <a href="colchange.cgi?
-                [% urlquerypart FILTER html %]">Change Columns</a> &nbsp;&nbsp;
-
-    [% IF bugs.size > 1 && caneditbugs && !dotweak %]
-      <a href="buglist.cgi?[% urlquerypart FILTER html %]
-        [%- "&order=$qorder" FILTER html IF order %]&amp;tweak=1">Change Several&nbsp;
-        [% terms.Bugs %] at Once</a>
-      &nbsp;&nbsp;
-    [% END %]
-
-    [% IF bugowners %]
-      <a href="mailto:[% bugowners FILTER html %]">Send 
-      Mail to [% terms.Bug %] Owners</a> 
-      &nbsp;&nbsp;
-    [% END %]
-
-    <a href="query.cgi?
-               [% urlquerypart FILTER html %]">Edit this Query</a> &nbsp;&nbsp;
-
-  </form>
-
+  <p>
+  <table>
+    <tr>
+      <td valign="top">
+        <form method="post" action="long_list.cgi">
+          <input type="hidden" name="buglist" value="[% buglist %]">
+          <input type="submit" value="Long Format">
+        </form>
+      </td>
+      <td>&nbsp;</td>
+      <td valign="top">
+        <a href="buglist.cgi?
+        [% urlquerypart FILTER html %]&amp;ctype=csv">CSV</a> |
+        <a href="colchange.cgi?
+        [% urlquerypart FILTER html %]">Change&nbsp;Columns</a> |
+
+        [% IF bugs.size > 1 && caneditbugs && !dotweak %]
+          <a href="buglist.cgi?[% urlquerypart FILTER html %]
+            [%- "&order=$qorder" FILTER html IF order %]&amp;tweak=1"
+            >Change&nbsp;Several&nbsp;[% terms.Bugs %]&nbsp;at&nbsp;Once</a>
+          |
+        [% END %]
+
+        [% IF bugowners %]
+          <a href="mailto:
+            [% bugowners FILTER html %]">Send&nbsp;Mail&nbsp;to&nbsp;[% terms.Bug %]&nbsp;Owners</a> |
+        [% END %]
+
+        <a href="query.cgi?[% urlquerypart FILTER html %]">Edit&nbsp;Search</a>
+      </td>
+      [% IF searchname %]
+        <td valign="top" nowrap="nowrap">
+          |
+          <a href="buglist.cgi?cmdtype=dorem&amp;remaction=forget&amp;namedcmd=
+                  [% searchname FILTER html %]">Forget&nbsp;Search&nbsp;'
+                  [% searchname FILTER html %]'</a>
+        </td>
+      [% ELSE %]
+        <td>&nbsp;</td>
+        <td>
+          <form method="get" action="buglist.cgi">
+            <input type="submit" value="Remember search"> as 
+            <input type="hidden" name="newquery" 
+                   value="[% urlquerypart FILTER html %]">
+            <input type="hidden" name="cmdtype" value="doit">
+            <input type="hidden" name="remtype" value="asnamed">
+            <input type="text" name="newqueryname" size="20"> 
+          </form> 
+        </td>
+      [% END %]  
+    </tr>
+  </table>
+  </p>  
 [% END %]
 
 
index 8386eff042bfd365447a1feab4099f8200461304..cf40d071154875ae8f08a276ed1b790cd22206a7 100644 (file)
    "Assignee"     => "Assignee",
    "Last Changed" => "Last Changed" } %]
 
-<br>
-[% IF NOT user %]
-  <input type="hidden" name="cmdtype" value="doit">
-[% ELSE %]
-  <script type="text/javascript"> <!--
-    function remCheckboxChanged() {
-      if (document.queryform.remember.checked == true) {
-        document.queryform.remtype[0].disabled = false;
-        document.queryform.remtype[1].disabled = false;
-        remTypeChanged();
-      }
-      else {
-        document.queryform.remtype[0].disabled = true;
-        document.queryform.remtype[1].disabled = true;
-        document.queryform.newqueryname.disabled = true;
-        document.queryform.tofooter.disabled = true;
-      }
-    }
-
-    function remTypeChanged() {
-      if (document.queryform.remtype[0].checked == true) {
-        document.queryform.newqueryname.disabled = false;
-        document.queryform.tofooter.disabled = false;
-      }
-      else {
-        document.queryform.newqueryname.disabled = true;
-        document.queryform.tofooter.disabled = true;
-      }
-    }
-
-    function selectDoRem() {
-      document.queryform.cmdtype[1].checked = true;
-    }
-    // -->
-  </script>
-
-  <table>
-    [% IF namedqueries.size > 0 %]
-      <tr>
-        <td>
-          <input type="radio" id="cmdtype-doit"
-                 name="cmdtype" value="doit" checked="checked">
-          <label for="cmdtype-doit">Run this search</label>
-        </td>
-        <td>&nbsp;</td>
-      </tr>
-    [% END %]
-    <tr>
-      <td valign="top">
-        [% IF namedqueries.size > 0 %]
-          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-        [% END %]
-        <input type="checkbox" id="remember" name="remember" value="1"
-               onclick="remCheckboxChanged()">
-        [% IF namedqueries.size > 0 %]
-          <label for="remember">and remember it</label>
-        [% ELSE %]
-          <label for="remember">Remember this search</label>
-          <input type="hidden" id="cmdtype-doit"
-                 name="cmdtype" value="doit">
-        [% END %]
-      </td>
-      <td>
-        <input type="radio" id="remtype-asnamed"
-               name="remtype" value="asnamed" checked="checked"
-               onclick="remTypeChanged()">
-        <label for="remtype-asnamed">with this name:</label>
-        <input type="text" name="newqueryname"><br>
-          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-          <input type="checkbox" id="tofooter" name="tofooter" value="1">
-          <label for="tofooter">and put it in my page footer</label><br>
-        <input type="radio" id="remtype-asdefault"
-               name="remtype" value="asdefault"
-               onclick="remTypeChanged()">
-        <label for="remtype-asdefault">
-          as my default options for this page
-        </label><br>
-      </td>
-    </tr>
-
-    <tr>
-      <td colspan="2">
-        [% IF namedqueries.size > 0 %]
-          <input type="radio" id="cmdtype-dorem" name="cmdtype" value="dorem">
-          <select name="remaction" onclick="selectDoRem()">
-            <option value="run">Run</option>
-            <option value="load">Load</option>
-            <option value="forget">Forget</option>
-          </select>
-          <label for="cmdtype-dorem">my remembered search:</label>
-          <select name="namedcmd" onclick="selectDoRem()">
-            [% FOREACH query = namedqueries %]
-              <option value="[% query FILTER html %]">
-                [% query FILTER html %]</option>
-            [% END %]
-          </select>
-        [% END %]
-      </td>
-    </tr>
-  </table>
-
-  <script type="text/javascript"> <!--
-    remCheckboxChanged();
-    // -->
-  </script>
-[% END %]
+<input type="hidden" name="cmdtype" value="doit">
 
 <p>
   Sort results by:
          [% ordersdesc.$order FILTER html %]</option>
   [% END %]
   </select>
+</p>
 
+<p>  
   <input type="submit" value="[% button_name FILTER html %]">
-
-  [% IF userdefaultquery %]
-     <p>
-       <a href="query.cgi?nukedefaultquery=1">
-         Set my default query back to the system default</a>.
-     </p>
-  [% END %]
 </p>
 
+<p>
+  &nbsp;&nbsp;&nbsp;
+  <input type="checkbox" id="remasdefault"
+         name="remtype" value="asdefault">
+  <label for="remasdefault">
+    and remember these as my default search options
+  </label>
+</p>
+        
+[% IF userdefaultquery %]
+  <p>
+    <a href="query.cgi?nukedefaultquery=1">
+      Set my default query back to the system default</a>.
+  </p>
+[% END %]
index 857665f7c33f6ebac033bf660ee2eb537b26bf30..017c7c94d1b5e7905b23604cef79e9221a2fd49e 100755 (executable)
@@ -30,13 +30,6 @@ require "CGI.pl";
 
 use RelationSet;
 
-# Shut up misguided -w warnings about "used only once". "use vars" just
-# doesn't work for me.
-sub sillyness {
-    my $zz;
-    $zz = $::defaultqueryname;
-}
-
 # Use global template variables.
 use vars qw($template $vars $userid);
 
@@ -269,61 +262,6 @@ sub SaveEmail {
 }
 
 
-sub DoFooter {
-    SendSQL("SELECT mybugslink FROM profiles " .
-            "WHERE userid = $userid");
-    $vars->{'mybugslink'} = FetchSQLData();
-    
-    SendSQL("SELECT name, linkinfooter FROM namedqueries " .
-            "WHERE userid = $userid");
-    
-    my @queries;        
-    while (MoreSQLData()) {
-        my ($name, $footer) = (FetchSQLData());
-        next if ($name eq $::defaultqueryname);
-        
-        push (@queries, { name => $name, footer => $footer });        
-    }
-    
-    $vars->{'queries'} = \@queries;
-}
-              
-sub SaveFooter {
-    my %old;
-    SendSQL("SELECT name, linkinfooter FROM namedqueries " .
-            "WHERE userid = $userid");
-    while (MoreSQLData()) {
-        my ($name, $footer) = (FetchSQLData());
-        $old{$name} = $footer;
-    }
-    
-    for (my $c = 0; $c < $::FORM{'numqueries'}; $c++) {
-        my $name = $::FORM{"name-$c"};
-        if (exists $old{$name}) {
-            my $new = $::FORM{"query-$c"};
-            if ($new ne $old{$name}) {
-                detaint_natural($new);
-                SendSQL("UPDATE namedqueries SET linkinfooter = $new " .
-                        "WHERE userid = $userid " .
-                        "AND name = " . SqlQuote($name));
-            }
-        } else {
-            ThrowUserError("missing_query", {queryname => $name});
-        }
-    }
-    SendSQL("UPDATE profiles SET mybugslink = " . 
-            SqlQuote($::FORM{'mybugslink'}) . " WHERE userid = $userid");
-
-    # Make sure that cached queries in the user object are invalidated
-    # so that the footer is correct
-    my $user = Bugzilla->user;
-    $user->flush_queries_cache();
-
-    # Also need to update showmybugslink
-    $user->{showmybugslink} = $::FORM{'mybugslink'} ? 1 : 0;
-}
-    
-    
 sub DoPermissions {
     my (@has_bits, @set_bits);
     
@@ -385,11 +323,6 @@ SWITCH: for ($current_tab_name) {
         DoEmail();
         last SWITCH;
     };
-    /^footer$/ && do {
-        SaveFooter() if $::FORM{'dosave'};
-        DoFooter();
-        last SWITCH;
-    };
     /^permissions$/ && do {
         DoPermissions();
         last SWITCH;
@@ -402,4 +335,3 @@ SWITCH: for ($current_tab_name) {
 print $cgi->header();
 $template->process("account/prefs/prefs.html.tmpl", $vars)
   || ThrowTemplateError($template->error());
-