active_scaffold-sequel 0.7.1 → 0.8.0

Sign up to get free protection for your applications and to get access to all the features.
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
- }