active_scaffold 3.4.17 → 3.4.18
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG +12 -1
- data/README.md +8 -4
- data/app/assets/javascripts/jquery/active_scaffold.js +82 -67
- data/app/assets/stylesheets/active_scaffold.scss +1 -1
- data/app/assets/stylesheets/active_scaffold_colors.scss +1 -1
- data/app/assets/stylesheets/blue-theme.css +1 -1
- data/app/views/active_scaffold_overrides/_form_association.html.erb +3 -3
- data/app/views/active_scaffold_overrides/_form_association_record.html.erb +3 -3
- data/app/views/active_scaffold_overrides/_show_columns.html.erb +1 -1
- data/lib/active_scaffold.rb +16 -16
- data/lib/active_scaffold/actions/common_search.rb +13 -11
- data/lib/active_scaffold/actions/core.rb +85 -78
- data/lib/active_scaffold/actions/create.rb +29 -28
- data/lib/active_scaffold/actions/delete.rb +17 -17
- data/lib/active_scaffold/actions/field_search.rb +18 -19
- data/lib/active_scaffold/actions/list.rb +30 -22
- data/lib/active_scaffold/actions/mark.rb +1 -1
- data/lib/active_scaffold/actions/nested.rb +78 -65
- data/lib/active_scaffold/actions/search.rb +13 -10
- data/lib/active_scaffold/actions/show.rb +10 -6
- data/lib/active_scaffold/actions/subform.rb +1 -2
- data/lib/active_scaffold/actions/update.rb +39 -31
- data/lib/active_scaffold/active_record_permissions.rb +14 -15
- data/lib/active_scaffold/attribute_params.rb +42 -43
- data/lib/active_scaffold/bridges.rb +22 -12
- data/lib/active_scaffold/bridges/ancestry.rb +1 -1
- data/lib/active_scaffold/bridges/ancestry/ancestry_bridge.rb +6 -6
- data/lib/active_scaffold/bridges/bitfields.rb +1 -1
- data/lib/active_scaffold/bridges/bitfields/bitfields_bridge.rb +12 -13
- data/lib/active_scaffold/bridges/calendar_date_select.rb +5 -5
- data/lib/active_scaffold/bridges/calendar_date_select/as_cds_bridge.rb +17 -20
- data/lib/active_scaffold/bridges/cancan.rb +1 -1
- data/lib/active_scaffold/bridges/cancan/cancan_bridge.rb +8 -9
- data/lib/active_scaffold/bridges/carrierwave.rb +4 -4
- data/lib/active_scaffold/bridges/carrierwave/carrierwave_bridge.rb +9 -8
- data/lib/active_scaffold/bridges/carrierwave/form_ui.rb +11 -10
- data/lib/active_scaffold/bridges/carrierwave/list_ui.rb +7 -6
- data/lib/active_scaffold/bridges/chosen.rb +1 -1
- data/lib/active_scaffold/bridges/chosen/helpers.rb +4 -4
- data/lib/active_scaffold/bridges/country_helper.rb +1 -1
- data/lib/active_scaffold/bridges/country_helper/country_helper_bridge.rb +259 -260
- data/lib/active_scaffold/bridges/date_picker.rb +2 -2
- data/lib/active_scaffold/bridges/date_picker/ext.rb +9 -11
- data/lib/active_scaffold/bridges/date_picker/helper.rb +61 -67
- data/lib/active_scaffold/bridges/dragonfly.rb +4 -4
- data/lib/active_scaffold/bridges/dragonfly/dragonfly_bridge.rb +9 -8
- data/lib/active_scaffold/bridges/dragonfly/form_ui.rb +11 -10
- data/lib/active_scaffold/bridges/dragonfly/list_ui.rb +6 -5
- data/lib/active_scaffold/bridges/file_column.rb +5 -5
- data/lib/active_scaffold/bridges/file_column/as_file_column_bridge.rb +20 -23
- data/lib/active_scaffold/bridges/file_column/file_column_helpers.rb +20 -23
- data/lib/active_scaffold/bridges/file_column/form_ui.rb +13 -14
- data/lib/active_scaffold/bridges/file_column/list_ui.rb +7 -8
- data/lib/active_scaffold/bridges/file_column/test/functional/file_column_keep_test.rb +18 -22
- data/lib/active_scaffold/bridges/file_column/test/mock_model.rb +5 -4
- data/lib/active_scaffold/bridges/file_column/test/test_helper.rb +2 -10
- data/lib/active_scaffold/bridges/paper_trail.rb +7 -5
- data/lib/active_scaffold/bridges/paper_trail/paper_trail_bridge.rb +4 -3
- data/lib/active_scaffold/bridges/paperclip.rb +5 -5
- data/lib/active_scaffold/bridges/paperclip/form_ui.rb +11 -10
- data/lib/active_scaffold/bridges/paperclip/list_ui.rb +6 -5
- data/lib/active_scaffold/bridges/paperclip/paperclip_bridge.rb +10 -9
- data/lib/active_scaffold/bridges/record_select.rb +1 -1
- data/lib/active_scaffold/bridges/record_select/helpers.rb +28 -28
- data/lib/active_scaffold/bridges/semantic_attributes.rb +1 -1
- data/lib/active_scaffold/bridges/semantic_attributes/column.rb +1 -1
- data/lib/active_scaffold/bridges/shared/date_bridge.rb +58 -52
- data/lib/active_scaffold/bridges/tiny_mce.rb +2 -2
- data/lib/active_scaffold/bridges/tiny_mce/helpers.rb +3 -3
- data/lib/active_scaffold/config/base.rb +9 -10
- data/lib/active_scaffold/config/core.rb +24 -29
- data/lib/active_scaffold/config/create.rb +0 -1
- data/lib/active_scaffold/config/field_search.rb +8 -10
- data/lib/active_scaffold/config/form.rb +5 -5
- data/lib/active_scaffold/config/list.rb +21 -20
- data/lib/active_scaffold/config/mark.rb +3 -3
- data/lib/active_scaffold/config/nested.rb +11 -10
- data/lib/active_scaffold/config/search.rb +2 -3
- data/lib/active_scaffold/config/show.rb +1 -1
- data/lib/active_scaffold/config/update.rb +1 -2
- data/lib/active_scaffold/configurable.rb +9 -11
- data/lib/active_scaffold/constraints.rb +9 -8
- data/lib/active_scaffold/core.rb +72 -84
- data/lib/active_scaffold/data_structures/action_columns.rb +26 -25
- data/lib/active_scaffold/data_structures/action_link.rb +43 -43
- data/lib/active_scaffold/data_structures/action_links.rb +17 -15
- data/lib/active_scaffold/data_structures/actions.rb +5 -5
- data/lib/active_scaffold/data_structures/bridge.rb +6 -3
- data/lib/active_scaffold/data_structures/column.rb +110 -89
- data/lib/active_scaffold/data_structures/columns.rb +3 -3
- data/lib/active_scaffold/data_structures/error_message.rb +4 -6
- data/lib/active_scaffold/data_structures/nested_info.rb +43 -48
- data/lib/active_scaffold/data_structures/set.rb +7 -8
- data/lib/active_scaffold/data_structures/sorting.rb +38 -33
- data/lib/active_scaffold/delayed_setup.rb +5 -6
- data/lib/active_scaffold/engine.rb +4 -4
- data/lib/active_scaffold/extensions/action_controller_rendering.rb +3 -4
- data/lib/active_scaffold/extensions/action_controller_rescueing.rb +1 -1
- data/lib/active_scaffold/extensions/action_view_rendering.rb +5 -6
- data/lib/active_scaffold/extensions/left_outer_joins.rb +11 -11
- data/lib/active_scaffold/extensions/localize.rb +1 -1
- data/lib/active_scaffold/extensions/name_option_for_datetime.rb +1 -1
- data/lib/active_scaffold/extensions/paginator_extensions.rb +2 -5
- data/lib/active_scaffold/extensions/reverse_associations.rb +13 -13
- data/lib/active_scaffold/extensions/routing_mapper.rb +9 -9
- data/lib/active_scaffold/extensions/unsaved_associated.rb +9 -9
- data/lib/active_scaffold/finder.rb +90 -93
- data/lib/active_scaffold/helpers/association_helpers.rb +5 -5
- data/lib/active_scaffold/helpers/controller_helpers.rb +22 -19
- data/lib/active_scaffold/helpers/form_column_helpers.rb +115 -105
- data/lib/active_scaffold/helpers/human_condition_helpers.rb +62 -35
- data/lib/active_scaffold/helpers/id_helpers.rb +6 -6
- data/lib/active_scaffold/helpers/list_column_helpers.rb +89 -94
- data/lib/active_scaffold/helpers/pagination_helpers.rb +9 -9
- data/lib/active_scaffold/helpers/search_column_helpers.rb +47 -44
- data/lib/active_scaffold/helpers/show_column_helpers.rb +2 -2
- data/lib/active_scaffold/helpers/view_helpers.rb +86 -91
- data/lib/active_scaffold/marked_model.rb +10 -10
- data/lib/active_scaffold/paginator.rb +30 -34
- data/lib/active_scaffold/responds_to_parent.rb +27 -28
- data/lib/active_scaffold/tableless.rb +20 -15
- data/lib/active_scaffold/version.rb +1 -1
- data/lib/generators/active_scaffold/active_scaffold_generator.rb +8 -8
- data/lib/generators/active_scaffold_controller/active_scaffold_controller_generator.rb +9 -9
- data/shoulda_macros/macros.rb +27 -22
- data/test/bridges/bridge_test.rb +38 -29
- data/test/bridges/date_picker_test.rb +1 -1
- data/test/bridges/paper_trail_test.rb +17 -0
- data/test/bridges/paperclip_test.rb +3 -2
- data/test/bridges/tiny_mce_test.rb +5 -2
- data/test/company.rb +25 -30
- data/test/config/base_test.rb +1 -1
- data/test/config/core_test.rb +9 -9
- data/test/config/create_test.rb +14 -8
- data/test/config/delete_test.rb +4 -4
- data/test/config/field_search_test.rb +6 -6
- data/test/config/list_test.rb +16 -16
- data/test/config/nested_test.rb +4 -4
- data/test/config/search_test.rb +8 -8
- data/test/config/show_test.rb +6 -6
- data/test/config/subform_test.rb +1 -1
- data/test/config/update_test.rb +5 -5
- data/test/const_mocker.rb +4 -4
- data/test/data_structures/action_columns_test.rb +4 -5
- data/test/data_structures/action_link_test.rb +1 -0
- data/test/data_structures/action_links_test.rb +5 -5
- data/test/data_structures/column_test.rb +9 -9
- data/test/data_structures/columns_test.rb +2 -2
- data/test/data_structures/error_message_test.rb +4 -5
- data/test/data_structures/set_test.rb +1 -2
- data/test/data_structures/sorting_test.rb +10 -10
- data/test/data_structures/validation_reflection_test.rb +8 -0
- data/test/extensions/routing_mapper_test.rb +2 -2
- data/test/helpers/list_column_helpers_test.rb +3 -2
- data/test/helpers/pagination_helpers_test.rb +5 -4
- data/test/helpers/search_column_helpers_test.rb +1 -1
- data/test/misc/active_record_permissions_test.rb +63 -50
- data/test/misc/attribute_params_test.rb +28 -26
- data/test/misc/calculation_test.rb +10 -3
- data/test/misc/configurable_test.rb +12 -13
- data/test/misc/constraints_test.rb +6 -6
- data/test/misc/convert_numbers_format_test.rb +7 -6
- data/test/misc/finder_test.rb +17 -12
- data/test/misc/lang_test.rb +3 -4
- data/test/misc/tableless_test.rb +2 -3
- data/test/mock_app/app/controllers/addresses_controller.rb +1 -1
- data/test/mock_app/app/controllers/buildings_controller.rb +1 -1
- data/test/mock_app/app/controllers/cars_controller.rb +1 -1
- data/test/mock_app/app/controllers/contacts_controller.rb +1 -1
- data/test/mock_app/app/controllers/people_controller.rb +1 -1
- data/test/mock_app/app/models/file_model.rb +2 -2
- data/test/mock_app/app/models/person.rb +1 -1
- data/test/mock_app/config/application.rb +3 -3
- data/test/mock_app/config/boot.rb +1 -1
- data/test/mock_app/config/environment.rb +1 -0
- data/test/mock_app/config/environments/development.rb +0 -1
- data/test/mock_app/config/environments/production.rb +1 -1
- data/test/mock_app/db/schema.rb +14 -15
- data/test/model_stub.rb +13 -16
- data/test/run_all.rb +5 -7
- data/test/test_helper.rb +12 -9
- metadata +19 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e5240d9cb10131fb335065071e8a786e745e9bce
|
4
|
+
data.tar.gz: a1493ba2efd6d6a58deaece8b630b6ba4a729e3a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8b846bb4dc8ac8bbe018429b8b7fcd8a3ba77dc0a2edf68fd128fb009f335c82412ad772594e34197efffed7d420ce7b9f8962b5bc9f2ae54e7d466cd23ba754
|
7
|
+
data.tar.gz: e901b88edfec58dae9bbc69eba15a3457ca19aac7faa66c213fcfeab87f8bd2ede76c136f27b429020e6e5bcffc8d3b60f3dc80d43ce1e0504e62a058e9ed1e9
|
data/CHANGELOG
CHANGED
@@ -1,3 +1,14 @@
|
|
1
|
+
= 3.4.18
|
2
|
+
- Fix paper_trail bridge on development
|
3
|
+
- Allow to set :data hash in :html_options for action links
|
4
|
+
- unscope(:order) in calculate_query (for rails >= 4)
|
5
|
+
- clean code and follow ruby style guide
|
6
|
+
- deny_access (rescue method for ActiveScaffold::RecordNotAllowed, ActiveScaffold::ActionNotAllowed) render with status :forbidden (403) instead of 401
|
7
|
+
- allow to load nested scaffold with nested through associations, even with inplace edit enabled
|
8
|
+
- disable create on nested through associations
|
9
|
+
- Allow to config live_search delay with ActiveScaffold.js_config
|
10
|
+
- Warn when form is changed (ignores search forms), this featured must be enabled with ActiveScaffold.js_config[:warn_changes]
|
11
|
+
|
1
12
|
= 3.4.17
|
2
13
|
- Fix deprecation warning "Extra .css in SCSS file is unnecessary"
|
3
14
|
- Improve support for namespaced models on namespaced controllers with different namespace
|
@@ -271,7 +282,7 @@
|
|
271
282
|
- Add some classes to forms to improve CSS customization
|
272
283
|
- Fix nested links for STI controllers with common configuration in a base controller
|
273
284
|
- Fix adding routes twice in active_scaffold generator
|
274
|
-
- Restore old behavior for action_link's security_method, ignore_method already hides the link
|
285
|
+
- Restore old behavior for action_link's security_method, ignore_method already hides the link
|
275
286
|
- Add data-cancel-refresh to action links, so nested scaffold's behaviour can be applied to other action links and when adapter is closed row will be refreshed.
|
276
287
|
- fix support for tableless models in rails >= 3.2.5
|
277
288
|
|
data/README.md
CHANGED
@@ -1,6 +1,10 @@
|
|
1
1
|
Overview
|
2
2
|
========
|
3
|
-
[![
|
3
|
+
[![Build status](https://travis-ci.org/activescaffold/active_scaffold.svg?branch=master)](https://travis-ci.org/activescaffold/active_scaffold)
|
4
|
+
[![Code Climate](https://codeclimate.com/github/activescaffold/active_scaffold/badges/gpa.svg)](https://codeclimate.com/github/activescaffold/active_scaffold)
|
5
|
+
[![Test Coverage](https://codeclimate.com/github/activescaffold/active_scaffold/badges/coverage.svg)](https://codeclimate.com/github/activescaffold/active_scaffold)
|
6
|
+
[![Dependency Status](https://gemnasium.com/activescaffold/active_scaffold.svg)](https://gemnasium.com/activescaffold/active_scaffold)
|
7
|
+
[![Gem Version](https://badge.fury.io/rb/active_scaffold.svg)](https://badge.fury.io/rb/active_scaffold)
|
4
8
|
|
5
9
|
ActiveScaffold provides a quick and powerful user interfaces for CRUD (create, read, update, delete) operations for Rails applications. It offers additonal features including searching, pagination & layout control. Rails 3.2 and 4.x are supported, ruby >= 1.9 required. For rails 4 is recommended >= 4.0.5.
|
6
10
|
|
@@ -49,7 +53,7 @@ Credits
|
|
49
53
|
-------
|
50
54
|
ActiveScaffold grew out of a project named Ajaxscaffold dating back to 2006. It has had numerous contributors including:
|
51
55
|
|
52
|
-
ActiveScaffold Gem/Plugin by Scott Rutherford (scott@caronsoftware.com), Richard White (rrwhite@gmail.com), Lance Ivy (lance@cainlevy.net), Ed Moss, Tim Harper and Sergio Cambra (sergio@
|
56
|
+
ActiveScaffold Gem/Plugin by Scott Rutherford (scott@caronsoftware.com), Richard White (rrwhite@gmail.com), Lance Ivy (lance@cainlevy.net), Ed Moss, Tim Harper and Sergio Cambra (sergio@programatica.es)
|
53
57
|
|
54
58
|
Uses DhtmlHistory by Brad Neuberg (bkn3@columbia.edu)
|
55
59
|
http://codinginparadise.org
|
@@ -60,8 +64,8 @@ http://adamv.com/dev/javascript/querystring
|
|
60
64
|
Uses Paginator by Bruce Williams
|
61
65
|
http://paginator.rubyforge.org/
|
62
66
|
|
63
|
-
Supports RecordSelect by Lance Ivy
|
64
|
-
http://
|
67
|
+
Supports RecordSelect by Lance Ivy and Sergio Cambra
|
68
|
+
http://github.com/scambra/recordselect/
|
65
69
|
|
66
70
|
|
67
71
|
License
|
@@ -47,7 +47,7 @@ jQuery(document).ready(function($) {
|
|
47
47
|
}
|
48
48
|
return true;
|
49
49
|
});
|
50
|
-
|
50
|
+
|
51
51
|
jQuery(document).on('ajax:complete', 'form.as_form', function(event) {
|
52
52
|
var as_form = jQuery(this).closest("form");
|
53
53
|
if (as_form.data('loading') == true) {
|
@@ -96,7 +96,7 @@ jQuery(document).ready(function($) {
|
|
96
96
|
action_link.enable();
|
97
97
|
}
|
98
98
|
jQuery(this).trigger('as:action_success', action_link);
|
99
|
-
if (action_link.loading_indicator) action_link.loading_indicator.css('visibility','hidden');
|
99
|
+
if (action_link.loading_indicator) action_link.loading_indicator.css('visibility','hidden');
|
100
100
|
}
|
101
101
|
return true;
|
102
102
|
});
|
@@ -110,8 +110,8 @@ jQuery(document).ready(function($) {
|
|
110
110
|
});
|
111
111
|
jQuery(document).on('ajax:before', 'a.as_cancel', function(event) {
|
112
112
|
var as_cancel = jQuery(this);
|
113
|
-
var action_link = ActiveScaffold.find_action_link(as_cancel);
|
114
|
-
|
113
|
+
var action_link = ActiveScaffold.find_action_link(as_cancel);
|
114
|
+
|
115
115
|
if (action_link) {
|
116
116
|
var cancel_url = as_cancel.attr('href');
|
117
117
|
var refresh_data = action_link.tag.data('cancel-refresh') || as_cancel.data('refresh');
|
@@ -199,7 +199,7 @@ jQuery(document).ready(function($) {
|
|
199
199
|
});
|
200
200
|
jQuery(document).on('ajax:complete', '.action_group.dyn > ul a', function(event) {
|
201
201
|
var action_link = ActiveScaffold.find_action_link(event.target);
|
202
|
-
if (action_link.loading_indicator) action_link.loading_indicator.css('visibility','hidden');
|
202
|
+
if (action_link.loading_indicator) action_link.loading_indicator.css('visibility','hidden');
|
203
203
|
jQuery(event.target).closest('.action_group.dyn > ul').remove();
|
204
204
|
});
|
205
205
|
|
@@ -240,14 +240,14 @@ jQuery(document).ready(function($) {
|
|
240
240
|
ActiveScaffold.update_column(element, element.data('update_url'), element.data('update_send_form'), element.attr('id'), id);
|
241
241
|
return true;
|
242
242
|
});
|
243
|
-
|
243
|
+
|
244
244
|
jQuery(document).on('change', 'select.as_search_range_option', function(event) {
|
245
245
|
var element = jQuery(this);
|
246
246
|
ActiveScaffold[element.val() == 'BETWEEN' ? 'show' : 'hide'](element.closest('dd').find('.as_search_range_between'));
|
247
247
|
ActiveScaffold[(element.val() == 'null' || element.val() == 'not_null') ? 'hide' : 'show'](element.attr('id').replace(/_opt/, '_numeric'));
|
248
248
|
return true;
|
249
249
|
});
|
250
|
-
|
250
|
+
|
251
251
|
jQuery(document).on('change', 'select.as_search_date_time_option', function(event) {
|
252
252
|
var element = jQuery(this);
|
253
253
|
ActiveScaffold[!(element.val() == 'PAST' || element.val() == 'FUTURE' || element.val() == 'RANGE') ? 'show' : 'hide'](element.attr('id').replace(/_opt/, '_numeric'));
|
@@ -261,7 +261,7 @@ jQuery(document).ready(function($) {
|
|
261
261
|
ActiveScaffold[jQuery(this).val() == 'REPLACE' ? 'hide' : 'show'](jQuery(this).next().next());
|
262
262
|
return true;
|
263
263
|
});
|
264
|
-
|
264
|
+
|
265
265
|
jQuery(document).on('click', '.active-scaffold .sub-form a.destroy', function(event) {
|
266
266
|
event.preventDefault();
|
267
267
|
ActiveScaffold.delete_subform_record($(this).data('delete-id'));
|
@@ -289,13 +289,14 @@ jQuery(document).ready(function($) {
|
|
289
289
|
ActiveScaffold.hide(jQuery(this).closest('.message'));
|
290
290
|
e.preventDefault();
|
291
291
|
});
|
292
|
-
|
292
|
+
|
293
293
|
/* setup some elements on page/form load */
|
294
294
|
ActiveScaffold.load_embedded(document);
|
295
295
|
ActiveScaffold.enable_js_form_buttons(document);
|
296
296
|
ActiveScaffold.live_search(document);
|
297
297
|
ActiveScaffold.auto_paginate(document);
|
298
298
|
ActiveScaffold.draggable_lists('.draggable-lists', document);
|
299
|
+
if (ActiveScaffold.warn_changes) ActiveScaffold.setup_warn_changes();
|
299
300
|
jQuery(document).on('as:element_updated', function(e) {
|
300
301
|
ActiveScaffold.load_embedded(e.target);
|
301
302
|
ActiveScaffold.enable_js_form_buttons(e.target);
|
@@ -320,17 +321,17 @@ jQuery(document).ready(function($) {
|
|
320
321
|
|
321
322
|
// The base Class implementation (does nothing)
|
322
323
|
this.Class = function(){};
|
323
|
-
|
324
|
+
|
324
325
|
// Create a new Class that inherits from this class
|
325
326
|
Class.extend = function(prop) {
|
326
327
|
var _super = this.prototype;
|
327
|
-
|
328
|
+
|
328
329
|
// Instantiate a base class (but only create the instance,
|
329
330
|
// don't run the init constructor)
|
330
331
|
initializing = true;
|
331
332
|
var prototype = new this();
|
332
333
|
initializing = false;
|
333
|
-
|
334
|
+
|
334
335
|
// Copy the properties over onto the new prototype
|
335
336
|
for (var name in prop) {
|
336
337
|
// Check if we're overwriting an existing function
|
@@ -339,38 +340,38 @@ jQuery(document).ready(function($) {
|
|
339
340
|
(function(name, fn){
|
340
341
|
return function() {
|
341
342
|
var tmp = this._super;
|
342
|
-
|
343
|
+
|
343
344
|
// Add a new ._super() method that is the same method
|
344
345
|
// but on the super-class
|
345
346
|
this._super = _super[name];
|
346
|
-
|
347
|
+
|
347
348
|
// The method only need to be bound temporarily, so we
|
348
349
|
// remove it when we're done executing
|
349
|
-
var ret = fn.apply(this, arguments);
|
350
|
+
var ret = fn.apply(this, arguments);
|
350
351
|
this._super = tmp;
|
351
|
-
|
352
|
+
|
352
353
|
return ret;
|
353
354
|
};
|
354
355
|
})(name, prop[name]) :
|
355
356
|
prop[name];
|
356
357
|
}
|
357
|
-
|
358
|
+
|
358
359
|
// The dummy class constructor
|
359
360
|
function Class() {
|
360
361
|
// All construction is actually done in the init method
|
361
362
|
if ( !initializing && this.init )
|
362
363
|
this.init.apply(this, arguments);
|
363
364
|
}
|
364
|
-
|
365
|
+
|
365
366
|
// Populate our constructed prototype object
|
366
367
|
Class.prototype = prototype;
|
367
|
-
|
368
|
+
|
368
369
|
// Enforce the constructor to be what we expect
|
369
370
|
Class.constructor = Class;
|
370
371
|
|
371
372
|
// And make this class extendable
|
372
373
|
Class.extend = arguments.callee;
|
373
|
-
|
374
|
+
|
374
375
|
return Class;
|
375
376
|
};
|
376
377
|
})();
|
@@ -378,9 +379,9 @@ jQuery(document).ready(function($) {
|
|
378
379
|
/*
|
379
380
|
$ delayed observer
|
380
381
|
(c) 2007 - Maxime Haineault (max@centdessin.com)
|
381
|
-
|
382
|
+
|
382
383
|
Special thanks to Stephen Goguen & Tane Piper.
|
383
|
-
|
384
|
+
|
384
385
|
Slight modifications by Elliot Winkler
|
385
386
|
*/
|
386
387
|
|
@@ -422,7 +423,7 @@ var ActiveScaffold = {
|
|
422
423
|
live_search: function(element) {
|
423
424
|
jQuery('form.search.live input[type=search]', element).delayedObserver(function() {
|
424
425
|
jQuery(this).parent().trigger("submit");
|
425
|
-
}, 0.5);
|
426
|
+
}, ActiveScaffold.config.live_search_delay || 0.5);
|
426
427
|
},
|
427
428
|
auto_paginate: function(element) {
|
428
429
|
var paginate_link = jQuery('.active-scaffold-pagination.auto-paginate a:first', element);
|
@@ -453,7 +454,7 @@ var ActiveScaffold = {
|
|
453
454
|
stripe: function(tbody_id) {
|
454
455
|
var even = false;
|
455
456
|
var rows = this.records_for(tbody_id);
|
456
|
-
|
457
|
+
|
457
458
|
rows.each(function (index, row_node) {
|
458
459
|
row = jQuery(row_node);
|
459
460
|
if (row_node.tagName != 'SCRIPT'
|
@@ -466,7 +467,7 @@ var ActiveScaffold = {
|
|
466
467
|
else row.removeClass("even-record");
|
467
468
|
|
468
469
|
even = !even;
|
469
|
-
}
|
470
|
+
}
|
470
471
|
});
|
471
472
|
},
|
472
473
|
hide_empty_message: function(tbody) {
|
@@ -497,7 +498,7 @@ var ActiveScaffold = {
|
|
497
498
|
},
|
498
499
|
decrement_record_count: function(scaffold) {
|
499
500
|
// decrement the last record count, firsts record count are in nested lists
|
500
|
-
if (typeof(scaffold) == 'string') scaffold = '#' + scaffold;
|
501
|
+
if (typeof(scaffold) == 'string') scaffold = '#' + scaffold;
|
501
502
|
scaffold = jQuery(scaffold);
|
502
503
|
count = scaffold.find('span.active-scaffold-records').last();
|
503
504
|
if (count) count.html(parseInt(count.html(), 10) - 1);
|
@@ -512,7 +513,7 @@ var ActiveScaffold = {
|
|
512
513
|
update_row: function(row, html) {
|
513
514
|
var even_row = false;
|
514
515
|
var replaced = null;
|
515
|
-
if (typeof(row) == 'string') row = '#' + row;
|
516
|
+
if (typeof(row) == 'string') row = '#' + row;
|
516
517
|
row = jQuery(row);
|
517
518
|
if (row.hasClass('even-record')) even_row = true;
|
518
519
|
|
@@ -522,9 +523,9 @@ var ActiveScaffold = {
|
|
522
523
|
ActiveScaffold.highlight(replaced);
|
523
524
|
}
|
524
525
|
},
|
525
|
-
|
526
|
+
|
526
527
|
replace: function(element, html) {
|
527
|
-
if (typeof(element) == 'string') element = '#' + element;
|
528
|
+
if (typeof(element) == 'string') element = '#' + element;
|
528
529
|
element = jQuery(element);
|
529
530
|
var new_element = typeof(html) == 'string' ? jQuery.parseHTML(jQuery.trim(html), true) : html;
|
530
531
|
new_element = jQuery(new_element);
|
@@ -534,9 +535,9 @@ var ActiveScaffold = {
|
|
534
535
|
return new_element;
|
535
536
|
} else return null;
|
536
537
|
},
|
537
|
-
|
538
|
+
|
538
539
|
replace_html: function(element, html) {
|
539
|
-
if (typeof(element) == 'string') element = '#' + element;
|
540
|
+
if (typeof(element) == 'string') element = '#' + element;
|
540
541
|
element = jQuery(element);
|
541
542
|
if (element.length) {
|
542
543
|
element.html(html);
|
@@ -546,15 +547,15 @@ var ActiveScaffold = {
|
|
546
547
|
},
|
547
548
|
|
548
549
|
append: function(element, html) {
|
549
|
-
if (typeof(element) == 'string') element = '#' + element;
|
550
|
+
if (typeof(element) == 'string') element = '#' + element;
|
550
551
|
element = jQuery(element);
|
551
552
|
element.append(html);
|
552
553
|
element.trigger('as:element_updated');
|
553
554
|
return element;
|
554
555
|
},
|
555
|
-
|
556
|
+
|
556
557
|
remove: function(element, callback) {
|
557
|
-
if (typeof(element) == 'string') element = '#' + element;
|
558
|
+
if (typeof(element) == 'string') element = '#' + element;
|
558
559
|
jQuery(element).trigger('as:element_removed').remove();
|
559
560
|
if (callback) callback();
|
560
561
|
},
|
@@ -564,22 +565,22 @@ var ActiveScaffold = {
|
|
564
565
|
this.replace_html(jQuery(element), value);
|
565
566
|
jQuery(element).closest('td')[empty ? 'addClass' : 'removeClass']('empty');
|
566
567
|
},
|
567
|
-
|
568
|
+
|
568
569
|
hide: function(element) {
|
569
570
|
if (typeof(element) == 'string') element = '#' + element;
|
570
571
|
jQuery(element).hide();
|
571
572
|
},
|
572
|
-
|
573
|
+
|
573
574
|
show: function(element) {
|
574
575
|
if (typeof(element) == 'string') element = '#' + element;
|
575
576
|
jQuery(element).show();
|
576
577
|
},
|
577
|
-
|
578
|
+
|
578
579
|
reset_form: function(element) {
|
579
580
|
if (typeof(element) == 'string') element = '#' + element;
|
580
581
|
jQuery(element).get(0).reset();
|
581
582
|
},
|
582
|
-
|
583
|
+
|
583
584
|
disable_form: function(as_form, skip_loading_indicator) {
|
584
585
|
if (typeof(as_form) == 'string') as_form = '#' + as_form;
|
585
586
|
as_form = jQuery(as_form)
|
@@ -591,7 +592,7 @@ var ActiveScaffold = {
|
|
591
592
|
// data-remote-disabled attr instead of set data because is used to in selector later
|
592
593
|
jQuery("input:enabled,select:enabled,textarea:enabled", as_form).attr('disabled', 'disabled').attr('data-remove-disabled', true);
|
593
594
|
},
|
594
|
-
|
595
|
+
|
595
596
|
enable_form: function(as_form, skip_loading_indicator) {
|
596
597
|
if (typeof(as_form) == 'string') as_form = '#' + as_form;
|
597
598
|
as_form = jQuery(as_form)
|
@@ -601,19 +602,19 @@ var ActiveScaffold = {
|
|
601
602
|
jQuery('.sub-form a.destroy.disabled', as_form).removeClass('disabled');
|
602
603
|
if (jQuery.fn.droppable) jQuery('.draggable-list', as_form).sortable('enable');
|
603
604
|
jQuery("input[data-remove-disabled],select[data-remove-disabled],textarea[data-remove-disabled]", as_form).removeAttr('disabled data-remove-disabled');
|
604
|
-
},
|
605
|
-
|
605
|
+
},
|
606
|
+
|
606
607
|
focus_first_element_of_form: function(form_element, form_selector) {
|
607
608
|
if (typeof(form_element) == 'string') form_element = '#' + form_element;
|
608
609
|
if (typeof(form_selector) == 'undefined') form_selector = jQuery(form_element).is('form') ? '' : 'form ';
|
609
610
|
jQuery(form_selector + ":input:visible:first", jQuery(form_element)).focus();
|
610
611
|
},
|
611
|
-
|
612
|
+
|
612
613
|
create_record_row: function(active_scaffold_id, html, options) {
|
613
614
|
if (typeof(active_scaffold_id) == 'string') active_scaffold_id = '#' + active_scaffold_id;
|
614
615
|
tbody = jQuery(active_scaffold_id).find('tbody.records').first();
|
615
616
|
var new_row;
|
616
|
-
|
617
|
+
|
617
618
|
if (options.insert_at == 'top') {
|
618
619
|
tbody.prepend(html);
|
619
620
|
new_row = tbody.children('tr.record:first-child');
|
@@ -644,24 +645,24 @@ var ActiveScaffold = {
|
|
644
645
|
this.highlight(new_row);
|
645
646
|
new_row.trigger('as:element_created');
|
646
647
|
},
|
647
|
-
|
648
|
+
|
648
649
|
create_record_row_from_url: function(action_link, url, options) {
|
649
650
|
jQuery.get(url, function(row) {
|
650
651
|
ActiveScaffold.create_record_row(action_link.scaffold(), row, options);
|
651
652
|
action_link.close();
|
652
653
|
});
|
653
654
|
},
|
654
|
-
|
655
|
+
|
655
656
|
delete_record_row: function(row, page_reload_url) {
|
656
657
|
if (typeof(row) == 'string') row = '#' + row;
|
657
658
|
row = jQuery(row);
|
658
659
|
var tbody = row.closest('tbody.records');
|
659
|
-
|
660
|
+
|
660
661
|
row.find('a.disabled').each(function() {;
|
661
662
|
var action_link = ActiveScaffold.ActionLink.get(this);
|
662
663
|
if (action_link) action_link.close();
|
663
664
|
});
|
664
|
-
|
665
|
+
|
665
666
|
ActiveScaffold.remove(row, function() {
|
666
667
|
ActiveScaffold.stripe(tbody);
|
667
668
|
ActiveScaffold.decrement_record_count(tbody.closest('div.active-scaffold'));
|
@@ -685,7 +686,7 @@ var ActiveScaffold = {
|
|
685
686
|
if (xhr) server_error.find('.error-500')[xhr.status < 500 ? 'hide' : 'show']();
|
686
687
|
ActiveScaffold.scroll_to(server_error, ActiveScaffold.config.scroll_on_close == 'checkInViewport');
|
687
688
|
},
|
688
|
-
|
689
|
+
|
689
690
|
find_action_link: function(element) {
|
690
691
|
if (typeof(element) == 'string') element = '#' + element;
|
691
692
|
element = jQuery(element);
|
@@ -704,7 +705,7 @@ var ActiveScaffold = {
|
|
704
705
|
container.find('> ul').remove();
|
705
706
|
container.append(html);
|
706
707
|
},
|
707
|
-
|
708
|
+
|
708
709
|
scroll_to: function(element, checkInViewport) {
|
709
710
|
if (typeof checkInViewport == 'undefined') checkInViewport = true;
|
710
711
|
if (typeof(element) == 'string') element = '#' + element;
|
@@ -715,10 +716,10 @@ var ActiveScaffold = {
|
|
715
716
|
// If it's in viewport , don't scroll;
|
716
717
|
if (form_offset + jQuery(element).height() <= docViewBottom && form_offset >= docViewTop) return;
|
717
718
|
}
|
718
|
-
|
719
|
+
|
719
720
|
jQuery(document).scrollTop(form_offset);
|
720
721
|
},
|
721
|
-
|
722
|
+
|
722
723
|
process_checkbox_inplace_edit: function(checkbox, options) {
|
723
724
|
var checked = checkbox.is(':checked'), td = checkbox.closest('td');
|
724
725
|
if (checked === true) options['params'] += '&value=1';
|
@@ -740,7 +741,7 @@ var ActiveScaffold = {
|
|
740
741
|
}
|
741
742
|
});
|
742
743
|
},
|
743
|
-
|
744
|
+
|
744
745
|
read_inplace_edit_heading_attributes: function(column_heading, options) {
|
745
746
|
if (column_heading.data('ie-cancel-text')) options.cancel_button = '<button class="inplace_cancel">' + column_heading.data('ie-cancel-text') + "</button>";
|
746
747
|
if (column_heading.data('ie-loading-text')) options.loading_text = column_heading.data('ie-loading-text');
|
@@ -749,21 +750,21 @@ var ActiveScaffold = {
|
|
749
750
|
if (column_heading.data('ie-rows')) options.textarea_rows = column_heading.data('ie-rows');
|
750
751
|
if (column_heading.data('ie-cols')) options.textarea_cols = column_heading.data('ie-cols');
|
751
752
|
if (column_heading.data('ie-size')) options.text_size = column_heading.data('ie-size');
|
752
|
-
},
|
753
|
-
|
753
|
+
},
|
754
|
+
|
754
755
|
create_inplace_editor: function(span, options) {
|
755
756
|
span.removeClass('hover');
|
756
757
|
span.editInPlace(options);
|
757
758
|
span.trigger('click.editInPlace');
|
758
759
|
},
|
759
|
-
|
760
|
+
|
760
761
|
highlight: function(element) {
|
761
762
|
if (typeof(element) == 'string') element = jQuery('#' + element);
|
762
763
|
if (typeof(element.effect) == 'function') {
|
763
764
|
element.effect("highlight", jQuery.extend({}, ActiveScaffold.config.highlight), 3000);
|
764
765
|
}
|
765
766
|
},
|
766
|
-
|
767
|
+
|
767
768
|
create_associated_record_form: function(element, content, options) {
|
768
769
|
if (typeof(element) == 'string') element = '#' + element;
|
769
770
|
var element = jQuery(element);
|
@@ -785,7 +786,7 @@ var ActiveScaffold = {
|
|
785
786
|
ActiveScaffold.focus_first_element_of_form(content, '');
|
786
787
|
content.trigger('as:element_created');
|
787
788
|
},
|
788
|
-
|
789
|
+
|
789
790
|
render_form_field: function(source, content, options) {
|
790
791
|
if (typeof(source) == 'string') source = '#' + source;
|
791
792
|
var source = jQuery(source);
|
@@ -806,7 +807,7 @@ var ActiveScaffold = {
|
|
806
807
|
}
|
807
808
|
}
|
808
809
|
},
|
809
|
-
|
810
|
+
|
810
811
|
record_select_onselect: function(edit_associated_url, active_scaffold_id, id){
|
811
812
|
jQuery.ajax({
|
812
813
|
url: edit_associated_url.replace('--ID--', id),
|
@@ -925,7 +926,7 @@ var ActiveScaffold = {
|
|
925
926
|
}
|
926
927
|
}
|
927
928
|
},
|
928
|
-
|
929
|
+
|
929
930
|
update_column: function(element, url, send_form, source_id, val, additional_params) {
|
930
931
|
if (!element) element = jQuery('#' + source_id);
|
931
932
|
var as_form = element.closest('form.as_form');
|
@@ -975,13 +976,27 @@ var ActiveScaffold = {
|
|
975
976
|
}
|
976
977
|
});
|
977
978
|
},
|
978
|
-
|
979
|
+
|
979
980
|
draggable_lists: function(selector_or_elements, parent) {
|
980
981
|
var elements;
|
981
982
|
if (!jQuery.fn.draggableLists) return;
|
982
983
|
if (typeof(selector_or_elements) == 'string') elements = jQuery(selector_or_elements, parent);
|
983
984
|
else elements = jQuery(selector_or_elements);
|
984
985
|
elements.draggableLists();
|
986
|
+
},
|
987
|
+
|
988
|
+
setup_warn_changes: function() {
|
989
|
+
var need_confirm = false;
|
990
|
+
var unload_message = $('meta[name=unload-message]').val() || ActiveScaffold.config.unload_message || "Are you sure you want to navigate away? Any unsaved data will be lost.";
|
991
|
+
$(document).on('change input', '.active-scaffold form:not(.search) input, .active-scaffold form:not(.search) textarea, .active-scaffold form:not(.search) select', function() {
|
992
|
+
$(this).closest('form').addClass('need-confirm');
|
993
|
+
});
|
994
|
+
$(document).on('click', '.active-scaffold .as_cancel:not([data-remote])', function() {
|
995
|
+
$(this).closest('form').removeClass('need-confirm');
|
996
|
+
});
|
997
|
+
window.onbeforeunload = function() {
|
998
|
+
if ($('form.need-confirm').length) return unload_message;
|
999
|
+
}
|
985
1000
|
}
|
986
1001
|
}
|
987
1002
|
|
@@ -1010,8 +1025,8 @@ String.prototype.append_params = function(params) {
|
|
1010
1025
|
for(var key in params) {
|
1011
1026
|
if (key) url += (key + '=' + params[key] + '&');
|
1012
1027
|
}
|
1013
|
-
|
1014
|
-
// the loop leaves a comma dangling at the end of string, chop it off
|
1028
|
+
|
1029
|
+
// the loop leaves a comma dangling at the end of string, chop it off
|
1015
1030
|
url = url.substring(0, url.length-1);
|
1016
1031
|
return url;
|
1017
1032
|
};
|
@@ -1026,7 +1041,7 @@ ActiveScaffold.Actions.Abstract = Class.extend({
|
|
1026
1041
|
this.target = jQuery(target);
|
1027
1042
|
this.loading_indicator = jQuery(loading_indicator);
|
1028
1043
|
this.options = options;
|
1029
|
-
var _this = this;
|
1044
|
+
var _this = this;
|
1030
1045
|
this.links = jQuery.map(links, function(link) {
|
1031
1046
|
var my_link = _this.instantiate_link(link);
|
1032
1047
|
return my_link;
|
@@ -1090,7 +1105,7 @@ ActiveScaffold.ActionLink.Abstract = Class.extend({
|
|
1090
1105
|
open: function(event) {
|
1091
1106
|
this.tag.click();
|
1092
1107
|
},
|
1093
|
-
|
1108
|
+
|
1094
1109
|
insert: function(content) {
|
1095
1110
|
throw 'unimplemented'
|
1096
1111
|
},
|
@@ -1137,7 +1152,7 @@ ActiveScaffold.ActionLink.Abstract = Class.extend({
|
|
1137
1152
|
scaffold: function() {
|
1138
1153
|
return this.tag.closest('div.active-scaffold');
|
1139
1154
|
},
|
1140
|
-
|
1155
|
+
|
1141
1156
|
update_flash_messages: function(messages) {
|
1142
1157
|
message_node = jQuery(this.scaffold_id().replace(/-active-scaffold/, '-messages'));
|
1143
1158
|
if (message_node) message_node.html(messages);
|
@@ -1161,7 +1176,7 @@ ActiveScaffold.Actions.Record = ActiveScaffold.Actions.Abstract.extend({
|
|
1161
1176
|
var l = new ActiveScaffold.ActionLink.Record(link, this.target, this.loading_indicator);
|
1162
1177
|
var refresh = this.target.data('refresh');
|
1163
1178
|
if (refresh) l.refresh_url = this.target.closest('.records').data('refresh-record').replace('--ID--', refresh);
|
1164
|
-
|
1179
|
+
|
1165
1180
|
if (l.position) {
|
1166
1181
|
l.url = l.url.append_params({adapter: '_list_inline_adapter'});
|
1167
1182
|
l.tag.attr('href', l.url);
|
@@ -1238,7 +1253,7 @@ ActiveScaffold.ActionLink.Record = ActiveScaffold.ActionLink.Abstract.extend({
|
|
1238
1253
|
item.tag.addClass('disabled');
|
1239
1254
|
});
|
1240
1255
|
},
|
1241
|
-
|
1256
|
+
|
1242
1257
|
set_opened: function() {
|
1243
1258
|
if (this.position == 'after') {
|
1244
1259
|
this.set_adapter(this.target.next());
|