summaryrefslogtreecommitdiffstats
path: root/extensions
diff options
context:
space:
mode:
Diffstat (limited to 'extensions')
-rw-r--r--extensions/BMO/template/en/default/hook/global/header-start.html.tmpl3
-rw-r--r--extensions/Gravatar/Extension.pm7
-rw-r--r--extensions/Gravatar/template/en/default/hook/bug/comments-user-image.html.tmpl6
-rw-r--r--extensions/InlineHistory/template/en/default/hook/bug/comments-aftercomments.html.tmpl2
-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
7 files changed, 94 insertions, 46 deletions
diff --git a/extensions/BMO/template/en/default/hook/global/header-start.html.tmpl b/extensions/BMO/template/en/default/hook/global/header-start.html.tmpl
index e265d0bb6..2b2642148 100644
--- a/extensions/BMO/template/en/default/hook/global/header-start.html.tmpl
+++ b/extensions/BMO/template/en/default/hook/global/header-start.html.tmpl
@@ -33,7 +33,8 @@
[% END %]
[% END %]
-[% IF user.in_group('canconfirm') %]
+[%# BMO - add user context menu %]
+[% IF user.id %]
[% yui.push('container', 'menu') %]
[% style_urls.push('js/yui/assets/skins/sam/menu.css') %]
[% javascript_urls.push('extensions/BMO/web/js/edituser_menu.js') %]
diff --git a/extensions/Gravatar/Extension.pm b/extensions/Gravatar/Extension.pm
index e30e921c1..52bbd3d08 100644
--- a/extensions/Gravatar/Extension.pm
+++ b/extensions/Gravatar/Extension.pm
@@ -20,16 +20,17 @@ BEGIN {
}
sub _user_gravatar {
- my ($self) = @_;
+ my ($self, $size) = @_;
if (!$self->{gravatar}) {
if ($self->setting('show_my_gravatar') eq 'On') {
(my $email = $self->email) =~ s/\+(.*?)\@/@/;
- $self->{gravatar} = 'https://secure.gravatar.com/avatar/' . md5_hex(lc($email)) . '?size=64&d=mm';
+ $self->{gravatar} = 'https://secure.gravatar.com/avatar/' . md5_hex(lc($email)) . '?d=mm';
} else {
$self->{gravatar} = 'extensions/Gravatar/web/default.jpg';
}
}
- return $self->{gravatar};
+ $size ||= 64;
+ return $self->{gravatar} . "&size=$size";
}
sub install_before_final_checks {
diff --git a/extensions/Gravatar/template/en/default/hook/bug/comments-user-image.html.tmpl b/extensions/Gravatar/template/en/default/hook/bug/comments-user-image.html.tmpl
index 14adfd055..6faed368d 100644
--- a/extensions/Gravatar/template/en/default/hook/bug/comments-user-image.html.tmpl
+++ b/extensions/Gravatar/template/en/default/hook/bug/comments-user-image.html.tmpl
@@ -7,5 +7,9 @@
#%]
[% IF user.settings.show_gravatars.value == 'On' %]
- <img align="middle" src="[% who.gravatar FILTER none %]" width="32" height="32">
+ [% IF who.last_activity_ts %]
+ <a href="user_profile?login=[% who.login FILTER uri %]">
+ [% END %]
+ <img align="middle" src="[% who.gravatar FILTER none %]" width="32" height="32" border="0">
+ [% "</a>" IF who.last_activity_ts %]
[% END %]
diff --git a/extensions/InlineHistory/template/en/default/hook/bug/comments-aftercomments.html.tmpl b/extensions/InlineHistory/template/en/default/hook/bug/comments-aftercomments.html.tmpl
index 079af95f0..25100fe9a 100644
--- a/extensions/InlineHistory/template/en/default/hook/bug/comments-aftercomments.html.tmpl
+++ b/extensions/InlineHistory/template/en/default/hook/bug/comments-aftercomments.html.tmpl
@@ -113,7 +113,7 @@
item[3] = '<div class="bz_comment_head">'
+ '<span class="bz_comment_user">'
+ user_image
- + '[% user_cache.$changer_id FILTER js %]'
+ + ' [% user_cache.$changer_id FILTER js %]'
+ '</span>'
+ '<span class="bz_comment_time"> ' + item[1] + ' </span>'
+ '</div>';
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;
+}