From 93a6f3410a3dcfc91ef67d6ffaa67a3092fc6f2c Mon Sep 17 00:00:00 2001 From: qingxin-xu Date: Fri, 5 Sep 2014 14:49:32 +0800 Subject: [PATCH 1/3] Fix the wrong selection style --- src/templates/scaffolding/renderEditor.template | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/templates/scaffolding/renderEditor.template b/src/templates/scaffolding/renderEditor.template index cc52aca..fe95f35 100644 --- a/src/templates/scaffolding/renderEditor.template +++ b/src/templates/scaffolding/renderEditor.template @@ -92,7 +92,7 @@ private renderManyToOne(domainClass,property) { if (property.association) { def sb = new StringBuilder() - sb << '' sb as String @@ -117,14 +116,13 @@ if(cls != null) { def sb = new StringBuilder() - sb << '' sb as String From ba68d94c63c2d62c0074fca88c89a25cdd1984ba Mon Sep 17 00:00:00 2001 From: qingxin-xu Date: Fri, 5 Sep 2014 15:00:24 +0800 Subject: [PATCH 2/3] Make the form controls be "horizontal" --- src/templates/scaffolding/_form.gsp | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/templates/scaffolding/_form.gsp b/src/templates/scaffolding/_form.gsp index 76076a5..1b3423c 100644 --- a/src/templates/scaffolding/_form.gsp +++ b/src/templates/scaffolding/_form.gsp @@ -12,6 +12,7 @@ } props = domainClass.properties.findAll { persistentPropNames.contains(it.name) && !excludedProps.contains(it.name) && (domainClass.constrainedProperties[it.name] ? domainClass.constrainedProperties[it.name].display : true) } Collections.sort(props, comparator.constructors[0].newInstance([domainClass] as Object[])) + boolean firstProperty = true for (p in props) { if (p.embedded) { def embeddedPropNames = p.component.persistentProperties*.name @@ -23,20 +24,23 @@ } %><% } else { - renderFieldForProperty(p, domainClass) + renderFieldForProperty(firstProperty, p, domainClass) + if (firstProperty) { + firstProperty = false + } } } -private renderFieldForProperty(p, owningClass, prefix = "") { +private renderFieldForProperty(firstProperty, p, owningClass, prefix = "") { boolean hasHibernate = pluginManager?.hasGrailsPlugin('hibernate') || pluginManager?.hasGrailsPlugin('hibernate4') boolean required = false if (hasHibernate) { cp = owningClass.constrainedProperties[p.name] required = (cp ? !(cp.propertyType in [boolean, Boolean]) && !cp.nullable && (cp.propertyType != String || !cp.blank) : false) } %> -
- -
+
+ +
${renderEditor(p)} \${hasErrors(bean: ${propertyName}, field: '${p.name}', 'error')}
From 9465758f65c502f6f6db41aa97528c579fbfabb2 Mon Sep 17 00:00:00 2001 From: qingxin-xu Date: Fri, 5 Sep 2014 15:07:21 +0800 Subject: [PATCH 3/3] Support multiform submit for CRUD --- src/templates/scaffolding/AsyncController.groovy | 8 ++++---- src/templates/scaffolding/Controller.groovy | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/templates/scaffolding/AsyncController.groovy b/src/templates/scaffolding/AsyncController.groovy index 8da30bf..8d59333 100644 --- a/src/templates/scaffolding/AsyncController.groovy +++ b/src/templates/scaffolding/AsyncController.groovy @@ -41,7 +41,7 @@ class ${className}Controller { ${propertyName}.save flush:true request.withFormat { - form { + form multipartForm { flash.message = message(code: 'default.created.message', args: [message(code: '${propertyName}.label', default: '${className}'), ${propertyName}.id]) redirect ${propertyName} } @@ -71,7 +71,7 @@ class ${className}Controller { } request.withFormat { - form { + form multipartForm { flash.message = message(code: 'default.updated.message', args: [message(code: '${className}.label', default: '${className}'), ${propertyName}.id]) redirect ${propertyName} } @@ -91,7 +91,7 @@ class ${className}Controller { ${propertyName}.delete flush:true request.withFormat { - form { + form multipartForm { flash.message = message(code: 'default.deleted.message', args: [message(code: '${className}.label', default: '${className}'), ${propertyName}.id]) redirect action:"index", method:"GET" } @@ -102,7 +102,7 @@ class ${className}Controller { protected void notFound() { request.withFormat { - form { + form multipartForm { flash.message = message(code: 'default.not.found.message', args: [message(code: '${propertyName}.label', default: '${className}'), params.id]) redirect action: "index", method: "GET" } diff --git a/src/templates/scaffolding/Controller.groovy b/src/templates/scaffolding/Controller.groovy index 5dbd2c7..dd369f3 100644 --- a/src/templates/scaffolding/Controller.groovy +++ b/src/templates/scaffolding/Controller.groovy @@ -44,7 +44,7 @@ class ${className}Controller { ${propertyName}.save flush:true request.withFormat { - form { + form multipartForm { flash.message = message(code: 'default.created.message', args: [message(code: '${propertyName}.label', default: '${className}'), ${propertyName}.id]) redirect ${propertyName} } @@ -71,7 +71,7 @@ class ${className}Controller { ${propertyName}.save flush:true request.withFormat { - form { + form multipartForm { flash.message = message(code: 'default.updated.message', args: [message(code: '${className}.label', default: '${className}'), ${propertyName}.id]) redirect ${propertyName} } @@ -90,7 +90,7 @@ class ${className}Controller { ${propertyName}.delete flush:true request.withFormat { - form { + form multipartForm { flash.message = message(code: 'default.deleted.message', args: [message(code: '${className}.label', default: '${className}'), ${propertyName}.id]) redirect action:"index", method:"GET" } @@ -100,7 +100,7 @@ class ${className}Controller { protected void notFound() { request.withFormat { - form { + form multipartForm { flash.message = message(code: 'default.not.found.message', args: [message(code: '${propertyName}.label', default: '${className}'), params.id]) redirect action: "index", method: "GET" }