Feature #41294 » 0006-Separate-the-implementation-for-building-a-quote-into-Redmine-QuoteReply.patch
app/controllers/journals_controller.rb | ||
---|---|---|
31 | 31 |
helper :queries |
32 | 32 |
helper :attachments |
33 | 33 |
include QueriesHelper |
34 |
include Redmine::QuoteReply::Builder |
|
34 | 35 | |
35 | 36 |
def index |
36 | 37 |
retrieve_query |
... | ... | |
65 | 66 | |
66 | 67 |
def new |
67 | 68 |
@journal = Journal.visible.find(params[:journal_id]) if params[:journal_id] |
68 |
if @journal |
|
69 |
user = @journal.user |
|
70 |
text = @journal.notes |
|
71 |
@content = "#{ll(Setting.default_language, :text_user_wrote_in, {:value => user, :link => "#note-#{params[:journal_indice]}"})}\n> " |
|
72 |
else |
|
73 |
user = @issue.author |
|
74 |
text = @issue.description |
|
75 |
@content = "#{ll(Setting.default_language, :text_user_wrote, user)}\n> " |
|
76 |
end |
|
77 |
# Replaces pre blocks with [...] |
|
78 |
text = params[:quote].presence || text.to_s.strip.gsub(%r{<pre>(.*?)</pre>}m, '[...]') |
|
79 |
@content << text.gsub(/(\r?\n|\r\n?)/, "\n> ") + "\n\n" |
|
69 |
@content = if @journal |
|
70 |
quote_issue_journal(@journal, indice: params[:journal_indice], partial_quote: params[:quote]) |
|
71 |
else |
|
72 |
quote_issue(@issue, partial_quote: params[:quote]) |
|
73 |
end |
|
80 | 74 |
rescue ActiveRecord::RecordNotFound |
81 | 75 |
render_404 |
82 | 76 |
end |
app/controllers/messages_controller.rb | ||
---|---|---|
29 | 29 |
helper :watchers |
30 | 30 |
helper :attachments |
31 | 31 |
include AttachmentsHelper |
32 |
include Redmine::QuoteReply::Builder |
|
32 | 33 | |
33 | 34 |
REPLIES_PER_PAGE = 25 unless const_defined?(:REPLIES_PER_PAGE) |
34 | 35 | |
... | ... | |
119 | 120 |
@subject = @message.subject |
120 | 121 |
@subject = "RE: #{@subject}" unless @subject.starts_with?('RE:') |
121 | 122 | |
122 |
if @message.root == @message |
|
123 |
@content = "#{ll(Setting.default_language, :text_user_wrote, @message.author)}\n> " |
|
124 |
else |
|
125 |
@content = "#{ll(Setting.default_language, :text_user_wrote_in, {:value => @message.author, :link => "message##{@message.id}"})}\n> " |
|
126 |
end |
|
127 | ||
128 |
quote_text = params[:quote].presence || @message.content.to_s.strip.gsub(%r{<pre>(.*?)</pre>}m, '[...]') |
|
129 |
@content << quote_text.gsub(/(\r?\n|\r\n?)/, "\n> ") + "\n\n" |
|
123 |
@content = if @message.root == @message |
|
124 |
quote_root_message(@message, partial_quote: params[:quote]) |
|
125 |
else |
|
126 |
quote_message(@message, partial_quote: params[:quote]) |
|
127 |
end |
|
130 | 128 | |
131 | 129 |
respond_to do |format| |
132 | 130 |
format.html { render_404 } |
lib/redmine/quote_reply.rb | ||
---|---|---|
37 | 37 |
) |
38 | 38 |
end |
39 | 39 |
end |
40 | ||
41 |
module Builder |
|
42 |
def quote_issue(issue, partial_quote: nil) |
|
43 |
user = issue.author |
|
44 | ||
45 |
build_quote( |
|
46 |
"#{ll(Setting.default_language, :text_user_wrote, user)}\n> ", |
|
47 |
issue.description, |
|
48 |
partial_quote |
|
49 |
) |
|
50 |
end |
|
51 | ||
52 |
def quote_issue_journal(journal, indice:, partial_quote: nil) |
|
53 |
user = journal.user |
|
54 | ||
55 |
build_quote( |
|
56 |
"#{ll(Setting.default_language, :text_user_wrote_in, {value: journal.user, link: "#note-#{indice}"})}\n> ", |
|
57 |
journal.notes, |
|
58 |
partial_quote |
|
59 |
) |
|
60 |
end |
|
61 | ||
62 |
def quote_root_message(message, partial_quote: nil) |
|
63 |
build_quote( |
|
64 |
"#{ll(Setting.default_language, :text_user_wrote, message.author)}\n> ", |
|
65 |
message.content, |
|
66 |
partial_quote |
|
67 |
) |
|
68 |
end |
|
69 | ||
70 |
def quote_message(message, partial_quote: nil) |
|
71 |
build_quote( |
|
72 |
"#{ll(Setting.default_language, :text_user_wrote_in, {value: message.author, link: "message##{message.id}"})}\n> ", |
|
73 |
message.content, |
|
74 |
partial_quote |
|
75 |
) |
|
76 |
end |
|
77 | ||
78 |
private |
|
79 | ||
80 |
def build_quote(quote_header, text, partial_quote = nil) |
|
81 |
quote_text = partial_quote.presence || text.to_s.strip.gsub(%r{<pre>(.*?)</pre>}m, '[...]') |
|
82 | ||
83 |
"#{quote_header}#{quote_text.gsub(/(\r?\n|\r\n?)/, "\n> ") + "\n\n"}" |
|
84 |
end |
|
85 |
end |
|
40 | 86 |
end |
41 | 87 |
end |