source: trunk/src/templates/scaffolding/show.gsp @ 70

Last change on this file since 70 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: 4.4 KB
Line 
1<% import grails.persistence.Event %>
2<%=packageName%>
3<html>
4    <head>
5        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
6        <meta name="layout" content="main" />
7        <g:set var="entityName" value="\${message(code: '${domainClass.propertyName}.label', default: '${className}')}" />
8        <title><g:message code="default.show.label" args="[entityName]" /></title>
9    </head>
10    <body>
11        <div class="nav">
12            <span class="menuButton"><a class="home" href="\${createLink(uri: '/')}"><g:message code="default.home.label"/></a></span>
13            <span class="menuButton"><g:link class="list" action="list"><g:message code="default.list.label" args="[entityName]" /></g:link></span>
14            <span class="menuButton"><g:link class="create" action="create"><g:message code="default.new.label" args="[entityName]" /></g:link></span>
15        </div>
16        <div class="body">
17            <h1><g:message code="default.show.label" args="[entityName]" /></h1>
18            <g:if test="\${flash.message}">
19            <div class="message">\${flash.message}</div>
20            </g:if>
21            <div class="dialog">
22                <table>
23                    <tbody>
24                    <%  excludedProps = Event.allEvents.toList() << 'version'
25                        allowedNames = domainClass.persistentProperties*.name << 'id' << 'dateCreated' << 'lastUpdated'
26                        props = domainClass.properties.findAll { allowedNames.contains(it.name) && !excludedProps.contains(it.name) }
27                        Collections.sort(props, comparator.constructors[0].newInstance([domainClass] as Object[]))
28                        props.each { p -> %>
29                        <tr class="prop">
30                            <td valign="top" class="name"><g:message code="${domainClass.propertyName}.${p.name}.label" default="${p.naturalName}" /></td>
31                            <%  if (p.isEnum()) { %>
32                            <td valign="top" class="value">\${${propertyName}?.${p.name}?.encodeAsHTML()}</td>
33                            <%  } else if (p.oneToMany || p.manyToMany) { %>
34                            <td valign="top" style="text-align: left;" class="value">
35                                <ul>
36                                <g:each in="\${${propertyName}.${p.name}}" var="${p.name[0]}">
37                                    <li><g:link controller="${p.referencedDomainClass?.propertyName}" action="show" id="\${${p.name[0]}.id}">\${${p.name[0]}?.encodeAsHTML()}</g:link></li>
38                                </g:each>
39                                </ul>
40                            </td>
41                            <%  } else if (p.manyToOne || p.oneToOne) { %>
42                            <td valign="top" class="value"><g:link controller="${p.referencedDomainClass?.propertyName}" action="show" id="\${${propertyName}?.${p.name}?.id}">\${${propertyName}?.${p.name}?.encodeAsHTML()}</g:link></td>
43                            <%  } else if (p.type == Boolean.class || p.type == boolean.class) { %>
44                            <td valign="top" class="value"><g:formatBoolean boolean="\${${propertyName}?.${p.name}}" /></td>
45                            <%  } else if (p.type == Date.class || p.type == java.sql.Date.class || p.type == java.sql.Time.class || p.type == Calendar.class) { %>
46                            <td valign="top" class="value"><g:formatDate date="\${${propertyName}?.${p.name}}" /></td>
47                            <%  } else if(!p.type.isArray()) { %>
48                            <td valign="top" class="value">\${fieldValue(bean: ${propertyName}, field: "${p.name}")}</td>
49                            <%  } %>
50                        </tr>
51                    <%  } %>
52                    </tbody>
53                </table>
54            </div>
55            <div class="buttons">
56                <g:form>
57                    <g:hiddenField name="id" value="\${${propertyName}?.id}" />
58                    <span class="button"><g:actionSubmit class="edit" action="edit" value="\${message(code: 'default.button.edit.label', default: 'Edit')}" /></span>
59                    <span class="button"><g:actionSubmit class="delete" action="delete" value="\${message(code: 'default.button.delete.label', default: 'Delete')}" onclick="return confirm('\${message(code: 'default.button.delete.confirm.message', default: 'Are you sure?')}');" /></span>
60                </g:form>
61            </div>
62        </div>
63    </body>
64</html>
Note: See TracBrowser for help on using the repository browser.