source: trunk/grails-app/controllers/generic/installation/SetupController.groovy @ 1698

Last change on this file since 1698 was 1653, checked in by work@…, 12 years ago
  • config file stuff into it's page logic
File size: 6.9 KB
Line 
1package generic.installation
2
3import grails.plugins.springsecurity.Secured
4import dbnp.authentication.SecUser
5import org.codehaus.groovy.grails.commons.ConfigurationHolder
6
7/**
8 * ajaxflow Controller
9 *
10 * @author      Jeroen Wesbeek
11 * @since       20110318
12 *
13 * Revision information:
14 * $Rev:  66849 $
15 * $Author:  duh $
16 * $Date:  2010-12-08 15:12:54 +0100 (Wed, 08 Dec 2010) $
17 */
18@Secured(['ROLE_ADMIN'])
19class SetupController {
20        // the pluginManager is used to check if the Grom
21        // plugin is available so we can 'Grom' development
22        // notifications to the unified notifications daemon
23        // (see http://www.grails.org/plugin/grom)
24        def pluginManager
25       
26        /**
27         * index method, redirect to the webflow
28         * @void
29         */
30        def index = {
31                // Grom a development message
32                if (pluginManager.getGrailsPlugin('grom')) "redirecting into the webflow".grom()
33
34                /**
35                 * Do you believe it in your head?
36                 * I can go with the flow
37                 * Don't say it doesn't matter (with the flow) matter anymore
38                 * I can go with the flow (I can go)
39                 * Do you believe it in your head?
40                 */
41                redirect(action: 'pages')
42        }
43
44        /**
45         * WebFlow definition
46         * @void
47         */
48        def pagesFlow = {
49                def authenticationService
50
51                // start the flow
52                onStart {
53                        // Grom a development message
54                        if (pluginManager.getGrailsPlugin('grom')) "entering the WebFlow".grom()
55
56                        // get configuration
57                        def config = ConfigurationHolder.config
58                        println config.dump()
59                        println config.dataSource.dump()
60
61                        // define variables in the flow scope which is availabe
62                        // throughout the complete webflow also have a look at
63                        // the Flow Scopes section on http://www.grails.org/WebFlow
64                        //
65                        // The following flow scope variables are used to generate
66                        // wizard tabs. Also see common/_tabs.gsp for more information
67                        flow.page = 0
68                        //flow.config = ConfigurationHolder.config
69                        flow.pages = [
70                                [title: 'Configuration Location'],
71                                [title: 'Database'],
72                                [title: 'Page Three'],
73                                [title: 'Page Four'],
74                                [title: 'Done']
75                        ]
76                        flow.cancel = true
77                        flow.quickSave = true
78
79                        // define famfamfam icons
80                        flow.icons = [
81                            true        : 'accept',
82                                false   : 'cancel'
83                        ]
84
85                        success()
86                }
87
88                // render the main wizard page which immediately
89                // triggers the 'next' action (hence, the main
90                // page dynamically renders the study template
91                // and makes the flow jump to the study logic)
92                mainPage {
93                        render(view: "/setup/index")
94                        onRender {
95                                // Grom a development message
96                                if (pluginManager.getGrailsPlugin('grom')) "rendering the main Ajaxflow page (index.gsp)".grom()
97
98                                // let the view know we're in page 1
99                                flow.page = 1
100                                success()
101                        }
102                        on("next").to "configuration"
103                }
104
105                // first wizard page
106                configuration {
107                        render(view: "_configuration_location")
108                        onRender {
109                                // Grom a development message
110                                if (pluginManager.getGrailsPlugin('grom')) ".rendering the partial: pages/_database.gsp".grom()
111
112                                flow.page = 1
113
114                                // config
115                                def configPath = new File("/etc/${meta(name: 'app.name')}/")
116                                def configFile = new File("/etc/${meta(name: 'app.name')}/${grails.util.GrailsUtil.environment}.properties")
117
118                                // add configuration information to the flow scope
119                                flow.configInfo = [
120                                        path: configPath,
121                                        pathExists: configPath.exists(),
122                                        pathCanRead: configPath.canRead(),
123                                        pathCanWrite: configPath.canWrite(),
124                                        pathSummary: (configPath.exists() && configPath.canRead() && configPath.canWrite()),
125                                        file: configFile,
126                                        fileExists: configFile.exists(),
127                                        fileCanRead: configFile.canRead(),
128                                        fileCanWrite: configFile.canWrite(),
129                                        fileSummary: (configFile.exists() && configFile.canRead() && configFile.canWrite())
130                                ]
131
132                                success()
133                        }
134                        on("next") {
135                                // put your bussiness logic (if applicable) in here
136                        }.to "pageTwo"
137                        on("toPageTwo") {
138                                // put your bussiness logic (if applicable) in here
139                        }.to "pageTwo"
140                        on("toPageThree") {
141                                // put your bussiness logic (if applicable) in here
142                        }.to "pageThree"
143                        on("toPageFour") {
144                                // put your bussiness logic (if applicable) in here
145                        }.to "pageFour"
146                        on("toPageFive") {
147                                // put your bussiness logic (if applicable) in here
148                                flow.page = 5
149                        }.to "save"
150                        on("toConfigurationPath").to "configurationPath"
151                        on("toConfigurationFile").to "configurationFile"
152                }
153
154                // second wizard page
155                database {
156                        render(view: "_database")
157                        onRender {
158                                // Grom a development message
159                                if (pluginManager.getGrailsPlugin('grom')) ".rendering the partial: pages/_page_two.gsp".grom()
160
161                                flow.page = 2
162                                success()
163                        }
164                        on("next").to "pageThree"
165                        on("previous").to "pageOne"
166                        on("toPageOne").to "pageOne"
167                        on("toPageThree").to "pageThree"
168                        on("toPageFour").to "pageFour"
169                        on("toPageFive") {
170                                flow.page = 5
171                        }.to "save"
172                }
173
174                // second wizard page
175                pageThree {
176                        render(view: "_page_three")
177                        onRender {
178                                // Grom a development message
179                                if (pluginManager.getGrailsPlugin('grom')) ".rendering the partial pages/_page_three.gsp".grom()
180
181                                flow.page = 3
182                                success()
183                        }
184                        on("next").to "pageFour"
185                        on("previous").to "pageTwo"
186                        on("toPageOne").to "pageOne"
187                        on("toPageTwo").to "pageTwo"
188                        on("toPageFour").to "pageFour"
189                        on("toPageFive") {
190                                flow.page = 5
191                        }.to "save"
192                }
193
194                // second wizard page
195                pageFour {
196                        render(view: "_page_four")
197                        onRender {
198                                // Grom a development message
199                                if (pluginManager.getGrailsPlugin('grom')) ".rendering the partial pages/_page_four.gsp".grom()
200
201                                flow.page = 4
202                                success()
203                        }
204                        on("next") {
205                                // put some logic in here
206                                flow.page = 5
207                        }.to "save"
208                        on("previous").to "pageThree"
209                        on("toPageOne").to "pageOne"
210                        on("toPageTwo").to "pageTwo"
211                        on("toPageThree").to "pageThree"
212                        on("toPageFive") {
213                                flow.page = 5
214                        }.to "save"
215                }
216
217                // save action
218                save {
219                        action {
220                                // here you can validate and save the
221                                // instances you have created in the
222                                // ajax flow.
223                                try {
224                                        // Grom a development message
225                                        if (pluginManager.getGrailsPlugin('grom')) ".persisting instances to the database...".grom()
226
227                                        // put your bussiness logic in here
228                                        success()
229                                } catch (Exception e) {
230                                        // put your error handling logic in
231                                        // here
232                                        flow.page = 4
233                                        error()
234                                }
235                        }
236                        on("error").to "error"
237                        on(Exception).to "error"
238                        on("success").to "finalPage"
239                }
240
241                // render errors
242                error {
243                        render(view: "_error")
244                        onRender {
245                                // Grom a development message
246                                if (pluginManager.getGrailsPlugin('grom')) ".rendering the partial pages/_error.gsp".grom()
247
248                                // set page to 4 so that the navigation
249                                // works (it is disabled on the final page)
250                                flow.page = 4
251                        }
252                        on("next").to "save"
253                        on("previous").to "pageFour"
254                        on("toPageOne").to "pageOne"
255                        on("toPageTwo").to "pageTwo"
256                        on("toPageThree").to "pageThree"
257                        on("toPageFour").to "pageFour"
258                        on("toPageFive").to "save"
259
260                }
261
262                // last wizard page
263                finalPage {
264                        render(view: "_final_page")
265                        onRender {
266                                // Grom a development message
267                                if (pluginManager.getGrailsPlugin('grom')) ".rendering the partial pages/_final_page.gsp".grom()
268                               
269                                success()
270                        }
271                }
272        }
273}
Note: See TracBrowser for help on using the repository browser.