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 |
- « Previous
- 1
- 2
- Next »