summaryrefslogtreecommitdiffstats
path: root/extensions
diff options
context:
space:
mode:
Diffstat (limited to 'extensions')
-rw-r--r--extensions/Gravatar/template/en/default/hook/bug/comments-user-image.html.tmpl6
-rw-r--r--extensions/UserProfile/Extension.pm35
-rw-r--r--extensions/UserProfile/template/en/default/pages/user_profile.html.tmpl52
3 files changed, 55 insertions, 38 deletions
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 6faed368d..66714748b 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
@@ -8,7 +8,11 @@
[% IF user.settings.show_gravatars.value == 'On' %]
[% IF who.last_activity_ts %]
- <a href="user_profile?login=[% who.login FILTER uri %]">
+ [% IF user.id %]
+ <a href="user_profile?login=[% who.login FILTER uri %]">
+ [% ELSE %]
+ <a href="user_profile?user_id=[% who.id FILTER uri %]">
+ [% END %]
[% END %]
<img align="middle" src="[% who.gravatar FILTER none %]" width="32" height="32" border="0">
[% "</a>" IF who.last_activity_ts %]
diff --git a/extensions/UserProfile/Extension.pm b/extensions/UserProfile/Extension.pm
index 9e8eadb97..673c0c2a1 100644
--- a/extensions/UserProfile/Extension.pm
+++ b/extensions/UserProfile/Extension.pm
@@ -277,24 +277,33 @@ sub page_before_template {
return unless $page eq 'user_profile.html';
my $user = Bugzilla->user;
- # check login
- my $target;
+ # determine user to display
+ my ($target, $login);
my $input = Bugzilla->input_params;
- my $limit = Bugzilla->params->{'maxusermatches'} + 1;
- my $login = $input->{login};
- if (!$login) {
- $target = Bugzilla->login(LOGIN_REQUIRED);
- $login = $target->login;
+ if (my $user_id = $input->{user_id}) {
+ # load from user_id
+ $user_id = 0 if $user_id =~ /\D/;
+ $target = Bugzilla::User->check({ id => $user_id });
} else {
- my $users = Bugzilla::User::match($login, $limit, 1);
- if (scalar(@$users) == 1) {
- # always allow singular matches without confirmation
- $target = $users->[0];
+ # loading from login name requires authentication
+ Bugzilla->login(LOGIN_REQUIRED);
+ $login = $input->{login};
+ if (!$login) {
+ # show current user's profile by default
+ $target = $user;
} else {
- Bugzilla::User::match_field({ 'login' => {'type' => 'single'} });
- $target = Bugzilla::User->check($login);
+ my $limit = Bugzilla->params->{'maxusermatches'} + 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($login);
+ }
}
}
+ $login ||= $target->login;
# load statistics into $vars
my $dbh = Bugzilla->switch_to_shadow_db;
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 f1107bd6a..aabc42db2 100644
--- a/extensions/UserProfile/template/en/default/pages/user_profile.html.tmpl
+++ b/extensions/UserProfile/template/en/default/pages/user_profile.html.tmpl
@@ -18,29 +18,31 @@
<table id="user_profile_table">
-<tr>
- <td>&nbsp;</td>
- <th>Search</th>
- <td colspan="2">
- <form action="user_profile">
- [% INCLUDE global/userselect.html.tmpl
- id => "login"
- name => "login"
- value => login
- size => 40
- emptyok => 0
- %]
- &nbsp;&nbsp;<input type="submit" value="Show">
- </form>
- </td>
-</tr>
+[% IF user.id %]
+ <tr>
+ <td>&nbsp;</td>
+ <th>Search</th>
+ <td colspan="2">
+ <form action="user_profile">
+ [% INCLUDE global/userselect.html.tmpl
+ id => "login"
+ name => "login"
+ value => login
+ size => 40
+ emptyok => 0
+ %]
+ &nbsp;&nbsp;<input type="submit" value="Show">
+ </form>
+ </td>
+ </tr>
-<tr>
- <td colspan="4" class="separator"><hr></td>
-</tr>
+ <tr>
+ <td colspan="4" class="separator"><hr></td>
+ </tr>
+[% END %]
<tr>
- <td rowspan="16" id="gravatar-container">
+ <td rowspan="[% user.id ? 16 : 15 %]" 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 %]
@@ -54,10 +56,12 @@
<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>
+[% IF user.id %]
+ <tr>
+ <th>Email</th>
+ <td colspan="2"><a href="mailto:[% target.login FILTER uri %]">[% target.login FILTER html %]</a></td>
+ </tr>
+[% END %]
<tr>
<td>&nbsp;</td>