jquery_sortable_tree 3.0.0 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +23 -0
  3. data/app/helpers/jquery_sortable_tree_helper/render_expandable_tree_helper.rb +0 -6
  4. data/app/helpers/jquery_sortable_tree_helper/render_indented_options_helper.rb +1 -11
  5. data/app/helpers/jquery_sortable_tree_helper/render_nested_options_helper.rb +1 -7
  6. data/app/helpers/jquery_sortable_tree_helper/render_optgroup_helper.rb +11 -0
  7. data/app/helpers/jquery_sortable_tree_helper/render_sortable_tree_helper.rb +8 -4
  8. data/app/helpers/jquery_sortable_tree_helper/render_tree_helper.rb +0 -6
  9. data/app/helpers/jquery_sortable_tree_helper.rb +10 -4
  10. data/lib/jquery_sortable_tree/version.rb +1 -1
  11. data/spec/{dummy_app/spec/build_tree_helper.rb → build_tree_helper.rb} +0 -0
  12. data/spec/dummy_app/Gemfile.lock +1 -1
  13. data/spec/dummy_app/app/controllers/admin/pages_controller.rb +9 -4
  14. data/spec/dummy_app/app/controllers/pages_controller.rb +11 -3
  15. data/spec/dummy_app/app/views/admin/pages/optgroup.html.haml +3 -0
  16. data/spec/dummy_app/app/views/pages/optgroup.html.haml +3 -0
  17. data/spec/dummy_app/app/views/welcome/index.html.haml +3 -0
  18. data/spec/dummy_app/config/application.rb +1 -0
  19. data/spec/dummy_app/config/routes.rb +9 -17
  20. data/spec/dummy_app/db/test.db +0 -0
  21. data/spec/dummy_app/log/development.log +559 -0
  22. data/spec/dummy_app/log/test.log +21016 -0
  23. data/spec/dummy_app/tmp/cache/assets/development/sprockets/14805e3ed08782f4b821fe6cfd03d911 +0 -0
  24. data/spec/dummy_app/tmp/cache/assets/development/sprockets/1e445aefca5bc750ef4f584ec1dc0849 +0 -0
  25. data/spec/dummy_app/tmp/cache/assets/development/sprockets/28eefd9e9c7ea2e1414cd10a6d184ae5 +0 -0
  26. data/spec/dummy_app/tmp/cache/assets/development/sprockets/2f5173deea6c795b8fdde723bb4b63af +0 -0
  27. data/spec/dummy_app/tmp/cache/assets/development/sprockets/3dbf5c413607e86fa3ff1f931887217e +0 -0
  28. data/spec/dummy_app/tmp/cache/assets/development/sprockets/505027f29aa1c70c5425d19ea9fb77ce +0 -0
  29. data/spec/dummy_app/tmp/cache/assets/development/sprockets/6016aac84581a1ff8e9503adf790f0eb +0 -0
  30. data/spec/dummy_app/tmp/cache/assets/development/sprockets/7eecec59a10631fead107d7e8c265910 +0 -0
  31. data/spec/dummy_app/tmp/cache/assets/development/sprockets/a0ac3dab292e1eb99d5e8a524e6dfded +0 -0
  32. data/spec/dummy_app/tmp/cache/assets/development/sprockets/a2e4e33192daa77f118bde803b5f469e +0 -0
  33. data/spec/dummy_app/tmp/cache/assets/development/sprockets/cffd775d018f68ce5dba1ee0d951a994 +0 -0
  34. data/spec/dummy_app/tmp/cache/assets/development/sprockets/f7cbd26ba1d28d48de824f0e94586655 +0 -0
  35. data/spec/spec_helper.rb +21 -0
  36. data/spec/{dummy_app/spec/views → views}/pages/index.html.haml_spec.rb +14 -10
  37. metadata +57 -7
  38. data/app/inputs/indented_collection_select_input.rb +0 -12
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a62aa61ef9e134d4b425834fc6f508bc1d30e538
4
- data.tar.gz: 0675adaa8d49fb232f0cf77b4f58e6b526b09344
3
+ metadata.gz: 176af5700482ebd2c556ebbaebd76c840561735e
4
+ data.tar.gz: c510f8471e7283d03bb3dd5dead8385df941a4eb
5
5
  SHA512:
