##// END OF EJS Templates
Introduce virtual MenuNodes (#15880)....
Introduce virtual MenuNodes (#15880). They are characterized by having a blank url. they will only be rendered if the user is authorized to see at least one of its children. they render as links which do nothing when clicked. Patch by Jan Schulz-Hofen. git-svn-id: http://svn.redmine.org/redmine/trunk@15501 e93f8b46-1217-0410-a6f0-8f06a7374b81

File last commit:

r14938:97a647c1e5d4
r15119:53710d80fc88
Show More
group.rb
119 lines | 3.3 KiB | text/x-ruby | RubyLexer
Jean-Philippe Lang
User groups branch merged....
r2755 # Redmine - project management software
Jean-Philippe Lang
Updates copyright for 2016....
r14856 # Copyright (C) 2006-2016 Jean-Philippe Lang
Jean-Philippe Lang
User groups branch merged....
r2755 #
# 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/group.rb....
r6722 #
Jean-Philippe Lang
User groups branch merged....
r2755 # 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/group.rb....
r6722 #
Jean-Philippe Lang
User groups branch merged....
r2755 # 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 Group < Principal
Jean-Philippe Lang
Use safe_attributes in GroupsController....
r9563 include Redmine::SafeAttributes
Toshi MARUYAMA
explicitly define fix has_and_belongs_to_many join_table at Group and User...
r12196 has_and_belongs_to_many :users,
:join_table => "#{table_name_prefix}groups_users#{table_name_suffix}",
:after_add => :user_added,
:after_remove => :user_removed
Toshi MARUYAMA
remove trailing white-spaces from app/models/group.rb....
r6722
Jean-Philippe Lang
User groups branch merged....
r2755 acts_as_customizable
Toshi MARUYAMA
remove trailing white-spaces from app/models/group.rb....
r6722
Jean-Philippe Lang
User groups branch merged....
r2755 validates_presence_of :lastname
validates_uniqueness_of :lastname, :case_sensitive => false
Jean-Philippe Lang
Raised group name maximum length to 255 characters (#13174)....
r11162 validates_length_of :lastname, :maximum => 255
Jean-Philippe Lang
Merged rails-4.1 branch (#14534)....
r13100 attr_protected :id
Toshi MARUYAMA
remove trailing white-spaces from app/models/group.rb....
r6722
Jean-Philippe Lang
Validate status of users and groups....
r14938 self.valid_statuses = [STATUS_ACTIVE]
Jean-Philippe Lang
Ability to assign issues to groups (#2964)....
r6186 before_destroy :remove_references_before_destroy
Toshi MARUYAMA
remove trailing white-spaces from app/models/group.rb....
r6722
Jean-Philippe Lang
Fixed group sorted scope order (#20066)....
r13998 scope :sorted, lambda { order(:type => :asc, :lastname => :asc) }
Jean-Philippe Lang
Mail handler: adds --default-group option to add created user to one or more groups (#13340)....
r11292 scope :named, lambda {|arg| where("LOWER(#{table_name}.lastname) = LOWER(?)", arg.to_s.strip)}
Jean-Philippe Lang
Adds buit-in groups to give specific permissions to anonymous and non members users per project (#17976)....
r13053 scope :givable, lambda {where(:type => 'Group')}
Jean-Philippe Lang
Adds a scope for sorting groups....
r9764
Jean-Philippe Lang
Use safe_attributes in GroupsController....
r9563 safe_attributes 'name',
Jean-Philippe Lang
REST Api for Groups (#8981)....
r9575 'user_ids',
Jean-Philippe Lang
Use safe_attributes in GroupsController....
r9563 'custom_field_values',
'custom_fields',
Jean-Philippe Lang
Adds buit-in groups to give specific permissions to anonymous and non members users per project (#17976)....
r13053 :if => lambda {|group, user| user.admin? && !group.builtin?}
Jean-Philippe Lang
Use safe_attributes in GroupsController....
r9563
Jean-Philippe Lang
User groups branch merged....
r2755 def to_s
Jean-Philippe Lang
Adds buit-in groups to give specific permissions to anonymous and non members users per project (#17976)....
r13053 name.to_s
Jean-Philippe Lang
User groups branch merged....
r2755 end
Toshi MARUYAMA
remove trailing white-spaces from app/models/group.rb....
r6722
Jean-Philippe Lang
Replaced group[lastname] parameter with group[name]....
r9562 def name
lastname
end
def name=(arg)
self.lastname = arg
end
Toshi MARUYAMA
remove trailing white-spaces from app/models/group.rb....
r6722
Jean-Philippe Lang
Adds buit-in groups to give specific permissions to anonymous and non members users per project (#17976)....
r13053 def builtin_type
nil
end
# Return true if the group is a builtin group
def builtin?
false
end
# Returns true if the group can be given to a user
def givable?
!builtin?
end
Jean-Philippe Lang
User groups branch merged....
r2755 def user_added(user)
members.each do |member|
Jean-Philippe Lang
Prevents validation error when adding a user to a group (#6457)....
r4323 next if member.project.nil?
Jean-Philippe Lang
User groups branch merged....
r2755 user_member = Member.find_by_project_id_and_user_id(member.project_id, user.id) || Member.new(:project_id => member.project_id, :user_id => user.id)
member.member_roles.each do |member_role|
user_member.member_roles << MemberRole.new(:role => member_role.role, :inherited_from => member_role.id)
end
user_member.save!
end
end
Toshi MARUYAMA
remove trailing white-spaces from app/models/group.rb....
r6722
Jean-Philippe Lang
User groups branch merged....
r2755 def user_removed(user)
members.each do |member|
Jean-Philippe Lang
Replaces find(:all) calls....
r10690 MemberRole.
Jean-Philippe Lang
Merged rails-4.1 branch (#14534)....
r13100 joins(:member).
Jean-Philippe Lang
Replaces find(:all) calls....
r10690 where("#{Member.table_name}.user_id = ? AND #{MemberRole.table_name}.inherited_from IN (?)", user.id, member.member_role_ids).
each(&:destroy)
Jean-Philippe Lang
User groups branch merged....
r2755 end
end
Toshi MARUYAMA
remove trailing white-spaces from app/models/group.rb....
r6722
Jean-Philippe Lang
human_attribute_name accepts optional argument....
r8166 def self.human_attribute_name(attribute_key_name, *args)
Toshi MARUYAMA
Rails3: use .to_s for overriding human_attribute_name parameter at group model...
r8849 attr_name = attribute_key_name.to_s
Toshi MARUYAMA
use same human_attribute_name logic with SCM models at group model (#9795)...
r8117 if attr_name == 'lastname'
attr_name = "name"
end
Jean-Philippe Lang
human_attribute_name accepts optional argument....
r8166 super(attr_name, *args)
Jean-Philippe Lang
Fixed: Unrelated error message when creating a group with an invalid name (#9795)....
r8111 end
Jean-Philippe Lang
Adds buit-in groups to give specific permissions to anonymous and non members users per project (#17976)....
r13053 def self.anonymous
GroupAnonymous.load_instance
end
def self.non_member
GroupNonMember.load_instance
end
Jean-Philippe Lang
Ability to assign issues to groups (#2964)....
r6186 private
Toshi MARUYAMA
remove trailing white-spaces from app/models/group.rb....
r6722
Jean-Philippe Lang
Ability to assign issues to groups (#2964)....
r6186 # Removes references that are not handled by associations
def remove_references_before_destroy
return if self.id.nil?
Toshi MARUYAMA
remove trailing white-spaces from app/models/group.rb....
r6722
Toshi MARUYAMA
Rails4: replace deprecated Relation#update_all at Group model...
r12254 Issue.where(['assigned_to_id = ?', id]).update_all('assigned_to_id = NULL')
Jean-Philippe Lang
Ability to assign issues to groups (#2964)....
r6186 end
Jean-Philippe Lang
User groups branch merged....
r2755 end
Jean-Philippe Lang
Adds buit-in groups to give specific permissions to anonymous and non members users per project (#17976)....
r13053
require_dependency "group_builtin"