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
|
@ -1400,6 +1400,7 @@ de:
|
|||
title: Neue Nachricht
|
||||
show:
|
||||
all_messages: Nachrichten im Überblick
|
||||
change_visibility: 'Ändern'
|
||||
from: 'Von:'
|
||||
group: Gruppe
|
||||
reply: Antworten
|
||||
|
@ -1408,9 +1409,14 @@ de:
|
|||
subject: 'Betreff:'
|
||||
title: Nachricht anzeigen
|
||||
to: 'An:'
|
||||
visibility: 'Sichtbarkeit:'
|
||||
visibility_private: 'Privat'
|
||||
visibility_public: 'Öffentlich'
|
||||
thread:
|
||||
all_message_threads: Alle Nachrichtenverläufe
|
||||
reply: Antworten
|
||||
toggle_private:
|
||||
not_allowed: Du kannst die Sichtbarkeit dieser Nachricht nicht ändern.
|
||||
messages_mailer:
|
||||
foodsoft_message:
|
||||
footer: |
|
||||
|
|
|
@ -1425,6 +1425,7 @@ en:
|
|||
title: New message
|
||||
show:
|
||||
all_messages: All messages
|
||||
change_visibility: 'Change'
|
||||
from: 'From:'
|
||||
group: 'Group:'
|
||||
reply: Reply
|
||||
|
@ -1433,9 +1434,14 @@ en:
|
|||
subject: 'Subject:'
|
||||
title: Show message
|
||||
to: 'To:'
|
||||
visibility: 'Visibility:'
|
||||
visibility_private: 'Private'
|
||||
visibility_public: 'Public'
|
||||
thread:
|
||||
all_message_threads: All message threads
|
||||
reply: Reply
|
||||
toggle_private:
|
||||
not_allowed: You can not change the visibility of the message.
|
||||
messages_mailer:
|
||||
foodsoft_message:
|
||||
footer: |
|
||||
|
|
|
@ -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…
Reference in a new issue