Commit 6dbf566129baedfd5d79046eb79b3e34dc840a7f
1 parent
18665da3
Exists in
merge_deactive_and_ban
deactive_and_active_profile: Send reason in email to deactivate profile
(ActionItem3287) Signed-off-by: Gustavo Jaruga <darksshades@gmail.com> Signed-off-by: Luciano Prestes Cavalcanti <lucianopcbr@gmail.com> Signed-off-by: David Carlos <ddavidcarlos1392@gmail.com>
Showing
5 changed files
with
79 additions
and
12 deletions
Show diff stats
app/controllers/my_profile/profile_editor_controller.rb
| @@ -81,9 +81,12 @@ class ProfileEditorController < MyProfileController | @@ -81,9 +81,12 @@ class ProfileEditorController < MyProfileController | ||
| 81 | 81 | ||
| 82 | def deactivate_profile | 82 | def deactivate_profile |
| 83 | if environment.admins.include?(current_person) | 83 | if environment.admins.include?(current_person) |
| 84 | - profile = Profile.find(params[:id]) | 84 | + person = Person.find(params[:id]) |
| 85 | 85 | ||
| 86 | - if profile.disable | 86 | + if person.user.deactivate |
| 87 | + person.reason_to_deactivate = [params[:reason]] | ||
| 88 | + person.save | ||
| 89 | + UserMailer.ban_user_mail_with_reason(profile.user, params[:reason]).deliver | ||
| 87 | session[:notice] = _("The profile '#{profile.name}' was disabled.") | 90 | session[:notice] = _("The profile '#{profile.name}' was disabled.") |
| 88 | else | 91 | else |
| 89 | session[:notice] = _('Could not disable profile.') | 92 | session[:notice] = _('Could not disable profile.') |
| @@ -95,9 +98,9 @@ class ProfileEditorController < MyProfileController | @@ -95,9 +98,9 @@ class ProfileEditorController < MyProfileController | ||
| 95 | 98 | ||
| 96 | def activate_profile | 99 | def activate_profile |
| 97 | if environment.admins.include?(current_person) | 100 | if environment.admins.include?(current_person) |
| 98 | - profile = Profile.find(params[:id]) | 101 | + person = Person.find(params[:id]) |
| 99 | 102 | ||
| 100 | - if profile.enable | 103 | + if person.user.activate |
| 101 | session[:notice] = _("The profile '#{profile.name}' was activated.") | 104 | session[:notice] = _("The profile '#{profile.name}' was activated.") |
| 102 | else | 105 | else |
| 103 | session[:notice] = _('Could not activate the profile.') | 106 | session[:notice] = _('Could not activate the profile.') |
app/mailers/user_mailer.rb
| @@ -41,6 +41,21 @@ class UserMailer < ActionMailer::Base | @@ -41,6 +41,21 @@ class UserMailer < ActionMailer::Base | ||
| 41 | ) | 41 | ) |
| 42 | end | 42 | end |
| 43 | 43 | ||
| 44 | + def ban_user_mail_with_reason(user, reason) | ||
| 45 | + subject = _("[%{environment}] User deactivated") % { :environment => user.environment.name } | ||
| 46 | + @reason = reason | ||
| 47 | + @recipient = user.name | ||
| 48 | + @name = user.name | ||
| 49 | + @email = user.email | ||
| 50 | + @environment = user.environment.name | ||
| 51 | + @url = url_for(:host => user.environment.default_hostname, :controller => 'home') | ||
| 52 | + mail( | ||
| 53 | + to: user.email, | ||
| 54 | + from: "#{user.environment.name} <#{user.environment.contact_email}>", | ||
| 55 | + subject: _(subject) % { :environment => user.environment.name } | ||
| 56 | + ) | ||
| 57 | + end | ||
| 58 | + | ||
| 44 | class Job < Struct.new(:user, :method) | 59 | class Job < Struct.new(:user, :method) |
| 45 | def perform | 60 | def perform |
| 46 | UserMailer.send(method, user).deliver | 61 | UserMailer.send(method, user).deliver |
app/views/profile_editor/edit.html.erb
| @@ -82,11 +82,39 @@ | @@ -82,11 +82,39 @@ | ||
| 82 | 82 | ||
| 83 | <% end %> | 83 | <% end %> |
| 84 | 84 | ||
| 85 | + | ||
| 85 | <div class='deactivate-profile hidden'> | 86 | <div class='deactivate-profile hidden'> |
| 86 | - <%= label_tag 'reason', _("Reason to deactivate profile:")%><br /> | ||
| 87 | - <%= text_area_tag('profile_data[reason_to_deactivate]', nil, :class=>"expand-field") %> | ||
| 88 | - <% button_bar(:id => 'deactivate-profile') do %> | ||
| 89 | - <%= button(:remove, _('Confirm Deactivation'), {:action => :deactivate_profile, :id=>profile.id, :reason=>@profile.reason_to_deactivate}, :id=>'confirm_deactivation_button') %> | ||
| 90 | - <%= button(:cancel, _('Cancel'), nil, :id=>'cancel_deactivation_button') %> | ||
| 91 | - <% end %> | ||
| 92 | - </div> | 87 | + <input type="text" class="hidden" id="profile-id" value="<%= profile.id %>"> |
| 88 | + <%= label_tag 'reason', _("Reason to deactivate profile:")%><br /> | ||
| 89 | + <%= text_area_tag(:reason, nil, :class=>"expand-field", :id => "reason-field") %> | ||
| 90 | + <% button_bar(:id => 'deactivate-profile') do %> | ||
| 91 | + <%= button(:remove, _('Confirm Deactivation'), nil, :id=>'confirm_deactivation_button') %> | ||
| 92 | + <%= button(:cancel, _('Cancel'), nil, :id=>'cancel_deactivation_button') %> | ||
| 93 | + <% end %> | ||
| 94 | +</div> | ||
| 95 | + | ||
| 96 | + | ||
| 97 | +<script type="text/javascript"> | ||
| 98 | + function call_deactivate_profile(event){ | ||
| 99 | + event.preventDefault(); | ||
| 100 | + var reason_field = jQuery("#reason-field").val(); | ||
| 101 | + var profile_id = jQuery("#profile-id").val(); | ||
| 102 | + if (confirm('<%= _("Are you sure ?") %>')) { | ||
| 103 | + jQuery.ajax({ | ||
| 104 | + type: "POST", | ||
| 105 | + url: "<%= url_for :controller=>'profile_editor', :action=>'deactivate_profile' %>", | ||
| 106 | + data: { | ||
| 107 | + reason:reason_field, | ||
| 108 | + id:profile_id | ||
| 109 | + }, | ||
| 110 | + success : function(data) { | ||
| 111 | + location.reload(); //reload the page on the success | ||
| 112 | + } | ||
| 113 | + }); | ||
| 114 | + } | ||
| 115 | + } | ||
| 116 | + | ||
| 117 | + jQuery(document).ready(function(){ | ||
| 118 | + jQuery("#confirm_deactivation_button").click(call_deactivate_profile); | ||
| 119 | + }); | ||
| 120 | +</script> |
app/views/user_mailer/ban_user_mail_with_reason.text.erb
0 → 100644
| @@ -0,0 +1,13 @@ | @@ -0,0 +1,13 @@ | ||
| 1 | +<%= _('Hello %s,') % @name %> | ||
| 2 | + | ||
| 3 | +<%= _('Your email %s was just deactivated.') % [@email] %> | ||
| 4 | + | ||
| 5 | +<%= _('For the following reason:') %> | ||
| 6 | +<%= _('%s') % @reason %> | ||
| 7 | +<%= @webmail %> | ||
| 8 | + | ||
| 9 | +<%= _('Greetings,') %> | ||
| 10 | + | ||
| 11 | +-- | ||
| 12 | +<%= _('%s team.') % @environment %> | ||
| 13 | +<%= @url %> |
public/javascripts/deactivate_profile.js
| @@ -4,6 +4,14 @@ function show_reason_fields(event){ | @@ -4,6 +4,14 @@ function show_reason_fields(event){ | ||
| 4 | jQuery(".deactivate-profile").switchClass("hidden", "show"); | 4 | jQuery(".deactivate-profile").switchClass("hidden", "show"); |
| 5 | } | 5 | } |
| 6 | 6 | ||
| 7 | +function hide_reason_fields(event){ | ||
| 8 | + event.preventDefault(); | ||
| 9 | + jQuery(".deactivate-profile").hide(); | ||
| 10 | + jQuery(".deactivate-profile").switchClass("show", "hidden"); | ||
| 11 | +} | ||
| 12 | + | ||
| 7 | jQuery(document).ready(function(){ | 13 | jQuery(document).ready(function(){ |
| 8 | jQuery("#deactivate_profile_button").click(show_reason_fields); | 14 | jQuery("#deactivate_profile_button").click(show_reason_fields); |
| 9 | -}); | ||
| 10 | \ No newline at end of file | 15 | \ No newline at end of file |
| 16 | + jQuery("#cancel_deactivation_button").click(hide_reason_fields); | ||
| 17 | + // jQuery("#confirm_deactivation_button").click(call_deactivate_profile); | ||
| 18 | +}); |