feat(messages): use trix editor in messages

This commit is contained in:
Philipp Rothmann 2023-08-04 10:55:31 +02:00 committed by Philipp Rothmann
parent c4a53caf52
commit ef6d6aa368
14 changed files with 83 additions and 5 deletions

View file

@ -21,7 +21,8 @@ class MessagesController < ApplicationController
@message.subject = I18n.t('messages.model.reply_subject', subject: original_message.subject)
@message.body = I18n.t('messages.model.reply_header', user: original_message.sender.display,
when: I18n.l(original_message.created_at, format: :short)) + "\n"
original_message.body.each_line { |l| @message.body += I18n.t('messages.model.reply_indent', line: l) }
@message.body = I18n.t('messages.model.reply_header', user: original_message.sender.display, when: I18n.l(original_message.created_at, format: :short)) + "\n" \
+ "<blockquote>" + original_message.body.to_trix_html + "</blockquote>"
else
redirect_to new_message_url, alert: I18n.t('messages.new.error_private')
end

View file

@ -5,7 +5,7 @@ module MessagesHelper
body = ''
else
subject = message.subject
body = truncate(message.body, length: length - subject.length)
body = truncate(message.body.to_plain_text, length: length - subject.length)
end
"<b>#{link_to(h(subject), message)}</b> <span style='color:grey'>#{h(body)}</span>".html_safe
end

View file

@ -22,6 +22,8 @@ class Message < ApplicationRecord
validates_presence_of :message_recipients, :subject, :body
validates_length_of :subject, in: 1..255
has_rich_text :body
after_initialize do
@recipients_ids ||= []
@send_method ||= 'recipients'

View file

@ -110,7 +110,7 @@
= f.input :recipient_tokens, :input_html => { 'data-pre' => User.where(id: @message.recipients_ids).map(&:token_attributes).to_json }
= f.input :private, inline_label: t('.hint_private')
= f.input :subject, input_html: {class: 'input-xxlarge'}
= f.input :body, input_html: {class: 'input-xxlarge', rows: 13}
= f.rich_text_area :body, input_html: {class: 'input-xxlarge', rows: 13}
.form-actions
= f.submit class: 'btn btn-primary'
= link_to t('ui.or_cancel'), :back

View file

@ -33,7 +33,7 @@
- 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))
.trix-content= @message.body
%hr/
%p
= link_to t('.reply'), new_message_path(:message => {:reply_to => @message.id}), class: 'btn'

View file

@ -0,0 +1,11 @@
= raw @message.body
%hr
%ul
- if @message.group
%li= t '.footer_group', group: @message.group.name
%li
%a{href: new_message_url('message[reply_to]' => @message.id)}= t '.reply'
%li
%a{href: message_url(@message)}= t '.see_message_online'
%li
%a{href: my_profile_url}= t '.messaging_options'