administrate-field-nested_has_many 1.1.0 → 1.2.0

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 (89) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +28 -0
  3. data/.gitignore +3 -0
  4. data/.ruby-version +1 -1
  5. data/Appraisals +9 -0
  6. data/CHANGELOG.md +16 -0
  7. data/Gemfile +2 -0
  8. data/Rakefile +4 -0
  9. data/administrate-field-nested_has_many.gemspec +8 -3
  10. data/app/views/fields/nested_has_many/_show.html.erb +6 -42
  11. data/app/views/fields/nested_has_many/_show_current.html.erb +44 -0
  12. data/app/views/fields/nested_has_many/_show_old.html.erb +36 -0
  13. data/bin/rails +13 -0
  14. data/config/locales/administrate-field-nested_has_many.pt.yml +7 -0
  15. data/config/locales/administrate-field-nested_has_many.ru.yml +7 -0
  16. data/gemfiles/administrate_0.10.gemfile +8 -0
  17. data/gemfiles/administrate_0.10.gemfile.lock +214 -0
  18. data/gemfiles/administrate_master.gemfile +8 -0
  19. data/gemfiles/administrate_master.gemfile.lock +219 -0
  20. data/lib/administrate/field/nested_has_many.rb +13 -8
  21. data/spec/dummy/.gitignore +3 -0
  22. data/spec/dummy/Rakefile +6 -0
  23. data/spec/dummy/app/assets/config/manifest.js +7 -0
  24. data/spec/dummy/app/assets/images/.keep +0 -0
  25. data/spec/dummy/app/assets/javascripts/application.js +14 -0
  26. data/spec/dummy/app/assets/javascripts/channels/.keep +0 -0
  27. data/spec/dummy/app/assets/stylesheets/application.css +15 -0
  28. data/spec/dummy/app/controllers/admin/application_controller.rb +21 -0
  29. data/spec/dummy/app/controllers/admin/foo/students_controller.rb +21 -0
  30. data/spec/dummy/app/controllers/admin/schools_controller.rb +21 -0
  31. data/spec/dummy/app/controllers/application_controller.rb +2 -0
  32. data/spec/dummy/app/controllers/concerns/.keep +0 -0
  33. data/spec/dummy/app/dashboards/foo/student_dashboard.rb +51 -0
  34. data/spec/dummy/app/dashboards/school_dashboard.rb +52 -0
  35. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  36. data/spec/dummy/app/mailers/application_mailer.rb +4 -0
  37. data/spec/dummy/app/models/application_record.rb +3 -0
  38. data/spec/dummy/app/models/concerns/.keep +0 -0
  39. data/spec/dummy/app/models/foo/student.rb +3 -0
  40. data/spec/dummy/app/models/school.rb +4 -0
  41. data/spec/dummy/app/views/layouts/application.html.erb +15 -0
  42. data/spec/dummy/app/views/layouts/mailer.html.erb +13 -0
  43. data/spec/dummy/app/views/layouts/mailer.text.erb +1 -0
  44. data/spec/dummy/bin/bundle +3 -0
  45. data/spec/dummy/bin/rails +4 -0
  46. data/spec/dummy/bin/rake +4 -0
  47. data/spec/dummy/bin/setup +36 -0
  48. data/spec/dummy/bin/update +31 -0
  49. data/spec/dummy/bin/yarn +11 -0
  50. data/spec/dummy/config.ru +5 -0
  51. data/spec/dummy/config/application.rb +18 -0
  52. data/spec/dummy/config/boot.rb +5 -0
  53. data/spec/dummy/config/cable.yml +10 -0
  54. data/spec/dummy/config/database.yml +12 -0
  55. data/spec/dummy/config/environment.rb +5 -0
  56. data/spec/dummy/config/environments/development.rb +53 -0
  57. data/spec/dummy/config/environments/test.rb +36 -0
  58. data/spec/dummy/config/initializers/application_controller_renderer.rb +8 -0
  59. data/spec/dummy/config/initializers/assets.rb +14 -0
  60. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  61. data/spec/dummy/config/initializers/content_security_policy.rb +25 -0
  62. data/spec/dummy/config/initializers/cookies_serializer.rb +5 -0
  63. data/spec/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  64. data/spec/dummy/config/initializers/inflections.rb +16 -0
  65. data/spec/dummy/config/initializers/mime_types.rb +4 -0
  66. data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
  67. data/spec/dummy/config/locales/en.yml +33 -0
  68. data/spec/dummy/config/puma.rb +34 -0
  69. data/spec/dummy/config/routes.rb +9 -0
  70. data/spec/dummy/config/spring.rb +6 -0
  71. data/spec/dummy/config/storage.yml +34 -0
  72. data/spec/dummy/db/migrate/20180907104642_create_schools.rb +9 -0
  73. data/spec/dummy/db/migrate/20180907104703_create_students.rb +10 -0
  74. data/spec/dummy/db/schema.rb +29 -0
  75. data/spec/dummy/lib/assets/.keep +0 -0
  76. data/spec/dummy/package.json +5 -0
  77. data/spec/dummy/public/404.html +67 -0
  78. data/spec/dummy/public/422.html +67 -0
  79. data/spec/dummy/public/500.html +66 -0
  80. data/spec/dummy/public/apple-touch-icon-precomposed.png +0 -0
  81. data/spec/dummy/public/apple-touch-icon.png +0 -0
  82. data/spec/dummy/public/favicon.ico +0 -0
  83. data/spec/dummy/storage/.keep +0 -0
  84. data/spec/factories.rb +9 -0
  85. data/spec/features/has_many_spec.rb +41 -0
  86. data/spec/features/landing_spec.rb +10 -0
  87. data/spec/rails_helper.rb +67 -0
  88. data/spec/spec_helper.rb +96 -0
  89. metadata +228 -6
