Allow changing the visibitly (public/privat) of messages (fixes #625)

This commit is contained in:
Patrick Gansterer 2019-02-11 13:22:54 +01:00
parent c955a6ee40
commit 226192f7cb
6 changed files with 38 additions and 0 deletions

View file

@ -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

View file

@ -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

View file

@ -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/