Feature #29489 » 0001-adds-the-issue-macro-for-flexible-rendering-of-issue.patch
lib/redmine/wiki_formatting/macros.rb | ||
---|---|---|
252 | 252 |
raise "Attachment #{filename} not found" |
253 | 253 |
end |
254 | 254 |
end |
255 | ||
256 |
desc "Displays an issue link including additional information. Examples:\n\n" + |
|
257 |
"{{issue(123)}} -- Issue #123: Enhance macro capabilities\n" + |
|
258 |
"{{issue(123, project=true)}} -- Andromeda - Issue #123: Enhance macro capabilities\n" + |
|
259 |
"{{issue(123, tracker=false)}} -- #123: Enhance macro capabilities\n" + |
|
260 |
"{{issue(123, subject=false, project=true)}} -- Andromeda - Issue #123\n" |
|
261 |
macro :issue do |obj, args| |
|
262 |
args, options = extract_macro_options(args, :project, :subject, :tracker) |
|
263 |
id = args.first |
|
264 |
issue = Issue.visible.find_by(id: id) |
|
265 | ||
266 |
if issue |
|
267 |
# remove invalid options |
|
268 |
options.delete_if { |k,v| v != 'true' && v != 'false' } |
|
269 | ||
270 |
# turn string values into boolean |
|
271 |
options.each do |k, v| |
|
272 |
options[k] = v == 'true' |
|
273 |
end |
|
274 | ||
275 |
link_to_issue(issue, options) |
|
276 |
else |
|
277 |
# Fall back to regular issue link format to indicate, that there |
|
278 |
# should have been something. |
|
279 |
"##{id}" |
|
280 |
end |
|
281 |
end |
|
255 | 282 |
end |
256 | 283 |
end |
257 | 284 |
end |
test/unit/lib/redmine/wiki_formatting/macros_test.rb | ||
---|---|---|
406 | 406 |
text = "*{{hello_world}}*" |
407 | 407 |
assert_match %r|\A<p><strong>Hello world!.*</strong></p>\z|, textilizable(text) |
408 | 408 |
end |
409 | ||
410 |
def test_issue_macro_should_not_render_link_if_not_visible |
|
411 |
assert_equal "<p>#123</p>", textilizable('{{issue(123)}}') |
|
412 |
end |
|
413 | ||
414 |
def test_issue_macro_should_render_link_to_issue |
|
415 |
issue = Issue.find 1 |
|
416 |
assert_equal %{<p><a class="issue tracker-1 status-1 priority-4 priority-lowest" href="/issues/1">Bug #1</a>: #{issue.subject}</p>}, textilizable("{{issue(1)}}") |
|
417 |
assert_equal %{<p>eCookbook - <a class="issue tracker-1 status-1 priority-4 priority-lowest" href="/issues/1">Bug #1</a>: #{issue.subject}</p>}, textilizable("{{issue(1, project=true)}}") |
|
418 |
end |
|
409 | 419 |
end |