Преглед на файлове

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

Patch by Jens Krämer.

git-svn-id: http://svn.redmine.org/redmine/trunk@18297 e93f8b46-1217-0410-a6f0-8f06a7374b81
tags/4.1.0
Jean-Philippe Lang преди 5 години
родител
ревизия
c4a9d4cd4d
променени са 2 файла, в които са добавени 37 реда и са изтрити 0 реда
  1. 27
    0
      lib/redmine/wiki_formatting/macros.rb
  2. 10
    0
      test/unit/lib/redmine/wiki_formatting/macros_test.rb

+ 27
- 0
lib/redmine/wiki_formatting/macros.rb Целия файл

@@ -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

+ 10
- 0
test/unit/lib/redmine/wiki_formatting/macros_test.rb Целия файл

@@ -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

Loading…
Отказ
Запис