# identifier:document:"Some document"
# identifier:version:1.0.0
# identifier:source:some/file
- def parse_redmine_links(text, project, obj, attr, only_path, options)
+ def parse_redmine_links(text, default_project, obj, attr, only_path, options)
text.gsub!(%r{([\s\(,\-\[\>]|^)(!)?(([a-z0-9\-_]+):)?(attachment|document|version|forum|news|message|project|commit|source|export)?(((#)|((([a-z0-9\-]+)\|)?(r)))((\d+)((#note)?-(\d+))?)|(:)([^"\s<>][^\s<>]*?|"[^"]+?"))(?=(?=[[:punct:]][^A-Za-z0-9_/])|,|\s|\]|<|$)}) do |m|
leading, esc, project_prefix, project_identifier, prefix, repo_prefix, repo_identifier, sep, identifier, comment_suffix, comment_id = $1, $2, $3, $4, $5, $10, $11, $8 || $12 || $18, $14 || $19, $15, $17
link = nil
+ project = default_project
if project_identifier
project = Project.visible.find_by_identifier(project_identifier)
end
to_test.each { |text, result| assert_equal "<p>#{result}</p>", textilizable(text), "#{text} failed" }
end
+ def test_redmine_links_with_a_different_project_before_current_project
+ vp1 = Version.generate!(:project_id => 1, :name => '1.4.4')
+ vp3 = Version.generate!(:project_id => 3, :name => '1.4.4')
+
+ @project = Project.find(3)
+ assert_equal %(<p><a href="/versions/#{vp1.id}" class="version">1.4.4</a> <a href="/versions/#{vp3.id}" class="version">1.4.4</a></p>),
+ textilizable("ecookbook:version:1.4.4 version:1.4.4")
+ end
+
def test_escaped_redmine_links_should_not_be_parsed
to_test = [
'#3.',