@@ -0,0 +1,8 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "pg"
6
+ gem "administrate", git: "https://github.com/thoughtbot/administrate", branch: "master"
7
+
8
+ gemspec path: "../"
@@ -0,0 +1,219 @@
1
+ GIT
2
+ remote: https://github.com/thoughtbot/administrate
3
+ revision: 32b3cfc6b5e9183fa052e40bf523000d1edf06dd
4
+ branch: master
5
+ specs:
6
+ administrate (0.11.0)
7
+ actionpack (>= 4.2, < 6.0)
8
+ actionview (>= 4.2, < 6.0)
9
+ activerecord (>= 4.2, < 6.0)
10
+ autoprefixer-rails (>= 6.0)
11
+ datetime_picker_rails (~> 0.0.7)
12
+ jquery-rails (>= 4.0)
13
+ kaminari (>= 1.0)
14
+ momentjs-rails (~> 2.8)
15
+ sass-rails (~> 5.0)
16
+ selectize-rails (~> 0.6)
17
+
18
+ PATH
19
+ remote: ..
20
+ specs:
21
+ administrate-field-nested_has_many (1.2.0)
22
+ administrate (> 0.8, < 1)
23
+ cocoon (~> 1.2, >= 1.2.11)
24
+
25
+ GEM
26
+ remote: https://rubygems.org/
27
+ specs:
28
+ actionpack (5.2.2)
29
+ actionview (= 5.2.2)
30
+ activesupport (= 5.2.2)
31
+ rack (~> 2.0)
32
+ rack-test (>= 0.6.3)
33
+ rails-dom-testing (~> 2.0)
34
+ rails-html-sanitizer (~> 1.0, >= 1.0.2)
35
+ actionview (5.2.2)
36
+ activesupport (= 5.2.2)
37
+ builder (~> 3.1)
38
+ erubi (~> 1.4)
39
+ rails-dom-testing (~> 2.0)
40
+ rails-html-sanitizer (~> 1.0, >= 1.0.3)
41
+ activemodel (5.2.2)
42
+ activesupport (= 5.2.2)
43
+ activerecord (5.2.2)
44
+ activemodel (= 5.2.2)
45
+ activesupport (= 5.2.2)
46
+ arel (>= 9.0)
47
+ activesupport (5.2.2)
48
+ concurrent-ruby (~> 1.0, >= 1.0.2)
49
+ i18n (>= 0.7, < 2)
50
+ minitest (~> 5.1)
51
+ tzinfo (~> 1.1)
52
+ addressable (2.6.0)
53
+ public_suffix (>= 2.0.2, < 4.0)
54
+ appraisal (2.2.0)
55
+ bundler
56
+ rake
57
+ thor (>= 0.14.0)
58
+ arel (9.0.0)
59
+ ast (2.4.0)
60
+ autoprefixer-rails (9.4.6)
61
+ execjs
62
+ builder (3.2.3)
63
+ capybara (3.13.2)
64
+ addressable
65
+ mini_mime (>= 0.1.3)
66
+ nokogiri (~> 1.8)
67
+ rack (>= 1.6.0)
68
+ rack-test (>= 0.6.3)
69
+ regexp_parser (~> 1.2)
70
+ xpath (~> 3.2)
71
+ childprocess (3.0.0)
72
+ cocoon (1.2.14)
73
+ concurrent-ruby (1.1.4)
74
+ crass (1.0.4)
75
+ datetime_picker_rails (0.0.7)
76
+ momentjs-rails (>= 2.8.1)
77
+ diff-lcs (1.3)
78
+ erubi (1.8.0)
79
+ execjs (2.7.0)
80
+ factory_bot (4.11.1)
81
+ activesupport (>= 3.0.0)
82
+ ffi (1.10.0)
83
+ highline (2.0.1)
84
+ i18n (1.5.3)
85
+ concurrent-ruby (~> 1.0)
86
+ i18n-tasks (0.9.28)
87
+ activesupport (>= 4.0.2)
88
+ ast (>= 2.1.0)
89
+ erubi
90
+ highline (>= 2.0.0)
91
+ i18n
92
+ parser (>= 2.2.3.0)
93
+ rails-i18n
94
+ rainbow (>= 2.2.2, < 4.0)
95
+ terminal-table (>= 1.5.1)
96
+ jquery-rails (4.3.3)
97
+ rails-dom-testing (>= 1, < 3)
98
+ railties (>= 4.2.0)
99
+ thor (>= 0.14, < 2.0)
100
+ kaminari (1.1.1)
101
+ activesupport (>= 4.1.0)
102
+ kaminari-actionview (= 1.1.1)
103
+ kaminari-activerecord (= 1.1.1)
104
+ kaminari-core (= 1.1.1)
105
+ kaminari-actionview (1.1.1)
106
+ actionview
107
+ kaminari-core (= 1.1.1)
108
+ kaminari-activerecord (1.1.1)
109
+ activerecord
110
+ kaminari-core (= 1.1.1)
111
+ kaminari-core (1.1.1)
112
+ loofah (2.2.3)
113
+ crass (~> 1.0.2)
114
+ nokogiri (>= 1.5.9)
115
+ method_source (0.9.2)
116
+ mini_mime (1.0.1)
117
+ mini_portile2 (2.4.0)
118
+ minitest (5.11.3)
119
+ momentjs-rails (2.20.1)
120
+ railties (>= 3.1)
121
+ nokogiri (1.10.1)
122
+ mini_portile2 (~> 2.4.0)
123
+ parser (2.6.0.0)
124
+ ast (~> 2.4.0)
125
+ pg (1.1.4)
126
+ public_suffix (3.0.3)
127
+ rack (2.0.6)
128
+ rack-test (1.1.0)
129
+ rack (>= 1.0, < 3)
130
+ rails-dom-testing (2.0.3)
131
+ activesupport (>= 4.2.0)
132
+ nokogiri (>= 1.6)
133
+ rails-html-sanitizer (1.0.4)
134
+ loofah (~> 2.2, >= 2.2.2)
135
+ rails-i18n (5.1.2)
136
+ i18n (>= 0.7, < 2)
137
+ railties (>= 5.0, < 6)
138
+ railties (5.2.2)
139
+ actionpack (= 5.2.2)
140
+ activesupport (= 5.2.2)
141
+ method_source
142
+ rake (>= 0.8.7)
143
+ thor (>= 0.19.0, < 2.0)
144
+ rainbow (3.0.0)
145
+ rake (12.3.2)
146
+ rb-fsevent (0.10.3)
147
+ rb-inotify (0.10.0)
148
+ ffi (~> 1.0)
149
+ regexp_parser (1.3.0)
150
+ rspec-core (3.8.0)
151
+ rspec-support (~> 3.8.0)
152
+ rspec-expectations (3.8.2)
153
+ diff-lcs (>= 1.2.0, < 2.0)
154
+ rspec-support (~> 3.8.0)
155
+ rspec-mocks (3.8.0)
156
+ diff-lcs (>= 1.2.0, < 2.0)
157
+ rspec-support (~> 3.8.0)
158
+ rspec-rails (3.8.2)
159
+ actionpack (>= 3.0)
160
+ activesupport (>= 3.0)
161
+ railties (>= 3.0)
162
+ rspec-core (~> 3.8.0)
163
+ rspec-expectations (~> 3.8.0)
164
+ rspec-mocks (~> 3.8.0)
165
+ rspec-support (~> 3.8.0)
166
+ rspec-support (3.8.0)
167
+ rubyzip (2.2.0)
168
+ sass (3.7.3)
169
+ sass-listen (~> 4.0.0)
170
+ sass-listen (4.0.0)
171
+ rb-fsevent (~> 0.9, >= 0.9.4)
172
+ rb-inotify (~> 0.9, >= 0.9.7)
173
+ sass-rails (5.0.7)
174
+ railties (>= 4.0.0, < 6)
175
+ sass (~> 3.1)
176
+ sprockets (>= 2.8, < 4.0)
177
+ sprockets-rails (>= 2.0, < 4.0)
178
+ tilt (>= 1.1, < 3)
179
+ selectize-rails (0.12.6)
180
+ selenium-webdriver (3.142.7)
181
+ childprocess (>= 0.5, < 4.0)
182
+ rubyzip (>= 1.2.2)
183
+ sprockets (3.7.2)
184
+ concurrent-ruby (~> 1.0)
185
+ rack (> 1, < 3)
186
+ sprockets-rails (3.2.1)
187
+ actionpack (>= 4.0)
188
+ activesupport (>= 4.0)
189
+ sprockets (>= 3.0.0)
190
+ sqlite3 (1.3.13)
191
+ terminal-table (1.8.0)
192
+ unicode-display_width (~> 1.1, >= 1.1.1)
193
+ thor (0.20.3)
194
+ thread_safe (0.3.6)
195
+ tilt (2.0.9)
196
+ tzinfo (1.2.5)
197
+ thread_safe (~> 0.1)
198
+ unicode-display_width (1.4.1)
199
+ xpath (3.2.0)
200
+ nokogiri (~> 1.8)
201
+
202
+ PLATFORMS
203
+ ruby
204
+
205
+ DEPENDENCIES
206
+ administrate!
207
+ administrate-field-nested_has_many!
208
+ appraisal
209
+ capybara
210
+ factory_bot
211
+ i18n-tasks
212
+ pg
213
+ rake
214
+ rspec-rails
215
+ selenium-webdriver
216
+ sqlite3
217
+
218
+ BUNDLED WITH
219
+ 1.17.3
@@ -2,6 +2,7 @@ require "administrate/field/has_many"
2
2
  require "administrate/page/form"
