Ignore:
Timestamp:
Jan 20, 2010, 5:01:26 PM (10 years ago)
Author:
duh
Message:
  • 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)
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/grails-app/controllers/dbnp/studycapturing/WizardController.groovy

    r88 r101  
    11package dbnp.studycapturing
     2
    23import dbnp.studycapturing.*
    34import grails.converters.*
     
    910 * through the study capturing wizard.
    1011 *
    11  * @author  Jeroen Wesbeek
    12  * @since   20100107
     12 * @author Jeroen Wesbeek
     13 * @since 20100107
    1314 * @package studycapturing
    1415 *
     
    1920 */
    2021class WizardController {
    21     /**
    22     * index method, redirect to the webflow
    23     * @void
    24     */
    25     def index = {
    26       /**
    27       * Do you believe it in your head?
    28       * I can go with the flow
    29       * Don't say it doesn't matter (with the flow) matter anymore
    30       * I can go with the flow (I can go)
    31       * Do you believe it in your head?
    32       */
    33       redirect(action:'pages')
    34     }
     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        }
    3536
    36     /**
    37      * WebFlow definition
    38      * @see http://grails.org/WebFlow
    39      * @void
    40      */
    41     def pagesFlow = {
    42       // start the flow
    43       onStart {
    44         println "wizard started"
    45        
    46         // define flow variables
    47         flow.page = 0
    48         flow.pages = [
    49                 [title:'Een'],
    50                 [title:'Twoooo'],
    51                 [title:'Trois']
    52         ]
    53        
    54       }
    55       onEnd {
    56             println "wizard ended"
    57           }
     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"
    5846
    59           // render the main wizard page
    60           mainPage {
    61             onRender {
    62                   println "render main page"
    63           flow.page = 1
    64             }
    65             render(view:"/wizard/index")
    66         on("next") {
    67           println "next page!"
    68         }.to "pageTwo"
    69       }
     47                        // define flow variables
     48                        flow.page = 0
     49                        flow.pages = [
     50                                [title: 'Een'],
     51                                [title: 'Twoooo'],
     52                                [title: 'Trois']
     53                        ]
    7054
    71       pageOne {
    72             onRender {
    73                   println "render page one"
    74           flow.page = 1
    75             }
    76             render(view:"_one")
    77         on("next") {
    78           println "next page!"
    79         }.to "pageTwo"
    80       }
     55                }
    8156
    82           // render page two
    83           pageTwo {
    84             onRender {
    85                   println "render page two"
    86           flow.page = 2
    87             }
    88         render(view:"_two")
    89         on("next") {
    90           println "next page!"
    91         }.to "pageThree"
    92         on("previous") {
    93           println "previous page!"
    94         }.to "pageOne"
    95           }
     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                }
    9665
    97           // render page three
    98           pageThree {
    99             onRender {
    100                   println "render page three"
    101           flow.page = 3
    102             }
    103         render(view:"_three")
    104         on("previous") {
    105           println "previous page!"
    106         }.to "pageTwo"
    107           }
    108     }
     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        }
    109116}
Note: See TracChangeset for help on using the changeset viewer.