source: trunk/src/templates/scaffolding/create.gsp

Last change on this file was 70, checked in by robert@…, 8 years ago
  • Installed templates (in order to extend session lifetime to 2 hours)
  • Implemented background worker to do work outside the HTTP request
File size: 3.4 KB
Line 
1<% import grails.persistence.Event %>
2<% import org.codehaus.groovy.grails.plugins.PluginManagerHolder %>
3<%=packageName%>
4<html>
5    <head>
6        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
7        <meta name="layout" content="main" />
8        <g:set var="entityName" value="\${message(code: '${domainClass.propertyName}.label', default: '${className}')}" />
9        <title><g:message code="default.create.label" args="[entityName]" /></title>
10    </head>
11    <body>
12        <div class="nav">
13            <span class="menuButton"><a class="home" href="\${createLink(uri: '/')}"><g:message code="default.home.label"/></a></span>
14            <span class="menuButton"><g:link class="list" action="list"><g:message code="default.list.label" args="[entityName]" /></g:link></span>
15        </div>
16        <div class="body">
17            <h1><g:message code="default.create.label" args="[entityName]" /></h1>
18            <g:if test="\${flash.message}">
19            <div class="message">\${flash.message}</div>
20            </g:if>
21            <g:hasErrors bean="\${${propertyName}}">
22            <div class="errors">
23                <g:renderErrors bean="\${${propertyName}}" as="list" />
24            </div>
25            </g:hasErrors>
26            <g:form action="save" <%= multiPart ? ' enctype="multipart/form-data"' : '' %>>
27                <div class="dialog">
28                    <table>
29                        <tbody>
30                        <%  excludedProps = Event.allEvents.toList() << 'version' << 'id' << 'dateCreated' << 'lastUpdated'
31                            persistentPropNames = domainClass.persistentProperties*.name
32                            props = domainClass.properties.findAll { persistentPropNames.contains(it.name) && !excludedProps.contains(it.name) }
33                            Collections.sort(props, comparator.constructors[0].newInstance([domainClass] as Object[]))
34                            display = true
35                            boolean hasHibernate = PluginManagerHolder.pluginManager.hasGrailsPlugin('hibernate')
36                            props.each { p ->
37                                if (!Collection.class.isAssignableFrom(p.type)) {
38                                    if (hasHibernate) {
39                                        cp = domainClass.constrainedProperties[p.name]
40                                        display = (cp ? cp.display : true)
41                                    }
42                                    if (display) { %>
43                            <tr class="prop">
44                                <td valign="top" class="name">
45                                    <label for="${p.name}"><g:message code="${domainClass.propertyName}.${p.name}.label" default="${p.naturalName}" /></label>
46                                </td>
47                                <td valign="top" class="value \${hasErrors(bean: ${propertyName}, field: '${p.name}', 'errors')}">
48                                    ${renderEditor(p)}
49                                </td>
50                            </tr>
51                        <%  }   }   } %>
52                        </tbody>
53                    </table>
54                </div>
55                <div class="buttons">
56                    <span class="button"><g:submitButton name="create" class="save" value="\${message(code: 'default.button.create.label', default: 'Create')}" /></span>
57                </div>
58            </g:form>
59        </div>
60    </body>
61</html>
Note: See TracBrowser for help on using the repository browser.