Class: IssueCustomField
- Inherits:
-
CustomField
- Object
- ActiveRecord::Base
- ApplicationRecord
- CustomField
- IssueCustomField
- Defined in:
- app/models/issue_custom_field.rb
Overview
Redmine - project management software Copyright © 2006- 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
- #type_name ⇒ Object
- #validate_custom_field ⇒ Object
- #visibility_by_project_condition(project_key = nil, user = User.current, id_column = nil) ⇒ Object
- #visible_by?(project, user = User.current) ⇒ Boolean
Methods inherited from CustomField
#<=>, #after_save_custom_value, #cast_value, #copy_from, #css_classes, customized_class, #field_format=, for_all, #format, #format_in?, #full_text_formatting?, #full_width_layout?, #group_statement, human_attribute_name, #join_for_order_statement, #order_statement, #possible_custom_value_options, #possible_values, #possible_values=, #possible_values_options, #query_filter_options, #set_custom_field_value, #set_searchable, #thousands_delimiter?, #totalable?, #valid_field_value?, #validate_custom_value, #validate_field_value, #value_class, #value_from_keyword
Methods included from Redmine::SubclassFactory
Methods included from Redmine::SafeAttributes
#delete_unsafe_attributes, included, #safe_attribute?, #safe_attribute_names, #safe_attributes=
Methods inherited from ApplicationRecord
Instance Method Details
#type_name ⇒ Object
27 28 29 |
# File 'app/models/issue_custom_field.rb', line 27 def type_name :label_issue_plural end |
#validate_custom_field ⇒ Object
45 46 47 48 |
# File 'app/models/issue_custom_field.rb', line 45 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
35 36 37 38 39 40 41 42 43 |
# File 'app/models/issue_custom_field.rb', line 35 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}) AND (#{Issue.visible_condition(user)}))" end |
#visible_by?(project, user = User.current) ⇒ Boolean
31 32 33 |
# File 'app/models/issue_custom_field.rb', line 31 def visible_by?(project, user=User.current) super || roles.intersect?(user.roles_for_project(project)) end |