Changeset 147 for trunk/grails-app
- Timestamp:
- Oct 8, 2009, 7:58:38 PM (15 years ago)
- Location:
- trunk/grails-app
- Files:
-
- 30 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/grails-app/conf/Config.groovy
r140 r147 111 111 ] 112 112 113 /** Class-diagram plugin overrides. 114 * 115 */ 116 classDiagram { 117 associations { 118 arrows { 119 // See http://www.graphviz.org/doc/info/arrows.html for available arrowheads and their visual appearance 120 references = "open" 121 belongsTo = "odiamond" 122 embedded = "diamond" 123 inherits = "onormal" 124 none = "none" 125 } 126 decorators { 127 // plain text to be shown on edge ends 128 hasOne = "1" 129 hasMany = "*" 130 none = "" 131 } 132 } 133 skins { 134 classicSpacey { 135 name = " Classic Spacey" 136 graphStyle = [bgcolor:"none", mclimit:100, nodesep:'1.5 equally', ranksep:'2 equally' ] 137 nodeStyle = [style:"rounded,filled", color:"blue", fillcolor:"azure2", fontname:"Verdana", fontsize:18] 138 edgeStyle = [color:"gray40", fontname:"Verdana", fontsize:18, labelfontsize:20, labeldistance:3.5] 139 } 140 } 141 } 113 /** Navigation plugin alternate menu. 114 * The alternate top level titles are not displayed anywhere. 115 * Subitems i18n message bundles are not currently resolving with this plugin. 116 */ 117 navigation.navAlt = [ 118 [order:10, controller:'person', title:'person', action:'list', 119 subItems: [ 120 [order:10, controller:'person', title:'Person List', action:'list', isVisible: { true }], 121 [order:20, controller:'person', title:'Create', action:'create', isVisible: { true }], 122 [order:90, controller:'person', title:'Show', action:'show', isVisible: { params.action == 'show' }], 123 [order:91, controller:'person', title:'Edit', action:'edit', isVisible: { params.action == 'edit' }] 124 ] 125 ], 126 [order:20, controller:'taskProcedureDetailed', title:'task', action:'list', 127 subItems: [ 128 [order:10, controller:'taskProcedureDetailed', title:'Task Procedure List', action:'list', isVisible: { true }], 129 [order:20, controller:'taskProcedureDetailed', title:'Create', action:'create', isVisible: { true }], 130 [order:90, controller:'taskProcedureDetailed', title:'Show', action:'show', isVisible: { params.action == 'show' }], 131 [order:91, controller:'taskProcedureDetailed', title:'Edit', action:'edit', isVisible: { params.action == 'edit' }] 132 ] 133 ] 134 ] -
trunk/grails-app/conf/SecurityConfig.groovy
r145 r147 3 3 def authenticateService 4 4 5 // see DefaultSecurityConfig.groovy for all settable/overridable properties5 // See DefaultSecurityConfig.groovy for all settable/overridable properties 6 6 7 7 active = true … … 14 14 authorityDomainClass = "Authority" 15 15 16 // Required if we want to run "grails generate-manager"17 // Which recreates the controller and views, so save the views!16 // Required if we want to run "grails generate-manager" 17 // Which recreates the controller and views, so save the views! 18 18 // requestMapClass = 'Requestmap' 19 19 20 // The whole application relies on controllerAnnotations and the static rules bellow. 20 21 useRequestMapDomainClass = false 21 22 useControllerAnnotations = true 22 23 23 // Set true especially if used across the internet.24 // Set true especially if used across the internet. 24 25 forceHttps = 'false' 25 26 26 // Pessimistic locking, deny access to all URLs that don't27 // have an applicable URL-Role configuration.28 // This forces us to set an annotation, static rule or29 // extend BaseController and prevents accidentally leaving pages open.27 // Pessimistic locking, deny access to all URLs that don't 28 // have an applicable URL-Role configuration. 29 // This forces us to set an annotation, static rule or 30 // extend BaseController and prevents accidentally leaving pages open. 30 31 controllerAnnotationsRejectIfNoRule = true 31 32 // Static rules for controllers, actions and urls.33 // Since we are using pessimistic locking we have to set some things34 // here but most security should be set in the controllers.32 33 // Static rules for controllers, actions and urls. 34 // Since we are using pessimistic locking we have to set some things 35 // here but most security should be set in the controllers. 35 36 controllerAnnotationStaticRules = [ 36 37 '/': ['IS_AUTHENTICATED_FULLY'], … … 39 40 '/images/**': ['IS_AUTHENTICATED_ANONYMOUSLY'], 40 41 '/js/**': ['IS_AUTHENTICATED_ANONYMOUSLY'], 41 '/plugins/**': ['IS_AUTHENTICATED_FULLY'], 42 // '/plugins/help-balloons-1.2/**': ['IS_AUTHENTICATED_FULLY'], 43 // '/plugins/richui-0.6/**': ['IS_AUTHENTICATED_FULLY'], 44 // '/plugins/navigation-1.1/**': ['IS_AUTHENTICATED_FULLY'], 45 // '/plugins/filterpane-0.6.2/**': ['IS_AUTHENTICATED_FULLY'], 46 // '/plugins/calendar-1.2.0-SNAPSHOT2/**': ['IS_AUTHENTICATED_FULLY'], 47 // 48 // '/plugins/class-diagram-0.3/**': ['IS_AUTHENTICATED_FULLY'], 49 // '/classDiagram*': ['IS_AUTHENTICATED_FULLY'], 50 // '/classDiagram/**': ['IS_AUTHENTICATED_FULLY'], 42 '/plugins/**': ['IS_AUTHENTICATED_FULLY'], 43 '/classDiagram*': ['IS_AUTHENTICATED_FULLY'], 44 '/classDiagram/**': ['IS_AUTHENTICATED_FULLY'], 51 45 '/login*': ['IS_AUTHENTICATED_ANONYMOUSLY'], 52 46 '/login/**': ['IS_AUTHENTICATED_ANONYMOUSLY'], … … 55 49 ] 56 50 57 //We always want to go to the home page so that bookmarks are not used. 51 // Always call the welcome action so that bookmarks are not used, a 52 // welcome message can be populated and the sessionTimeout can be set. 58 53 defaultTargetUrl = '/appCore/welcome' 59 54 alwaysUseDefaultTargetUrl = true 60 55 61 // User caching, turned this off so that password changes take effect.62 // It would appear that user is still in the session as logout/login56 // User caching, turned this off so that password changes take effect. 57 // It would appear that user is still in the session as logout/login 63 58 // is still required for role changes to take effect. 64 // If this option causes high database load try:59 // If this option causes high database load try: 65 60 // import org.acegisecurity.providers.dao.DaoAuthenticationProvider 66 61 // import org.acegisecurity.context.SecurityContextHolder … … 71 66 cacheUsers = false 72 67 73 // // List for andevents and run the closure(s) that follow.74 // // Unfortunately the session is not available yet so many things can't be done here, us andefaultTargetUrl and controller.68 // // Listen for events and run the closure(s) that follow. 69 // // Unfortunately the session is not available yet so many things can't be done here, use a defaultTargetUrl and controller. 75 70 // useSecurityEventListener = true 76 71 // -
trunk/grails-app/controllers/AssignedPersonDetailedController.groovy
r134 r147 2 2 3 3 class AssignedPersonDetailedController extends BaseController { 4 4 5 5 def index = { redirect(action:list,params:params) } 6 6 … … 27 27 if(assignedPersonInstance) { 28 28 try { 29 def taskId = assignedPersonInstance.task.id 29 30 assignedPersonInstance.delete() 30 31 flash.message = "AssignedPerson ${params.id} deleted" 31 redirect( action:list)32 redirect(controller:"taskDetailed", action:"show", id: taskId) 32 33 } 33 34 catch(org.springframework.dao.DataIntegrityViolationException e) { … … 60 61 def version = params.version.toLong() 61 62 if(assignedPersonInstance.version > version) { 62 63 63 64 assignedPersonInstance.errors.rejectValue("version", "assignedPerson.optimistic.locking.failure", "Another user has updated this AssignedPerson while you were editing.") 64 65 render(view:'edit',model:[assignedPersonInstance:assignedPersonInstance]) … … 82 83 83 84 def create = { 84 85 86 87 88 89 def assignedPersonInstance = new AssignedPerson()90 assignedPersonInstance.properties = params91 return ['assignedPersonInstance':assignedPersonInstance]92 85 if(!params.task?.id) { 86 flash.message = "Please select a task and then 'Add Assigned Person'" 87 redirect(controller: "taskDetailed", action: list) 88 } 89 else { 90 def assignedPersonInstance = new AssignedPerson() 91 assignedPersonInstance.properties = params 92 return ['assignedPersonInstance':assignedPersonInstance] 93 } 93 94 } 94 95 95 96 def save = { 96 97 def assignedPersonInstance = new AssignedPerson(params) 98 97 99 if(!assignedPersonInstance.hasErrors() && assignedPersonInstance.save()) { 98 100 flash.message = "AssignedPerson ${assignedPersonInstance.id} created" 99 redirect( action:show,id:assignedPersonInstance.id)101 redirect(controller:"taskDetailed", action:"show", id: params.task.id) 100 102 } 101 103 else { -
trunk/grails-app/controllers/EntryDetailedController.groovy
r98 r147 4 4 5 5 def authenticateService 6 6 7 7 def index = { redirect(action:list,params:params) } 8 8 -
trunk/grails-app/controllers/PersonController.groovy
r136 r147 4 4 class PersonController extends BaseAppAdminController { 5 5 6 def authenticateService 6 def authenticateService 7 def filterService 7 8 8 9 // the delete, save and update actions only accept POST requests … … 13 14 } 14 15 15 def list = { 16 if (!params.max) { 17 params.max = 10 18 } 19 [personList: Person.list(params)] 20 } 16 def list = { 17 params.max = Math.min( params.max ? params.max.toInteger() : 10, 100 ) 18 19 if(!params.filter) 20 { return [personList: Person.list(params), personTotal: Person.count()] } 21 22 // filterPane: 23 return[ personList: filterService.filter( params, Person ), 24 personTotal: filterService.count( params, Person ), 25 filterParams: com.zeddware.grails.plugins.filterpane.FilterUtils.extractFilterParams(params), 26 params:params ] 27 } 21 28 22 29 def show = { 30 31 // In the case of an actionSubmit button, rewrite action name from 'index'. 32 if(params._action_Show) 33 { params.action='show' } 34 23 35 def person = Person.get(params.id) 24 36 if (!person) { … … 46 58 if (person) { 47 59 def authPrincipal = authenticateService.principal() 48 // avoid self-delete if the logged-in user is an admin60 // Avoid self-delete. 49 61 if (!(authPrincipal instanceof String) && authPrincipal.username == person.loginName) { 50 flash.message = "You can not delete yourself, please login as another admin and try again" 62 flash.message = "You cannot delete yourself, please login as another manager and try again." 63 redirect(action:show,id:params.id) 51 64 } 52 65 else { 53 66 //first, delete this person from Persons_Authorities table. 54 67 Authority.findAll().each { it.removeFromPersons(person) } 55 68 person.isActive = false 69 person.save(flush: true) 70 56 71 try { 57 person.delete( )72 person.delete(flush: true) 58 73 flash.message = "Person $params.id deleted." 59 74 redirect(action:list) … … 72 87 def edit = { 73 88 89 // In the case of an actionSubmit button, rewrite action name from 'index'. 90 if(params._action_Edit) 91 { params.action='edit' } 92 74 93 def person = Person.get(params.id) 75 94 if (!person) { … … 78 97 return 79 98 } 80 99 flash.message = "To allow login at least the 'ROLE_AppUser' authority must be given." 81 100 return buildPersonModel(person) 82 101 } … … 126 145 127 146 def create = { 147 flash.message = "To allow login at least the 'ROLE_AppUser' authority must be given." 128 148 [person: new Person(params), authorityList: Authority.list()] 129 149 } -
trunk/grails-app/controllers/TaskDetailedController.groovy
r144 r147 202 202 203 203 def show = { 204 204 205 205 // In the case of an actionSubmit button, rewrite action name from 'index'. 206 206 if(params._action_Show) … … 286 286 287 287 def edit = { 288 288 289 289 // In the case of an actionSubmit button, rewrite action name from 'index'. 290 290 if(params._action_Edit) -
trunk/grails-app/controllers/TaskProcedureDetailedController.groovy
r134 r147 2 2 3 3 class TaskProcedureDetailedController extends BaseController { 4 4 5 5 def index = { redirect(action:list,params:params) } 6 6 … … 10 10 def list = { 11 11 params.max = Math.min( params.max ? params.max.toInteger() : 10, 100) 12 [ taskProcedureInstanceList: TaskProcedure.list( params ), taskProcedureInstanceTotal: TaskProcedure.count() ] 12 13 if(!params.filter) 14 { return [taskProcedureInstanceList: TaskProcedure.list(params), taskProcedureInstanceTotal: TaskProcedure.count()] } 15 16 // filterPane: 17 return[ taskProcedureInstanceList: filterService.filter( params, TaskProcedure ), 18 taskProcedureInstanceTotal: filterService.count( params, TaskProcedure ), 19 filterParams: com.zeddware.grails.plugins.filterpane.FilterUtils.extractFilterParams(params), 20 params:params ] 13 21 } 14 22 15 23 def search = { 16 24 redirect(action:list) … … 18 26 19 27 def show = { 28 29 // In the case of an actionSubmit button, rewrite action name from 'index'. 30 if(params._action_Show) 31 { params.action='show' } 32 20 33 def taskProcedureInstance = TaskProcedure.get( params.id ) 21 34 … … 47 60 48 61 def edit = { 62 63 // In the case of an actionSubmit button, rewrite action name from 'index'. 64 if(params._action_Edit) 65 { params.action='edit' } 66 49 67 def taskProcedureInstance = TaskProcedure.get( params.id ) 50 68 … … 64 82 def version = params.version.toLong() 65 83 if(taskProcedureInstance.version > version) { 66 84 67 85 taskProcedureInstance.errors.rejectValue("version", "taskProcedure.optimistic.locking.failure", "Another user has updated this TaskProcedure while you were editing.") 68 86 render(view:'edit',model:[taskProcedureInstance:taskProcedureInstance]) … … 86 104 87 105 def create = { 88 def taskInstance = Task.get(params.taskInstance?.id) 89 90 def taskProcedureInstance = new TaskProcedure() 91 taskProcedureInstance.properties = params 92 return ['taskProcedureInstance':taskProcedureInstance, 93 taskInstance: taskInstance] 106 if(params.taskInstance?.id) { 107 def taskInstance = Task.get(params.taskInstance.id) 108 109 def taskProcedureInstance = new TaskProcedure() 110 taskProcedureInstance.properties = params 111 return ['taskProcedureInstance':taskProcedureInstance, 112 taskInstance: taskInstance] 113 } else { 114 flash.message = "Please select a task, then the Procedure tab.'" 115 redirect(controller:"taskDetailed", action:"list") 116 } 94 117 } 95 118 96 119 def save = { 97 120 def taskProcedureInstance = new TaskProcedure(params) 98 99 121 def taskInstance = Task.get(params.taskInstance.id) 122 100 123 if(!taskProcedureInstance.hasErrors() && taskProcedureInstance.save()) { 101 102 flash.message = "TaskProcedure ${taskProcedureInstance.id} created "124 taskProcedureInstance.addToTasks(taskInstance) 125 flash.message = "TaskProcedure ${taskProcedureInstance.id} created." 103 126 redirect(action:show,id:taskProcedureInstance.id) 104 127 } 105 128 else { 106 render(view:'create',model:[taskProcedureInstance:taskProcedureInstance ])129 render(view:'create',model:[taskProcedureInstance:taskProcedureInstance, taskInstance: taskInstance]) 107 130 } 108 131 } -
trunk/grails-app/domain/Authority.groovy
r58 r147 12 12 description() 13 13 } 14 15 String toString() { 16 "${this.authority}" 17 } 14 18 } -
trunk/grails-app/domain/Person.groovy
r139 r147 33 33 34 34 static constraints = { 35 loginName(blank: false, unique: true, minSize:4) //minSize:735 loginName(blank: false, unique: true, minSize:4) //minSize:7 36 36 firstName(blank: false) 37 37 lastName(blank: false) … … 44 44 password(blank: false) 45 45 //So we need to use pass for validation then encode it for above. 46 pass(blank: false, minSize:4) 46 pass(blank: false, minSize:4) //minSize:7 47 47 sessionTimeout(min:60, max:43200) 48 48 -
trunk/grails-app/domain/Task.groovy
r146 r147 20 20 21 21 static hasMany = [entries: Entry, 22 taskModifications: TaskModification, 23 assignedPersons: AssignedPerson, 22 taskModifications: TaskModification, 23 assignedPersons: AssignedPerson, 24 24 subTasks: Task, 25 25 associatedAssets: Asset, -
trunk/grails-app/i18n/messages.properties
r139 r147 5 5 entry.duration=Duration 6 6 entry.duration.help=The time (hh:mm) booked against this entry for date done. 7 8 assignedPerson.estimatedDuration=Estimated Duration 9 assignedPerson.estimatedDuration.help=The estimated amount of time (hh:mm) that you would like to assign this person to the task. 7 10 8 11 task.assignedPersons=Assigned Persons -
trunk/grails-app/views/appCore/manager.gsp
r143 r147 14 14 <div class="message">${flash.message}</div> 15 15 </g:if> 16 <br /> 17 <br /> 18 <a href="${createLink(controller:'person', action:'list')}">Manage application users</a> 19 <br /> 20 <br /> 21 <!-- View Entity Relationship Diagram: 22 <a href="${createLink(controller:'classDiagram', action:'model', params:[outputFormat: 'pdf', skin: 'classicSpacey', showMethods: 'false', autoUpdate: 'false'])}">pdf</a> 23 and 24 <a href="${createLink(controller:'classDiagram', action:'legend', target:'_blank')}">legend</a> 25 or 26 <a href="${createLink(controller:'classDiagram', action:'show')}">interactive.</a>--> 27 </div> 16 <div class="dialog"> 17 <table> 18 <tbody> 19 20 <tr class="prop"> 21 <td valign="top" class="name"> 22 <label>Manage:</label> 23 </td> 24 <td valign="top" class="value"> 25 <a href="${createLink(controller:'person', action:'list')}">Application users</a> 26 </td> 27 </tr> 28 29 <tr class="prop"> 30 <td valign="top" class="name"> 31 <label>Entity Relationship Diagram:</label> 32 </td> 33 <td valign="top" class="value"> 34 35 <a href="${createLink(controller:'classDiagram', action:'model', params:[outputFormat: 'pdf', skin: 'classicSpaced', showMethods: 'false', autoUpdate: 'false'])}">PDF</a> 36 <br /> 37 <a href="${createLink(controller:'classDiagram', action:'legend', target:'_blank')}">Legend</a> 38 <br /> 39 <a href="${createLink(controller:'classDiagram', action:'show')}">Interactive.</a> 40 </td> 41 </tr> 42 43 </tbody> 44 </table> 45 </div> <!--End dialog--> 46 </div> <!--End body--> 28 47 </body> 29 48 </html> -
trunk/grails-app/views/appCore/start.gsp
r144 r147 89 89 <br /> 90 90 <br /> 91 Static reports 91 <div class="dialog"> 92 <table> 93 <tbody> 94 95 <tr class="prop"> 96 <td valign="top" class="name"> 97 <label>Static reports:</label> 98 </td> 99 <!-- <td valign="top" class="value"> 100 <a href="${createLink(action:'changePassword')}"> Password</a> 101 <br /> 102 <a href="${createLink(action:'changeSessionTimeout')}">Session Timeout</a> 103 </td>--> 104 </tr> 105 106 </tbody> 107 </table> 108 </div> <!--End dialog--> 92 109 </richui:tabContent> 93 110 <!-- End Reports tab --> … … 97 114 <br /> 98 115 <br /> 99 <a href="${createLink(action:'changePassword')}">Change Password</a> 100 <br /> 101 <br /> 102 <a href="${createLink(action:'changeSessionTimeout')}">Change Session Timeout</a> 116 <div class="dialog"> 117 <table> 118 <tbody> 119 120 <tr class="prop"> 121 <td valign="top" class="name"> 122 <label>Change:</label> 123 </td> 124 <td valign="top" class="value"> 125 <a href="${createLink(action:'changePassword')}"> Password</a> 126 <br /> 127 <a href="${createLink(action:'changeSessionTimeout')}">Session Timeout</a> 128 </td> 129 </tr> 130 131 </tbody> 132 </table> 133 </div> <!--End dialog--> 103 134 </richui:tabContent> 104 135 <!-- End Options tab --> -
trunk/grails-app/views/assignedPersonDetailed/create.gsp
r134 r147 9 9 <body> 10 10 <div class="nav"> 11 <span class="menuButton"><a class="home" href="${createLinkTo(dir:'')}">Home</a></span> 12 <span class="menuButton"><g:link class="list" action="list">AssignedPerson List</g:link></span> 11 <h1>Create Assigned Person</h1> 13 12 </div> 14 13 <div class="body"> 15 <h1>Create AssignedPerson</h1>16 14 <g:if test="${flash.message}"> 17 15 <div class="message">${flash.message}</div> … … 48 46 <tr class="prop"> 49 47 <td valign="top" class="name"> 50 <label for=" estimatedHour">Estimated Hour:</label>48 <label for="durationHour">Estimated Duration:</label> 51 49 </td> 52 <td valign="top" class="value ${hasErrors(bean:assignedPersonInstance,field:'estimatedHour','errors')}"> 53 <input type="text" id="estimatedHour" name="estimatedHour" value="${fieldValue(bean:assignedPersonInstance,field:'estimatedHour')}" /> 54 </td> 55 </tr> 56 57 <tr class="prop"> 58 <td valign="top" class="name"> 59 <label for="estimatedMinute">Estimated Minute:</label> 60 </td> 61 <td valign="top" class="value ${hasErrors(bean:assignedPersonInstance,field:'estimatedMinute','errors')}"> 62 <input type="text" id="estimatedMinute" name="estimatedMinute" value="${fieldValue(bean:assignedPersonInstance,field:'estimatedMinute')}" /> 63 </td> 64 </tr> 50 51 <td valign="top" class="value"> 52 <input class="time ${hasErrors(bean:assignedPersonInstance,field:'estimatedHour','errors')}" 53 type="text" id="estimatedHour" name="estimatedHour" 54 value="${fieldValue(bean:assignedPersonInstance,field:'estimatedHour')}" /> 55 : 56 <input class="time ${hasErrors(bean:assignedPersonInstance,field:'estimatedMinute','errors')}" 57 type="text" id="estimatedMinute" name="estimatedMinute" 58 value="${fieldValue(bean:assignedPersonInstance,field:'estimatedMinute')}" /> 59 <g:helpBalloon code="assignedPerson.estimatedDuration" /> 60 </td> 61 </tr> 65 62 66 63 </tbody> -
trunk/grails-app/views/assignedPersonDetailed/edit.gsp
r96 r147 9 9 <body> 10 10 <div class="nav"> 11 <span class="menuButton"><a class="home" href="${createLinkTo(dir:'')}">Home</a></span> 12 <span class="menuButton"><g:link class="list" action="list">AssignedPerson List</g:link></span> 13 <span class="menuButton"><g:link class="create" action="create">New AssignedPerson</g:link></span> 11 <h1>Edit Assigned Person</h1> 14 12 </div> 15 13 <div class="body"> 16 <h1>Edit AssignedPerson</h1>17 14 <g:if test="${flash.message}"> 18 15 <div class="message">${flash.message}</div> … … 46 43 <g:select optionKey="id" from="${Person.list()}" name="person.id" value="${assignedPersonInstance?.person?.id}" ></g:select> 47 44 </td> 48 </tr> 49 45 </tr> 46 50 47 <tr class="prop"> 51 48 <td valign="top" class="name"> 52 <label for=" estimatedHour">Estimated Hour:</label>49 <label for="durationHour">Estimated Duration:</label> 53 50 </td> 54 <td valign="top" class="value ${hasErrors(bean:assignedPersonInstance,field:'estimatedHour','errors')}"> 55 <input type="text" id="estimatedHour" name="estimatedHour" value="${fieldValue(bean:assignedPersonInstance,field:'estimatedHour')}" /> 56 </td> 57 </tr> 58 59 <tr class="prop"> 60 <td valign="top" class="name"> 61 <label for="estimatedMinute">Estimated Minute:</label> 62 </td> 63 <td valign="top" class="value ${hasErrors(bean:assignedPersonInstance,field:'estimatedMinute','errors')}"> 64 <input type="text" id="estimatedMinute" name="estimatedMinute" value="${fieldValue(bean:assignedPersonInstance,field:'estimatedMinute')}" /> 65 </td> 66 </tr> 67 51 <td valign="top" class="value"> 52 <input class="time ${hasErrors(bean:assignedPersonInstance,field:'estimatedHour','errors')}" 53 type="text" id="estimatedHour" name="estimatedHour" 54 value="${fieldValue(bean:assignedPersonInstance,field:'estimatedHour')}" /> 55 : 56 <input class="time ${hasErrors(bean:assignedPersonInstance,field:'estimatedMinute','errors')}" 57 type="text" id="estimatedMinute" name="estimatedMinute" 58 value="${fieldValue(bean:assignedPersonInstance,field:'estimatedMinute')}" /> 59 <g:helpBalloon code="assignedPerson.estimatedDuration" /> 60 </td> 61 </tr> 62 68 63 </tbody> 69 64 </table> -
trunk/grails-app/views/assignedPersonDetailed/list.gsp
r96 r147 9 9 <body> 10 10 <div class="nav"> 11 <span class="menuButton"><a class="home" href="${createLinkTo(dir:'')}">Home</a></span> 12 <span class="menuButton"><g:link class="create" action="create">New AssignedPerson</g:link></span> 11 <h1>Assigned Person List</h1> 13 12 </div> 14 13 <div class="body"> 15 <h1>AssignedPerson List</h1>16 14 <g:if test="${flash.message}"> 17 15 <div class="message">${flash.message}</div> -
trunk/grails-app/views/assignedPersonDetailed/show.gsp
r114 r147 9 9 <body> 10 10 <div class="nav"> 11 <span class="menuButton"><a class="home" href="${createLinkTo(dir:'')}">Home</a></span> 12 <span class="menuButton"><g:link class="list" action="list">AssignedPerson List</g:link></span> 13 <span class="menuButton"><g:link class="create" action="create">New AssignedPerson</g:link></span> 11 <h1>Show Assigned Person</h1> 14 12 </div> 15 13 <div class="body"> 16 <h1>Show AssignedPerson</h1>17 14 <g:if test="${flash.message}"> 18 15 <div class="message">${flash.message}</div> … … 45 42 46 43 <tr class="prop"> 47 <td valign="top" class="name">Estimated Hour:</td> 48 49 <td valign="top" class="value">${fieldValue(bean:assignedPersonInstance, field:'estimatedHour')}</td> 50 44 <td valign="top" class="name">Estimated Duration:</td> 45 <td valign="top" class="value">${assignedPersonInstance.estimatedHour}h : ${assignedPersonInstance.estimatedMinute}min</td> 51 46 </tr> 52 53 <tr class="prop"> 54 <td valign="top" class="name">Estimated Minute:</td> 55 56 <td valign="top" class="value">${fieldValue(bean:assignedPersonInstance, field:'estimatedMinute')}</td> 57 58 </tr> 59 47 60 48 </tbody> 61 49 </table> -
trunk/grails-app/views/entryDetailed/create.gsp
r134 r147 5 5 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> 6 6 <meta name="layout" content="main" /> 7 <title>Create Entry</title> 7 <title>Create Entry</title> 8 <nav:resources override="true"/> 9 <resource:dateChooser /> 8 10 </head> 9 11 <body> 10 12 <div class="nav"> 11 <span class="menuButton"><a class="home" href="${createLinkTo(dir:'')}">Home</a></span> 12 <span class="menuButton"><g:link class="list" action="list">Entry List</g:link></span> 13 <h1>Create Entry</h1> 13 14 </div> 14 15 <div class="body"> 15 <h1>Create Entry</h1>16 16 <g:if test="${flash.message}"> 17 17 <div class="message">${flash.message}</div> … … 51 51 </td> 52 52 <td valign="top" class="value ${hasErrors(bean:entryInstance,field:'dateDone','errors')}"> 53 < g:datePicker name="dateDone" value="${entryInstance?.dateDone}" precision="day"></g:datePicker>53 <richui:dateChooser name="dateDone" format="dd-MM-yyyy" value="${new Date()}" /> 54 54 </td> 55 55 </tr> -
trunk/grails-app/views/entryDetailed/edit.gsp
r139 r147 6 6 <meta name="layout" content="main" /> 7 7 <title>Edit Entry</title> 8 <resource:dateChooser /> 8 9 </head> 9 10 <body> 10 11 <div class="nav"> 11 <span class="menuButton"><a class="home" href="${createLinkTo(dir:'')}">Home</a></span> 12 <span class="menuButton"><g:link class="list" action="list">Entry List</g:link></span> 13 <span class="menuButton"><g:link class="create" action="create">New Entry</g:link></span> 12 <h1>Edit Entry</h1> 14 13 </div> 15 14 <div class="body"> 16 <h1>Edit Entry</h1>17 15 <g:if test="${flash.message}"> 18 16 <div class="message">${flash.message}</div> … … 52 50 </td> 53 51 <td valign="top" class="value ${hasErrors(bean:entryInstance,field:'dateDone','errors')}"> 54 < g:datePicker name="dateDone" value="${entryInstance?.dateDone}" precision="day"></g:datePicker>52 <richui:dateChooser name="dateDone" format="dd-MM-yyyy" value="${entryInstance?.dateDone}" /> 55 53 </td> 56 54 </tr> -
trunk/grails-app/views/entryDetailed/show.gsp
r98 r147 9 9 <body> 10 10 <div class="nav"> 11 <span class="menuButton"><a class="home" href="${createLinkTo(dir:'')}">Home</a></span> 12 <span class="menuButton"><g:link class="list" action="list">Entry List</g:link></span> 13 <span class="menuButton"><g:link class="create" action="create">New Entry</g:link></span> 11 <h1>Show Entry</h1> 14 12 </div> 15 13 <div class="body"> 16 <h1>Show Entry</h1>17 14 <g:if test="${flash.message}"> 18 15 <div class="message">${flash.message}</div> … … 47 44 <td valign="top" class="name">Date Done:</td> 48 45 49 <td valign="top" class="value">${fieldValue(bean:entryInstance, field:'dateDone')}</td> 46 <td valign="top" class="value"> 47 <g:formatDate date="${entryInstance.dateDone}" format="EEE, dd-MMM-yyyy"/> 48 </td> 50 49 51 50 </tr> 52 51 53 52 <tr class="prop"> 54 <td valign="top" class="name">Duration Hour:</td> 55 56 <td valign="top" class="value">${fieldValue(bean:entryInstance, field:'durationHour')}</td> 57 58 </tr> 59 60 <tr class="prop"> 61 <td valign="top" class="name">Duration Minute:</td> 62 63 <td valign="top" class="value">${fieldValue(bean:entryInstance, field:'durationMinute')}</td> 64 53 <td valign="top" class="name">Duration:</td> 54 <td valign="top" class="value">${entryInstance.durationHour}h : ${entryInstance.durationMinute}min</td> 65 55 </tr> 66 56 … … 68 58 <td valign="top" class="name">Date Entered:</td> 69 59 70 <td valign="top" class="value">${fieldValue(bean:entryInstance, field:'dateEntered')}</td> 60 <td valign="top" class="value"> 61 <g:formatDate date="${entryInstance.dateEntered}" format="EEE, dd-MMM-yyyy @ HH:mm"/> 62 </td> 71 63 72 64 </tr> -
trunk/grails-app/views/person/create.gsp
r97 r147 2 2 <meta name="layout" content="main" /> 3 3 <title>Create Person</title> 4 <nav:resources override="true"/> 4 5 </head> 5 6 … … 7 8 8 9 <div class="nav"> 9 <span class="menuButton"><a class="home" href="${createLinkTo(dir:'')}">Home</a></span> 10 <span class="menuButton"><g:link class="list" action="list">Person List</g:link></span> 10 <nav:renderSubItems group="navAlt"/> 11 11 </div> 12 12 13 13 <div class="body"> 14 <h1>Create Person</h1>15 14 <g:if test="${flash.message}"> 16 15 <div class="message">${flash.message}</div> -
trunk/grails-app/views/person/edit.gsp
r97 r147 2 2 <meta name="layout" content="main" /> 3 3 <title>Edit Person</title> 4 <nav:resources override="true"/> 4 5 </head> 5 6 … … 7 8 8 9 <div class="nav"> 9 <span class="menuButton"><a class="home" href="${createLinkTo(dir:'')}">Home</a></span> 10 <span class="menuButton"><g:link class="list" action="list">Person List</g:link></span> 11 <span class="menuButton"><g:link class="create" action="create">New Person</g:link></span> 10 <nav:renderSubItems group="navAlt"/> 12 11 </div> 13 12 14 13 <div class="body"> 15 <h1>Edit Person</h1>16 14 <g:if test="${flash.message}"> 17 15 <div class="message">${flash.message}</div> … … 23 21 </g:hasErrors> 24 22 25 <div class="prop">23 <!-- <div class="prop"> 26 24 <span class="name">ID: ${person.id}</span> 27 </div> 25 </div>--> 28 26 29 27 <g:form> -
trunk/grails-app/views/person/list.gsp
r59 r147 1 1 <head> 2 <meta name="layout" content="main" /> 3 <title>Person List</title> 2 <meta name="layout" content="main" /> 3 <title>Person List</title> 4 <filterpane:includes /> 5 <nav:resources override="true"/> 4 6 </head> 5 7 6 8 <body> 7 9 8 <div class="nav"> 9 <span class="menuButton"><a class="home" href="${createLinkTo(dir:'')}">Home</a></span> 10 <span class="menuButton"><g:link class="create" action="create">New Person</g:link></span> 11 </div> 10 <div class="nav"> 11 <nav:renderSubItems group="navAlt"/> 12 </div> 12 13 13 <div class="body"> 14 <h1>Person List</h1> 15 <g:if test="${flash.message}"> 16 <div class="message">${flash.message}</div> 17 </g:if> 18 <div class="list"> 19 <table> 20 <thead> 21 <tr> 22 <g:sortableColumn property="id" title="Id" /> 23 <g:sortableColumn property="loginName" title="Login Name" /> 24 <g:sortableColumn property="firstName" title="First Name" /> 25 <g:sortableColumn property="lastName" title="Last Name" /> 26 <g:sortableColumn property="isActive " title="isActive" /> 27 <th> </th> 28 <th> </th> 29 </tr> 30 </thead> 31 <tbody> 32 <g:each in="${personList}" status="i" var="person"> 33 <tr class="${(i % 2) == 0 ? 'odd' : 'even'}"> 34 <td>${person.id}</td> 35 <td>${person.loginName?.encodeAsHTML()}</td> 36 <td>${person.firstName?.encodeAsHTML()}</td> 14 <div class="body"> 15 <g:if test="${flash.message}"> 16 <div class="message">${flash.message}</div> 17 </g:if> 18 <filterpane:currentCriteria domainBean="Person" 19 action="list" 20 dateFormat="${'EEE, dd-MMM-yyyy'}" 21 removeImgDir="images" 22 removeImgFile="bullet_delete.png" 23 title="Search"/> 24 <div class="list"> 25 <table> 26 <thead> 27 <tr> 28 <g:sortableColumn property="id" title="Id" params="${filterParams}" /> 29 <g:sortableColumn property="loginName" title="Login Name" params="${filterParams}" /> 30 <g:sortableColumn property="firstName" title="First Name" params="${filterParams}" /> 31 <g:sortableColumn property="lastName" title="Last Name" params="${filterParams}" /> 32 <g:sortableColumn property="isActive " title="isActive" params="${filterParams}" /> 33 <th></th> 34 </tr> 35 </thead> 36 <tbody> 37 <g:each in="${personList}" status="i" var="person"> 38 <tr class="${(i % 2) == 0 ? 'clickableOdd' : 'clickableEven'}" onclick='window.location = "${request.getContextPath()}/person/show/${person.id}"'/> 39 40 <td>${person.id}</td> 41 <td>${person.loginName?.encodeAsHTML()}</td> 42 <td>${person.firstName?.encodeAsHTML()}</td> 37 43 <td>${person.lastName?.encodeAsHTML()}</td> 38 <td>${person.isActive?.encodeAsHTML()}</td> 39 <td class="actionButtons"> 40 <span class="actionButton"> 41 <g:link action="show" id="${person.id}">Show</g:link> 42 </span> 43 </td> 44 <td class="actionButtons"> 45 <span class="actionButton"> 46 <g:link action="edit" id="${person.id}">Edit</g:link> 47 </span> 44 <td>${person.isActive?.encodeAsHTML()}</td> 45 <td> 46 <g:link action="show" id="${person.id}"> 47 <img src="${createLinkTo(dir:'images/skin',file:'database_go.png')}" alt="Show" /> 48 </g:link> 48 49 </td> 49 50 51 52 53 50 </tr> 51 </g:each> 52 </tbody> 53 </table> 54 </div> 54 55 55 <div class="paginateButtons"> 56 <g:paginate total="${Person.count()}" /> 57 </div> 56 <div class="paginateButtons"> 57 <g:paginate total="${personTotal}" params="${filterParams}" /> 58 <filterpane:filterButton text="Search" appliedText="Change Search" /> 59 Results:${personTotal} 60 </div> 58 61 59 </div> 62 <filterpane:filterPane domainBean="Person" 63 title="Search" 64 action="list" 65 excludeProperties="password, sessionTimeout, emailShow" 66 associatedProperties="authorities.authority, personGroups.name" 67 filterPropertyValues="${['personGroups.name':[values:PersonGroup.list()], 68 'authorities.authority':[values:Authority.list()]]}" /> 69 70 71 </div><!-- end body div --> 60 72 </body> -
trunk/grails-app/views/person/show.gsp
r59 r147 2 2 <meta name="layout" content="main" /> 3 3 <title>Show Person</title> 4 <nav:resources override="true"/> 4 5 </head> 5 6 … … 7 8 8 9 <div class="nav"> 9 <span class="menuButton"><a class="home" href="${createLinkTo(dir:'')}">Home</a></span> 10 <span class="menuButton"><g:link class="list" action="list">Person List</g:link></span> 11 <span class="menuButton"><g:link class="create" action="create">New Person</g:link></span> 10 <nav:renderSubItems group="navAlt"/> 12 11 </div> 13 12 14 13 <div class="body"> 15 <h1>Show Person</h1>16 14 <g:if test="${flash.message}"> 17 15 <div class="message">${flash.message}</div> -
trunk/grails-app/views/taskDetailed/edit.gsp
r139 r147 7 7 <title>Edit Task</title> 8 8 <nav:resources override="true"/> 9 <resource:dateChooser /> 9 10 </head> 10 11 <body> … … 57 58 </td> 58 59 <td valign="top" class="value ${hasErrors(bean:taskInstance,field:'targetStartDate','errors')}"> 59 < g:datePicker name="targetStartDate" value="${taskInstance?.targetStartDate}" precision="day"></g:datePicker>60 <richui:dateChooser name="targetStartDate" format="dd-MM-yyyy" value="${taskInstance?.targetStartDate}" /> 60 61 </td> 61 62 </tr> … … 66 67 </td> 67 68 <td valign="top" class="value ${hasErrors(bean:taskInstance,field:'targetCompletionDate','errors')}"> 68 < g:datePicker name="targetCompletionDate" value="${taskInstance?.targetCompletionDate}" precision="day"></g:datePicker>69 <richui:dateChooser name="targetCompletionDate" format="dd-MM-yyyy" value="${taskInstance?.targetCompletionDate}" /> 69 70 </td> 70 71 </tr> -
trunk/grails-app/views/taskDetailed/search.gsp
r143 r147 30 30 removeImgFile="bullet_delete.png" 31 31 title="Quick Search"/> 32 33 <div class="list"> 32 33 <div class="list"> 34 34 <table> 35 35 <thead> … … 85 85 <g:link action="advancedSearch">Goto: Advanced Search</g:link> 86 86 </div> 87 87 88 88 <filterpane:filterPane domainBean="Task" 89 89 title="Quick Search" -
trunk/grails-app/views/taskProcedureDetailed/create.gsp
r134 r147 5 5 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> 6 6 <meta name="layout" content="main" /> 7 <title>Create TaskProcedure</title> 7 <title>Create TaskProcedure</title> 8 <nav:resources override="true"/> 8 9 </head> 9 10 <body> 10 11 <div class="nav"> 11 <span class="menuButton"><a class="home" href="${createLinkTo(dir:'')}">Home</a></span> 12 <span class="menuButton"><g:link class="list" action="list">TaskProcedure List</g:link></span> 12 <nav:renderSubItems group="navAlt"/> 13 13 </div> 14 14 <div class="body"> 15 <h1>Create TaskProcedure</h1>16 15 <g:if test="${flash.message}"> 17 16 <div class="message">${flash.message}</div> -
trunk/grails-app/views/taskProcedureDetailed/edit.gsp
r134 r147 6 6 <meta name="layout" content="main" /> 7 7 <title>Edit TaskProcedure</title> 8 <nav:resources override="true"/> 8 9 </head> 9 10 <body> 10 11 <div class="nav"> 11 <span class="menuButton"><a class="home" href="${createLinkTo(dir:'')}">Home</a></span> 12 <span class="menuButton"><g:link class="list" action="list">TaskProcedure List</g:link></span> 13 <span class="menuButton"><g:link class="create" action="create">New TaskProcedure</g:link></span> 12 <nav:renderSubItems group="navAlt"/> 14 13 </div> 15 14 <div class="body"> 16 <h1>Edit TaskProcedure</h1>17 15 <g:if test="${flash.message}"> 18 16 <div class="message">${flash.message}</div> -
trunk/grails-app/views/taskProcedureDetailed/list.gsp
r133 r147 6 6 <meta name="layout" content="main" /> 7 7 <title>TaskProcedure List</title> 8 <filterpane:includes /> 9 <nav:resources override="true"/> 8 10 </head> 9 11 <body> 10 12 <div class="nav"> 11 <span class="menuButton"><a class="home" href="${createLinkTo(dir:'')}">Home</a></span> 12 <span class="menuButton"><g:link class="create" action="create">New TaskProcedure</g:link></span> 13 <nav:renderSubItems group="navAlt"/> 13 14 </div> 14 15 <div class="body"> 15 <h1>TaskProcedure List</h1>16 16 <g:if test="${flash.message}"> 17 17 <div class="message">${flash.message}</div> 18 18 </g:if> 19 <filterpane:currentCriteria domainBean="TaskProcedureDetailed" 20 action="list" 21 dateFormat="${'EEE, dd-MMM-yyyy'}" 22 removeImgDir="images" 23 removeImgFile="bullet_delete.png" 24 title="Search"/> 19 25 <div class="list"> 20 26 <table> … … 22 28 <tr> 23 29 24 <g:sortableColumn property="id" title="Id" />30 <g:sortableColumn property="id" title="Id" params="${filterParams}" /> 25 31 26 <g:sortableColumn property="name" title="Name" />32 <g:sortableColumn property="name" title="Name" params="${filterParams}" /> 27 33 28 <g:sortableColumn property="description" title="Description" />34 <g:sortableColumn property="description" title="Description" params="${filterParams}" /> 29 35 30 <g:sortableColumn property="isActive" title="Is Active" /> 36 <g:sortableColumn property="isActive" title="Is Active" params="${filterParams}" /> 37 38 <th></th> 31 39 32 40 </tr> … … 34 42 <tbody> 35 43 <g:each in="${taskProcedureInstanceList}" status="i" var="taskProcedureInstance"> 36 <tr class="${(i % 2) == 0 ? ' odd' : 'even'}">44 <tr class="${(i % 2) == 0 ? 'clickableOdd' : 'clickableEven'}" onclick='window.location = "${request.getContextPath()}/taskProcedureDetailed/show/${taskProcedureInstance.id}"'/> 37 45 38 <td> <g:link action="show" id="${taskProcedureInstance.id}">${fieldValue(bean:taskProcedureInstance, field:'id')}</g:link></td>46 <td>${fieldValue(bean:taskProcedureInstance, field:'id')}</td> 39 47 40 48 <td>${fieldValue(bean:taskProcedureInstance, field:'name')}</td> … … 43 51 44 52 <td>${fieldValue(bean:taskProcedureInstance, field:'isActive')}</td> 53 54 <td> 55 <g:link action="show" id="${taskProcedureInstance.id}"> 56 <img src="${createLinkTo(dir:'images/skin',file:'database_go.png')}" alt="Show" /> 57 </g:link> 58 </td> 45 59 46 60 </tr> … … 49 63 </table> 50 64 </div> 65 51 66 <div class="paginateButtons"> 52 <g:paginate total="${taskProcedureInstanceTotal}" /> 67 <g:paginate total="${taskProcedureInstanceTotal}" params="${filterParams}" /> 68 <filterpane:filterButton text="Search" appliedText="Change Search" /> 69 Results:${askProcedureInstanceTotal} 53 70 </div> 71 72 <filterpane:filterPane domainBean="TaskProcedure" 73 title="Search" 74 action="list" 75 excludeProperties="" /> 54 76 </div> 55 77 </body> -
trunk/grails-app/views/taskProcedureDetailed/show.gsp
r133 r147 6 6 <meta name="layout" content="main" /> 7 7 <title>Show TaskProcedure</title> 8 <nav:resources override="true"/> 8 9 </head> 9 10 <body> 10 11 <div class="nav"> 11 <span class="menuButton"><a class="home" href="${createLinkTo(dir:'')}">Home</a></span> 12 <span class="menuButton"><g:link class="list" action="list">TaskProcedure List</g:link></span> 13 <span class="menuButton"><g:link class="create" action="create">New TaskProcedure</g:link></span> 12 <nav:renderSubItems group="navAlt"/> 14 13 </div> 15 14 <div class="body"> 16 <h1>Show TaskProcedure</h1>17 15 <g:if test="${flash.message}"> 18 16 <div class="message">${flash.message}</div>
Note: See TracChangeset
for help on using the changeset viewer.