express_admin 1.7.21 → 1.7.22

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 819ad66e5886f8d82cd60f27e1f97f8055f7de18
4
- data.tar.gz: 0c7debd9cac98fd177979a42c1db055a70410589
3
+ metadata.gz: cce00b8f840033a5025e39117a2bf09edf6e45a7
4
+ data.tar.gz: 48a72003e0762ed38cc9569be3d4554723439dfe
5
5
  SHA512:
6
- metadata.gz: ca7796446c91a43dc161a06455489f10c5dc39188d2a3935f8db70b214c8a7631cf320e950c7c516e17dba6b276905ae12e4813fa25610910dbb8432b74eb37c
7
- data.tar.gz: 6e8cedddcd5fa99c8026645f47796dd595543d869af8f0deb5415c57433a987a6f4a43cd63642fb20495499fbf5380a4a65dfa06b8903e9f6b6da95ea35e79be
6
+ metadata.gz: 9856a9fc7ba75f1411f3b5550d8d4563190ed7351b4ac93303140207e4046ec60b02337bc210cf24e9e8d975a6cdb74a9e416bacb3622ba684fbbf3fc608f2fe
7
+ data.tar.gz: f9a78b32974a2a635d4ed771be1da187213f8b59cb1a07cae829eb0725b3ada223717ba0a270e961fab60620dd09d6f2796a58e0148d09a311765d2b2a67d1ab
@@ -4,7 +4,6 @@ module ExpressAdmin
4
4
  class CommandButton < ExpressTemplates::Components::Configurable
5
5
  include ExpressTemplates::Components::Capabilities::Resourceful
6
6
 
7
-
8
7
  has_argument :id, "The command name. Invoked as an action on the resource.", as: :command, type: :symbol
9
8
  has_option :disabled, "Disables the button", type: :boolean
10
9
  has_option :confirm, "Prompt with the question specified."
@@ -24,7 +23,9 @@ module ExpressAdmin
24
23
  end
25
24
 
26
25
  def button_to_options
27
- {disabled: config[:disabled], confirm: config[:confirm]}
26
+ options = {}
27
+ options = { data: { confirm: config[:confirm] } } if config[:confirm]
28
+ options.merge({ disabled: config[:disabled] })
28
29
  end
29
30
 
30
31
  def action
@@ -13,7 +13,7 @@ module ExpressAdmin
13
13
  contains -> {
14
14
  commands.each do |command|
15
15
  li {
16
- command_button(command, disabled: !available?(command))
16
+ command_button(command[:name], command_button_options(command))
17
17
  }
18
18
  end
19
19
  }
@@ -23,14 +23,22 @@ module ExpressAdmin
23
23
  end
24
24
 
25
25
  def available?(command)
26
- resource.available_commands.include?(command)
26
+ resource.available_commands.include?(command[:name])
27
27
  end
28
28
 
29
29
  def commands
30
30
  resource.commands
31
31
  end
32
32
 
33
+ private
34
+
35
+ def command_button_options(command)
36
+ options = {}
37
+ options = { confirm: command[:confirm] } if command[:confirm]
38
+ options.merge({ disabled: !available?(command) })
39
+ end
40
+
33
41
  end
34
42
  end
35
43
  end
36
- end
44
+ end
@@ -37,7 +37,7 @@ module ExpressAdmin
37
37
  resource_class.commands.each do |action|
38
38
  # post :foo, to: "module/controller#foo"
39
39
  mapper.member do
40
- mapper.post action.debang, to: "#{controller_name}##{action.debang}"
40
+ mapper.post action[:name].debang, to: "#{controller_name}##{action[:name].debang}"
41
41
  end
42
42
  end
43
43
  end
@@ -62,4 +62,4 @@ module ActionDispatch::Routing::Mapper::Resources
62
62
  alias :resources_without_commandable :resources
63
63
  alias :resources :resources_with_commandable
64
64
 
65
- end
65
+ end
@@ -13,12 +13,15 @@ module ExpressAdmin
13
13
  module ClassMethods
14
14
 
15
15
  def exposes_command(command)
16
+ command = { name: command } if command.is_a?(Symbol)
17
+
16
18
  exposes_commands command
17
19
  end
18
20
 
19
21
  def exposes_commands(*commands)
