##// END OF EJS Templates
Adds a permission 'view wiki edits' so that wiki history can be hidden to certain users (#1154)....
Jean-Philippe Lang -
r1813:455abea32042
parent child
Show More
@@ -0,0 +1,13
1 class AddWiewWikiEditsPermission < ActiveRecord::Migration
2 def self.up
3 Role.find(:all).each do |r|
4 r.add_permission!(:view_wiki_edits) if r.has_permission?(:view_wiki_pages)
5 end
6 end
7
8 def self.down
9 Role.find(:all).each do |r|
10 r.remove_permission!(:view_wiki_edits)
11 end
12 end
13 end
@@ -38,6 +38,11 class WikiController < ApplicationController
38 end
38 end
39 return
39 return
40 end
40 end
41 if params[:version] && !User.current.allowed_to?(:view_wiki_edits, @project)
42 # Redirects user to the current version if he's not allowed to view previous versions
43 redirect_to :version => nil
44 return
45 end
41 @content = @page.content_for_version(params[:version])
46 @content = @page.content_for_version(params[:version])
42 if params[:export] == 'html'
47 if params[:export] == 'html'
43 export = render_to_string :action => 'export', :layout => false
48 export = render_to_string :action => 'export', :layout => false
@@ -76,6 +76,11 class Role < ActiveRecord::Base
76 save!
76 save!
77 end
77 end
78
78
79 # Returns true if the role has the given permission
80 def has_permission?(perm)
81 !permissions.nil? && permissions.include?(perm.to_sym)
82 end
83
79 def <=>(role)
84 def <=>(role)
80 position <=> role.position
85 position <=> role.position
81 end
86 end
@@ -35,9 +35,9 class WikiContent < ActiveRecord::Base
35 :type => 'wiki-page',
35 :type => 'wiki-page',
36 :url => Proc.new {|o| {:controller => 'wiki', :id => o.page.wiki.project_id, :page => o.page.title, :version => o.version}}
36 :url => Proc.new {|o| {:controller => 'wiki', :id => o.page.wiki.project_id, :page => o.page.title, :version => o.version}}
37
37
38 acts_as_activity_provider :type => 'wiki_pages',
38 acts_as_activity_provider :type => 'wiki_edits',
39 :timestamp => "#{WikiContent.versioned_table_name}.updated_on",
39 :timestamp => "#{WikiContent.versioned_table_name}.updated_on",
40 :permission => :view_wiki_pages,
40 :permission => :view_wiki_edits,
41 :find_options => {:select => "#{WikiContent.versioned_table_name}.updated_on, #{WikiContent.versioned_table_name}.comments, " +
41 :find_options => {:select => "#{WikiContent.versioned_table_name}.updated_on, #{WikiContent.versioned_table_name}.comments, " +
42 "#{WikiContent.versioned_table_name}.#{WikiContent.version_column}, #{WikiPage.table_name}.title, " +
42 "#{WikiContent.versioned_table_name}.#{WikiContent.version_column}, #{WikiPage.table_name}.title, " +
43 "#{WikiContent.versioned_table_name}.page_id, #{WikiContent.versioned_table_name}.author_id, " +
43 "#{WikiContent.versioned_table_name}.page_id, #{WikiContent.versioned_table_name}.author_id, " +
@@ -7,7 +7,7
7 <%= link_to_if_authorized(l(:button_delete), {:action => 'destroy', :page => @page.title}, :method => :post, :confirm => l(:text_are_you_sure), :class => 'icon icon-del') %>
7 <%= link_to_if_authorized(l(:button_delete), {:action => 'destroy', :page => @page.title}, :method => :post, :confirm => l(:text_are_you_sure), :class => 'icon icon-del') %>
8 <%= link_to_if_authorized(l(:button_rollback), {:action => 'edit', :page => @page.title, :version => @content.version }, :class => 'icon icon-cancel') if @content.version < @page.content.version %>
8 <%= link_to_if_authorized(l(:button_rollback), {:action => 'edit', :page => @page.title, :version => @content.version }, :class => 'icon icon-cancel') if @content.version < @page.content.version %>
9 <% end %>
9 <% end %>
10 <%= link_to(l(:label_history), {:action => 'history', :page => @page.title}, :class => 'icon icon-history') %>
10 <%= link_to_if_authorized(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}}) %>
13 <%= breadcrumb(@page.ancestors.reverse.collect {|parent| link_to h(parent.pretty_title), {:page => parent.title}}) %>
@@ -79,7 +79,8 Redmine::AccessControl.map do |map|
79 map.permission :manage_wiki, {:wikis => [:edit, :destroy]}, :require => :member
79 map.permission :manage_wiki, {:wikis => [:edit, :destroy]}, :require => :member
80 map.permission :rename_wiki_pages, {:wiki => :rename}, :require => :member
80 map.permission :rename_wiki_pages, {:wiki => :rename}, :require => :member
81 map.permission :delete_wiki_pages, {:wiki => :destroy}, :require => :member
81 map.permission :delete_wiki_pages, {:wiki => :destroy}, :require => :member
82 map.permission :view_wiki_pages, :wiki => [:index, :history, :diff, :annotate, :special]
82 map.permission :view_wiki_pages, :wiki => [:index, :special]
83 map.permission :view_wiki_edits, :wiki => [:history, :diff, :annotate]
83 map.permission :edit_wiki_pages, :wiki => [:edit, :preview, :add_attachment, :destroy_attachment]
84 map.permission :edit_wiki_pages, :wiki => [:edit, :preview, :add_attachment, :destroy_attachment]
84 map.permission :protect_wiki_pages, {:wiki => :protect}, :require => :member
85 map.permission :protect_wiki_pages, {:wiki => :protect}, :require => :member
85 end
86 end
@@ -145,6 +146,6 Redmine::Activity.map do |activity|
145 activity.register :news
146 activity.register :news
146 activity.register :documents, :class_name => %w(Document Attachment)
147 activity.register :documents, :class_name => %w(Document Attachment)
147 activity.register :files, :class_name => 'Attachment'
148 activity.register :files, :class_name => 'Attachment'
148 activity.register :wiki_pages, :class_name => 'WikiContent::Version', :default => false
149 activity.register :wiki_edits, :class_name => 'WikiContent::Version', :default => false
149 activity.register :messages, :default => false
150 activity.register :messages, :default => false
150 end
151 end
@@ -30,6 +30,7 roles_001:
30 - :view_documents
30 - :view_documents
31 - :manage_documents
31 - :manage_documents
32 - :view_wiki_pages
32 - :view_wiki_pages
33 - :view_wiki_edits
33 - :edit_wiki_pages
34 - :edit_wiki_pages
34 - :protect_wiki_pages
35 - :protect_wiki_pages
35 - :delete_wiki_pages
36 - :delete_wiki_pages
@@ -72,6 +73,7 roles_002:
72 - :view_documents
73 - :view_documents
73 - :manage_documents
74 - :manage_documents
74 - :view_wiki_pages
75 - :view_wiki_pages
76 - :view_wiki_edits
75 - :edit_wiki_pages
77 - :edit_wiki_pages
76 - :protect_wiki_pages
78 - :protect_wiki_pages
77 - :delete_wiki_pages
79 - :delete_wiki_pages
@@ -109,6 +111,7 roles_003:
109 - :view_documents
111 - :view_documents
110 - :manage_documents
112 - :manage_documents
111 - :view_wiki_pages
113 - :view_wiki_pages
114 - :view_wiki_edits
112 - :edit_wiki_pages
115 - :edit_wiki_pages
113 - :delete_wiki_pages
116 - :delete_wiki_pages
114 - :add_messages
117 - :add_messages
@@ -139,6 +142,7 roles_004:
139 - :view_documents
142 - :view_documents
140 - :manage_documents
143 - :manage_documents
141 - :view_wiki_pages
144 - :view_wiki_pages
145 - :view_wiki_edits
142 - :edit_wiki_pages
146 - :edit_wiki_pages
143 - :add_messages
147 - :add_messages
144 - :view_files
148 - :view_files
@@ -159,6 +163,7 roles_005:
159 - :view_time_entries
163 - :view_time_entries
160 - :view_documents
164 - :view_documents
161 - :view_wiki_pages
165 - :view_wiki_pages
166 - :view_wiki_edits
162 - :view_files
167 - :view_files
163 - :browse_repository
168 - :browse_repository
164 - :view_changesets
169 - :view_changesets
General Comments 0
You need to be logged in to leave comments. Login now