Index: /trunk/src/grails-app/conf/BootStrap.groovy
===================================================================
--- /trunk/src/grails-app/conf/BootStrap.groovy	(revision 95)
+++ /trunk/src/grails-app/conf/BootStrap.groovy	(revision 96)
@@ -215,6 +215,4 @@
                  comment:"Has been noted as problematic, try recallibrating")
         BootStrapSaveAndTest(taskInstance)
-        taskInstance.addToAssignedPersons(Person.get(1))
-        taskInstance.addToAssignedPersons(Person.get(2))
 
         subTaskInstance = new Task(taskGroup:TaskGroup.findByName("Engineering Activites"),
@@ -226,5 +224,4 @@
                  comment:"Some help required")
         BootStrapSaveAndTest(subTaskInstance)
-        subTaskInstance.addToAssignedPersons(Person.get(1))
         
         //Add task 2 as a subTask of task 1.
@@ -240,5 +237,4 @@
                  comment:"Nothing else has worked.")
         BootStrapSaveAndTest(subTaskInstance)
-        subTaskInstance.addToAssignedPersons(Person.get(1))
 
         //Add task 3 as a subTask of task 1.
@@ -314,5 +310,22 @@
         taskModificationTypeInstance = new TaskModificationType(name:"AssignedToModified").save()
         taskModificationTypeInstance = new TaskModificationType(name:"NameModified").save()
