Feature #42623 » 0001-Adds-Initials-to-the-list-of-default-gratavar-option.patch
| app/helpers/avatars_helper.rb | ||
|---|---|---|
| 44 | 44 |
if user.respond_to?(:mail) |
| 45 | 45 |
email = user.mail |
| 46 | 46 |
options[:title] = user.name unless options[:title] |
| 47 |
options[:initials] = user.initials if options[:default] == "initials" |
|
| 47 | 48 |
elsif user.to_s =~ %r{<(.+?)>}
|
| 48 | 49 |
email = $1 |
| 49 | 50 |
end |
| app/helpers/settings_helper.rb | ||
|---|---|---|
| 244 | 244 |
['Mystery man', 'mm'], |
| 245 | 245 |
['Retro', 'retro'], |
| 246 | 246 |
['Robohash', 'robohash'], |
| 247 |
['Wavatars', 'wavatar']] |
|
| 247 |
['Wavatars', 'wavatar'], |
|
| 248 |
['Initials', 'initials']] |
|
| 248 | 249 |
end |
| 249 | 250 |
end |
| app/models/user.rb | ||
|---|---|---|
| 28 | 28 |
USER_FORMATS = {
|
| 29 | 29 |
:firstname_lastname => {
|
| 30 | 30 |
:string => '#{firstname} #{lastname}',
|
| 31 |
:initials => '#{firstname.to_s.first}#{lastname.to_s.first}',
|
|
| 31 | 32 |
:order => %w(firstname lastname id), |
| 32 | 33 |
:setting_order => 1 |
| 33 | 34 |
}, |
| 34 | 35 |
:firstname_lastinitial => {
|
| 35 | 36 |
:string => '#{firstname} #{lastname.to_s.chars.first}.',
|
| 37 |
:initials => '#{firstname.to_s.first}#{lastname.to_s.first}',
|
|
| 36 | 38 |
:order => %w(firstname lastname id), |
| 37 | 39 |
:setting_order => 2 |
| 38 | 40 |
}, |
| 39 | 41 |
:firstinitial_lastname => {
|
| 40 | 42 |
:string => '#{firstname.to_s.gsub(/(([[:alpha:]])[[:alpha:]]*\.?)/, \'\2.\')} #{lastname}',
|
| 43 |
:initials => '#{firstname.to_s.gsub(/(([[:alpha:]])[[:alpha:]]*\.?)/, \'\2.\').first}#{lastname.to_s.first}',
|
|
| 41 | 44 |
:order => %w(firstname lastname id), |
| 42 | 45 |
:setting_order => 2 |
| 43 | 46 |
}, |
| 44 | 47 |
:firstname => {
|
| 45 | 48 |
:string => '#{firstname}',
|
| 49 |
:initials => '#{firstname.to_s.first(2)}',
|
|
| 46 | 50 |
:order => %w(firstname id), |
| 47 | 51 |
:setting_order => 3 |
| 48 | 52 |
}, |
| 49 | 53 |
:lastname_firstname => {
|
| 50 | 54 |
:string => '#{lastname} #{firstname}',
|
| 55 |
:initials => '#{lastname.to_s.first} #{firstname.to_s.first}',
|
|
| 51 | 56 |
:order => %w(lastname firstname id), |
| 52 | 57 |
:setting_order => 4 |
| 53 | 58 |
}, |
| 54 | 59 |
:lastnamefirstname => {
|
| 55 | 60 |
:string => '#{lastname}#{firstname}',
|
| 61 |
:initials => '#{lastname.to_s.first}#{firstname.to_s.first}',
|
|
| 56 | 62 |
:order => %w(lastname firstname id), |
| 57 | 63 |
:setting_order => 5 |
| 58 | 64 |
}, |
| 59 | 65 |
:lastname_comma_firstname => {
|
| 60 | 66 |
:string => '#{lastname}, #{firstname}',
|
| 67 |
:initials => '#{lastname.to_s.first}#{firstname.to_s.first}',
|
|
| 61 | 68 |
:order => %w(lastname firstname id), |
| 62 | 69 |
:setting_order => 6 |
| 63 | 70 |
}, |
| 64 | 71 |
:lastname => {
|
| 65 | 72 |
:string => '#{lastname}',
|
| 73 |
:initials => '#{lastname.to_s.first(2)}',
|
|
| 66 | 74 |
:order => %w(lastname id), |
| 67 | 75 |
:setting_order => 7 |
| 68 | 76 |
}, |
| 69 | 77 |
:username => {
|
| 70 | 78 |
:string => '#{login}',
|
| 79 |
:initials => '#{login.to_s.first(2)}',
|
|
| 71 | 80 |
:order => %w(login id), |
| 72 | 81 |
:setting_order => 8 |
| 73 | 82 |
}, |
| ... | ... | |
| 274 | 283 |
end |
| 275 | 284 |
end |
| 276 | 285 | |
| 286 |
# Return user's initials based on name format |
|
| 287 |
def initials(formatter = nil) |
|
| 288 |
f = self.class.name_formatter(formatter) |
|
| 289 |
format = f[:initials] || USER_FORMATS[:firstname_lastname][:initials] |
|
| 290 |
initials = eval('"' + format + '"')
|
|
| 291 |
initials.upcase |
|
| 292 |
end |
|
| 293 | ||
| 277 | 294 |
def registered? |
| 278 | 295 |
self.status == STATUS_REGISTERED |
| 279 | 296 |
end |
| lib/plugins/gravatar/lib/gravatar.rb | ||
|---|---|---|
| 69 | 69 |
options[:default] = CGI::escape(options[:default]) unless options[:default].nil? |
| 70 | 70 |
gravatar_api_url(email_hash).tap do |url| |
| 71 | 71 |
opts = [] |
| 72 |
[:rating, :size, :default].each do |opt| |
|
| 72 |
[:rating, :size, :default, :initials].each do |opt|
|
|
| 73 | 73 |
unless options[opt].nil? |
| 74 | 74 |
value = h(options[opt]) |
| 75 | 75 |
opts << [opt, value].join('=')
|
| test/helpers/avatars_helper_test.rb | ||
|---|---|---|
| 68 | 68 |
assert_include 'class="gravatar picture"', avatar('jsmith <jsmith@somenet.foo>', :class => 'picture')
|
| 69 | 69 |
end |
| 70 | 70 | |
| 71 |
def test_avatar_with_initials |
|
| 72 |
with_settings :gravatar_default => 'initials' do |
|
| 73 |
assert_include 'initials="RA"', avatar(User.find(1)) |
|
| 74 |
end |
|
| 75 |
end |
|
| 76 | ||
| 77 |
def test_avatar_should_reject_initials_if_default_is_not_initials |
|
| 78 |
with_settings :gravatar_default => 'identicon' do |
|
| 79 |
assert_not_include 'initials="RA"', avatar(User.find(1)) |
|
| 80 |
end |
|
| 81 |
end |
|
| 82 | ||
| 71 | 83 |
def test_avatar_disabled |
| 72 | 84 |
with_settings :gravatar_enabled => '0' do |
| 73 | 85 |
assert_equal '', avatar(User.find_by_mail('jsmith@somenet.foo'))
|
| test/unit/user_test.rb | ||
|---|---|---|
| 589 | 589 |
end |
| 590 | 590 |
end |
| 591 | 591 | |
| 592 |
def test_initials_format |
|
| 593 |
assert_equal 'JS', @jsmith.initials(:firstname_lastinitial) |
|
| 594 |
assert_equal 'SJ', @jsmith.initials(:lastname_comma_firstname) |
|
| 595 |
assert_equal 'JS', @jsmith.initials(:firstinitial_lastname) |
|
| 596 |
assert_equal 'JL', User.new(:firstname => 'Jean-Philippe', :lastname => 'Lang').initials(:firstinitial_lastname) |
|
| 597 |
assert_equal 'JS', @jsmith.initials(:undefined_format) |
|
| 598 |
end |
|
| 599 | ||
| 600 |
def test_initials_should_use_setting_as_default_format |
|
| 601 |
with_settings :user_format => :firstname_lastname do |
|
| 602 |
assert_equal 'JS', @jsmith.reload.initials |
|
| 603 |
end |
|
| 604 |
with_settings :user_format => :username do |
|
| 605 |
assert_equal 'JS', @jsmith.reload.initials |
|
| 606 |
end |
|
| 607 |
with_settings :user_format => :lastname do |
|
| 608 |
assert_equal 'SM', @jsmith.reload.initials |
|
| 609 |
end |
|
| 610 |
end |
|
| 611 | ||
| 592 | 612 |
def test_lastname_should_accept_255_characters |
| 593 | 613 |
u = User.first |
| 594 | 614 |
u.lastname = 'a' * 255 |