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.
- checksums.yaml +4 -4
- data/Gemfile +1 -1
- data/Gemfile.lock +1 -1
- data/VERSION +1 -1
- data/app/assets/images/bhf/pictos.png +0 -0
- data/app/assets/images/bhf/pictos_2x.png +0 -0
- data/app/assets/javascripts/bhf/application.js +153 -116
- data/app/assets/javascripts/bhf/classes/ArrayFields.js +1 -1
- data/app/assets/javascripts/bhf/classes/MultipleFields.js +2 -2
- data/app/assets/javascripts/bhf/classes/PlatformHelper.js +6 -11
- data/app/assets/javascripts/bhf/classes/{AjaxEdit.js → QuickEdit.js} +9 -9
- data/app/assets/javascripts/bhf/classes/{AjaxEditStack.js → QuickEditStack.js} +4 -20
- data/app/assets/javascripts/bhf/mootools-core-1.5.0-full-compat.js +1 -0
- data/app/assets/javascripts/bhf/mootools_ujs.js +11 -11
- data/app/assets/stylesheets/bhf/application.css.sass +86 -48
- data/app/controllers/bhf/application_controller.rb +8 -4
- data/app/controllers/bhf/embed_entries_controller.rb +2 -6
- data/app/controllers/bhf/entries_controller.rb +13 -16
- data/app/controllers/bhf/pages_controller.rb +14 -13
- data/app/helpers/bhf/application_helper.rb +6 -6
- data/app/helpers/bhf/entries_helper.rb +4 -2
- data/app/helpers/bhf/pages_helper.rb +0 -4
- data/app/views/bhf/entries/_form.haml +7 -4
- data/app/views/bhf/entries/show.haml +3 -4
- data/app/views/bhf/form/belongs_to/_radio.haml +28 -0
- data/app/views/bhf/form/belongs_to/_select.haml +21 -0
- data/app/views/bhf/form/belongs_to/_static.haml +1 -0
- data/app/views/bhf/{entries/form → form}/column/_array.haml +0 -0
- data/app/views/bhf/{entries/form → form}/column/_boolean.haml +0 -0
- data/app/views/bhf/{entries/form → form}/column/_date.haml +0 -0
- data/app/views/bhf/{entries/form → form}/column/_hash.haml +0 -0
- data/app/views/bhf/{entries/form → form}/column/_mappin.haml +0 -0
- data/app/views/bhf/{entries/form → form}/column/_markdown.haml +0 -0
- data/app/views/bhf/{entries/form → form}/column/_multiple_fields.haml +0 -0
- data/app/views/bhf/{entries/form → form}/column/_number.haml +0 -0
- data/app/views/bhf/{entries/form → form}/column/_paperclip.haml +0 -0
- data/app/views/bhf/{entries/form → form}/column/_password.haml +0 -0
- data/app/views/bhf/{entries/form → form}/column/_static.haml +0 -0
- data/app/views/bhf/{entries/form → form}/column/_string.haml +0 -0
- data/app/views/bhf/{entries/form → form}/column/_text.haml +0 -0
- data/app/views/bhf/{entries/form → form}/column/_wysiwyg.haml +0 -0
- data/app/views/bhf/form/embeds_many/_static.haml +26 -0
- data/app/views/bhf/form/embeds_one/_static.haml +2 -0
- data/app/views/bhf/form/has_and_belongs_to_many/_check_box.haml +22 -0
- data/app/views/bhf/form/has_and_belongs_to_many/_static.haml +1 -0
- data/app/views/bhf/form/has_many/_static.haml +26 -0
- data/app/views/bhf/form/has_one/_static.haml +2 -0
- data/app/views/bhf/helper/_definition_item.haml +1 -1
- data/app/views/bhf/helper/_frontend_edit.haml +1 -1
- data/app/views/bhf/pages/_platform.haml +39 -16
- data/app/views/bhf/{pages/macro → table}/belongs_to/_default.haml +1 -1
- data/app/views/bhf/table/column/_array.haml +1 -0
- data/app/views/bhf/table/column/_boolean.haml +1 -0
- data/app/views/bhf/table/column/_date.haml +1 -0
- data/app/views/bhf/table/column/_extern_link.haml +2 -0
- data/app/views/bhf/table/column/_file.haml +1 -0
- data/app/views/bhf/table/column/_hash.haml +1 -0
- data/app/views/bhf/table/column/_image.haml +1 -0
- data/app/views/bhf/table/column/_number.haml +1 -0
- data/app/views/bhf/table/column/_paperclip.haml +5 -0
- data/app/views/bhf/table/column/_primary_key.haml +1 -0
- data/app/views/bhf/table/column/_string.haml +1 -0
- data/app/views/bhf/table/column/_text.haml +1 -0
- data/app/views/bhf/table/embeds_many/_default.haml +1 -0
- data/app/views/bhf/table/embeds_one/_default.haml +1 -0
- data/app/views/bhf/table/has_and_belongs_to_many/_default.haml +1 -0
- data/app/views/bhf/table/has_many/_default.haml +2 -0
- data/app/views/bhf/{pages/macro → table}/has_one/_default.haml +1 -1
- data/bhf.gemspec +60 -59
- data/config/locales/de.yml +8 -8
- data/config/locales/en.yml +7 -7
- data/lib/bhf.rb +26 -21
- data/lib/bhf/action_view/form_builder.rb +36 -0
- data/lib/bhf/action_view/form_options.rb +30 -0
- data/lib/bhf/active_record/base.rb +58 -0
- data/lib/bhf/mongoid/document.rb +135 -137
- data/lib/bhf/platform/attribute/abstract.rb +52 -0
- data/lib/bhf/platform/attribute/column.rb +78 -0
- data/lib/bhf/platform/attribute/reflection.rb +68 -0
- data/lib/bhf/platform/base.rb +333 -0
- data/lib/bhf/{pagination.rb → platform/pagination.rb} +1 -1
- data/lib/bhf/{settings.rb → settings/base.rb} +14 -11
- data/lib/bhf/settings/platform.rb +20 -0
- data/lib/bhf/settings/yaml_parser.rb +84 -0
- data/lib/rails/generators/bhf/templates/initializer.rb +1 -1
- metadata +58 -57
- data/app/views/bhf/entries/form/belongs_to/_account_scope.haml +0 -2
- data/app/views/bhf/entries/form/belongs_to/_radio.haml +0 -8
- data/app/views/bhf/entries/form/belongs_to/_select.haml +0 -7
- data/app/views/bhf/entries/form/belongs_to/_static.haml +0 -1
- data/app/views/bhf/entries/form/embeds_many/_static.haml +0 -12
- data/app/views/bhf/entries/form/embeds_one/_static.haml +0 -12
- data/app/views/bhf/entries/form/has_and_belongs_to_many/_account_scope.haml +0 -2
- data/app/views/bhf/entries/form/has_and_belongs_to_many/_check_box.haml +0 -5
- data/app/views/bhf/entries/form/has_and_belongs_to_many/_static.haml +0 -1
- data/app/views/bhf/entries/form/has_many/_static.haml +0 -12
- data/app/views/bhf/entries/form/has_one/_account_scope.haml +0 -2
- data/app/views/bhf/entries/form/has_one/_static.haml +0 -9
- data/app/views/bhf/pages/macro/column/_array.haml +0 -1
- data/app/views/bhf/pages/macro/column/_boolean.haml +0 -1
- data/app/views/bhf/pages/macro/column/_date.haml +0 -1
- data/app/views/bhf/pages/macro/column/_extern_link.haml +0 -2
- data/app/views/bhf/pages/macro/column/_file.haml +0 -1
- data/app/views/bhf/pages/macro/column/_hash.haml +0 -1
- data/app/views/bhf/pages/macro/column/_image.haml +0 -2
- data/app/views/bhf/pages/macro/column/_number.haml +0 -1
- data/app/views/bhf/pages/macro/column/_paperclip.haml +0 -6
- data/app/views/bhf/pages/macro/column/_primary_key.haml +0 -1
- data/app/views/bhf/pages/macro/column/_string.haml +0 -1
- data/app/views/bhf/pages/macro/column/_text.haml +0 -1
- data/app/views/bhf/pages/macro/embeds_many/_default.haml +0 -1
- data/app/views/bhf/pages/macro/embeds_one/_default.haml +0 -1
- data/app/views/bhf/pages/macro/has_and_belongs_to_many/_default.haml +0 -1
- data/app/views/bhf/pages/macro/has_many/_default.haml +0 -2
- data/lib/bhf/active_record/active_record.rb +0 -59
- data/lib/bhf/data.rb +0 -169
- data/lib/bhf/form.rb +0 -36
- data/lib/bhf/platform.rb +0 -308
- 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 +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 +0,0 @@
|
|
|
1
|
-
= object.send(column.name)
|
|
@@ -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,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
|