Class: Redmine::FieldFormat::UserFormat

Inherits:
RecordList show all
Defined in:
lib/redmine/field_format.rb

Overview

Since:

  • 2.5.0

Instance Method Summary collapse

Methods inherited from RecordList

#cast_single_value, #group_statement, #join_for_order_statement, #order_statement, #possible_custom_value_options, #reset_target_class, #target_class

Methods inherited from List

#bulk_edit_tag, #edit_tag, #query_filter_options

Methods inherited from Base

#bulk_edit_tag, #cast_custom_value, #cast_single_value, #cast_value, #edit_tag, field_attributes, #formatted_custom_value, #formatted_value, #group_statement, #join_for_order_statement, #label, #name, #order_statement, #possible_custom_value_options, #query_filter_options, #target_class, #validate_custom_field, #validate_custom_value, #validate_single_value

Methods included from Helpers::URL

#uri_with_safe_scheme?

Methods included from I18n

#current_language, #day_letter, #day_name, #find_language, #format_date, #format_time, #l, #l_hours, #l_hours_short, #l_or_humanize, #languages_options, #ll, #lu, #month_name, #set_language_if_valid, #valid_languages

Instance Method Details

#before_custom_field_save(custom_field) ⇒ Object



769
770
771
772
773
774
# File 'lib/redmine/field_format.rb', line 769

def before_custom_field_save(custom_field)
  super
  if custom_field.user_role.is_a?(Array)
    custom_field.user_role.map!(&:to_s).reject!(&:blank?)
  end
end

#possible_values_options(custom_field, object = nil) ⇒ Object



741
742
743
# File 'lib/redmine/field_format.rb', line 741

def possible_values_options(custom_field, object=nil)
  possible_values_records(custom_field, object).map {|u| [u.name, u.id.to_s]}
end

#possible_values_records(custom_field, object = nil) ⇒ Object

Since:

  • 3.2.0



745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
# File 'lib/redmine/field_format.rb', line 745

def possible_values_records(custom_field, object=nil)
  if object.is_a?(Array)
    projects = object.map {|o| o.respond_to?(:project) ? o.project : nil}.compact.uniq
    projects.map {|project| possible_values_records(custom_field, project)}.reduce(:&) || []
  elsif object.respond_to?(:project) && object.project
    scope = object.project.users
    if custom_field.user_role.is_a?(Array)
      role_ids = custom_field.user_role.map(&:to_s).reject(&:blank?).map(&:to_i)
      if role_ids.any?
        scope = scope.where("#{Member.table_name}.id IN (SELECT DISTINCT member_id FROM #{MemberRole.table_name} WHERE role_id IN (?))", role_ids)
      end
    end
    scope.sorted
  else
    []
  end
end

#value_from_keyword(custom_field, keyword, object) ⇒ Object

Since:

  • 3.2.0



763
764
765
766
767
# File 'lib/redmine/field_format.rb', line 763

def value_from_keyword(custom_field, keyword, object)
  users = possible_values_records(custom_field, object).to_a
  user = Principal.detect_by_keyword(users, keyword)
  user ? user.id : nil
end