summaryrefslogtreecommitdiffstats
path: root/extensions/UserProfile
diff options
context:
space:
mode:
authorByron Jones <bjones@mozilla.com>2013-11-01 08:39:59 +0100
committerByron Jones <bjones@mozilla.com>2013-11-01 08:39:59 +0100
commite5d385374cb02e7d6b1b2013144135264ec5d29a (patch)
tree49e83687a3a08a749ac79ea41ea91bbc8acf2b50 /extensions/UserProfile
parent682a16ef7a6bcd78cac1748f431ab3912269a929 (diff)
downloadbugzilla-e5d385374cb02e7d6b1b2013144135264ec5d29a.tar.gz
bugzilla-e5d385374cb02e7d6b1b2013144135264ec5d29a.tar.xz
Bug 911812: make the user profile more discoverable
Diffstat (limited to 'extensions/UserProfile')
-rw-r--r--extensions/UserProfile/Extension.pm9
-rw-r--r--extensions/UserProfile/template/en/default/pages/user_profile.html.tmpl69
-rw-r--r--extensions/UserProfile/web/styles/user_profile.css44
3 files changed, 82 insertions, 40 deletions
diff --git a/extensions/UserProfile/Extension.pm b/extensions/UserProfile/Extension.pm
index 99f235896..9e8eadb97 100644
--- a/extensions/UserProfile/Extension.pm
+++ b/extensions/UserProfile/Extension.pm
@@ -281,16 +281,18 @@ sub page_before_template {
my $target;
my $input = Bugzilla->input_params;
my $limit = Bugzilla->params->{'maxusermatches'} + 1;
- if (!$input->{login}) {
+ my $login = $input->{login};
+ if (!$login) {
$target = Bugzilla->login(LOGIN_REQUIRED);
+ $login = $target->login;
} else {
- my $users = Bugzilla::User::match($input->{login}, $limit, 1);
+ my $users = Bugzilla::User::match($login, $limit, 1);
if (scalar(@$users) == 1) {
# always allow singular matches without confirmation
$target = $users->[0];
} else {
Bugzilla::User::match_field({ 'login' => {'type' => 'single'} });
- $target = Bugzilla::User->check($input->{login});
+ $target = Bugzilla::User->check($login);
}
}
@@ -353,6 +355,7 @@ sub page_before_template {
$vars->{stats} = $stats;
$vars->{statuses} = $statuses;
$vars->{products} = $products;
+ $vars->{login} = $login;
$vars->{target} = $target;
}
diff --git a/extensions/UserProfile/template/en/default/pages/user_profile.html.tmpl b/extensions/UserProfile/template/en/default/pages/user_profile.html.tmpl
index 005d53443..71442b822 100644
--- a/extensions/UserProfile/template/en/default/pages/user_profile.html.tmpl
+++ b/extensions/UserProfile/template/en/default/pages/user_profile.html.tmpl
@@ -8,39 +8,9 @@
[% PROCESS global/variables.none.tmpl %]
-[% inline_styles = BLOCK %]
- #login_autocomplete {
- float: left;
- }
-
- #user_profile_table th {
- text-align: right;
- padding-right: 1em;
- vertical-align: middle;
- white-space: nowrap;
- }
-
- #user_profile_table .numeric {
- text-align: right;
- }
-
- #user_profile_table .product_span {
- white-space: nowrap;
- }
-
- #what {
- margin-top: 2em;
- }
-
- #updated {
- font-style: italic;
- font-size: x-small;
- }
-[% END %]
-
[% PROCESS global/header.html.tmpl
title = "User Profile: " _ target.identity
- style = inline_styles
+ style_urls = [ "extensions/UserProfile/web/styles/user_profile.css" ]
yui = [ 'autocomplete' ]
javascript_urls = [ "js/field.js" ]
%]
@@ -48,13 +18,14 @@
<table id="user_profile_table">
<tr>
- <th>Email</th>
+ <td>&nbsp;</td>
+ <th>Search</th>
<td colspan="2">
<form action="user_profile">
[% INCLUDE global/userselect.html.tmpl
id => "login"
name => "login"
- value => target.email
+ value => login
size => 40
emptyok => 0
%]
@@ -64,14 +35,31 @@
</tr>
<tr>
+ <td colspan="4" class="separator"><hr></td>
+</tr>
+
+<tr>
+ <td rowspan="16" id="gravatar-container">
+ [% IF user.gravatar %]
+ <img id="gravatar" src="[% target.gravatar(256) FILTER none %]" width="128" height="128"><br>
+ [% IF target.id == user.id %]
+ <a href="http://gravatar.com/">Change my image</a>
+ [% END %]
+ [% ELSE %]
+ &nbsp;
+ [% END %]
+ </td>
<th>Name</th>
<td colspan="2">[% target.name FILTER html %]</td>
</tr>
<tr>
+ <th>Email</th>
+ <td colspan="2"><a href="mailto:[% target.login FILTER uri %]">[% target.login FILTER html %]</a></td>
+</tr>
+
+<tr>
<td>&nbsp;</td>
- <td>&nbsp;</td>
- <td width="100%">&nbsp;</td>
</tr>
[%# user.creation_ts is added by the TagNewUsers extension %]
@@ -150,7 +138,7 @@
</tr>
<tr>
- <th>Statuses changed</td>
+ <th>Statuses changed</th>
<td colspan="2">
RESOLVED ([% statuses.item('RESOLVED') || 0 FILTER html %]),
FIXED ([% statuses.item('RESOLVED/FIXED') || 0 FILTER html %]),
@@ -160,7 +148,7 @@
</tr>
<tr>
- <th>Activity by product</td>
+ <th>Activity by product</th>
<td colspan="2">
[% FOREACH p = products %]
<span class="product_span">
@@ -176,6 +164,13 @@
</td>
</tr>
+<tr>
+ <td>&nbsp;</td>
+ <td>&nbsp;</td>
+ <td>&nbsp;</td>
+ <td width="100%">&nbsp;</td>
+</tr>
+
</table>
<div id="what">
diff --git a/extensions/UserProfile/web/styles/user_profile.css b/extensions/UserProfile/web/styles/user_profile.css
new file mode 100644
index 000000000..c261c24b6
--- /dev/null
+++ b/extensions/UserProfile/web/styles/user_profile.css
@@ -0,0 +1,44 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this file,
+ * You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This Source Code Form is "Incompatible With Secondary Licenses", as
+ * defined by the Mozilla Public License, v. 2.0. */
+
+#login_autocomplete {
+ float: left;
+}
+
+#user_profile_table th {
+ text-align: right;
+ padding-right: 1em;
+ vertical-align: middle;
+ white-space: nowrap;
+}
+
+#user_profile_table .numeric {
+ text-align: right;
+}
+
+#user_profile_table .product_span {
+ white-space: nowrap;
+}
+
+#updated {
+ font-style: italic;
+ font-size: x-small;
+}
+
+#gravatar-container {
+ text-align: center;
+ font-size: x-small;
+ vertical-align: top;
+ padding-right: 15px;
+}
+
+#gravatar {
+ -moz-box-shadow: 2px 2px 5px #888;
+ -webkit-box-shadow: 2px 2px 5px #888;
+ box-shadow: 2px 2px 5px #888;
+ margin-bottom: 5px;
+}