Changeset 809 for trunk


Ignore:
Timestamp:
Feb 16, 2011, 8:10:39 PM (14 years ago)
Author:
gav
Message:

Domain change, first draft of TaskProcedureRevisions.

Location:
trunk/grails-app
Files:
3 added
15 edited

Legend:

Unmodified
Added
Removed
  • trunk/grails-app/controllers/TaskDetailedController.groovy

    r747 r809  
    434434            def assignedPersonList = taskInstance.assignedPersons.sort { p1, p2 -> p1.person.firstName.compareToIgnoreCase(p2.person.firstName) }
    435435
    436             def taskProcedureInstance = TaskProcedure.get(taskInstance.taskProcedure?.id)
     436            def taskProcedureRevision = TaskProcedureRevision.get(taskInstance.taskProcedureRevision?.id)
    437437            def taskProcedureExits = new Boolean("true")
    438             if(!taskProcedureInstance) {
     438            if(!taskProcedureRevision) {
    439439                taskProcedureExits = false
    440440            }
    441 
    442             def maParams = [:]
    443             maParams.max = 100
    444             maParams.order = "asc"
    445             maParams.sort = "procedureStepNumber"
    446             def maintenanceActionList = MaintenanceAction.findAllByTaskProcedure(taskProcedureInstance, maParams)
    447441
    448442            def taskRecurringScheduleInstance = TaskRecurringSchedule.get(taskInstance.taskRecurringSchedule?.id)
     
    456450                            entryCauseList: entryCauseList,
    457451                            entryWorkDoneList: entryWorkDoneList,
    458                             taskProcedureInstance: taskProcedureInstance,
     452                            taskProcedureRevision: taskProcedureRevision,
    459453                            taskProcedureExits: taskProcedureExits,
    460454                            showTab: showTab,
     
    462456                            subTaskInstanceTotal: subTaskInstanceTotal,
    463457                            subTaskInstanceMax: params.max,
    464                             maintenanceActionList: maintenanceActionList,
    465458                            taskRecurringScheduleInstance: taskRecurringScheduleInstance,
    466459                            taskRecurringScheduleExits: taskRecurringScheduleExits,
  • trunk/grails-app/controllers/TaskProcedureDetailedController.groovy

    r798 r809  
    4343        if(!taskProcedureInstance) {
    4444            flash.errorMessage = "TaskProcedure not found with id ${params.id}"
    45             redirect(controller:'taskDetailed', action:'search')
     45            redirect(action:'list')
    4646            return
    4747        }
    4848
    49         redirect(controller:'taskDetailed',
    50                         action:'show',
    51                         id:taskProcedureInstance.linkedTask?.id,
    52                         params:[showTab:"showProcedureTab"])
    53     }
     49        def taskProcedureRevision
     50        if(params.revision?.toInteger())
     51             taskProcedureRevision = taskProcedureInstance.getRevision( params.revision )
     52        else
     53             taskProcedureRevision = taskProcedureInstance.latestRevision
    5454
    55     def delete = {
    56         def taskProcedureInstance = TaskProcedure.get( params.id )
    57         if(taskProcedureInstance) {
    58             def taskInstance = taskProcedureInstance.linkedTask
    59             try {
    60                 taskProcedureInstance.tasks.each {
    61                     it.taskProcedure = null
    62                 }
    63                 taskProcedureInstance.delete(flush:true)
    64                 flash.message = "TaskProcedure ${params.id} deleted"
    65                 redirect(controller:'taskDetailed',
    66                                 action:'show',
    67                                 id:taskInstance.id,
    68                                 params:[showTab:"showProcedureTab"])
    69             }
    70             catch(org.springframework.dao.DataIntegrityViolationException e) {
    71                 flash.errorMessage = "TaskProcedure ${params.id} could not be deleted"
    72                 redirect(controller:'taskDetailed',
    73                                 action:'show',
    74                                 id:taskInstance.id,
    75                                 params:[showTab:"showProcedureTab"])
    76             }
     55        if(!taskProcedureRevision) {
     56            flash.errorMessage = "TaskProcedure ${params.id} revision ${params.revision} not found"
     57            redirect(action:'list')
     58            return
    7759        }
    78         else {
    79             flash.errorMessage = "TaskProcedure not found with id ${params.id}"
    80             redirect(action:list)
    81         }
     60
     61        return [taskProcedureRevision: taskProcedureRevision]
     62
    8263    }
    8364
     
    8566
    8667        // In the case of an actionSubmit button, rewrite action name from 'index'.
    87         if(params._action_Edit)
     68        //if(params._action_Edit)
    8869            params.action='edit'
    8970
     
    10687        if(!result.error) {
    10788            flash.message = g.message(code: "default.update.success", args: ["TaskProcedure", params.id])
    108             redirect(controller:'taskDetailed',
    109                             action:'show',
    110                             id:result.taskProcedureInstance.linkedTask.id,
    111                             params:[showTab:"showProcedureTab"])
     89            redirect(action:'show', id:result.taskProcedureInstance.id)
    11290            return
    11391        }
     
    12199        if(result.error.code == "default.optimistic.locking.failure") {
    122100            flash.errorMessage = g.message(code: result.error.code, args: result.error.args)
    123             redirect(controller:'taskDetailed',
    124                             action:'show',
    125                             id:result.taskProcedureInstance.linkedTask.id,
    126                             params:[showTab:"showProcedureTab"])
     101            redirect(action:'show', id:result.taskProcedureInstance.id)
    127102            return
    128103        }
     
    144119
    145120        // Task already has a taskProcedure.
    146         if(params.linkedTask.taskProcedure) {
     121        if(params.linkedTask.taskProcedureRevision) {
    147122            flash.errorMessage = g.message(code: 'default.optimistic.locking.failure')
    148123            redirect(controller:'taskDetailed',
     
    183158        if(!result.error) {
    184159            flash.message = g.message(code: "default.create.success", args: ["TaskProcedure", result.taskProcedureInstance.id])
    185             redirect(controller:'taskDetailed',
    186                             action:'show',
    187                             id:result.taskProcedureInstance.linkedTask.id,
    188                             params:[showTab:"showProcedureTab"])
     160            redirect(action:'show', id:result.taskProcedureInstance.id)
    189161            return
    190162        }
    191163
     164        // Task already has a taskProcedure.
    192165        if(result.error.code == "default.optimistic.locking.failure") {
    193166            flash.errorMessage = g.message(code: result.error.code, args: result.error.args)
    194167            redirect(controller:'taskDetailed',
    195168                            action:'show',
    196                             id:result.taskProcedureInstance.linkedTask.id,
     169                            id:params.linkedTask.id,
    197170                            params:[showTab:"showProcedureTab"])
    198171            return
  • trunk/grails-app/domain/DocumentReference.groovy

    r798 r809  
    1010//     static hasMany = []
    1111
    12     static belongsTo = [TaskProcedure]
     12    static belongsTo = [TaskProcedure, TaskProcedureRevision]
     13
     14    static mapping = {
     15        batchSize 10
     16    }
    1317
    1418    static constraints = {
  • trunk/grails-app/domain/MaintenanceAction.groovy

    r798 r809  
    11class MaintenanceAction {
    22
    3     TaskProcedure taskProcedure
    43    MaintenancePolicy maintenancePolicy
    54    Section section
     
    1716//     static hasMany = []
    1817
    19     static belongsTo = [TaskProcedure]
     18    static mapping = {
     19        batchSize 10
     20    }
     21
     22    static belongsTo = [TaskProcedure, TaskProcedureRevision]
    2023
    2124    static constraints = {
     
    2629        procedureStepNumber(nullable:true)
    2730        description(blank:false,maxSize:100)
    28         pageRef(maxSize:100)
     31        pageRef(maxSize:25)
    2932    }
    3033
  • trunk/grails-app/domain/Task.groovy

    r807 r809  
    1313    AssetSubItem assetSubItem
    1414    TaskRecurringSchedule taskRecurringSchedule
    15     TaskProcedure taskProcedure
     15    TaskProcedureRevision taskProcedureRevision
    1616
    1717    String description
     
    6161        assetSubItem(nullable:true)
    6262        taskRecurringSchedule(nullable:true)
    63         taskProcedure(nullable:true)
     63        taskProcedureRevision(nullable:true)
    6464
    6565    }
  • trunk/grails-app/domain/TaskProcedure.groovy

    r798 r809  
    55
    66    Task linkedTask
    7     Person createdBy
    8     Person lastUpdatedBy
    9     Date dateCreated = new Date() // autoTimestamp
    10     Date lastUpdated = new Date() // autoTimestamp
    117
    128    def getDescription() { linkedTask.description }
     
    1511    List maintenanceActions = new ArrayList()
    1612    List documentReferences = new ArrayList()
     13    List revisions = new ArrayList()
    1714
    18     static hasMany = [tasks: Task,
    19                                     maintenanceActions: MaintenanceAction,
    20                                     documentReferences: DocumentReference]
     15    static hasMany = [maintenanceActions: MaintenanceAction,
     16                                    documentReferences: DocumentReference,
     17                                    revisions: TaskProcedureRevision]
    2118
    2219    def getMaintenanceActionLazyList() {
     
    2825    }
    2926
    30     static mappedBy = [tasks:"taskProcedure"]
     27    // The current revision number is equal to the count of the revisions created.
     28    // More efficient than loading the entire revisions list and using size().
     29    // WithTransaction is used to allow calling in a transaction however objects
     30    // in the current transaction must not trigger DataIntegrityViolationException.
     31    def getRevision() {
     32        def revision
     33        TaskProcedure.withTransaction {
     34            revision = TaskProcedureRevision.countByTaskProcedure(this)
     35        }
     36        return revision
     37    }
     38
     39    // Get a specific revision.
     40    def getRevision(revision) {
     41        def taskProcedureRevision
     42        TaskProcedure.withTransaction {
     43            taskProcedureRevision = TaskProcedureRevision.findByTaskProcedureAndRevision(this, revision)
     44        }
     45        return taskProcedureRevision
     46    }
     47
     48    // Get the latest revision of this procedure.
     49    def getLatestRevision() {
     50        def taskProcedureRevision
     51        TaskProcedure.withTransaction {
     52            taskProcedureRevision = TaskProcedureRevision.findByTaskProcedureAndRevision(this, this.revision)
     53        }
     54        return taskProcedureRevision
     55    }
    3156
    3257    static mapping = {
     58        linkedTask lazy:false
     59        revisions batchSize: 10
    3360        maintenanceActions cascade:"all-delete-orphan"
    3461        documentReferences cascade:"all-delete-orphan"
     62        revisions cascade:"all-delete-orphan"
    3563    }
    3664
  • trunk/grails-app/i18n/messages.properties

    r803 r809  
    154154task.operationNotPermittedOnTaskHavingSubTasksWithoutAuth=This operation is not permitted \
    155155    on a task that has sub tasks without authorisation.
    156 task.operationNotPermittedOnTaskLinkedToProcedure=This operation is not permitted \
    157     on a task that is linked to a procedure.
     156task.operationNotPermittedOnTaskLinkedToProcedureWithoutAuth=This operation is not permitted \
     157    on a task that is linked to a procedure without authorisation.
    158158task.operationNotPermittedOnParentPmTask=This operation is not permitted \
    159159    on a Parent PM task.
     
    317317default.create.success={0} {1} created.
    318318default.create.failure={0} could not be created.
     319default.create.revision.failure=Could not create revision.
    319320default.optimistic.locking.failure=Another user has updated this item while you were editing, please check the updated values.
    320321default.file.over.max.size=Supplied file is greater than max size of {0} {1}.
  • trunk/grails-app/services/CreateDataService.groovy

    r798 r809  
    140140        createDemoAssignedGroups()
    141141        createDemoAssignedPersons()
    142         createDemoTaskProcedure()
    143         createDemoMaintenanceActions()
     142//         createDemoTaskProcedure()
     143//         createDemoMaintenanceActions()
    144144        createDemoTaskRecurringSchedules()
    145145
  • trunk/grails-app/services/TaskProcedureService.groovy

    r798 r809  
    77
    88    def authService
     9    def dateUtilService
    910
    1011    /**
     
    2324                result.error = [ code: m.code, args: ["TaskProcedure", params.id] ]
    2425                // Fetch to prevent lazy initialization error.
    25                 result.taskProcedureInstance?.linkedTask.primaryAsset
    26                 result.taskProcedureInstance?.createdBy
     26                result.taskProcedureInstance.revisions.each {it.createdBy.toString()}
    2727                return result
    2828            }
     
    4040
    4141            result.taskProcedureInstance.properties = params
    42             result.taskProcedureInstance.lastUpdatedBy = authService.currentUser
    43             result.taskProcedureInstance.lastUpdated = new Date() // Required to trigger version increment.
    4442
    4543            // Gaps in the html index's can be created by adding 2 items and removing the first one.
     
    8078            }
    8179
     80            def r = createRevision(result.taskProcedureInstance)
     81            if(r.error)
     82                return fail(field:'id', code:"default.create.revision.failure")
     83
     84            // Also sets: taskInstance.taskProcedureRevision = taskProcedureRevision
     85            r.taskProcedureRevision.addToTasks(result.taskProcedureInstance.linkedTask)
     86
     87            // Update tasks that are using previousRevision.
     88            // Only those that are not started and due to be started today or in the future.
     89            def previousRevision = result.taskProcedureInstance.getRevision(r.taskProcedureRevision.revision - 1)
     90            if(previousRevision) {
     91                Task.withCriteria {
     92                    eq("taskProcedureRevision", previousRevision)
     93                    ge("targetStartDate", dateUtilService.today)
     94                    taskStatus {
     95                        idEq(1L) // Not Started.
     96                    }
     97                    maxResults(10000)
     98                }.each {
     99                    it.taskProcedureRevision = r.taskProcedureRevision
     100                }
     101            }
     102
    82103            // Success.
    83104            return result
    84105
    85         } //end withTransaction
     106        } // end withTransaction
    86107    }  // end update()
    87108
     
    96117            def fail = { Map m ->
    97118                status.setRollbackOnly()
    98                 if(result.taskProcedureInstance && m.field) 
     119                if(result.taskProcedureInstance && m.field)
    99120                    result.taskProcedureInstance.errors.rejectValue(m.field, m.code)
    100121                result.error = [ code: m.code, args: ["TaskProcedure", params.id] ]
     
    107128
    108129            // Optimistic locking check on linkedTask.
    109             if(result.taskProcedureInstance.linkedTask.taskProcedure)
     130            if(result.taskProcedureInstance.linkedTask.taskProcedureRevision)
    110131                    return fail(field:"version", code:"default.optimistic.locking.failure")
    111 
    112             result.taskProcedureInstance.createdBy = authService.currentUser
    113             result.taskProcedureInstance.lastUpdatedBy = authService.currentUser
    114132
    115133            // Gaps in the html index's can be created by adding 2 items and removing the first one.
     
    124142            }
    125143
    126             // Also sets: taskInstance.taskProcedure = taskProcedureInstance
    127             result.taskProcedureInstance.addToTasks(result.taskProcedureInstance.linkedTask)
    128 
    129144            if(result.taskProcedureInstance.hasErrors() || !result.taskProcedureInstance.save()) {
    130145                // Populate collection errors for display.
     
    134149            }
    135150
    136         } //end withTransaction
    137 
    138         result.taskProcedureInstance.lastUpdated = new Date() // Required to trigger version increment to 1.
    139 
    140         // success
     151            def r = createRevision(result.taskProcedureInstance)
     152            if(r.error)
     153                return fail(field:'id', code:"default.create.revision.failure")
     154
     155            // Also sets: taskInstance.taskProcedureRevision = taskProcedureRevision
     156            r.taskProcedureRevision.addToTasks(result.taskProcedureInstance.linkedTask)
     157
     158        } // end withTransaction
     159
     160        // Success.
    141161        return result
    142162    }  // end save()
    143163
     164    /**
     165    * Creates a new taskProcedureRevision.
     166    * @param taskProcedureInstance The taskProcedure to create the revision for.
     167    * @returns A map containing result.error (if any error) and result.taskProcedureRevision.
     168    */
     169    def createRevision(taskProcedureInstance) {
     170        def result = [:]
     171        TaskProcedureRevision.withTransaction { status ->
     172            def fail = { Map m ->
     173                status.setRollbackOnly()
     174                if(result.taskProcedureRevision && m.field)
     175                    result.taskProcedureRevision.errors.rejectValue(m.field, m.code)
     176                result.error = [ code: m.code, args: ["TaskProcedureRevision"] ]
     177                return result
     178            }
     179
     180            result.taskProcedureRevision = new TaskProcedureRevision()
     181            taskProcedureInstance.addToRevisions(result.taskProcedureRevision)
     182
     183            result.taskProcedureRevision.taskProcedure = taskProcedureInstance
     184            result.taskProcedureRevision.linkedTask = taskProcedureInstance.linkedTask
     185            result.taskProcedureRevision.createdBy =  authService.currentUser
     186            result.taskProcedureRevision.revision = 0 // init to prevent DataIntegrityViolationException
     187            result.taskProcedureRevision.revision = taskProcedureInstance.revision
     188            taskProcedureInstance.maintenanceActions.each {
     189                result.taskProcedureRevision.addToMaintenanceActions(new MaintenanceAction(it.properties))
     190            }
     191            taskProcedureInstance.documentReferences.each {
     192                result.taskProcedureRevision.addToDocumentReferences(new DocumentReference(it.properties))
     193            }
     194
     195            if(result.taskProcedureRevision.hasErrors() || !result.taskProcedureRevision.save()) {
     196                log.error result.taskProcedureRevision.errors
     197                return fail(code:"default.create.failure")
     198            }
     199
     200        } // end withTransaction
     201
     202        // Success.
     203        return result
     204    } // end createRevision()
     205
    144206} // end class
  • trunk/grails-app/services/TaskRecurringScheduleService.groovy

    r445 r809  
    6868                p.targetStartDate = it.nextTargetStartDate
    6969                p.targetCompletionDate = it.nextTargetCompletionDate
    70                 if(it.task.taskProcedure) p.taskProcedure = it.task.taskProcedure
     70                if(it.task.taskProcedureRevision) p.taskProcedureRevision = it.task.taskProcedureRevision
    7171                if(it.task.assignedGroups) p.assignedGroups = new ArrayList(it.task.assignedGroups)
    7272                if(it.task.assignedPersons) p.assignedPersons = new ArrayList(it.task.assignedPersons)
  • trunk/grails-app/services/TaskService.groovy

    r802 r809  
    188188    * Creates a subTask copying sane attributes from the parentTask unless otherwise specified in params.
    189189    * The targetStartDate and targetCompletionDate default to today since that is the sane thing to do.
    190     * The taskProcedure is only assigned to the sub task if supplied in params.
     190    * The taskProcedureRevision is only assigned to the sub task if supplied in params.
    191191    * The assignedPersons and assignedGroups are only added to the sub task if supplied in params.
    192192    * The positiveFault property is never set on the subTask.
     
    228228
    229229        // Supplied by recurring tasks.
    230         if(params.taskProcedure) p.taskProcedure = params.taskProcedure
     230        if(params.taskProcedureRevision) p.taskProcedureRevision = params.taskProcedureRevision
    231231        if(params.assignedGroups) p.assignedGroups = params.assignedGroups // Collection.
    232232        if(params.assignedPersons) p.assignedPersons = params.assignedPersons // Collection.
     
    691691            }
    692692
    693             // Check for taskProcedure using this task as linkedTask.
    694             if(result.taskInstance.taskProcedure?.linkedTask?.id == result.taskInstance.id)
    695                 return fail(field:"taskProcedure", code:"task.operationNotPermittedOnTaskLinkedToProcedure")
     693            // Check for taskProcedureRevision using this task as linkedTask.
     694            if(result.taskInstance.taskProcedureRevision?.linkedTask?.id == result.taskInstance.id) {
     695                if(!authenticateService.ifAnyGranted('ROLE_AppAdmin,ROLE_Manager,ROLE_TaskManager'))
     696                    return fail(field:"taskProcedureRevision", code:"task.operationNotPermittedOnTaskLinkedToProcedureWithoutAuth")
     697            }
    696698
    697699            // Check for Parent PM task type.
    698700            if(result.taskInstance.taskType.id == 6)
    699                 return fail(field:"taskProcedure", code:"task.operationNotPermittedOnParentPmTask")
     701                return fail(field:"taskType", code:"task.operationNotPermittedOnParentPmTask")
    700702
    701703            result.taskInstance.trash = true
  • trunk/grails-app/views/taskDetailed/show.gsp

    r803 r809  
    524524                        </g:if>
    525525                        <g:else>
    526                             <div class="dialog">
    527                                 <table>
    528                                     <tbody>
    529 
    530                                         <tr class="prop">
    531                                             <td valign="top" class="name">Procedure Id:</td>
    532                                             <td valign="top" class="value">
    533                                                 ${fieldValue(bean:taskProcedureInstance, field:'id')}
    534                                             </td>
    535                                         </tr>
    536 
    537                                         <tr class="prop">
    538                                             <td valign="top" class="name">Linked Task:</td>
    539                                             <td valign="top" class="value">
    540                                                 <g:link controller="taskDetailed"
    541                                                                 action="show"
    542                                                                 id="${taskProcedureInstance.linkedTask.id}">
    543                                                     ${taskProcedureInstance.linkedTask.encodeAsHTML()}
    544                                                 </g:link>
    545                                             </td>
    546                                         </tr>
    547 
    548                                         <tr class="prop">
    549                                             <td valign="top" class="name">Linked Asset:</td>
    550                                             <td valign="top" class="value">
    551                                                 <g:render template="/shared/assetTreeCompact" model="['assetInstance': taskProcedureInstance.linkedTask.primaryAsset]" />
    552                                             </td>
    553                                         </tr>
    554 
    555                                         <tr class="prop">
    556                                             <td valign="top" class="name">Version:</td>
    557                                             <td valign="top" class="value">
    558                                                     ${fieldValue(bean:taskProcedureInstance, field:'version')}
    559                                             </td>
    560                                         </tr>
    561 
    562                                         <tr class="prop">
    563                                             <td valign="top" class="name">Last Updated:</td>
    564                                             <td valign="top" class="value">
    565                                                 <g:formatDate date="${taskProcedureInstance.lastUpdated}"
    566                                                                             format="EEE, dd-MMM-yyyy"/>
    567                                             </td>
    568                                         </tr>
    569 
    570                                     </tbody>
    571                                 </table>
    572                             </div>
    573                             <div class="buttons">
    574                                 <g:form controller="taskProcedureDetailed">
    575                                     <input type="hidden" name="id" value="${taskProcedureInstance?.id}" />
    576                                     <span class="button"><g:actionSubmit class="edit" value="Edit" /></span>
    577                                 </g:form>
    578                             </div>
    579 
    580                             <br />
    581 
    582                             <g:if test="${taskProcedureInstance.documentReferences}">
    583                                 <div class="list">
    584                                     <table>
    585                                         <thead>
    586                                             <tr>
    587                                                 <th>Document Reference</th>
    588                                                 <th>Location</th>
    589                                             </tr>
    590                                         </thead>
    591                                         <tbody>
    592                                             <g:each in="${taskProcedureInstance.documentReferences}" status="i" var="docRef">
    593                                                 <tr class="${(i % 2) == 0 ? 'odd' : 'even'}">
    594 
    595                                                     <td valign="top" class="name">
    596                                                         ${fieldValue(bean:docRef, field:'name')}
    597                                                     </td>
    598 
    599                                                     <td  valign="top" style="text-align:left;" class="value">
    600                                                         <custom:easyUrl url="${docRef.location}" />
    601                                                     </td>
    602 
    603                                                 </tr>
    604                                             </g:each>
    605 
    606                                         </tbody>
    607                                     </table>
    608                                 </div>
    609                             </g:if>
    610 
    611                             <br />
    612 
    613                             <div class="list">
    614                                 <table>
    615                                     <thead>
    616                                         <tr>
    617                                             <th>Step</th>
    618                                             <th>Assembly</th>
    619                                             <th>Description</th>
    620                                             <th>Page Ref</th>
    621                                             <th>Condition</th>
    622                                         </tr>
    623                                     </thead>
    624                                     <tbody>
    625                                         <g:each in="${maintenanceActionList}" status="i" var="maintenanceAction">
    626                                             <tr class="${(i % 2) == 0 ? 'odd' : 'even'}">
    627 
    628                                                 <td valign="top" class="name">
    629                                                     ${fieldValue(bean:maintenanceAction, field:'procedureStepNumber')}
    630                                                 </td>
    631 
    632                                                 <td  valign="top" style="text-align:left;" class="value">
    633                                                     <g:if test="${maintenanceAction.assetSubItem}">
    634                                                         ${maintenanceAction.assetSubItem.parentItem?.encodeAsHTML()}
    635                                                         --
    636                                                         ${maintenanceAction.assetSubItem.encodeAsHTML()}
    637                                                     </g:if>
    638                                                 </td>
    639 
    640                                                 <td  valign="top" style="text-align:left;" class="value">
    641                                                     ${fieldValue(bean:maintenanceAction, field:'description')}
    642                                                 </td>
    643 
    644                                                 <td  valign="top" style="text-align:left;" class="value">
    645                                                     ${fieldValue(bean:maintenanceAction, field:'pageRef')}
    646                                                 </td>
    647 
    648                                                 <td  valign="top" style="text-align:left;" class="value">
    649                                                 </td>
    650 
    651                                             </tr>
    652                                         </g:each>
    653 
    654                                     </tbody>
    655                                 </table>
    656                             </div>
    657 
     526                            <g:render template="/taskProcedureDetailed/taskProcedureRevision"
     527                                                model="['taskProcedureRevision':taskProcedureRevision]" />
    658528                        </g:else>
    659529
  • trunk/grails-app/views/taskProcedureDetailed/_taskProcedure.gsp

    r798 r809  
    3131            </tr>
    3232
    33             <g:if test="${taskProcedureInstance.version}">
     33            <g:if test="${taskProcedureInstance.id}">
    3434                <tr class="prop">
    35                     <td valign="top" class="name">Version:</td>
     35                    <td valign="top" class="name">Revisions:</td>
    3636                    <td valign="top" class="value">
    37                             ${fieldValue(bean:taskProcedureInstance, field:'version')}
    38                     </td>
    39                 </tr>
    40 
    41                 <tr class="prop">
    42                     <td valign="top" class="name">Created By:</td>
    43                     <td valign="top" class="value">
    44                             ${fieldValue(bean:taskProcedureInstance, field:'createdBy')}
    45                             on
    46                             <g:formatDate date="${taskProcedureInstance.dateCreated}" format="EEE, dd-MMM-yyyy @ HH:mm"/>
    47                     </td>
    48                 </tr>
    49 
    50                 <tr class="prop">
    51                     <td valign="top" class="name">Last Updated By:</td>
    52                     <td valign="top" class="value">
    53                             ${fieldValue(bean:taskProcedureInstance, field:'lastUpdatedBy')}
    54                             on
    55                             <g:formatDate date="${taskProcedureInstance.lastUpdated}" format="EEE, dd-MMM-yyyy @ HH:mm"/>
     37                        <ul>
     38                        <g:each var="r" in="${taskProcedureInstance.revisions}">
     39                            <li>
     40                                <g:link action="show" id="${taskProcedureInstance.id}" params="['revision':r.revision]">
     41                                    ${r.fullRevisionString.encodeAsHTML()}
     42                                </g:link>
     43                            </li>
     44                        </g:each>
     45                        </ul>
    5646                    </td>
    5747                </tr>
  • trunk/grails-app/views/taskProcedureDetailed/edit.gsp

    r798 r809  
    3131                    <span class="button"><g:actionSubmit class="save" value="Update" /></span>
    3232                    <span class="button"><g:actionSubmit class="cancel" value="Cancel" action="Show"/></span>
    33                     <span class="button"><g:actionSubmit class="delete" onclick="return confirm('Are you sure?');" value="Delete" /></span>
    3433                </div>
    3534            </g:form>
  • trunk/grails-app/views/taskProcedureDetailed/list.gsp

    r798 r809  
    1414        </div>
    1515        <div class="body">
    16             <g:if test="${flash.message}">
    17             <div class="message">${flash.message}</div>
    18             </g:if>
     16            <g:render template="/shared/messages" />
    1917            <filterpane:currentCriteria domainBean="TaskProcedure"
    2018                                    action="list"
Note: See TracChangeset for help on using the changeset viewer.