##// END OF EJS Templates
Wiki page hierarchy (#528). Parent page can be assigned on Rename screen....
Jean-Philippe Lang -
r1689:60d066f943c6
parent child
Show More
@@ -0,0 +1,9
1 class AddWikiPagesParentId < ActiveRecord::Migration
2 def self.up
3 add_column :wiki_pages, :parent_id, :integer, :default => nil
4 end
5
6 def self.down
7 remove_column :wiki_pages, :parent_id
8 end
9 end
@@ -147,6 +147,7 class WikiController < ApplicationController
147 :joins => "LEFT JOIN #{WikiContent.table_name} ON #{WikiContent.table_name}.page_id = #{WikiPage.table_name}.id",
147 :joins => "LEFT JOIN #{WikiContent.table_name} ON #{WikiContent.table_name}.page_id = #{WikiPage.table_name}.id",
148 :order => 'title'
148 :order => 'title'
149 @pages_by_date = @pages.group_by {|p| p.updated_on.to_date}
149 @pages_by_date = @pages.group_by {|p| p.updated_on.to_date}
150 @pages_by_parent_id = @pages.group_by(&:parent_id)
150 # export wiki to a single html file
151 # export wiki to a single html file
151 when 'export'
152 when 'export'
152 @pages = @wiki.pages.find :all, :order => 'title'
153 @pages = @wiki.pages.find :all, :order => 'title'
@@ -177,7 +177,8 module ApplicationHelper
177 end
177 end
178
178
179 def breadcrumb(*args)
179 def breadcrumb(*args)
180 content_tag('p', args.join(' &#187; ') + ' &#187; ', :class => 'breadcrumb')
180 elements = args.flatten
181 elements.any? ? content_tag('p', args.join(' &#187; ') + ' &#187; ', :class => 'breadcrumb') : nil
181 end
182 end
182
183
183 def html_title(*args)
184 def html_title(*args)
@@ -17,6 +17,22
17
17
18 module WikiHelper
18 module WikiHelper
19
19
20 def render_page_hierarchy(pages, node=nil)
21 content = ''
22 if pages[node]
23 content << "<ul class=\"pages-hierarchy\">\n"
24 pages[node].each do |page|
25 content << "<li>"
26 content << link_to(h(page.pretty_title), {:action => 'index', :page => page.title},
27 :title => l(:label_updated_time, distance_of_time_in_words(Time.now, page.updated_on)))
28 content << "\n" + render_page_hierarchy(pages, page.id) if pages[page.id]
29 content << "</li>\n"
30 end
31 content << "</ul>\n"
32 end
33 content
34 end
35
20 def html_diff(wdiff)
36 def html_diff(wdiff)
21 words = wdiff.words.collect{|word| h(word)}
37 words = wdiff.words.collect{|word| h(word)}
22 words_add = 0
38 words_add = 0
@@ -22,6 +22,7 class WikiPage < ActiveRecord::Base
22 belongs_to :wiki
22 belongs_to :wiki
23 has_one :content, :class_name => 'WikiContent', :foreign_key => 'page_id', :dependent => :destroy
23 has_one :content, :class_name => 'WikiContent', :foreign_key => 'page_id', :dependent => :destroy
24 has_many :attachments, :as => :container, :dependent => :destroy
24 has_many :attachments, :as => :container, :dependent => :destroy
25 acts_as_tree :order => 'title'
25
26
26 acts_as_event :title => Proc.new {|o| "#{l(:label_wiki)}: #{o.title}"},
27 acts_as_event :title => Proc.new {|o| "#{l(:label_wiki)}: #{o.title}"},
27 :description => :text,
28 :description => :text,
@@ -110,6 +111,24 class WikiPage < ActiveRecord::Base
110 def editable_by?(usr)
111 def editable_by?(usr)
111 !protected? || usr.allowed_to?(:protect_wiki_pages, wiki.project)
112 !protected? || usr.allowed_to?(:protect_wiki_pages, wiki.project)
112 end
113 end
114
115 def parent_title
116 @parent_title || (self.parent && self.parent.pretty_title)
117 end
118
119 def parent_title=(t)
120 @parent_title = t
121 parent_page = t.blank? ? nil : self.wiki.find_page(t)
122 self.parent = parent_page
123 end
124
125 protected
126
127 def validate
128 errors.add(:parent_title, :activerecord_error_invalid) if !@parent_title.blank? && parent.nil?
129 errors.add(:parent_title, :activerecord_error_circular_dependency) if parent && (parent == self || parent.ancestors.include?(self))
130 errors.add(:parent_title, :activerecord_error_not_same_project) if parent && (parent.wiki_id != wiki_id)
131 end
113 end
132 end
114
133
115 class WikiDiff
134 class WikiDiff
@@ -4,8 +4,9
4
4
5 <% labelled_tabular_form_for :wiki_page, @page, :url => { :action => 'rename' } do |f| %>
5 <% labelled_tabular_form_for :wiki_page, @page, :url => { :action => 'rename' } do |f| %>
6 <div class="box">
6 <div class="box">
7 <p><%= f.text_field :title, :required => true, :size => 255 %></p>
7 <p><%= f.text_field :title, :required => true, :size => 100 %></p>
8 <p><%= f.check_box :redirect_existing_links %></p>
8 <p><%= f.check_box :redirect_existing_links %></p>
9 <p><%= f.text_field :parent_title, :size => 100 %></p>
9 </div>
10 </div>
10 <%= submit_tag l(:button_rename) %>
11 <%= submit_tag l(:button_rename) %>
11 <% end %>
12 <% end %>
@@ -10,6 +10,8
10 <%= link_to(l(:label_history), {:action => 'history', :page => @page.title}, :class => 'icon icon-history') %>
10 <%= link_to(l(:label_history), {:action => 'history', :page => @page.title}, :class => 'icon icon-history') %>
11 </div>
11 </div>
12
12
13 <%= breadcrumb(@page.ancestors.reverse.collect {|parent| link_to h(parent.pretty_title), {:page => parent.title}}) %>
14
13 <% if @content.version != @page.content.version %>
15 <% if @content.version != @page.content.version %>
14 <p>
16 <p>
15 <%= link_to(('&#171; ' + l(:label_previous)), :action => 'index', :page => @page.title, :version => (@content.version - 1)) + " - " if @content.version > 1 %>
17 <%= link_to(('&#171; ' + l(:label_previous)), :action => 'index', :page => @page.title, :version => (@content.version - 1)) + " - " if @content.version > 1 %>
@@ -4,11 +4,7
4 <p class="nodata"><%= l(:label_no_data) %></p>
4 <p class="nodata"><%= l(:label_no_data) %></p>
5 <% end %>
5 <% end %>
6
6
7 <ul><% @pages.each do |page| %>
7 <%= render_page_hierarchy(@pages_by_parent_id) %>
8 <li><%= link_to page.pretty_title, {:action => 'index', :page => page.title},
9 :title => l(:label_updated_time, distance_of_time_in_words(Time.now, page.updated_on)) %>
10 </li>
11 <% end %></ul>
12
8
13 <% content_for :sidebar do %>
9 <% content_for :sidebar do %>
14 <%= render :partial => 'sidebar' %>
10 <%= render :partial => 'sidebar' %>
@@ -632,3 +632,4 label_generate_key: Generate a key
632 setting_mail_handler_api_enabled: Enable WS for incoming emails
632 setting_mail_handler_api_enabled: Enable WS for incoming emails
633 setting_mail_handler_api_key: API key
633 setting_mail_handler_api_key: API key
634 text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/email.yml and restart the application to enable them."
634 text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/email.yml and restart the application to enable them."
635 field_parent_title: Parent page
@@ -637,3 +637,4 label_generate_key: Generate a key
637 setting_mail_handler_api_enabled: Enable WS for incoming emails
637 setting_mail_handler_api_enabled: Enable WS for incoming emails
638 setting_mail_handler_api_key: API key
638 setting_mail_handler_api_key: API key
639 text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/email.yml and restart the application to enable them."
639 text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/email.yml and restart the application to enable them."
640 field_parent_title: Parent page
@@ -634,3 +634,4 label_generate_key: Generate a key
634 setting_mail_handler_api_enabled: Enable WS for incoming emails
634 setting_mail_handler_api_enabled: Enable WS for incoming emails
635 setting_mail_handler_api_key: API key
635 setting_mail_handler_api_key: API key
636 text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/email.yml and restart the application to enable them."
636 text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/email.yml and restart the application to enable them."
637 field_parent_title: Parent page
@@ -633,3 +633,4 label_generate_key: Generate a key
633 setting_mail_handler_api_enabled: Enable WS for incoming emails
633 setting_mail_handler_api_enabled: Enable WS for incoming emails
634 setting_mail_handler_api_key: API key
634 setting_mail_handler_api_key: API key
635 text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/email.yml and restart the application to enable them."
635 text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/email.yml and restart the application to enable them."
636 field_parent_title: Parent page
@@ -182,6 +182,7 field_time_zone: Time zone
182 field_searchable: Searchable
182 field_searchable: Searchable
183 field_default_value: Default value
183 field_default_value: Default value
184 field_comments_sorting: Display comments
184 field_comments_sorting: Display comments
185 field_parent_title: Parent page
185
186
186 setting_app_title: Application title
187 setting_app_title: Application title
187 setting_app_subtitle: Application subtitle
188 setting_app_subtitle: Application subtitle
@@ -635,3 +635,4 label_generate_key: Generate a key
635 setting_mail_handler_api_enabled: Enable WS for incoming emails
635 setting_mail_handler_api_enabled: Enable WS for incoming emails
636 setting_mail_handler_api_key: API key
636 setting_mail_handler_api_key: API key
637 text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/email.yml and restart the application to enable them."
637 text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/email.yml and restart the application to enable them."
638 field_parent_title: Parent page
@@ -632,3 +632,4 label_generate_key: Generate a key
632 setting_mail_handler_api_enabled: Enable WS for incoming emails
632 setting_mail_handler_api_enabled: Enable WS for incoming emails
633 setting_mail_handler_api_key: API key
633 setting_mail_handler_api_key: API key
634 text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/email.yml and restart the application to enable them."
634 text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/email.yml and restart the application to enable them."
635 field_parent_title: Parent page
@@ -183,6 +183,7 field_time_zone: Fuseau horaire
183 field_searchable: Utilisé pour les recherches
183 field_searchable: Utilisé pour les recherches
184 field_default_value: Valeur par défaut
184 field_default_value: Valeur par défaut
185 field_comments_sorting: Afficher les commentaires
185 field_comments_sorting: Afficher les commentaires
186 field_parent_title: Page parent
186
187
187 setting_app_title: Titre de l'application
188 setting_app_title: Titre de l'application
188 setting_app_subtitle: Sous-titre de l'application
189 setting_app_subtitle: Sous-titre de l'application
@@ -632,3 +632,4 label_generate_key: Generate a key
632 setting_mail_handler_api_enabled: Enable WS for incoming emails
632 setting_mail_handler_api_enabled: Enable WS for incoming emails
633 setting_mail_handler_api_key: API key
633 setting_mail_handler_api_key: API key
634 text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/email.yml and restart the application to enable them."
634 text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/email.yml and restart the application to enable them."
635 field_parent_title: Parent page
@@ -633,3 +633,4 label_generate_key: Kulcs generálása
633 setting_mail_handler_api_enabled: Web Service engedélyezése a beérkezett levelekhez
633 setting_mail_handler_api_enabled: Web Service engedélyezése a beérkezett levelekhez
634 setting_mail_handler_api_key: API kulcs
634 setting_mail_handler_api_key: API kulcs
635 text_email_delivery_not_configured: "Az E-mail küldés nincs konfigurálva, és az értesítések ki vannak kapcsolva.\nÁllítsd be az SMTP szervert a config/email.yml fájlban és indítsd újra az alkalmazást, hogy érvénybe lépjen."
635 text_email_delivery_not_configured: "Az E-mail küldés nincs konfigurálva, és az értesítések ki vannak kapcsolva.\nÁllítsd be az SMTP szervert a config/email.yml fájlban és indítsd újra az alkalmazást, hogy érvénybe lépjen."
636 field_parent_title: Parent page
@@ -632,3 +632,4 label_generate_key: Genera una chiave
632 setting_mail_handler_api_enabled: Abilita WS per le e-mail in arrivo
632 setting_mail_handler_api_enabled: Abilita WS per le e-mail in arrivo
633 setting_mail_handler_api_key: chiave API
633 setting_mail_handler_api_key: chiave API
634 text_email_delivery_not_configured: "La consegna via e-mail non è configurata e le notifiche sono disabilitate.\nConfigura il tuo server SMTP in config/email.yml e riavvia l'applicazione per abilitarle."
634 text_email_delivery_not_configured: "La consegna via e-mail non è configurata e le notifiche sono disabilitate.\nConfigura il tuo server SMTP in config/email.yml e riavvia l'applicazione per abilitarle."
635 field_parent_title: Parent page
@@ -633,3 +633,4 label_generate_key: Generate a key
633 setting_mail_handler_api_enabled: Enable WS for incoming emails
633 setting_mail_handler_api_enabled: Enable WS for incoming emails
634 setting_mail_handler_api_key: API key
634 setting_mail_handler_api_key: API key
635 text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/email.yml and restart the application to enable them."
635 text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/email.yml and restart the application to enable them."
636 field_parent_title: Parent page
@@ -632,3 +632,4 label_generate_key: Generate a key
632 setting_mail_handler_api_enabled: Enable WS for incoming emails
632 setting_mail_handler_api_enabled: Enable WS for incoming emails
633 setting_mail_handler_api_key: API key
633 setting_mail_handler_api_key: API key
634 text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/email.yml and restart the application to enable them."
634 text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/email.yml and restart the application to enable them."
635 field_parent_title: Parent page
@@ -635,3 +635,4 setting_mail_handler_api_enabled: Įgalinti WS įeinantiems laiškams
635 setting_mail_handler_api_key: API raktas
635 setting_mail_handler_api_key: API raktas
636
636
637 text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/email.yml and restart the application to enable them."
637 text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/email.yml and restart the application to enable them."
638 field_parent_title: Parent page
@@ -633,3 +633,4 label_generate_key: Generate a key
633 setting_mail_handler_api_enabled: Enable WS for incoming emails
633 setting_mail_handler_api_enabled: Enable WS for incoming emails
634 setting_mail_handler_api_key: API key
634 setting_mail_handler_api_key: API key
635 text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/email.yml and restart the application to enable them."
635 text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/email.yml and restart the application to enable them."
636 field_parent_title: Parent page
@@ -633,3 +633,4 label_generate_key: Generate a key
633 setting_mail_handler_api_enabled: Enable WS for incoming emails
633 setting_mail_handler_api_enabled: Enable WS for incoming emails
634 setting_mail_handler_api_key: API key
634 setting_mail_handler_api_key: API key
635 text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/email.yml and restart the application to enable them."
635 text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/email.yml and restart the application to enable them."
636 field_parent_title: Parent page
@@ -632,3 +632,4 label_generate_key: Generate a key
632 setting_mail_handler_api_enabled: Enable WS for incoming emails
632 setting_mail_handler_api_enabled: Enable WS for incoming emails
633 setting_mail_handler_api_key: API key
633 setting_mail_handler_api_key: API key
634 text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/email.yml and restart the application to enable them."
634 text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/email.yml and restart the application to enable them."
635 field_parent_title: Parent page
@@ -632,3 +632,4 label_generate_key: Generate a key
632 setting_mail_handler_api_enabled: Enable WS for incoming emails
632 setting_mail_handler_api_enabled: Enable WS for incoming emails
633 setting_mail_handler_api_key: API key
633 setting_mail_handler_api_key: API key
634 text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/email.yml and restart the application to enable them."
634 text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/email.yml and restart the application to enable them."
635 field_parent_title: Parent page
@@ -632,3 +632,4 label_generate_key: Generate a key
632 setting_mail_handler_api_enabled: Enable WS for incoming emails
632 setting_mail_handler_api_enabled: Enable WS for incoming emails
633 setting_mail_handler_api_key: API key
633 setting_mail_handler_api_key: API key
634 text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/email.yml and restart the application to enable them."
634 text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/email.yml and restart the application to enable them."
635 field_parent_title: Parent page
@@ -632,3 +632,4 label_generate_key: Generate a key
632 setting_mail_handler_api_enabled: Enable WS for incoming emails
632 setting_mail_handler_api_enabled: Enable WS for incoming emails
633 setting_mail_handler_api_key: API key
633 setting_mail_handler_api_key: API key
634 text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/email.yml and restart the application to enable them."
634 text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/email.yml and restart the application to enable them."
635 field_parent_title: Parent page
@@ -636,3 +636,4 label_generate_key: Сгенерировать ключ
636 setting_mail_handler_api_enabled: Включить веб-сервис для входящих сообщений
636 setting_mail_handler_api_enabled: Включить веб-сервис для входящих сообщений
637 setting_mail_handler_api_key: API ключ
637 setting_mail_handler_api_key: API ключ
638 text_email_delivery_not_configured: "Параметры работы с почтовым сервером не настроены и функция уведомления по email не активна.\nНастроить параметры для вашего SMTP сервера вы можете в файле config/email.yml. Для применения изменений перезапустите приложение."
638 text_email_delivery_not_configured: "Параметры работы с почтовым сервером не настроены и функция уведомления по email не активна.\nНастроить параметры для вашего SMTP сервера вы можете в файле config/email.yml. Для применения изменений перезапустите приложение."
639 field_parent_title: Parent page
@@ -633,3 +633,4 label_generate_key: Generate a key
633 setting_mail_handler_api_enabled: Enable WS for incoming emails
633 setting_mail_handler_api_enabled: Enable WS for incoming emails
634 setting_mail_handler_api_key: API key
634 setting_mail_handler_api_key: API key
635 text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/email.yml and restart the application to enable them."
635 text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/email.yml and restart the application to enable them."
636 field_parent_title: Parent page
@@ -633,3 +633,4 label_generate_key: Generate a key
633 setting_mail_handler_api_enabled: Enable WS for incoming emails
633 setting_mail_handler_api_enabled: Enable WS for incoming emails
634 setting_mail_handler_api_key: API key
634 setting_mail_handler_api_key: API key
635 text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/email.yml and restart the application to enable them."
635 text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/email.yml and restart the application to enable them."
636 field_parent_title: Parent page
@@ -635,3 +635,4 label_generate_key: Generate a key
635 setting_mail_handler_api_enabled: Enable WS for incoming emails
635 setting_mail_handler_api_enabled: Enable WS for incoming emails
636 setting_mail_handler_api_key: API key
636 setting_mail_handler_api_key: API key
637 text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/email.yml and restart the application to enable them."
637 text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/email.yml and restart the application to enable them."
638 field_parent_title: Parent page
@@ -634,3 +634,4 label_generate_key: Generate a key
634 setting_mail_handler_api_enabled: Enable WS for incoming emails
634 setting_mail_handler_api_enabled: Enable WS for incoming emails
635 setting_mail_handler_api_key: API key
635 setting_mail_handler_api_key: API key
636 text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/email.yml and restart the application to enable them."
636 text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/email.yml and restart the application to enable them."
637 field_parent_title: Parent page
@@ -633,3 +633,4 default_activity_development: 開發
633 enumeration_issue_priorities: 項目優先權
633 enumeration_issue_priorities: 項目優先權
634 enumeration_doc_categories: 文件分類
634 enumeration_doc_categories: 文件分類
635 enumeration_activities: 活動 (時間追蹤)
635 enumeration_activities: 活動 (時間追蹤)
636 field_parent_title: Parent page
@@ -633,3 +633,4 enumeration_issue_priorities: 问题优先级
633 enumeration_doc_categories: 文档类别
633 enumeration_doc_categories: 文档类别
634 enumeration_activities: 活动(时间跟踪)
634 enumeration_activities: 活动(时间跟踪)
635 text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/email.yml and restart the application to enable them."
635 text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/email.yml and restart the application to enable them."
636 field_parent_title: Parent page
@@ -5,22 +5,26 wiki_pages_001:
5 id: 1
5 id: 1
6 wiki_id: 1
6 wiki_id: 1
7 protected: true
7 protected: true
8 parent_id:
8 wiki_pages_002:
9 wiki_pages_002:
9 created_on: 2007-03-08 00:18:07 +01:00
10 created_on: 2007-03-08 00:18:07 +01:00
10 title: Another_page
11 title: Another_page
11 id: 2
12 id: 2
12 wiki_id: 1
13 wiki_id: 1
13 protected: false
14 protected: false
15 parent_id:
14 wiki_pages_003:
16 wiki_pages_003:
15 created_on: 2007-03-08 00:18:07 +01:00
17 created_on: 2007-03-08 00:18:07 +01:00
16 title: Start_page
18 title: Start_page
17 id: 3
19 id: 3
18 wiki_id: 2
20 wiki_id: 2
19 protected: false
21 protected: false
22 parent_id:
20 wiki_pages_004:
23 wiki_pages_004:
21 created_on: 2007-03-08 00:18:07 +01:00
24 created_on: 2007-03-08 00:18:07 +01:00
22 title: Page_with_an_inline_image
25 title: Page_with_an_inline_image
23 id: 4
26 id: 4
24 wiki_id: 1
27 wiki_id: 1
25 protected: false
28 protected: false
29 parent_id: 1
26 No newline at end of file
30
@@ -163,8 +163,16 class WikiControllerTest < Test::Unit::TestCase
163 pages = assigns(:pages)
163 pages = assigns(:pages)
164 assert_not_nil pages
164 assert_not_nil pages
165 assert_equal Project.find(1).wiki.pages.size, pages.size
165 assert_equal Project.find(1).wiki.pages.size, pages.size
166 assert_tag :tag => 'a', :attributes => { :href => '/wiki/ecookbook/CookBook_documentation' },
166
167 :content => /CookBook documentation/
167 assert_tag :ul, :attributes => { :class => 'pages-hierarchy' },
168 :child => { :tag => 'li', :child => { :tag => 'a', :attributes => { :href => '/wiki/ecookbook/CookBook_documentation' },
169 :content => 'CookBook documentation' },
170 :child => { :tag => 'ul',
171 :child => { :tag => 'li',
172 :child => { :tag => 'a', :attributes => { :href => '/wiki/ecookbook/Page_with_an_inline_image' },
173 :content => 'Page with an inline image' } } } },
174 :child => { :tag => 'li', :child => { :tag => 'a', :attributes => { :href => '/wiki/ecookbook/Another_page' },
175 :content => 'Another page' } }
168 end
176 end
169
177
170 def test_not_found
178 def test_not_found
@@ -48,6 +48,50 class WikiPageTest < Test::Unit::TestCase
48 assert page.new_record?
48 assert page.new_record?
49 end
49 end
50
50
51 def test_parent_title
52 page = WikiPage.find_by_title('Another_page')
53 assert_nil page.parent_title
54
55 page = WikiPage.find_by_title('Page_with_an_inline_image')
56 assert_equal 'CookBook documentation', page.parent_title
57 end
58
59 def test_assign_parent
60 page = WikiPage.find_by_title('Another_page')
61 page.parent_title = 'CookBook documentation'
62 assert page.save
63 page.reload
64 assert_equal WikiPage.find_by_title('CookBook_documentation'), page.parent
65 end
66
67 def test_unassign_parent
68 page = WikiPage.find_by_title('Page_with_an_inline_image')
69 page.parent_title = ''
70 assert page.save
71 page.reload
72 assert_nil page.parent
73 end
74
75 def test_parent_validation
76 page = WikiPage.find_by_title('CookBook_documentation')
77
78 # A page that doesn't exist
79 page.parent_title = 'Unknown title'
80 assert !page.save
81 assert_equal :activerecord_error_invalid, page.errors.on(:parent_title)
82 # A child page
83 page.parent_title = 'Page_with_an_inline_image'
84 assert !page.save
85 assert_equal :activerecord_error_circular_dependency, page.errors.on(:parent_title)
86 # The page itself
87 page.parent_title = 'CookBook_documentation'
88 assert !page.save
89 assert_equal :activerecord_error_circular_dependency, page.errors.on(:parent_title)
90
91 page.parent_title = 'Another_page'
92 assert page.save
93 end
94
51 def test_destroy
95 def test_destroy
52 page = WikiPage.find(1)
96 page = WikiPage.find(1)
53 page.destroy
97 page.destroy
General Comments 0
You need to be logged in to leave comments. Login now