active_scaffold_sortable 3.2.0 → 3.2.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -2,7 +2,7 @@ ActiveScaffold.update_positions = function(content) {
2
2
  if (typeof(content) == 'string') content = jQuery('#' + content);
3
3
  var element = content.closest('.sortable-container');
4
4
  jQuery.each(content.find('.sub-form-record input[name$="[' + element.data('column') + ']"]'), function(i, field) {
5
- jQuery(field).val(i);
5
+ jQuery(field).val(i+1); // don't use 0
6
6
  });
7
7
  }
8
8
  ActiveScaffold.sortable = function(element) {
@@ -12,6 +12,7 @@ ActiveScaffold.sortable = function(element) {
12
12
  element = content.closest('.sortable-container');
13
13
  form = element.closest('form.as_form').length > 0;
14
14
  } else {
15
+ element = jQuery(element);
15
16
  form = element.closest('form.as_form').length > 0;
16
17
  if (form) content = element;
17
18
  else content = element.find('.records:first');
@@ -1,7 +1,10 @@
1
1
  .sortable-handle {
2
2
  cursor: move;
3
3
  }
4
- td.sortable-handle {
4
+ td.sortable-handle, .active-scaffold .sub-form table td.sortable-handle {
5
5
  background: image-url('active_scaffold/sortable.png') no-repeat center center;
6
6
  width: 16px;
7
7
  }
8
+ .active-scaffold .sub-form table td.sortable-handle {
9
+ display: table-cell;
10
+ }
@@ -2,7 +2,7 @@ module ActiveScaffoldSortable
2
2
  module Version
3
3
  MAJOR = 3
4
4
  MINOR = 2
5
- PATCH = 0
5
+ PATCH = 1
6
6
 
7
7
  STRING = [MAJOR, MINOR, PATCH].compact.join('.')
8
8
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_scaffold_sortable
3
3
  version: !ruby/object:Gem::Version
4
- hash: 15
4
+ hash: 13
5
5
  prerelease:
6
6
  segments:
7
7
  - 3
8
8
  - 2
9
- - 0
10
- version: 3.2.0
9
+ - 1
10
+ version: 3.2.1
11
11
  platform: ruby
12
12
  authors:
13
13
  - Sergio Cambra
@@ -16,11 +16,10 @@ autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
18
 
19
- date: 2012-12-18 00:00:00 Z
19
+ date: 2013-01-16 00:00:00 Z
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
22
- type: :development
23
- requirement: &id001 !ruby/object:Gem::Requirement
22
+ version_requirements: &id001 !ruby/object:Gem::Requirement
24
23
  none: false
25
24
  requirements:
26
25
  - - ">="
@@ -29,12 +28,12 @@ dependencies:
29
28
  segments:
30
29
  - 0
31
30
  version: "0"
32
- version_requirements: *id001
33
31
  prerelease: false
32
+ type: :development
33
+ requirement: *id001
34
34
  name: shoulda
35
35
  - !ruby/object:Gem::Dependency
36
- type: :development
37
- requirement: &id002 !ruby/object:Gem::Requirement
36
+ version_requirements: &id002 !ruby/object:Gem::Requirement
38
37
  none: false
39
38
  requirements:
40
39
  - - ~>
@@ -45,12 +44,12 @@ dependencies:
45
44
  - 0
46
45
  - 0
47
46
  version: 1.0.0
48
- version_requirements: *id002
49
47
  prerelease: false
48
+ type: :development
49
+ requirement: *id002
50
50
  name: bundler
51
51
  - !ruby/object:Gem::Dependency
52
- type: :development
53
- requirement: &id003 !ruby/object:Gem::Requirement
52
+ version_requirements: &id003 !ruby/object:Gem::Requirement
54
53
  none: false
55
54
  requirements:
56
55
  - - ">="
@@ -59,25 +58,26 @@ dependencies:
59
58
  segments:
60
59
  - 0
61
60
  version: "0"
62
- version_requirements: *id003
63
61
  prerelease: false
62
+ type: :development
63
+ requirement: *id003
64
64
  name: rcov
65
65
  - !ruby/object:Gem::Dependency
66
- type: :runtime
67
- requirement: &id004 !ruby/object:Gem::Requirement
66
+ version_requirements: &id004 !ruby/object:Gem::Requirement
68
67
  none: false
69
68
  requirements:
70
69
  - - ">="
71
70
  - !ruby/object:Gem::Version
72
- hash: -1842552253
71
+ hash: 2064438024
73
72
  segments:
74
73
  - 3
75
74
  - 3
76
75
  - 0
77
76
  - rc
78
77
  version: 3.3.0.rc
79
- version_requirements: *id004
80
78
  prerelease: false
79
+ type: :runtime
80
+ requirement: *id004
81
81
  name: active_scaffold
82
82
  description: Sort Tree or List Structures by Drag n Drop
83
83
  email: activescaffold@googlegroups.com
@@ -89,46 +89,38 @@ extra_rdoc_files:
89
89
  - LICENSE.txt
90
90
  - README.textile
91
91
  files:
92
- - app/assets/stylesheets/active_scaffold_sortable.css.scss
92
+ - app/views/active_scaffold_overrides/_form_association.html.erb
93
+ - app/views/active_scaffold_overrides/edit_associated.js.erb
93
94
  - app/assets/images/active_scaffold/sortable.png
95
+ - app/assets/stylesheets/active_scaffold_sortable.css.scss
96
+ - app/assets/javascripts/prototype/active_scaffold_sortable.js
94
97
  - app/assets/javascripts/active_scaffold_sortable.js.erb
95
98
  - app/assets/javascripts/jquery/active_scaffold_sortable.js
96
- - app/assets/javascripts/jquery/active_scaffold_sortable.js~
97
- - app/assets/javascripts/prototype/active_scaffold_sortable.js
98
- - app/assets/javascripts/prototype/active_scaffold_sortable.js~
99
- - app/views/active_scaffold_overrides/_form_association.html.erb
100
- - app/views/active_scaffold_overrides/edit_associated.js.erb
101
- - app/views/active_scaffold_overrides/_form_association.html.erb~
102
- - app/views/active_scaffold_overrides/edit_associated.js.erb~
103
- - frontends/default/active_scaffold_overrides/_list.html.erb
104
99
  - frontends/default/active_scaffold_overrides/on_create.js.erb
100
+ - frontends/default/active_scaffold_overrides/_list.html.erb
105
101
  - frontends/default/active_scaffold_overrides/on_update.js.erb
106
102
  - frontends/default/active_scaffold_overrides/reorder.js.erb
107
- - frontends/default/active_scaffold_overrides/on_create.js.erb~
108
- - frontends/default/active_scaffold_overrides/on_update.js.erb~
109
103
  - lib/active_scaffold/actions/sortable.rb
110
- - lib/active_scaffold/actions/sortable.rb~
111
104
  - lib/active_scaffold/config/sortable.rb
112
105
  - lib/active_scaffold/helpers/sortable_helpers.rb
113
- - lib/active_scaffold_sortable.rb
114
- - lib/active_scaffold_sortable/config/core.rb
115
- - lib/active_scaffold_sortable/core.rb
116
- - lib/active_scaffold_sortable/version.rb
117
106
  - lib/active_scaffold_sortable/engine.rb
107
+ - lib/active_scaffold_sortable/core.rb
118
108
  - lib/active_scaffold_sortable/view_helpers.rb
119
- - lib/active_scaffold_sortable/view_helpers.rb~
109
+ - lib/active_scaffold_sortable/config/core.rb
110
+ - lib/active_scaffold_sortable/version.rb
111
+ - lib/active_scaffold_sortable.rb
120
112
  - LICENSE.txt
121
113
  - README.textile
122
- - test/auto_models_controller_test.rb
123
- - test/config_test.rb
124
- - test/controllers/auto_models_controller.rb
125
- - test/controllers/models_controller.rb
126
- - test/controllers/sortable_models_controller.rb
114
+ - test/router_test.rb
127
115
  - test/models/auto_model.rb
128
116
  - test/models/model.rb
129
- - test/router_test.rb
130
117
  - test/schema.rb
131
118
  - test/test_helper.rb
119
+ - test/controllers/auto_models_controller.rb
120
+ - test/controllers/models_controller.rb
121
+ - test/controllers/sortable_models_controller.rb
122
+ - test/auto_models_controller_test.rb
123
+ - test/config_test.rb
132
124
  homepage: http://github.com/activescaffold/active_scaffold_sortable
133
125
  licenses:
134
126
  - MIT
@@ -158,18 +150,18 @@ required_rubygems_version: !ruby/object:Gem::Requirement
158
150
  requirements: []
159
151
 
160
152
  rubyforge_project:
161
- rubygems_version: 1.8.23
153
+ rubygems_version: 1.8.19
162
154
  signing_key:
163
155
  specification_version: 3
164
156
  summary: Drag n Drop Sorting for Activescaffold
165
157
  test_files:
166
- - test/auto_models_controller_test.rb
167
- - test/config_test.rb
168
- - test/controllers/auto_models_controller.rb
169
- - test/controllers/models_controller.rb
170
- - test/controllers/sortable_models_controller.rb
158
+ - test/router_test.rb
171
159
  - test/models/auto_model.rb
172
160
  - test/models/model.rb
173
- - test/router_test.rb
174
161
  - test/schema.rb
175
162
  - test/test_helper.rb
163
+ - test/controllers/auto_models_controller.rb
164
+ - test/controllers/models_controller.rb
165
+ - test/controllers/sortable_models_controller.rb
166
+ - test/auto_models_controller_test.rb
167
+ - test/config_test.rb
@@ -1,45 +0,0 @@
1
- ActiveScaffold.update_positions = function(content) {
2
- if (typeof(content) == 'string') content = jQuery('#' + content);
3
- var element = content.closest('.sortable-container');
4
- jQuery.each(content.find('.sub-form-record input[name$="[' + element.data('column') + ']"]'), function(i, field) {
5
- jQuery(field).val(i);
6
- });
7
- }
8
- ActiveScaffold.sortable = function(element) {
9
- var form, content, sortable_options = {};
10
- if (typeof(element) == 'string') {
11
- content = jQuery('#' + element);
12
- element = content.closest('.sortable-container');
13
- } else {
14
- var form = element.closest('form.as_form').length > 0;
15
- if (form) content = element;
16
- else content = element.find('.records:first');
17
- }
18
-
19
- if (form) {
20
- sortable_options.update = function(event, ui) {
21
- ActiveScaffold.update_positions(content);
22
- };
23
- } else {
24
- var csrf = jQuery('meta[name=csrf-param]').attr('content') + '=' + jQuery('meta[name=csrf-token]').attr('content');
25
- var url = element.data('reorder-url');
26
- sortable_options.update = function(event, ui) {
27
- var body = jQuery(this).sortable('serialize',{key: encodeURIComponent(jQuery(this).attr('id') + '[]'), expression: new RegExp(element.data('format'))});
28
- var params = element.data('with');
29
- if (params) body += '&' + params;
30
- jQuery.post(url, body + '&' + csrf);
31
- };
32
- }
33
- sortable_options.handle = element.data('handle');
34
- sortable_options.items = element.data('tag');
35
- content.sortable(sortable_options);
36
- };
37
-
38
- jQuery(document).ready(function($) {
39
- $(document).on('as:action_success', 'a.as_action', function(e, action_link) {
40
- var sortable = $('.sortable-container', action_link.adapter);
41
- if (sortable.length) $.each(sortable, function(i, s) { ActiveScaffold.sortable(s); });
42
- });
43
- var sortable = $('.sortable-container');
44
- if (sortable.length) ActiveScaffold.sortable(sortable);
45
- });
@@ -1,34 +0,0 @@
1
- ActiveScaffold.sortable = function(element) {
2
- var form, content, sortable_options = {};
3
- if (typeof(element) == 'string') {
4
- content = $(element);
5
- element = content.up('.sortable-container');
6
- } else {
7
- var form = !!element.up('form.as_form');
8
- if (form) content = element.down('.sub-form');
9
- else content = element.down('.records');
10
- }
11
-
12
- if (!form) {
13
- var csrf = $$('meta[name=csrf-param]')[0].readAttribute('content') + '=' + $$('meta[name=csrf-token]')[0].readAttribute('content');
14
- var url = element.readAttribute('data-reorder-url').append_params(csrf);
15
- sortable_options.onUpdate = function() {
16
- var body = Sortable.serialize(content);
17
- var params = element.readAttribute('data-with');
18
- if (params) body += '&' + params;
19
- new Ajax.Request(url, {method: 'post', parameters: body + '&' + csrf});
20
- }
21
- }
22
- sortable_options.handle = element.readAttribute('data-handle');
23
- sortable_options.items = element.readAttribute('data-tag');
24
- Sortable.create(content, sortable_options);
25
- };
26
-
27
- document.observe('dom:loaded', function(){
28
- document.on('as:action_success', 'a.as_action', function(e, action_link) {
29
- var sortable = $(action_link.adapter).find('.sortable-container');
30
- if (sortable.length) sortable.invoke(function(s) { ActiveScaffold.sortable(s); });
31
- });
32
- var sortable = $$('.sortable-container');
33
- if (sortable.length) ActiveScaffold.sortable(sortable[0]);
34
- });
@@ -1,6 +0,0 @@
1
- <% config = active_scaffold_config_for(column.association.klass) %>
2
- <% if config.actions.include? :sortable %>
3
- <%= content_tag :div, render(:super), :class => 'sortable-container', :data => sort_params(config).merge(:tag => 'tbody') %>
4
- <% else %>
5
- <%= render :super %>
6
- <% end %>
@@ -1,6 +0,0 @@
1
- <%= render :super %>
2
- <% config = active_scaffold_config_for(@column.association.klass) %>
3
- <% if config.actions.include? :sortable %>
4
- ActiveScaffold.update_position('<%= sub_form_list_id(:association => @column.name) %>');
5
- ActiveScaffold.sortable('<%= sub_form_list_id(:association => @column.name) %>');
6
- <% end %>
@@ -1,4 +0,0 @@
1
- <%= render(:super, :locals => {:insert_at => :bottom}) %>
2
- <% if controller.send(:successful?) && !nested_singular_association? %>
3
- ActiveScaffold.sortable('<%= active_scaffold_tbody_id %>'); %>
4
- <% end %>
@@ -1,17 +0,0 @@
1
- <%= render(:super) %>
2
- <%
3
- # if we are currently editing a nested belongs_to association do not do any sorting stuff
4
- unless nested_singular_association?
5
- if ActiveScaffold.js_framework == :prototype
6
- %>
7
- <%= sortable_element_js(*sort_params) %>
8
- <%
9
- elsif ActiveScaffold.js_framework == :jquery
10
- reorder_params = {}
11
- reorder_params[:eid] = params[:eid] unless params[:eid].blank?
12
- %>
13
- <%= "ActiveScaffold.sortable('#{sort_params[0]}', #{controller_name.to_json}, #{reorder_params.to_json});".html_safe %>
14
- <%
15
- end if controller.send :successful?
16
- end
17
- %>
@@ -1,81 +0,0 @@
1
- module ActiveScaffold::Actions
2
- module Sortable
3
- def self.included(base)
4
- base.helper ActiveScaffold::Helpers::SortableHelpers
5
- base.before_filter :sortable_authorized?, :only => :reorder
6
- base.active_scaffold_config.configure do |config|
7
- config.list.pagination = false
8
-
9
- # turn sorting off
10
- sortable_column = config.sortable.column.name
11
- config.columns.each {|c| c.sort = false unless c.name == sortable_column }
12
- config.list.sorting = { sortable_column => "asc" }
13
-
14
- config.actions.each do |action_name|
15
- next if action_name == :subform
16
- action = config.send(action_name)
17
- action.columns.exclude(sortable_column) if action.respond_to? :columns
18
- end
19
-
20
- base.add_active_scaffold_path File.join(ActiveScaffold::Config::Sortable.plugin_directory, 'frontends', 'default')
21
- end
22
- end
23
-
24
- def reorder
25
- model = active_scaffold_config.model
26
-
27
- unless (model.instance_methods & [:nested_set_scope, 'nested_set_scope']).empty?
28
- reorder_children_in_tree(model)
29
- else
30
- if model.respond_to? :ancestry_column
31
- reorder_ancestry_tree(model)
32
- else
33
- reorder_simple_list(model)
34
- end
35
- end
36
- do_refresh_list if active_scaffold_config.sortable.refresh_list
37
- end
38
-
39
- protected
40
- def sortable_authorized?
41
- authorized_for?(:action => :update)
42
- end
43
-
44
- def reorder_ancestry_tree(model)
45
- first_record = model.find(params[active_scaffold_tbody_id].first)
46
- unless first_record.nil?
47
- records = first_record.is_root? ? model.roots: first_record.parent.children
48
- reorder_simple_list(model)
49
- else
50
- Rails.logger.info("Failed to find first record to reorder")
51
- end
52
- end
53
-
54
- def reorder_simple_list(model)
55
- column_name = active_scaffold_config.sortable.column.name
56
- debugger
57
- params[active_scaffold_tbody_id].each_with_index do |id, index|
58
- model.update_all({column_name => index + 1}, {model.primary_key => id})
59
- end
60
- end
61
-
62
- def reorder_children_in_tree(model)
63
- current_order = model.find(params[active_scaffold_tbody_id].first).try(:self_and_siblings)
64
- new_order = params[active_scaffold_tbody_id].collect {|item_id| item_id.to_i}
65
- new_order.each_with_index do |record_id, new_position|
66
- if record_id != current_order[new_position].id
67
- current_order = move_child(current_order.find {|child| child.id == record_id}, new_position, current_order)
68
- end
69
- end if new_order.length == current_order.length
70
- end
71
-
72
- def move_child(child, new_position, children)
73
- old_position = children.index(child)
74
- (old_position - new_position).abs.times do |step|
75
- child.send((old_position - new_position) > 0 ? :move_left : :move_right)
76
- end
77
- child.self_and_siblings
78
- end
79
-
80
- end
81
- end
@@ -1,16 +0,0 @@
1
- module ActiveScaffoldSortable
2
- module ViewHelpers
3
- def sort_params(config = active_scaffold_config)
4
- options = {
5
- :tag => 'tr',
6
- :reorder_url => url_for(params_for(:action => :reorder, :controller => controller_name)),
7
- :format => '^[^_-](?:[A-Za-z0-9_-]*)-(.*)-row$'
8
- }
9
- options.merge config.sortable.options
10
- end
11
-
12
- def active_scaffold_sortable_column(record, column)
13
- ''
14
- end
15
- end
16
- end