Feature #806 ยป 806.diff
test/functional/wiki_controller_test.rb (working copy) | ||
---|---|---|
147 | 147 |
assert_template 'special_page_index' |
148 | 148 |
pages = assigns(:pages) |
149 | 149 |
assert_not_nil pages |
150 |
assert_equal 2, pages.size
|
|
150 |
assert_equal 3, pages.size
|
|
151 | 151 |
assert_tag :tag => 'a', :attributes => { :href => '/wiki/ecookbook/CookBook_documentation' }, |
152 | 152 |
:content => /CookBook documentation/ |
153 | 153 |
end |
... | ... | |
156 | 156 |
get :index, :id => 999 |
157 | 157 |
assert_response 404 |
158 | 158 |
end |
159 |
|
|
160 |
def test_wikilinks_use_headings_as_title |
|
161 |
get :index, :id => 1, :page => 'Another_page' |
|
162 |
assert_tag :tag => 'a', :attributes => { :href => '/wiki/ecookbook/CookBook_documentation' }, |
|
163 |
:content => /CookBook documentation/ |
|
164 |
assert_tag :tag => 'a', :attributes => { :href => '/wiki/ecookbook/A_third_page' }, |
|
165 |
:content => /Yet another page/ |
|
166 |
end |
|
167 |
|
|
168 |
def test_wikilink_with_explicit_titles |
|
169 |
get :index, :id => 1, :page => 'A_third_page' |
|
170 |
assert_tag :tag => 'a', :attributes => { :href => '/wiki/ecookbook/CookBook_documentation' }, |
|
171 |
:content => /Home page/ |
|
172 | ||
173 |
end |
|
174 |
|
|
159 | 175 |
end |
test/fixtures/wiki_contents.yml (working copy) | ||
---|---|---|
1 | 1 |
--- |
2 | 2 |
wiki_contents_001: |
3 | 3 |
text: |- |
4 |
h1. CookBook documentation + h1. CookBook documentation |
|
5 | 4 |
|
6 |
+ |
|
7 | 5 |
|
8 | 6 |
Some updated [[documentation]] here with gzipped history |
9 | 7 |
updated_on: 2007-03-07 00:10:51 +01:00 |
... | ... | |
17 | 17 |
h1. Another page |
18 | 18 |
|
19 | 19 |
This is a link to a ticket: #2 |
20 |
|
|
21 |
This is a link back to the [[CookBook_documentation]] |
|
22 |
|
|
23 |
This is a link to [[A_third_page]] |
|
20 | 24 |
updated_on: 2007-03-08 00:18:07 +01:00 |
21 | 25 |
page_id: 2 |
22 | 26 |
id: 2 |
... | ... | |
34 | 38 |
version: 1 |
35 | 39 |
author_id: 1 |
36 | 40 |
comments: |
41 |
wiki_contents_004: |
|
42 |
text: |- |
|
43 |
h1. Yet another page |
|
44 |
|
|
45 |
Back to the [[CookBook_documentation|Home page]] |
|
46 |
updated_on: 2007-03-08 00:18:07 +01:00 |
|
47 |
page_id: 4 |
|
48 |
id: 4 |
|
49 |
version: 1 |
|
50 |
author_id: 1 |
|
51 |
comments: |
test/fixtures/wiki_pages.yml (working copy) | ||
---|---|---|
14 | 14 |
title: Start_page |
15 | 15 |
id: 3 |
16 | 16 |
wiki_id: 2 |
17 |
wiki_pages_004: |
|
18 |
created_on: 2007-03-08 00:18:07 +01:00 |
|
19 |
title: A_third_page |
|
20 |
id: 4 |
|
21 |
wiki_id: 1 |
|
17 | 22 |
|
test/fixtures/wiki_content_versions.yml (working copy) | ||
---|---|---|
9 | 9 |
wiki_content_id: 1 |
10 | 10 |
compression: "" |
11 | 11 |
data: |- |
12 |
h1. CookBook documentation + h1. CookBook documentation |
|
13 | 12 |
|
14 |
+ |
|
15 | 13 |
|
16 | 14 |
Some [[documentation]] here... |
17 | 15 |
wiki_content_versions_002: |
... | ... | |
24 | 24 |
wiki_content_id: 1 |
25 | 25 |
compression: "" |
26 | 26 |
data: |- |
27 |
h1. CookBook documentation + h1. CookBook documentation |
|
28 | 27 |
|
29 |
+ |
|
30 | 28 |
|
31 | 29 |
Some updated [[documentation]] here... |
32 | 30 |
wiki_content_versions_003: |
... | ... | |
46 | 46 |
h1. Another page |
47 | 47 |
|
48 | 48 |
This is a link to a ticket: #2 |
49 |
|
|
50 |
This is a link back to the [[CookBook_documentation]] |
|
51 |
|
|
52 |
This is a link to [[A_third_page]] |
|
49 | 53 |
updated_on: 2007-03-08 00:18:07 +01:00 |
50 | 54 |
page_id: 2 |
51 | 55 |
wiki_content_id: 2 |
... | ... | |
53 | 57 |
version: 1 |
54 | 58 |
author_id: 1 |
55 | 59 |
comments: |
56 |
|
|
60 |
wiki_content_versions_005: |
|
61 |
data: |- |
|
62 |
h1. Another page |
|
63 |
|
|
64 |
This is a link to a ticket: #2 |
|
65 |
|
|
66 |
This is a link back to the [[CookBook_documentation]] |
|
67 |
|
|
68 |
This is a link to [[A_third_page]] |
|
69 |
updated_on: 2007-03-08 00:18:07 +01:00 |
|
70 |
page_id: 4 |
|
71 |
wiki_content_id: 4 |
|
72 |
id: 5 |
|
73 |
version: 1 |
|
74 |
author_id: 1 |
|
75 |
comments: |
app/helpers/application_helper.rb (working copy) | ||
---|---|---|
252 | 252 |
if link_project && link_project.wiki |
253 | 253 |
# check if page exists |
254 | 254 |
wiki_page = link_project.wiki.find_page(page) |
255 |
link_to((title || page), format_wiki_link.call(link_project, Wiki.titleize(page)), |
|
255 |
link_to((title || (wiki_page ? wiki_page.content.first_heading : nil) || page), |
|
256 |
format_wiki_link.call(link_project, Wiki.titleize(page)), |
|
256 | 257 |
:class => ('wiki-page' + (wiki_page ? '' : ' new'))) |
257 | 258 |
else |
258 | 259 |
# project or wiki doesn't exist |
app/models/wiki_content.rb (working copy) | ||
---|---|---|
23 | 23 |
belongs_to :author, :class_name => 'User', :foreign_key => 'author_id' |
24 | 24 |
validates_presence_of :text |
25 | 25 |
|
26 |
def first_heading |
|
27 |
matches = text.match(/^h1.\s(.*)/) |
|
28 |
matches ? matches[1] : nil |
|
29 |
end |
|
30 |
|
|
26 | 31 |
acts_as_versioned |
27 | 32 |
class Version |
28 | 33 |
belongs_to :page, :class_name => '::WikiPage', :foreign_key => 'page_id' |