Allow changing the visibitly (public/privat) of messages (fixes #625)
This commit is contained in:
parent
c955a6ee40
commit
226192f7cb
6 changed files with 38 additions and 0 deletions
|
|
@ -48,6 +48,16 @@ class MessagesController < ApplicationController
|
|||
end
|
||||
end
|
||||
|
||||
def toggle_private
|
||||
message = Message.find(params[:id])
|
||||
if message.can_toggle_private?(current_user)
|
||||
message.update_attribute :private, !message.private
|
||||
redirect_to message
|
||||
else
|
||||
redirect_to message, alert: I18n.t('messages.toggle_private.not_allowed')
|
||||
end
|
||||
end
|
||||
|
||||
def thread
|
||||
@messages = Message.thread(params[:id]).order(:created_at)
|
||||
end
|
||||
|
|
|
|||
|
|
@ -124,6 +124,12 @@ class Message < ApplicationRecord
|
|||
!private || sender == user || recipients_ids.include?(user.id)
|
||||
end
|
||||
|
||||
def can_toggle_private?(user)
|
||||
return true if sender == user
|
||||
return false if private?
|
||||
user.role_admin?
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def create_salt
|
||||
|
|
|
|||
|
|
@ -23,6 +23,15 @@
|
|||
%tr
|
||||
%td= t '.sent_on'
|
||||
%td= format_time(@message.created_at)
|
||||
%tr
|
||||
%td= t '.visibility'
|
||||
%td
|
||||
- if @message.private
|
||||
= t '.visibility_private'
|
||||
- else
|
||||
= t '.visibility_public'
|
||||
- if @message.can_toggle_private?(current_user)
|
||||
= link_to t('.change_visibility'), toggle_private_message_path(@message), method: :post, class: 'btn btn-mini'
|
||||
%hr/
|
||||
%p= simple_format(h(@message.body))
|
||||
%hr/
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ Rails.application.routes.draw do
|
|||
resources :messages, :only => [:index, :show, :new, :create] do
|
||||
member do
|
||||
get :thread
|
||||
post :toggle_private
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue