wicked-focused 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -114,6 +114,12 @@ class AfterSignupController
114
114
  steps :confirm_password, :confirm_profile, :find_friends
115
115
  end
116
116
 
117
+ wizard_action :show do
118
+ wizard do
119
+ render_wizard
120
+ end
121
+ end
122
+
117
123
  wizard_action :update do
118
124
  wizard do
119
125
  @user = current_user
@@ -149,7 +155,7 @@ In the controller if you find that you want to skip a step, you can do it simply
149
155
 
150
156
  ```ruby
151
157
 
152
- wizard_action :show do
158
+ show_wizard do
153
159
  wizard do
154
160
  @user = current_user
155
161
  case step
@@ -180,11 +186,19 @@ Created the Focused Controller action base class, from which any Wizard Action c
180
186
 
181
187
  `wizard_action name, &block`
182
188
 
183
- Creates a Focused Controller action class inheriting from the base action class of the controller. The block contains the class definition.
189
+ Creates a Focused Controller action class inheriting from the base action class of the controller. The block contains the class definition. The wizard actions are `show` and `update`. To further abstract this, the shorthand macros: `show_wizard &block` and `update_wizard &block` are also available.
190
+
191
+ `wizard &block`
192
+
193
+ Creates a `#run` method as "required" by a Focused Controller action class.
194
+
195
+ The run method generated also:
184
196
 
185
- `wizard`
197
+ * calls `super()` which calls `setup_wizard`
198
+ * auto-handles redirects to first or last step (*)
199
+ * skips step (*)
186
200
 
187
- Creates a `#run` method as "required" by a Focused Controller action class. The run method generated calls super which calls `setup_wizard` and also auto-handles redirects.
201
+ (*) if params indicate this is requested behavior
188
202
 
189
203
  *View/URL Helpers*
190
204
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.0
1
+ 0.2.1
data/lib/wicked/action.rb CHANGED
@@ -24,6 +24,7 @@ module Wicked
24
24
  def wizard &block
25
25
  define_method :run do
26
26
  wizard_redirect and return if super()
27
+ skip_step if skip_step?
27
28
  instance_eval &block
28
29
  end
29
30
  end
@@ -44,7 +44,7 @@ module Wicked::Controller::Concerns::Steps
44
44
  end
45
45
 
46
46
  module ClassMethods
47
- attr_reader :wizard_steps
47
+ attr_reader :wizard_steps, :skip_steps
48
48
 
49
49
  def steps(*args)
50
50
  options = args.last.is_a?(Hash) ? callbacks.pop : {}
@@ -54,6 +54,11 @@ module Wicked::Controller::Concerns::Steps
54
54
  self.steps = steps
55
55
  end
56
56
  end
57
+
58
+ def allow_skip_for(*args)
59
+ @skip_steps = args
60
+ end
61
+ alias :optional_steps :allow_skip_for
57
62
  end
58
63
 
59
64
  def steps=(wizard_steps)
@@ -66,6 +71,13 @@ module Wicked::Controller::Concerns::Steps
66
71
  alias :wizard_steps :steps
67
72
  alias :steps_list :steps
68
73
 
74
+ def skip_step?
75
+ return false unless params[:skip_step]
76
+ skip_steps = self.class.superclass.skip_steps
77
+ return true if skip_steps.blank?
78
+ skip_steps.include? step.to_sym
79
+ end
80
+
69
81
  def previous_step(current_step = nil)
70
82
  return previous_step if current_step == nil
71
83
  index = steps.index(current_step)
data/lib/wicked/wizard.rb CHANGED
@@ -21,6 +21,14 @@ module Wicked
21
21
  def wizard_action action, &block
22
22
  focused_action action, "#{self.name}::Action".constantize, &block
23
23
  end
24
+
25
+ def show_wizard &block
26
+ focused_action :show, "#{self.name}::Action".constantize, &block
27
+ end
28
+
29
+ def update_wizard &block
30
+ focused_action :update, "#{self.name}::Action".constantize, &block
31
+ end
24
32
  end
25
33
  end
26
34
  end
@@ -9,10 +9,15 @@ module BarController
9
9
 
10
10
  wizard_action :show do
11
11
  wizard do
12
- skip_step if params[:skip_step]
12
+ # skip_step if skip_step?
13
13
  render_wizard
14
14
  end
15
15
  end
16
16
 
17
- focused_action :update
17
+ wizard_action :update do
18
+ wizard do
19
+ # update code here!
20
+ render_wizard
21
+ end
22
+ end
18
23
  end
@@ -5,15 +5,23 @@ module FooController
5
5
  include Wicked::Action
6
6
 
7
7
  steps :first, :second, :last_step
8
+
9
+ # alias: allow_skip_for
10
+ optional_steps :first
8
11
  end
9
12
  include Wicked::Wizard
10
13
 
11
14
  wizard_action :show do
12
15
  wizard do
13
- skip_step if params[:skip_step]
16
+ # skip_step if skip_step?
14
17
  render_wizard
15
18
  end
16
19
  end
17
20
 
18
- wizard_action :update
21
+ wizard_action :update do
22
+ wizard do
23
+ # update code here!
24
+ render_wizard
25
+ end
26
+ end
19
27
  end
@@ -10,7 +10,7 @@ module JumpController
10
10
 
11
11
  wizard_action :show do
12
12
  wizard do
13
- skip_step if params[:skip_step]
13
+ # skip_step if skip_step?
14
14
  jump_to :last_step if params[:jump_to]
15
15
  if params[:resource]
16
16
  value = params[:resource][:save] == 'true'
@@ -22,5 +22,10 @@ module JumpController
22
22
  end
23
23
  end
24
24
 
25
- wizard_action :update
25
+ wizard_action :update do
26
+ wizard do
27
+ # update code here!
28
+ render_wizard
29
+ end
30
+ end
26
31
  end
@@ -14,5 +14,10 @@ module StepPositionsController
14
14
  end
15
15
  end
16
16
 
17
- wizard_action :update
17
+ wizard_action :update do
18
+ wizard do
19
+ # update code here!
20
+ render_wizard
21
+ end
22
+ end
18
23
  end
@@ -25,6 +25,12 @@ class InheritNavigationTest < ActiveSupport::IntegrationCase
25
25
  assert has_content?('second')
26
26
  end
27
27
 
28
+ test 'not allowed to skip second' do
29
+ step = :second
30
+ visit(foo_path(step.to_s, :skip_step => 'true'))
31
+ assert has_content?('second')
32
+ end
33
+
28
34
  test 'invalid step' do
29
35
  step = :notastep
30
36
  assert_raise(ActionView::MissingTemplate) do
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "wicked-focused"
8
- s.version = "0.2.0"
8
+ s.version = "0.2.1"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["kristianmandrup", "schneems"]
12
- s.date = "2012-08-06"
12
+ s.date = "2012-08-07"
13
13
  s.description = "Rails engine for producing Focused Controller based wizards"
14
14
  s.email = "kmandrup@gmail.com"
15
15
  s.extra_rdoc_files = [
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wicked-focused
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2012-08-06 00:00:00.000000000 Z
13
+ date: 2012-08-07 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activesupport
@@ -254,7 +254,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
254
254
  version: '0'
255
255
  segments:
256
256
  - 0
257
- hash: 446861709014674562
257
+ hash: 315033251613805856
258
258
  required_rubygems_version: !ruby/object:Gem::Requirement
259
259
  none: false
260
260
  requirements: