activeadmin-mongoid-reorder 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore ADDED
@@ -0,0 +1,3 @@
1
+ pkg
2
+ *.swp
3
+ *.swo
data/README.md ADDED
@@ -0,0 +1,47 @@
1
+ ## activeadmin-mongoid-reorder
2
+
3
+ Helper method to add reorder rows functionality to active admin index table view.
4
+
5
+ ## Setup
6
+
7
+ Add gem to Gemfile:
8
+
9
+ ```gem activeadmin-mongoid-reorder```
10
+
11
+ Add ```Monogoid::Reorder``` to the model declaration you want to be reordarable. This will add ```reorder_objects``` class method, ```_position``` field and set default sorting order to ```:_position => :desc``` - so haviest goes first.
12
+
13
+ Example:
14
+ ```
15
+ class Page
16
+ include Mongoid::Document
17
+ include Mongoid::Reorder
18
+
19
+ # Fields
20
+ field :title, :type => String
21
+ field :content, :type => String
22
+ end
23
+ ```
24
+
25
+ To the end of admin registration method of each reordarable model add the following generic helper:
26
+ ```
27
+ collection_action :reorder, :method => :put do
28
+ render :text => resource_class.reorder_objects(params[:ids])
29
+ end
30
+ ```
31
+
32
+ Reorder table type should be specified for ```index``` view, here is an example how this should look like:
33
+
34
+ ```
35
+ index :as => :reorder_table do
36
+ column :title
37
+ default_actions
38
+ end
39
+ ```
40
+
41
+ And finally enable sorting js functionality. jQuery-ui is included by activeadmin by default, so all you need is to include ```activeadmin_reoder_table``` in ```active_admin.js.coffee```:
42
+
43
+ ```#= require activeadmin_reorder_table```
44
+
45
+ ## The End
46
+
47
+ That's it.
data/Rakefile ADDED
@@ -0,0 +1,7 @@
1
+ require 'rubygems/package_task'
2
+
3
+ spec = Gem::Specification.load(Dir['*.gemspec'].first)
4
+ gem = Gem::PackageTask.new(spec)
5
+ gem.define()
6
+
7
+ #gem push pkg/activeadmin-mongoid-reorder-version.gem
@@ -0,0 +1,22 @@
1
+ # encoding: utf-8
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+
4
+ Gem::Specification.new do |gem|
5
+ gem.name = 'activeadmin-mongoid-reorder'
6
+ gem.version = '0.2.0'
7
+ gem.summary = 'Reorder index table rows plugin for activeadmin.'
8
+ gem.description = ''
9
+ gem.license = 'MIT'
10
+
11
+ gem.authors = ['Alex Kravets']
12
+ gem.email = 'santyor@gmail.com'
13
+ gem.homepage = 'https://github.com/alexkravets/activeadmin-mongoid-reorder'
14
+
15
+ gem.files = `git ls-files`.split("\n")
16
+ gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
17
+ gem.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
18
+ gem.require_paths = ["lib"]
19
+
20
+ # Supress the warning about no rubyforge project
21
+ gem.rubyforge_project = 'nowarning'
22
+ end
@@ -0,0 +1,22 @@
1
+ module ActiveAdmin
2
+ module Views
3
+ class IndexAsReorderTable < ActiveAdmin::Views::IndexAsTable
4
+ def build(page_presenter, collection)
5
+ table_options = {
6
+ #:id => active_admin_config.resource_name.plural,
7
+ # for some reason here plural is missing
8
+ :id => active_admin_config.resource_name.pluralize.downcase,
9
+ :sortable => false,
10
+ :class => "index_table index reorder",
11
+ :i18n => active_admin_config.resource_class,
12
+ :paginator => page_presenter[:paginator] != false
13
+ }
14
+
15
+ table_for collection, table_options do |t|
16
+ table_config_block = page_presenter.block || default_table
17
+ instance_exec(t, &table_config_block)
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -1 +1,10 @@
1
- require 'mongoid/reorder'
1
+ require 'mongoid/reorder'
2
+ require 'active_admin/views/index_as_reorder_table'
3
+
4
+ module ActiveAdmin
5
+ module Mongoid
6
+ module Reorder
7
+ require "activeadmin-mongoid-reorder/engine"
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,8 @@
1
+ module ActiveAdmin
2
+ module Mongoid
3
+ module Reorder
4
+ class Engine < ::Rails::Engine
5
+ end
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,32 @@
1
+ $ ->
2
+ window.sortable_options = (url) ->
3
+ options =
4
+ stop: (e, ui) ->
5
+ # Select object ids from the table rows
6
+ # -------------------------------------
7
+ ids = []
8
+ $(this).find('tr').each ->
9
+ id_attr = $(this).attr('id')
10
+ if id_attr
11
+ id = id_attr.split("_").last()
12
+ ids.push(id)
13
+
14
+ params =
15
+ ids: ids
16
+ _method: "put"
17
+ authenticity_token: $('meta[name=csrf-token]').attr('content')
18
+
19
+ $.post url, params, (data) ->
20
+ if data != "ok"
21
+ alert 'Error happended. Please contact devs.'
22
+ return options
23
+
24
+ reorder_table = $(".index_table.reorder")
25
+
26
+ if reorder_table.length > 0
27
+ id = reorder_table.attr('id')
28
+ reorder_method_url = "/admin/#{id}/reorder"
29
+
30
+ reorder_table.find("tbody")
31
+ .sortable(sortable_options(reorder_method_url))
32
+ .disableSelection()
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activeadmin-mongoid-reorder
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -17,8 +17,15 @@ executables: []
17
17
  extensions: []
18
18
  extra_rdoc_files: []
19
19
  files:
20
+ - .gitignore
21
+ - README.md
22
+ - Rakefile
23
+ - activeadmin-mongoid-reorder.gemspec
24
+ - lib/active_admin/views/index_as_reorder_table.rb
20
25
  - lib/activeadmin-mongoid-reorder.rb
26
+ - lib/activeadmin-mongoid-reorder/engine.rb
21
27
  - lib/mongoid/reorder.rb
28
+ - vendor/assets/javascripts/activeadmin_reorder_table.js.coffee
22
29
  homepage: https://github.com/alexkravets/activeadmin-mongoid-reorder
23
30
  licenses:
24
31
  - MIT
@@ -43,5 +50,5 @@ rubyforge_project: nowarning
43
50
  rubygems_version: 1.8.24
44
51
  signing_key:
45
52
  specification_version: 3
46
- summary: Reordarable rows in activeadmin index table view.
53
+ summary: Reorder index table rows plugin for activeadmin.
47
54
  test_files: []