Commit 18b8582d authored by gerv%gerv.net's avatar gerv%gerv.net

Bug 150776 - Remembered query options need regrouping. Patch by gerv; r=jouni, burnus.

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