Commit 7ba0db117c922fa575ef846115e9d1e28d457ad8
1 parent
ba467618
Exists in
theme-brasil-digital-from-staging
and in
9 other branches
Modify invite friend to community feature for add member imediatly, if logged us…
…er is a admin of environment
Showing
6 changed files
with
76 additions
and
7 deletions
Show diff stats
app/controllers/public/invite_controller.rb
... | ... | @@ -62,11 +62,27 @@ class InviteController < PublicController |
62 | 62 | redirect_to :action => 'invite_friends' |
63 | 63 | end |
64 | 64 | |
65 | + #Invite or add member without create a task | |
66 | + #if logged user is admin of environment | |
65 | 67 | def invite_registered_friend |
66 | 68 | contacts_to_invite = params['q'].split(',') |
67 | 69 | if !contacts_to_invite.empty? && request.post? |
68 | - Delayed::Job.enqueue InvitationJob.new(user.id, contacts_to_invite, '', profile.id, nil, locale) | |
69 | - session[:notice] = _('Your invitations are being sent.') | |
70 | + | |
71 | + if user.is_admin? | |
72 | + person = Person.find(user.id) | |
73 | + session[:invited_members] = [] | |
74 | + | |
75 | + Invitation.invite(person, contacts_to_invite, '', profile) do |added_member| | |
76 | + session[:invited_members] << added_member.id | |
77 | + end | |
78 | + | |
79 | + session[:notice] = _('This friends was added!') | |
80 | + else | |
81 | + Delayed::Job.enqueue InvitationJob.new(user.id, contacts_to_invite, '', profile.id, nil, locale) | |
82 | + session[:notice] = _('Your invitations are being sent.') | |
83 | + end | |
84 | + | |
85 | + | |
70 | 86 | if profile.person? |
71 | 87 | redirect_to :controller => 'profile', :action => 'friends' |
72 | 88 | else | ... | ... |
app/controllers/public/profile_controller.rb
... | ... | @@ -64,8 +64,15 @@ class ProfileController < PublicController |
64 | 64 | end |
65 | 65 | |
66 | 66 | def members |
67 | + @profiles_focus = [] | |
68 | + | |
67 | 69 | if is_cache_expired?(profile.members_cache_key(params)) |
68 | 70 | @members = profile.members_by_name.includes(relations_to_include).paginate(:per_page => members_per_page, :page => params[:npage], :total_entries => profile.members.count) |
71 | + if session[:invited_members] | |
72 | + @profiles_focus = session[:invited_members] | |
73 | + | |
74 | + session.delete :invited_members | |
75 | + end | |
69 | 76 | end |
70 | 77 | end |
71 | 78 | ... | ... |
app/helpers/application_helper.rb
... | ... | @@ -589,14 +589,24 @@ module ApplicationHelper |
589 | 589 | trigger_class = 'enterprise-trigger' |
590 | 590 | end |
591 | 591 | end |
592 | - extra_info = extra_info.nil? ? '' : content_tag( 'span', extra_info, :class => 'extra_info' ) | |
592 | + | |
593 | + extra_info_tag = '' | |
594 | + img_class = 'profile-image' | |
595 | + | |
596 | + if extra_info.is_a? Hash | |
597 | + extra_info_tag = content_tag( 'span', extra_info[:value], :class => 'extra_info '+extra_info[:class]) | |
598 | + img_class +=' '+extra_info[:class] | |
599 | + else | |
600 | + extra_info_tag = content_tag( 'span', extra_info, :class => 'extra_info' ) | |
601 | + end | |
602 | + #extra_info = extra_info.nil? ? '' : content_tag( 'span', extra_info, :class => 'extra_info' ) | |
593 | 603 | links = links_for_balloon(profile) |
594 | 604 | content_tag('div', content_tag(tag, |
595 | 605 | (environment.enabled?(:show_balloon_with_profile_links_when_clicked) ? link_to( content_tag( 'span', _('Profile links')), '#', :onclick => "toggleSubmenu(this, '#{profile.short_name}', #{CGI::escapeHTML(links.to_json)}); return false", :class => "menu-submenu-trigger #{trigger_class}", :url => url) : "") + |
596 | 606 | link_to( |
597 | - content_tag( 'span', profile_image( profile, size ), :class => 'profile-image' ) + | |
607 | + content_tag( 'span', profile_image( profile, size ), :class => img_class ) + | |
598 | 608 | content_tag( 'span', h(name), :class => ( profile.class == Person ? 'fn' : 'org' ) ) + |
599 | - extra_info + profile_sex_icon( profile ) + profile_cat_icons( profile ), | |
609 | + extra_info_tag + profile_sex_icon( profile ) + profile_cat_icons( profile ), | |
600 | 610 | profile.url, |
601 | 611 | :class => 'profile_link url', |
602 | 612 | :help => _('Click on this icon to go to the <b>%s</b>\'s home page') % profile.name, | ... | ... |
app/models/invitation.rb
... | ... | @@ -47,6 +47,7 @@ class Invitation < Task |
47 | 47 | end |
48 | 48 | |
49 | 49 | def self.invite(person, contacts_to_invite, message, profile) |
50 | + | |
50 | 51 | contacts_to_invite.each do |contact_to_invite| |
51 | 52 | next if contact_to_invite == _("Firstname Lastname <friend@email.com>") |
52 | 53 | |
... | ... | @@ -79,7 +80,23 @@ class Invitation < Task |
79 | 80 | if profile.person? |
80 | 81 | InviteFriend.create(task_args) if user.nil? || !user.person.is_a_friend?(person) |
81 | 82 | elsif profile.community? |
82 | - InviteMember.create(task_args.merge(:community_id => profile.id)) if user.nil? || !user.person.is_member_of?(profile) | |
83 | + | |
84 | + if person.is_admin? | |
85 | + unless user.person.is_member_of?(profile) | |
86 | + | |
87 | + profile.add_member(user.person) | |
88 | + | |
89 | + #Call after add member callback | |
90 | + yield user | |
91 | + | |
92 | + end | |
93 | + else | |
94 | + | |
95 | + InviteMember.create(task_args.merge(:community_id => profile.id)) if user.nil? || !user.person.is_member_of?(profile) | |
96 | + | |
97 | + #Call after create invite member task callback | |
98 | + yield user,task_args | |
99 | + end | |
83 | 100 | else |
84 | 101 | raise NotImplementedError, 'Don\'t know how to invite people to a %s' % profile.class.to_s |
85 | 102 | end | ... | ... |
app/views/profile/members.html.erb
... | ... | @@ -4,8 +4,12 @@ |
4 | 4 | |
5 | 5 | <% cache_timeout(profile.members_cache_key(params), 4.hours) do %> |
6 | 6 | <ul class='profile-list'> |
7 | + <!-- | |
8 | + @todo Highlight visual for invited members | |
9 | + of a community | |
10 | + --> | |
7 | 11 | <% @members.each do |member| %> |
8 | - <%= profile_image_link(member) %> | |
12 | + <%= profile_image_link(member, :portrait, 'li', @profiles_focus.include?(member.user_id) ? {:value =>_('New'), :class => 'new-profile'}:'') %> | |
9 | 13 | <% end %> |
10 | 14 | </ul> |
11 | 15 | ... | ... |
public/stylesheets/application.css
... | ... | @@ -2205,6 +2205,21 @@ a.button.disabled, input.disabled { |
2205 | 2205 | .profile-list .extra_info { |
2206 | 2206 | font-size: 9px; |
2207 | 2207 | } |
2208 | + | |
2209 | +/* New members of community added | |
2210 | +* by admin of environment feature | |
2211 | +* #issue 227 | |
2212 | +*/ | |
2213 | +.profile-list .extra_info.new-profile { | |
2214 | + margin-top: 5px; | |
2215 | + color: #0A0; | |
2216 | + font-weight: bold; | |
2217 | +} | |
2218 | + | |
2219 | +span.new-profile img{ | |
2220 | + border-top: solid 2px #0A0; | |
2221 | + margin-top: -2px; | |
2222 | +} | |
2208 | 2223 | /* ==> blocks/recent-documents-block.css <<= */ |
2209 | 2224 | |
2210 | 2225 | #content .recent-documents-block { | ... | ... |