wizard_controller 0.1.5 → 0.1.6

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 (3) hide show
  1. data/README.rdoc +80 -2
  2. data/lib/wizard_controller.rb +17 -6
  3. metadata +2 -2
data/README.rdoc CHANGED
@@ -1,3 +1,81 @@
1
- Wizard Controller
1
+ = Wizard Controller
2
2
 
3
- Make your controller inherit from this class.
3
+ Wizard controller provides a base class (Inheriting from ActionController::Base)
4
+ that provides a DSL for quickly making Wizards.
5
+
6
+ In order for this to work, you need to have this standard route present:
7
+
8
+ map.connect ':controller/:action/:id'
9
+
10
+ VERY IMPORTANT!!! DONT OVERRIDE INDEX!
11
+ Doing so will break all functionality. WizardController works by defining an
12
+ "index" method that does all the work. To start a wizard, go to the "index" method.
13
+
14
+ === Example Controller
15
+
16
+ class ExampleController < Codeprimate::Wizard::Base
17
+ # Define the method names of the wixard steps
18
+ define_steps :page_one, :page_two, :page_three
19
+
20
+ # Specify where the Wizard should redirect upon completion.
21
+ set_finish_path "http://www.example.com/go_here_when_done.html"
22
+
23
+
24
+ # Ensure "index" is not defined!
25
+ # def index
26
+ # end
27
+
28
+ def start
29
+ # Create a "safe" index method for this controller, and handle it appropriately
30
+ end
31
+
32
+ def foobar
33
+ # You can define whatever actions you want. WizardController doesnt get in the way.
34
+ end
35
+
36
+ def page_one
37
+ # This is a regular action method. Create indiviual views for action methods.
38
+ end
39
+
40
+ def process_page_one
41
+ # Place logic to handle any output from page one here.
42
+ # No view will be shown for this
43
+ #
44
+ # Return true if your logic wants you to go to the next step
45
+ # Return false if you want to return to the page_one view
46
+ return true
47
+ end
48
+
49
+ def page_two
50
+ # Let's say this action/view is merely informative.
51
+ # We will not supply a process method, and the user will always be able
52
+ # to go to the next step
53
+ end
54
+
55
+ def page_three
56
+ # Just another step method here
57
+ end
58
+
59
+ def process_page_three
60
+ # Since this is the last step, if this process method returns true
61
+ # the user will be redirected to the URL specified in the
62
+ # "set_finish_path" declaration at the beginning of the Controller definition
63
+ end
64
+ end
65
+
66
+ === View Helper Methods
67
+
68
+ * <tt>step_number()</tt>: Current step index.
69
+ * <tt>total_steps()</tt>: Total Number of steps in the wizard.
70
+ * <tt>step_completed()</tt>: Returns boolean, whether the step has been completed.
71
+ * <tt>wizard_path()</tt>: Wizard index path. <b>THIS SHOULD BE THE ACTION PATH OF ALL FORMS/VIEWS WITH A "process" action.</b>
72
+ * <tt>next_step_path()</tt>: URL to the next step.
73
+ * <tt>previous_step_path()</tt>: URL to the previous step.
74
+ * <tt>reset_wizard_path()</tt>: URL to reset the Wizard.
75
+ * <tt>abort_wizard_path()</tt>: URL to abort the Wizard.
76
+
77
+
78
+
79
+
80
+
81
+
@@ -1,5 +1,5 @@
1
1
  module Codeprimate
2
- VERSION = "0.1.5"
2
+ VERSION = "0.1.6"
3
3
 
4
4
  module Wizard
5
5
 
@@ -13,18 +13,26 @@ module Codeprimate
13
13
  @wizard_default_error = 'There was a problem processing the last step.'
14
14
  attr_accessor :wizard_steps, :finish_path, :abort_path, :wizard_default_error
15
15
 
16
+ # Define steps of the wizard.
17
+ #
18
+ # Should be an array of symbols.
16
19
  def define_steps(*args)
17
20
  self.wizard_steps = args
18
21
  end
19
22
 
23
+ # Set the URL that a user is redirected to after finishing the Wizard.
24
+ #
25
+ # Should be a string
20
26
  def set_finish_path(p)
21
27
  self.finish_path = p
22
28
  end
23
29
 
30
+ # Set the URL that a user is redirected to after aborting the Wizard.
24
31
  def set_abort_path(p)
25
32
  self.abort_path = p
26
33
  end
27
34
 
35
+ # Set the flash message a user sees when a process_action method returns false
28
36
  def set_default_error(e)
29
37
  self.wizard_default_error = e
30
38
  end
@@ -32,10 +40,7 @@ module Codeprimate
32
40
 
33
41
  ### PUBLIC ACTIONS
34
42
 
35
- def set_abort_path(p)
36
- self.abort_path = p
37
- end
38
-
43
+ # Internal.
39
44
  def index
40
45
  if finished
41
46
  handle_finished_wizard
@@ -43,7 +48,8 @@ module Codeprimate
43
48
  handle_unfinished_wizard
44
49
  end
45
50
  end
46
-
51
+
52
+ # Internal.
47
53
  def next_step
48
54
  if step_completed
49
55
  incr_step
@@ -54,16 +60,21 @@ module Codeprimate
54
60
  redirect_to :action => :index
55
61
  end
56
62
 
63
+ # Internal.
57
64
  def previous_step
58
65
  decr_step
59
66
  redirect_to :action => :index
60
67
  end
61
68
 
69
+ # Public action to reset the wizard
62
70
  def reset
63
71
  reset_wizard
64
72
  redirect_to :action => :index
65
73
  end
66
74
 
75
+ # Assign finish path.
76
+ #
77
+ # Accepts a string.
67
78
  def finish_path=(p)
68
79
  unless p.blank?
69
80
  session[:finish_path] = p
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wizard_controller
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5
4
+ version: 0.1.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Patrick Morgan
@@ -54,6 +54,6 @@ rubyforge_project: wizard_controller
54
54
  rubygems_version: 1.3.5
55
55
  signing_key:
56
56
  specification_version: 3
57
- summary: Wizard Controller is an inheritable class to ease the creation of Wizards
57
+ summary: Wizard controller provides a base class (Inheriting from ActionController::Base) that provides a DSL for quickly making Wizards.
58
58
  test_files: []
59
59