3
3
  require "rails"
4
4
  require "administrate/engine"
5
+ require "administrate/version"
5
6
  require "cocoon"
6
7
 
7
8
  module Administrate
@@ -43,19 +44,20 @@ module Administrate
43
44
  data
44
45
  end
45
46
 
46
- def self.dashboard_for_resource(resource)
47
- "#{resource.to_s.classify}Dashboard".constantize
47
+ def self.dashboard_for_resource(resource, options)
48
+ class_name = options && options[:class_name] || resource.to_s.classify
49
+ "#{class_name}Dashboard".constantize
48
50
  end
49
51
 
50
- def self.associated_attributes(associated_resource)
51
- DEFAULT_ATTRIBUTES +
52
- dashboard_for_resource(associated_resource).new.permitted_attributes
52
+ def self.associated_attributes(associated_resource, options)
53
+ dashboard_class = dashboard_for_resource(associated_resource, options)
54
+ DEFAULT_ATTRIBUTES + dashboard_class.new.permitted_attributes
53
55
  end
54
56
 
55
- def self.permitted_attribute(associated_resource, _options = nil)
57
+ def self.permitted_attribute(associated_resource, options = nil)
56
58
  {
57
59
  "#{associated_resource}_attributes".to_sym =>
58
- associated_attributes(associated_resource),
60
+ associated_attributes(associated_resource, options),
59
61
  }
