active_scaffold-sequel 0.7.1 → 0.8.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 (36) hide show
  1. data/app/assets/javascripts/active_scaffold.js.erb +12 -14
  2. data/app/assets/javascripts/jquery/active_scaffold.js +610 -348
  3. data/app/assets/javascripts/jquery/date_picker_bridge.js.erb +37 -19
  4. data/app/assets/javascripts/jquery/draggable_lists.js +28 -27
  5. data/app/assets/javascripts/jquery/jquery.editinplace.js +145 -137
  6. data/app/assets/javascripts/jquery/tiny_mce_bridge.js +1 -1
  7. data/app/assets/stylesheets/{active_scaffold.css.scss → active_scaffold.scss} +0 -0
  8. data/app/assets/stylesheets/{active_scaffold_colors.css.scss → active_scaffold_colors.scss} +0 -0
  9. data/app/assets/stylesheets/{active_scaffold_images.css.scss → active_scaffold_images.scss} +0 -0
  10. data/frontends/default/views/_list.html.erb +1 -1
  11. data/frontends/default/views/_list_record.html.erb +2 -1
  12. data/frontends/default/views/_search.html.erb +1 -10
  13. data/frontends/default/views/add_existing.js.erb +0 -3
  14. data/lib/active_scaffold.rb +0 -12
  15. data/lib/active_scaffold/actions/list.rb +8 -3
  16. data/lib/active_scaffold/bridges/carrierwave/form_ui.rb +3 -8
  17. data/lib/active_scaffold/bridges/date_picker.rb +2 -3
  18. data/lib/active_scaffold/bridges/dragonfly/form_ui.rb +3 -7
  19. data/lib/active_scaffold/bridges/tiny_mce.rb +1 -5
  20. data/lib/active_scaffold/bridges/tiny_mce/helpers.rb +1 -5
  21. data/lib/active_scaffold/extensions/action_view_rendering.rb +1 -6
  22. data/lib/active_scaffold/extensions/routing_mapper.rb +1 -1
  23. data/lib/active_scaffold/helpers/controller_helpers.rb +2 -2
  24. data/lib/active_scaffold/helpers/form_column_helpers.rb +3 -10
  25. data/lib/active_scaffold/version.rb +2 -2
  26. data/vendor/assets/javascripts/getprototypeof.js +12 -0
  27. data/vendor/assets/javascripts/jquery-ui-timepicker-addon.js +1882 -1276
  28. metadata +71 -65
  29. checksums.yaml +0 -7
  30. data/app/assets/javascripts/prototype/active_scaffold.js +0 -1103
  31. data/app/assets/javascripts/prototype/dhtml_history.js +0 -870
  32. data/app/assets/javascripts/prototype/form_enhancements.js +0 -117
  33. data/app/assets/javascripts/prototype/rico_corner.js +0 -370
  34. data/app/assets/javascripts/prototype/tiny_mce_bridge.js +0 -7
  35. data/lib/active_scaffold/bridges/calendar_date_select.rb +0 -24
  36. data/lib/active_scaffold/bridges/calendar_date_select/as_cds_bridge.rb +0 -67
metadata CHANGED
@@ -1,32 +1,36 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_scaffold-sequel
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.1
4
+ version: 0.8.0
5
+ prerelease:
5
6
  platform: ruby
6
7
  authors:
7
8
  - Many, see README
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2014-12-19 00:00:00.000000000 Z
12
+ date: 2015-04-26 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: shoulda
15
16
  requirement: !ruby/object:Gem::Requirement
17
+ none: false
16
18
  requirements:
17
- - - '>='
19
+ - - ! '>='
18
20
  - !ruby/object:Gem::Version
19
21
  version: '0'
20
22
  type: :development
21
23
  prerelease: false
22
24
  version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
23
26
  requirements:
24
- - - '>='
27
+ - - ! '>='
25
28
  - !ruby/object:Gem::Version
26
29
  version: '0'
27
30
  - !ruby/object:Gem::Dependency
28
31
  name: bundler
29
32
  requirement: !ruby/object:Gem::Requirement
33
+ none: false
30
34
  requirements:
31
35
  - - ~>
32
36
  - !ruby/object:Gem::Version
@@ -34,6 +38,7 @@ dependencies:
34
38
  type: :development
35
39
  prerelease: false
36
40
  version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
37
42
  requirements:
38
43
  - - ~>
39
44
  - !ruby/object:Gem::Version
@@ -41,43 +46,49 @@ dependencies:
41
46
  - !ruby/object:Gem::Dependency
42
47
  name: rcov
43
48
  requirement: !ruby/object:Gem::Requirement
49
+ none: false
44
50
  requirements:
45
- - - '>='
51
+ - - ! '>='
46
52
  - !ruby/object:Gem::Version
47
53
  version: '0'
48
54
  type: :development
49
55
  prerelease: false
50
56
  version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
51
58
  requirements:
52
- - - '>='
59
+ - - ! '>='
53
60
  - !ruby/object:Gem::Version
54
61
  version: '0'
55
62
  - !ruby/object:Gem::Dependency
56
63
  name: rails
57
64
  requirement: !ruby/object:Gem::Requirement
65
+ none: false
58
66
  requirements:
59
- - - '>='
67
+ - - ! '>='
60
68
  - !ruby/object:Gem::Version
61
69
  version: 3.1.3
62
70
  type: :runtime
63
71
  prerelease: false
64
72
  version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
65
74
  requirements:
66
- - - '>='
75
+ - - ! '>='
67
76
  - !ruby/object:Gem::Version
68
77
  version: 3.1.3
69
78
  - !ruby/object:Gem::Dependency
70
79
  name: sequel
71
80
  requirement: !ruby/object:Gem::Requirement
81
+ none: false
72
82
  requirements:
73
- - - '>='
83
+ - - ! '>='
74
84
  - !ruby/object:Gem::Version
75
85
  version: '0'
76
86
  type: :runtime
77
87
  prerelease: false
78
88
  version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
79
90
  requirements:
80
- - - '>='
91
+ - - ! '>='
81
92
  - !ruby/object:Gem::Version
82
93
  version: '0'
