obitum-rails_admin 0.0.1 → 0.0.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.
- data/Gemfile +1 -8
- data/README.md +6 -2
- data/app/assets/javascripts/rails_admin/custom/ui.js +5 -5
- data/app/assets/javascripts/rails_admin/jquery-ui-1.8.16.custom.js +4727 -4727
- data/app/assets/javascripts/rails_admin/jquery.colorpicker.js +484 -484
- data/app/assets/javascripts/rails_admin/jquery.pjax.js +250 -85
- data/app/assets/javascripts/rails_admin/jquery.ui.timepicker.js +1371 -1219
- data/app/assets/javascripts/rails_admin/ra.filter-box.js +30 -30
- data/app/assets/javascripts/rails_admin/ra.filtering-select.js +11 -11
- data/app/assets/javascripts/rails_admin/ra.nested-form-hooks.coffee +40 -0
- data/app/assets/javascripts/rails_admin/ra.remote-form.js +41 -39
- data/app/assets/javascripts/rails_admin/rails_admin.js.erb +4 -3
- data/app/assets/javascripts/rails_admin/themes/default/ui.js +6 -6
- data/app/assets/javascripts/rails_admin/ui.js.coffee +44 -16
- data/app/assets/stylesheets/rails_admin/base/README +2 -2
- data/app/assets/stylesheets/rails_admin/base/theming.css.scss +226 -113
- data/app/assets/stylesheets/rails_admin/custom/mixins.css.scss +1 -1
- data/app/assets/stylesheets/rails_admin/custom/theming.css.scss +2 -2
- data/app/assets/stylesheets/rails_admin/custom/variables.css.scss +3 -3
- data/app/assets/stylesheets/rails_admin/imports.css.scss.erb +36 -1
- data/app/assets/stylesheets/rails_admin/jquery.ui.timepicker.css.scss +16 -0
- data/app/assets/stylesheets/rails_admin/ra.filtering-multiselect.css.scss +2 -2
- data/app/assets/stylesheets/rails_admin/themes/default/mixins.css.scss +1 -1
- data/app/assets/stylesheets/rails_admin/themes/default/theming.css.scss +2 -2
- data/app/assets/stylesheets/rails_admin/themes/default/variables.css.scss +3 -3
- data/app/controllers/rails_admin/application_controller.rb +13 -18
- data/app/controllers/rails_admin/main_controller.rb +15 -16
- data/app/helpers/rails_admin/application_helper.rb +67 -41
- data/app/helpers/rails_admin/form_builder.rb +31 -29
- data/app/helpers/rails_admin/main_helper.rb +4 -4
- data/app/views/layouts/rails_admin/_secondary_navigation.html.haml +12 -11
- data/app/views/layouts/rails_admin/application.html.haml +29 -29
- data/app/views/rails_admin/main/_dashboard_history.html.haml +1 -1
- data/app/views/rails_admin/main/_delete_notice.html.haml +4 -5
- data/app/views/rails_admin/main/_form_colorpicker.html.haml +2 -1
- data/app/views/rails_admin/main/_form_datetime.html.haml +1 -1
- data/app/views/rails_admin/main/_form_enumeration.html.haml +1 -1
- data/app/views/rails_admin/main/_form_field.html.haml +1 -1
- data/app/views/rails_admin/main/_form_file_upload.html.haml +3 -2
- data/app/views/rails_admin/main/_form_filtering_multiselect.html.haml +6 -4
- data/app/views/rails_admin/main/_form_filtering_select.html.haml +6 -5
- data/app/views/rails_admin/main/_form_nested_many.html.haml +41 -6
- data/app/views/rails_admin/main/_form_nested_one.html.haml +34 -5
- data/app/views/rails_admin/main/_form_text.html.haml +3 -3
- data/app/views/rails_admin/main/_submit_buttons.html.haml +6 -4
- data/app/views/rails_admin/main/bulk_delete.html.haml +7 -3
- data/app/views/rails_admin/main/dashboard.html.haml +4 -4
- data/app/views/rails_admin/main/delete.html.haml +7 -3
- data/app/views/rails_admin/main/edit.html.haml +1 -1
- data/app/views/rails_admin/main/export.html.haml +57 -53
- data/app/views/rails_admin/main/history.html.haml +8 -8
- data/app/views/rails_admin/main/index.html.haml +22 -21
- data/app/views/rails_admin/main/new.html.haml +1 -1
- data/app/views/rails_admin/main/show.html.haml +2 -2
- data/config/initializers/active_record_extensions.rb +2 -2
- data/config/initializers/haml.rb +0 -1
- data/config/locales/rails_admin.en.yml +5 -5
- data/lib/generators/rails_admin/templates/initializer.erb +7 -7
- data/lib/rails_admin/abstract_model.rb +36 -53
- data/lib/rails_admin/adapters/active_record/abstract_object.rb +32 -0
- data/lib/rails_admin/adapters/active_record.rb +56 -137
- data/lib/rails_admin/config/actions/base.rb +40 -28
- data/lib/rails_admin/config/actions/bulk_delete.rb +10 -11
- data/lib/rails_admin/config/actions/dashboard.rb +9 -5
- data/lib/rails_admin/config/actions/delete.rb +12 -9
- data/lib/rails_admin/config/actions/edit.rb +13 -9
- data/lib/rails_admin/config/actions/export.rb +9 -6
- data/lib/rails_admin/config/actions/history_index.rb +9 -5
- data/lib/rails_admin/config/actions/history_show.rb +9 -5
- data/lib/rails_admin/config/actions/index.rb +23 -13
- data/lib/rails_admin/config/actions/new.rb +14 -10
- data/lib/rails_admin/config/actions/show.rb +10 -5
- data/lib/rails_admin/config/actions/show_in_app.rb +9 -4
- data/lib/rails_admin/config/actions.rb +16 -16
- data/lib/rails_admin/config/configurable.rb +92 -0
- data/lib/rails_admin/config/fields/association.rb +6 -23
- data/lib/rails_admin/config/fields/base.rb +58 -40
- data/lib/rails_admin/config/fields/factories/belongs_to_association.rb +26 -0
- data/lib/rails_admin/config/fields/factories/carrierwave.rb +21 -2
- data/lib/rails_admin/config/fields/factories/devise.rb +9 -12
- data/lib/rails_admin/config/fields/factories/dragonfly.rb +13 -7
- data/lib/rails_admin/config/fields/factories/paperclip.rb +14 -15
- data/lib/rails_admin/config/fields/group.rb +16 -3
- data/lib/rails_admin/config/fields/types/belongs_to_association.rb +2 -2
- data/lib/rails_admin/config/fields/types/carrierwave.rb +0 -9
- data/lib/rails_admin/config/fields/types/color.rb +3 -3
- data/lib/rails_admin/config/fields/types/dragonfly.rb +1 -19
- data/lib/rails_admin/config/fields/types/file_upload.rb +7 -11
- data/lib/rails_admin/config/fields/types/has_many_association.rb +1 -6
- data/lib/rails_admin/config/fields/types/has_one_association.rb +4 -4
- data/lib/rails_admin/config/fields/types/paperclip.rb +0 -18
- data/lib/rails_admin/config/fields/types/password.rb +2 -2
- data/lib/rails_admin/config/fields/types/polymorphic_association.rb +2 -2
- data/lib/rails_admin/config/fields/types/text.rb +2 -2
- data/lib/rails_admin/config/fields.rb +7 -17
- data/lib/rails_admin/config/has_fields.rb +9 -9
- data/lib/rails_admin/config/has_groups.rb +2 -2
- data/lib/rails_admin/config/hideable.rb +2 -2
- data/lib/rails_admin/config/model.rb +23 -17
- data/lib/rails_admin/config/proxyable/proxy.rb +43 -0
- data/lib/rails_admin/config/proxyable.rb +12 -0
- data/lib/rails_admin/config/sections/base.rb +14 -4
- data/lib/rails_admin/config.rb +38 -9
- data/lib/rails_admin/extension.rb +1 -1
- data/lib/rails_admin/extensions/history/auditing_adapter.rb +6 -6
- data/lib/rails_admin/extensions/history/history.rb +2 -1
- data/lib/rails_admin/extensions/paper_trail/auditing_adapter.rb +13 -13
- data/lib/rails_admin/support/csv_converter.rb +6 -6
- data/lib/rails_admin/version.rb +1 -1
- data/lib/rails_admin.rb +0 -5
- data/spec/controllers/main_controller_spec.rb +7 -7
- data/spec/dummy_app/Gemfile +10 -7
- data/spec/dummy_app/Rakefile +1 -1
- data/spec/dummy_app/app/assets/images/rails.png +0 -0
- data/spec/dummy_app/app/assets/javascripts/application.js +15 -0
- data/spec/dummy_app/app/assets/stylesheets/application.css +13 -0
- data/spec/dummy_app/app/controllers/players_controller.rb +1 -1
- data/spec/dummy_app/app/models/cms/basic_page.rb +1 -1
- data/spec/dummy_app/app/models/division.rb +5 -1
- data/spec/dummy_app/app/models/field_test.rb +4 -4
- data/spec/dummy_app/app/models/nested_field_test.rb +3 -0
- data/spec/dummy_app/app/models/player.rb +3 -3
- data/spec/dummy_app/app/views/layouts/application.html.erb +3 -2
- data/spec/dummy_app/app/views/players/show.html.haml +1 -1
- data/spec/dummy_app/config/application.rb +20 -5
- data/spec/dummy_app/config/database.yml +5 -2
- data/spec/dummy_app/config/environments/development.rb +11 -1
- data/spec/dummy_app/config/environments/production.rb +19 -3
- data/spec/dummy_app/config/environments/test.rb +5 -7
- data/spec/dummy_app/config/initializers/devise.rb +6 -0
- data/spec/dummy_app/config/initializers/inflections.rb +5 -0
- data/spec/dummy_app/config/initializers/secret_token.rb +1 -1
- data/spec/dummy_app/{foo/test/dummy/config → config}/initializers/wrap_parameters.rb +1 -1
- data/spec/dummy_app/config/routes.rb +1 -1
- data/spec/dummy_app/db/migrate/00000000000006_devise_create_users.rb +35 -5
- data/spec/dummy_app/db/migrate/20120118122004_add_categories.rb +1 -1
- data/spec/dummy_app/doc/README_FOR_APP +2 -0
- data/spec/dummy_app/public/404.html +26 -0
- data/spec/dummy_app/{foo/test/dummy/public → public}/422.html +0 -0
- data/spec/dummy_app/{foo/test/dummy/public → public}/500.html +0 -1
- data/spec/dummy_app/public/favicon.ico +0 -0
- data/spec/dummy_app/public/robots.txt +5 -0
- data/spec/helpers/application_helper_spec.rb +107 -42
- data/spec/{requests → integration}/authorization/cancan_spec.rb +4 -5
- data/spec/{requests → integration}/basic/bulk_action/rails_admin_basic_bulk_action_spec.rb +0 -0
- data/spec/{requests → integration}/basic/bulk_destroy/rails_admin_basic_bulk_destroy_spec.rb +3 -16
- data/spec/{requests → integration}/basic/create/rails_admin_basic_create_spec.rb +0 -2
- data/spec/{requests → integration}/basic/create/rails_admin_namespaced_model_create_spec.rb +0 -16
- data/spec/{requests → integration}/basic/delete/rails_admin_basic_delete_spec.rb +0 -0
- data/spec/{requests → integration}/basic/destroy/rails_admin_basic_destroy_spec.rb +0 -0
- data/spec/{requests → integration}/basic/edit/rails_admin_basic_edit_spec.rb +2 -2
- data/spec/{requests → integration}/basic/export/rails_admin_basic_export_spec.rb +1 -1
- data/spec/{requests → integration}/basic/list/rails_admin_basic_list_spec.rb +12 -38
- data/spec/{requests → integration}/basic/new/rails_admin_basic_new_spec.rb +0 -0
- data/spec/{requests → integration}/basic/new/rails_admin_namespaced_model_new_spec.rb +0 -0
- data/spec/{requests → integration}/basic/show/rails_admin_basic_show_spec.rb +1 -2
- data/spec/{requests → integration}/basic/update/rails_admin_basic_update_spec.rb +2 -2
- data/spec/{requests → integration}/config/edit/rails_admin_config_edit_spec.rb +65 -24
- data/spec/{requests → integration}/config/list/rails_admin_config_list_spec.rb +2 -2
- data/spec/{requests → integration}/config/show/rails_admin_config_show_spec.rb +20 -0
- data/spec/{requests → integration}/history/rails_admin_history_spec.rb +3 -3
- data/spec/{requests → integration}/rails_admin_spec.rb +8 -41
- data/spec/{requests → integration}/relation_spec.rb +0 -0
- data/spec/spec_helper.rb +13 -31
- data/spec/{lib → unit/adapters/active_record}/abstract_object_spec.rb +17 -5
- data/spec/unit/adapters/active_record_spec.rb +53 -0
- data/spec/{requests/actions.rb → unit/config/actions_spec.rb} +47 -31
- data/spec/unit/config/fields/base_spec.rb +291 -0
- data/spec/unit/config/model_spec.rb +75 -0
- data/spec/unit/config/sections_spec.rb +123 -0
- data/spec/{lib/rails_admin_spec.rb → unit/config_spec.rb} +65 -93
- metadata +127 -223
- data/app/assets/javascripts/rails_admin/jquery_nested_form.js +0 -58
- data/app/views/layouts/rails_admin/_navigation.html.haml +0 -17
- data/lib/rails_admin/abstract_object.rb +0 -28
- data/lib/rails_admin/config/base.rb +0 -111
- data/lib/rails_admin/config/proxy.rb +0 -40
- data/lib/rails_admin/generic_support.rb +0 -18
- data/spec/dummy_app/config/initializers/quiet_assets.rb +0 -10
- data/spec/dummy_app/foo/Gemfile +0 -17
- data/spec/dummy_app/foo/MIT-LICENSE +0 -20
- data/spec/dummy_app/foo/README.rdoc +0 -3
- data/spec/dummy_app/foo/Rakefile +0 -39
- data/spec/dummy_app/foo/app/assets/javascripts/foo/application.js +0 -9
- data/spec/dummy_app/foo/app/assets/stylesheets/foo/application.css +0 -7
- data/spec/dummy_app/foo/app/controllers/foo/application_controller.rb +0 -4
- data/spec/dummy_app/foo/app/helpers/foo/application_helper.rb +0 -4
- data/spec/dummy_app/foo/app/models/foo/bar.rb +0 -4
- data/spec/dummy_app/foo/app/views/layouts/foo/application.html.erb +0 -14
- data/spec/dummy_app/foo/config/routes.rb +0 -2
- data/spec/dummy_app/foo/foo.gemspec +0 -23
- data/spec/dummy_app/foo/lib/foo/engine.rb +0 -5
- data/spec/dummy_app/foo/lib/foo/version.rb +0 -3
- data/spec/dummy_app/foo/lib/foo.rb +0 -4
- data/spec/dummy_app/foo/lib/tasks/foo_tasks.rake +0 -4
- data/spec/dummy_app/foo/script/rails +0 -6
- data/spec/dummy_app/foo/test/dummy/Rakefile +0 -7
- data/spec/dummy_app/foo/test/dummy/app/assets/javascripts/application.js +0 -9
- data/spec/dummy_app/foo/test/dummy/app/assets/stylesheets/application.css +0 -7
- data/spec/dummy_app/foo/test/dummy/app/controllers/application_controller.rb +0 -3
- data/spec/dummy_app/foo/test/dummy/app/helpers/application_helper.rb +0 -2
- data/spec/dummy_app/foo/test/dummy/app/views/layouts/application.html.erb +0 -14
- data/spec/dummy_app/foo/test/dummy/config/application.rb +0 -45
- data/spec/dummy_app/foo/test/dummy/config/boot.rb +0 -10
- data/spec/dummy_app/foo/test/dummy/config/database.yml +0 -25
- data/spec/dummy_app/foo/test/dummy/config/environment.rb +0 -5
- data/spec/dummy_app/foo/test/dummy/config/environments/development.rb +0 -30
- data/spec/dummy_app/foo/test/dummy/config/environments/production.rb +0 -60
- data/spec/dummy_app/foo/test/dummy/config/environments/test.rb +0 -39
- data/spec/dummy_app/foo/test/dummy/config/initializers/backtrace_silencers.rb +0 -7
- data/spec/dummy_app/foo/test/dummy/config/initializers/inflections.rb +0 -10
- data/spec/dummy_app/foo/test/dummy/config/initializers/mime_types.rb +0 -5
- data/spec/dummy_app/foo/test/dummy/config/initializers/secret_token.rb +0 -7
- data/spec/dummy_app/foo/test/dummy/config/initializers/session_store.rb +0 -8
- data/spec/dummy_app/foo/test/dummy/config/locales/en.yml +0 -5
- data/spec/dummy_app/foo/test/dummy/config/routes.rb +0 -4
- data/spec/dummy_app/foo/test/dummy/config.ru +0 -4
- data/spec/dummy_app/foo/test/dummy/db/schema.rb +0 -21
- data/spec/dummy_app/foo/test/dummy/public/404.html +0 -26
- data/spec/dummy_app/foo/test/dummy/public/favicon.ico +0 -0
- data/spec/dummy_app/foo/test/dummy/script/rails +0 -6
- data/spec/dummy_app/foo/test/fixtures/foo/bars.yml +0 -11
- data/spec/dummy_app/foo/test/foo_test.rb +0 -7
- data/spec/dummy_app/foo/test/integration/navigation_test.rb +0 -10
- data/spec/dummy_app/foo/test/test_helper.rb +0 -10
- data/spec/dummy_app/foo/test/unit/foo/bar_test.rb +0 -9
- data/spec/generator_helpers.rb +0 -30
- data/spec/generators/install_generator_spec.rb +0 -85
- data/spec/generators/uninstall_generator_spec.rb +0 -35
- data/spec/lib/custom_field.rb +0 -7
- data/spec/requests/config/navigation/rails_admin_config_navigation_spec.rb +0 -107
- data/spec/requests/config/rails_admin_config_spec.rb +0 -227
@@ -1,44 +1,51 @@
|
|
1
1
|
require 'active_support/core_ext/string/inflections'
|
2
|
-
require '
|
2
|
+
require 'active_model/mass_assignment_security'
|
3
|
+
|
4
|
+
require 'rails_admin/config/proxyable'
|
5
|
+
require 'rails_admin/config/configurable'
|
3
6
|
require 'rails_admin/config/hideable'
|
4
7
|
require 'rails_admin/config/fields'
|
5
8
|
require 'rails_admin/config/fields/association'
|
6
9
|
require 'rails_admin/config/fields/groupable'
|
7
10
|
|
8
|
-
|
9
11
|
module RailsAdmin
|
10
12
|
module Config
|
11
13
|
module Fields
|
12
|
-
class Base
|
13
|
-
|
14
|
+
class Base
|
15
|
+
include RailsAdmin::Config::Proxyable
|
16
|
+
include RailsAdmin::Config::Configurable
|
17
|
+
include RailsAdmin::Config::Hideable
|
18
|
+
|
19
|
+
attr_reader :name, :properties, :abstract_model
|
14
20
|
attr_accessor :defined, :order, :section
|
21
|
+
attr_reader :parent, :root
|
15
22
|
|
16
23
|
def self.inherited(klass)
|
17
24
|
klass.instance_variable_set("@view_helper", :text_field)
|
18
25
|
end
|
19
26
|
|
20
|
-
include RailsAdmin::Config::Hideable
|
21
|
-
|
22
27
|
def initialize(parent, name, properties)
|
23
|
-
|
24
|
-
|
28
|
+
@parent = parent
|
29
|
+
@root = parent.root
|
30
|
+
|
31
|
+
@abstract_model = parent.abstract_model
|
25
32
|
@defined = false
|
26
33
|
@name = name
|
27
34
|
@order = 0
|
28
35
|
@properties = properties
|
29
36
|
@section = parent
|
30
|
-
|
37
|
+
|
31
38
|
extend RailsAdmin::Config::Fields::Groupable
|
32
39
|
end
|
33
40
|
|
34
41
|
register_instance_option(:css_class) do
|
35
42
|
"#{self.name}_field"
|
36
43
|
end
|
37
|
-
|
44
|
+
|
38
45
|
def type_css_class
|
39
46
|
"#{type}_type"
|
40
47
|
end
|
41
|
-
|
48
|
+
|
42
49
|
def virtual?
|
43
50
|
properties.blank?
|
44
51
|
end
|
@@ -46,17 +53,17 @@ module RailsAdmin
|
|
46
53
|
register_instance_option(:column_width) do
|
47
54
|
nil
|
48
55
|
end
|
49
|
-
|
56
|
+
|
50
57
|
register_instance_option(:sortable) do
|
51
|
-
!virtual?
|
58
|
+
!virtual? || children_fields.first || false
|
52
59
|
end
|
53
60
|
|
54
61
|
register_instance_option(:searchable) do
|
55
|
-
!virtual?
|
62
|
+
!virtual? || children_fields.first || false
|
56
63
|
end
|
57
64
|
|
58
65
|
register_instance_option(:queryable?) do
|
59
|
-
|
66
|
+
!virtual?
|
60
67
|
end
|
61
68
|
|
62
69
|
register_instance_option(:filterable?) do
|
@@ -88,7 +95,7 @@ module RailsAdmin
|
|
88
95
|
table_name, column = f.split '.'
|
89
96
|
type = nil
|
90
97
|
elsif f.is_a?(Hash) # <Model|table_name> => <attribute|column>
|
91
|
-
am = AbstractModel.new(f.keys.first
|
98
|
+
am = f.keys.first.is_a?(Class) && AbstractModel.new(f.keys.first)
|
92
99
|
table_name = am && am.model.table_name || f.keys.first
|
93
100
|
column = f.values.first
|
94
101
|
property = am && am.properties.find{ |p| p[:name] == f.values.first.to_sym }
|
@@ -129,7 +136,7 @@ module RailsAdmin
|
|
129
136
|
register_instance_option(:html_attributes) do
|
130
137
|
{}
|
131
138
|
end
|
132
|
-
|
139
|
+
|
133
140
|
register_instance_option :default_value do
|
134
141
|
nil
|
135
142
|
end
|
@@ -155,7 +162,7 @@ module RailsAdmin
|
|
155
162
|
v.is_a?(ActiveModel::Validations::LengthValidator)}.try{|v| v.options} || {}
|
156
163
|
end
|
157
164
|
|
158
|
-
register_instance_option
|
165
|
+
register_instance_option :partial do
|
159
166
|
:form_field
|
160
167
|
end
|
161
168
|
|
@@ -163,9 +170,11 @@ module RailsAdmin
|
|
163
170
|
#
|
164
171
|
# @see RailsAdmin::AbstractModel.properties
|
165
172
|
register_instance_option(:required?) do
|
166
|
-
@required ||= !!
|
167
|
-
|
168
|
-
|
173
|
+
@required ||= !!([name] + children_fields).uniq.find do |column_name|
|
174
|
+
!!abstract_model.model.validators_on(column_name).find do |v|
|
175
|
+
v.is_a?(ActiveModel::Validations::PresenceValidator) && !v.options[:allow_nil] ||
|
176
|
+
v.is_a?(ActiveModel::Validations::NumericalityValidator) && !v.options[:allow_nil]
|
177
|
+
end
|
169
178
|
end
|
170
179
|
end
|
171
180
|
|
@@ -179,11 +188,16 @@ module RailsAdmin
|
|
179
188
|
register_instance_option(:view_helper) do
|
180
189
|
@view_helper ||= self.class.instance_variable_get("@view_helper")
|
181
190
|
end
|
182
|
-
|
191
|
+
|
183
192
|
register_instance_option :read_only do
|
184
193
|
not editable
|
185
194
|
end
|
186
|
-
|
195
|
+
|
196
|
+
# init status in the view
|
197
|
+
register_instance_option :active? do
|
198
|
+
false
|
199
|
+
end
|
200
|
+
|
187
201
|
register_instance_option :visible? do
|
188
202
|
returned = true
|
189
203
|
(RailsAdmin.config.default_hidden_fields || {}).each do |section, fields|
|
@@ -193,20 +207,22 @@ module RailsAdmin
|
|
193
207
|
end
|
194
208
|
returned
|
195
209
|
end
|
196
|
-
|
210
|
+
|
211
|
+
# columns mapped (belongs_to, paperclip, etc.). First one is used for searching/sorting by default
|
212
|
+
register_instance_option :children_fields do
|
213
|
+
[]
|
214
|
+
end
|
215
|
+
|
216
|
+
register_instance_option :render do
|
217
|
+
bindings[:view].render :partial => partial.to_s, :locals => {:field => self, :form => bindings[:form] }
|
218
|
+
end
|
219
|
+
|
197
220
|
def editable
|
198
221
|
return false if @properties && @properties[:read_only]
|
199
|
-
|
200
|
-
klass = bindings[:object].class
|
201
|
-
whitelist = klass.accessible_attributes(role).map(&:to_s)
|
202
|
-
blacklist = klass.protected_attributes(role).map(&:to_s)
|
203
|
-
!self.method_name.to_s.in?(blacklist) && (whitelist.any? ? self.method_name.to_s.in?(whitelist) : true)
|
204
|
-
end
|
205
|
-
|
206
|
-
def render
|
207
|
-
bindings[:view].render :partial => partial.to_s, :locals => {:field => self, :form => bindings[:form] }
|
222
|
+
!bindings[:object].class.active_authorizer[bindings[:view].controller.send(:_attr_accessible_role)].deny?(self.method_name)
|
208
223
|
end
|
209
224
|
|
225
|
+
|
210
226
|
# Is this an association
|
211
227
|
def association?
|
212
228
|
kind_of?(RailsAdmin::Config::Fields::Association)
|
@@ -214,7 +230,9 @@ module RailsAdmin
|
|
214
230
|
|
215
231
|
# Reader for validation errors of the bound object
|
216
232
|
def errors
|
217
|
-
|
233
|
+
([name] + children_fields).uniq.map do |column_name|
|
234
|
+
bindings[:object].errors[column_name]
|
235
|
+
end.uniq.flatten
|
218
236
|
end
|
219
237
|
|
220
238
|
# Reader whether field is optional.
|
@@ -251,12 +269,12 @@ module RailsAdmin
|
|
251
269
|
def value
|
252
270
|
bindings[:object].safe_send(name)
|
253
271
|
end
|
254
|
-
|
272
|
+
|
255
273
|
# Reader for nested attributes
|
256
|
-
|
274
|
+
register_instance_option :nested_form do
|
257
275
|
false
|
258
276
|
end
|
259
|
-
|
277
|
+
|
260
278
|
def inverse_of
|
261
279
|
nil
|
262
280
|
end
|
@@ -264,9 +282,9 @@ module RailsAdmin
|
|
264
282
|
def method_name
|
265
283
|
name
|
266
284
|
end
|
267
|
-
|
268
|
-
def
|
269
|
-
|
285
|
+
|
286
|
+
def html_default_value
|
287
|
+
bindings[:object].new_record? && self.value.nil? && !self.default_value.nil? ? self.default_value : nil
|
270
288
|
end
|
271
289
|
end
|
272
290
|
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require 'rails_admin/config/fields'
|
2
|
+
require 'rails_admin/config/fields/types'
|
3
|
+
require 'rails_admin/config/fields/types/belongs_to_association'
|
4
|
+
|
5
|
+
RailsAdmin::Config::Fields.register_factory do |parent, properties, fields|
|
6
|
+
if association = parent.abstract_model.associations.find {|a| a[:child_key] == properties[:name] }
|
7
|
+
field = RailsAdmin::Config::Fields::Types.load("#{association[:polymorphic] ? :polymorphic : :belongs_to}_association").new(parent, association[:name], association)
|
8
|
+
fields << field
|
9
|
+
|
10
|
+
child_columns = []
|
11
|
+
id_column = parent.abstract_model.properties.find {|p| p[:name].to_s == association[:child_key].to_s }
|
12
|
+
child_columns << RailsAdmin::Config::Fields.default_factory.call(parent, id_column, fields)
|
13
|
+
|
14
|
+
if association[:polymorphic]
|
15
|
+
type_colum = parent.abstract_model.properties.find {|p| p[:name].to_s == association[:foreign_type].to_s }
|
16
|
+
child_columns << RailsAdmin::Config::Fields.default_factory.call(parent, type_colum, fields)
|
17
|
+
end
|
18
|
+
|
19
|
+
child_columns.each do |child_column|
|
20
|
+
child_column.hide
|
21
|
+
child_column.filterable(false)
|
22
|
+
end
|
23
|
+
|
24
|
+
field.children_fields child_columns.map(&:name)
|
25
|
+
end
|
26
|
+
end
|
@@ -3,8 +3,27 @@ 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
|
-
|
7
|
-
|
6
|
+
extensions = [nil, :file_name, ]
|
7
|
+
model = parent.abstract_model.model
|
8
|
+
|
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)
|
10
|
+
|
11
|
+
|
12
|
+
columns = [model.uploader_options[attachment_name][:mount_on] || attachment_name, "#{attachment_name}_content_type".to_sym, "#{attachment_name}_file_size".to_sym]
|
13
|
+
|
14
|
+
field = RailsAdmin::Config::Fields::Types.load(:carrierwave).new(parent, attachment_name, properties)
|
15
|
+
fields << field
|
16
|
+
children_fields = []
|
17
|
+
columns.each do |children_column_name|
|
18
|
+
if child_properties = parent.abstract_model.properties.find {|p| p[:name].to_s == children_column_name.to_s }
|
19
|
+
children_field = fields.find{ |f| f.name == children_column_name } || RailsAdmin::Config::Fields.default_factory.call(parent, child_properties, fields)
|
20
|
+
children_field.hide unless field == children_field
|
21
|
+
children_field.filterable(false) unless field == children_field
|
22
|
+
children_fields << children_field.name
|
23
|
+
end
|
24
|
+
end
|
25
|
+
field.children_fields(children_fields)
|
26
|
+
|
8
27
|
true
|
9
28
|
else
|
10
29
|
false
|
@@ -4,23 +4,20 @@ require 'rails_admin/config/fields/types/password'
|
|
4
4
|
|
5
5
|
# Register a custom field factory for devise model
|
6
6
|
RailsAdmin::Config::Fields.register_factory do |parent, properties, fields|
|
7
|
-
if :
|
7
|
+
if properties[:name] == :encrypted_password
|
8
|
+
extensions = [:password_salt, :reset_password_token, :remember_token]
|
9
|
+
model = parent.abstract_model.model
|
10
|
+
|
8
11
|
fields << RailsAdmin::Config::Fields::Types.load(:password).new(parent, :password, properties)
|
9
12
|
fields << RailsAdmin::Config::Fields::Types.load(:password).new(parent, :password_confirmation, properties)
|
10
|
-
|
11
|
-
properties = parent.abstract_model.properties.find {|p|
|
13
|
+
extensions.each do |ext|
|
14
|
+
properties = parent.abstract_model.properties.find {|p| ext == p[:name]}
|
12
15
|
if properties
|
13
|
-
|
14
|
-
fields.last.hide
|
15
|
-
end
|
16
|
-
end
|
17
|
-
if parent.kind_of?(RailsAdmin::Config::Sections::Update)
|
18
|
-
[:remember_created_at, :sign_in_count, :current_sign_in_at, :last_sign_in_at, :current_sign_in_ip, :last_sign_in_ip].each do |name|
|
19
|
-
properties = parent.abstract_model.properties.find {|p| name == p[:name]}
|
20
|
-
if properties
|
16
|
+
unless field = fields.find{ |f| f.name == ext }
|
21
17
|
RailsAdmin::Config::Fields.default_factory.call(parent, properties, fields)
|
22
|
-
fields.last
|
18
|
+
field = fields.last
|
23
19
|
end
|
20
|
+
field.hide
|
24
21
|
end
|
25
22
|
end
|
26
23
|
true
|
@@ -3,17 +3,23 @@ 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 = [:name, :uid]
|
7
|
+
model = parent.abstract_model.model
|
6
8
|
|
7
9
|
if (properties[:name].to_s =~ /^(.+)_uid$/) && defined?(::Dragonfly) && parent.abstract_model.model.dragonfly_attachment_classes.map(&:attribute).include?(attachment_name = $1.to_sym)
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
fields.
|
10
|
+
field = RailsAdmin::Config::Fields::Types.load(:dragonfly).new(parent, attachment_name, properties)
|
11
|
+
children_fields = []
|
12
|
+
extensions.each do |ext|
|
13
|
+
children_column_name = "#{attachment_name}_#{ext}".to_sym
|
14
|
+
if child_properties = parent.abstract_model.properties.find {|p| p[:name].to_s == children_column_name.to_s }
|
15
|
+
children_field = fields.find{ |f| f.name == children_column_name } || RailsAdmin::Config::Fields.default_factory.call(parent, child_properties, fields)
|
16
|
+
children_field.hide
|
17
|
+
children_field.filterable(false)
|
18
|
+
children_fields << children_field.name
|
14
19
|
end
|
15
20
|
end
|
16
|
-
|
21
|
+
field.children_fields(children_fields)
|
22
|
+
fields << field
|
17
23
|
true
|
18
24
|
else
|
19
25
|
false
|
@@ -2,25 +2,24 @@ require 'rails_admin/config/fields'
|
|
2
2
|
require 'rails_admin/config/fields/types'
|
3
3
|
require 'rails_admin/config/fields/types/file_upload'
|
4
4
|
|
5
|
-
# Register a custom field factory
|
6
5
|
RailsAdmin::Config::Fields.register_factory do |parent, properties, fields|
|
7
|
-
|
6
|
+
extensions = [:file_name, :content_type, :file_size, :updated_at]
|
8
7
|
model = parent.abstract_model.model
|
9
|
-
if defined?(::Paperclip) and model.
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
end
|
20
|
-
fields << RailsAdmin::Config::Fields::Types::Paperclip.new(parent, attachment_name, properties)
|
21
|
-
true
|
8
|
+
if (properties[:name].to_s =~ /^(.+)_file_name$/) and defined?(::Paperclip) and model.attachment_definitions and model.attachment_definitions.has_key?(attachment_name = $1.to_sym)
|
9
|
+
field = RailsAdmin::Config::Fields::Types.load(:paperclip).new(parent, attachment_name, properties)
|
10
|
+
children_fields = []
|
11
|
+
extensions.each do |ext|
|
12
|
+
children_column_name = "#{attachment_name}_#{ext}".to_sym
|
13
|
+
if child_properties = parent.abstract_model.properties.find {|p| p[:name].to_s == children_column_name.to_s }
|
14
|
+
children_field = fields.find{ |f| f.name == children_column_name } || RailsAdmin::Config::Fields.default_factory.call(parent, child_properties, fields)
|
15
|
+
children_field.hide
|
16
|
+
children_field.filterable(false)
|
17
|
+
children_fields << children_field.name
|
22
18
|
end
|
23
19
|
end
|
20
|
+
field.children_fields(children_fields)
|
21
|
+
fields << field
|
22
|
+
true
|
24
23
|
else
|
25
24
|
false
|
26
25
|
end
|
@@ -1,18 +1,26 @@
|
|
1
1
|
require 'active_support/core_ext/string/inflections'
|
2
|
+
require 'rails_admin/config/proxyable'
|
3
|
+
require 'rails_admin/config/configurable'
|
2
4
|
require 'rails_admin/config/hideable'
|
3
5
|
|
4
6
|
module RailsAdmin
|
5
7
|
module Config
|
6
8
|
module Fields
|
7
9
|
# A container for groups of fields in edit views
|
8
|
-
class Group
|
10
|
+
class Group
|
11
|
+
include RailsAdmin::Config::Proxyable
|
12
|
+
include RailsAdmin::Config::Configurable
|
9
13
|
include RailsAdmin::Config::Hideable
|
10
14
|
|
11
|
-
attr_reader :name
|
15
|
+
attr_reader :name, :abstract_model
|
12
16
|
attr_accessor :section
|
17
|
+
attr_reader :parent, :root
|
13
18
|
|
14
19
|
def initialize(parent, name)
|
15
|
-
|
20
|
+
@parent = parent
|
21
|
+
@root = parent.root
|
22
|
+
|
23
|
+
@abstract_model = parent.abstract_model
|
16
24
|
@section = parent
|
17
25
|
@name = name.to_s.tr(' ', '_').downcase.to_sym
|
18
26
|
end
|
@@ -50,6 +58,11 @@ module RailsAdmin
|
|
50
58
|
section.with(bindings).visible_fields.select {|f| self == f.group }
|
51
59
|
end
|
52
60
|
|
61
|
+
# Should it open by default
|
62
|
+
register_instance_option :active? do
|
63
|
+
true
|
64
|
+
end
|
65
|
+
|
53
66
|
# Configurable group label which by default is group's name humanized.
|
54
67
|
register_instance_option :label do
|
55
68
|
(@label ||= {})[::I18n.locale] ||= (parent.fields.find{|f|f.name == self.name}.try(:label) || name.to_s.humanize)
|
@@ -18,7 +18,7 @@ module RailsAdmin
|
|
18
18
|
end
|
19
19
|
|
20
20
|
register_instance_option :searchable do
|
21
|
-
@searchable ||= associated_model_config.abstract_model.properties.map{ |p| p[:name] }.include?(associated_model_config.object_label_method) ? [associated_model_config.object_label_method, {self.abstract_model.model
|
21
|
+
@searchable ||= associated_model_config.abstract_model.properties.map{ |p| p[:name] }.include?(associated_model_config.object_label_method) ? [associated_model_config.object_label_method, {self.abstract_model.model => self.method_name}] : {self.abstract_model.model => self.method_name}
|
22
22
|
end
|
23
23
|
|
24
24
|
register_instance_option :partial do
|
@@ -26,7 +26,7 @@ module RailsAdmin
|
|
26
26
|
end
|
27
27
|
|
28
28
|
def associated_model_config
|
29
|
-
@config ||= RailsAdmin.config(association[:
|
29
|
+
@config ||= RailsAdmin.config(association[:parent_model_proc].call)
|
30
30
|
end
|
31
31
|
|
32
32
|
def selected_id
|
@@ -5,7 +5,6 @@ module RailsAdmin
|
|
5
5
|
module Config
|
6
6
|
module Fields
|
7
7
|
module Types
|
8
|
-
# Field type that supports Paperclip file uploads
|
9
8
|
class Carrierwave < RailsAdmin::Config::Fields::Types::FileUpload
|
10
9
|
RailsAdmin::Config::Fields::Types.register(self)
|
11
10
|
|
@@ -20,14 +19,6 @@ module RailsAdmin
|
|
20
19
|
register_instance_option(:cache_method) do
|
21
20
|
"#{name}_cache"
|
22
21
|
end
|
23
|
-
|
24
|
-
register_instance_option(:sortable) do
|
25
|
-
name
|
26
|
-
end
|
27
|
-
|
28
|
-
register_instance_option(:searchable) do
|
29
|
-
name
|
30
|
-
end
|
31
22
|
|
32
23
|
def resource_url(thumb = false)
|
33
24
|
return nil unless (uploader = bindings[:object].send(name)).present?
|
@@ -6,7 +6,7 @@ module RailsAdmin
|
|
6
6
|
module Types
|
7
7
|
class Color < RailsAdmin::Config::Fields::Base
|
8
8
|
RailsAdmin::Config::Fields::Types::register(self)
|
9
|
-
|
9
|
+
|
10
10
|
register_instance_option :pretty_value do
|
11
11
|
bindings[:view].content_tag :strong, (value.presence || ' - '), :style => "color: #{color}"
|
12
12
|
end
|
@@ -14,7 +14,7 @@ module RailsAdmin
|
|
14
14
|
register_instance_option :partial do
|
15
15
|
:form_colorpicker
|
16
16
|
end
|
17
|
-
|
17
|
+
|
18
18
|
register_instance_option :color do
|
19
19
|
if value.present?
|
20
20
|
if value =~ /^[0-9a-fA-F]{3,6}$/
|
@@ -26,7 +26,7 @@ module RailsAdmin
|
|
26
26
|
'white'
|
27
27
|
end
|
28
28
|
end
|
29
|
-
|
29
|
+
|
30
30
|
register_instance_option :export_value do
|
31
31
|
formatted_value
|
32
32
|
end
|
@@ -9,10 +9,6 @@ module RailsAdmin
|
|
9
9
|
class Dragonfly < RailsAdmin::Config::Fields::Types::FileUpload
|
10
10
|
RailsAdmin::Config::Fields::Types.register(self)
|
11
11
|
|
12
|
-
def errors
|
13
|
-
bindings[:object].errors["#{name}_uid"] + bindings[:object].errors["#{name}_name"]
|
14
|
-
end
|
15
|
-
|
16
12
|
register_instance_option :image? do
|
17
13
|
false unless value
|
18
14
|
if abstract_model.model.new.respond_to?("#{name}_name")
|
@@ -22,12 +18,6 @@ module RailsAdmin
|
|
22
18
|
end
|
23
19
|
end
|
24
20
|
|
25
|
-
register_instance_option :required? do
|
26
|
-
@required ||= !!abstract_model.model.validators_on("#{name}_uid").find do |v|
|
27
|
-
v.is_a?(ActiveModel::Validations::PresenceValidator) && !v.options[:allow_nil]
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
21
|
register_instance_option :delete_method do
|
32
22
|
"remove_#{name}"
|
33
23
|
end
|
@@ -39,15 +29,7 @@ module RailsAdmin
|
|
39
29
|
register_instance_option :thumb_method do
|
40
30
|
"100x100>"
|
41
31
|
end
|
42
|
-
|
43
|
-
register_instance_option :sortable do
|
44
|
-
"#{name}_name" if abstract_model.model.new.respond_to?("#{name}_name")
|
45
|
-
end
|
46
|
-
|
47
|
-
register_instance_option :searchable do
|
48
|
-
"#{name}_name" if abstract_model.model.new.respond_to?("#{name}_name")
|
49
|
-
end
|
50
|
-
|
32
|
+
|
51
33
|
def resource_url thumb = false
|
52
34
|
return nil unless (v = value)
|
53
35
|
thumb ? v.thumb(thumb).try(:url) : v.url
|
@@ -26,14 +26,6 @@ module RailsAdmin
|
|
26
26
|
register_instance_option(:export_value) do
|
27
27
|
resource_url.to_s
|
28
28
|
end
|
29
|
-
|
30
|
-
register_instance_option(:searchable) do
|
31
|
-
false
|
32
|
-
end
|
33
|
-
|
34
|
-
register_instance_option(:sortable) do
|
35
|
-
false
|
36
|
-
end
|
37
29
|
|
38
30
|
register_instance_option(:pretty_value) do
|
39
31
|
if value.presence
|
@@ -41,23 +33,27 @@ module RailsAdmin
|
|
41
33
|
url = resource_url
|
42
34
|
if self.image
|
43
35
|
thumb_url = resource_url(thumb_method)
|
44
|
-
(url != thumb_url) ? v.link_to(v.image_tag(thumb_url), url, :target => 'blank') : v.image_tag(thumb_url)
|
36
|
+
(url != thumb_url) ? v.link_to(v.image_tag(thumb_url), url, :class => 'thumbnail', :target => 'blank') : v.image_tag(thumb_url)
|
45
37
|
else
|
46
38
|
v.link_to(nil, url, :target => 'blank')
|
47
39
|
end
|
48
40
|
else
|
49
|
-
|
41
|
+
nil
|
50
42
|
end
|
51
43
|
end
|
52
44
|
|
53
45
|
register_instance_option :image? do
|
54
46
|
(url = resource_url.to_s) && url.split('.').last =~ /jpg|jpeg|png|gif/i
|
55
47
|
end
|
56
|
-
|
48
|
+
|
57
49
|
# virtual class
|
58
50
|
def resource_url
|
59
51
|
raise 'not implemented'
|
60
52
|
end
|
53
|
+
|
54
|
+
def virtual?
|
55
|
+
true
|
56
|
+
end
|
61
57
|
end
|
62
58
|
end
|
63
59
|
end
|
@@ -8,11 +8,6 @@ module RailsAdmin
|
|
8
8
|
# Register field type for the type loader
|
9
9
|
RailsAdmin::Config::Fields::Types::register(self)
|
10
10
|
|
11
|
-
# Accessor for field's help text displayed below input field.
|
12
|
-
register_instance_option :help do
|
13
|
-
""
|
14
|
-
end
|
15
|
-
|
16
11
|
register_instance_option :partial do
|
17
12
|
nested_form ? :form_nested_many : :form_filtering_multiselect
|
18
13
|
end
|
@@ -21,7 +16,7 @@ module RailsAdmin
|
|
21
16
|
register_instance_option :orderable do
|
22
17
|
false
|
23
18
|
end
|
24
|
-
|
19
|
+
|
25
20
|
def method_name
|
26
21
|
nested_form ? "#{super}_attributes" : "#{super.to_s.singularize}_ids" # name_ids
|
27
22
|
end
|
@@ -7,7 +7,7 @@ module RailsAdmin
|
|
7
7
|
class HasOneAssociation < RailsAdmin::Config::Fields::Association
|
8
8
|
# Register field type for the type loader
|
9
9
|
RailsAdmin::Config::Fields::Types::register(self)
|
10
|
-
|
10
|
+
|
11
11
|
register_instance_option :partial do
|
12
12
|
nested_form ? :form_nested_one : :form_filtering_select
|
13
13
|
end
|
@@ -16,15 +16,15 @@ module RailsAdmin
|
|
16
16
|
register_instance_option(:formatted_value) do
|
17
17
|
(o = value) && o.send(associated_model_config.object_label_method)
|
18
18
|
end
|
19
|
-
|
19
|
+
|
20
20
|
def editable
|
21
21
|
(nested_form || abstract_model.model.new.respond_to?("#{self.name}_id=")) && super
|
22
22
|
end
|
23
|
-
|
23
|
+
|
24
24
|
def selected_id
|
25
25
|
value.try :id
|
26
26
|
end
|
27
|
-
|
27
|
+
|
28
28
|
def method_name
|
29
29
|
nested_form ? "#{self.name}_attributes" : "#{self.name}_id"
|
30
30
|
end
|
@@ -18,27 +18,9 @@ module RailsAdmin
|
|
18
18
|
@thumb_method ||= @styles.find{|s| [:thumb, 'thumb', :thumbnail, 'thumbnail'].include?(s)} || @styles.first || :original
|
19
19
|
end
|
20
20
|
|
21
|
-
register_instance_option(:required?) do
|
22
|
-
@required ||= !!abstract_model.model.validators_on("#{name}_file_name").find do |v|
|
23
|
-
v.is_a?(ActiveModel::Validations::PresenceValidator) && !v.options[:allow_nil]
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
register_instance_option(:sortable) do
|
28
|
-
"#{name}_file_name"
|
29
|
-
end
|
30
|
-
|
31
|
-
register_instance_option(:searchable) do
|
32
|
-
"#{name}_file_name"
|
33
|
-
end
|
34
|
-
|
35
21
|
def resource_url(thumb = false)
|
36
22
|
value.try(:url, (thumb || :original))
|
37
23
|
end
|
38
|
-
|
39
|
-
def errors
|
40
|
-
bindings[:object].errors["#{name}_file_name"] + bindings[:object].errors["#{name}_content_type"] + bindings[:object].errors["#{name}_file_size"]
|
41
|
-
end
|
42
24
|
end
|
43
25
|
end
|
44
26
|
end
|