obitum-rails_admin 0.0.2 → 0.0.3
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.
- data/app/assets/javascripts/rails_admin/ra.filter-box.js +33 -24
- data/app/assets/javascripts/rails_admin/ui.js.coffee +1 -1
- data/app/assets/stylesheets/rails_admin/aristo/jquery-ui-1.8.7.custom.css.scss +1 -1
- data/app/assets/stylesheets/rails_admin/base/theming.css.scss +5 -0
- data/app/controllers/rails_admin/main_controller.rb +16 -14
- data/app/helpers/rails_admin/application_helper.rb +1 -1
- data/app/helpers/rails_admin/form_builder.rb +7 -11
- data/app/views/layouts/rails_admin/application.html.haml +1 -1
- data/app/views/rails_admin/main/_form_filtering_multiselect.html.haml +4 -4
- data/app/views/rails_admin/main/_form_filtering_select.html.haml +4 -4
- data/app/views/rails_admin/main/_form_text.html.haml +1 -1
- data/app/views/rails_admin/main/index.html.haml +22 -6
- data/config/locales/fr.yml +24 -0
- data/config/locales/rails_admin.en.yml +1 -0
- data/lib/rails_admin/adapters/active_record.rb +45 -46
- data/lib/rails_admin/config/actions/edit.rb +7 -3
- data/lib/rails_admin/config/actions/index.rb +3 -1
- data/lib/rails_admin/config/actions/new.rb +4 -4
- data/lib/rails_admin/config/actions.rb +1 -1
- data/lib/rails_admin/config/fields/association.rb +19 -9
- data/lib/rails_admin/config/fields/base.rb +28 -39
- data/lib/rails_admin/config/fields/factories/belongs_to_association.rb +2 -2
- data/lib/rails_admin/config/fields/factories/carrierwave.rb +1 -1
- data/lib/rails_admin/config/fields/factories/enum.rb +1 -1
- data/lib/rails_admin/config/fields/factories/password.rb +1 -1
- data/lib/rails_admin/config/fields/factories/serialized.rb +17 -0
- data/lib/rails_admin/config/fields/types/all.rb +1 -0
- data/lib/rails_admin/config/fields/types/belongs_to_association.rb +6 -8
- data/lib/rails_admin/config/fields/types/boolean.rb +4 -2
- data/lib/rails_admin/config/fields/types/has_one_association.rb +5 -1
- data/lib/rails_admin/config/fields/types/hidden.rb +4 -2
- data/lib/rails_admin/config/fields/types/integer.rb +3 -1
- data/lib/rails_admin/config/fields/types/password.rb +2 -5
- data/lib/rails_admin/config/fields/types/polymorphic_association.rb +1 -1
- data/lib/rails_admin/config/fields/types/serialized.rb +22 -0
- data/lib/rails_admin/config/fields/types/string.rb +0 -2
- data/lib/rails_admin/config/fields/types/text.rb +1 -3
- data/lib/rails_admin/config/fields.rb +2 -1
- data/lib/rails_admin/config/groupable.rb +18 -0
- data/lib/rails_admin/config/has_fields.rb +1 -1
- data/lib/rails_admin/extensions/history/history.rb +1 -1
- data/lib/rails_admin/version.rb +1 -1
- data/spec/controllers/main_controller_spec.rb +67 -1
- data/spec/integration/basic/list/rails_admin_basic_list_spec.rb +2 -1
- data/spec/unit/adapters/active_record_spec.rb +22 -0
- data/spec/unit/config/actions_spec.rb +4 -0
- metadata +11 -193
- data/lib/rails_admin/config/fields/groupable.rb +0 -25
@@ -56,24 +56,29 @@ module RailsAdmin
|
|
56
56
|
|
57
57
|
# Reader for the association's child model's configuration
|
58
58
|
def associated_model_config
|
59
|
-
@associated_model_config ||= RailsAdmin.config(association[:
|
59
|
+
@associated_model_config ||= RailsAdmin.config(association[:model_proc].call)
|
60
60
|
end
|
61
61
|
|
62
62
|
# Reader for the association's child model object's label method
|
63
|
-
def
|
64
|
-
@
|
63
|
+
def associated_object_label_method
|
64
|
+
@associated_object_label_method ||= associated_model_config.object_label_method
|
65
65
|
end
|
66
|
-
|
67
|
-
# Reader for
|
68
|
-
def
|
69
|
-
association[:
|
66
|
+
|
67
|
+
# Reader for associated primary key
|
68
|
+
def associated_primary_key
|
69
|
+
@associated_primary_key ||= association[:primary_key_proc].call
|
70
|
+
end
|
71
|
+
|
72
|
+
# Reader for the association's key
|
73
|
+
def foreign_key
|
74
|
+
association[:foreign_key]
|
70
75
|
end
|
71
76
|
|
72
77
|
# Reader for the inverse relationship
|
73
78
|
def inverse_of
|
74
79
|
association[:inverse_of]
|
75
80
|
end
|
76
|
-
|
81
|
+
|
77
82
|
# Reader whether this is a polymorphic association
|
78
83
|
def polymorphic?
|
79
84
|
association[:polymorphic]
|
@@ -88,7 +93,12 @@ module RailsAdmin
|
|
88
93
|
def value
|
89
94
|
bindings[:object].send(association[:name])
|
90
95
|
end
|
91
|
-
|
96
|
+
|
97
|
+
# has many?
|
98
|
+
def multiple?
|
99
|
+
true
|
100
|
+
end
|
101
|
+
|
92
102
|
def virtual?
|
93
103
|
true
|
94
104
|
end
|
@@ -1,12 +1,7 @@
|
|
1
|
-
require 'active_support/core_ext/string/inflections'
|
2
|
-
require 'active_model/mass_assignment_security'
|
3
|
-
|
4
1
|
require 'rails_admin/config/proxyable'
|
5
2
|
require 'rails_admin/config/configurable'
|
6
3
|
require 'rails_admin/config/hideable'
|
7
|
-
require 'rails_admin/config/
|
8
|
-
require 'rails_admin/config/fields/association'
|
9
|
-
require 'rails_admin/config/fields/groupable'
|
4
|
+
require 'rails_admin/config/groupable'
|
10
5
|
|
11
6
|
module RailsAdmin
|
12
7
|
module Config
|
@@ -15,15 +10,12 @@ module RailsAdmin
|
|
15
10
|
include RailsAdmin::Config::Proxyable
|
16
11
|
include RailsAdmin::Config::Configurable
|
17
12
|
include RailsAdmin::Config::Hideable
|
18
|
-
|
13
|
+
include RailsAdmin::Config::Groupable
|
14
|
+
|
19
15
|
attr_reader :name, :properties, :abstract_model
|
20
16
|
attr_accessor :defined, :order, :section
|
21
17
|
attr_reader :parent, :root
|
22
18
|
|
23
|
-
def self.inherited(klass)
|
24
|
-
klass.instance_variable_set("@view_helper", :text_field)
|
25
|
-
end
|
26
|
-
|
27
19
|
def initialize(parent, name, properties)
|
28
20
|
@parent = parent
|
29
21
|
@root = parent.root
|
@@ -34,11 +26,9 @@ module RailsAdmin
|
|
34
26
|
@order = 0
|
35
27
|
@properties = properties
|
36
28
|
@section = parent
|
37
|
-
|
38
|
-
extend RailsAdmin::Config::Fields::Groupable
|
39
29
|
end
|
40
30
|
|
41
|
-
register_instance_option
|
31
|
+
register_instance_option :css_class do
|
42
32
|
"#{self.name}_field"
|
43
33
|
end
|
44
34
|
|
@@ -50,37 +40,37 @@ module RailsAdmin
|
|
50
40
|
properties.blank?
|
51
41
|
end
|
52
42
|
|
53
|
-
register_instance_option
|
43
|
+
register_instance_option :column_width do
|
54
44
|
nil
|
55
45
|
end
|
56
46
|
|
57
|
-
register_instance_option
|
47
|
+
register_instance_option :sortable do
|
58
48
|
!virtual? || children_fields.first || false
|
59
49
|
end
|
60
50
|
|
61
|
-
register_instance_option
|
51
|
+
register_instance_option :searchable do
|
62
52
|
!virtual? || children_fields.first || false
|
63
53
|
end
|
64
54
|
|
65
|
-
register_instance_option
|
55
|
+
register_instance_option :queryable? do
|
66
56
|
!virtual?
|
67
57
|
end
|
68
58
|
|
69
|
-
register_instance_option
|
59
|
+
register_instance_option :filterable? do
|
70
60
|
!!searchable
|
71
61
|
end
|
72
62
|
|
73
|
-
register_instance_option
|
63
|
+
register_instance_option :search_operator do
|
74
64
|
@search_operator ||= RailsAdmin::Config.default_search_operator
|
75
65
|
end
|
76
66
|
|
77
67
|
# serials and dates are reversed in list, which is more natural (last modified items first).
|
78
|
-
register_instance_option
|
68
|
+
register_instance_option :sort_reverse? do
|
79
69
|
false
|
80
70
|
end
|
81
71
|
|
82
72
|
# list of columns I should search for that field [{ :column => 'table_name.column', :type => field.type }, {..}]
|
83
|
-
register_instance_option
|
73
|
+
register_instance_option :searchable_columns do
|
84
74
|
@searchable_columns ||= case self.searchable
|
85
75
|
when true
|
86
76
|
[{ :column => "#{self.abstract_model.model.table_name}.#{self.name}", :type => self.type }]
|
@@ -113,27 +103,27 @@ module RailsAdmin
|
|
113
103
|
end
|
114
104
|
end
|
115
105
|
|
116
|
-
register_instance_option
|
106
|
+
register_instance_option :formatted_value do
|
117
107
|
value.to_s
|
118
108
|
end
|
119
109
|
|
120
110
|
# output for pretty printing (show, list)
|
121
|
-
register_instance_option
|
111
|
+
register_instance_option :pretty_value do
|
122
112
|
formatted_value.presence || ' - '
|
123
113
|
end
|
124
114
|
|
125
115
|
# output for printing in export view (developers beware: no bindings[:view] and no data!)
|
126
|
-
register_instance_option
|
116
|
+
register_instance_option :export_value do
|
127
117
|
pretty_value
|
128
118
|
end
|
129
119
|
|
130
120
|
|
131
121
|
# Accessor for field's help text displayed below input field.
|
132
|
-
register_instance_option
|
122
|
+
register_instance_option :help do
|
133
123
|
(@help ||= {})[::I18n.locale] ||= (required? ? I18n.translate("admin.form.required") : I18n.translate("admin.form.optional")) + '. '
|
134
124
|
end
|
135
125
|
|
136
|
-
register_instance_option
|
126
|
+
register_instance_option :html_attributes do
|
137
127
|
{}
|
138
128
|
end
|
139
129
|
|
@@ -144,20 +134,20 @@ module RailsAdmin
|
|
144
134
|
# Accessor for field's label.
|
145
135
|
#
|
146
136
|
# @see RailsAdmin::AbstractModel.properties
|
147
|
-
register_instance_option
|
137
|
+
register_instance_option :label do
|
148
138
|
(@label ||= {})[::I18n.locale] ||= abstract_model.model.human_attribute_name name
|
149
139
|
end
|
150
140
|
|
151
141
|
# Accessor for field's maximum length per database.
|
152
142
|
#
|
153
143
|
# @see RailsAdmin::AbstractModel.properties
|
154
|
-
register_instance_option
|
144
|
+
register_instance_option :length do
|
155
145
|
@length ||= properties && properties[:length]
|
156
146
|
end
|
157
147
|
|
158
148
|
# Accessor for field's length restrictions per validations
|
159
149
|
#
|
160
|
-
register_instance_option
|
150
|
+
register_instance_option :valid_length do
|
161
151
|
@valid_length ||= abstract_model.model.validators_on(name).find{|v|
|
162
152
|
v.is_a?(ActiveModel::Validations::LengthValidator)}.try{|v| v.options} || {}
|
163
153
|
end
|
@@ -169,7 +159,7 @@ module RailsAdmin
|
|
169
159
|
# Accessor for whether this is field is mandatory.
|
170
160
|
#
|
171
161
|
# @see RailsAdmin::AbstractModel.properties
|
172
|
-
register_instance_option
|
162
|
+
register_instance_option :required? do
|
173
163
|
@required ||= !!([name] + children_fields).uniq.find do |column_name|
|
174
164
|
!!abstract_model.model.validators_on(column_name).find do |v|
|
175
165
|
v.is_a?(ActiveModel::Validations::PresenceValidator) && !v.options[:allow_nil] ||
|
@@ -181,16 +171,16 @@ module RailsAdmin
|
|
181
171
|
# Accessor for whether this is a serial field (aka. primary key, identifier).
|
182
172
|
#
|
183
173
|
# @see RailsAdmin::AbstractModel.properties
|
184
|
-
register_instance_option
|
174
|
+
register_instance_option :serial? do
|
185
175
|
properties && properties[:serial?]
|
186
176
|
end
|
187
177
|
|
188
|
-
register_instance_option
|
189
|
-
|
178
|
+
register_instance_option :view_helper do
|
179
|
+
:text_field
|
190
180
|
end
|
191
181
|
|
192
|
-
register_instance_option :read_only do
|
193
|
-
not editable
|
182
|
+
register_instance_option :read_only? do
|
183
|
+
not editable?
|
194
184
|
end
|
195
185
|
|
196
186
|
# init status in the view
|
@@ -217,12 +207,11 @@ module RailsAdmin
|
|
217
207
|
bindings[:view].render :partial => partial.to_s, :locals => {:field => self, :form => bindings[:form] }
|
218
208
|
end
|
219
209
|
|
220
|
-
def editable
|
210
|
+
def editable?
|
221
211
|
return false if @properties && @properties[:read_only]
|
222
212
|
!bindings[:object].class.active_authorizer[bindings[:view].controller.send(:_attr_accessible_role)].deny?(self.method_name)
|
223
213
|
end
|
224
214
|
|
225
|
-
|
226
215
|
# Is this an association
|
227
216
|
def association?
|
228
217
|
kind_of?(RailsAdmin::Config::Fields::Association)
|
@@ -239,7 +228,7 @@ module RailsAdmin
|
|
239
228
|
#
|
240
229
|
# @see RailsAdmin::Config::Fields::Base.register_instance_option(:required?)
|
241
230
|
def optional?
|
242
|
-
not required
|
231
|
+
not required?
|
243
232
|
end
|
244
233
|
|
245
234
|
# Inverse accessor whether this field is required.
|
@@ -3,12 +3,12 @@ require 'rails_admin/config/fields/types'
|
|
3
3
|
require 'rails_admin/config/fields/types/belongs_to_association'
|
4
4
|
|
5
5
|
RailsAdmin::Config::Fields.register_factory do |parent, properties, fields|
|
6
|
-
if association = parent.abstract_model.associations.find {|a| a[:
|
6
|
+
if association = parent.abstract_model.associations.find {|a| a[:foreign_key] == properties[:name] }
|
7
7
|
field = RailsAdmin::Config::Fields::Types.load("#{association[:polymorphic] ? :polymorphic : :belongs_to}_association").new(parent, association[:name], association)
|
8
8
|
fields << field
|
9
9
|
|
10
10
|
child_columns = []
|
11
|
-
id_column = parent.abstract_model.properties.find {|p| p[:name].to_s == association[:
|
11
|
+
id_column = parent.abstract_model.properties.find {|p| p[:name].to_s == association[:foreign_key].to_s }
|
12
12
|
child_columns << RailsAdmin::Config::Fields.default_factory.call(parent, id_column, fields)
|
13
13
|
|
14
14
|
if association[:polymorphic]
|
@@ -3,7 +3,7 @@ require 'rails_admin/config/fields/types'
|
|
3
3
|
require 'rails_admin/config/fields/types/file_upload'
|
4
4
|
|
5
5
|
RailsAdmin::Config::Fields.register_factory do |parent, properties, fields|
|
6
|
-
extensions = [nil, :file_name
|
6
|
+
extensions = [nil, :file_name]
|
7
7
|
model = parent.abstract_model.model
|
8
8
|
|
9
9
|
if defined?(::CarrierWave) && (model = parent.abstract_model.model).kind_of?(CarrierWave::Mount) && model.uploaders.include?(attachment_name = properties[:name].to_s.chomp('_file_name').to_sym)
|
@@ -2,7 +2,7 @@ require 'rails_admin/config/fields'
|
|
2
2
|
require 'rails_admin/config/fields/types/enum'
|
3
3
|
|
4
4
|
RailsAdmin::Config::Fields.register_factory do |parent, properties, fields|
|
5
|
-
if parent.abstract_model.model.instance_methods.
|
5
|
+
if parent.abstract_model.model.instance_methods.map(&:to_s).include?("#{properties[:name]}_enum")
|
6
6
|
fields << RailsAdmin::Config::Fields::Types::Enum.new(parent, properties[:name], properties)
|
7
7
|
true
|
8
8
|
else
|
@@ -8,7 +8,7 @@ require 'rails_admin/config/fields/types/password'
|
|
8
8
|
# @see RailsAdmin::Config::Fields::Types::Password.column_names
|
9
9
|
# @see RailsAdmin::Config::Fields.register_factory
|
10
10
|
RailsAdmin::Config::Fields.register_factory do |parent, properties, fields|
|
11
|
-
if
|
11
|
+
if [:password].include?(properties[:name])
|
12
12
|
fields << RailsAdmin::Config::Fields::Types::Password.new(parent, properties[:name], properties)
|
13
13
|
true
|
14
14
|
else
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'rails_admin/config/fields'
|
2
|
+
require 'rails_admin/config/fields/types/serialized'
|
3
|
+
|
4
|
+
# Register a custom field factory for properties named as password. More property
|
5
|
+
# names can be registered in RailsAdmin::Config::Fields::Password.column_names
|
6
|
+
# array.
|
7
|
+
#
|
8
|
+
# @see RailsAdmin::Config::Fields::Types::Password.column_names
|
9
|
+
# @see RailsAdmin::Config::Fields.register_factory
|
10
|
+
RailsAdmin::Config::Fields.register_factory do |parent, properties, fields|
|
11
|
+
if parent.abstract_model.model.serialized_attributes.keys.include?(properties[:name].to_s)
|
12
|
+
fields << RailsAdmin::Config::Fields::Types::Serialized.new(parent, properties[:name], properties)
|
13
|
+
true
|
14
|
+
else
|
15
|
+
false
|
16
|
+
end
|
17
|
+
end
|
@@ -18,6 +18,7 @@ require 'rails_admin/config/fields/types/polymorphic_association'
|
|
18
18
|
require 'rails_admin/config/fields/types/string'
|
19
19
|
require 'rails_admin/config/fields/types/hidden'
|
20
20
|
require 'rails_admin/config/fields/types/text'
|
21
|
+
require 'rails_admin/config/fields/types/serialized'
|
21
22
|
require 'rails_admin/config/fields/types/time'
|
22
23
|
require 'rails_admin/config/fields/types/timestamp'
|
23
24
|
require 'rails_admin/config/fields/types/color'
|
@@ -5,10 +5,8 @@ module RailsAdmin
|
|
5
5
|
module Fields
|
6
6
|
module Types
|
7
7
|
class BelongsToAssociation < RailsAdmin::Config::Fields::Association
|
8
|
-
# Register field type for the type loader
|
9
8
|
RailsAdmin::Config::Fields::Types::register(self)
|
10
9
|
|
11
|
-
# Accessor for field's formatted value
|
12
10
|
register_instance_option :formatted_value do
|
13
11
|
(o = value) && o.send(associated_model_config.object_label_method)
|
14
12
|
end
|
@@ -25,16 +23,16 @@ module RailsAdmin
|
|
25
23
|
nested_form ? :form_nested_one : :form_filtering_select
|
26
24
|
end
|
27
25
|
|
28
|
-
def associated_model_config
|
29
|
-
@config ||= RailsAdmin.config(association[:parent_model_proc].call)
|
30
|
-
end
|
31
|
-
|
32
26
|
def selected_id
|
33
|
-
bindings[:object].send(
|
27
|
+
bindings[:object].send(foreign_key)
|
34
28
|
end
|
35
29
|
|
36
30
|
def method_name
|
37
|
-
nested_form ? "#{
|
31
|
+
nested_form ? "#{self.name}_attributes" : association[:foreign_key]
|
32
|
+
end
|
33
|
+
|
34
|
+
def multiple?
|
35
|
+
false
|
38
36
|
end
|
39
37
|
end
|
40
38
|
end
|
@@ -7,8 +7,10 @@ module RailsAdmin
|
|
7
7
|
class Boolean < RailsAdmin::Config::Fields::Base
|
8
8
|
# Register field type for the type loader
|
9
9
|
RailsAdmin::Config::Fields::Types::register(self)
|
10
|
-
|
11
|
-
|
10
|
+
|
11
|
+
register_instance_option :view_helper do
|
12
|
+
:check_box
|
13
|
+
end
|
12
14
|
|
13
15
|
register_instance_option(:formatted_value) do
|
14
16
|
bindings[:view].image_tag("rails_admin/#{value ? 'bullet_black' : 'bullet_white'}.png", :alt => value.to_s)
|
@@ -17,7 +17,7 @@ module RailsAdmin
|
|
17
17
|
(o = value) && o.send(associated_model_config.object_label_method)
|
18
18
|
end
|
19
19
|
|
20
|
-
def editable
|
20
|
+
def editable?
|
21
21
|
(nested_form || abstract_model.model.new.respond_to?("#{self.name}_id=")) && super
|
22
22
|
end
|
23
23
|
|
@@ -28,6 +28,10 @@ module RailsAdmin
|
|
28
28
|
def method_name
|
29
29
|
nested_form ? "#{self.name}_attributes" : "#{self.name}_id"
|
30
30
|
end
|
31
|
+
|
32
|
+
def multiple?
|
33
|
+
false
|
34
|
+
end
|
31
35
|
end
|
32
36
|
end
|
33
37
|
end
|
@@ -7,8 +7,10 @@ module RailsAdmin
|
|
7
7
|
class Hidden < RailsAdmin::Config::Fields::Base
|
8
8
|
RailsAdmin::Config::Fields::Types::register(self)
|
9
9
|
|
10
|
-
|
11
|
-
|
10
|
+
register_instance_option :view_helper do
|
11
|
+
:hidden_field
|
12
|
+
end
|
13
|
+
|
12
14
|
register_instance_option(:partial) do
|
13
15
|
:form_field
|
14
16
|
end
|
@@ -8,7 +8,9 @@ module RailsAdmin
|
|
8
8
|
# Register field type for the type loader
|
9
9
|
RailsAdmin::Config::Fields::Types::register(self)
|
10
10
|
|
11
|
-
|
11
|
+
register_instance_option :view_helper do
|
12
|
+
:number_field
|
13
|
+
end
|
12
14
|
|
13
15
|
register_instance_option(:sort_reverse?) do
|
14
16
|
serial?
|
@@ -8,11 +8,8 @@ module RailsAdmin
|
|
8
8
|
# Register field type for the type loader
|
9
9
|
RailsAdmin::Config::Fields::Types::register(self)
|
10
10
|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
def self.column_names
|
15
|
-
@column_names
|
11
|
+
register_instance_option :view_helper do
|
12
|
+
:password_field
|
16
13
|
end
|
17
14
|
|
18
15
|
def parse_input(params)
|
@@ -46,7 +46,7 @@ module RailsAdmin
|
|
46
46
|
end
|
47
47
|
|
48
48
|
def associated_model_config
|
49
|
-
@associated_model_config ||= association[:
|
49
|
+
@associated_model_config ||= association[:model_proc].call.map{|type| RailsAdmin.config(type) }.select{|config| !config.excluded? }
|
50
50
|
end
|
51
51
|
|
52
52
|
def polymorphic_type_collection
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'rails_admin/config/fields/types/text'
|
2
|
+
|
3
|
+
module RailsAdmin
|
4
|
+
module Config
|
5
|
+
module Fields
|
6
|
+
module Types
|
7
|
+
class Serialized < RailsAdmin::Config::Fields::Types::Text
|
8
|
+
# Register field type for the type loader
|
9
|
+
RailsAdmin::Config::Fields::Types::register(self)
|
10
|
+
|
11
|
+
register_instance_option :formatted_value do
|
12
|
+
YAML.dump value
|
13
|
+
end
|
14
|
+
|
15
|
+
def parse_input(params)
|
16
|
+
params[name] = (params[name].blank? ? nil : YAML.load(params[name]))
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -7,9 +7,7 @@ module RailsAdmin
|
|
7
7
|
class Text < RailsAdmin::Config::Fields::Base
|
8
8
|
# Register field type for the type loader
|
9
9
|
RailsAdmin::Config::Fields::Types::register(self)
|
10
|
-
|
11
|
-
@view_helper = :text_area
|
12
|
-
|
10
|
+
|
13
11
|
# CKEditor is disabled by default
|
14
12
|
register_instance_option(:ckeditor) do
|
15
13
|
false
|
@@ -8,7 +8,7 @@ module RailsAdmin
|
|
8
8
|
mattr_reader :default_factory
|
9
9
|
@@default_factory = lambda do |parent, properties, fields|
|
10
10
|
# If it's an association
|
11
|
-
if properties.has_key?(:
|
11
|
+
if properties.has_key?(:model_proc)
|
12
12
|
association = parent.abstract_model.associations.find {|a| a[:name].to_s == properties[:name].to_s}
|
13
13
|
field = RailsAdmin::Config::Fields::Types.load("#{association[:polymorphic] ? :polymorphic : properties[:type]}_association").new(parent, properties[:name], association)
|
14
14
|
else
|
@@ -85,3 +85,4 @@ require 'rails_admin/config/fields/factories/paperclip'
|
|
85
85
|
require 'rails_admin/config/fields/factories/dragonfly'
|
86
86
|
require 'rails_admin/config/fields/factories/carrierwave'
|
87
87
|
require 'rails_admin/config/fields/factories/belongs_to_association'
|
88
|
+
require 'rails_admin/config/fields/factories/serialized'
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'rails_admin/config/fields/group'
|
2
|
+
|
3
|
+
module RailsAdmin
|
4
|
+
module Config
|
5
|
+
module Groupable
|
6
|
+
# Register a group instance variable and accessor methods for objects
|
7
|
+
# extending the has groups mixin. The extended objects must implement
|
8
|
+
# reader for a parent object which includes this module.
|
9
|
+
#
|
10
|
+
# @see RailsAdmin::Config::HasGroups.group
|
11
|
+
# @see RailsAdmin::Config::Fields::Group
|
12
|
+
def group(name = nil)
|
13
|
+
@group = parent.group(name) unless name.nil? # setter
|
14
|
+
@group ||= parent.group(:default) # getter
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -126,7 +126,7 @@ module RailsAdmin
|
|
126
126
|
# parent is RailsAdmin::Config::Model, recursion is on Section's classes
|
127
127
|
@_ro_fields ||= parent.send(self.class.superclass.to_s.underscore.split('/').last)._fields(true).freeze
|
128
128
|
else # recursion tail
|
129
|
-
@_ro_fields = @_fields = RailsAdmin::Config::Fields.factory(self)
|
129
|
+
@_ro_fields = @_fields = RailsAdmin::Config::Fields.factory(self)
|
130
130
|
end
|
131
131
|
readonly ? @_ro_fields : (@_fields ||= @_ro_fields.map(&:clone))
|
132
132
|
end
|
@@ -19,7 +19,7 @@ class RailsAdmin::History < ActiveRecord::Base
|
|
19
19
|
end
|
20
20
|
|
21
21
|
model.associations.each do |t|
|
22
|
-
assoc = changed_property_list.index(t[:
|
22
|
+
assoc = changed_property_list.index(t[:foreign_key].to_param)
|
23
23
|
changed_property_list[assoc] = "associated #{t[:pretty_name]}" if assoc
|
24
24
|
end
|
25
25
|
|
data/lib/rails_admin/version.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
1
3
|
require 'spec_helper'
|
2
4
|
|
3
5
|
describe RailsAdmin::MainController do
|
@@ -107,8 +109,72 @@ describe RailsAdmin::MainController do
|
|
107
109
|
controller.list_entries.length.should == @players.size
|
108
110
|
|
109
111
|
end
|
112
|
+
end
|
110
113
|
|
114
|
+
describe "index" do
|
115
|
+
it "uses source association's primary key with :compact, not target model's default primary key" do
|
116
|
+
class TeamWithNumberedPlayers < ActiveRecord::Base
|
117
|
+
self.table_name = 'teams'
|
118
|
+
has_many :numbered_players, :class_name => 'Player', :primary_key => :number, :foreign_key => 'team_id'
|
119
|
+
end
|
120
|
+
FactoryGirl.create :team
|
121
|
+
TeamWithNumberedPlayers.first.numbered_players = [FactoryGirl.create(:player, :number => 123)]
|
122
|
+
returned = get :index, {:model_name => 'player', :source_object_id => Team.first.id, :source_abstract_model => 'team_with_numbered_players', :associated_collection => 'numbered_players', :current_action => :create, :compact => true, :format => :json}
|
123
|
+
returned.body.should =~ /\"id\"\:123/
|
124
|
+
end
|
125
|
+
end
|
126
|
+
|
127
|
+
describe "sanitize_params_for!" do
|
128
|
+
it 'sanitize params recursively in nested forms' do
|
129
|
+
RailsAdmin.config Comment do
|
130
|
+
configure :created_at do
|
131
|
+
show
|
132
|
+
end
|
133
|
+
end
|
134
|
+
|
135
|
+
RailsAdmin.config NestedFieldTest do
|
136
|
+
configure :created_at do
|
137
|
+
show
|
138
|
+
end
|
139
|
+
end
|
111
140
|
|
112
|
-
|
141
|
+
I18n.locale = :fr
|
142
|
+
controller.params = {
|
143
|
+
"field_test"=>{
|
144
|
+
:"datetime_field"=>"1 août 2010",
|
145
|
+
"nested_field_tests_attributes"=>{
|
146
|
+
"new_1330520162002"=>{
|
147
|
+
"comment_attributes"=>{
|
148
|
+
:"created_at"=>"2 août 2010"
|
149
|
+
},
|
150
|
+
:"created_at"=>"3 août 2010"
|
151
|
+
}
|
152
|
+
},
|
153
|
+
"comment_attributes"=>{
|
154
|
+
:"created_at"=>"4 août 2010"
|
155
|
+
}
|
156
|
+
}
|
157
|
+
}
|
158
|
+
|
159
|
+
controller.send(:sanitize_params_for!, :create, RailsAdmin.config(FieldTest), controller.params['field_test'])
|
160
|
+
|
161
|
+
controller.params.should == {
|
162
|
+
"field_test"=>{
|
163
|
+
:datetime_field=>'Sun, 01 Aug 2010 00:00:00 UTC +00:00',
|
164
|
+
"nested_field_tests_attributes"=>{
|
165
|
+
"new_1330520162002"=>{
|
166
|
+
"comment_attributes"=>{
|
167
|
+
:created_at=>'Mon, 02 Aug 2010 00:00:00 UTC +00:00'
|
168
|
+
},
|
169
|
+
:created_at=>'Tue, 03 Aug 2010 00:00:00 UTC +00:00'
|
170
|
+
}
|
171
|
+
},
|
172
|
+
"comment_attributes"=>{
|
173
|
+
:created_at=>'Wed, 04 Aug 2010 00:00:00 UTC +00:00'
|
174
|
+
}
|
175
|
+
}
|
176
|
+
}
|
177
|
+
I18n.locale = :en
|
178
|
+
end
|
113
179
|
end
|
114
180
|
end
|
@@ -246,7 +246,8 @@ describe "RailsAdmin Basic List" do
|
|
246
246
|
end
|
247
247
|
|
248
248
|
visit index_path(:model_name => "player")
|
249
|
-
should have_content(
|
249
|
+
should have_content(%{$.filters.append("Name", "name", "string", null, null, "", 1);})
|
250
|
+
should have_content(%{$.filters.append("Team", "team", "belongs_to_association", null, null, "", 2);})
|
250
251
|
end
|
251
252
|
end
|
252
253
|
|