]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 150776 - Remembered query options need regrouping. Patch by gerv; r=jouni, burnus.
authorgerv%gerv.net <>
Sat, 27 Jul 2002 03:44:44 +0000 (03:44 +0000)
committergerv%gerv.net <>
Sat, 27 Jul 2002 03:44:44 +0000 (03:44 +0000)
buglist.cgi
template/en/default/search/knob.html.tmpl

index 123e3d4b303fccfe58c93452ac1ea241e8906ab2..e8199b97c4dc9e301b24bc9d5d13def95ccb874f 100755 (executable)
@@ -1064,18 +1064,22 @@ sub GenerateSQL {
 # Command Execution
 ################################################################################
 
-# Figure out if the user wanted to do anything besides just running the query
-# they defined on the query page, and take appropriate action.
-CMD: for ($::FORM{'cmdtype'}) {
-    /^runnamed$/ && do {
+# Backwards-compatibility - the old interface had cmdtype="runnamed" to run
+# a named command, and we can't break this because it's in bookmarks.
+if ($::FORM{'cmdtype'} eq "runnamed") {  
+    $::FORM{'cmdtype'} = "dorem"; 
+    $::FORM{'remaction'} = "run";
+}
+
+# Take appropriate action based on user's request.
+if ($::FORM{'cmdtype'} eq "dorem") {  
+    if ($::FORM{'remaction'} eq "run") {
         $::buffer = LookupNamedQuery($::FORM{"namedcmd"});
         $vars->{'title'} = "Bug List: $::FORM{'namedcmd'}";
         ProcessFormFields($::buffer);
         $order = $::FORM{'order'} || $order;
-        last CMD;
-    };
-
-    /^editnamed$/ && do {
+    }
+    elsif ($::FORM{'remaction'} eq "load") {
         my $url = "query.cgi?" . LookupNamedQuery($::FORM{"namedcmd"});
         print "Refresh: 0; URL=$url\n";
         print "Content-Type: text/html\n\n";
@@ -1086,9 +1090,8 @@ CMD: for ($::FORM{'cmdtype'}) {
         $template->process("global/message.html.tmpl", $vars)
           || ThrowTemplateError($template->error());
         exit;
-    };
-
-    /^forgetnamed$/ && do {
+    }
+    elsif ($::FORM{'remaction'} eq "forget") {
         confirm_login();
         my $userid = DBNameToIdAndCheck($::COOKIE{"Bugzilla_login"});
         my $qname = SqlQuote($::FORM{'namedcmd'});
@@ -1112,28 +1115,21 @@ CMD: for ($::FORM{'cmdtype'}) {
         $template->process("global/message.html.tmpl", $vars)
           || ThrowTemplateError($template->error());
         exit;
-    };
-
-    /^asdefault$/ && do {
+    }
+}
+elsif ($::FORM{'cmdtype'} eq "doit") {
+    if ($::FORM{'remember'} == 1 && $::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)");
-        print "Content-Type: text/html\n\n";
         # Generate and return the UI (HTML page) from the appropriate template.
-        $vars->{'title'} = "OK, default is set";
         $vars->{'message'} = "OK, you now have a new default query.  You may
                               also bookmark the result of any individual query.";
-        $vars->{'url'} = "query.cgi";
-        $vars->{'link'} = "Go back to the query page, using the new default.";
-        $template->process("global/message.html.tmpl", $vars)
-          || ThrowTemplateError($template->error());
-        exit;
-    };
-
-    /^asnamed$/ && do {
+    }
+    elsif ($::FORM{'remember'} == 1 && $::FORM{'remtype'} eq "asnamed") {
         confirm_login();
         my $userid = DBNameToIdAndCheck($::COOKIE{"Bugzilla_login"});
 
@@ -1150,7 +1146,7 @@ CMD: for ($::FORM{'cmdtype'}) {
         $::buffer =~ s/[\&\?]cmdtype=[a-z]+//;
         my $qbuffer = SqlQuote($::buffer);
 
-        my $tofooter= $::FORM{'tofooter'} ? 1 : 0;
+        my $tofooter = $::FORM{'tofooter'} ? 1 : 0;
 
         SendSQL("SELECT query FROM namedqueries WHERE userid = $userid AND name = $qname");
         if (FetchOneColumn()) {
@@ -1172,8 +1168,6 @@ CMD: for ($::FORM{'cmdtype'}) {
             }
         }        
         
-        print "Content-Type: text/html\n\n";
-        # Generate and return the UI (HTML page) from the appropriate template.        
         if ($new_in_footer) {
             my %query = (name => $name,
                          query => $::buffer, 
@@ -1181,14 +1175,8 @@ CMD: for ($::FORM{'cmdtype'}) {
             push(@{$vars->{'user'}{'queries'}}, \%query);
         }
         
-        $vars->{'title'} = "OK, query saved.";
-        $vars->{'message'} = "OK, you have a new query named <code>$name</code>";
-        $vars->{'url'} = "query.cgi";
-        $vars->{'link'} = "Go back to the query page.";
-        $template->process("global/message.html.tmpl", $vars)
-          || ThrowTemplateError($template->error());
-        exit;
-    };
+        $vars->{'message'} = "OK, you have a new query named <code>$name</code>.";
+    }
 }
 
 
index 8755f6f921b5a14ed087c6ddf7c514c13b101690..e2e6fa53b5a554d607b8262b8e349c1597c45480 100644 (file)
 
 <br>
 [% IF NOT userid %]
-   <input type="hidden" name="cmdtype" value="doit">
+  <input type="hidden" name="cmdtype" value="doit">
 [% ELSE %]
-   <input type="radio" name="cmdtype" value="doit" checked="checked">
-     Run this query
-   <br>
-   [% IF namedqueries.size > 0 %]
-     <br>
-     <table cellspacing="0" cellpadding="0">
-       <tr>
-         <td>
-           <input type="radio" name="cmdtype" value="editnamed">
-           Load my remembered query:
-         </td>
-         <td rowspan="3">
-           &nbsp;&nbsp;<select name="namedcmd">
-             [% FOREACH query = namedqueries %]
-               <option value="[% query FILTER html %]">
-                 [% query FILTER html %]</option>
-             [% END %]
-           </select>
-         </td>
-       </tr>  
-       <tr>
-         <td>
-           <input type="radio" name="cmdtype" value="runnamed">
-           Run my remembered query:
-         </td>
-       </tr>
-       <tr>
-          <td>
-           <input type="radio" name="cmdtype" value="forgetnamed">
-           Forget my remembered query:
-         </td>
-       </tr>
-     </table>
-     <br>
-   [% END %]
-   <input type="radio" name="cmdtype" value="asdefault">
-     Remember this as my default query
-   <br>
-   <input type="radio" name="cmdtype" value="asnamed">
-     Remember this query, and name it: 
-     <input type="text" name="newqueryname">
-     <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-     <input type="checkbox" name="tofooter" value="1">
-       and put it in my page footer
+  <script> <!--
+    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>
+    <tr>
+      <td>
+        <input type="radio" name="cmdtype" value="doit" checked="checked">
+        Run this search
+      </td>
+      <td>&nbsp;</td>
+    </tr>
+    
+    <tr>
+      <td valign="top">
+        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+        <input type="checkbox" name="remember" value="1" 
+               onclick="remCheckboxChanged()">
+        and remember it
+      </td>
+      <td>
+        <input type="radio" name="remtype" value="asnamed" 
+               onclick="remTypeChanged()">
+        with this name: 
+        <input type="text" name="newqueryname"><br>
+          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+          <input type="checkbox" name="tofooter" value="1">
+          and put it in my page footer<br>          
+        <input type="radio" name="remtype" value="asdefault"
+               onclick="remTypeChanged()">
+        as my default options for this page<br>
+      </td>
+    </tr>
+  
+    <tr>
+      <td colspan="2">
+        [% IF namedqueries.size > 0 %]
+          <input type="radio" 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>
+          my remembered search:
+          <select name="namedcmd" onclick="selectDoRem()">
+            [% FOREACH query = namedqueries %]
+              <option value="[% query FILTER html %]">
+                [% query FILTER html %]</option>
+            [% END %]
+          </select>        
+        [% END %]
+      </td>
+    </tr>
+  </table>
+  
+  <script> <!--
+    remCheckboxChanged();
+    remTypeChanged(); 
+    // -->
+  </script>
 [% END %]
 
-  <p>
-    Sort results by:
-    <select name="order">
-    [% FOREACH order = orders %]
-      <option value="[% order FILTER html %]"
-        [% " selected" IF default.order.0 == order %]>
-           [% ordersdesc.$order FILTER html %]</option> 
-    [% END %]
-    </select>
+<p>
+  Sort results by:
+  <select name="order">
+  [% FOREACH order = orders %]
+    <option value="[% order FILTER html %]"
+      [% " selected" IF default.order.0 == order %]>
+         [% ordersdesc.$order FILTER html %]</option> 
+  [% END %]
+  </select>
+
+  <input type="submit" value="[% button_name %]">
+  
+  [% IF userdefaultquery %]
+     <p>
+       <a href="query.cgi?nukedefaultquery=1">
+         Set my default query back to the system default</a>.
+     </p>
+  [% END %]
+</p>
 
-    <input type="submit" value="[% button_name %]">
-    [% IF userdefaultquery %]
-       <p>
-         <a href="query.cgi?nukedefaultquery=1">
-           Set my default query back to the system default</a>
-       </p>
-    [% END %]
-  </p>