Included pages
Redirects and categories of included pages should not be inherited. (Suggestion of Andrew Stacey)
This commit is contained in:
parent
bf69cceb25
commit
bb17fbbe02
|
@ -36,7 +36,8 @@ class Include < WikiChunk::WikiReference
|
||||||
else
|
else
|
||||||
raise "Unsupported rendering mode #{@mode.inspect}"
|
raise "Unsupported rendering mode #{@mode.inspect}"
|
||||||
end
|
end
|
||||||
@content.merge_chunks(included_content)
|
# redirects and categories of included pages should not be inherited
|
||||||
|
@content.merge_chunks(included_content.delete_chunks!([Redirect, Category]))
|
||||||
clear_include_list
|
clear_include_list
|
||||||
return included_content.pre_rendered
|
return included_content.pre_rendered
|
||||||
else
|
else
|
||||||
|
|
|
@ -185,6 +185,16 @@ class WikiContent < ActiveSupport::SafeBuffer
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def delete_chunks!(types)
|
||||||
|
types.each do |t|
|
||||||
|
@chunks_by_type[t].each do |c|
|
||||||
|
@pre_rendered.sub!(c.mask, '') if @pre_rendered
|
||||||
|
@chunks.delete(c)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
self
|
||||||
|
end
|
||||||
|
|
||||||
def pre_render!
|
def pre_render!
|
||||||
unless @pre_rendered
|
unless @pre_rendered
|
||||||
@chunks_by_type[Include].each{|chunk| chunk.unmask }
|
@chunks_by_type[Include].each{|chunk| chunk.unmask }
|
||||||
|
|
|
@ -743,6 +743,35 @@ END_THM
|
||||||
assert_equal WikiReference::INCLUDED_PAGE, references[0].link_type
|
assert_equal WikiReference::INCLUDED_PAGE, references[0].link_type
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_references_creation_redirects
|
||||||
|
new_page = @web.add_page('NewPage', '[[!redirects OtherPage]]',
|
||||||
|
Time.local(2004, 4, 4, 16, 50), 'AlexeyVerkhovsky', x_test_renderer)
|
||||||
|
|
||||||
|
references = new_page.wiki_references(true)
|
||||||
|
assert_equal 1, references.size
|
||||||
|
assert_equal 'OtherPage', references[0].referenced_name
|
||||||
|
assert_equal WikiReference::REDIRECTED_PAGE, references[0].link_type
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_references_creation_redirects_in_included_page
|
||||||
|
new_page = @web.add_page('NewPage', "[[!redirects OtherPage]]\ncategory: plants",
|
||||||
|
Time.local(2004, 4, 4, 16, 50), 'AlexeyVerkhovsky', x_test_renderer)
|
||||||
|
second_page = @web.add_page('SecondPage', '[[!include NewPage]]',
|
||||||
|
Time.local(2004, 4, 4, 16, 50), 'AlexeyVerkhovsky', x_test_renderer)
|
||||||
|
|
||||||
|
references = new_page.wiki_references(true)
|
||||||
|
assert_equal 2, references.size
|
||||||
|
assert_equal 'OtherPage', references[0].referenced_name
|
||||||
|
assert_equal WikiReference::REDIRECTED_PAGE, references[0].link_type
|
||||||
|
assert_equal 'plants', references[1].referenced_name
|
||||||
|
assert_equal WikiReference::CATEGORY, references[1].link_type
|
||||||
|
|
||||||
|
references = second_page.wiki_references(true)
|
||||||
|
assert_equal 1, references.size
|
||||||
|
assert_equal 'NewPage', references[0].referenced_name
|
||||||
|
assert_equal WikiReference::INCLUDED_PAGE, references[0].link_type
|
||||||
|
end
|
||||||
|
|
||||||
def test_references_creation_categories
|
def test_references_creation_categories
|
||||||
new_page = @web.add_page('NewPage', "Foo\ncategory: NewPageCategory",
|
new_page = @web.add_page('NewPage', "Foo\ncategory: NewPageCategory",
|
||||||
Time.local(2004, 4, 4, 16, 50), 'AlexeyVerkhovsky', x_test_renderer)
|
Time.local(2004, 4, 4, 16, 50), 'AlexeyVerkhovsky', x_test_renderer)
|
||||||
|
|
Loading…
Reference in a new issue