Project

General

Profile

Feature #806 ยป 806.diff

Mateo Murphy, 2008-03-18 02:09

View differences:

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'
    (1-1/1)