Changeset 1846


Ignore:
Timestamp:
May 13, 2011, 6:42:42 PM (6 years ago)
Author:
work@…
Message:
  • working version of the setup wizard, see #185
Location:
trunk
Files:
3 added
7 edited
2 moved

Legend:

Unmodified
Added
Removed
  • trunk/grails-app/controllers/generic/installation/SetupController.groovy

    r1653 r1846  
    44import dbnp.authentication.SecUser
    55import org.codehaus.groovy.grails.commons.ConfigurationHolder
     6import groovy.sql.Sql
    67
    78/**
     
    5657                        // get configuration
    5758                        def config = ConfigurationHolder.config
    58                         println config.dump()
    59                         println config.dataSource.dump()
    6059
    6160                        // define variables in the flow scope which is availabe
     
    6665                        // wizard tabs. Also see common/_tabs.gsp for more information
    6766                        flow.page = 0
    68                         //flow.config = ConfigurationHolder.config
    6967                        flow.pages = [
    7068                                [title: 'Configuration Location'],
    7169                                [title: 'Database'],
    72                                 [title: 'Page Three'],
    73                                 [title: 'Page Four'],
     70                                [title: 'Email / URL'],
     71                                [title: 'Summary'],
     72                                [title: 'Apache Configuration'],
    7473                                [title: 'Done']
    7574                        ]
     
    108107                        onRender {
    109108                                // Grom a development message
    110                                 if (pluginManager.getGrailsPlugin('grom')) ".rendering the partial: pages/_database.gsp".grom()
     109                                if (pluginManager.getGrailsPlugin('grom')) ".rendering the partial: pages/_configuration.gsp".grom()
    111110
    112111                                flow.page = 1
    113112
    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                                 ]
     113                                // try to load config
     114                                loadPropertiesFile(flow)
    131115
    132116                                success()
    133117                        }
    134118                        on("next") {
    135                                 // put your bussiness logic (if applicable) in here
    136                         }.to "pageTwo"
     119                                if (flow.configInfo.pathSummary && flow.configInfo.fileSummary) { success() } else { error() }
     120                        }.to "database"
    137121                        on("toPageTwo") {
    138                                 // put your bussiness logic (if applicable) in here
    139                         }.to "pageTwo"
     122                                if (flow.configInfo.pathSummary && flow.configInfo.fileSummary) { success() } else { error() }
     123                        }.to "database"
    140124                        on("toPageThree") {
    141                                 // put your bussiness logic (if applicable) in here
    142                         }.to "pageThree"
     125                                if (flow.configInfo.pathSummary && flow.configInfo.fileSummary) { success() } else { error() }
     126                        }.to "email"
    143127                        on("toPageFour") {
    144                                 // put your bussiness logic (if applicable) in here
    145                         }.to "pageFour"
     128                                if (flow.configInfo.pathSummary && flow.configInfo.fileSummary) { success() } else { error() }
     129                        }.to "summary"
    146130                        on("toPageFive") {
    147                                 // put your bussiness logic (if applicable) in here
    148                                 flow.page = 5
     131                                if (flow.configInfo.pathSummary && flow.configInfo.fileSummary) { success() } else { error() }
     132                        }.to "apache"
     133                        on("toPageSix") {
     134                                if (flow.configInfo.pathSummary && flow.configInfo.fileSummary) {
     135                                        flow.page = 6
     136                                        success()
     137                                } else {
     138                                        error()
     139                                }
    149140                        }.to "save"
    150141                        on("toConfigurationPath").to "configurationPath"
     
    152143                }
    153144
    154                 // second wizard page
     145                // create the configuration path
     146                configurationPath {
     147                        action {
     148                                // does the path exist?
     149                                if (!flow.configInfo.pathExists) {
     150                                        // no, attempt to create it
     151                                        if (flow.configInfo.path.mkdirs()) {
     152                                                // Grom a development message
     153                                                if (pluginManager.getGrailsPlugin('grom')) ".created ${flow.configInfo.path}".grom()
     154
     155                                                // success!
     156                                                success()
     157                                        } else {
     158                                                error()
     159                                        }
     160                                } else {
     161                                        error()
     162                                }
     163                        }
     164                        on("success").to "configuration"
     165                        on("error").to "configurationPathError"
     166                }
     167
     168                // show manual procedure for creating configuration path
     169                configurationPathError {
     170                        render(view: "_configuration_path_error")
     171                        onRender {
     172                                // Grom a development message
     173                                if (pluginManager.getGrailsPlugin('grom')) ".rendering the partial: pages/_configuration_path_error.gsp".grom()
     174
     175                                flow.page = 1
     176                        }
     177                        on("next").to "configuration"
     178                }
     179
     180                // create the configuration file
     181                configurationFile {
     182                        action {
     183                                // does the file exist?
     184                                if (!flow.configInfo.fileExists) {
     185                                        // no, attempt to create it
     186                                        try {
     187                                                flow.configInfo.file << "# ${meta(name: 'app.name')} ${grails.util.GrailsUtil.environment} configuration\n"
     188                                                flow.configInfo.file << "#\n"
     189                                                flow.configInfo.file << "# \$Author\$\n"
     190                                                flow.configInfo.file << "# \$Date\$\n"
     191                                                flow.configInfo.file << "# \$Rev\$\n"
     192
     193                                                // grom debug message
     194                                                if (pluginManager.getGrailsPlugin('grom')) ".created ${flow.configInfo.file}".grom()
     195
     196                                                // success!
     197                                                success()
     198                                        } catch (Exception e) {
     199                                                error()
     200                                        }
     201                                } else {
     202                                        error()
     203                                }
     204                        }
     205                        on("success").to "configuration"
     206                        on("error").to "configurationFileError"
     207                }
     208
     209                // show manual procedure for creating configuration path
     210                configurationFileError {
     211                        render(view: "_configuration_file_error")
     212                        onRender {
     213                                // Grom a development message
     214                                if (pluginManager.getGrailsPlugin('grom')) ".rendering the partial: pages/_configuration_file_error.gsp".grom()
     215
     216                                flow.page = 1
     217                        }
     218                        on("next").to "configuration"
     219                }
     220
     221                // database page
    155222                database {
    156223                        render(view: "_database")
    157224                        onRender {
    158225                                // Grom a development message
    159                                 if (pluginManager.getGrailsPlugin('grom')) ".rendering the partial: pages/_page_two.gsp".grom()
     226                                if (pluginManager.getGrailsPlugin('grom')) ".rendering the partial: pages/_database.gsp".grom()
    160227
    161228                                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"
     229
     230                                success()
     231                        }
     232                        on("next") {
     233                                // store form values
     234                                databasePage(flow, flash, params) ? success() : error()
     235                        }.to "email"
     236                        on("previous") {
     237                                // store form values
     238                                databasePage(flow, flash, params) ? success() : error()
     239                        }.to "configuration"
     240                        on("toPageOne") {
     241                                // store form values
     242                                databasePage(flow, flash, params) ? success() : error()
     243                        }.to "configuration"
     244                        on("toPageThree") {
     245                                // store form values
     246                                databasePage(flow, flash, params) ? success() : error()
     247                        }.to "email"
     248                        on("toPageFour") {
     249                                // store form values
     250                                databasePage(flow, flash, params) ? success() : error()
     251                        }.to "summary"
    169252                        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()
     253                                // store form values
     254                                databasePage(flow, flash, params) ? success() : error()
     255                        }.to "apache"
     256                        on("toPageSix") {
     257                                // store form values
     258                                if (databasePage(flow, flash, params)) {
     259                                        flow.page = 6
     260                                        success()
     261                                } else {
     262                                        error()
     263                                }
     264                        }.to "save"
     265                }
     266
     267                // email configuration page
     268                email {
     269                        render(view: "_email")
     270                        onRender {
     271                                // Grom a development message
     272                                if (pluginManager.getGrailsPlugin('grom')) ".rendering the partial pages/_email.gsp".grom()
    180273
    181274                                flow.page = 3
    182275                                success()
    183276                        }
    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"
     277                        on("next") {
     278                                emailPage(flow, flash, params) ? success() : error()
     279                        }.to "summary"
     280                        on("previous") {
     281                                emailPage(flow, flash, params) ? success() : error()
     282                        }.to "database"
     283                        on("toPageOne") {
     284                                emailPage(flow, flash, params) ? success() : error()
     285                        }.to "configuration"
     286                        on("toPageTwo") {
     287                                emailPage(flow, flash, params) ? success() : error()
     288                        }.to "database"
     289                        on("toPageFour") {
     290                                emailPage(flow, flash, params) ? success() : error()
     291                        }.to "summary"
    189292                        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()
     293                                emailPage(flow, flash, params) ? success() : error()
     294                        }.to "apache"
     295                        on("toPageSix") {
     296                                if (emailPage(flow, flash, params)) {
     297                                        flow.page = 6
     298                                        success()
     299                                } else {
     300                                        error()
     301                                }
     302                        }.to "save"
     303                }
     304
     305                // summary page
     306                summary {
     307                        render(view: "_summary")
     308                        onRender {
     309                                // Grom a development message
     310                                if (pluginManager.getGrailsPlugin('grom')) ".rendering the partial pages/_summary.gsp".grom()
     311
     312                                // write properties file
     313                                writePropertiesFile(flow)
    200314
    201315                                flow.page = 4
     
    204318                        on("next") {
    205319                                // put some logic in here
     320                                flow.page = 6
     321                        }.to "save"
     322                        on("previous").to "pageThree"
     323                        on("toPageOne").to "configuration"
     324                        on("toPageTwo").to "database"
     325                        on("toPageThree").to "email"
     326                        on("toPageFive").to "apache"
     327                        on("toPageSix") {
     328                                flow.page = 6
     329                        }.to "save"
     330                }
     331
     332                // apache page
     333                apache {
     334                        render(view: "_apache")
     335                        onRender {
     336                                // Grom a development message
     337                                if (pluginManager.getGrailsPlugin('grom')) ".rendering the partial pages/_apache.gsp".grom()
     338
    206339                                flow.page = 5
     340
     341                                flash.context= org.codehaus.groovy.grails.web.context.ServletContextHolder.getServletContext().contextPath
     342                                flash.domain = flow.configInfo.properties.getProperty('grails.serverURL').replaceFirst(/http:\/\//,"").split(":|/").first()
     343
     344                                success()
     345                        }
     346                        on("next") {
     347                                // put some logic in here
     348                                flow.page = 6
    207349                        }.to "save"
    208350                        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
     351                        on("toPageOne").to "configuration"
     352                        on("toPageTwo").to "database"
     353                        on("toPageThree").to "email"
     354                        on("toPageFour").to "summary"
     355                        on("toPageSix") {
     356                                flow.page = 6
    214357                        }.to "save"
    215358                }
     
    252395                        on("next").to "save"
    253396                        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"
     397                        on("toPageOne").to "configuration"
     398                        on("toPageTwo").to "database"
     399                        on("toPageThree").to "email"
     400                        on("toPageFour").to "summary"
     401                        on("toPageFive").to "apache"
     402                        on("toPageSix").to "save"
    259403
    260404                }
     
    271415                }
    272416        }
     417
     418        /**
     419         * handle database configuration
     420         *
     421         * @param Map LocalAttributeMap (the flow scope)
     422         * @param Map localAttributeMap (the flash scope)
     423         * @param Map GrailsParameterMap (the flow parameters = form data)
     424         * @returns boolean
     425         */
     426        def databasePage(flow, flash, params) {
     427                // update database properties
     428                params.dataSource.each { name, value ->
     429                        flow.configInfo.properties.setProperty("dataSource.${name}", value)
     430                }
     431
     432                // try to connect to the database
     433                try {
     434                        def sql = Sql.newInstance(
     435                                flow.configInfo.properties.getProperty('dataSource.url'),
     436                                flow.configInfo.properties.getProperty('dataSource.username'),
     437                                flow.configInfo.properties.getProperty('dataSource.password'),
     438                                flow.configInfo.properties.getProperty('dataSource.driverClassName')
     439                        )
     440
     441                        writePropertiesFile(flow)
     442
     443                        flash.connection=true
     444                } catch (Exception e) {
     445                        flash.connection=false
     446                }
     447
     448                return flash.connection
     449        }
     450
     451        /**
     452         * handle email and url configuration
     453         *
     454         * @param Map LocalAttributeMap (the flow scope)
     455         * @param Map localAttributeMap (the flash scope)
     456         * @param Map GrailsParameterMap (the flow parameters = form data)
     457         * @returns boolean
     458         */
     459        def emailPage(flow, flash, params) {
     460                // update properties
     461                flow.configInfo.properties.setProperty('grails.plugins.springsecurity.ui.forgotPassword.emailFrom', params['grails.plugins.springsecurity.ui.forgotPassword.emailFrom'])
     462                flow.configInfo.properties.setProperty('grails.serverURL', params['grails.serverURL'])
     463
     464                writePropertiesFile(flow)
     465
     466                return true
     467        }
     468
     469        /**
     470         * load the configuration properties
     471         *
     472         * @param flow
     473         * @return
     474         */
     475        def loadPropertiesFile(flow) {
     476                // config
     477                def configPath = new File("${System.getProperty("user.home")}/etc/${meta(name: 'app.name')}/")
     478                def configFile = new File("${System.getProperty("user.home")}/etc/${meta(name: 'app.name')}/${grails.util.GrailsUtil.environment}.properties")
     479
     480                // add configuration information to the flow scope
     481                flow.configInfo = [
     482                        path: configPath,
     483                        pathExists: configPath.exists(),
     484                        pathCanRead: configPath.canRead(),
     485                        pathCanWrite: configPath.canWrite(),
     486                        pathSummary: (configPath.exists() && configPath.canRead() && configPath.canWrite()),
     487                        file: configFile,
     488                        fileExists: configFile.exists(),
     489                        fileCanRead: configFile.canRead(),
     490                        fileCanWrite: configFile.canWrite(),
     491                        fileSummary: (configFile.exists() && configFile.canRead() && configFile.canWrite()),
     492                        properties: null
     493                ]
     494
     495                // parse properties
     496                if (flow.configInfo.pathSummary && flow.configInfo.fileSummary) {
     497                        def file = new FileInputStream(flow.configInfo.file.toString())
     498                        def properties = new Properties()
     499                        properties.load(file)
     500
     501                        // and store in flowscope
     502                        flow.configInfo.properties = properties
     503                }
     504        }
     505
     506        /**
     507         * save the configuration properties
     508         *
     509         * @param flow
     510         * @return
     511         */
     512        def writePropertiesFile(flow) {
     513                // write properties
     514                def file = new FileOutputStream(flow.configInfo.file.toString())
     515                flow.configInfo.properties.store(file, " ${meta(name: 'app.name')} ${grails.util.GrailsUtil.environment} configuration\n#\n# \$Author\$\n# \$Date\$\n# \$Rev\$\n")
     516
     517                // and load them back into the flow
     518                loadPropertiesFile(flow)
     519        }
    273520}
  • trunk/grails-app/views/setup/common/_on_page.gsp

    r1648 r1846  
    2424%>
    2525<script type="text/javascript">
    26         function onPage() {
    27                 if (console) {
    28                         console.log('calling onPage() which can be used to attach generic javascript handlers to DOM elements of a rendered page / partial');
    29                 }
    30         }
     26        function onPage() {
     27                if (console) {
     28                        attachHelpTooltips();
     29
     30                        // syntax highlighting
     31                        function path() {
     32                                var args = arguments,result = [];
     33                                for(var i = 0; i < args.length; i++) result.push(args[i].replace('@', 'http://alexgorbatchev.com/pub/sh/current/scripts/'));
     34                                return result
     35                        }
     36
     37                        SyntaxHighlighter.autoloader.apply(null, path(
     38                          'applescript            @shBrushAppleScript.js',
     39                          'bash shell             @shBrushBash.js',
     40                          'css                    @shBrushCss.js',
     41                          'diff patch pas         @shBrushDiff.js',
     42                          'groovy                 @shBrushGroovy.js',
     43                          'java                   @shBrushJava.js',
     44                          'jfx javafx             @shBrushJavaFX.js',
     45                          'js jscript javascript  @shBrushJScript.js',
     46                          'php                    @shBrushPhp.js',
     47                          'text plain             @shBrushPlain.js',
     48                          'py python              @shBrushPython.js',
     49                          'sql                    @shBrushSql.js',
     50                          'xml xhtml xslt html    @shBrushXml.js'
     51                        ));
     52                        SyntaxHighlighter.all();
     53                }
     54        }
    3155</script>
    3256
  • trunk/grails-app/views/setup/index.gsp

    r1651 r1846  
    1515<head>
    1616        <meta name="layout" content="main"/>
    17         <g:javascript library="jquery" plugin="jquery"/>
    1817        <link rel="stylesheet" href="${resource(dir: 'css', file: 'ajaxflow.css')}"/>
    1918        <link rel="stylesheet" href="${resource(dir: 'css', file: 'setupwizard.css')}"/>
     19        <link rel="stylesheet" href="${resource(dir: 'css', file: 'templates.css')}"/>
     20        <link type="text/css" rel="stylesheet" href="http://alexgorbatchev.com/pub/sh/current/styles/shCore.css" />
     21        <link type="text/css" rel="stylesheet" href="http://alexgorbatchev.com/pub/sh/current/styles/shThemeDefault.css" />
     22        <script src="http://alexgorbatchev.com/pub/sh/current/scripts/shCore.js"></script>
     23        <script src="http://alexgorbatchev.com/pub/sh/current/scripts/shAutoloader.js"></script>
     24        <script type="text/javascript" src="${resource(dir: 'js', file: 'tooltips.js', plugin: 'gdt')}"></script>
     25        <script type="text/javascript" src="${resource(dir: 'js', file: 'jquery.qtip-1.0.0-rc3.js', plugin: 'gdt')}"></script>
    2026</head>
    2127<body>
  • trunk/grails-app/views/setup/pages/_configuration_location.gsp

    r1651 r1846  
    44 *
    55 * @author Jeroen Wesbeek
    6  * @since  20110318
     6 * @since  20110513
    77 *
    88 * Revision information:
     
    1515<h1>Configuration file</h1>
    1616
    17 <font color="red"><b><i>NOTE: this wizard is in development!</i></b></font>
     17<g:if test="${configInfo.pathSummary && configInfo.fileSummary}">
     18        <span class="info">
     19                <span class="okay">The configuration file and path are okay!</span>
     20                Click next to continue...
     21        </span>
     22</g:if><g:else>
     23        <span class="info">
     24                <span class="warning">
     25                        You need to fix the configuration
     26                        <g:if test="${!configInfo.pathSummary && !configInfo.fileSummary}">path and file</g:if>
     27                        <g:elseif test="${!configInfo.pathSummary}">path</g:elseif>
     28                        <g:elseif test="${!configInfo.fileSummary}">file</g:elseif>
     29                        in order to continue
     30                </span>
     31                The application is currently using the default ${grails.util.GrailsUtil.environment} configuration. In the following
     32                steps you will configure the application to use a specific database and (if required) insert default templates and
     33                data.
     34        </span>
     35</g:else>
    1836
    19 <g:if test="${configInfo.pathSummary && configInfo.fileSummary}">
    20         OK!
    21 </g:if>
    22 <g:else>
    2337<div class="checklist">
    2438        <ul class="header">
     
    4357        </ul>
    4458</div>
    45 </g:else>
    4659
    4760</af:page>
  • trunk/grails-app/views/setup/pages/_database.gsp

    r1651 r1846  
    1313%>
    1414<af:page>
    15 <h1>Database configuration</h1>
     15        <h1>Database configuration</h1>
    1616
     17        <af:selectElement name="dataSource.driverClassName" description="database type" error="driver" optionKey="name" optionValue="description" from="[[name:'org.postgresql.Driver', description:'PostgreSQL (prefered)'],[name:'org.hsqldb.jdbcDriver', description: 'In memory']]" value="${configInfo?.properties.getProperty('dataSource.driverClassName')}">
     18                Choose the database of choice. Note that while this application in principle supports different database types, it is specifically developer for PostgreSQL. Choosing
     19                a different database may result in unexpected issues therefore choosing PostgreSQL here is advisable.
     20                Also note that the In Memory database exists only at runtime, which means the database is lost when the application is restarted!
     21        </af:selectElement>
     22        <af:textFieldElement name="dataSource.url" description="url" error="url" value="${configInfo?.properties.getProperty('dataSource.url')}" style="width: 300px;">
     23                The URL of your database, example » jdbc:postgresql://localhost:5432/gscf-ci
     24        </af:textFieldElement>
     25        <af:textFieldElement name="dataSource.username" description="username" error="username" value="${configInfo?.properties.getProperty('dataSource.username')}" style="width: 100px;">
     26                The username for this database
     27        </af:textFieldElement>
     28        <af:textFieldElement name="dataSource.password" description="password" error="password" value="${configInfo?.properties.getProperty('dataSource.password')}" style="width: 100px;">
     29                The password for this database
     30        </af:textFieldElement>
     31        <af:selectElement name="dataSource.dbCreate" description="database creation type" error="dbcreate" optionKey="name" optionValue="description" from="[[name:'update', description:'Create/Update the existing database if changes are required (prefered choice)'],[name:'create', description:'Create the database if required, but do not perform updates'],[name:'create-drop', description: 'Drop the exisiting database and create a fresh database']]" value="${configInfo?.properties.getProperty('dataSource.dbCreate')}">
     32                The application is able to automatically create and update your database. Choose what option suites you best.
     33        </af:selectElement>
     34
     35        <g:if test="${connection==false}">
     36        <span class="info">
     37                <span class="error">Could not connect to database</span>
     38                Please make sure the database settings are correct
     39                <g:if test="${configInfo?.properties.getProperty('dataSource.driverClassName') == 'org.postgresql.Driver'}">
     40                or create the database and database user if you did not yet do so.<br/>
     41
     42                First, as root, change to user postgres and start the Postgres console:
     43                <pre class="brush:plain">
     44                        su - postgres
     45                        psql
     46                </pre>
     47
     48                Then run the following commands:
     49                <pre class="brush:plain">
     50                        create database "${configInfo?.properties.getProperty('dataSource.url').split("/").last()}";
     51                        create user ${configInfo?.properties.getProperty('dataSource.username')} with password '${configInfo?.properties.getProperty('dataSource.password')}';
     52                        grant all privileges on database "${configInfo?.properties.getProperty('dataSource.url').split("/").last()}" to ${configInfo?.properties.getProperty('dataSource.username')};
     53                        ALTER DATABASE "${configInfo?.properties.getProperty('dataSource.url').split("/").last()}" OWNER TO ${configInfo?.properties.getProperty('dataSource.username')};
     54                </pre>
     55
     56                When finished, click <i>next</i> to try again.
     57                </g:if>
     58        </span>
     59        </g:if>
    1760
    1861</af:page>
  • trunk/grails-app/views/setup/pages/_email.gsp

    r1841 r1846  
    1313%>
    1414<af:page>
    15 <h1>Page Three</h1>
    16 <p>
    17 Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce est erat, lacinia in porttitor sed, egestas sed nunc. Maecenas mi diam, ornare ac pulvinar a, lacinia sit amet diam. In non nulla vel ligula rhoncus venenatis. Cras mauris nunc, bibendum eu vehicula a, varius non dui. Vestibulum sit amet lacus ac sapien condimentum aliquam. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Nulla ornare ipsum in odio posuere quis fermentum felis convallis. Nullam eleifend posuere sollicitudin. Integer ac augue eget tellus pulvinar molestie. Suspendisse potenti. Mauris at lectus mauris, ornare rutrum quam. Nullam lobortis, sapien eget porttitor euismod, felis est viverra odio, in molestie turpis magna in nibh. Mauris sollicitudin dignissim tincidunt. Ut ornare risus at ante semper rutrum.
    18 </p>
    19 <p>
    20 Suspendisse blandit imperdiet felis at aliquam. Vestibulum non convallis nisl. Sed nec risus urna, nec ultricies elit. Phasellus consectetur quam eget mauris vehicula blandit. Maecenas suscipit magna a felis porta vitae tristique nisi bibendum. Fusce sed sapien justo, at mollis orci. Nullam nisi nunc, fringilla ut pellentesque ultrices, viverra ac lectus. Pellentesque orci quam, tempus aliquet ornare id, pulvinar sed ligula. Etiam fermentum congue sagittis. Praesent dictum faucibus suscipit. Ut cursus convallis mi quis consectetur. Sed vel arcu sit amet neque laoreet blandit et cursus lacus.
    21 </p>
     15        <h1>Email and URL configuration</h1>
     16
     17        <span class="info">
     18                <span class="title">Email configuration</span>
     19                The application uses the default system mailer, which is probably postfix or sendmail, so you only need to
     20                configure what email adress will be used to send out emails to the users.
     21        </span>
     22
     23        <af:textFieldElement name="grails.plugins.springsecurity.ui.forgotPassword.emailFrom" description="from address" error="grails.plugins.springsecurity.ui.forgotPassword.emailFrom" value="${configInfo?.properties.getProperty('grails.plugins.springsecurity.ui.forgotPassword.emailFrom')}" style="width: 300px;">
     24                The from address used for communication to the users.
     25        </af:textFieldElement>
     26
     27        <span class="info">
     28                <span class="title">URL configuration</span>
     29                Define the URL the application will be running on. If you would like to run from Apache (preferable) and not directly from Tomcat
     30                see the Summary tab for an Apache virtual host configuration example.
     31                <li>running directly from tomcat: http://my.url:8080${org.codehaus.groovy.grails.web.context.ServletContextHolder.getServletContext().contextPath}</li>
     32                <li>running from Apache or Tomcat at port 80: http://my.url</li>
     33        </span>
     34
     35        <af:textFieldElement name="grails.serverURL" description="serverl url" error="grails.serverURL" value="${configInfo?.properties.getProperty('grails.serverURL')}" style="width: 300px;">
     36                The server URL this application will be served on.
     37        </af:textFieldElement>
     38
    2239</af:page>
  • trunk/grails-app/views/setup/pages/_final_page.gsp

    r1648 r1846  
    1313%>
    1414<af:page>
    15 <h1>Final Page</h1>
    16 <p>
    17 This concludes the example wizard. You can click <g:link action="index">here</g:link> to restart the wizard.
    18 </p>
     15        <h1>Final Page</h1>
     16
     17        This concludes the configuration wizard. Make sure to restart your tomcat container to load the new configuration.
     18        After restart you can <g:link controller="assayModule" action="list" class="icon icon_user_add">Manage Your Modules</g:link>
     19        (if you have any).
    1920</af:page>
  • trunk/grails-app/views/setup/pages/_summary.gsp

    r1841 r1846  
    44 *
    55 * @author Jeroen Wesbeek
    6  * @since  20110318
     6 * @since  20110513
    77 *
    88 * Revision information:
     
    1313%>
    1414<af:page>
    15 <h1>Page Four</h1>
    16 <p>
    17 Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque vitae porta justo. Vestibulum vulputate porta orci sed feugiat. In convallis euismod neque in consectetur. Sed nibh eros, venenatis vitae porta sed, fringilla id ante. Vivamus aliquam congue semper. Duis feugiat sapien id erat dignissim congue a eget velit. Suspendisse imperdiet odio ut urna ullamcorper elementum. Morbi et elit lectus. Nulla imperdiet, libero quis faucibus volutpat, mi tellus porta sem, sed facilisis erat augue sit amet massa. Pellentesque rutrum leo arcu. Fusce sit amet venenatis lacus. Cras venenatis nibh eget est malesuada pretium. Suspendisse eget lectus dui. Etiam mauris tortor, tempus a pulvinar sit amet, condimentum at justo. Nulla suscipit augue eu augue ultricies accumsan tincidunt elit mollis.
    18 </p>
    19 <p>
    20 Mauris euismod felis in arcu mattis accumsan. Cras luctus feugiat lectus, ut blandit nisi ullamcorper sit amet. In dapibus tristique justo, nec egestas arcu ullamcorper vitae. Phasellus sagittis pharetra lorem non convallis. Curabitur pulvinar tellus non arcu vestibulum in elementum ante varius. Proin est magna, sollicitudin at dictum ut, gravida at sem. Sed in urna massa. Aliquam et urna ac erat malesuada rutrum tincidunt vitae purus. Ut mollis nisl vel enim condimentum dapibus. Etiam tristique augue ullamcorper sem placerat vitae congue nibh semper. Maecenas in adipiscing purus. Sed sem eros, convallis vel mollis pretium, consectetur sed ligula. Aliquam erat volutpat. Donec aliquet purus eget nunc dapibus in semper magna malesuada. Nunc ornare egestas elementum. Pellentesque vulputate commodo est, vel sagittis libero molestie non. In hac habitasse platea dictumst. Ut pharetra quam quis nunc eleifend quis sodales justo molestie. Nunc eu bibendum lectus.
    21 </p>
     15        <h1>Summary</h1>
     16
     17        <span class="info">
     18                <span class="title">New application configuration</span>
     19                Congratulations, you just finished setting up and configuring the application. Below you see the configuration
     20                file (${configInfo.file}) you have just created.
     21        </span>
     22
     23        Configuration file: ${configInfo.file}<br/>
     24
     25
     26
     27        <pre class="brush:plain">${configInfo.file.text}</pre>
     28
    2229</af:page>
  • trunk/web-app/css/templates.css

    r1565 r1846  
    77    font-size: 10px;
    88    margin: 10px 0px 10px 0px;
     9}
     10
     11.info li {
     12        padding-left: 10px;
     13        list-style-position: inside;
    914}
    1015
     
    5762    padding-left: 20px;
    5863    background: url(../plugins/famfamfam-1.0.1/images/icons/eye.png) no-repeat center left;
     64}
     65
     66.info .okay {
     67    color:#006DBA;
     68    font-size:14px;
     69    font-weight:normal;
     70    display: block;
     71    margin-bottom: 5px;
     72    padding-left: 20px;
     73    background: url(../plugins/famfamfam-1.0.1/images/icons/accept.png) no-repeat center left;
    5974}
    6075
Note: See TracChangeset for help on using the changeset viewer.