20
22
  self.commands += commands
21
23
  end
24
+
22
25
  end
23
26
 
24
27
  module InstanceMethods
@@ -29,9 +32,9 @@ module ExpressAdmin
29
32
 
30
33
  def available_commands
31
34
  if respond_to?(:aasm)
32
- commands & aasm_event_triggers
35
+ command_names & aasm_event_triggers
33
36
  else
34
- commands - unavailable_commands
37
+ command_names - unavailable_commands
35
38
  end
36
39
  end
37
40
 
@@ -39,6 +42,11 @@ module ExpressAdmin
39
42
  def aasm_event_triggers
40
43
  aasm.events.map(&:name).map(&:to_s).map {|s| "#{s}!"}.map(&:to_sym)
41
44
  end
45
+
46
+ private
47
+ def command_names
48
+ commands.map { |command| command[:name] }
49
+ end
42
50
  end
43
51
  end
44
52
  end
@@ -49,4 +57,4 @@ class Symbol
49
57
  def debang
50
58
  to_s.gsub(/\!\Z/, '').to_sym
51
59
  end
52
- end
60
+ end
@@ -32,7 +32,7 @@ module ExpressAdmin
32
32
 
33
33
  if self.resource_class.respond_to?(:commands)
34
34
  self.resource_class.commands.each do |command|
35
- define_command_method(command.debang, command)
35
+ define_command_method(command[:name].debang, command[:name])
36
36
  end
37
37
  end
38
38
  end
@@ -1,3 +1,3 @@
1
1
  module ExpressAdmin
2
- VERSION = "1.7.21"
2
+ VERSION = "1.7.22"
3
3
  end
@@ -1,3 +1,8 @@
1
1
  class Part < ActiveRecord::Base
2
2
  belongs_to :widget
3
+
4
+ exposes_command({ name: :trash, confirm: "Are you sure?" })
5
+
6
+ def trash
7
+ end
3
8
  end
@@ -13,6 +13,9 @@ module Components
13
13
  def twiddle_widget_path(id)
14
14
  "/widgets/#{id}/twiddle"
15
15
  end
16
+ def trash_part_path(id)
17
+ "/parts/#{id}/trash"
18
+ end
16
19
  end
17
20
  end
18
21
 
@@ -25,19 +28,33 @@ module Components
25
28
  test "command button creates a form with a submit button having the correct name" do
26
29
  assert_match /form.*action="\/widgets\/\d+\/twiddle"/, command_button(:twiddle, resource_name: :widget)
27
30
  assert_match /input type="submit" value="Twiddle"/, command_button(:twiddle, resource_name: :widget)
31
+
32
+ end
33
+
34
+ test "command button accepts a confirm parameter to display a prompt" do
35
+ assert_match /input data-confirm="Are you sure\?" type="submit" value="Twiddle"/, command_button(:twiddle, resource_name: :widget, confirm: "Are you sure?")
28
36
  end
29
37
 
30
- def command_button_list(*args)
38
+ def command_button_list_widget
31
39
  arbre(widget: widgets(:one)) {
32
- command_button_list(*args)
40
+ command_button_list(:widget)
33
41
  }
34
42
  end
35
43
 
36
44
  test "command_button_list creates a list of command buttons" do
37
- assert_match /ul class="command-button-list"/, command_button_list(:widget)
38
- assert_match /li.*<form.*\<\/li>/, command_button_list(:widget).split("\n").join
45
+ assert_match /ul class="command-button-list"/, command_button_list_widget
46
+ assert_match /li.*<form.*\<\/li>/, command_button_list_widget.split("\n").join
39
47
  end
40
48
 
49
+ def command_button_list_parts
50
+ arbre(part: parts(:one)) {
51
+ command_button_list(:part)
52
+ }
53
+ end
54
+
55
+ test "command_button_list accepts confirm parameters" do
56
+ assert_match /input data-confirm="Are you sure\?" type="submit" value="Trash"/, command_button_list_parts
57
+ end
41
58
  end
42
59
 
43
60
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: express_admin
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.7.21
4
+ version: 1.7.22
5
5
  platform: ruby
6
6
  authors:
7
7
  - Steven Talcott Smith
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-12-08 00:00:00.000000000 Z
11
+ date: 2015-12-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: express_templates