6
- metadata.gz: 044754fe59ffc39b8912576c7192c797e771083bbc212173fad48f5fd2924debb26291b73d5f571847c86d0ed0154929a7f6d03925d95f17a3210c444aa7d5ca
7
- data.tar.gz: 42afb0b6db170c62051ab908ace517c751e0dabb670359da81a6818e3a99c5b5be06c2fb775fd7315aba43d86772894be2703e7000136be9af3c515e6e362004
6
+ metadata.gz: b9b0fa92c763b3827e23ff075a36618899d72f198f2fd33c537dacad3aee385c914233ed1bd4c072a691deee894fd866dbbabfdc1268ca54a6a9cd5b077e4c2d
7
+ data.tar.gz: 94768b423e5e75c85595762b0bfc5c25de6e274f6a1c16dfb2d4b9fcee8adbc9597ea532c66052110f159c967e7463857f1657a5663b269e71ca55e7db69bd7b
data/README.md CHANGED
@@ -29,6 +29,10 @@ Nested Set + Drag&Drop GUI. Very fast! Best render helper! **2000 nodes/sec**. R
29
29
 
30
30
  ![Indented options](docs/indented_options.jpg)
31
31
 
32
+ ## Render Optgroup
33
+
34
+ ![Optgroup](docs/optgroup.jpg)
35
+
32
36
  ## Expandable tree
33
37
 
34
38
  ![Expandable](docs/expandable.jpg)
@@ -161,6 +165,25 @@ build_server_tree(tree, options)
161
165
 
162
166
  This uses CSS styling, for indenting with spaces, use **indented_options** instead.
163
167
 
168
+ ## Render Indented Options Tree
169
+
170
+ ```haml
171
+ = select_tag :page_id, indented_options(@pages, :selected => Page.last)
172
+ ```
173
+
174
+ **indented_options** is just alias of **build_server_tree(tree, type: :indented_options)**
175
+
176
+ ## Render Optgroup Tree
177
+
178
+ ```haml
179
+ = select_tag :page_id, optgroup(@pages, :selected => Page.last)
180
+ ```
181
+
182
+ **optgroup** is just alias of **build_server_tree(tree, type: :indented_options)**
183
+ The only difference between **indented_options** and **optgroup** is the selectable of parent nodes.
184
+ Indented options allows to select parent nodes, but optgroup does not.
185
+
186
+
164
187
 
165
188
  ## build_server_tree options
166
189
 
@@ -9,12 +9,6 @@
9
9
  module JquerySortableTreeHelper
10
10
  module RenderExpandableTreeHelper
11
11
  class Render < JquerySortableTreeHelper::RenderSortableTreeHelper::Render
12
- attr_accessor :h, :options
13
-
14
- def initialize(h, options)
15
- @h, @options = h, options
16
- end
17
-
18
12
  def div_item
19
13
  h.content_tag(:div, handle + expand_button + edit_link + controls, class: :item)
20
14
  end
@@ -1,12 +1,6 @@
1
1
  module JquerySortableTreeHelper
2
2
  module RenderIndentedOptionsHelper
3
- class Render
4
- attr_accessor :h, :options
5
-
6
- def initialize(h, options)
7
- @h, @options = h, options
8
- end
9
-
3
+ class Render < JquerySortableTreeHelper::RenderSortableTreeHelper::Render
10
4
  def render_node
11
5
  h.content_tag(:option, title, tag_options) + children
12
6
  end
@@ -25,10 +19,6 @@ module JquerySortableTreeHelper
25
19
  html_options
26
20
  end
27
21
 
28
- def node
29
- @options[:node]
30
- end
31
-
32
22
  def children
33
23
  @options[:children].html_safe
34
24
  end
@@ -1,12 +1,6 @@
1
1
  module JquerySortableTreeHelper
2
2
  module RenderNestedOptionsHelper
3
- class Render
4
- attr_accessor :h, :options
5
-
6
- def initialize(h, options)
7
- @h, @options = h, options
8
- end
9
-
3
+ class Render < JquerySortableTreeHelper::RenderSortableTreeHelper::Render
10
4
  def render_node
11
5
  @h.content_tag(:option, options[:node].send(options[:title]), tag_options) + children
12
6
  end
@@ -0,0 +1,11 @@
1
+ module JquerySortableTreeHelper
2
+ module RenderOptgroupHelper
3
+ class Render < JquerySortableTreeHelper::RenderIndentedOptionsHelper::Render
4
+ def tag_options
5
+ html_options = super
6
+ html_options[:disabled] = 'true' unless options[:children].blank?
7
+ html_options
8
+ end
9
+ end
10
+ end
11
+ end
@@ -18,7 +18,7 @@ module JquerySortableTreeHelper
18
18
  def render_node
19
19
  return h.content_tag(:li, div_item + children,
20
20
  class: :node,
21
- data: { node_id: options[:node].id }
21
+ data: { node_id: node.id }
22
22
  )
23
23
  end
24
24
 
@@ -31,13 +31,13 @@ module JquerySortableTreeHelper
31
31
  end
32
32
 
33
33
  def edit_link
34
- h.content_tag(:h4, h.link_to(options[:node].send(options[:title]), show_path, class: :edit))
34
+ h.content_tag(:h4, h.link_to(node.send(options[:title]), show_path, class: :edit))
35
35
  end
