diff --git a/app/controllers/wiki_controller.rb b/app/controllers/wiki_controller.rb index 60b59ff5..55194e04 100644 --- a/app/controllers/wiki_controller.rb +++ b/app/controllers/wiki_controller.rb @@ -33,7 +33,7 @@ class WikiController < ApplicationController page_title = params[:page] @page = @wiki.find_or_new_page(page_title) if @page.new_record? - if User.current.allowed_to?(:edit_wiki_pages, @project) + if User.current.allowed_to?(:edit_wiki_pages, @project) && editable? edit render :action => 'edit' else diff --git a/app/models/wiki.rb b/app/models/wiki.rb index b9a76fb3..9bd24595 100644 --- a/app/models/wiki.rb +++ b/app/models/wiki.rb @@ -29,6 +29,12 @@ class Wiki < ActiveRecord::Base !user.nil? && user.allowed_to?(:view_wiki_pages, project) end + # Returns the wiki page that acts as the sidebar content + # or nil if no such page exists + def sidebar + @sidebar ||= find_page('Sidebar', :with_redirect => false) + end + # find the page with the given title # if page doesn't exist, return a new page def find_or_new_page(title) diff --git a/app/models/wiki_content.rb b/app/models/wiki_content.rb index f81aa9e7..1f0eb9a6 100644 --- a/app/models/wiki_content.rb +++ b/app/models/wiki_content.rb @@ -34,6 +34,10 @@ class WikiContent < ActiveRecord::Base page.project end + def attachments + page.nil? ? [] : page.attachments + end + # Returns the mail adresses of users that should be notified def recipients notified = project.notified_users diff --git a/app/models/wiki_page.rb b/app/models/wiki_page.rb index ad2d8135..010a8532 100644 --- a/app/models/wiki_page.rb +++ b/app/models/wiki_page.rb @@ -41,6 +41,15 @@ class WikiPage < ActiveRecord::Base validates_uniqueness_of :title, :scope => :wiki_id, :case_sensitive => false validates_associated :content + # Wiki pages that are protected by default + DEFAULT_PROTECTED_PAGES = %w(sidebar) + + def after_initialize + if new_record? && DEFAULT_PROTECTED_PAGES.include?(title.to_s.downcase) + self.protected = true + end + end + def visible?(user=User.current) !user.nil? && user.allowed_to?(:view_wiki_pages, project) end diff --git a/app/views/wiki/_sidebar.rhtml b/app/views/wiki/_sidebar.rhtml index 20c08712..ad4b1d25 100644 --- a/app/views/wiki/_sidebar.rhtml +++ b/app/views/wiki/_sidebar.rhtml @@ -1,3 +1,7 @@ +<% if @wiki && @wiki.sidebar -%> + <%= textilizable @wiki.sidebar.content, :text %> +<% end -%> +