83
94
  description: The original ActiveScaffold supports Rails (http://rubyonrails.org/)
@@ -89,8 +100,8 @@ extensions: []
89
100
  extra_rdoc_files:
90
101
  - README
91
102
  files:
92
- - app/assets/images/active_scaffold/arrow_down.gif
93
103
  - app/assets/images/active_scaffold/add.gif
104
+ - app/assets/images/active_scaffold/arrow_down.gif
94
105
  - app/assets/images/active_scaffold/indicator-small.gif
95
106
  - app/assets/images/active_scaffold/arrow_up.gif
96
107
  - app/assets/images/active_scaffold/close.gif
@@ -105,17 +116,12 @@ files:
105
116
  - app/assets/javascripts/jquery/jquery.editinplace.js
106
117
  - app/assets/javascripts/jquery/draggable_lists.js
107
118
  - app/assets/javascripts/jquery/tiny_mce_bridge.js
108
- - app/assets/javascripts/prototype/form_enhancements.js
109
- - app/assets/javascripts/prototype/active_scaffold.js
110
- - app/assets/javascripts/prototype/dhtml_history.js
111
- - app/assets/javascripts/prototype/tiny_mce_bridge.js
112
- - app/assets/javascripts/prototype/rico_corner.js
113
119
  - app/assets/javascripts/active_scaffold.js.erb
114
- - app/assets/stylesheets/active_scaffold.css.scss
120
+ - app/assets/stylesheets/active_scaffold_colors.scss
115
121
  - app/assets/stylesheets/active_scaffold-ie.css
116
122
  - app/assets/stylesheets/active_scaffold_extensions.css.erb
117
- - app/assets/stylesheets/active_scaffold_colors.css.scss
118
- - app/assets/stylesheets/active_scaffold_images.css.scss
123
+ - app/assets/stylesheets/active_scaffold_images.scss
124
+ - app/assets/stylesheets/active_scaffold.scss
119
125
  - app/assets/stylesheets/active_scaffold_layout.css
120
126
  - app/assets/stylesheets/blue-theme.css
121
127
  - config/locales/de.yml
@@ -126,36 +132,35 @@ files:
126
132
  - config/locales/ja.yml
127
133
  - config/locales/ru.yml
128
134
  - doc/README.mark
129
- - frontends/default/views/_add_existing_form.html.erb
130
135
  - frontends/default/views/_action_group.html.erb
131
- - frontends/default/views/_create_form.html.erb
136
+ - frontends/default/views/_add_existing_form.html.erb
132
137
  - frontends/default/views/_base_form.html.erb
133
- - frontends/default/views/_form_association_footer.html.erb
138
+ - frontends/default/views/_create_form.html.erb
134
139
  - frontends/default/views/_create_form_on_list.html.erb
135
140
  - frontends/default/views/_field_search.html.erb
136
141
  - frontends/default/views/_form.html.erb
137
142
  - frontends/default/views/_form_association.html.erb
138
- - frontends/default/views/_form_hidden_attribute.html.erb
143
+ - frontends/default/views/_form_association_footer.html.erb
139
144
  - frontends/default/views/_form_attribute.html.erb
140
- - frontends/default/views/_list_actions.html.erb
141
- - frontends/default/views/_list.html.erb
145
+ - frontends/default/views/_form_hidden_attribute.html.erb
142
146
  - frontends/default/views/_form_messages.html.erb
143
147
  - frontends/default/views/_horizontal_subform.html.erb
148
+ - frontends/default/views/_human_conditions.html.erb
144
149
  - frontends/default/views/_horizontal_subform_footer.html.erb
145
150
  - frontends/default/views/_horizontal_subform_header.html.erb
146
151
  - frontends/default/views/_horizontal_subform_record.html.erb
147
- - frontends/default/views/_human_conditions.html.erb
148
- - frontends/default/views/_list_column_headings.html.erb
152
+ - frontends/default/views/_list.html.erb
153
+ - frontends/default/views/_list_actions.html.erb
149
154
  - frontends/default/views/_list_calculations.html.erb
150
- - frontends/default/views/_list_inline_adapter.html.erb
155
+ - frontends/default/views/_list_column_headings.html.erb
151
156
  - frontends/default/views/_list_header.html.erb
152
- - frontends/default/views/_list_pagination.html.erb
157
+ - frontends/default/views/_list_inline_adapter.html.erb
153
158
  - frontends/default/views/_list_messages.html.erb
154
- - frontends/default/views/_vertical_subform_record.html.erb
159
+ - frontends/default/views/_list_pagination.html.erb
155
160
  - frontends/default/views/_list_pagination_links.html.erb
156
161
  - frontends/default/views/_list_record.html.erb
157
- - frontends/default/views/_list_record_columns.html.erb
158
162
  - frontends/default/views/_list_with_header.html.erb
163
+ - frontends/default/views/_list_record_columns.html.erb
159
164
  - frontends/default/views/_messages.html.erb
160
165
  - frontends/default/views/_render_field.js.erb
161
166
  - frontends/default/views/_row.html.erb
@@ -166,6 +171,7 @@ files:
166
171
  - frontends/default/views/_update_actions.html.erb
167
172
  - frontends/default/views/_update_form.html.erb
168
173
  - frontends/default/views/_vertical_subform.html.erb
174
+ - frontends/default/views/_vertical_subform_record.html.erb
169
175
  - frontends/default/views/action_confirmation.html.erb
170
176
  - frontends/default/views/add_existing.js.erb
171
177
  - frontends/default/views/add_existing_form.html.erb
@@ -198,7 +204,6 @@ files:
198
204
  - lib/active_scaffold/actions/show.rb
199
205
  - lib/active_scaffold/actions/subform.rb
200
206
  - lib/active_scaffold/actions/update.rb
201
- - lib/active_scaffold/bridges/calendar_date_select/as_cds_bridge.rb
202
207
  - lib/active_scaffold/bridges/cancan/cancan_bridge.rb
203
208
  - lib/active_scaffold/bridges/carrierwave/carrierwave_bridge_helpers.rb
204
209
  - lib/active_scaffold/bridges/carrierwave/carrierwave_bridge.rb
@@ -213,7 +218,6 @@ files:
213
218
  - lib/active_scaffold/bridges/dragonfly/list_ui.rb
214
219
  - lib/active_scaffold/bridges/shared/date_bridge.rb
215
220
  - lib/active_scaffold/bridges/tiny_mce/helpers.rb
216
- - lib/active_scaffold/bridges/calendar_date_select.rb
217
221
  - lib/active_scaffold/bridges/cancan.rb
218
222
  - lib/active_scaffold/bridges/carrierwave.rb
219
223
  - lib/active_scaffold/bridges/country_helper.rb
@@ -231,19 +235,19 @@ files:
231
235
  - lib/active_scaffold/config/mark.rb
232
236
  - lib/active_scaffold/config/search.rb
233
237
  - lib/active_scaffold/config/show.rb
234
- - lib/active_scaffold/config/subform.rb
235
238
  - lib/active_scaffold/config/update.rb
239
+ - lib/active_scaffold/config/subform.rb
236
240
  - lib/active_scaffold/data_structures/action_link.rb
237
241
  - lib/active_scaffold/data_structures/action_columns.rb
242
+ - lib/active_scaffold/data_structures/column.rb
243
+ - lib/active_scaffold/data_structures/set.rb
238
244
  - lib/active_scaffold/data_structures/action_links.rb
239
245
  - lib/active_scaffold/data_structures/actions.rb
240
246
  - lib/active_scaffold/data_structures/bridge.rb
241
- - lib/active_scaffold/data_structures/column.rb
242
247
  - lib/active_scaffold/data_structures/columns.rb
248
+ - lib/active_scaffold/data_structures/sorting.rb
243
249
  - lib/active_scaffold/data_structures/error_message.rb
244
250
  - lib/active_scaffold/data_structures/nested_info.rb
245
- - lib/active_scaffold/data_structures/set.rb
246
- - lib/active_scaffold/data_structures/sorting.rb
247
251
  - lib/active_scaffold/extensions/action_view_rendering.rb
248
252
  - lib/active_scaffold/extensions/localize.rb
249
253
  - lib/active_scaffold/extensions/name_option_for_datetime.rb
@@ -262,18 +266,18 @@ files:
262
266
  - lib/active_scaffold/helpers/pagination_helpers.rb
263
267
  - lib/active_scaffold/helpers/view_helpers.rb
264
268
  - lib/active_scaffold/helpers/show_column_helpers.rb
265
- - lib/active_scaffold/model_permissions.rb
266
269
  - lib/active_scaffold/attribute_params.rb
270
+ - lib/active_scaffold/constraints.rb
267
271
  - lib/active_scaffold/bridges.rb
268
272
  - lib/active_scaffold/configurable.rb
269
- - lib/active_scaffold/constraints.rb
270
- - lib/active_scaffold/engine.rb
271
273
  - lib/active_scaffold/finder.rb
274
+ - lib/active_scaffold/engine.rb
272
275
  - lib/active_scaffold/marked_model.rb
273
276
  - lib/active_scaffold/responds_to_parent.rb
277
+ - lib/active_scaffold/version.rb
274
278
  - lib/active_scaffold/paginator.rb
279
+ - lib/active_scaffold/model_permissions.rb
275
280
  - lib/active_scaffold/render.rb
276
- - lib/active_scaffold/version.rb
277
281
  - lib/active_scaffold/ring.rb
278
282
  - lib/generators/active_scaffold/USAGE
279
283
  - lib/generators/active_scaffold/active_scaffold_generator.rb
@@ -281,8 +285,8 @@ files:
281
285
  - lib/generators/active_scaffold_controller/templates/helper.rb
282
286
  - lib/generators/active_scaffold_controller/USAGE
283
287
  - lib/generators/active_scaffold_controller/active_scaffold_controller_generator.rb
284
- - lib/active_scaffold_env.rb
285
288
  - lib/active_scaffold.rb
289
+ - lib/active_scaffold_env.rb
286
290
  - public/blank.html
287
291
  - shoulda_macros/macros.rb
288
292
  - vendor/assets/images/ui-bg_diagonals-thick_18_b81900_40x40.png
@@ -300,6 +304,7 @@ files:
300
304
  - vendor/assets/images/ui-icons_ffd27a_256x240.png
301
305
  - vendor/assets/images/ui-icons_ffffff_256x240.png
302
306
  - vendor/assets/javascripts/jquery-ui-timepicker-addon.js
307
+ - vendor/assets/javascripts/getprototypeof.js
303
308
  - vendor/assets/stylesheets/jquery-ui.css
304
309
  - MIT-LICENSE
305
310
  - CHANGELOG
@@ -307,8 +312,8 @@ files:
307
312
  - test/bridges/paperclip_test.rb
308
313
  - test/bridges/bridge_test.rb
309
314
  - test/bridges/active_scaffold_dependent_protect_test.rb
310
- - test/bridges/company.rb
311
315
  - test/bridges/tiny_mce_test.rb
316
+ - test/bridges/company.rb
312
317
  - test/bridges/unobtrusive_date_picker_test.rb
313
318
  - test/bridges/validation_reflection_test.rb
314
319
  - test/config/field_search_test.rb
@@ -352,8 +357,8 @@ files:
352
357
  - test/mock_app/config/environments/test.rb
353
358
  - test/mock_app/config/initializers/backtrace_silencers.rb
354
359
  - test/mock_app/config/initializers/inflections.rb
355
- - test/mock_app/config/initializers/mime_types.rb
356
360
  - test/mock_app/config/initializers/new_rails_defaults.rb
361
+ - test/mock_app/config/initializers/mime_types.rb
357
362
  - test/mock_app/config/initializers/session_store.rb
358
363
  - test/mock_app/config/locales/en.yml
359
364
  - test/mock_app/config/database.yml
@@ -361,24 +366,24 @@ files:
361
366
  - test/mock_app/config/environment.rb
362
367
  - test/mock_app/config/routes.rb
363
368
  - test/mock_app/db/test.sqlite3
364
- - test/mock_app/public/images/active_scaffold/default/arrow_down.gif
369
+ - test/mock_app/public/blank.html
370
+ - test/mock_app/public/images/active_scaffold/DO_NOT_EDIT
365
371
  - test/mock_app/public/images/active_scaffold/default/add.gif
366
- - test/mock_app/public/images/active_scaffold/default/indicator-small.gif
372
+ - test/mock_app/public/images/active_scaffold/default/arrow_down.gif
367
373
  - test/mock_app/public/images/active_scaffold/default/arrow_up.gif
368
374
  - test/mock_app/public/images/active_scaffold/default/close.gif
369
375
  - test/mock_app/public/images/active_scaffold/default/cross.png
376
+ - test/mock_app/public/images/active_scaffold/default/indicator-small.gif
370
377
  - test/mock_app/public/images/active_scaffold/default/indicator.gif
371
378
  - test/mock_app/public/images/active_scaffold/default/magnifier.png
372
- - test/mock_app/public/images/active_scaffold/DO_NOT_EDIT
373
- - test/mock_app/public/javascripts/active_scaffold/default/form_enhancements.js
379
+ - test/mock_app/public/javascripts/active_scaffold/DO_NOT_EDIT
374
380
  - test/mock_app/public/javascripts/active_scaffold/default/active_scaffold.js
375
381
  - test/mock_app/public/javascripts/active_scaffold/default/dhtml_history.js
382
+ - test/mock_app/public/javascripts/active_scaffold/default/form_enhancements.js
376
383
  - test/mock_app/public/javascripts/active_scaffold/default/rico_corner.js
377
- - test/mock_app/public/javascripts/active_scaffold/DO_NOT_EDIT
384
+ - test/mock_app/public/stylesheets/active_scaffold/DO_NOT_EDIT
378
385
  - test/mock_app/public/stylesheets/active_scaffold/default/stylesheet-ie.css
379
386
  - test/mock_app/public/stylesheets/active_scaffold/default/stylesheet.css
380
- - test/mock_app/public/stylesheets/active_scaffold/DO_NOT_EDIT
381
- - test/mock_app/public/blank.html
382
387
  - test/const_mocker.rb
383
388
  - test/model_stub.rb
384
389
  - test/run_all.rb
@@ -386,33 +391,34 @@ files:
386
391
  homepage: http://as-seq.rubyforge.org/
387
392
  licenses:
388
393
  - MIT
389
- metadata: {}
390
394
  post_install_message:
391
395
  rdoc_options: []
392
396
  require_paths:
393
397
  - lib
394
398
  required_ruby_version: !ruby/object:Gem::Requirement
399
+ none: false
395
400
  requirements:
396
- - - '>='
401
+ - - ! '>='
397
402
  - !ruby/object:Gem::Version
398
403
  version: '0'
399
404
  required_rubygems_version: !ruby/object:Gem::Requirement
405
+ none: false
400
406
  requirements:
401
- - - '>='
407
+ - - ! '>='
402
408
  - !ruby/object:Gem::Version
403
409
  version: '0'
404
410
  requirements: []
405
411
  rubyforge_project:
406
- rubygems_version: 2.0.14
412
+ rubygems_version: 1.8.23.2
407
413
  signing_key:
408
- specification_version: 4
414
+ specification_version: 3
409
415
  summary: ActiveScaffold version supporting Sequel with Rails 3.1.
410
416
  test_files:
411
417
  - test/bridges/paperclip_test.rb
412
418
  - test/bridges/bridge_test.rb
413
419
  - test/bridges/active_scaffold_dependent_protect_test.rb
414
- - test/bridges/company.rb
415
420
  - test/bridges/tiny_mce_test.rb
421
+ - test/bridges/company.rb
416
422
  - test/bridges/unobtrusive_date_picker_test.rb
417
423
  - test/bridges/validation_reflection_test.rb
418
424
  - test/config/field_search_test.rb
@@ -456,8 +462,8 @@ test_files:
456
462
  - test/mock_app/config/environments/test.rb
457
463
  - test/mock_app/config/initializers/backtrace_silencers.rb
458
464
  - test/mock_app/config/initializers/inflections.rb
459
- - test/mock_app/config/initializers/mime_types.rb
460
465
  - test/mock_app/config/initializers/new_rails_defaults.rb
466
+ - test/mock_app/config/initializers/mime_types.rb
461
467
  - test/mock_app/config/initializers/session_store.rb
462
468
  - test/mock_app/config/locales/en.yml
463
469
  - test/mock_app/config/database.yml
@@ -465,24 +471,24 @@ test_files:
465
471
  - test/mock_app/config/environment.rb
466
472
  - test/mock_app/config/routes.rb
467
473
  - test/mock_app/db/test.sqlite3
468
- - test/mock_app/public/images/active_scaffold/default/arrow_down.gif
474
+ - test/mock_app/public/blank.html
475
+ - test/mock_app/public/images/active_scaffold/DO_NOT_EDIT
469
476
  - test/mock_app/public/images/active_scaffold/default/add.gif
470
- - test/mock_app/public/images/active_scaffold/default/indicator-small.gif
477
+ - test/mock_app/public/images/active_scaffold/default/arrow_down.gif
471
478
  - test/mock_app/public/images/active_scaffold/default/arrow_up.gif
472
479
  - test/mock_app/public/images/active_scaffold/default/close.gif
473
480
  - test/mock_app/public/images/active_scaffold/default/cross.png
481
+ - test/mock_app/public/images/active_scaffold/default/indicator-small.gif
474
482
  - test/mock_app/public/images/active_scaffold/default/indicator.gif
475
483
  - test/mock_app/public/images/active_scaffold/default/magnifier.png
476
- - test/mock_app/public/images/active_scaffold/DO_NOT_EDIT
477
- - test/mock_app/public/javascripts/active_scaffold/default/form_enhancements.js
484
+ - test/mock_app/public/javascripts/active_scaffold/DO_NOT_EDIT
478
485
  - test/mock_app/public/javascripts/active_scaffold/default/active_scaffold.js
479
486
  - test/mock_app/public/javascripts/active_scaffold/default/dhtml_history.js
487
+ - test/mock_app/public/javascripts/active_scaffold/default/form_enhancements.js
480
488
  - test/mock_app/public/javascripts/active_scaffold/default/rico_corner.js
481
- - test/mock_app/public/javascripts/active_scaffold/DO_NOT_EDIT
489
+ - test/mock_app/public/stylesheets/active_scaffold/DO_NOT_EDIT
482
490
  - test/mock_app/public/stylesheets/active_scaffold/default/stylesheet-ie.css
483
491
  - test/mock_app/public/stylesheets/active_scaffold/default/stylesheet.css
484
- - test/mock_app/public/stylesheets/active_scaffold/DO_NOT_EDIT
485
- - test/mock_app/public/blank.html
486
492
  - test/const_mocker.rb
487
493
  - test/model_stub.rb
488
494
  - test/run_all.rb
checksums.yaml DELETED
@@ -1,7 +0,0 @@
1
- ---
2
- SHA1:
3
- metadata.gz: 215d2fdcd862770261b68026cc22652929cb9cba
4
- data.tar.gz: 226549b5e7ed054a97522f447bfbd54cf4e4a700
5
- SHA512:
6
- metadata.gz: 78d94becc4ec7f41951fe13b99f74c3755ee4e402999c935c63c5500fd8f70d4803d0eb6cc3e7563924138a5a1a0027a6ccc4ed5b8dfe939074bbd365c7b8bec
7
- data.tar.gz: 76a398b2f428ce810598d59de9e2a448c3afd333bcfff7a331355720be1505a21a5aff887f4bf61a0ea246ac9e78f1866776fd1246f9c7958692bed420cc5dd7
@@ -1,1103 +0,0 @@
1
- if (typeof Prototype == 'undefined')
2
- {
3
- warning = "ActiveScaffold Error: Prototype could not be found. Please make sure that your application's layout includes prototype.js (e.g. <%= javascript_include_tag :defaults %>) *before* it includes active_scaffold.js (e.g. <%= active_scaffold_includes %>).";
4
- alert(warning);
5
- }
6
- if (Prototype.Version.substring(0, 3) < '1.6')
7
- {
8
- warning = "ActiveScaffold Error: Prototype version 1.6.x or higher is required. Please update prototype.js (rake rails:update:javascripts).";
9
- alert(warning);
10
- }
11
- if (!Element.Methods.highlight) Element.addMethods({highlight: Prototype.emptyFunction});
12
-
13
-
14
- document.observe("dom:loaded", function() {
15
- document.on('ajax:create', 'form.as_form', function(event) {
16
- var source = event.findElement();
17
- var as_form = event.findElement('form');
18
- if (source.nodeName.toUpperCase() == 'INPUT' && source.readAttribute('type') == 'button') {
19
- // Hack: Prototype or rails.js somehow screw up event handling if someone clicks
20
- // a button of type button such as Create Another <Association>
21
- // as a result form is disabled but never reenabled..
22
- } else {
23
- if (as_form && as_form.readAttribute('data-loading') == 'true') {
24
- ActiveScaffold.disable_form(as_form);
25
- }
26
- }
27
- return true;
28
- });
29
- document.on('ajax:complete', 'form.as_form', function(event) {
30
- var as_form = event.findElement('form');
31
- if (as_form && as_form.readAttribute('data-loading') == 'true') {
32
- ActiveScaffold.enable_form(as_form);
33
- event.stop();
34
- return false;
35
- }
36
- });
37
- document.on('ajax:failure', 'form.as_form', function(event) {
38
- var as_div = event.findElement('div.active-scaffold');
39
- if (as_div) {
40
- ActiveScaffold.report_500_response(as_div)
41
- event.stop();
42
- return false;
43
- }
44
- });
45
- document.on('submit', 'form.as_form.as_remote_upload', function(event) {
46
- var as_form = event.findElement('form');
47
- if (as_form && as_form.readAttribute('data-loading') == 'true') {
48
- setTimeout("ActiveScaffold.disable_form('" + as_form.readAttribute('id') + "')", 10);
49
- }
50
- return true;
51
- });
52
- document.on('ajax:before', 'a.as_action', function(event) {
53
- var action_link = ActiveScaffold.ActionLink.get(event.findElement());
54
- if (action_link) {
55
- if (action_link.is_disabled()) {
56
- event.stop();
57
- } else {
58
- if (action_link.loading_indicator) action_link.loading_indicator.style.visibility = 'visible';
59
- action_link.disable();
60
- }
61
- }
62
- return true;
63
- });
64
- document.on('ajax:before', 'a.as_action.marked_records_action', function(event) {
65
- var action_link = event.findElement();
66
- var marked_records = 'marked_records=' + ActiveScaffold.marked_records.join('%2C');
67
- var regexp = /(\?|&)marked_records=[^&]*/g;
68
- var match;
69
- if (action_link.search[0] == '?') {
70
- match = regexp.exec(action_link.search);
71
- if (match) {
72
- action_link.search = action_link.search.slice(0, match.index) + match[1] + marked_records + action_link.search.slice(regexp.lastIndex, action_link.search.length);
73
- } else {
74
- action_link.search = action_link.search + '&' + marked_records;
75
- }
76
- } else {
77
- action_link.search = '?' + marked_records;
78
- }
79
- return true;
80
- });
81
- document.on('ajax:complete', 'a.as_action.marked_records_action', function(event) {
82
- var action_link = event.findElement();
83
- ActiveScaffold.mark_records(action_link.readAttribute('data-tbody_id'), false);
84
- ActiveScaffold.marked_records = [];
85
- return true;
86
- });
87
- document.on('ajax:success', 'a.as_action', function(event) {
88
- var action_link = ActiveScaffold.ActionLink.get(event.findElement());
89
- if (action_link && event.memo && event.memo.request) {
90
- if (action_link.position) {
91
- action_link.insert(event.memo.request.transport.responseText);
92
- if (action_link.hide_target) action_link.target.hide();
93
- } else {
94
- //event.memo.request.evalResponse(); // (clyfe) prototype evals the response by itself checking headers, this would eval twice
95
- action_link.enable();
96
- }
97
- event.stop();
98
- }
99
- return true;
100
- });
101
- document.on('ajax:complete', 'a.as_action', function(event) {
102
- var action_link = ActiveScaffold.ActionLink.get(event.findElement());
103
- if (action_link && action_link.loading_indicator) {
104
- action_link.loading_indicator.style.visibility = 'hidden';
105
- }
106
- return true;
107
- });
108
- document.on('ajax:failure', 'a.as_action', function(event) {
109
- var action_link = ActiveScaffold.ActionLink.get(event.findElement());
110
- if (action_link) {
111
- ActiveScaffold.report_500_response(action_link.scaffold_id());
112
- action_link.enable();
113
- }
114
- return true;
115
- });
116
- document.on('ajax:before', 'a.as_cancel', function(event) {
117
- var as_cancel = event.findElement();
118
- var action_link = ActiveScaffold.find_action_link(as_cancel);
119
-
120
- if (action_link) {
121
- var refresh_data = as_cancel.readAttribute('data-refresh');
122
- if (refresh_data === 'true' && action_link.refresh_url) {
123
- event.memo.url = action_link.refresh_url;
124
- } else if (refresh_data === 'false' || as_cancel.readAttribute('href').blank()) {
125
- action_link.close();
126
- event.stop();
127
- }
128
- }
129
- return true;
130
- });
131
- document.on('ajax:success', 'a.as_cancel', function(event) {
132
- var action_link = ActiveScaffold.find_action_link(event.findElement());
133
- if (action_link) {
134
- if (action_link.position) {
135
- action_link.close(event.memo.request.responseText);
136
- } else {
137
- event.memo.request.evalResponse();
138
- }
139
- }
140
- return true;
141
- });
142
- document.on('ajax:failure', 'a.as_cancel', function(event) {
143
- var action_link = ActiveScaffold.find_action_link(event.findElement());
144
- if (action_link) {
145
- ActiveScaffold.report_500_response(action_link.scaffold_id());
146
- }
147
- return true;
148
- });
149
- document.on('ajax:before', 'a.as_sort', function(event) {
150
- var as_sort = event.findElement();
151
- var history_controller_id = as_sort.readAttribute('data-page-history');
152
- if (history_controller_id) addActiveScaffoldPageToHistory(as_sort.readAttribute('href'), history_controller_id);
153
- as_sort.up('th').addClassName('loading');
154
- return true;
155
- });
156
- document.on('ajax:failure', 'a.as_sort', function(event) {
157
- var as_scaffold = event.findElement('.active-scaffold');
158
- ActiveScaffold.report_500_response(as_scaffold);
159
- return true;
160
- });
161
- document.on('mouseover', 'span.mark_record_field,span.mark_heading,span.in_place_editor_field', function(event) {
162
- event.findElement().addClassName('hover');
163
- });
164
- document.on('mouseout', 'span.mark_record_field,span.mark_heading,span.in_place_editor_field', function(event) {
165
- event.findElement().removeClassName('hover');
166
- });
167
- document.on('click', 'span.mark_record_field', function(event) {
168
- ActiveScaffold.mark_span(event.findElement('span.mark_record_field'));
169
- });
170
- document.on('click', 'span.mark_heading', function(event) {
171
- var span = event.findElement('span.mark_heading');
172
- var checkbox = span.down('input[type="checkbox"]');
173
- var tbody_id = span.readAttribute('data-tbody_id');
174
- if (checkbox.checked) {
175
- ActiveScaffold.mark_records(tbody_id, true);
176
- } else {
177
- ActiveScaffold.mark_records(tbody_id, false);
178
- }
179
- });
180
- document.on('click', 'span.in_place_editor_field', function(event) {
181
- var span = event.findElement('span.in_place_editor_field');
182
-
183
- if (typeof(span.inplace_edit) === 'undefined') {
184
- var options = {htmlResponse: false,
185
- onEnterHover: null,
186
- onLeaveHover: null,
187
- onComplete: null,
188
- params: '',
189
- ajaxOptions: {method: 'post'}},
190
- csrf_param = $$('meta[name=csrf-param]')[0],
191
- csrf_token = $$('meta[name=csrf-token]')[0],
192
- my_parent = span.up(),
193
- column_heading = null;
194
-
195
- if(!(my_parent.nodeName.toLowerCase() === 'td' || my_parent.nodeName.toLowerCase() === 'th')){
196
- my_parent = span.up('td');
197
- }
198
-
199
- if (my_parent.nodeName.toLowerCase() === 'td') {
200
- var heading_selector = '.' + span.up().readAttribute('class').split(' ')[0] + '_heading';
201
- column_heading = span.up('.active-scaffold').down(heading_selector);
202
- } else if (my_parent.nodeName.toLowerCase() === 'th') {
203
- column_heading = my_parent;
204
- }
205
-
206
- var render_url = column_heading.readAttribute('data-ie_render_url'),
207
- mode = column_heading.readAttribute('data-ie_mode'),
208
- record_id = span.readAttribute('data-ie_id');
209
-
210
- ActiveScaffold.read_inplace_edit_heading_attributes(column_heading, options);
211
-
212
- if (span.readAttribute('data-ie_url')) {
213
- options.url = span.readAttribute('data-ie_url');
214
- } else {
215
- options.url = column_heading.readAttribute('data-ie_url');
216
- }
217
- if (record_id) options.url = options.url.sub('__id__', record_id);
218
-
219
- if (csrf_param) options['params'] = csrf_param.readAttribute('content') + '=' + csrf_token.readAttribute('content');
220
-
221
- if (span.up('div.active-scaffold').readAttribute('data-eid')) {
222
- if (options['params'].length > 0) {
223
- options['params'] += "&";
224
- }
225
- options['params'] += ("eid=" + span.up('div.active-scaffold').readAttribute('data-eid'));
226
- }
227
-
228
- if (mode === 'clone') {
229
- options.nodeIdSuffix = record_id;
230
- options.inplacePatternSelector = '#' + column_heading.readAttribute('id') + ' .as_inplace_pattern';
231
- options['onFormCustomization'] = new Function('element', 'form', 'element.clonePatternField();');
232
- }
233
-
234
- if (render_url) {
235
- var plural = false;
236
- if (column_heading.readAttribute('data-ie_plural')) plural = true;
237
- options['onFormCustomization'] = new Function('element', 'form', 'element.setFieldFromAjax(' + "'" + render_url.sub('__id__', record_id) + "', {plural: " + plural + '});');
238
- }
239
-
240
- if (mode === 'inline_checkbox') {
241
- ActiveScaffold.process_checkbox_inplace_edit(span.down('input[type="checkbox"]'), options);
242
- } else {
243
- ActiveScaffold.create_inplace_editor(span, options);
244
- }
245
- }
246
- return true;
247
- });
248
- document.on('ajax:before', 'a.as_paginate', function(event) {
249
- var as_paginate = event.findElement();
250
- var loading_indicator = as_paginate.up().down('img.loading-indicator');
251
- var history_controller_id = as_paginate.readAttribute('data-page-history');
252
-
253
- if (history_controller_id) addActiveScaffoldPageToHistory(as_paginate.readAttribute('href'), history_controller_id);
254
- if (loading_indicator) loading_indicator.style.visibility = 'visible';
255
- return true;
256
- });
257
- document.on('ajax:failure', 'a.as_paginate', function(event) {
258
- var as_scaffold = event.findElement('.active-scaffold');
259
- ActiveScaffold.report_500_response(as_scaffold);
260
- return true;
261
- });
262
- document.on('ajax:complete', 'a.as_paginate', function(event) {
263
- var as_paginate = event.findElement();
264
- var loading_indicator = as_paginate.up().down('img.loading-indicator');
265
-
266
- if(loading_indicator) loading_indicator.style.visibility = 'hidden';
267
- return true;
268
- });
269
- document.on('ajax:before', 'a.as_add_existing, a.as_replace_existing', function(event) {
270
- var button = event.findElement();
271
- var url = button.readAttribute('href').sub('--ID--', button.previous().getValue());
272
- event.memo.url = url;
273
- return true;
274
- });
275
- document.on('change', 'input.update_form, textarea.update_form, select.update_form', function(event) {
276
- var element = event.findElement();
277
- ActiveScaffold.update_column(element, element.readAttribute('data-update_url'), element.hasAttribute('data-update_send_form'), element.readAttribute('id'), element.getValue());
278
- return true;
279
- });
280
- document.on('recordselect:change', 'input.recordselect.update_form', function(event) {
281
- var element = event.findElement();
282
- ActiveScaffold.update_column(element, element.readAttribute('data-update_url'), element.hasAttribute('data-update_send_form'), element.readAttribute('id'), element.memo.id);
283
- return true;
284
- });
285
- document.on('change', 'select.as_search_range_option', function(event) {
286
- var element = event.findElement();
287
- Element[element.value == 'BETWEEN' ? 'show' : 'hide'](element.readAttribute('id').sub('_opt', '_between'));
288
- return true;
289
- });
290
- document.on('change', 'select.as_search_date_time_option', function(event) {
291
- var element = event.findElement();
292
- Element[!(element.value == 'PAST' || element.value == 'FUTURE' || element.value == 'RANGE') ? 'show' : 'hide'](element.readAttribute('id').sub('_opt', '_numeric'));
293
- Element[(element.value == 'PAST' || element.value == 'FUTURE') ? 'show' : 'hide'](element.readAttribute('id').sub('_opt', '_trend'));
294
- Element[element.value == 'RANGE' ? 'show' : 'hide'](element.readAttribute('id').sub('_opt', '_range'));
295
- return true;
296
- });
297
- document.on('change', 'select.as_update_date_operator', function(event) {
298
- var element = event.findElement();
299
- Element[element.value == 'REPLACE' ? 'show' : 'hide'](element.next());
300
- Element[element.value == 'REPLACE' ? 'show' : 'hide'](element.next().next());
301
- Element[element.value == 'REPLACE' ? 'hide' : 'show'](element.next('span'));
302
- return true;
303
- });
304
- document.on("click", "a[data-popup]", function(event, element) {
305
- if (event.stopped) return;
306
- window.open($(element).href);
307
- event.stop();
308
- });
309
- document.on("click", ".hover_click", function(event, element) {
310
- var ul_element = element.down('ul');
311
- if (ul_element.getStyle('display') === 'none') {
312
- ul_element.style.display = 'block';
313
- } else {
314
- ul_element.style.display = 'none';
315
- }
316
-
317
- return true;
318
- });
319
- document.on("click", ".hover_click a.as_action", function(event, element) {
320
- var element = element.up('.hover_click').down('ul');
321
- if (element) {
322
- element.style.display = 'none';
323
- }
324
- return true;
325
- });
326
- });
327
-
328
-
329
- /*
330
- * Simple utility methods
331
- */
332
-
333
- var ActiveScaffold = {
334
- records_for: function(tbody_id) {
335
- var rows = [];
336
- var child = $(tbody_id).down('.record');
337
- while (child) {
338
- rows.push(child);
339
- child = child.next('.record');
340
- }
341
- return rows;
342
- },
343
- stripe: function(tbody_id) {
344
- var even = false;
345
- var rows = this.records_for(tbody_id);
346
- for (var i = 0; i < rows.length; i++) {
347
- var child = rows[i];
348
- //Make sure to skip rows that are create or edit rows or messages
349
- if (child.tagName != 'SCRIPT'
350
- && !child.hasClassName("create")
351
- && !child.hasClassName("update")
352
- && !child.hasClassName("inline-adapter")
353
- && !child.hasClassName("active-scaffold-calculations")) {
354
-
355
- if (even) child.addClassName("even-record");
356
- else child.removeClassName("even-record");
357
-
358
- even = !even;
359
- }
360
- }
361
- },
362
- hide_empty_message: function(tbody) {
363
- if (this.records_for(tbody).length != 0) {
364
- var empty_message_nodes = $(tbody).up().select('tbody.messages p.empty-message')
365
- empty_message_nodes.invoke('hide');
366
- }
367
- },
368
- reload_if_empty: function(tbody, url) {
369
- if (this.records_for(tbody).length == 0) {
370
- new Ajax.Request(url, {
371
- method: 'get',
372
- asynchronous: true,
373
- evalScripts: true
374
- });
375
- }
376
- },
377
- removeSortClasses: function(scaffold) {
378
- scaffold = $(scaffold)
379
- scaffold.select('td.sorted').each(function(element) {
380
- element.removeClassName("sorted");
381
- });
382
- scaffold.select('th.sorted').each(function(element) {
383
- element.removeClassName("sorted");
384
- element.removeClassName("asc");
385
- element.removeClassName("desc");
386
- });
387
- },
388
- decrement_record_count: function(scaffold) {
389
- // decrement the last record count, firsts record count are in nested lists
390
- scaffold = $(scaffold)
391
- count = scaffold.select('span.active-scaffold-records').last();
392
- if (count) count.update(parseInt(count.innerHTML, 10) - 1);
393
- },
394
- increment_record_count: function(scaffold) {
395
- // increment the last record count, firsts record count are in nested lists
396
- scaffold = $(scaffold)
397
- count = scaffold.select('span.active-scaffold-records').last();
398
- if (count) count.update(parseInt(count.innerHTML, 10) + 1);
399
- },
400
- update_row: function(row, html) {
401
- row = $(row);
402
- var new_row = this.replace(row, html)
403
- if (row.hasClassName('even-record')) new_row.addClassName('even-record');
404
- new_row.highlight();
405
- },
406
-
407
- replace: function(element, html) {
408
- element = $(element)
409
- Element.replace(element, html);
410
- element = $(element.readAttribute('id'));
411
- return element;
412
- },
413
-
414
- replace_html: function(element, html) {
415
- element = $(element);
416
- element.update(html);
417
- return element;
418
- },
419
-
420
- remove: function(element) {
421
- $(element).remove();
422
- },
423
-
424
- hide: function(element) {
425
- $(element).hide();
426
- },
427
-
428
- show: function(element) {
429
- $(element).show();
430
- },
431
-
432
- reset_form: function(element) {
433
- $(element).reset();
434
- },
435
-
436
- disable_form: function(as_form) {
437
- as_form = $(as_form)
438
- var loading_indicator = $(as_form.readAttribute('id').sub('-form', '-loading-indicator'));
439
- if (loading_indicator) loading_indicator.style.visibility = 'visible';
440
- as_form.disable();
441
- },
442
-
443
- enable_form: function(as_form) {
444
- as_form = $(as_form)
445
- var loading_indicator = $(as_form.readAttribute('id').sub('-form', '-loading-indicator'));
446
- if (loading_indicator) loading_indicator.style.visibility = 'hidden';
447
- as_form.enable();
448
- },
449
-
450
- focus_first_element_of_form: function(form_element) {
451
- Form.focusFirstElement(form_element);
452
- },
453
-
454
- create_record_row: function(active_scaffold_id, html, options) {
455
- tbody = $(active_scaffold_id).down('tbody.records');
456
-
457
- var new_row = null;
458
-
459
- if (options.insert_at == 'top') {
460
- tbody.insert({top: html});
461
- new_row = tbody.firstDescendant();
462
- } else if (options.insert_at == 'bottom') {
463
- var last_row = tbody.childElements().reverse().detect(function(node) { return node.hasClassName('record') || node.hasClassName('inline-adapter')});
464
- if (last_row) {
465
- last_row.insert({after: html});
466
- } else {
467
- tbody.insert({bottom: html});
468
- }
469
- new_row = Selector.findChildElements(tbody, ['tr.record']).last();
470
- }
471
-
472
- this.stripe(tbody);
473
- this.hide_empty_message(tbody);
474
- this.increment_record_count(tbody.up('div.active-scaffold'));
475
- new_row.highlight();
476
- },
477
-
478
- delete_record_row: function(row, page_reload_url) {
479
- row = $(row);
480
- var tbody = row.up('tbody.records');
481
-
482
- var current_action_node = row.down('td.actions a.disabled');
483
-
484
- if (current_action_node) {
485
- var action_link = ActiveScaffold.ActionLink.get(current_action_node);
486
- if (action_link) {
487
- action_link.close_previous_adapter();
488
- }
489
- }
490
- row.remove();
491
- tbody = $(tbody);
492
- this.stripe(tbody);
493
- this.decrement_record_count(tbody.up('div.active-scaffold'));
494
- this.reload_if_empty(tbody, page_reload_url);
495
- },
496
-
497
- delete_subform_record: function(record) {
498
- var errors = $(record).previous();
499
- if (errors.hasClassName('association-record-errors')) {
500
- this.remove(errors);
501
- }
502
- var associated = $(record).next();
503
- this.remove(record);
504
- while (associated && associated.hasClassName('associated-record')) {
505
- record = associated;
506
- associated = $(record).next();
507
- this.remove(record);
508
- }
509
- },
510
-
511
- report_500_response: function(active_scaffold_id) {
512
- server_error = $(active_scaffold_id).down('td.messages-container p.server-error');
513
- if (server_error.visible()) {
514
- server_error.highlight();
515
- } else {
516
- server_error.show();
517
- }
518
- },
519
-
520
- find_action_link: function(element) {
521
- return ActiveScaffold.ActionLink.get($(element).up('.as_adapter'));
522
- },
523
-
524
- scroll_to: function(element) {
525
- $(element).scrollTo();
526
- },
527
-
528
- process_checkbox_inplace_edit: function(checkbox, options) {
529
- var checked = checkbox.readAttribute('checked');
530
- // checked attribute is nt updated
531
- if (checked !== 'checked') options['params'] += '&value=1';
532
- new Ajax.Request(options.url, {
533
- method: 'post',
534
- parameters: options['params'],
535
- onCreate: function(response) {
536
- checkbox.disable();
537
- },
538
- onComplete: function(response) {
539
- checkbox.enable();
540
- }
541
- });
542
- },
543
-
544
- read_inplace_edit_heading_attributes: function(column_heading, options) {
545
- if (column_heading.readAttribute('data-ie_cancel_text')) options.cancelText = column_heading.readAttribute('data-ie_cancel_text');
546
- if (column_heading.readAttribute('data-ie_loading_text')) options.loadingText = column_heading.readAttribute('data-ie_loading_text');
547
- if (column_heading.readAttribute('data-ie_saving_text')) options.savingText = column_heading.readAttribute('data-ie_saving_text');
548
- if (column_heading.readAttribute('data-ie_save_text')) options.okText = column_heading.readAttribute('data-ie_save_text');
549
- if (column_heading.readAttribute('data-ie_rows')) options.rows = column_heading.readAttribute('data-ie_rows');
550
- if (column_heading.readAttribute('data-ie_cols')) options.cols = column_heading.readAttribute('data-ie_cols');
551
- if (column_heading.readAttribute('data-ie_size')) options.size = column_heading.readAttribute('data-ie_size');
552
- },
553
-
554
- create_inplace_editor: function(span, options) {
555
- if (options['params'].length > 0) {
556
- options['callback'] = new Function('form', 'return Form.serialize(form) + ' + "'&" + options['params'] + "';");
557
- }
558
- span.removeClassName('hover');
559
- span.inplace_edit = new ActiveScaffold.InPlaceEditor(span.readAttribute('id'), options.url, options)
560
- span.inplace_edit.enterEditMode();
561
- },
562
-
563
- create_visibility_toggle: function(element, options) {
564
- var toggable = $(element);
565
- var toggler = toggable.previous();
566
- var initial_label = (options.default_visible === true) ? options.hide_label : options.show_label;
567
-
568
- toggler.insert(' (<a class="visibility-toggle" href="#">' + initial_label + '</a>)');
569
- toggler.firstDescendant().observe('click', function(event) {
570
- var element = event.element();
571
- toggable.toggle();
572
- element.innerHTML = (toggable.style.display == 'none') ? options.show_label : options.hide_label;
573
- return false;
574
- });
575
- },
576
-
577
- create_associated_record_form: function(element, content, options) {
578
- var element = $(element);
579
- if (options.singular == false) {
580
- if (!(options.id && $(options.id))) {
581
- element.insert(content);
582
- }
583
- } else {
584
- var current = $$('#' + element.readAttribute('id') + ' .association-record');
585
- if (current[0]) {
586
- this.replace(current[0], content);
587
- } else {
588
- element.insert({top: content});
589
- }
590
- }
591
- },
592
-
593
- render_form_field: function(source, content, options) {
594
- var source = $(source);
595
- var element = source.up('.association-record');
596
- if (typeof(element) === 'undefined') {
597
- element = source.up('ol.form');
598
- }
599
- element = element.down('.' + options.field_class);
600
-
601
- if (element) {
602
- if (options.is_subform == false) {
603
- this.replace(element.up('dl'), content);
604
- } else {
605
- this.replace_html(element, content);
606
- }
607
- }
608
- },
609
-
610
- record_select_onselect: function(edit_associated_url, active_scaffold_id, id){
611
- new Ajax.Request(
612
- edit_associated_url.sub('--ID--', id), {
613
- asynchronous: true,
614
- evalScripts: true,
615
- onFailure: function(){
616
- ActiveScaffold.report_500_response(active_scaffold_id.to_json)
617
- }
618
- }
619
- );
620
- },
621
-
622
- mark_span: function(span, mark_flag) {
623
- var record_id = span.readAttribute('data-ie_id');
624
- var checkbox = span.down('input[type="checkbox"]');
625
- /*
626
- when the "mark_flag" is "undefined", the "checked" attribute is already set to the new value,
627
- when the "mark_flag" is defined (this function is called by the "mark_records" function), the "checked" attribute is still set to the old value
628
- */
629
- if (mark_flag == false || (typeof(mark_flag) == 'undefined' && !checkbox.checked)) {
630
- ActiveScaffold.unmark_record(record_id);
631
- } else {
632
- ActiveScaffold.mark_record(record_id);
633
- }
634
- return checkbox;
635
- },
636
-
637
- mark_records: function(tbody_id, mark_flag) {
638
- var spans = $$('#' + tbody_id + ' > tr.record td.marked-column span.mark_record_field');
639
- var checkbox;
640
- for (var i = 0; i < spans.length; i++) {
641
- checkbox = ActiveScaffold.mark_span(spans[i], mark_flag);
642
- checkbox.checked = mark_flag;
643
- }
644
- },
645
-
646
- marked_records: [],
647
-
648
- mark_record: function(record_id) {
649
- ActiveScaffold.marked_records.push(record_id);
650
- },
651
-
652
- unmark_record: function(record_id) {
653
- for (var i = ActiveScaffold.marked_records.length - 1; i >= 0; i--) {
654
- if (ActiveScaffold.marked_records[i] == record_id) {
655
- ActiveScaffold.marked_records.splice(i, 1);
656
- }
657
- }
658
- },
659
-
660
- update_column: function(element, url, send_form, source_id, val) {
661
- if (!element) element = $(source_id);
662
-
663
- var as_form = element.up('form.as_form');
664
- var params = null;
665
-
666
- if (send_form) {
667
- var selector;
668
- if (selector = element.readAttribute('data-update_send_form_selector'))
669
- params = Form.serializeElements(as_form.getElementsBySelector(selector), true);
670
- else params = as_form.serialize(true);
671
- } else {
672
- params = {value: val};
673
- }
674
- params.source_id = source_id;
675
-
676
- new Ajax.Request(url, {
677
- method: 'get',
678
- parameters: params,
679
- onLoading: function(response) {
680
- element.next('img.loading-indicator').style.visibility = 'visible';
681
- as_form.disable();
682
- },
683
- onComplete: function(response) {
684
- element.next('img.loading-indicator').style.visibility = 'hidden';
685
- as_form.enable();
686
- },
687
- onFailure: function(request) {
688
- var as_div = event.findElement('div.active-scaffold');
689
- if (as_div) {
690
- ActiveScaffold.report_500_response(as_div)
691
- }
692
- }
693
- });
694
- },
695
-
696
- draggable_lists: function(element) {
697
- new DraggableLists(element);
698
- }
699
- }
700
-
701
- /*
702
- * DHTML history tie-in
703
- */
704
- function addActiveScaffoldPageToHistory(url, active_scaffold_id) {
705
- if (typeof dhtmlHistory == 'undefined') return; // it may not be loaded
706
-
707
- var array = url.split('?');
708
- var qs = new Querystring(array[1]);
709
- var sort = qs.get('sort')
710
- var dir = qs.get('sort_direction')
711
- var page = qs.get('page')
712
- if (sort || dir || page) dhtmlHistory.add(active_scaffold_id+":"+page+":"+sort+":"+dir, url);
713
- }
714
-
715
- /*
716
- * Add-ons/Patches to Prototype
717
- */
718
-
719
- /* patch to support replacing TR/TD/TBODY in Internet Explorer, courtesy of http://dev.rubyonrails.org/ticket/4273 */
720
- Element.replace = function(element, html) {
721
- element = $(element);
722
- if (element.outerHTML) {
723
- try {
724
- element.outerHTML = html.stripScripts();
725
- } catch (e) {
726
- var tn = element.tagName;
727
- if(tn=='TBODY' || tn=='TR' || tn=='TD')
728
- {
729
- var tempDiv = document.createElement("div");
730
- tempDiv.innerHTML = '<table id="tempTable" style="display: none">' + html.stripScripts() + '</table>';
731
- element.parentNode.replaceChild(tempDiv.getElementsByTagName(tn).item(0), element);
732
- }
733
- else throw e;
734
- }
735
- } else {
736
- var range = element.ownerDocument.createRange();
737
- /* patch to fix <form> replaces in Firefox. see http://dev.rubyonrails.org/ticket/8010 */
738
- range.selectNodeContents(element.parentNode);
739
- element.parentNode.replaceChild(range.createContextualFragment(html.stripScripts()), element);
740
- }
741
- setTimeout(function() {html.evalScripts()}, 10);
742
- return element;
743
- };
744
-
745
- /*
746
- * URL modification support. Incomplete functionality.
747
- */
748
- Object.extend(String.prototype, {
749
- append_params: function(params) {
750
- url = this;
751
- if (url.indexOf('?') == -1) url += '?';
752
- else if (url.lastIndexOf('&') != url.length) url += '&';
753
-
754
- url += $H(params).collect(function(item) {
755
- return item.key + '=' + item.value;
756
- }).join('&');
757
-
758
- return url;
759
- }
760
- });
761
-
762
- /*
763
- * Prototype's implementation was throwing an error instead of false
764
- */
765
- Element.Methods.Simulated = {
766
- hasAttribute: function(element, attribute) {
767
- var t = Element._attributeTranslations;
768
- attribute = (t.names && t.names[attribute]) || attribute;
769
- // Return false if we get an error here
770
- try {
771
- return $(element).getAttributeNode(attribute).specified;
772
- } catch (e) {
773
- return false;
774
- }
775
- }
776
- };
777
-
778
- /**
779
- * A set of links. As a set, they can be controlled such that only one is "open" at a time, etc.
780
- */
781
- ActiveScaffold.Actions = new Object();
782
- ActiveScaffold.Actions.Abstract = Class.create({
783
- initialize: function(links, target, loading_indicator, options) {
784
- this.target = $(target);
785
- this.loading_indicator = $(loading_indicator);
786
- this.options = options;
787
- this.links = links.collect(function(link) {
788
- return this.instantiate_link(link);
789
- }.bind(this));
790
- },
791
-
792
- instantiate_link: function(link) {
793
- throw 'unimplemented'
794
- }
795
- });
796
-
797
- /**
798
- * A DataStructures::ActionLink, represented in JavaScript.
799
- * Concerned with AJAX-enabling a link and adapting the result for insertion into the table.
800
- */
801
- ActiveScaffold.ActionLink = {
802
- get: function(element) {
803
- var element = $(element);
804
- if (typeof(element.retrieve('action_link')) === 'undefined' && !element.hasClassName('as_adapter')) {
805
- var parent = element.up('.actions');
806
- if (typeof(parent) === 'undefined') {
807
- // maybe an column action_link
808
- parent = element.up();
809
- }
810
- if (parent && parent.nodeName.toUpperCase() == 'TD') {
811
- // record action
812
- parent = parent.up('tr.record')
813
- new ActiveScaffold.Actions.Record(parent.select('a.as_action'), parent, parent.down('td.actions .loading-indicator'));
814
- } else if (parent && parent.nodeName.toUpperCase() == 'DIV') {
815
- //table action
816
- new ActiveScaffold.Actions.Table(parent.select('a.as_action'), parent.up('div.active-scaffold').down('tbody.before-header'), parent.down('.loading-indicator'));
817
- }
818
- element = $(element);
819
- }
820
- return element.retrieve('action_link');
821
- }
822
- };
823
-
824
- ActiveScaffold.ActionLink.Abstract = Class.create({
825
- initialize: function(a, target, loading_indicator) {
826
- this.tag = $(a);
827
- this.url = this.tag.href;
828
- this.method = this.tag.readAttribute('data-method') || 'get';
829
- this.target = target;
830
- this.loading_indicator = loading_indicator;
831
- this.hide_target = false;
832
- this.position = this.tag.readAttribute('data-position');
833
-
834
- this.tag.store('action_link', this);
835
- },
836
-
837
- open: function(event) {
838
- },
839
-
840
- insert: function(content) {
841
- throw 'unimplemented'
842
- },
843
-
844
- close: function() {
845
- this.enable();
846
- this.adapter.remove();
847
- if (this.hide_target) this.target.show();
848
- if (ActiveScaffold.config.scroll_on_close) ActiveScaffold.scroll_to($(this.target.readAttribute('id')));
849
- },
850
-
851
- reload: function() {
852
- this.close();
853
- this.open();
854
- },
855
-
856
- get_new_adapter_id: function() {
857
- var id = 'adapter_';
858
- var i = 0;
859
- while ($(id + i)) i++;
860
- return id + i;
861
- },
862
-
863
- enable: function() {
864
- return this.tag.removeClassName('disabled');
865
- },
866
-
867
- disable: function() {
868
- return this.tag.addClassName('disabled');
869
- },
870
-
871
- is_disabled: function() {
872
- return this.tag.hasClassName('disabled');
873
- },
874
-
875
- scaffold_id: function() {
876
- return this.tag.up('div.active-scaffold').readAttribute('id');
877
- },
878
-
879
- scaffold: function() {
880
- return this.tag.up('div.active-scaffold');
881
- },
882
-
883
- update_flash_messages: function(messages) {
884
- message_node = $(this.scaffold_id().sub('-active-scaffold', '-messages'));
885
- if (message_node) message_node.update(messages);
886
- },
887
-
888
- set_adapter: function(element) {
889
- this.adapter = element;
890
- this.adapter.addClassName('as_adapter');
891
- this.adapter.store('action_link', this);
892
- }
893
- });
894
-
895
- /**
896
- * Concrete classes for record actions
897
- */
898
- ActiveScaffold.Actions.Record = Class.create(ActiveScaffold.Actions.Abstract, {
899
- instantiate_link: function(link) {
900
- var l = new ActiveScaffold.ActionLink.Record(link, this.target, this.loading_indicator);
901
- if (this.target.hasAttribute('data-refresh') && !this.target.readAttribute('data-refresh').blank()) l.refresh_url = this.target.readAttribute('data-refresh');
902
-
903
- if (l.position) {
904
- l.url = l.url.append_params({adapter: '_list_inline_adapter'});
905
- l.tag.href = l.url;
906
- }
907
- l.set = this;
908
- return l;
909
- }
910
- });
911
-
912
- ActiveScaffold.ActionLink.Record = Class.create(ActiveScaffold.ActionLink.Abstract, {
913
- close_previous_adapter: function() {
914
- this.set.links.each(function(item) {
915
- if (item.url != this.url && item.is_disabled() && item.adapter) {
916
- item.enable();
917
- item.adapter.remove();
918
- }
919
- }.bind(this));
920
- },
921
-
922
- insert: function(content) {
923
- this.close_previous_adapter();
924
-
925
- if (this.position == 'replace') {
926
- this.position = 'after';
927
- this.hide_target = true;
928
- }
929
-
930
- if (this.position == 'after') {
931
- this.target.insert({after:content});
932
- this.set_adapter(this.target.next());
933
- }
934
- else if (this.position == 'before') {
935
- this.target.insert({before:content});
936
- this.set_adapter(this.target.previous());
937
- }
938
- else {
939
- return false;
940
- }
941
- this.adapter.down('td').down().highlight();
942
- },
943
-
944
- close: function($super, refreshed_content) {
945
- if (refreshed_content) {
946
- ActiveScaffold.update_row(this.target, refreshed_content);
947
- }
948
- $super();
949
- },
950
-
951
- enable: function() {
952
- this.set.links.each(function(item) {
953
- if (item.url != this.url) return;
954
- item.tag.removeClassName('disabled');
955
- }.bind(this));
956
- },
957
-
958
- disable: function() {
959
- this.set.links.each(function(item) {
960
- if (item.url != this.url) return;
961
- item.tag.addClassName('disabled');
962
- }.bind(this));
963
- },
964
-
965
- set_opened: function() {
966
- if (this.position == 'after') {
967
- this.set_adapter(this.target.next());
968
- }
969
- else if (this.position == 'before') {
970
- this.set_adapter(this.target.previous());
971
- }
972
- this.disable();
973
- }
974
- });
975
-
976
- /**
977
- * Concrete classes for table actions
978
- */
979
- ActiveScaffold.Actions.Table = Class.create(ActiveScaffold.Actions.Abstract, {
980
- instantiate_link: function(link) {
981
- var l = new ActiveScaffold.ActionLink.Table(link, this.target, this.loading_indicator);
982
- if (l.position) {
983
- l.url = l.url.append_params({adapter: '_list_inline_adapter'});
984
- l.tag.href = l.url;
985
- }
986
- return l;
987
- }
988
- });
989
-
990
- ActiveScaffold.ActionLink.Table = Class.create(ActiveScaffold.ActionLink.Abstract, {
991
- insert: function(content) {
992
- if (this.position == 'top') {
993
- this.target.insert({top:content});
994
- this.set_adapter(this.target.immediateDescendants().first());
995
- }
996
- else {
997
- throw 'Unknown position "' + this.position + '"'
998
- }
999
- this.adapter.down('td').down().highlight();
1000
- }
1001
- });
1002
-
1003
- if (Ajax.InPlaceEditor) {
1004
- ActiveScaffold.InPlaceEditor = Class.create(Ajax.InPlaceEditor, {
1005
- initialize: function($super, element, url, options) {
1006
- $super(element, url, options);
1007
- if (this._originalBackground == 'transparent') {
1008
- this._originalBackground = null;
1009
- }
1010
- },
1011
-
1012
- setFieldFromAjax: function(url, options) {
1013
- var ipe = this;
1014
- $(ipe._controls.editor).remove();
1015
- new Ajax.Request(url, {
1016
- method: 'get',
1017
- onComplete: function(response) {
1018
- ipe._form.insert({top: response.responseText});
1019
- if (options.plural) {
1020
- ipe._form.getElements().each(function(el) {
1021
- if (el.type != "submit" && el.type != "image") {
1022
- el.name = ipe.options.paramName + '[]';
1023
- el.className = 'editor_field';
1024
- }
1025
- });
1026
- } else {
1027
- var fld = ipe._form.findFirstElement();
1028
- fld.name = ipe.options.paramName;
1029
- fld.className = 'editor_field';
1030
- if (ipe.options.submitOnBlur)
1031
- fld.onblur = ipe._boundSubmitHandler;
1032
- ipe._controls.editor = fld;
1033
- }
1034
- }
1035
- });
1036
- },
1037
-
1038
- clonePatternField: function() {
1039
- var patternNodes = this.getPatternNodes(this.options.inplacePatternSelector);
1040
- if (patternNodes.editNode == null) {
1041
- alert('did not find any matching node for ' + this.options.editFieldSelector);
1042
- return;
1043
- }
1044
-
1045
- var fld = patternNodes.editNode.cloneNode(true);
1046
- if (fld.id.length > 0) fld.id += this.options.nodeIdSuffix;
1047
- fld.name = this.options.paramName;
1048
- fld.className = 'editor_field';
1049
- this.setValue(fld, this._controls.editor.value);
1050
- if (this.options.submitOnBlur)
1051
- fld.onblur = this._boundSubmitHandler;
1052
- $(this._controls.editor).remove();
1053
- this._controls.editor = fld;
1054
- this._form.appendChild(this._controls.editor);
1055
-
1056
- $A(patternNodes.additionalNodes).each(function(node) {
1057
- var patternNode = node.cloneNode(true);
1058
- if (patternNode.id.length > 0) {
1059
- patternNode.id = patternNode.id + this.options.nodeIdSuffix;
1060
- }
1061
- this._form.appendChild(patternNode);
1062
- }.bind(this));
1063
- },
1064
-
1065
- getPatternNodes: function(inplacePatternSelector) {
1066
- var nodes = {editNode: null, additionalNodes: []};
1067
- var selectedNodes = $$(inplacePatternSelector);
1068
- var firstNode = selectedNodes.first();
1069
-
1070
- if (typeof(firstNode) !== 'undefined') {
1071
- // AS inplace_edit_control_container -> we have to select all child nodes
1072
- // Workaround for ie which does not support css > selector
1073
- if (firstNode.className.indexOf('as_inplace_pattern') !== -1) {
1074
- selectedNodes = firstNode.childElements();
1075
- }
1076
- nodes.editNode = selectedNodes.first();
1077
- selectedNodes.shift();
1078
- nodes.additionalNodes = selectedNodes;
1079
- }
1080
- return nodes;
1081
- },
1082
-
1083
- setValue: function(editField, textValue) {
1084
- var function_name = 'setValueFor' + editField.nodeName.toLowerCase();
1085
- if (typeof(this[function_name]) == 'function') {
1086
- this[function_name](editField, textValue);
1087
- } else {
1088
- editField.value = textValue;
1089
- }
1090
- },
1091
-
1092
- setValueForselect: function(editField, textValue) {
1093
- var len = editField.options.length;
1094
- var i = 0;
1095
- while (i < len && editField.options[i].text != textValue) {
1096
- i++;
1097
- }
1098
- if (i < len) {
1099
- editField.value = editField.options[i].value
1100
- }
1101
- }
1102
- });
1103
- }