36
36
 
37
37
  def show_link
38
38
  h.content_tag(:h4,
39
- h.link_to(options[:node].send(options[:title]),
40
- h.url_for(options[:namespace] + [options[:node]]))
39
+ h.link_to(node.send(options[:title]),
40
+ h.url_for(options[:namespace] + [node]))
41
41
  )
42
42
  end
43
43
 
@@ -57,6 +57,10 @@ module JquerySortableTreeHelper
57
57
  h.content_tag(:ol, options[:children].html_safe, class: :nested_set) unless options[:children].blank?
58
58
  end
59
59
 
60
+ def node
61
+ @options[:node]
62
+ end
63
+
60
64
  def show_path
61
65
  h.url_for(controller: (options[:controller] || (options[:klass] && options[:klass].pluralize)), action: :show, id: options[:node].id, format: :json)
62
66
  end
@@ -9,12 +9,6 @@
9
9
  module JquerySortableTreeHelper
10
10
  module RenderTreeHelper
11
11
  class Render < JquerySortableTreeHelper::RenderSortableTreeHelper::Render
12
- attr_accessor :h, :options
13
-
14
- def initialize(h, options)
15
- @h, @options = h, options
16
- end
17
-
18
12
  def div_item
19
13
  h.content_tag(:div, show_link, class: :item)
20
14
  end
@@ -6,7 +6,8 @@ module JquerySortableTreeHelper
6
6
  sortable: RenderSortableTreeHelper,
7
7
  expandable: RenderExpandableTreeHelper,
8
8
  nested_options: RenderNestedOptionsHelper,
9
- indented_options: RenderIndentedOptionsHelper
9
+ indented_options: RenderIndentedOptionsHelper,
10
+ optgroup: RenderOptgroupHelper
10
11
  }.freeze
11
12
 
12
13
  ###############################################
@@ -49,6 +50,7 @@ module JquerySortableTreeHelper
49
50
  end
50
51
 
51
52
  def fake_node(options)
53
+ options[:title] ||= 'title'
52
54
  OpenStruct.new(options[:title] => '', id: ':id', children: nil)
53
55
  end
54
56
 
@@ -82,15 +84,19 @@ module JquerySortableTreeHelper
82
84
  end
83
85
 
84
86
  def nested_options(tree, options = {})
85
- build_server_tree(tree, { type: :nested_options }.merge!(options))
87
+ build_server_tree(tree, { type: :nested_options }.merge(options))
86
88
  end
87
89
 
88
90
  def indented_options(tree, options = {})
89
- build_server_tree(tree, { type: :indented_options }.merge!(options))
91
+ build_server_tree(tree, { type: :indented_options }.merge(options))
90
92
  end
91
93
 
92
94
  def expandable_tree(tree, options = {})
93
- build_server_tree(tree, { type: :expandable }.merge!(options))
95
+ build_server_tree(tree, { type: :expandable }.merge(options))
96
+ end
97
+
98
+ def optgroup(tree, options = {})
99
+ build_server_tree(tree, { type: :optgroup }.merge(options))
94
100
  end
95
101
 
96
102
  ###############################################
@@ -1,3 +1,3 @@
1
1
  module JquerySortableTree
2
- VERSION = '3.0.0'
2
+ VERSION = '3.1.0'
3
3
  end
@@ -9,7 +9,7 @@ PATH
9
9
  remote: ../../
10
10
  specs:
11
11
  jquery_sortable_tree (3.0.0)
12
- rails (>= 3.1)
12
+ rails (>= 3.1, <= 5.0)
13
13
 
14
14
  GEM
15
15
  remote: http://rubygems.org/
@@ -1,20 +1,21 @@
1
1
  class Admin::PagesController < ApplicationController
2
2
  include JquerySortableTreeController::Rebuild
3
3
 
4
+ before_action :load_pages, only: [:index, :manage, :nested_options, :indented_options, :optgroup]
5
+
4
6
  def index
5
- @pages = Admin::Page.nested_set.select('id, title, content, parent_id').limit(15)
6
7
  end
7
8
 
8
9
  def manage
9
- @pages = Admin::Page.nested_set.select('id, title, content, parent_id').limit(15)
10
10
  end
11
11
 
12
12
  def nested_options
13
- @pages = Admin::Page.nested_set.select('id, title, content, parent_id').limit(15)
14
13
  end
15
14
 
16
15
  def indented_options
17
- @pages = Admin::Page.nested_set.select('id, title, content, parent_id').limit(15)
16
+ end
17
+
18
+ def optgroup
18
19
  end
19
20
 
20
21
  def node_manage
@@ -25,6 +26,10 @@ class Admin::PagesController < ApplicationController
25
26
 
26
27
  protected
27
28
 
29
+ def load_pages
30
+ @pages = Admin::Page.nested_set.select('id, title, content, parent_id').limit(15)
31
+ end
32
+
28
33
  def sortable_model
