summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorgerv%gerv.net <>2003-11-09 06:49:18 +0100
committergerv%gerv.net <>2003-11-09 06:49:18 +0100
commit5f61a3d84eef44c09244996a5787bfc24621f60c (patch)
tree4d979bc6f3b04b47e0018a4929d544d0e972d782
parentef05aed5674b707b85233a6670edb500fd70b77d (diff)
downloadbugzilla-5f61a3d84eef44c09244996a5787bfc24621f60c.tar.gz
bugzilla-5f61a3d84eef44c09244996a5787bfc24621f60c.tar.xz
Bug 179339 - Simplify and improve the stored query mechanism. Patch by gerv; r,a=myk.
-rwxr-xr-xbuglist.cgi31
-rw-r--r--template/en/default/account/prefs/prefs.html.tmpl2
-rw-r--r--template/en/default/global/site-navigation.html.tmpl12
-rw-r--r--template/en/default/global/useful-links.html.tmpl18
-rw-r--r--template/en/default/list/list.html.tmpl86
-rw-r--r--template/en/default/search/knob.html.tmpl131
-rwxr-xr-xuserprefs.cgi68
7 files changed, 97 insertions, 251 deletions
diff --git a/buglist.cgi b/buglist.cgi
index 1c5161481..2183d5a79 100755
--- a/buglist.cgi
+++ b/buglist.cgi
@@ -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;
}
}
diff --git a/template/en/default/account/prefs/prefs.html.tmpl b/template/en/default/account/prefs/prefs.html.tmpl
index 5892cb40e..54cc14f66 100644
--- a/template/en/default/account/prefs/prefs.html.tmpl
+++ b/template/en/default/account/prefs/prefs.html.tmpl
@@ -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" } ] %]
diff --git a/template/en/default/global/site-navigation.html.tmpl b/template/en/default/global/site-navigation.html.tmpl
index be64c2a86..36c73f292 100644
--- a/template/en/default/global/site-navigation.html.tmpl
+++ b/template/en/default/global/site-navigation.html.tmpl
@@ -72,19 +72,17 @@
[% 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 *** %]
diff --git a/template/en/default/global/useful-links.html.tmpl b/template/en/default/global/useful-links.html.tmpl
index 135dad987..cf84abbb2 100644
--- a/template/en/default/global/useful-links.html.tmpl
+++ b/template/en/default/global/useful-links.html.tmpl
@@ -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"> |
@@ -78,22 +78,12 @@
</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 %]
diff --git a/template/en/default/list/list.html.tmpl b/template/en/default/list/list.html.tmpl
index a61bdef98..4d5a48c79 100644
--- a/template/en/default/list/list.html.tmpl
+++ b/template/en/default/list/list.html.tmpl
@@ -25,7 +25,11 @@
[% 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 %]
@@ -132,33 +136,59 @@
[%############################################################################%]
[% 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 %]
diff --git a/template/en/default/search/knob.html.tmpl b/template/en/default/search/knob.html.tmpl
index 8386eff04..cf40d0711 100644
--- a/template/en/default/search/knob.html.tmpl
+++ b/template/en/default/search/knob.html.tmpl
@@ -31,112 +31,7 @@
"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:
@@ -147,14 +42,24 @@
[% 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 %]
diff --git a/userprefs.cgi b/userprefs.cgi
index 857665f7c..017c7c94d 100755
--- a/userprefs.cgi
+++ b/userprefs.cgi
@@ -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());
-