diff --git a/config/initializers/custom_field_format.rb b/config/initializers/custom_field_format.rb index 46512a72dac..07a693407a2 100644 --- a/config/initializers/custom_field_format.rb +++ b/config/initializers/custom_field_format.rb @@ -28,80 +28,80 @@ # See COPYRIGHT and LICENSE files for more details. #++ -OpenProject::CustomFieldFormat.map do |fields| - fields.register OpenProject::CustomFieldFormat.new("string", - label: :label_string, - order: 1) - fields.register OpenProject::CustomFieldFormat.new("text", - label: :label_text, - order: 2, - formatter: "CustomValue::FormattableStrategy") - fields.register OpenProject::CustomFieldFormat.new("link", - label: :label_link_url, - only: %w(WorkPackage Project), - order: 3, - formatter: "CustomValue::LinkStrategy") - fields.register OpenProject::CustomFieldFormat.new("int", - label: :label_integer, - order: 4, - formatter: "CustomValue::IntStrategy") - fields.register OpenProject::CustomFieldFormat.new("float", - label: :label_float, - order: 5, - formatter: "CustomValue::FloatStrategy") - fields.register OpenProject::CustomFieldFormat.new("list", - label: :label_list, - order: 6, - multi_value_possible: true, - formatter: "CustomValue::ListStrategy") - fields.register OpenProject::CustomFieldFormat.new("date", - label: :label_date, - order: 7, - formatter: "CustomValue::DateStrategy") - fields.register OpenProject::CustomFieldFormat.new("bool", - label: :label_boolean, - order: 8, - formatter: "CustomValue::BoolStrategy") - fields.register OpenProject::CustomFieldFormat.new("user", - label: Proc.new { User.model_name.human }, - only: %w(WorkPackage TimeEntry Version Project), - edit_as: "list", - order: 9, - multi_value_possible: true, - formatter: "CustomValue::UserStrategy") - fields.register OpenProject::CustomFieldFormat.new("version", - label: Proc.new { Version.model_name.human }, - only: %w(WorkPackage TimeEntry Version Project), - edit_as: "list", - order: 10, - multi_value_possible: true, - formatter: "CustomValue::VersionStrategy") +OpenProject::CustomFieldFormat.tap do |formats| + formats.register("string", + label: :label_string, + order: 1) + formats.register("text", + label: :label_text, + order: 2, + formatter: "CustomValue::FormattableStrategy") + formats.register("link", + label: :label_link_url, + only: %w(WorkPackage Project), + order: 3, + formatter: "CustomValue::LinkStrategy") + formats.register("int", + label: :label_integer, + order: 4, + formatter: "CustomValue::IntStrategy") + formats.register("float", + label: :label_float, + order: 5, + formatter: "CustomValue::FloatStrategy") + formats.register("list", + label: :label_list, + order: 6, + multi_value_possible: true, + formatter: "CustomValue::ListStrategy") + formats.register("date", + label: :label_date, + order: 7, + formatter: "CustomValue::DateStrategy") + formats.register("bool", + label: :label_boolean, + order: 8, + formatter: "CustomValue::BoolStrategy") + formats.register("user", + label: Proc.new { User.model_name.human }, + only: %w(WorkPackage TimeEntry Version Project), + edit_as: "list", + order: 9, + multi_value_possible: true, + formatter: "CustomValue::UserStrategy") + formats.register("version", + label: Proc.new { Version.model_name.human }, + only: %w(WorkPackage TimeEntry Version Project), + edit_as: "list", + order: 10, + multi_value_possible: true, + formatter: "CustomValue::VersionStrategy") # This is an internal formatter used as a fallback in case a value is not found. # Setting the label to nil in order to avoid it becoming available for selection as a custom value format. - fields.register OpenProject::CustomFieldFormat.new("empty", - label: nil, - order: 11, - formatter: "CustomValue::EmptyStrategy") + formats.register("empty", + label: nil, + order: 11, + formatter: "CustomValue::EmptyStrategy") - fields.register OpenProject::CustomFieldFormat.new("hierarchy", - label: :label_hierarchy, - only: %w(Project WorkPackage), - order: 12, - multi_value_possible: true, - enterprise_feature: :custom_field_hierarchies, - formatter: "CustomValue::HierarchyStrategy") + formats.register("hierarchy", + label: :label_hierarchy, + only: %w(Project WorkPackage), + order: 12, + multi_value_possible: true, + enterprise_feature: :custom_field_hierarchies, + formatter: "CustomValue::HierarchyStrategy") - fields.register OpenProject::CustomFieldFormat.new("weighted_item_list", - label: :label_weighted_item_list, - only: %w(Project WorkPackage), - order: 13, - enterprise_feature: :weighted_item_lists, - formatter: "CustomValue::WeightedItemListStrategy") + formats.register("weighted_item_list", + label: :label_weighted_item_list, + only: %w(Project WorkPackage), + order: 13, + enterprise_feature: :weighted_item_lists, + formatter: "CustomValue::WeightedItemListStrategy") - fields.register OpenProject::CustomFieldFormat.new("calculated_value", - label: :label_calculated_value, - only: %w(Project), - order: 14, - enterprise_feature: :calculated_values, - formatter: "CustomValue::CalculatedValueStrategy") + formats.register("calculated_value", + label: :label_calculated_value, + only: %w(Project), + order: 14, + enterprise_feature: :calculated_values, + formatter: "CustomValue::CalculatedValueStrategy") end diff --git a/lib/open_project/custom_field_format.rb b/lib/open_project/custom_field_format.rb index db290124dd4..8c33cdaa38b 100644 --- a/lib/open_project/custom_field_format.rb +++ b/lib/open_project/custom_field_format.rb @@ -90,15 +90,10 @@ module OpenProject @registered ||= registered_by_name.values.sort_by(&:order) end - def map(&) - yield self - end + def register(name, **) + return if registered_by_name.has_key?(name) - # Registers a custom field format - def register(custom_field_format, _options = {}) - return if registered_by_name.has_key?(custom_field_format.name) - - registered_by_name[custom_field_format.name] = custom_field_format + registered_by_name[name] = new(name, **) @registered = nil end