bhf 0.8.0 → 0.8.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (119) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +1 -1
  3. data/Gemfile.lock +1 -1
  4. data/VERSION +1 -1
  5. data/app/assets/images/bhf/pictos.png +0 -0
  6. data/app/assets/images/bhf/pictos_2x.png +0 -0
  7. data/app/assets/javascripts/bhf/application.js +153 -116
  8. data/app/assets/javascripts/bhf/classes/ArrayFields.js +1 -1
  9. data/app/assets/javascripts/bhf/classes/MultipleFields.js +2 -2
  10. data/app/assets/javascripts/bhf/classes/PlatformHelper.js +6 -11
  11. data/app/assets/javascripts/bhf/classes/{AjaxEdit.js → QuickEdit.js} +9 -9
  12. data/app/assets/javascripts/bhf/classes/{AjaxEditStack.js → QuickEditStack.js} +4 -20
  13. data/app/assets/javascripts/bhf/mootools-core-1.5.0-full-compat.js +1 -0
  14. data/app/assets/javascripts/bhf/mootools_ujs.js +11 -11
  15. data/app/assets/stylesheets/bhf/application.css.sass +86 -48
  16. data/app/controllers/bhf/application_controller.rb +8 -4
  17. data/app/controllers/bhf/embed_entries_controller.rb +2 -6
  18. data/app/controllers/bhf/entries_controller.rb +13 -16
  19. data/app/controllers/bhf/pages_controller.rb +14 -13
  20. data/app/helpers/bhf/application_helper.rb +6 -6
  21. data/app/helpers/bhf/entries_helper.rb +4 -2
  22. data/app/helpers/bhf/pages_helper.rb +0 -4
  23. data/app/views/bhf/entries/_form.haml +7 -4
  24. data/app/views/bhf/entries/show.haml +3 -4
  25. data/app/views/bhf/form/belongs_to/_radio.haml +28 -0
  26. data/app/views/bhf/form/belongs_to/_select.haml +21 -0
  27. data/app/views/bhf/form/belongs_to/_static.haml +1 -0
  28. data/app/views/bhf/{entries/form → form}/column/_array.haml +0 -0
  29. data/app/views/bhf/{entries/form → form}/column/_boolean.haml +0 -0
  30. data/app/views/bhf/{entries/form → form}/column/_date.haml +0 -0
  31. data/app/views/bhf/{entries/form → form}/column/_hash.haml +0 -0
  32. data/app/views/bhf/{entries/form → form}/column/_mappin.haml +0 -0
  33. data/app/views/bhf/{entries/form → form}/column/_markdown.haml +0 -0
  34. data/app/views/bhf/{entries/form → form}/column/_multiple_fields.haml +0 -0
  35. data/app/views/bhf/{entries/form → form}/column/_number.haml +0 -0
  36. data/app/views/bhf/{entries/form → form}/column/_paperclip.haml +0 -0
  37. data/app/views/bhf/{entries/form → form}/column/_password.haml +0 -0
  38. data/app/views/bhf/{entries/form → form}/column/_static.haml +0 -0
  39. data/app/views/bhf/{entries/form → form}/column/_string.haml +0 -0
  40. data/app/views/bhf/{entries/form → form}/column/_text.haml +0 -0
  41. data/app/views/bhf/{entries/form → form}/column/_wysiwyg.haml +0 -0
  42. data/app/views/bhf/form/embeds_many/_static.haml +26 -0
  43. data/app/views/bhf/form/embeds_one/_static.haml +2 -0
  44. data/app/views/bhf/form/has_and_belongs_to_many/_check_box.haml +22 -0
  45. data/app/views/bhf/form/has_and_belongs_to_many/_static.haml +1 -0
  46. data/app/views/bhf/form/has_many/_static.haml +26 -0
  47. data/app/views/bhf/form/has_one/_static.haml +2 -0
  48. data/app/views/bhf/helper/_definition_item.haml +1 -1
  49. data/app/views/bhf/helper/_frontend_edit.haml +1 -1
  50. data/app/views/bhf/pages/_platform.haml +39 -16
  51. data/app/views/bhf/{pages/macro → table}/belongs_to/_default.haml +1 -1
  52. data/app/views/bhf/table/column/_array.haml +1 -0
  53. data/app/views/bhf/table/column/_boolean.haml +1 -0
  54. data/app/views/bhf/table/column/_date.haml +1 -0
  55. data/app/views/bhf/table/column/_extern_link.haml +2 -0
  56. data/app/views/bhf/table/column/_file.haml +1 -0
  57. data/app/views/bhf/table/column/_hash.haml +1 -0
  58. data/app/views/bhf/table/column/_image.haml +1 -0
  59. data/app/views/bhf/table/column/_number.haml +1 -0
  60. data/app/views/bhf/table/column/_paperclip.haml +5 -0
  61. data/app/views/bhf/table/column/_primary_key.haml +1 -0
  62. data/app/views/bhf/table/column/_string.haml +1 -0
  63. data/app/views/bhf/table/column/_text.haml +1 -0
  64. data/app/views/bhf/table/embeds_many/_default.haml +1 -0
  65. data/app/views/bhf/table/embeds_one/_default.haml +1 -0
  66. data/app/views/bhf/table/has_and_belongs_to_many/_default.haml +1 -0
  67. data/app/views/bhf/table/has_many/_default.haml +2 -0
  68. data/app/views/bhf/{pages/macro → table}/has_one/_default.haml +1 -1
  69. data/bhf.gemspec +60 -59
  70. data/config/locales/de.yml +8 -8
  71. data/config/locales/en.yml +7 -7
  72. data/lib/bhf.rb +26 -21
  73. data/lib/bhf/action_view/form_builder.rb +36 -0
  74. data/lib/bhf/action_view/form_options.rb +30 -0
  75. data/lib/bhf/active_record/base.rb +58 -0
  76. data/lib/bhf/mongoid/document.rb +135 -137
  77. data/lib/bhf/platform/attribute/abstract.rb +52 -0
  78. data/lib/bhf/platform/attribute/column.rb +78 -0
  79. data/lib/bhf/platform/attribute/reflection.rb +68 -0
  80. data/lib/bhf/platform/base.rb +333 -0
  81. data/lib/bhf/{pagination.rb → platform/pagination.rb} +1 -1
  82. data/lib/bhf/{settings.rb → settings/base.rb} +14 -11
  83. data/lib/bhf/settings/platform.rb +20 -0
  84. data/lib/bhf/settings/yaml_parser.rb +84 -0
  85. data/lib/rails/generators/bhf/templates/initializer.rb +1 -1
  86. metadata +58 -57
  87. data/app/views/bhf/entries/form/belongs_to/_account_scope.haml +0 -2
  88. data/app/views/bhf/entries/form/belongs_to/_radio.haml +0 -8
  89. data/app/views/bhf/entries/form/belongs_to/_select.haml +0 -7
  90. data/app/views/bhf/entries/form/belongs_to/_static.haml +0 -1
  91. data/app/views/bhf/entries/form/embeds_many/_static.haml +0 -12
  92. data/app/views/bhf/entries/form/embeds_one/_static.haml +0 -12
  93. data/app/views/bhf/entries/form/has_and_belongs_to_many/_account_scope.haml +0 -2
  94. data/app/views/bhf/entries/form/has_and_belongs_to_many/_check_box.haml +0 -5
  95. data/app/views/bhf/entries/form/has_and_belongs_to_many/_static.haml +0 -1
  96. data/app/views/bhf/entries/form/has_many/_static.haml +0 -12
  97. data/app/views/bhf/entries/form/has_one/_account_scope.haml +0 -2
  98. data/app/views/bhf/entries/form/has_one/_static.haml +0 -9
  99. data/app/views/bhf/pages/macro/column/_array.haml +0 -1
  100. data/app/views/bhf/pages/macro/column/_boolean.haml +0 -1
  101. data/app/views/bhf/pages/macro/column/_date.haml +0 -1
  102. data/app/views/bhf/pages/macro/column/_extern_link.haml +0 -2
  103. data/app/views/bhf/pages/macro/column/_file.haml +0 -1
  104. data/app/views/bhf/pages/macro/column/_hash.haml +0 -1
  105. data/app/views/bhf/pages/macro/column/_image.haml +0 -2
  106. data/app/views/bhf/pages/macro/column/_number.haml +0 -1
  107. data/app/views/bhf/pages/macro/column/_paperclip.haml +0 -6
  108. data/app/views/bhf/pages/macro/column/_primary_key.haml +0 -1
  109. data/app/views/bhf/pages/macro/column/_string.haml +0 -1
  110. data/app/views/bhf/pages/macro/column/_text.haml +0 -1
  111. data/app/views/bhf/pages/macro/embeds_many/_default.haml +0 -1
  112. data/app/views/bhf/pages/macro/embeds_one/_default.haml +0 -1
  113. data/app/views/bhf/pages/macro/has_and_belongs_to_many/_default.haml +0 -1
  114. data/app/views/bhf/pages/macro/has_many/_default.haml +0 -2
  115. data/lib/bhf/active_record/active_record.rb +0 -59
  116. data/lib/bhf/data.rb +0 -169
  117. data/lib/bhf/form.rb +0 -36
  118. data/lib/bhf/platform.rb +0 -308
  119. data/lib/bhf/settings_parser.rb +0 -84