60
62
  end
61
63
 
@@ -64,7 +66,10 @@ module Administrate
64
66
  end
65
67
 
66
68
  def association_name
67
- associated_class_name.underscore.pluralize
69
+ options.fetch(
70
+ :association_name,
71
+ associated_class_name.underscore.pluralize[/([^\/]*)$/, 1],
72
+ )
68
73
  end
69
74
 
70
75
  def associated_form
@@ -0,0 +1,3 @@
1
+ db/*.sqlite3
2
+ log/
3
+ tmp/
@@ -0,0 +1,6 @@
1
+ # Add your own tasks in files placed in lib/tasks ending in .rake,
2
+ # for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
3
+
4
+ require_relative 'config/application'
5
+
6
+ Rails.application.load_tasks
@@ -0,0 +1,7 @@
1
+ //= link_tree ../images
2
+ //= link_directory ../javascripts .js
3
+ //= link administrate/application.js
4
+ //= link administrate-field-nested_has_many/application.js
5
+ //= link_directory ../stylesheets .css
6
+ //= link administrate/application.css
7
+ //= link administrate-field-nested_has_many/application.css
File without changes
@@ -0,0 +1,14 @@
1
+ // This is a manifest file that'll be compiled into application.js, which will include all the files
2
+ // listed below.
3
+ //
4
+ // Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
5
+ // or any plugin's vendor/assets/javascripts directory can be referenced here using a relative path.
6
+ //
7
+ // It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
8
+ // compiled file. JavaScript code in this file should be added after the last require_* statement.
9
+ //
10
+ // Read Sprockets README (https://github.com/rails/sprockets#sprockets-directives) for details
11
+ // about supported directives.
12
+ //
13
+ //= require rails-ujs
14
+ //= require_tree .
@@ -0,0 +1,15 @@
1
+ /*
2
+ * This is a manifest file that'll be compiled into application.css, which will include all the files
3
+ * listed below.
4
+ *
5
+ * Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
6
+ * or any plugin's vendor/assets/stylesheets directory can be referenced here using a relative path.
7
+ *
8
+ * You're free to add application-wide styles to this file and they'll appear at the bottom of the
9
+ * compiled file so the styles you add here take precedence over styles defined in any other CSS/SCSS
10
+ * files in this directory. Styles in this file should be added after the last require_* statement.
11
+ * It is generally better to create a new file per style scope.
12
+ *
13
+ *= require_tree .
14
+ *= require_self
15
+ */
@@ -0,0 +1,21 @@
1
+ # All Administrate controllers inherit from this `Admin::ApplicationController`,
2
+ # making it the ideal place to put authentication logic or other
3
+ # before_actions.
4
+ #
5
+ # If you want to add pagination or other controller-level concerns,
6
+ # you're free to overwrite the RESTful controller actions.
7
+ module Admin
8
+ class ApplicationController < Administrate::ApplicationController
9
+ before_action :authenticate_admin
10
+
11
+ def authenticate_admin
12
+ # TODO Add authentication logic here.
13
+ end
14
+
15
+ # Override this value to specify the number of elements to display at a time
16
+ # on index pages. Defaults to 20.
17
+ # def records_per_page
18
+ # params[:per_page] || 20
19
+ # end
20
+ end
21
+ end
@@ -0,0 +1,21 @@
1
+ module Admin
2
+ class Foo::StudentsController < Admin::ApplicationController
3
+ # To customize the behavior of this controller,
4
+ # you can overwrite any of the RESTful actions. For example:
5
+ #
6
+ # def index
7
+ # super
8
+ # @resources = Student.
9
+ # page(params[:page]).
10
+ # per(10)
11
+ # end
12
+
13
+ # Define a custom finder by overriding the `find_resource` method:
14
+ # def find_resource(param)
15
+ # Student.find_by!(slug: param)
16
+ # end
17
+
18
+ # See https://administrate-prototype.herokuapp.com/customizing_controller_actions
19
+ # for more information
20
+ end
21
+ end
@@ -0,0 +1,21 @@
1
+ module Admin
2
+ class SchoolsController < Admin::ApplicationController
3
+ # To customize the behavior of this controller,
4
+ # you can overwrite any of the RESTful actions. For example:
5
+ #
6
+ # def index
7
+ # super
8
+ # @resources = School.
9
+ # page(params[:page]).
10
+ # per(10)
11
+ # end
12
+
13
+ # Define a custom finder by overriding the `find_resource` method:
14
+ # def find_resource(param)
15
+ # School.find_by!(slug: param)
16
+ # end
17
+
18
+ # See https://administrate-prototype.herokuapp.com/customizing_controller_actions
19
+ # for more information
20
+ end
21
+ end
@@ -0,0 +1,2 @@
1
+ class ApplicationController < ActionController::Base
2
+ end
@@ -0,0 +1,51 @@
1
+ require "administrate/base_dashboard"
2
+
3
+ class Foo::StudentDashboard < Administrate::BaseDashboard
4
+ # ATTRIBUTE_TYPES
5
+ # a hash that describes the type of each of the model's fields.
6
+ #
7
+ # Each different type represents an Administrate::Field object,
8
+ # which determines how the attribute is displayed
9
+ # on pages throughout the dashboard.
10
+ ATTRIBUTE_TYPES = {
11
+ school: Field::BelongsTo,
12
+ id: Field::Number,
13
+ name: Field::String,
14
+ created_at: Field::DateTime,
15
+ updated_at: Field::DateTime,
16
+ }.freeze
17
+
18
+ # COLLECTION_ATTRIBUTES
19
+ # an array of attributes that will be displayed on the model's index page.
20
+ #
21
+ # By default, it's limited to four items to reduce clutter on index pages.
22
+ # Feel free to add, remove, or rearrange items.
23
+ COLLECTION_ATTRIBUTES = [
24
+ :school,
25
+ :id,
26
+ :name,
27
+ :created_at,
28
+ ].freeze
29
+
30
+ # SHOW_PAGE_ATTRIBUTES
31
+ # an array of attributes that will be displayed on the model's show page.
32
+ SHOW_PAGE_ATTRIBUTES = [
33
+ :school,
34
+ :id,
35
+ :name,
36
+ :created_at,
37
+ :updated_at,
38
+ ].freeze
39
+
40
+ # FORM_ATTRIBUTES
41
+ # an array of attributes that will be displayed
42
+ # on the model's form (`new` and `edit`) pages.
43
+ FORM_ATTRIBUTES = [
44
+ :school,
45
+ :name,
46
+ ].freeze
47
+
48
+ def display_resource(student)
49
+ student.name
50
+ end
51
+ end