source: trunk/grails-app/controllers/dbnp/studycapturing/WizardController.groovy @ 101

Last change on this file since 101 was 101, checked in by duh, 9 years ago
  • refactored the wizard initial page to dynamically load pageOne, instead of rendering pageOne within the template itself. This was done because otherwise both the mainPage and pageOne had to contain duplicate logic. The ajaxified webflow works better this way.
  • added an <wizard:ajaxFlowRedirect...> tag which renders javascript code executing a jQuery ajax call (it actually wraps around <wizard:button...> tag but lifts the ajax call out of the button and wraps javascript tags around it)
  • improved the help / tooltip workings
  • extended the <wizard:button...> with an afterSuccess argument which executes some javascript after success. This is different from the default submitToRemote 'after' behaviour which is always executed in parallel with the ajax success call (hence, you javascript cannot access ajax result data while the afterSuccess method can)
  • Property svn:keywords set to Rev Author Date
File size: 1.9 KB
Line 
1package dbnp.studycapturing
2
3import dbnp.studycapturing.*
4import grails.converters.*
5
6/**
7 * Wizard Controler
8 *
9 * The wizard controller handles the handeling of pages and data flow
10 * through the study capturing wizard.
11 *
12 * @author Jeroen Wesbeek
13 * @since 20100107
14 * @package studycapturing
15 *
16 * Revision information:
17 * $Rev: 101 $
18 * $Author: duh $
19 * $Date: 2010-01-20 16:01:26 +0000 (wo, 20 jan 2010) $
20 */
21class WizardController {
22        /**
23         * index method, redirect to the webflow
24         * @void
25         */
26        def index = {
27                /**
28                 * Do you believe it in your head?
29                 * I can go with the flow
30                 * Don't say it doesn't matter (with the flow) matter anymore
31                 * I can go with the flow (I can go)
32                 * Do you believe it in your head?
33                 */
34                redirect(action: 'pages')
35        }
36
37        /**
38         * WebFlow definition
39         * @see http://grails.org/WebFlow
40         * @void
41         */
42        def pagesFlow = {
43                // start the flow
44                onStart {
45                        println "wizard started"
46
47                        // define flow variables
48                        flow.page = 0
49                        flow.pages = [
50                                [title: 'Een'],
51                                [title: 'Twoooo'],
52                                [title: 'Trois']
53                        ]
54
55                }
56
57                // render the main wizard page
58                mainPage {
59                        render(view: "/wizard/index")
60                        onRender {
61                                flow.page = 1
62                        }
63                        on("next").to "pageOne"
64                }
65
66                pageOne {
67                        render(view: "_one")
68                        onRender {
69                                println "render page one"
70                                flow.page = 1
71                        }
72                        on("next") {
73                                // create a study instance
74                                /*
75                                println params
76                                def study = new Study(params)
77
78                               
79                                if (study.validate()) {
80                                        println "study validates"
81                                } else {
82                                        println "errorrrs"
83                                        error()
84                                }
85                                */
86                        }.to "pageTwo"
87                }
88
89                // render page two
90                pageTwo {
91                        render(view: "_two")
92                        onRender {
93                                println "render page two"
94                                flow.page = 2
95                        }
96                        on("next") {
97                                println "next page!"
98                        }.to "pageThree"
99                        on("previous") {
100                                println "previous page!"
101                        }.to "pageOne"
102                }
103
104                // render page three
105                pageThree {
106                        render(view: "_three")
107                        onRender {
108                                println "render page three"
109                                flow.page = 3
110                        }
111                        on("previous") {
112                                println "previous page!"
113                        }.to "pageTwo"
114                }
115        }
116}
Note: See TracBrowser for help on using the repository browser.