@@ -1 +0,0 @@
1
- = object.send(column.name)[0..5].join(', ')
@@ -1 +0,0 @@
1
- = t("bhf.helpers.boolean.#{object.send(column.name)}")
@@ -1 +0,0 @@
1
- = l(object.send(column.name), format: :short) if object.send(column.name)
@@ -1,2 +0,0 @@
1
- = link_to object.send(column.name), title: object.send(column.name), target: '_blank' do
2
- %strong= t('bhf.helpers.link', link: object.send(column.name)).html_safe
@@ -1 +0,0 @@
1
- = link_to_if object.send(column.name), object.send(column.name), object.send(column.name)
@@ -1 +0,0 @@
1
- = object.send(column.name).inspect
@@ -1,2 +0,0 @@
1
- - if object.send(column.name)
2
- = image_tag object.send(column.name), alt: object.send(column.name), class: 'preview_image'
@@ -1 +0,0 @@
1
- = object.send(column.name)
@@ -1,6 +0,0 @@
1
- - unless object.send(column.name).blank?
2
- - file = object.send(column.name)
3
- - if type_is_image?(file.content_type)
4
- = image_tag find_smallest_size_url_for_file(file), alt: object.send(column.name), class: 'preview_image'
5
- - else
6
- = file.original_filename
@@ -1 +0,0 @@
1
- %strong= object.send(column.name)
@@ -1 +0,0 @@
1
- = object.send(column.name)
@@ -1 +0,0 @@
1
- = sanitize(object.send(column.name).to_s, tags: %w(strong em))
@@ -1 +0,0 @@
1
- = render partial: 'bhf/pages/macro/has_many/default', locals: {ref_objects: object.send(column.name)}
@@ -1 +0,0 @@
1
- = render partial: 'bhf/pages/macro/has_one/default', locals: {ref_object: object.send(column.name)}
@@ -1 +0,0 @@
1
- = render partial: 'bhf/pages/macro/has_many/default', locals: {ref_objects: object.send(column.name)}
@@ -1,2 +0,0 @@
1
- - ref_objects ||= object.send(column.name)
2
- = ref_objects.blank? ? t('bhf.helpers.entry.empty', count: 2) : ref_objects.collect(&:to_bhf_s).join(', ')
@@ -1,59 +0,0 @@
1
- module Bhf
2
- module ActiveRecord
3
- module Object
4
-
5
- extend ActiveSupport::Concern
6
-
7
- def to_bhf_s
8
- return title if self.respond_to? :title
9
- return name if self.respond_to? :name
10
-
11
- if self.respond_to?(:attributes)
12
- return title if attributes['title']
13
- return name if attributes['name']
14
- klass_name = if self.class.respond_to?(:model_name)
15
- self.class.model_name.human
16
- else
17
- self.class.to_s.humanize
18
- end
19
- return "#{klass_name} ID: #{send(self.class.primary_key)}" if attributes[self.class.primary_key]
20
- end
21
-
22
- self.to_s.humanize
23
- end
24
-
25
- module ClassMethods
26
- def bhf_default_search(search_params)
27
- return self if (search_term = search_params[:text]).blank?
28
- where_statement = []
29
- columns_hash.each_pair do |name, props|
30
- is_number = search_term.to_i.to_s == search_term || search_term.to_f.to_s == search_term
31
-
32
- if props.type == :string || props.type == :text
33
- where_statement << "LOWER(#{name}) LIKE LOWER('%#{search_term}%')"
34
- elsif props.type == :integer && is_number
35
- where_statement << "#{name} = #{search_term.to_i}"
36
- elsif props.type == :float && is_number
37
- where_statement << "#{name} = #{search_term.to_f}"
38
- end
39
- end
40
-
41
- where(where_statement.join(' OR '))
42
- end
43
-
44
- def bhf_primary_key
45
- primary_key
46
- end
47
-
48
- def bhf_attribute_method?(column_name)
49
- column_names.include?(column_name)
50
- end
51
-
52
- def bhf_embedded?
53
- false
54
- end
55
- end
56
-
57
- end
58
- end
59
- end
data/lib/bhf/data.rb DELETED
@@ -1,169 +0,0 @@
1
- module Bhf
2
- module Data
3
- class AbstractField
4
- attr_reader :name, :info, :macro, :link, :display_type, :form_type, :show_type, :overwrite_type, :overwrite_display_type, :overwrite_show_type
5
-
6
- def initialize(props)
7
- @name = props[:name]
8
- @form_type = props[:form_type]
9
- @show_type = props[:show_type]
10
- @overwrite_show_type = props[:show_type]
11
- @display_type = props[:display_type]
12
- @overwrite_display_type = props[:display_type]
13
- @info = props[:info]
14
- @macro = :column
15
- @link = props[:link] unless props[:link].blank?
16
- end
17
- end
18
-
19
- class Field
20
-
21
- attr_reader :info, :overwrite_display_type, :overwrite_show_type
22
-
23
- def initialize(props, options = {}, pk = 'id')
24
- @props = props
25
- @info = options[:info]
26
-
27
- @overwrite_type = options[:overwrite_type].to_sym if options[:overwrite_type]
28
- @overwrite_display_type = options[:overwrite_display_type].to_sym if options[:overwrite_display_type]
29
- @overwrite_show_type = options[:overwrite_show_type].to_sym if options[:overwrite_show_type]
30
-
31
- @primary_key = pk
32
- end
33
-
34
- def macro
35
- :column
36
- end
37
-
38
- def type
39
- return @overwrite_type if @overwrite_type
40
-
41
- @props.type
42
- end
43
-
44
- def show_type
45
- return @overwrite_show_type if @overwrite_show_type
46
- end
47
-
48
- def form_type
49
- return @overwrite_type if @overwrite_type
50
-
51
- if name == @primary_key || name == 'updated_at' || name == 'created_at'
52
- :static
53
- else
54
- supported_types(@props.type)
55
- end
56
- end
57
-
58
- def display_type
59
- return @overwrite_display_type if @overwrite_display_type
60
-
61
- if name == @primary_key
62
- :primary_key
63
- elsif name == 'updated_at' || name == 'created_at'
64
- :date
65
- else
66
- supported_types(@props.type)
67
- end
68
- end
69
-
70
- def name
71
- @props.name
72
- end
73
-
74
- private
75
-
76
- def supported_types(check_type)
77
- if [:boolean, :text, :array, :hash].include?(check_type)
78
- check_type
79
- elsif type_sym = group_types(check_type)
80
- type_sym
81
- else
82
- :string
83
- end
84
- end
85
-
86
- def group_types(type_sym)
87
- return :date if [:date, :datetime, :timestamp, :time, :year].include?(type_sym)
88
- return :number if [:integer, :float].include?(type_sym)
89
- return :file if type_sym == :file
90
- end
91
-
92
- end
93
-
94
-
95
- class Reflection
96
-
97
- attr_reader :reflection, :info, :link, :overwrite_display_type, :overwrite_show_type
98
-
99
- def initialize(reflection, options = {})
100
- @reflection = reflection
101
- @info = options[:info]
102
- @link = options[:link] unless options[:link].blank?
103
-
104
- @overwrite_type = options[:overwrite_type].to_sym if options[:overwrite_type]
105
- @overwrite_display_type = options[:overwrite_display_type].to_sym if options[:overwrite_display_type]
106
- @overwrite_show_type = options[:overwrite_show_type].to_sym if options[:overwrite_show_type]
107
- end
108
-
109
- def macro
110
- return :has_and_belongs_to_many if @reflection.macro == :has_many && @reflection.options[:through]
111
- @reflection.macro
112
- end
113
-
114
- def type
115
- return @overwrite_type if @overwrite_type
116
-
117
- if macro == :has_and_belongs_to_many
118
- :check_box
119
- elsif macro == :belongs_to
120
- :select
121
- else
122
- :static
123
- end
124
- end
125
-
126
- def form_type
127
- type
128
- end
129
-
130
- def display_type
131
- return @overwrite_display_type if @overwrite_display_type
132
- :default
133
- end
134
-
135
- def show_type
136
- return @overwrite_show_type if @overwrite_show_type
137
- end
138
-
139
- def name
140
- @reflection.name.to_s
141
- end
142
-
143
- end
144
-
145
-
146
- class Column
147
-
148
- attr_reader :name, :field, :overwrite_display_type
149
-
150
- def initialize(field)
151
- @name = field.name
152
- @field = field
153
- end
154
-
155
- end
156
-
157
- class Show
158
-
159
- attr_reader :name, :field, :overwrite_show_type
160
-
161
- def initialize(field)
162
- @name = field.name
163
- @field = field
164
- end
165
-
166
- end
167
-
168
- end
169
- end
data/lib/bhf/form.rb DELETED
@@ -1,36 +0,0 @@
1
- module Bhf
2
- module Form
3
-
4
- class Builder < ActionView::Helpers::FormBuilder
5
- include ActionView::Helpers::FormTagHelper
6
-
7
- def error_label(name, message)
8
- label name, "#{object.class.human_attribute_name(name)} #{message}"
9
- end
10
-
11
- def field_errors(field)
12
- object.errors[field.to_sym]
13
- end
14
-
15
- def field_has_errors?(field)
16
- field_errors(field).any?
17
- end
18
-
19
- def many_to_many_check_box(obj, ref_name, params)
20
- mm = :has_and_belongs_to_many
21
- id_string = obj.send(obj.class.bhf_primary_key).to_s
22
- checked = if params[mm] && params[mm][ref_name]
23
- params[mm][ref_name][id_string] != ''
24
- else
25
- object.send(ref_name).include?(obj)
26
- end
27
-
28
- hidden_field_tag("#{mm}[#{ref_name}][#{id_string}]", '', id: "hidden_#{mm}_#{ref_name}_#{id_string}")+' '+
29
- check_box_tag("#{mm}[#{ref_name}][#{id_string}]", id_string, checked)+' '+
30
- label_tag("#{mm}_#{ref_name}_#{id_string}", obj.to_bhf_s)
31
- end
32
-
33
- end
34
-
35
- end
36
- end
data/lib/bhf/platform.rb DELETED
@@ -1,308 +0,0 @@
1
- module Bhf
2
- class Platform
3
-
4
- attr_accessor :pagination
5
- attr_reader :name, :objects, :page_name, :title, :title_zero, :title_singular
6
-
7
- def initialize(options, page_name, config, user = nil)
8
- @objects = []
9
-
10
- if options.is_a?(String)
11
- options = {options => nil}
12
- end
13
- @name = options.keys[0]
14
- @data = options.values[0] || {}
15
- @user = user
16
- @settings = config
17
- @collection = get_collection
18
-
19
- t_model_path = "activerecord.models.#{model.model_name.to_s.downcase}"
20
- model_name = I18n.t(t_model_path, count: 2, default: @name.pluralize.capitalize)
21
- @title = I18n.t("bhf.platforms.#{@name}.title", count: 2, default: model_name)
22
- model_name = I18n.t(t_model_path, count: 1, default: @name.singularize.capitalize)
23
- @title_singular = I18n.t("bhf.platforms.#{@name}.title", count: 1, default: model_name)
24
- model_name = I18n.t(t_model_path, count: 0, default: @name.singularize.capitalize)
25
- @title_zero = I18n.t("bhf.platforms.#{@name}.title", count: 0, default: model_name)
26
-
27
- @model = model
28
- @page_name = page_name
29
- end
30
-
31
- def prepare_objects(options, paginate_options = nil)
32
- if user_scope?
33
- chain = @user.send(table_options(:user_scope).to_sym)
34
- else
35
- chain = model
36
- chain = chain.send data_source if data_source
37
- end
38
-
39
- unless options[:order].blank?
40
- chain = chain.reorder("#{options[:order]} #{options[:direction]}")
41
- end
42
-
43
- if search? && options[:search].present?
44
- chain = do_search(chain, options[:search])
45
- end
46
-
47
-
48
- if paginate_options && !sortable
49
- chain = chain.page(paginate_options[:page]).per(paginate_options[:per_page])
50
- elsif chain == model
51
- chain = chain.all
52
- end
53
-
54
- @objects = chain
55
- end
56
-
57
- def model
58
- return @model if @model
59
- return @data['model'].constantize if @data['model']
60
- @name.singularize.camelize.constantize
61
- end
62
-
63
- def model_name
64
- ActiveModel::Naming.singular(model)
65
- end
66
-
67
- def fields
68
- default_attrs(form_options(:display), @collection, false)
69
- end
70
-
71
- def columns
72
- default_attrs(table_columns, @collection[0..5]).
73
- each_with_object([]) do |field, obj|
74
- obj << Bhf::Data::Column.new(field)
75
- end
76
- end
77
-
78
- def definitions
79
- default_attrs(show_options(:display) || show_options(:definitions), @collection, false).
80
- each_with_object([]) do |field, obj|
81
- obj << Bhf::Data::Show.new(field)
82
- end
83
- end
84
-
85
- def show_extra_fields
86
- show_options(:extra_fields)
87
- end
88
-
89
- def entries_per_page
90
- table_options(:per_page)
91
- end
92
-
93
- def has_file_upload?
94
- return true if form_options(:multipart) == true
95
-
96
- fields.each do |field|
97
- return true if field.form_type.to_sym == :file
98
- end
99
- false
100
- end
101
-
102
- def search?
103
- table_options(:search) != false
104
- end
105
-
106
- def table_hide?
107
- table_options(:hide) == true || model.bhf_embedded?
108
- end
109
-
110
- def search_field?
111
- table_options(:search_field) != false
112
- end
113
-
114
- def custom_search
115
- table_options(:custom_search)
116
- end
117
-
118
- def table_columns
119
- table_options(:display) || table_options(:columns)
120
- end
121
-
122
- def custom_columns?
123
- table_columns.is_a?(Array)
124
- end
125
-
126
- def user_scope?
127
- @user && table_options(:user_scope)
128
- end
129
-
130
- def table
131
- @data['table']
132
- end
133
-
134
- def show
135
- @data['show']
136
- end
137
-
138
- def form
139
- @data['form']
140
- end
141
-
142
- def hooks(method)
143
- if @data['hooks'] && @data['hooks'][method.to_s]
144
- @data['hooks'][method.to_s].to_sym
145
- end
146
- end
147
-
148
- def sortable
149
- table_options 'sortable'
150
- end
151
-
152
- def sortable_property
153
- (@data['sortable_property'] || :position).to_sym
154
- end
155
-
156
- def columns_count
157
- columns.count + (sortable ? 2 : 1)
158
- end
159
-
160
- def hide_edit
161
- table_options 'hide_edit'
162
- end
163
-
164
- def hide_create
165
- table_options('hide_create') || table_options('hide_new') || table_options('hide_add')
166
- end
167
-
168
- def show_duplicate
169
- table_options 'show_duplicate'
170
- end
171
-
172
- def hide_delete
173
- table_options('hide_delete') || table_options('hide_destroy')
174
- end
175
-
176
- def custom_link
177
- table_options 'custom_link'
178
- end
179
-
180
- def custom_partial
181
- table_options 'partial'
182
- end
183
-
184
- def return_to
185
- form_options 'return_to'
186
- end
187
-
188
- def to_s
189
- @name
190
- end
191
-
192
- private
193
-
194
- def do_search(chain, search_params)
195
- if table_options(:search)
196
- chain.send table_options(:search), search_params
197
- else
198
- chain.bhf_default_search(search_params)
199
- end
200
- end
201
-
202
- def data_source
203
- table_options(:source) || table_options(:scope)
204
- end
205
-
206
- def default_attrs(attrs, d_attrs, warning = true)
207
- return d_attrs unless attrs
208
-
209
- model_respond_to?(attrs) if warning
210
- attrs.each_with_object([]) do |attr_name, obj|
211
- obj << (
212
- @collection.select{ |field| attr_name == field.name }[0] ||
213
- Bhf::Data::AbstractField.new({
214
- name: attr_name,
215
- form_type: form_options(:types, attr_name) || attr_name,
216
- display_type: table_options(:types, attr_name) || attr_name,
217
- show_type: show_options(:types, attr_name) || table_options(:types, attr_name) || attr_name,
218
- info: I18n.t("bhf.platforms.#{@name}.infos.#{attr_name}", default: ''),
219
- link: (@settings.find_platform(form_options(:links, attr_name), @user, false) if @settings && form_options(:links, attr_name))
220
- })
221
- )
222
- end
223
- end
224
-
225
- def get_collection
226
- all = {}
227
-
228
- model.columns_hash.each_pair do |name, props|
229
- next if name == sortable
230
- all[name] = Bhf::Data::Field.new(props, {
231
- overwrite_type: form_options(:types, name),
232
- overwrite_display_type: table_options(:types, name),
233
- overwrite_show_type: show_options(:types, name) || table_options(:types, name),
234
- info: I18n.t("bhf.platforms.#{@name}.infos.#{name}", default: '')
235
- }, model.bhf_primary_key)
236
- end
237
-
238
- model.reflections.each_pair do |name, props|
239
- all[name.to_s] = Bhf::Data::Reflection.new(props, {
240
- overwrite_type: form_options(:types, name),
241
- overwrite_display_type: table_options(:types, name),
242
- overwrite_show_type: show_options(:types, name) || table_options(:types, name),
243
- info: I18n.t("bhf.platforms.#{@name}.infos.#{name}", default: ''),
244
- link: (@settings.find_platform(form_options(:links, name), @user, false) if @settings && form_options(:links, name))
245
- })
246
-
247
- fk = all[name.to_s].reflection.foreign_key
248
- if all.has_key?(fk) and fk != name.to_s
249
- all.delete(fk)
250
- end
251
- end
252
-
253
- default_sort(all)
254
- end
255
-
256
- def default_sort(attrs)
257
- id = []
258
- static_dates = []
259
- output = []
260
-
261
- attrs.each_pair do |key, value|
262
- if key == model.bhf_primary_key
263
- id << value
264
- elsif key == 'created_at' || key == 'updated_at'
265
- static_dates << value
266
- else
267
- output << value
268
- end
269
- end
270
-
271
- id + output.sort_by(&:name) + static_dates
272
- end
273
-
274
- def model_respond_to?(field_names)
275
- new_obj = model.new
276
- field_names.each do |field_name|
277
- unless new_obj.respond_to?(field_name)
278
- raise Exception.new("Model '#{model}' does not respond to '#{field_name}'")
279
- return false
280
- end
281
- end
282
- true
283
- end
284
-
285
- def form_options(key, attribute = nil)
286
- lookup_options form, key, attribute
287
- end
288
-
289
- def table_options(key, attribute = nil)
290
- lookup_options table, key, attribute
291
- end
292
-
293
- def show_options(key, attribute = nil)
294
- lookup_options show, key, attribute
295
- end
296
-
297
- def lookup_options(main_key, key, attribute = nil)
298
- if main_key
299
- if attribute == nil
300
- main_key[key.to_s]
301
- elsif main_key[key.to_s]
302
- main_key[key.to_s][attribute.to_s]
303
- end
304
- end
305
- end
306
-
307
- end
308
- end