%{ if(_object) { currentObject = _object currentType = _('controllers.CRUD$ObjectType').forClass(_object.getClass().getName()) } else if(_class) { currentObject = null; currentType = _('controllers.CRUD$ObjectType').forClass(_class) } else { currentObject = _caller.object currentType = _caller.type } // Eval fields tags def fieldsHandler = [:] if(_body) { _body.setProperty('fieldsHandler', fieldsHandler); _body.toString(); // we skeep the real result ... } }% #{list items:_fields ?: currentType.fields*.name, as:'fieldName'} %{ am = '' }% %{ def field = currentType.getField(fieldName) }%
%{ if(fieldsHandler[fieldName]) { }% %{ def handler = fieldsHandler[fieldName] handler.setProperty('fieldName', 'object.' + field?.name + (field?.type == 'relation' ? '.' + currentType.keyName : '')) def oldObject = handler.getProperty('object') handler.setProperty('object', currentObject) out.println(handler.toString()) handler.setProperty('object', oldObject) handler.setProperty('fieldName', null) }% %{ } else { }% #{ifnot field} %{ throw new play.exceptions.TagInternalException('Field not found -> ' + fieldName) }% #{/ifnot} #{if field.type == 'text'} #{crud.textField name:field.name, value:(currentObject ? currentObject[field.name] : null) /} #{/if} #{if field.type == 'password'} #{crud.passwordField name:field.name, value:(currentObject ? currentObject[field.name] : null) /} #{/if} #{if field.type == 'binary'} #{crud.fileField name:field.name, value:(currentObject ? currentObject[field.name] : null), id:currentObject?.id /} #{/if} #{if field.type == 'longtext'} #{crud.longtextField name:field.name, value:(currentObject ? currentObject[field.name] : null) /} #{/if} #{if field.type == 'number'} #{crud.numberField name:field.name, value:(currentObject ? currentObject[field.name] : null) /} %{ am = 'crud.help.numeric' }% #{/if} #{if field.type == 'date'} #{crud.dateField name:field.name, value:(currentObject ? currentObject[field.name] : null) /} %{ am = messages.get('crud.help.dateformat',play.libs.I18N.getDateFormat()) }% #{/if} #{if field.type == 'relation'} #{crud.relationField name:field.name, value:(currentObject ? currentObject[field.name] : null), field:field /} #{/if} #{if field.type == 'boolean'} #{crud.checkField name:field.name, value:(currentObject ? currentObject[field.name] : null) /} #{/if} #{if field.type == 'enum'} #{crud.enumField name:field.name, value:(currentObject ? currentObject[field.name] : null), property:field /} #{/if} #{if field.type == 'hidden'} #{crud.hiddenField name:field.name, value:(currentObject ? currentObject[field.name] : null) /} #{/if} &{am} %{ play.data.validation.Validation.getValidators(currentType.entityClass, fieldName, 'object').each() { }% %{ switch (it.annotation.annotationType().name.substring(21)) { case "Required": out.println(messages.get('crud.help.required')) break; case "MinSize": out.println(messages.get('crud.help.minlength', it.annotation.value())) break; case "MaxSize": out.println(messages.get('crud.help.maxlength', it.annotation.value())) break; case "Range": out.println(messages.get('crud.help.range', it.annotation.min(), it.annotation.max())) break; case "Min": out.println(messages.get('crud.help.min', it.annotation.value())) break; case "Email": out.println(messages.get('crud.help.email')) break; case "Equals": out.println(messages.get('crud.help.equals', it.params.equalsTo)) break; case "Future": if(it.params.reference) { out.println(messages.get('crud.help.after', it.params.reference)) } else { out.println(messages.get('crud.help.future')) } break; case "Past": if(it.params.reference) { out.println(messages.get('crud.help.before', it.params.reference)) } else { out.println(messages.get('crud.help.past')) } break; } }% %{ } }% %{ } }%
#{/list}