29
34
  Admin::Page
30
35
  end
@@ -2,16 +2,18 @@ class PagesController < ApplicationController
2
2
  include JquerySortableTreeController::Rebuild
3
3
  include JquerySortableTreeController::ExpandNode
4
4
 
5
+ before_action :load_pages, only: [:index, :nested_options, :indented_options, :optgroup]
6
+
5
7
  def index
6
- @pages = Page.nested_set.select('id, title, content, parent_id').limit(15)
7
8
  end
8
9
 
9
10
  def nested_options
10
- @pages = Page.nested_set.select('id, title, content, parent_id').limit(15)
11
11
  end
12
12
 
13
13
  def indented_options
14
- @pages = Page.nested_set.select('id, title, content, parent_id').limit(15)
14
+ end
15
+
16
+ def optgroup
15
17
  end
16
18
 
17
19
  def manage
@@ -27,4 +29,10 @@ class PagesController < ApplicationController
27
29
  def expand
28
30
  @pages = Page.nested_set.roots.select('id, title, content, parent_id')
29
31
  end
32
+
33
+ private
34
+
35
+ def load_pages
36
+ @pages = Page.nested_set.select('id, title, content, parent_id').limit(15)
37
+ end
30
38
  end
@@ -0,0 +1,3 @@
1
+ %p= link_to raw('&larr; back'), '/'
2
+
3
+ = select_tag :pages, optgroup(@pages, selected: @pages.last)
@@ -0,0 +1,3 @@
1
+ %p= link_to raw('&larr; back'), '/'
2
+
3
+ = select_tag :pages, optgroup(@pages, selected: @pages.last)
@@ -8,16 +8,19 @@
8
8
  %li= link_to 'pages/index (just tree)', pages_path
9
9
  %li= link_to 'pages/nested_options', nested_options_pages_path
10
10
  %li= link_to 'pages/indented_options', indented_options_pages_path
11
+ %li= link_to 'pages/optgroup', optgroup_pages_path
11
12
  %li= link_to 'pages/manage (sortable tree)', manage_pages_path
12
13
  %li= link_to 'pages/node_manage (sortable tree)', node_manage_pages_path
13
14
  %li= link_to 'pages/expand (expandable tree)', expand_pages_path
14
15
 
16
+
15
17
  %h5 Admin::Pages (model Admin::Pages + namespace :admin)
16
18
 
17
19
  %ul
18
20
  %li= link_to '/admin/pages/index (just tree)', admin_pages_path
19
21
  %li= link_to '/admin/pages/nested_options', nested_options_admin_pages_path
20
22
  %li= link_to '/admin/pages/indented_options', indented_options_admin_pages_path
23
+ %li= link_to '/admin/pages/optgroup', optgroup_admin_pages_path
21
24
  %li= link_to '/admin/pages/manage (sortable tree)', manage_admin_pages_path
22
25
  %li= link_to '/admin/pages/node_manage (sortable tree)', node_manage_admin_pages_path
23
26
 
@@ -1,6 +1,7 @@
1
1
  require File.expand_path('../boot', __FILE__)
2
2
 
3
3
  require 'rails/all'
4
+ require 'awesome_nested_set'
4
5
 
5
6
  if defined?(Bundler)
6
7
  # If you precompile assets before deploying to production, use this line
@@ -1,17 +1,17 @@
1
1
  JquerySortableTreeTest::Application.routes.draw do
2
- get "category/index"
3
-
4
- get "category/manage"
2
+ get 'category/index'
3
+ get 'category/manage'
5
4
 
6
5
  root to: 'welcome#index'
7
6
 
8
7
  resources :pages do
9
8
  collection do
10
- get :nested_options
11
- get :indented_options
12
- get :manage
13
- get :node_manage
14
- get :expand
9
+ get :nested_options
10
+ get :indented_options
11
+ get :optgroup
12
+ get :manage
13
+ get :node_manage
14
+ get :expand
15
15
 
16
16
  post :rebuild
17
17
  post :expand_node
@@ -21,7 +21,7 @@ JquerySortableTreeTest::Application.routes.draw do
21
21
  namespace :admin do
22
22
  resources :pages do
23
23
  collection do
24
- get :nested_options, :indented_options, :manage, :node_manage
24
+ get :nested_options, :indented_options, :optgroup, :manage, :node_manage
25
25
  post :rebuild
26
26
  end
27
27
  end
@@ -42,12 +42,4 @@ JquerySortableTreeTest::Application.routes.draw do
42
42
  end
43
43
  end
44
44
  end
45
-
46
- # resources :comments do
47
- # collection do
48
- # post :rebuild
49
- # get :manage
50
- # get :comments
51
- # end
52
- # end
53
45
  end
Binary file