diff options
Diffstat (limited to 'extensions')
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> </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 %] + + [% 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> </td> - <td> </td> - <td width="100%"> </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> </td> + <td> </td> + <td> </td> + <td width="100%"> </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; +} |