From d756467055959872b1a443d2c60417135b0d05e9 Mon Sep 17 00:00:00 2001
From: "gerv%gerv.net" <>
Date: Wed, 8 May 2002 04:28:39 +0000
Subject: Bug 140435 - Templatise GetCommandMenu. Patch by gerv; r=bbaetz,
justdave.
---
CGI.pl | 43 +++++++
buglist.cgi | 22 +++-
checksetup.pl | 1 +
globals.pl | 12 +-
relogin.cgi | 1 +
t/004template.t | 1 +
.../en/default/bug/votes/list-for-user.html.tmpl | 10 +-
template/en/default/global/footer.html.tmpl | 40 ++++++-
template/en/default/global/useful-links.html.tmpl | 125 +++++++++++++++++++++
template/en/default/list/edit-multiple.html.tmpl | 2 +-
userprefs.cgi | 3 +
votes.cgi | 2 +-
12 files changed, 248 insertions(+), 14 deletions(-)
create mode 100644 template/en/default/global/useful-links.html.tmpl
diff --git a/CGI.pl b/CGI.pl
index b62913d36..f5ce6fb35 100644
--- a/CGI.pl
+++ b/CGI.pl
@@ -480,9 +480,52 @@ sub quietly_check_login() {
if (!$loginok) {
delete $::COOKIE{"Bugzilla_login"};
}
+
+ $vars->{'user'} = GetUserInfo($::userid);
+
return $loginok;
}
+# Populate a hash with information about this user.
+sub GetUserInfo {
+ my ($userid) = (@_);
+ my %user;
+ my @queries;
+ my %groups;
+
+ # No info if not logged in
+ return \%user if ($userid == 0);
+
+ $user{'login'} = $::COOKIE{"Bugzilla_login"};
+ $user{'userid'} = $userid;
+
+ SendSQL("SELECT mybugslink, realname, groupset FROM profiles " .
+ "WHERE userid = $userid");
+ ($user{'showmybugslink'}, $user{'realname'}, $user{'groupset'}) =
+ FetchSQLData();
+
+ SendSQL("SELECT name, query, linkinfooter FROM namedqueries " .
+ "WHERE userid = $userid");
+ while (MoreSQLData()) {
+ my %query;
+ ($query{'name'}, $query{'query'}, $query{'linkinfooter'}) =
+ FetchSQLData();
+ push(@queries, \%query);
+ }
+
+ $user{'queries'} = \@queries;
+
+ SendSQL("select name, (bit & $user{'groupset'}) != 0 from groups");
+ while (MoreSQLData()) {
+ my ($name, $bit) = FetchSQLData();
+ $groups{$name} = $bit;
+ }
+
+ $user{'groups'} = \%groups;
+
+ return \%user;
+}
+
sub CheckEmailSyntax {
my ($addr) = (@_);
my $match = Param('emailregexp');
diff --git a/buglist.cgi b/buglist.cgi
index 37baecc86..4c1719d99 100755
--- a/buglist.cgi
+++ b/buglist.cgi
@@ -1119,8 +1119,22 @@ CMD: for ($::FORM{'cmdtype'}) {
SendSQL("REPLACE INTO namedqueries (userid, name, query, linkinfooter)
VALUES ($userid, $qname, $qbuffer, $tofooter)");
}
+
+ my $new_in_footer = $tofooter;
+
+ # Don't add it to the list if they are reusing an existing query name.
+ foreach my $query (@{$vars->{'user'}{'queries'}}) {
+ if ($query->{'name'} eq $name) {
+ $new_in_footer = 0;
+ }
+ }
+
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.
+ if ($new_in_footer) {
+ push(@{$vars->{'user'}{'queries'}}, {name => $name});
+ }
+
$vars->{'title'} = "OK, query saved.";
$vars->{'message'} = "OK, you have a new query named $name
";
$vars->{'url'} = "query.cgi";
@@ -1453,7 +1467,7 @@ $vars->{'urlquerypart'} =~ s/[&?](order|cmdtype)=[^&]*//g;
$vars->{'order'} = $order;
# The user's login account name (i.e. email address).
-$vars->{'user'} = $::COOKIE{'Bugzilla_login'};
+my $login = $::COOKIE{'Bugzilla_login'};
$vars->{'caneditbugs'} = UserInGroup('editbugs');
$vars->{'usebuggroups'} = UserInGroup('usebuggroups');
@@ -1461,8 +1475,8 @@ $vars->{'usebuggroups'} = UserInGroup('usebuggroups');
# Whether or not this user is authorized to move bugs to another installation.
$vars->{'ismover'} = 1
if Param('move-enabled')
- && defined($vars->{'user'})
- && Param('movers') =~ /^(\Q$vars->{'user'}\E[,\s])|([,\s]\Q$vars->{'user'}\E[,\s]+)/;
+ && defined($login)
+ && Param('movers') =~ /^(\Q$login\E[,\s])|([,\s]\Q$login\E[,\s]+)/;
my @bugowners = keys %$bugowners;
if (scalar(@bugowners) > 1 && UserInGroup('editbugs')) {
diff --git a/checksetup.pl b/checksetup.pl
index 4f59e92e6..e1a551506 100755
--- a/checksetup.pl
+++ b/checksetup.pl
@@ -842,6 +842,7 @@ END
js => sub { return $_; },
html => sub { return $_; },
url_quote => sub { return $_; }
+ no_break => sub { return $_; }
},
}) || die ("Could not create Template: " . Template->error() . "\n");
diff --git a/globals.pl b/globals.pl
index f6e651e3c..d04133d10 100644
--- a/globals.pl
+++ b/globals.pl
@@ -486,7 +486,6 @@ sub GenerateVersionTable {
}
}
-
my $cols = LearnAboutColumns("bugs");
@::log_columns = @{$cols->{"-list-"}};
@@ -1574,6 +1573,15 @@ $::template ||= Template->new(
# filter should be used for a full URL that may have
# characters that need encoding.
url_quote => \&url_quote ,
+
+ # Returns the text with spaces converted to non-breaking space
+ # HTML entities.
+ no_break => sub
+ {
+ my ($var) = @_;
+ $var =~ s/ /\ /g;
+ return $var;
+ } ,
} ,
}
) || DisplayError("Template creation failed: " . Template->error())
@@ -1756,6 +1764,8 @@ $::vars =
# User Agent - useful for detecting in templates
'user_agent' => $ENV{'HTTP_USER_AGENT'} ,
+
+ 'use_votes' => $::anyvotesallowed,
};
1;
diff --git a/relogin.cgi b/relogin.cgi
index d07de9ef6..0d64fb71f 100755
--- a/relogin.cgi
+++ b/relogin.cgi
@@ -66,6 +66,7 @@ delete $::COOKIE{"Bugzilla_login"};
next time it is required.";
$vars->{'url'} = "query.cgi?GoAheadAndLogIn=1";
$vars->{'link'} = "Log in again here";
+ $vars->{'user'} = {};
print "Content-Type: text/html\n\n";
$template->process("global/message.html.tmpl", $vars)
diff --git a/t/004template.t b/t/004template.t
index 4332e2e82..f9cd0fad9 100644
--- a/t/004template.t
+++ b/t/004template.t
@@ -70,6 +70,7 @@ my $template = Template->new(
js => sub { return $_ } ,
strike => sub { return $_ } ,
url_quote => sub { return $_ } ,
+ no_break => sub { return $_ } ,
},
}
);
diff --git a/template/en/default/bug/votes/list-for-user.html.tmpl b/template/en/default/bug/votes/list-for-user.html.tmpl
index 261e0f864..4797d71b7 100644
--- a/template/en/default/bug/votes/list-for-user.html.tmpl
+++ b/template/en/default/bug/votes/list-for-user.html.tmpl
@@ -21,9 +21,11 @@
[% PROCESS global/header.html.tmpl
title = "Show Votes"
- h2 = user.name
+ h2 = voting_user.name
%]
+[% canedit = 1 IF voting_user.login == user.login %]
+
[% IF votes_recorded %]
@@ -76,7 +78,7 @@
- [% IF user.canedit %]
+ [% IF canedit %]
You are
[% ELSE %]
This user is
diff --git a/template/en/default/global/footer.html.tmpl b/template/en/default/global/footer.html.tmpl
index 8b3af59a4..b611cb06c 100644
--- a/template/en/default/global/footer.html.tmpl
+++ b/template/en/default/global/footer.html.tmpl
@@ -16,12 +16,46 @@
# Copyright (C) 1998 Netscape Communications Corporation. All
# Rights Reserved.
#
- # Contributor(s):
+ # Contributor(s): Gervase Markham
+
+
+
+
+
+
+
+
+
+
+[%# Migration note: this section corresponds to the old Param 'blurbhtml' %]
+
+ This is Bugzilla: the Mozilla bug system. For more
+ information about what Bugzilla is and what it can do, see
+ bugzilla.org.
+
+[%# End section %]
+
+
+
+
+[% Migration note: useful-links.html.tmpl corresponds to %commandmenu% %]
+
+ [% PROCESS "global/useful-links.html.tmpl" %]
+
+