-        
+    
+        //AssignedPerson
+        def assignedPersonInstance
+
+        assignedPersonInstance = new AssignedPerson(person: Person.get(4),
+                                                                                        task: Task.get(1),
+                                                                                        estimatedHour: 1,
+                                                                                        estimatedMinute: 20)
+        BootStrapSaveAndTest(assignedPersonInstance)
+
+        assignedPersonInstance = new AssignedPerson(person: Person.get(5),
+                                                                                        task: Task.get(1),
+                                                                                        estimatedHour: 3,
+                                                                                        estimatedMinute: 30)
+        BootStrapSaveAndTest(assignedPersonInstance)
+
+
+        //Finally did it all work.        
         if(BootStrapDemoDataSuccessful) {
             println "BootStrapping demo data...successful."
Index: /trunk/src/grails-app/controllers/AssignedPersonController.groovy
===================================================================
--- /trunk/src/grails-app/controllers/AssignedPersonController.groovy	(revision 96)
+++ /trunk/src/grails-app/controllers/AssignedPersonController.groovy	(revision 96)
@@ -0,0 +1,99 @@
+import org.codehaus.groovy.grails.plugins.springsecurity.Secured
+
+class AssignedPersonController extends BaseAppAdminController {
+    
+    def index = { redirect(action:list,params:params) }
+
+    // the delete, save and update actions only accept POST requests
+    static allowedMethods = [delete:'POST', save:'POST', update:'POST']
+
+    def list = {
+        params.max = Math.min( params.max ? params.max.toInteger() : 10,  100)
+        [ assignedPersonInstanceList: AssignedPerson.list( params ), assignedPersonInstanceTotal: AssignedPerson.count() ]
+    }
+
+    def show = {
+        def assignedPersonInstance = AssignedPerson.get( params.id )
+
+        if(!assignedPersonInstance) {
+            flash.message = "AssignedPerson not found with id ${params.id}"
+            redirect(action:list)
+        }
+        else { return [ assignedPersonInstance : assignedPersonInstance ] }
+    }
+
+    def delete = {
+        def assignedPersonInstance = AssignedPerson.get( params.id )
+        if(assignedPersonInstance) {
+            try {
+                assignedPersonInstance.delete()
+                flash.message = "AssignedPerson ${params.id} deleted"
+                redirect(action:list)
+            }
+            catch(org.springframework.dao.DataIntegrityViolationException e) {
+                flash.message = "AssignedPerson ${params.id} could not be deleted"
+                redirect(action:show,id:params.id)
+            }
+        }
+        else {
+            flash.message = "AssignedPerson not found with id ${params.id}"
+            redirect(action:list)
+        }
+    }
+
+    def edit = {
+        def assignedPersonInstance = AssignedPerson.get( params.id )
+
+        if(!assignedPersonInstance) {
+            flash.message = "AssignedPerson not found with id ${params.id}"
+            redirect(action:list)
+        }
+        else {
+            return [ assignedPersonInstance : assignedPersonInstance ]
+        }
+    }
+
+    def update = {
+        def assignedPersonInstance = AssignedPerson.get( params.id )
+        if(assignedPersonInstance) {
+            if(params.version) {
+                def version = params.version.toLong()
+                if(assignedPersonInstance.version > version) {
+                    
+                    assignedPersonInstance.errors.rejectValue("version", "assignedPerson.optimistic.locking.failure", "Another user has updated this AssignedPerson while you were editing.")
+                    render(view:'edit',model:[assignedPersonInstance:assignedPersonInstance])
+                    return
+                }
+            }
+            assignedPersonInstance.properties = params
+            if(!assignedPersonInstance.hasErrors() && assignedPersonInstance.save()) {
+                flash.message = "AssignedPerson ${params.id} updated"
+                redirect(action:show,id:assignedPersonInstance.id)
+            }
+            else {
+                render(view:'edit',model:[assignedPersonInstance:assignedPersonInstance])
+            }
+        }
+        else {
+            flash.message = "AssignedPerson not found with id ${params.id}"
+            redirect(action:edit,id:params.id)
+        }
+    }
+
+    def create = {
+        def assignedPersonInstance = new AssignedPerson()
+        assignedPersonInstance.properties = params
+        return ['assignedPersonInstance':assignedPersonInstance]
+    }
+
+    def save = {
+        def assignedPersonInstance = new AssignedPerson(params)
+        if(!assignedPersonInstance.hasErrors() && assignedPersonInstance.save()) {
+            flash.message = "AssignedPerson ${assignedPersonInstance.id} created"
+            redirect(action:show,id:assignedPersonInstance.id)
+        }
+        else {
+            render(view:'create',model:[assignedPersonInstance:assignedPersonInstance])
+        }
+    }
+}
Index: /trunk/src/grails-app/controllers/AssignedPersonDetailedController.groovy
===================================================================
--- /trunk/src/grails-app/controllers/AssignedPersonDetailedController.groovy	(revision 96)
+++ /trunk/src/grails-app/controllers/AssignedPersonDetailedController.groovy	(revision 96)
@@ -0,0 +1,99 @@
+import org.codehaus.groovy.grails.plugins.springsecurity.Secured
+
+class AssignedPersonController extends BaseController {
+    
+    def index = { redirect(action:list,params:params) }
+
+    // the delete, save and update actions only accept POST requests
+    static allowedMethods = [delete:'POST', save:'POST', update:'POST']
+
+    def list = {
+        params.max = Math.min( params.max ? params.max.toInteger() : 10,  100)
+        [ assignedPersonInstanceList: AssignedPerson.list( params ), assignedPersonInstanceTotal: AssignedPerson.count() ]
+    }
+
+    def show = {
+        def assignedPersonInstance = AssignedPerson.get( params.id )
+
+        if(!assignedPersonInstance) {
+            flash.message = "AssignedPerson not found with id ${params.id}"
+            redirect(action:list)
+        }
+        else { return [ assignedPersonInstance : assignedPersonInstance ] }
+    }
+
+    def delete = {
+        def assignedPersonInstance = AssignedPerson.get( params.id )
+        if(assignedPersonInstance) {
+            try {
+                assignedPersonInstance.delete()
+                flash.message = "AssignedPerson ${params.id} deleted"
+                redirect(action:list)
+            }
+            catch(org.springframework.dao.DataIntegrityViolationException e) {
+                flash.message = "AssignedPerson ${params.id} could not be deleted"
+                redirect(action:show,id:params.id)
+            }
+        }
+        else {
+            flash.message = "AssignedPerson not found with id ${params.id}"
+            redirect(action:list)
+        }
+    }
+
+    def edit = {
+        def assignedPersonInstance = AssignedPerson.get( params.id )
+
+        if(!assignedPersonInstance) {
+            flash.message = "AssignedPerson not found with id ${params.id}"
+            redirect(action:list)
+        }
+        else {
+            return [ assignedPersonInstance : assignedPersonInstance ]
+        }
+    }
+
+    def update = {
+        def assignedPersonInstance = AssignedPerson.get( params.id )
+        if(assignedPersonInstance) {
+            if(params.version) {
+                def version = params.version.toLong()
+                if(assignedPersonInstance.version > version) {
+                    
+                    assignedPersonInstance.errors.rejectValue("version", "assignedPerson.optimistic.locking.failure", "Another user has updated this AssignedPerson while you were editing.")
+                    render(view:'edit',model:[assignedPersonInstance:assignedPersonInstance])
+                    return
+                }
+            }
+            assignedPersonInstance.properties = params
+            if(!assignedPersonInstance.hasErrors() && assignedPersonInstance.save()) {
+                flash.message = "AssignedPerson ${params.id} updated"
+                redirect(action:show,id:assignedPersonInstance.id)
+            }
+            else {
+                render(view:'edit',model:[assignedPersonInstance:assignedPersonInstance])
+            }
+        }
+        else {
+            flash.message = "AssignedPerson not found with id ${params.id}"
+            redirect(action:edit,id:params.id)
+        }
+    }
+
+    def create = {
+        def assignedPersonInstance = new AssignedPerson()
+        assignedPersonInstance.properties = params
+        return ['assignedPersonInstance':assignedPersonInstance]
+    }
+
+    def save = {
+        def assignedPersonInstance = new AssignedPerson(params)
+        if(!assignedPersonInstance.hasErrors() && assignedPersonInstance.save()) {
+            flash.message = "AssignedPerson ${assignedPersonInstance.id} created"
+            redirect(action:show,id:assignedPersonInstance.id)
+        }
+        else {
+            render(view:'create',model:[assignedPersonInstance:assignedPersonInstance])
+        }
+    }
+}
Index: /trunk/src/grails-app/controllers/BaseAppAdminController.groovy
===================================================================
--- /trunk/src/grails-app/controllers/BaseAppAdminController.groovy	(revision 96)
+++ /trunk/src/grails-app/controllers/BaseAppAdminController.groovy	(revision 96)
@@ -0,0 +1,9 @@
+import org.codehaus.groovy.grails.plugins.springsecurity.Secured
+
+@Secured(['ROLE_AppAdmin'])
+abstract class BaseAppAdminController {
+    def whatsit() {
+    }
+
+}
+
Index: /trunk/src/grails-app/controllers/TaskController.groovy
===================================================================
--- /trunk/src/grails-app/controllers/TaskController.groovy	(revision 95)
+++ /trunk/src/grails-app/controllers/TaskController.groovy	(revision 96)
@@ -1,6 +1,5 @@
 import org.codehaus.groovy.grails.plugins.springsecurity.Secured
 
-@Secured(['ROLE_AppAdmin']) 
-class TaskController extends BaseController {
+class TaskController extends BaseAppAdminController {
     
     def index = { redirect(action:list,params:params) }
@@ -10,7 +9,8 @@
 
     def list = {
-        if(!params.max) params.max = 10
-        [ taskInstanceList: Task.list( params ) ]
+        params.max = Math.min( params.max ? params.max.toInteger() : 10,  100)
+        [ taskInstanceList: Task.list( params ), taskInstanceTotal: Task.count() ]
     }
+
     def show = {
         def taskInstance = Task.get( params.id )
@@ -22,11 +22,17 @@
         else { return [ taskInstance : taskInstance ] }
     }
-  
+
     def delete = {
         def taskInstance = Task.get( params.id )
         if(taskInstance) {
-            taskInstance.delete()
-            flash.message = "Task ${params.id} deleted"
-            redirect(action:list)
+            try {
+                taskInstance.delete()
+                flash.message = "Task ${params.id} deleted"
+                redirect(action:list)
+            }
+            catch(org.springframework.dao.DataIntegrityViolationException e) {
+                flash.message = "Task ${params.id} could not be deleted"
+                redirect(action:show,id:params.id)
+            }
         }
         else {
@@ -51,4 +57,13 @@
         def taskInstance = Task.get( params.id )
         if(taskInstance) {
+            if(params.version) {
+                def version = params.version.toLong()
+                if(taskInstance.version > version) {
+                    
+                    taskInstance.errors.rejectValue("version", "task.optimistic.locking.failure", "Another user has updated this Task while you were editing.")
+                    render(view:'edit',model:[taskInstance:taskInstance])
+                    return
+                }
+            }
             taskInstance.properties = params
             if(!taskInstance.hasErrors() && taskInstance.save()) {
@@ -82,4 +97,3 @@
         }
     }
-
 }
Index: /trunk/src/grails-app/controllers/TaskDetailedController.groovy
===================================================================
--- /trunk/src/grails-app/controllers/TaskDetailedController.groovy	(revision 95)
+++ /trunk/src/grails-app/controllers/TaskDetailedController.groovy	(revision 96)
@@ -9,6 +9,6 @@
 
     def list = {
-        if(!params.max) params.max = 10
-        [ taskInstanceList: Task.list( params ) ]
+        params.max = Math.min( params.max ? params.max.toInteger() : 10,  100)
+        [ taskInstanceList: Task.list( params ), taskInstanceTotal: Task.count() ]
     }
 
@@ -26,7 +26,13 @@
         def taskInstance = Task.get( params.id )
         if(taskInstance) {
-            taskInstance.delete()
-            flash.message = "Task ${params.id} deleted"
-            redirect(action:list)
+            try {
+                taskInstance.delete()
+                flash.message = "Task ${params.id} deleted"
+                redirect(action:list)
+            }
+            catch(org.springframework.dao.DataIntegrityViolationException e) {
+                flash.message = "Task ${params.id} could not be deleted"
+                redirect(action:show,id:params.id)
+            }
         }
         else {
@@ -57,4 +63,13 @@
         def taskInstance = Task.get( params.id )
         if(taskInstance) {
+            if(params.version) {
+                def version = params.version.toLong()
+                if(taskInstance.version > version) {
+                    
+                    taskInstance.errors.rejectValue("version", "task.optimistic.locking.failure", "Another user has updated this Task while you were editing.")
+                    render(view:'edit',model:[taskInstance:taskInstance])
+                    return
+                }
+            }
             taskInstance.properties = params
             if(!taskInstance.hasErrors() && taskInstance.save()) {
Index: /trunk/src/grails-app/domain/AssignedPerson.groovy
===================================================================
--- /trunk/src/grails-app/domain/AssignedPerson.groovy	(revision 96)
+++ /trunk/src/grails-app/domain/AssignedPerson.groovy	(revision 96)
@@ -0,0 +1,18 @@
+class AssignedPerson {
+
+    Person person
+    Task task
+    Integer estimatedHour = 0
+    Integer estimatedMinute = 0
+
+    static constraints = {
+        task()
+        person()
+        estimatedHour(min:0)
+        estimatedMinute(min:0,max:59)
+    }
+
+    String toString() {
+        "${person.firstName} ${person.lastName} - ${estimatedHour}h : ${estimatedMinute}min"
+    }
+}
Index: /trunk/src/grails-app/domain/Task.groovy
===================================================================
--- /trunk/src/grails-app/domain/Task.groovy	(revision 95)
+++ /trunk/src/grails-app/domain/Task.groovy	(revision 96)
@@ -16,5 +16,5 @@
     static hasMany = [entries: Entry, 
                         taskModifications: TaskModification, 
-                        assignedPersons: Person, 
+                        assignedPersons: AssignedPerson, 
                         subTasks: Task]
 
Index: /trunk/src/grails-app/views/assignedPerson/create.gsp
===================================================================
--- /trunk/src/grails-app/views/assignedPerson/create.gsp	(revision 96)
+++ /trunk/src/grails-app/views/assignedPerson/create.gsp	(revision 96)
@@ -0,0 +1,74 @@
+
+
+<html>
+    <head>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+        <meta name="layout" content="main" />
+        <title>Create AssignedPerson</title>         
+    </head>
+    <body>
+        <div class="nav">
+            <span class="menuButton"><a class="home" href="${createLinkTo(dir:'')}">Home</a></span>
+            <span class="menuButton"><g:link class="list" action="list">AssignedPerson List</g:link></span>
+        </div>
+        <div class="body">
+            <h1>Create AssignedPerson</h1>
+            <g:if test="${flash.message}">
+            <div class="message">${flash.message}</div>
+            </g:if>
+            <g:hasErrors bean="${assignedPersonInstance}">
+            <div class="errors">
+                <g:renderErrors bean="${assignedPersonInstance}" as="list" />
+            </div>
+            </g:hasErrors>
+            <g:form action="save" method="post" >
+                <div class="dialog">
+                    <table>
+                        <tbody>
+                        
+                            <tr class="prop">
+                                <td valign="top" class="name">
+                                    <label for="task">Task:</label>
+                                </td>
+                                <td valign="top" class="value ${hasErrors(bean:assignedPersonInstance,field:'task','errors')}">
+                                    <g:select optionKey="id" from="${Task.list()}" name="task.id" value="${assignedPersonInstance?.task?.id}" ></g:select>
+                                </td>
+                            </tr> 
+                        
+                            <tr class="prop">
+                                <td valign="top" class="name">
+                                    <label for="person">Person:</label>
+                                </td>
+                                <td valign="top" class="value ${hasErrors(bean:assignedPersonInstance,field:'person','errors')}">
+                                    <g:select optionKey="id" from="${Person.list()}" name="person.id" value="${assignedPersonInstance?.person?.id}" ></g:select>
+                                </td>
+                            </tr> 
+                        
+                            <tr class="prop">
+                                <td valign="top" class="name">
+                                    <label for="estimatedHour">Estimated Hour:</label>
+                                </td>
+                                <td valign="top" class="value ${hasErrors(bean:assignedPersonInstance,field:'estimatedHour','errors')}">
+                                    <input type="text" id="estimatedHour" name="estimatedHour" value="${fieldValue(bean:assignedPersonInstance,field:'estimatedHour')}" />
+                                </td>
+                            </tr> 
+                        
+                            <tr class="prop">
+                                <td valign="top" class="name">
+                                    <label for="estimatedMinute">Estimated Minute:</label>
+                                </td>
+                                <td valign="top" class="value ${hasErrors(bean:assignedPersonInstance,field:'estimatedMinute','errors')}">
+                                    <input type="text" id="estimatedMinute" name="estimatedMinute" value="${fieldValue(bean:assignedPersonInstance,field:'estimatedMinute')}" />
+                                </td>
+                            </tr> 
+                        
+                        </tbody>
+                    </table>
+                </div>
+                <div class="buttons">
+                    <span class="button"><input class="save" type="submit" value="Create" /></span>
+                </div>
+            </g:form>
+        </div>
+    </body>
+</html>
Index: /trunk/src/grails-app/views/assignedPerson/edit.gsp
===================================================================
--- /trunk/src/grails-app/views/assignedPerson/edit.gsp	(revision 96)
+++ /trunk/src/grails-app/views/assignedPerson/edit.gsp	(revision 96)
@@ -0,0 +1,78 @@
+
+
+<html>
+    <head>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+        <meta name="layout" content="main" />
+        <title>Edit AssignedPerson</title>
+    </head>
+    <body>
+        <div class="nav">
+            <span class="menuButton"><a class="home" href="${createLinkTo(dir:'')}">Home</a></span>
+            <span class="menuButton"><g:link class="list" action="list">AssignedPerson List</g:link></span>
+            <span class="menuButton"><g:link class="create" action="create">New AssignedPerson</g:link></span>
+        </div>
+        <div class="body">
+            <h1>Edit AssignedPerson</h1>
+            <g:if test="${flash.message}">
+            <div class="message">${flash.message}</div>
+            </g:if>
+            <g:hasErrors bean="${assignedPersonInstance}">
+            <div class="errors">
+                <g:renderErrors bean="${assignedPersonInstance}" as="list" />
+            </div>
+            </g:hasErrors>
+            <g:form method="post" >
+                <input type="hidden" name="id" value="${assignedPersonInstance?.id}" />
+                <input type="hidden" name="version" value="${assignedPersonInstance?.version}" />
+                <div class="dialog">
+                    <table>
+                        <tbody>
+                        
+                            <tr class="prop">
+                                <td valign="top" class="name">
+                                    <label for="task">Task:</label>
+                                </td>
+                                <td valign="top" class="value ${hasErrors(bean:assignedPersonInstance,field:'task','errors')}">
+                                    <g:select optionKey="id" from="${Task.list()}" name="task.id" value="${assignedPersonInstance?.task?.id}" ></g:select>
+                                </td>
+                            </tr> 
+                        
+                            <tr class="prop">
+                                <td valign="top" class="name">
+                                    <label for="person">Person:</label>
+                                </td>
+                                <td valign="top" class="value ${hasErrors(bean:assignedPersonInstance,field:'person','errors')}">
+                                    <g:select optionKey="id" from="${Person.list()}" name="person.id" value="${assignedPersonInstance?.person?.id}" ></g:select>
+                                </td>
+                            </tr> 
+                        
+                            <tr class="prop">
+                                <td valign="top" class="name">
+                                    <label for="estimatedHour">Estimated Hour:</label>
+                                </td>
+                                <td valign="top" class="value ${hasErrors(bean:assignedPersonInstance,field:'estimatedHour','errors')}">
+                                    <input type="text" id="estimatedHour" name="estimatedHour" value="${fieldValue(bean:assignedPersonInstance,field:'estimatedHour')}" />
+                                </td>
+                            </tr> 
+                        
+                            <tr class="prop">
+                                <td valign="top" class="name">
+                                    <label for="estimatedMinute">Estimated Minute:</label>
+                                </td>
+                                <td valign="top" class="value ${hasErrors(bean:assignedPersonInstance,field:'estimatedMinute','errors')}">
+                                    <input type="text" id="estimatedMinute" name="estimatedMinute" value="${fieldValue(bean:assignedPersonInstance,field:'estimatedMinute')}" />
+                                </td>
+                            </tr> 
+                        
+                        </tbody>
+                    </table>
+                </div>
+                <div class="buttons">
+                    <span class="button"><g:actionSubmit class="save" value="Update" /></span>
+                    <span class="button"><g:actionSubmit class="delete" onclick="return confirm('Are you sure?');" value="Delete" /></span>
+                </div>
+            </g:form>
+        </div>
+    </body>
+</html>
Index: /trunk/src/grails-app/views/assignedPerson/list.gsp
===================================================================
--- /trunk/src/grails-app/views/assignedPerson/list.gsp	(revision 96)
+++ /trunk/src/grails-app/views/assignedPerson/list.gsp	(revision 96)
@@ -0,0 +1,60 @@
+
+
+<html>
+    <head>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+        <meta name="layout" content="main" />
+        <title>AssignedPerson List</title>
+    </head>
+    <body>
+        <div class="nav">
+            <span class="menuButton"><a class="home" href="${createLinkTo(dir:'')}">Home</a></span>
+            <span class="menuButton"><g:link class="create" action="create">New AssignedPerson</g:link></span>
+        </div>
+        <div class="body">
+            <h1>AssignedPerson List</h1>
+            <g:if test="${flash.message}">
+            <div class="message">${flash.message}</div>
+            </g:if>
+            <div class="list">
+                <table>
+                    <thead>
+                        <tr>
+                        
+                   	        <g:sortableColumn property="id" title="Id" />
+                        
+                   	        <th>Task</th>
+                   	    
+                   	        <th>Person</th>
+                   	    
+                   	        <g:sortableColumn property="estimatedHour" title="Estimated Hour" />
+                        
+                   	        <g:sortableColumn property="estimatedMinute" title="Estimated Minute" />
+                        
+                        </tr>
+                    </thead>
+                    <tbody>
+                    <g:each in="${assignedPersonInstanceList}" status="i" var="assignedPersonInstance">
+                        <tr class="${(i % 2) == 0 ? 'odd' : 'even'}">
+                        
+                            <td><g:link action="show" id="${assignedPersonInstance.id}">${fieldValue(bean:assignedPersonInstance, field:'id')}</g:link></td>
+                        
+                            <td>${fieldValue(bean:assignedPersonInstance, field:'task')}</td>
+                        
+                            <td>${fieldValue(bean:assignedPersonInstance, field:'person')}</td>
+                        
+                            <td>${fieldValue(bean:assignedPersonInstance, field:'estimatedHour')}</td>
+                        
+                            <td>${fieldValue(bean:assignedPersonInstance, field:'estimatedMinute')}</td>
+                        
+                        </tr>
+                    </g:each>
+                    </tbody>
+                </table>
+            </div>
+            <div class="paginateButtons">
+                <g:paginate total="${assignedPersonInstanceTotal}" />
+            </div>
+        </div>
+    </body>
+</html>
Index: /trunk/src/grails-app/views/assignedPerson/show.gsp
===================================================================
--- /trunk/src/grails-app/views/assignedPerson/show.gsp	(revision 96)
+++ /trunk/src/grails-app/views/assignedPerson/show.gsp	(revision 96)
@@ -0,0 +1,72 @@
+
+
+<html>
+    <head>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+        <meta name="layout" content="main" />
+        <title>Show AssignedPerson</title>
+    </head>
+    <body>
+        <div class="nav">
+            <span class="menuButton"><a class="home" href="${createLinkTo(dir:'')}">Home</a></span>
+            <span class="menuButton"><g:link class="list" action="list">AssignedPerson List</g:link></span>
+            <span class="menuButton"><g:link class="create" action="create">New AssignedPerson</g:link></span>
+        </div>
+        <div class="body">
+            <h1>Show AssignedPerson</h1>
+            <g:if test="${flash.message}">
+            <div class="message">${flash.message}</div>
+            </g:if>
+            <div class="dialog">
+                <table>
+                    <tbody>
+
+                    
+                        <tr class="prop">
+                            <td valign="top" class="name">Id:</td>
+                            
+                            <td valign="top" class="value">${fieldValue(bean:assignedPersonInstance, field:'id')}</td>
+                            
+                        </tr>
+                    
+                        <tr class="prop">
+                            <td valign="top" class="name">Task:</td>
+                            
+                            <td valign="top" class="value"><g:link controller="task" action="show" id="${assignedPersonInstance?.task?.id}">${assignedPersonInstance?.task?.encodeAsHTML()}</g:link></td>
+                            
+                        </tr>
+                    
+                        <tr class="prop">
+                            <td valign="top" class="name">Person:</td>
+                            
+                            <td valign="top" class="value"><g:link controller="person" action="show" id="${assignedPersonInstance?.person?.id}">${assignedPersonInstance?.person?.encodeAsHTML()}</g:link></td>
+                            
+                        </tr>
+                    
+                        <tr class="prop">
+                            <td valign="top" class="name">Estimated Hour:</td>
+                            
+                            <td valign="top" class="value">${fieldValue(bean:assignedPersonInstance, field:'estimatedHour')}</td>
+                            
+                        </tr>
+                    
+                        <tr class="prop">
+                            <td valign="top" class="name">Estimated Minute:</td>
+                            
+                            <td valign="top" class="value">${fieldValue(bean:assignedPersonInstance, field:'estimatedMinute')}</td>
+                            
+                        </tr>
+                    
+                    </tbody>
+                </table>
+            </div>
+            <div class="buttons">
+                <g:form>
+                    <input type="hidden" name="id" value="${assignedPersonInstance?.id}" />
+                    <span class="button"><g:actionSubmit class="edit" value="Edit" /></span>
+                    <span class="button"><g:actionSubmit class="delete" onclick="return confirm('Are you sure?');" value="Delete" /></span>
+                </g:form>
+            </div>
+        </div>
+    </body>
+</html>
Index: /trunk/src/grails-app/views/assignedPersonDetailed/create.gsp
===================================================================
--- /trunk/src/grails-app/views/assignedPersonDetailed/create.gsp	(revision 96)
+++ /trunk/src/grails-app/views/assignedPersonDetailed/create.gsp	(revision 96)
@@ -0,0 +1,74 @@
+
+
+<html>
+    <head>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+        <meta name="layout" content="main" />
+        <title>Create AssignedPerson</title>         
+    </head>
+    <body>
+        <div class="nav">
+            <span class="menuButton"><a class="home" href="${createLinkTo(dir:'')}">Home</a></span>
+            <span class="menuButton"><g:link class="list" action="list">AssignedPerson List</g:link></span>
+        </div>
+        <div class="body">
+            <h1>Create AssignedPerson</h1>
+            <g:if test="${flash.message}">
+            <div class="message">${flash.message}</div>
+            </g:if>
+            <g:hasErrors bean="${assignedPersonInstance}">
+            <div class="errors">
+                <g:renderErrors bean="${assignedPersonInstance}" as="list" />
+            </div>
+            </g:hasErrors>
+            <g:form action="save" method="post" >
+                <div class="dialog">
+                    <table>
+                        <tbody>
+                        
+                            <tr class="prop">
+                                <td valign="top" class="name">
+                                    <label for="task">Task:</label>
+                                </td>
+                                <td valign="top" class="value ${hasErrors(bean:assignedPersonInstance,field:'task','errors')}">
+                                    <g:select optionKey="id" from="${Task.list()}" name="task.id" value="${assignedPersonInstance?.task?.id}" ></g:select>
+                                </td>
+                            </tr> 
+                        
+                            <tr class="prop">
+                                <td valign="top" class="name">
+                                    <label for="person">Person:</label>
+                                </td>
+                                <td valign="top" class="value ${hasErrors(bean:assignedPersonInstance,field:'person','errors')}">
+                                    <g:select optionKey="id" from="${Person.list()}" name="person.id" value="${assignedPersonInstance?.person?.id}" ></g:select>
+                                </td>
+                            </tr> 
+                        
+                            <tr class="prop">
+                                <td valign="top" class="name">
+                                    <label for="estimatedHour">Estimated Hour:</label>
+                                </td>
+                                <td valign="top" class="value ${hasErrors(bean:assignedPersonInstance,field:'estimatedHour','errors')}">
+                                    <input type="text" id="estimatedHour" name="estimatedHour" value="${fieldValue(bean:assignedPersonInstance,field:'estimatedHour')}" />
+                                </td>
+                            </tr> 
+                        
+                            <tr class="prop">
+                                <td valign="top" class="name">
+                                    <label for="estimatedMinute">Estimated Minute:</label>
+                                </td>
+                                <td valign="top" class="value ${hasErrors(bean:assignedPersonInstance,field:'estimatedMinute','errors')}">
+                                    <input type="text" id="estimatedMinute" name="estimatedMinute" value="${fieldValue(bean:assignedPersonInstance,field:'estimatedMinute')}" />
+                                </td>
+                            </tr> 
+                        
+                        </tbody>
+                    </table>
+                </div>
+                <div class="buttons">
+                    <span class="button"><input class="save" type="submit" value="Create" /></span>
+                </div>
+            </g:form>
+        </div>
+    </body>
+</html>
Index: /trunk/src/grails-app/views/assignedPersonDetailed/edit.gsp
===================================================================
--- /trunk/src/grails-app/views/assignedPersonDetailed/edit.gsp	(revision 96)
+++ /trunk/src/grails-app/views/assignedPersonDetailed/edit.gsp	(revision 96)
@@ -0,0 +1,78 @@
+
+
+<html>
+    <head>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+        <meta name="layout" content="main" />
+        <title>Edit AssignedPerson</title>
+    </head>
+    <body>
+        <div class="nav">
+            <span class="menuButton"><a class="home" href="${createLinkTo(dir:'')}">Home</a></span>
+            <span class="menuButton"><g:link class="list" action="list">AssignedPerson List</g:link></span>
+            <span class="menuButton"><g:link class="create" action="create">New AssignedPerson</g:link></span>
+        </div>
+        <div class="body">
+            <h1>Edit AssignedPerson</h1>
+            <g:if test="${flash.message}">
+            <div class="message">${flash.message}</div>
+            </g:if>
+            <g:hasErrors bean="${assignedPersonInstance}">
+            <div class="errors">
+                <g:renderErrors bean="${assignedPersonInstance}" as="list" />
+            </div>
+            </g:hasErrors>
+            <g:form method="post" >
+                <input type="hidden" name="id" value="${assignedPersonInstance?.id}" />
+                <input type="hidden" name="version" value="${assignedPersonInstance?.version}" />
+                <div class="dialog">
+                    <table>
+                        <tbody>
+                        
+                            <tr class="prop">
+                                <td valign="top" class="name">
+                                    <label for="task">Task:</label>
+                                </td>
+                                <td valign="top" class="value ${hasErrors(bean:assignedPersonInstance,field:'task','errors')}">
+                                    <g:select optionKey="id" from="${Task.list()}" name="task.id" value="${assignedPersonInstance?.task?.id}" ></g:select>
+                                </td>
+                            </tr> 
+                        
+                            <tr class="prop">
+                                <td valign="top" class="name">
+                                    <label for="person">Person:</label>
+                                </td>
+                                <td valign="top" class="value ${hasErrors(bean:assignedPersonInstance,field:'person','errors')}">
+                                    <g:select optionKey="id" from="${Person.list()}" name="person.id" value="${assignedPersonInstance?.person?.id}" ></g:select>
+                                </td>
+                            </tr> 
+                        
+                            <tr class="prop">
+                                <td valign="top" class="name">
+                                    <label for="estimatedHour">Estimated Hour:</label>
+                                </td>
+                                <td valign="top" class="value ${hasErrors(bean:assignedPersonInstance,field:'estimatedHour','errors')}">
+                                    <input type="text" id="estimatedHour" name="estimatedHour" value="${fieldValue(bean:assignedPersonInstance,field:'estimatedHour')}" />
+                                </td>
+                            </tr> 
+                        
+                            <tr class="prop">
+                                <td valign="top" class="name">
+                                    <label for="estimatedMinute">Estimated Minute:</label>
+                                </td>
+                                <td valign="top" class="value ${hasErrors(bean:assignedPersonInstance,field:'estimatedMinute','errors')}">
+                                    <input type="text" id="estimatedMinute" name="estimatedMinute" value="${fieldValue(bean:assignedPersonInstance,field:'estimatedMinute')}" />
+                                </td>
+                            </tr> 
+                        
+                        </tbody>
+                    </table>
+                </div>
+                <div class="buttons">
+                    <span class="button"><g:actionSubmit class="save" value="Update" /></span>
+                    <span class="button"><g:actionSubmit class="delete" onclick="return confirm('Are you sure?');" value="Delete" /></span>
+                </div>
+            </g:form>
+        </div>
+    </body>
+</html>
Index: /trunk/src/grails-app/views/assignedPersonDetailed/list.gsp
===================================================================
--- /trunk/src/grails-app/views/assignedPersonDetailed/list.gsp	(revision 96)
+++ /trunk/src/grails-app/views/assignedPersonDetailed/list.gsp	(revision 96)
@@ -0,0 +1,60 @@
+
+
+<html>
+    <head>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+        <meta name="layout" content="main" />
+        <title>AssignedPerson List</title>
+    </head>
+    <body>
+        <div class="nav">
+            <span class="menuButton"><a class="home" href="${createLinkTo(dir:'')}">Home</a></span>
+            <span class="menuButton"><g:link class="create" action="create">New AssignedPerson</g:link></span>
+        </div>
+        <div class="body">
+            <h1>AssignedPerson List</h1>
+            <g:if test="${flash.message}">
+            <div class="message">${flash.message}</div>
+            </g:if>
+            <div class="list">
+                <table>
+                    <thead>
+                        <tr>
+                        
+                   	        <g:sortableColumn property="id" title="Id" />
+                        
+                   	        <th>Task</th>
+                   	    
+                   	        <th>Person</th>
+                   	    
+                   	        <g:sortableColumn property="estimatedHour" title="Estimated Hour" />
+                        
+                   	        <g:sortableColumn property="estimatedMinute" title="Estimated Minute" />
+                        
+                        </tr>
+                    </thead>
+                    <tbody>
+                    <g:each in="${assignedPersonInstanceList}" status="i" var="assignedPersonInstance">
+                        <tr class="${(i % 2) == 0 ? 'odd' : 'even'}">
+                        
+                            <td><g:link action="show" id="${assignedPersonInstance.id}">${fieldValue(bean:assignedPersonInstance, field:'id')}</g:link></td>
+                        
+                            <td>${fieldValue(bean:assignedPersonInstance, field:'task')}</td>
+                        
+                            <td>${fieldValue(bean:assignedPersonInstance, field:'person')}</td>
+                        
+                            <td>${fieldValue(bean:assignedPersonInstance, field:'estimatedHour')}</td>
+                        
+                            <td>${fieldValue(bean:assignedPersonInstance, field:'estimatedMinute')}</td>
+                        
+                        </tr>
+                    </g:each>
+                    </tbody>
+                </table>
+            </div>
+            <div class="paginateButtons">
+                <g:paginate total="${assignedPersonInstanceTotal}" />
+            </div>
+        </div>
+    </body>
+</html>
Index: /trunk/src/grails-app/views/assignedPersonDetailed/show.gsp
===================================================================
--- /trunk/src/grails-app/views/assignedPersonDetailed/show.gsp	(revision 96)
+++ /trunk/src/grails-app/views/assignedPersonDetailed/show.gsp	(revision 96)
@@ -0,0 +1,72 @@
+
+
+<html>
+    <head>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+        <meta name="layout" content="main" />
+        <title>Show AssignedPerson</title>
+    </head>
+    <body>
+        <div class="nav">
+            <span class="menuButton"><a class="home" href="${createLinkTo(dir:'')}">Home</a></span>
+            <span class="menuButton"><g:link class="list" action="list">AssignedPerson List</g:link></span>
+            <span class="menuButton"><g:link class="create" action="create">New AssignedPerson</g:link></span>
+        </div>
+        <div class="body">
+            <h1>Show AssignedPerson</h1>
+            <g:if test="${flash.message}">
+            <div class="message">${flash.message}</div>
+            </g:if>
+            <div class="dialog">
+                <table>
+                    <tbody>
+
+                    
+                        <tr class="prop">
+                            <td valign="top" class="name">Id:</td>
+                            
+                            <td valign="top" class="value">${fieldValue(bean:assignedPersonInstance, field:'id')}</td>
+                            
+                        </tr>
+                    
+                        <tr class="prop">
+                            <td valign="top" class="name">Task:</td>
+                            
+                            <td valign="top" class="value"><g:link controller="task" action="show" id="${assignedPersonInstance?.task?.id}">${assignedPersonInstance?.task?.encodeAsHTML()}</g:link></td>
+                            
+                        </tr>
+                    
+                        <tr class="prop">
+                            <td valign="top" class="name">Person:</td>
+                            
+                            <td valign="top" class="value"><g:link controller="person" action="show" id="${assignedPersonInstance?.person?.id}">${assignedPersonInstance?.person?.encodeAsHTML()}</g:link></td>
+                            
+                        </tr>
+                    
+                        <tr class="prop">
+                            <td valign="top" class="name">Estimated Hour:</td>
+                            
+                            <td valign="top" class="value">${fieldValue(bean:assignedPersonInstance, field:'estimatedHour')}</td>
+                            
+                        </tr>
+                    
+                        <tr class="prop">
+                            <td valign="top" class="name">Estimated Minute:</td>
+                            
+                            <td valign="top" class="value">${fieldValue(bean:assignedPersonInstance, field:'estimatedMinute')}</td>
+                            
+                        </tr>
+                    
+                    </tbody>
+                </table>
+            </div>
+            <div class="buttons">
+                <g:form>
+                    <input type="hidden" name="id" value="${assignedPersonInstance?.id}" />
+                    <span class="button"><g:actionSubmit class="edit" value="Edit" /></span>
+                    <span class="button"><g:actionSubmit class="delete" onclick="return confirm('Are you sure?');" value="Delete" /></span>
+                </g:form>
+            </div>
+        </div>
+    </body>
+</html>
Index: /trunk/src/grails-app/views/task/create.gsp
===================================================================
--- /trunk/src/grails-app/views/task/create.gsp	(revision 95)
+++ /trunk/src/grails-app/views/task/create.gsp	(revision 96)
@@ -41,5 +41,5 @@
                                 </td>
                                 <td valign="top" class="value ${hasErrors(bean:taskInstance,field:'description','errors')}">
-                                    <input type="text" maxlength="50" id="description" name="description" value="${fieldValue(bean:taskInstance,field:'description')}"/>
+                                    <input type="text" maxlength="75" id="description" name="description" value="${fieldValue(bean:taskInstance,field:'description')}"/>
                                 </td>
                             </tr> 
Index: /trunk/src/grails-app/views/task/edit.gsp
===================================================================
--- /trunk/src/grails-app/views/task/edit.gsp	(revision 95)
+++ /trunk/src/grails-app/views/task/edit.gsp	(revision 96)
@@ -25,4 +25,5 @@
             <g:form method="post" >
                 <input type="hidden" name="id" value="${taskInstance?.id}" />
+                <input type="hidden" name="version" value="${taskInstance?.version}" />
                 <div class="dialog">
                     <table>
@@ -43,5 +44,5 @@
                                 </td>
                                 <td valign="top" class="value ${hasErrors(bean:taskInstance,field:'description','errors')}">
-                                    <input type="text" maxlength="50" id="description" name="description" value="${fieldValue(bean:taskInstance,field:'description')}"/>
+                                    <input type="text" maxlength="75" id="description" name="description" value="${fieldValue(bean:taskInstance,field:'description')}"/>
                                 </td>
                             </tr> 
@@ -100,8 +101,8 @@
 <ul>
 <g:each var="a" in="${taskInstance?.assignedPersons?}">
-    <li><g:link controller="person" action="show" id="${a.id}">${a?.encodeAsHTML()}</g:link></li>
-</g:each>
-</ul>
-<g:link controller="person" params="['task.id':taskInstance?.id]" action="create">Add Person</g:link>
+    <li><g:link controller="assignedPerson" action="show" id="${a.id}">${a?.encodeAsHTML()}</g:link></li>
+</g:each>
+</ul>
+<g:link controller="assignedPerson" params="['task.id':taskInstance?.id]" action="create">Add AssignedPerson</g:link>
 
                                 </td>
@@ -153,20 +154,4 @@
                             <tr class="prop">
                                 <td valign="top" class="name">
-                                    <label for="taskModifications">Modifications:</label>
-                                </td>
-                                <td valign="top" class="value ${hasErrors(bean:taskInstance,field:'taskModifications','errors')}">
-                                    
-<ul>
-<g:each var="m" in="${taskInstance?.taskModifications?}">
-    <li><g:link controller="taskModification" action="show" id="${m.id}">${m?.encodeAsHTML()}</g:link></li>
-</g:each>
-</ul>
-<g:link controller="taskModification" params="['task.id':taskInstance?.id]" action="create">Add Modification</g:link>
-
-                                </td>
-                            </tr> 
-                        
-                            <tr class="prop">
-                                <td valign="top" class="name">
                                     <label for="subTasks">Sub Tasks:</label>
                                 </td>
@@ -198,4 +183,20 @@
                                 <td valign="top" class="value ${hasErrors(bean:taskInstance,field:'taskGroup','errors')}">
                                     <g:select optionKey="id" from="${TaskGroup.list()}" name="taskGroup.id" value="${taskInstance?.taskGroup?.id}" ></g:select>
+                                </td>
+                            </tr> 
+                        
+                            <tr class="prop">
+                                <td valign="top" class="name">
+                                    <label for="taskModifications">Task Modifications:</label>
+                                </td>
+                                <td valign="top" class="value ${hasErrors(bean:taskInstance,field:'taskModifications','errors')}">
+                                    
+<ul>
+<g:each var="t" in="${taskInstance?.taskModifications?}">
+    <li><g:link controller="taskModification" action="show" id="${t.id}">${t?.encodeAsHTML()}</g:link></li>
+</g:each>
+</ul>
+<g:link controller="taskModification" params="['task.id':taskInstance?.id]" action="create">Add TaskModification</g:link>
+
                                 </td>
                             </tr> 
Index: /trunk/src/grails-app/views/task/list.gsp
===================================================================
--- /trunk/src/grails-app/views/task/list.gsp	(revision 95)
+++ /trunk/src/grails-app/views/task/list.gsp	(revision 96)
@@ -58,5 +58,5 @@
             </div>
             <div class="paginateButtons">
-                <g:paginate total="${Task.count()}" />
+                <g:paginate total="${taskInstanceTotal}" />
             </div>
         </div>
Index: /trunk/src/grails-app/views/task/show.gsp
===================================================================
--- /trunk/src/grails-app/views/task/show.gsp	(revision 95)
+++ /trunk/src/grails-app/views/task/show.gsp	(revision 96)
@@ -82,5 +82,11 @@
                             <td valign="top" class="name">Assigned Persons:</td>
                             
-                            <td valign="top" class="value">${fieldValue(bean:taskInstance, field:'assignedPersons')}</td>
+                            <td  valign="top" style="text-align:left;" class="value">
+                                <ul>
+                                <g:each var="a" in="${taskInstance.assignedPersons}">
+                                    <li><g:link controller="assignedPerson" action="show" id="${a.id}">${a?.encodeAsHTML()}</g:link></li>
+                                </g:each>
+                                </ul>
+                            </td>
                             
                         </tr>
@@ -121,17 +127,4 @@
                     
                         <tr class="prop">
-                            <td valign="top" class="name">Modifications:</td>
-                            
-                            <td  valign="top" style="text-align:left;" class="value">
-                                <ul>
-                                <g:each var="m" in="${taskInstance.taskModifications}">
-                                    <li><g:link controller="taskModification" action="show" id="${m.id}">${m?.encodeAsHTML()}</g:link></li>
-                                </g:each>
-                                </ul>
-                            </td>
-                            
-                        </tr>
-                    
-                        <tr class="prop">
                             <td valign="top" class="name">Sub Tasks:</td>
                             
@@ -161,4 +154,17 @@
                     
                         <tr class="prop">
+                            <td valign="top" class="name">Task Modifications:</td>
+                            
+                            <td  valign="top" style="text-align:left;" class="value">
+                                <ul>
+                                <g:each var="t" in="${taskInstance.taskModifications}">
+                                    <li><g:link controller="taskModification" action="show" id="${t.id}">${t?.encodeAsHTML()}</g:link></li>
+                                </g:each>
+                                </ul>
+                            </td>
+                            
+                        </tr>
+                    
+                        <tr class="prop">
                             <td valign="top" class="name">Task Type:</td>
                             
Index: /trunk/src/grails-app/views/taskDetailed/edit.gsp
===================================================================
--- /trunk/src/grails-app/views/taskDetailed/edit.gsp	(revision 95)
+++ /trunk/src/grails-app/views/taskDetailed/edit.gsp	(revision 96)
@@ -151,5 +151,23 @@
                                     <g:select optionKey="id" from="${TaskType.list()}" name="taskType.id" value="${taskInstance?.taskType?.id}" ></g:select>
                                 </td>
+                            </tr>
+
+                            <tr class="prop">
+                                <td valign="top" class="name">
+                                    <label for="assignedPersons">Assigned Persons:</label>
+                                </td>
+                                <td valign="top" class="value ${hasErrors(bean:taskInstance,field:'assignedPersons','errors')}">
+                                    
+<ul>
+<g:each var="a" in="${taskInstance?.assignedPersons?}">
+    <li><g:link controller="assignedPersonDetailed" action="show" id="${a.id}">${a?.encodeAsHTML()}</g:link></li>
+</g:each>
+</ul>
+<g:link controller="assignedPersonDetailed" params="['task.id':taskInstance?.id]" action="create">Add AssignedPerson</g:link>
+
+                                </td>
                             </tr> 
+
+
                         
                         </tbody>
Index: /trunk/src/grails-app/views/taskDetailed/show.gsp
===================================================================
--- /trunk/src/grails-app/views/taskDetailed/show.gsp	(revision 95)
+++ /trunk/src/grails-app/views/taskDetailed/show.gsp	(revision 96)
@@ -78,17 +78,4 @@
                     
                         <tr class="prop">
-                            <td valign="top" class="name">Assigned Persons:</td>
-                            
-                            <td  valign="top" style="text-align:left;" class="value">
-                                <ul>
-                                <g:each var="s" in="${taskInstance.assignedPersons}">
-                                    <li>${s?.firstName} ${s?.lastName}</li>
-                                </g:each>
-                                </ul>
-                            </td>
-                            
-                        </tr>
-                    
-                        <tr class="prop">
                             <td valign="top" class="name">Is Active:</td>
                             
@@ -142,4 +129,17 @@
                             
                             <td valign="top" class="value">${taskInstance?.taskType?.encodeAsHTML()}</td>
+                            
+                        </tr>
+
+                        <tr class="prop">
+                            <td valign="top" class="name">Assigned Persons:</td>
+                            
+                            <td  valign="top" style="text-align:left;" class="value">
+                                <ul>
+                                <g:each var="a" in="${taskInstance.assignedPersons}">
+                                    <li><g:link controller="assignedPersonDetailed" action="edit" id="${a.id}">${a?.encodeAsHTML()}</g:link></li>
+                                </g:each>
+                                </ul>
+                            </td>
                             
                         </tr>
