Commit 79f91f4b authored by jplang's avatar jplang

Issue macro for flexible linking to issues (#29489).

Patch by Jens Krämer.

git-svn-id: https://svn.redmine.org/redmine/trunk@18297 e93f8b46-1217-0410-a6f0-8f06a7374b81
parent c8ae86ac
......@@ -254,6 +254,33 @@ module Redmine
raise "Attachment #{filename} not found"
end
end
desc "Displays an issue link including additional information. Examples:\n\n" +
"{{issue(123)}} -- Issue #123: Enhance macro capabilities\n" +
"{{issue(123, project=true)}} -- Andromeda - Issue #123: Enhance macro capabilities\n" +
"{{issue(123, tracker=false)}} -- #123: Enhance macro capabilities\n" +
"{{issue(123, subject=false, project=true)}} -- Andromeda - Issue #123\n"
macro :issue do |obj, args|
args, options = extract_macro_options(args, :project, :subject, :tracker)
id = args.first
issue = Issue.visible.find_by(id: id)
if issue
# remove invalid options
options.delete_if { |k,v| v != 'true' && v != 'false' }
# turn string values into boolean
options.each do |k, v|
options[k] = v == 'true'
end
link_to_issue(issue, options)
else
# Fall back to regular issue link format to indicate, that there
# should have been something.
"##{id}"
end
end
end
end
end
......@@ -408,4 +408,14 @@ EXPECTED
text = "*{{hello_world}}*"
assert_match %r|\A<p><strong>Hello world!.*</strong></p>\z|, textilizable(text)
end
def test_issue_macro_should_not_render_link_if_not_visible
assert_equal "<p>#123</p>", textilizable('{{issue(123)}}')
end
def test_issue_macro_should_render_link_to_issue
issue = Issue.find 1
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)}}")
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)}}")
end
end
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment