Defect #41853 » fix-41853.patch
| app/assets/stylesheets/application.css | ||
|---|---|---|
| 433 | 433 | |
| 434 | 434 |
tr.member td.icon-user, #principals_for_new_member .icon-user {background:transparent;}
|
| 435 | 435 |
#principals_for_new_member svg {margin-right: 4px;}
|
| 436 |
#principals_for_new_member img.gravatar {margin-right: 4px;}
|
|
| 437 |
#principals_for_new_member span.icon:empty { display: none; }
|
|
| 436 | 438 | |
| 437 | 439 |
tr.user td {width:13%;white-space: nowrap;}
|
| 438 | 440 |
td.username, td.firstname, td.lastname, td.email {text-align:left !important;}
|
| ... | ... | |
| 537 | 539 | |
| 538 | 540 |
#watchers select {width: 95%; display: block;}
|
| 539 | 541 |
#watchers img.gravatar {margin: 0 4px 2px 0;}
|
| 542 |
#watchers svg.icon-svg {margin: 0 2px 2px 0;}
|
|
| 540 | 543 |
#users_for_watcher img.gravatar {padding-bottom: 2px; margin-right: 4px;}
|
| 544 |
#users_for_watcher svg.icon-svg {padding-bottom: 2px; margin-right: 2px;}
|
|
| 545 |
#users_for_watcher span.icon:empty { display: none; }
|
|
| 541 | 546 | |
| 542 | 547 |
span#watchers_inputs {overflow:auto; display:block;}
|
| 543 | 548 |
span.search_for_watchers {display:block;}
|
| app/helpers/application_helper.rb | ||
|---|---|---|
| 651 | 651 |
def principals_check_box_tags(name, principals) |
| 652 | 652 |
s = +'' |
| 653 | 653 |
principals.each do |principal| |
| 654 |
s << |
|
| 655 |
content_tag( |
|
| 656 |
'label', |
|
| 657 |
check_box_tag(name, principal.id, false, :id => nil) + |
|
| 658 |
(avatar(principal, :size => 16).presence || |
|
| 659 |
content_tag( |
|
| 660 |
'span', principal_icon(principal), |
|
| 661 |
:class => "name icon icon-#{principal.class.name.downcase}"
|
|
| 662 |
) |
|
| 663 |
) + principal.to_s |
|
| 664 |
) |
|
| 654 |
principal_check_box = +'' |
|
| 655 |
principal_check_box << check_box_tag(name, principal.id, false, :id => nil) |
|
| 656 |
principal_check_box << avatar(principal, :size => 16).to_s if principal.is_a?(User) |
|
| 657 |
principal_check_box << content_tag('span', principal_icon(principal), :class => "name icon icon-#{principal.class.to_s.downcase}")
|
|
| 658 |
principal_check_box << principal.to_s |
|
| 659 |
s << content_tag('label', principal_check_box.html_safe)
|
|
| 665 | 660 |
end |
| 666 | 661 |
s.html_safe |
| 667 | 662 |
end |
| app/helpers/watchers_helper.rb | ||
|---|---|---|
| 49 | 49 |
content = ''.html_safe |
| 50 | 50 |
lis = object.watcher_users.sorted.collect do |user| |
| 51 | 51 |
s = ''.html_safe |
| 52 |
s << avatar(user, :size => "16").to_s |
|
| 52 |
s << avatar(user, :size => "16").to_s if user.is_a?(User)
|
|
| 53 | 53 |
s << link_to_principal(user, class: user.class.to_s.downcase) |
| 54 | 54 |
if object.respond_to?(:visible?) && user.is_a?(User) && !object.visible?(user) |
| 55 | 55 |
s << content_tag('span', l(:notice_invalid_watcher), class: 'icon-only icon-warning', title: l(:notice_invalid_watcher))
|
| test/helpers/application_helper_test.rb | ||
|---|---|---|
| 2008 | 2008 |
end |
| 2009 | 2009 | |
| 2010 | 2010 |
def test_principals_check_box_tag_with_avatar |
| 2011 |
principals = [User.find(1), Group.find(10)]
|
|
| 2011 |
principals = [User.find(1), User.find(2)]
|
|
| 2012 | 2012 |
with_settings :gravatar_enabled => '1' do |
| 2013 | 2013 |
tags = principals_check_box_tags("watcher[user_ids][]", principals)
|
| 2014 | 2014 |
principals.each do |principal| |
| 2015 | 2015 |
assert_include avatar(principal, :size => 16), tags |
| 2016 |
assert_not_include content_tag('span', nil, :class => "name icon icon-#{principal.class.name.downcase}"), tags
|
|
| 2016 |
assert_include content_tag('span', nil, :class => "name icon icon-#{principal.class.name.downcase}"), tags
|
|
| 2017 |
assert_include principal.to_s, tags |
|
| 2017 | 2018 |
end |
| 2018 | 2019 |
end |
| 2019 | 2020 |
end |
| 2020 | 2021 | |
| 2021 |
def test_principals_check_box_tag_without_avatar |
|
| 2022 |
principals = [User.find(1), Group.find(10)] |
|
| 2022 |
def test_principals_check_box_tag_without_avatar_when_principal_is_group |
|
| 2023 |
principals = [Group.find(10), Group.find(11)] |
|
| 2024 |
with_settings :gravatar_enabled => '1' do |
|
| 2025 |
tags = principals_check_box_tags("watcher[user_ids][]", principals)
|
|
| 2026 |
principals.each do |principal| |
|
| 2027 |
assert_not_include avatar(principal, :size => 16), tags |
|
| 2028 |
assert_include content_tag('span', principal_icon(principal), :class => "name icon icon-#{principal.class.name.downcase}"), tags
|
|
| 2029 |
assert_include principal.to_s, tags |
|
| 2030 |
end |
|
| 2031 |
end |
|
| 2032 |
end |
|
| 2033 | ||
| 2034 |
def test_principals_check_box_tag_without_avatar_when_gravatar_disabled |
|
| 2035 |
principals = [User.find(1), User.find(2)] |
|
| 2023 | 2036 |
Setting.gravatar_enabled = '1' |
| 2024 | 2037 |
avatar_tags = principals.collect{|p| avatar(p, :size => 16)}
|
| 2025 | 2038 | |
| ... | ... | |
| 2027 | 2040 |
tags = principals_check_box_tags(name, principals) |
| 2028 | 2041 |
principals.each_with_index do |principal, i| |
| 2029 | 2042 |
assert_not_include avatar_tags[i], tags |
| 2030 |
assert_include content_tag('span', principal_icon(principal), :class => "name icon icon-#{principal.class.name.downcase}"), tags
|
|
| 2043 |
assert_include content_tag('span', nil, :class => "name icon icon-#{principal.class.name.downcase}"), tags
|
|
| 2044 |
assert_include principal.to_s, tags |
|
| 2031 | 2045 |
end |
| 2032 | 2046 |
end |
| 2033 | 2047 |
end |
| test/helpers/watchers_helper_test.rb | ||
|---|---|---|
| 94 | 94 |
end |
| 95 | 95 |
end |
| 96 | 96 |
end |
| 97 | ||
| 98 |
def test_watchers_list_should_include_avatar_and_user_name |
|
| 99 |
issue = Issue.find(1) |
|
| 100 |
Watcher.create!(:watchable => issue, :user => User.find(1)) |
|
| 101 | ||
| 102 |
with_settings :gravatar_enabled => '1' do |
|
| 103 |
result = watchers_list(issue) |
|
| 104 |
assert_select_in result, 'ul.watchers' do |
|
| 105 |
assert_select 'li', 1 |
|
| 106 |
assert_select 'li:nth-of-type(1)>img.gravatar', 1 |
|
| 107 |
assert_select 'li:nth-of-type(1)>a[href=?]', '/users/1', text: 'Redmine Admin' |
|
| 108 |
assert_select 'li:nth-of-type(1)>a.group>svg.icon-svg', 0 |
|
| 109 |
end |
|
| 110 |
end |
|
| 111 |
end |
|
| 112 | ||
| 113 |
def test_watchers_list_should_include_svg_icon_and_group_name |
|
| 114 |
issue = Issue.find(1) |
|
| 115 |
Watcher.create!(:watchable => issue, :user => Group.find(10)) |
|
| 116 | ||
| 117 |
with_settings :gravatar_enabled => '1' do |
|
| 118 |
result = watchers_list(issue) |
|
| 119 |
assert_select_in result, 'ul.watchers' do |
|
| 120 |
assert_select 'li', 1 |
|
| 121 |
assert_select 'li:nth-of-type(1)>a.group>svg.icon-svg', 1 |
|
| 122 |
assert_select 'li:nth-of-type(1)>a[href=?]', '/groups/10', text: 'A Team' |
|
| 123 |
assert_select 'li:nth-of-type(1)>img.gravatar', 0 |
|
| 124 |
end |
|
| 125 |
end |
|
| 126 |
end |
|
| 97 | 127 |
end |