##// END OF EJS Templates
Prepend page title to anchor in single page wiki HTML export to make links more unique....
Prepend page title to anchor in single page wiki HTML export to make links more unique. git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@7562 e93f8b46-1217-0410-a6f0-8f06a7374b81

File last commit:

r6737:ebff04692b80
r7442:8bb90f87fb73
Show More
role.rb
176 lines | 5.2 KiB | text/x-ruby | RubyLexer
Jean-Philippe Lang
Localize anonymous and non member roles names (#8072)....
r5213 # Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 #
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
Toshi MARUYAMA
remove trailing white-spaces from app/models/role.rb....
r6737 #
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 # This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
Toshi MARUYAMA
remove trailing white-spaces from app/models/role.rb....
r6737 #
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 # You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
class Role < ActiveRecord::Base
Jean-Philippe Lang
Merged 0.6 branch into trunk....
r663 # Built-in roles
BUILTIN_NON_MEMBER = 1
BUILTIN_ANONYMOUS = 2
Toshi MARUYAMA
remove trailing white-spaces from app/models/role.rb....
r6737
Jean-Philippe Lang
Adds an issues visibility level on roles (#7412)....
r5296 ISSUES_VISIBILITY_OPTIONS = [
Jean-Philippe Lang
Private issues (#7414)....
r5346 ['all', :label_issues_visibility_all],
['default', :label_issues_visibility_public],
Jean-Philippe Lang
Adds an issues visibility level on roles (#7412)....
r5296 ['own', :label_issues_visibility_own]
]
Jean-Philippe Lang
Merged nbc branch @ r1812 (commit access permission and reposman improvements)....
r1812
Jean-Philippe Lang
Adds a setting to choose which role is given to a non-admin user who creates a project (#1007)....
r2655 named_scope :givable, { :conditions => "builtin = 0", :order => 'position' }
Jean-Philippe Lang
Merged nbc branch @ r1812 (commit access permission and reposman improvements)....
r1812 named_scope :builtin, lambda { |*args|
compare = 'not' if args.first == true
{ :conditions => "#{compare} builtin = 0" }
}
Toshi MARUYAMA
remove trailing white-spaces from app/models/role.rb....
r6737
Jean-Philippe Lang
Merged 0.6 branch into trunk....
r663 before_destroy :check_deletable
Jean-Philippe Lang
Workflow copy:...
r1237 has_many :workflows, :dependent => :delete_all do
Jean-Philippe Lang
Adds workflow copy functionality (#1727)....
r3040 def copy(source_role)
Workflow.copy(nil, source_role, nil, proxy_owner)
Jean-Philippe Lang
Workflow copy:...
r1237 end
end
Toshi MARUYAMA
remove trailing white-spaces from app/models/role.rb....
r6737
Jean-Philippe Lang
Allows multiple roles on the same project (#706). Prerequisite for user groups feature....
r2627 has_many :member_roles, :dependent => :destroy
has_many :members, :through => :member_roles
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 acts_as_list
Toshi MARUYAMA
remove trailing white-spaces from app/models/role.rb....
r6737
Jean-Philippe Lang
Merged nbc branch @ r1812 (commit access permission and reposman improvements)....
r1812 serialize :permissions, Array
Jean-Philippe Lang
Merged 0.6 branch into trunk....
r663 attr_protected :builtin
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330
validates_presence_of :name
validates_uniqueness_of :name
Jean-Philippe Lang
Added several validates_length_of...
r590 validates_length_of :name, :maximum => 30
Jean-Philippe Lang
Adds an issues visibility level on roles (#7412)....
r5296 validates_inclusion_of :issues_visibility,
:in => ISSUES_VISIBILITY_OPTIONS.collect(&:first),
:if => lambda {|role| role.respond_to?(:issues_visibility)}
Toshi MARUYAMA
remove trailing white-spaces from app/models/role.rb....
r6737
Jean-Philippe Lang
Merged 0.6 branch into trunk....
r663 def permissions
read_attribute(:permissions) || []
end
Toshi MARUYAMA
remove trailing white-spaces from app/models/role.rb....
r6737
Jean-Philippe Lang
Merged 0.6 branch into trunk....
r663 def permissions=(perms)
Jean-Philippe Lang
Merged nbc branch @ r1812 (commit access permission and reposman improvements)....
r1812 perms = perms.collect {|p| p.to_sym unless p.blank? }.compact.uniq if perms
Jean-Philippe Lang
Merged 0.6 branch into trunk....
r663 write_attribute(:permissions, perms)
end
Jean-Philippe Lang
Merged nbc branch @ r1812 (commit access permission and reposman improvements)....
r1812
def add_permission!(*perms)
self.permissions = [] unless permissions.is_a?(Array)
permissions_will_change!
perms.each do |p|
p = p.to_sym
permissions << p unless permissions.include?(p)
end
save!
end
def remove_permission!(*perms)
return unless permissions.is_a?(Array)
permissions_will_change!
perms.each { |p| permissions.delete(p.to_sym) }
save!
end
Toshi MARUYAMA
remove trailing white-spaces from app/models/role.rb....
r6737
Jean-Philippe Lang
Adds a permission 'view wiki edits' so that wiki history can be hidden to certain users (#1154)....
r1813 # Returns true if the role has the given permission
def has_permission?(perm)
!permissions.nil? && permissions.include?(perm.to_sym)
end
Toshi MARUYAMA
remove trailing white-spaces from app/models/role.rb....
r6737
Jean-Philippe Lang
Various changes on views. On project summary, members are now grouped by role and subprojects are listed inline....
r431 def <=>(role)
Jean-Philippe Lang
Allows multiple roles on the same project (#706). Prerequisite for user groups feature....
r2627 role ? position <=> role.position : -1
end
Toshi MARUYAMA
remove trailing white-spaces from app/models/role.rb....
r6737
Jean-Philippe Lang
Allows multiple roles on the same project (#706). Prerequisite for user groups feature....
r2627 def to_s
name
Jean-Philippe Lang
Various changes on views. On project summary, members are now grouped by role and subprojects are listed inline....
r431 end
Toshi MARUYAMA
remove trailing white-spaces from app/models/role.rb....
r6737
Jean-Philippe Lang
Localize anonymous and non member roles names (#8072)....
r5213 def name
case builtin
when 1; l(:label_role_non_member, :default => read_attribute(:name))
when 2; l(:label_role_anonymous, :default => read_attribute(:name))
else; read_attribute(:name)
end
end
Toshi MARUYAMA
remove trailing white-spaces from app/models/role.rb....
r6737
Jean-Philippe Lang
Merged 0.6 branch into trunk....
r663 # Return true if the role is a builtin role
def builtin?
self.builtin != 0
end
Toshi MARUYAMA
remove trailing white-spaces from app/models/role.rb....
r6737
Jean-Philippe Lang
Merged 0.6 branch into trunk....
r663 # Return true if the role is a project member role
def member?
!self.builtin?
end
Toshi MARUYAMA
remove trailing white-spaces from app/models/role.rb....
r6737
Jean-Philippe Lang
Merged 0.6 branch into trunk....
r663 # Return true if role is allowed to do the specified action
# action can be:
# * a parameter-like Hash (eg. :controller => 'projects', :action => 'edit')
# * a permission Symbol (eg. :edit_project)
def allowed_to?(action)
if action.is_a? Hash
allowed_actions.include? "#{action[:controller]}/#{action[:action]}"
else
allowed_permissions.include? action
end
end
Toshi MARUYAMA
remove trailing white-spaces from app/models/role.rb....
r6737
Jean-Philippe Lang
Merged 0.6 branch into trunk....
r663 # Return all the permissions that can be given to the role
def setable_permissions
setable_permissions = Redmine::AccessControl.permissions - Redmine::AccessControl.public_permissions
setable_permissions -= Redmine::AccessControl.members_only_permissions if self.builtin == BUILTIN_NON_MEMBER
setable_permissions -= Redmine::AccessControl.loggedin_only_permissions if self.builtin == BUILTIN_ANONYMOUS
setable_permissions
end
# Find all the roles that can be given to a project member
def self.find_all_givable
find(:all, :conditions => {:builtin => 0}, :order => 'position')
end
Eric Davis
Change Role#anonymous and #non_member so they generate the record as needed....
r3249 # Return the builtin 'non member' role. If the role doesn't exist,
# it will be created on the fly.
Jean-Philippe Lang
Merged 0.6 branch into trunk....
r663 def self.non_member
Jean-Philippe Lang
Refactor builtin roles creation....
r6179 find_or_create_system_role(BUILTIN_NON_MEMBER, 'Non member')
Jean-Philippe Lang
Merged 0.6 branch into trunk....
r663 end
Eric Davis
Change Role#anonymous and #non_member so they generate the record as needed....
r3249 # Return the builtin 'anonymous' role. If the role doesn't exist,
# it will be created on the fly.
Jean-Philippe Lang
Merged 0.6 branch into trunk....
r663 def self.anonymous
Jean-Philippe Lang
Refactor builtin roles creation....
r6179 find_or_create_system_role(BUILTIN_ANONYMOUS, 'Anonymous')
Jean-Philippe Lang
Merged 0.6 branch into trunk....
r663 end
Toshi MARUYAMA
remove trailing white-spaces from app/models/role.rb....
r6737
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 private
Toshi MARUYAMA
remove trailing white-spaces from app/models/role.rb....
r6737
Jean-Philippe Lang
Merged 0.6 branch into trunk....
r663 def allowed_permissions
@allowed_permissions ||= permissions + Redmine::AccessControl.public_permissions.collect {|p| p.name}
end
def allowed_actions
@actions_allowed ||= allowed_permissions.inject([]) { |actions, permission| actions += Redmine::AccessControl.allowed_actions(permission) }.flatten
end
Toshi MARUYAMA
remove trailing white-spaces from app/models/role.rb....
r6737
Jean-Philippe Lang
Merged 0.6 branch into trunk....
r663 def check_deletable
raise "Can't delete role" if members.any?
raise "Can't delete builtin role" if builtin?
Jean-Philippe Lang
Initial commit...
r2 end
Toshi MARUYAMA
remove trailing white-spaces from app/models/role.rb....
r6737
Jean-Philippe Lang
Refactor builtin roles creation....
r6179 def self.find_or_create_system_role(builtin, name)
role = first(:conditions => {:builtin => builtin})
if role.nil?
role = create(:name => name, :position => 0) do |r|
r.builtin = builtin
end
raise "Unable to create the #{name} role." if role.new_record?
end
role
end
Jean-Philippe Lang
Initial commit...
r2 end