Class: IssueCustomField

Inherits:
CustomField
  • Object
show all
Defined in:
app/models/issue_custom_field.rb

Overview

Redmine - project management software Copyright (C) 2006-2014 Jean-Philippe Lang

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.

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.

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.

Instance Method Summary collapse

Methods inherited from CustomField

#<=>, #cast_value, customized_class, #field_format=, for_all, #format, #format_in?, #group_statement, #join_for_order_statement, #order_statement, #possible_custom_value_options, #possible_values, #possible_values=, #possible_values_options, #set_searchable, #valid_field_value?, #validate_custom_value, #validate_field_value, #value_class, #value_from_keyword, visibility_condition

Methods included from Redmine::SubclassFactory

included

Instance Method Details

#type_nameObject


23
24
25
# File 'app/models/issue_custom_field.rb', line 23

def type_name
  :label_issue_plural
end

#validate_custom_fieldObject


41
42
43
44
# File 'app/models/issue_custom_field.rb', line 41

def validate_custom_field
  super
  errors.add(:base, l(:label_role_plural) + ' ' + l('activerecord.errors.messages.blank')) unless visible? || roles.present?
end

#visibility_by_project_condition(project_key = nil, user = User.current, id_column = nil) ⇒ Object


31
32
33
34
35
36
37
38
39
# File 'app/models/issue_custom_field.rb', line 31

def visibility_by_project_condition(project_key=nil, user=User.current, id_column=nil)
  sql = super
  id_column ||= id
  tracker_condition = "#{Issue.table_name}.tracker_id IN (SELECT tracker_id FROM #{table_name_prefix}custom_fields_trackers#{table_name_suffix} WHERE custom_field_id = #{id_column})"
  project_condition = "EXISTS (SELECT 1 FROM #{CustomField.table_name} ifa WHERE ifa.is_for_all = #{self.class.connection.quoted_true} AND ifa.id = #{id_column})" +
    " OR #{Issue.table_name}.project_id IN (SELECT project_id FROM #{table_name_prefix}custom_fields_projects#{table_name_suffix} WHERE custom_field_id = #{id_column})"

  "((#{sql}) AND (#{tracker_condition}) AND (#{project_condition}))"
end

#visible_by?(project, user = User.current) ⇒ Boolean

Returns:

  • (Boolean)

27
28
29
# File 'app/models/issue_custom_field.rb', line 27

def visible_by?(project, user=User.current)
  super || (roles & user.roles_for_project(project)).present?
end