Changeset 913


Ignore:
Timestamp:
May 1, 2011, 12:46:31 PM (13 years ago)
Author:
gav
Message:

Svn merge -r875:r911 branches/features/grailsUpgrade/ into trunk/.

Location:
trunk
Files:
22 edited

Legend:

Unmodified
Added
Removed
  • trunk

  • trunk/application.properties

    r900 r913  
    11#Grails Metadata file
    2 #Thu Jan 27 17:24:52 EST 2011
    3 app.grails.version=1.2.2
     2#Tue Mar 22 15:05:37 EST 2011
     3app.grails.version=1.3.7
    44app.name=gnuMims
    55app.servlet.version=2.4
    66app.vcsRevision=$Rev$
    77app.version=
    8 plugins.acegi=0.5.2
    9 plugins.class-diagram=0.5.1
    10 plugins.export=0.6
    11 plugins.filterpane=0.6.8
    12 plugins.help-balloons=1.3
    13 plugins.hibernate=1.2.2
    14 plugins.jasper=0.9.7
    15 plugins.navigation=1.1.1
    16 plugins.quartz=0.4.2
    17 plugins.richui=0.8
    18 plugins.searchable=0.5.5
    19 plugins.tomcat=1.2.2
     8plugins.hibernate=1.3.7
     9plugins.tomcat=1.3.7
  • trunk/grails-app/conf/BootStrap.groovy

    r814 r913  
    11class BootStrap
    22{
    3 
    4     def sessionFactory // used by isDirty().
    5     def grailsApplication // used by isDirty().
    63    def createDataService
    74
    85    def init = { servletContext ->
    9 
    10         /** Add isDirty() to domainClasses.
    11         * @todo remove after upgrading to Grails-1.3 >.
    12         * See: http://grails.1312388.n4.nabble.com/beforeUpdate-Compare-with-previous-set-value-isDirty-not-working-in-Events-td1695661.html
    13         */
    14         addDirtyCheckMethods()
    156
    167        /** Environment specific settings.
     
    4637    }
    4738
    48    private void addDirtyCheckMethods() {
    49       for (dc in grailsApplication.domainClasses) {
    50          addDirtyCheckMethods dc.clazz.metaClass
    51       }
    52    }
    53 
    54     private void addDirtyCheckMethods(metaClass) {
    55       metaClass.isDirty = { ->
    56          def session = sessionFactory.currentSession
    57          def entry = findEntityEntry(delegate, session)
    58          if (!entry) {
    59             return false
    60          }
    61 
    62          Object[] values = entry.persister.getPropertyValues(delegate, session.entityMode)
    63          def dirtyProperties = entry.persister.findDirty(values, entry.loadedState, delegate, session)
    64          return dirtyProperties != null
    65       }
    66 
    67       metaClass.isDirty = { String fieldName ->
    68          def session = sessionFactory.currentSession
    69          def entry = findEntityEntry(delegate, session)
    70          if (!entry) {
    71             return false
    72          }
    73 
    74          Object[] values = entry.persister.getPropertyValues(delegate, session.entityMode)
    75          int[] dirtyProperties = entry.persister.findDirty(values, entry.loadedState, delegate, session)
    76          int fieldIndex = entry.persister.propertyNames.findIndexOf { fieldName == it }
    77          return fieldIndex in dirtyProperties
    78       }
    79 
    80       metaClass.getDirtyPropertyNames = { ->
    81          def session = sessionFactory.currentSession
    82          def entry = findEntityEntry(delegate, session)
    83          if (!entry) {
    84             return []
    85          }
    86 
    87          Object[] values = entry.persister.getPropertyValues(delegate, session.entityMode)
    88          int[] dirtyProperties = entry.persister.findDirty(values, entry.loadedState, delegate, session)
    89          def names = []
    90          for (index in dirtyProperties) {
    91             names << entry.persister.propertyNames[index]
    92          }
    93          names
    94       }
    95 
    96       metaClass.getPersistentValue = { String fieldName ->
    97          def session = sessionFactory.currentSession
    98          def entry = findEntityEntry(delegate, session, false)
    99          if (!entry) {
    100             return null
    101          }
    102 
    103          int fieldIndex = entry.persister.propertyNames.findIndexOf { fieldName == it }
    104          return fieldIndex == -1 ? null : entry.loadedState[fieldIndex]
    105       }
    106    }
    107 
    108    private findEntityEntry(instance, session, boolean forDirtyCheck = true) {
    109       def entry = session.persistenceContext.getEntry(instance)
    110       if (!entry) {
    111          return null
    112       }
    113 
    114       if (forDirtyCheck && !entry.requiresDirtyCheck(instance) && entry.loadedState) {
    115          return null
    116       }
    117 
    118       entry
    119    }
    120 
    12139} // end class
  • trunk/grails-app/conf/BuildConfig.groovy

    r636 r913  
    11grails.project.class.dir = "target/classes"
    22grails.project.test.class.dir = "target/test-classes"
    3 grails.project.test.reports.dir = "target/test-reports"
     3grails.project.test.reports.dir = "target/test-reports"
    44
    55def env = System.getProperty('grails.env')
     
    88    case "production":
    99        //grails.project.war.file = "target/${appName}-${appVersion}.war"
    10         grails.project.war.file="target/${appName}Live.war"
     10        grails.project.war.file = "target/${appName}Live.war"
    1111        break
    1212    case "development":
    13         grails.project.war.file="target/${appName}Dev.war"
     13        grails.project.war.file = "target/${appName}Dev.war"
    1414        break
    1515    default:
    16         grails.project.war.file="target/${appName}.war"
     16        grails.project.war.file = "target/${appName}.war"
    1717        break
    1818}
    1919
    2020grails.war.resources = { stagingDir, args ->
    21     // Remove some duplicate jars.
    22     delete file: "${stagingDir}/WEB-INF/lib/jasperreports-2.0.5.jar"
    23     delete file: "${stagingDir}/WEB-INF/lib/jasperreports-3.1.2.jar"
    24     delete file: "${stagingDir}/WEB-INF/lib/aspectjrt-1.5.4.jar"
    25     delete file: "${stagingDir}/WEB-INF/lib/commons-digester-1.7.jar"
    26     delete file: "${stagingDir}/WEB-INF/lib/iText-2.0.8.jar"
     21    // Remove some duplicate/not required jars.
     22    // From export plugin lib dir.
    2723    delete file: "${stagingDir}/WEB-INF/lib/iText-2.1.5.jar"
    28     delete file: "${stagingDir}/WEB-INF/lib/jfreechart-1.0.3.jar"
    29     delete file: "${stagingDir}/WEB-INF/lib/poi-3.0.2-FINAL-20080204.jar"
    30     delete file: "${stagingDir}/WEB-INF/lib/facebook-2.0.4.jar"
    31     // Included by searchable plugin.
    32     delete file: "${stagingDir}/WEB-INF/lib/compass-2.1.0.jar"
    33     delete file: "${stagingDir}/WEB-INF/lib/compass-2.1.0-src.jar"
    34     delete file: "${stagingDir}/WEB-INF/lib/lucene-core.jar"
    35     delete file: "${stagingDir}/WEB-INF/lib/lucene-analyzers.jar"
    36     delete file: "${stagingDir}/WEB-INF/lib/lucene-highlighter.jar"
    37     delete file: "${stagingDir}/WEB-INF/lib/lucene-queries.jar"
    38     delete file: "${stagingDir}/WEB-INF/lib/lucene-snowball.jar"
    39     delete file: "${stagingDir}/WEB-INF/lib/lucene-spellchecker.jar"
     24    // From acegi plugin lib dir.
     25    delete file: "${stagingDir}/WEB-INF/lib/facebook-java-api-2.0.4.jar"
     26    delete file: "${stagingDir}/WEB-INF/lib/easymock.jar"
     27    delete file: "${stagingDir}/WEB-INF/lib/cas-client-core-3.1.1.jar"
     28    delete file: "${stagingDir}/WEB-INF/lib/openid4java-0.9.2.jar"
     29
    4030}
    4131
     
    4333
    4434    // inherit Grails' default dependencies
    45     inherits( "global" ) {
     35    inherits("global") {
    4636        // uncomment to disable ehcache
    4737        // excludes 'ehcache'
     
    5141
    5242    repositories {
     43        grailsHome()
    5344        grailsPlugins()
    54         grailsHome()
     45        grailsCentral()
    5546
    5647        // uncomment the below to enable remote dependency resolution
     
    5849        //mavenLocal()
    5950        mavenCentral()
     51        mavenRepo "https://nexus.codehaus.org/content/repositories/snapshots"
    6052        //mavenRepo "http://snapshots.repository.codehaus.org"
    6153        //mavenRepo "http://repository.codehaus.org"
    6254        //mavenRepo "http://download.java.net/maven/2/"
    6355        //mavenRepo "http://repository.jboss.com/maven2/"
     56    }
     57
     58    plugins {
     59        runtime ':acegi:0.5.3'
     60        runtime ':export:0.7'
     61        runtime ':filterpane:0.7'
     62        runtime ':help-balloons:1.4'
     63        runtime(':jasper:1.1.3') {
     64            transitive = false
     65        }
     66        runtime ':navigation:1.1.1'
     67        runtime ':quartz:0.4.2'
     68        runtime ':richui:0.8'
     69        runtime ':searchable:0.6-SNAPSHOT'
     70
     71        test ':geb:0.6-SNAPSHOT'
     72        test ':spock:0.5-groovy-1.7'
    6473    }
    6574
     
    6978        runtime 'mysql:mysql-connector-java:5.1.9'
    7079
    71         runtime ('org.apache.poi:poi:3.5-FINAL') {
    72             excludes 'servlet-api', 'commons-logging', 'log4j'
     80        // Japser plugin.
     81        runtime('net.sf.jasperreports:jasperreports:3.7.2') {
     82            excludes 'antlr', 'commons-beanutils', 'commons-collections', 'commons-logging',
     83                    'ant', 'mondrian', 'commons-javaflow','barbecue', 'xml-apis-ext','xml-apis', 'xalan', 'groovy-all', 'hibernate', 'saaj-api', 'servlet-api',
     84                    'xercesImpl','xmlParserAPIs','spring-core','bsh', 'spring-beans', 'jaxen', 'barcode4j','batik-svg-dom','batik-xml','batik-awt-util','batik-dom',
     85                    'batik-css','batik-gvt','batik-script', 'batik-svggen','batik-util','batik-bridge','persistence-api','jdtcore','bcmail-jdk14','bcprov-jdk14','bctsp-jdk14'
     86        }
     87        runtime('org.apache.poi:poi:3.5-FINAL') {
     88            excludes 'log4j', 'commons-logging'
    7389        }
    7490
    75         runtime ('net.sf.jasperreports:jasperreports:3.7.2') {
     91        // Origin unknown, still required?
     92        runtime('org.apache.ant:ant:1.7.1')
     93        runtime('org.apache.ant:ant-launcher:1.7.1')
     94
     95        test('org.seleniumhq.selenium:selenium-htmlunit-driver:latest.release') {
    7696            excludes 'xml-apis'
    7797        }
    78 
    79         runtime ('org.compass-project:compass:2.1.4')
    80         runtime ('org.apache.lucene:lucene-core:2.4.1')
    81         runtime ('org.apache.lucene:lucene-analyzers:2.4.1')
    82         runtime ('org.apache.lucene:lucene-highlighter:2.4.1')
    83         runtime ('org.apache.lucene:lucene-queries:2.4.1')
    84         runtime ('org.apache.lucene:lucene-snowball:2.4.1')
    85         runtime ('org.apache.lucene:lucene-spellchecker:2.4.1')
    86 
    87         runtime ('org.apache.ant:ant:1.7.1')
    88         runtime ('org.apache.ant:ant-launcher:1.7.1')
    89 
    9098    }
    9199
  • trunk/grails-app/conf/SecurityConfig.groovy

    r532 r913  
    4444    '/plugins/*/css/**': ['IS_AUTHENTICATED_ANONYMOUSLY'],
    4545    '/plugins/*/js/**': ['IS_AUTHENTICATED_ANONYMOUSLY'],
    46     '/classDiagram*': ['IS_AUTHENTICATED_FULLY'],
    47     '/classDiagram/**': ['IS_AUTHENTICATED_FULLY'],
    4846    '/login*': ['IS_AUTHENTICATED_ANONYMOUSLY'],
    4947    '/login/**': ['IS_AUTHENTICATED_ANONYMOUSLY'],
  • trunk/grails-app/controllers/AppCoreController.groovy

    r707 r913  
    5858
    5959        // Build the plugins string.
    60         def pluginProperties = grailsApplication.metadata.findAll {it.key.contains('plugin')}
    61         pluginProperties.each() {
    62             it.key = WordUtils.capitalize( (it.key + GString.EMPTY).split("\\.")[-1] )
    63         }
    64         pluginProperties = pluginProperties.sort { p1, p2 -> p1.key.compareToIgnoreCase(p2.key) }
    65         def plugins = pluginProperties.collect{ it.key + '-' + it.value }.join(", ")
     60        def userPlugins = org.codehaus.groovy.grails.plugins.PluginManagerHolder.pluginManager.userPlugins
     61
     62        userPlugins = userPlugins.sort { p1, p2 -> p1.name.compareToIgnoreCase(p2.name) }
     63
     64        def plugins = userPlugins.collect{
     65            WordUtils.capitalize(it.name) + '-' + it.version
     66        }.join(", ")
    6667
    6768        def sections = Section.findAllByIsActive(true).sort { p1, p2 -> p1.name.compareToIgnoreCase(p2.name) }
  • trunk/grails-app/controllers/AssetDetailedController.groovy

    r749 r913  
    4444    }
    4545
     46    /**
     47    * Build and return the compact asset tree response.
     48    */
     49    @Secured(['ROLE_AppAdmin', 'ROLE_Manager', 'ROLE_AssetManager', 'ROLE_AssetUser'])
     50    def assetTreeCompact = {
     51        def assetInstance = Asset.read(params.id)
     52        if(!assetInstance) {
     53            render g.message(code: 'default.not.found', args: ['Asset',params.id])
     54            return
     55        }
     56
     57        render(template:"/shared/assetTreeCompact", model:['assetInstance':assetInstance])
     58    }
     59
    4660    @Secured(['ROLE_AppAdmin', 'ROLE_Manager', 'ROLE_AssetManager', 'ROLE_AssetUser'])
    4761    def exportAssetTreeHtml = {
     
    150164        if(params?.format && params.format != "html") {
    151165
    152             def dateFmt = { date ->
    153                 formatDate(format: "EEE, dd-MMM-yyyy", date: date)
     166            def dateFmt = { domain, value ->
     167                formatDate(format: "EEE, dd-MMM-yyyy", date: value)
    154168            }
    155169
    156 //             def fmtAsset = { m ->
     170//             def fmtAsset = { d, m ->
    157171//                     def r = ''
    158172//                     def assetInstance = Asset.findByName(m)
     
    170184//             }
    171185
    172 //             def fmtSubAsset = { m ->
     186//             def fmtSubAsset = { d, m ->
    173187//                     def r = ''
    174188//                     m.each() {
  • trunk/grails-app/controllers/AssetSubItemDetailedController.groovy

    r658 r913  
    6060        if(params?.format && params.format != "html") {
    6161
    62             def dateFmt = { date ->
    63                 formatDate(format: "EEE, dd-MMM-yyyy", date: date)
     62            def dateFmt = { domain, value ->
     63                formatDate(format: "EEE, dd-MMM-yyyy", date: value)
    6464            }
    6565
  • trunk/grails-app/controllers/InventoryItemDetailedController.groovy

    r727 r913  
    292292        if(params?.format && params.format != "html") {
    293293
    294             def dateFmt = { date ->
    295                 formatDate(format: "EEE, dd-MMM-yyyy", date: date)
     294            def dateFmt = { domain, value ->
     295                formatDate(format: "EEE, dd-MMM-yyyy", date: value)
    296296            }
    297297
     
    646646        if(params?.format && params.format != "html") {
    647647
    648             def dateFmt = { date ->
    649                 formatDate(format: "EEE, dd-MMM-yyyy", date: date)
     648            def dateFmt = { domain, value ->
     649                formatDate(format: "EEE, dd-MMM-yyyy", date: value)
    650650            }
    651651
  • trunk/grails-app/controllers/InventoryItemPurchaseDetailedController.groovy

    r717 r913  
    142142        if(params?.format && params.format != "html") {
    143143
    144             def dateFmt = { date ->
    145                 formatDate(format: "EEE, dd-MMM-yyyy", date: date)
     144            def dateFmt = { domain, value ->
     145                formatDate(format: "EEE, dd-MMM-yyyy", date: value)
    146146            }
    147147
  • trunk/grails-app/controllers/TaskDetailedController.groovy

    r871 r913  
    147147        if(params?.format && params.format != "html") {
    148148
    149             def dateFmt = { date ->
    150                 formatDate(format: "EEE, dd-MMM-yyyy", date: date)
     149            def dateFmt = { domain, value ->
     150                formatDate(format: "EEE, dd-MMM-yyyy", date: value)
    151151            }
    152152
     
    308308        if(params?.format && params.format != "html") {
    309309
    310             def dateFmt = { date ->
    311                 formatDate(format: "EEE, dd-MMM-yyyy", date: date)
     310            def dateFmt = { domain, value ->
     311                formatDate(format: "EEE, dd-MMM-yyyy", date: value)
    312312            }
    313313
  • trunk/grails-app/controllers/TaskProcedureDetailedController.groovy

    r813 r913  
    1717        params.max = Math.min( params.max ? params.max.toInteger() : 10,  100)
    1818
    19         if(!params.filter)
    20         { return [taskProcedureInstanceList: TaskProcedure.list(params), taskProcedureInstanceTotal: TaskProcedure.count()] }
     19        def taskProcedureInstanceList
     20        def taskProcedureInstanceTotal
     21        def filterParams = com.zeddware.grails.plugins.filterpane.FilterUtils.extractFilterParams(params)
     22
     23        if(params.filter) {
     24            taskProcedureInstanceList = filterService.filter( params, TaskProcedure )
     25            taskProcedureInstanceTotal = filterService.count( params, TaskProcedure )
     26        }
     27        else {
     28            taskProcedureInstanceList = TaskProcedure.list(params)
     29            taskProcedureInstanceTotal = TaskProcedure.count()
     30        }
    2131
    2232        // filterPane:
    23         return[ taskProcedureInstanceList: filterService.filter( params, TaskProcedure ),
    24             taskProcedureInstanceTotal: filterService.count( params, TaskProcedure ),
    25             filterParams: com.zeddware.grails.plugins.filterpane.FilterUtils.extractFilterParams(params),
    26             params:params ]
     33        return[ taskProcedureInstanceList: taskProcedureInstanceList,
     34            taskProcedureInstanceTotal: taskProcedureInstanceTotal,
     35            filterParams: filterParams,
     36            params: params ]
    2737    }
    2838
  • trunk/grails-app/domain/Image.groovy

    r182 r913  
    1313
    1414    static mapping = {
    15         picture index: 'images_index', unique: true
    16         size index: 'images_index', unique: true
    1715        data type: 'binary'
    1816    }
     
    2018    static constraints = {
    2119        data(maxSize: MAX_SIZE)
     20        size(unique:'picture')
    2221    }
    2322
  • trunk/grails-app/views/appCore/manager.gsp

    r746 r913  
    7272                        </tr>
    7373
    74                         <tr class="prop">
    75                             <td valign="top" class="name">
    76                                 <label>Entity Relationship Diagram:</label>
    77                             </td>
    78                             <td valign="top" class="value">
    79 
    80                                 <a href="${createLink(controller:'classDiagram', action:'model', params:[outputFormat: 'pdf', skin: 'classicSpaced', showMethods: 'false', autoUpdate: 'false'])}">PDF</a>
    81                                 <br />
    82                                 <a href="${createLink(controller:'classDiagram', action:'legend', target:'_blank')}">Legend</a>
    83                                 <br />
    84                                 <a href="${createLink(controller:'classDiagram', action:'show')}">Interactive.</a>
    85                             </td>
    86                         </tr>
    87 
    8874                    </tbody>
    8975                </table>
  • trunk/grails-app/views/shared/_assetTreeCompact.gsp

    r798 r913  
    1 
    2 <%--  Fetch to prevent lazy initialization error.  --%>
    3 <% assetInstance = Asset.read(assetInstance?.id)%>
    4 
    51<div class="static_tree">
    6     ${assetInstance?.encodeAsHTML()}
     2    ${assetInstance.encodeAsHTML()}
    73    <div class="static_tree_compact">
    84        <ul>
    9         <g:each var="assetSubItem1" in="${assetInstance?.assetSubItems?.sort { p1, p2 -> p1.name.compareToIgnoreCase(p2.name) } }">
     5        <g:each var="assetSubItem1" in="${assetInstance.assetSubItems?.sort { p1, p2 -> p1.name.compareToIgnoreCase(p2.name) } }">
    106            <li>
    11                 ${assetSubItem1?.encodeAsHTML()}
     7                ${assetSubItem1.encodeAsHTML()}
    128            </li>
    139
     
    1713                <g:each var="assetSubItem2" in="${assetSubItem1.subItems.sort { p1, p2 -> p1.name.compareToIgnoreCase(p2.name) } }">
    1814                    <li>
    19                         ${assetSubItem2?.encodeAsHTML()}
     15                        ${assetSubItem2.encodeAsHTML()}
    2016                    </li>
    2117                </g:each> <!--assetSubItem2-->
  • trunk/grails-app/views/taskDetailed/createUnscheduled.gsp

    r872 r913  
    129129                                    ${taskInstance.taskType.encodeAsHTML()}
    130130                                </td>
    131                             </tr>
    132                        
    133                             <tr class="prop">
    134                                 <td valign="top" class="name">
    135                                     <label for="safetyRequirement">Safety Requirement:</label>
    136                                 </td>
    137                                 <td valign="top" class="value ${hasErrors(bean:taskInstance,field:'safetyRequirement','errors')}">
    138                                     <g:checkBox name="safetyRequirement" value="${taskInstance?.safetyRequirement}" ></g:checkBox>
    139                                     <g:helpBalloon code="task.safetyRequirement" />
    140                                 </td>
    141                             </tr>
    142                        
    143                             <tr class="prop">
    144                                 <td valign="top" class="name">
    145                                     <label for="regulatoryRequirement">Regulatory Requirement:</label>
    146                                 </td>
    147                                 <td valign="top" class="value ${hasErrors(bean:taskInstance,field:'regulatoryRequirement','errors')}">
    148                                     <g:checkBox name="regulatoryRequirement" value="${taskInstance?.regulatoryRequirement}" ></g:checkBox>
    149                                     <g:helpBalloon code="task.regulatoryRequirement" />
    150                                 </td>
    151                             </tr>
    152                        
    153                             <tr class="prop">
    154                                 <td valign="top" class="name">
    155                                     <label for="mandatoryRequirement">Mandatory Requirement:</label>
    156                                 </td>
    157                                 <td valign="top" class="value ${hasErrors(bean:taskInstance,field:'mandatoryRequirement','errors')}">
    158                                     <g:checkBox name="mandatoryRequirement" value="${taskInstance?.mandatoryRequirement}" ></g:checkBox>
    159                                     <g:helpBalloon code="task.mandatoryRequirement" />
    160                                 </td>
    161                             </tr>
     131                            </tr>
     132
     133                            <g:ifAnyGranted role="ROLE_AppAdmin,ROLE_Manager,ROLE_TaskManager">
     134                                <tr class="prop">
     135                                    <td valign="top" class="name">
     136                                        <label for="safetyRequirement">Safety Requirement:</label>
     137                                    </td>
     138                                    <td valign="top" class="value ${hasErrors(bean:taskInstance,field:'safetyRequirement','errors')}">
     139                                        <g:checkBox name="safetyRequirement" value="${taskInstance?.safetyRequirement}" ></g:checkBox>
     140                                        <g:helpBalloon code="task.safetyRequirement" />
     141                                    </td>
     142                                </tr>
     143
     144                                <tr class="prop">
     145                                    <td valign="top" class="name">
     146                                        <label for="regulatoryRequirement">Regulatory Requirement:</label>
     147                                    </td>
     148                                    <td valign="top" class="value ${hasErrors(bean:taskInstance,field:'regulatoryRequirement','errors')}">
     149                                        <g:checkBox name="regulatoryRequirement" value="${taskInstance?.regulatoryRequirement}" ></g:checkBox>
     150                                        <g:helpBalloon code="task.regulatoryRequirement" />
     151                                    </td>
     152                                </tr>
     153
     154                                <tr class="prop">
     155                                    <td valign="top" class="name">
     156                                        <label for="mandatoryRequirement">Mandatory Requirement:</label>
     157                                    </td>
     158                                    <td valign="top" class="value ${hasErrors(bean:taskInstance,field:'mandatoryRequirement','errors')}">
     159                                        <g:checkBox name="mandatoryRequirement" value="${taskInstance?.mandatoryRequirement}" ></g:checkBox>
     160                                        <g:helpBalloon code="task.mandatoryRequirement" />
     161                                    </td>
     162                                </tr>
     163
     164                                <tr class="prop">
     165                                    <td valign="top" class="name">
     166                                        <label for="positiveFault">Positive Fault:</label>
     167                                    </td>
     168                                    <td valign="top" class="value ${hasErrors(bean:taskInstance,field:'positiveFault','errors')}">
     169                                        <g:checkBox name="positiveFault" value="${taskInstance?.positiveFault}" ></g:checkBox>
     170                                        <g:helpBalloon code="task.positiveFault" />
     171                                    </td>
     172                                </tr>
     173                            </g:ifAnyGranted>
    162174                       
    163175                        </tbody>
  • trunk/grails-app/views/taskDetailed/edit.gsp

    r815 r913  
    161161                                </td>
    162162                            </tr>
    163                        
    164                             <tr class="prop">
    165                                 <td valign="top" class="name">
    166                                     <label for="safetyRequirement">Safety Requirement:</label>
    167                                 </td>
    168                                 <td valign="top" class="value ${hasErrors(bean:taskInstance,field:'safetyRequirement','errors')}">
    169                                     <g:checkBox name="safetyRequirement" value="${taskInstance?.safetyRequirement}" ></g:checkBox>
    170                                     <g:helpBalloon code="task.safetyRequirement" />
    171                                 </td>
    172                             </tr>
    173                        
    174                             <tr class="prop">
    175                                 <td valign="top" class="name">
    176                                     <label for="regulatoryRequirement">Regulatory Requirement:</label>
    177                                 </td>
    178                                 <td valign="top" class="value ${hasErrors(bean:taskInstance,field:'regulatoryRequirement','errors')}">
    179                                     <g:checkBox name="regulatoryRequirement" value="${taskInstance?.regulatoryRequirement}" ></g:checkBox>
    180                                     <g:helpBalloon code="task.regulatoryRequirement" />
    181                                 </td>
    182                             </tr>
    183                        
    184                             <tr class="prop">
    185                                 <td valign="top" class="name">
    186                                     <label for="mandatoryRequirement">Mandatory Requirement:</label>
    187                                 </td>
    188                                 <td valign="top" class="value ${hasErrors(bean:taskInstance,field:'mandatoryRequirement','errors')}">
    189                                     <g:checkBox name="mandatoryRequirement" value="${taskInstance?.mandatoryRequirement}" ></g:checkBox>
    190                                     <g:helpBalloon code="task.mandatoryRequirement" />
    191                                 </td>
    192                             </tr>
    193                        
    194                             <tr class="prop">
    195                                 <td valign="top" class="name">
    196                                     <label for="positiveFault">Positive Fault:</label>
    197                                 </td>
    198                                 <td valign="top" class="value ${hasErrors(bean:taskInstance,field:'positiveFault','errors')}">
    199                                     <g:checkBox name="positiveFault" value="${taskInstance?.positiveFault}" ></g:checkBox>
    200                                     <g:helpBalloon code="task.positiveFault" />
    201                                 </td>
    202                             </tr>
     163
     164                            <g:ifAnyGranted role="ROLE_AppAdmin,ROLE_Manager,ROLE_TaskManager">
     165                                <tr class="prop">
     166                                    <td valign="top" class="name">
     167                                        <label for="safetyRequirement">Safety Requirement:</label>
     168                                    </td>
     169                                    <td valign="top" class="value ${hasErrors(bean:taskInstance,field:'safetyRequirement','errors')}">
     170                                        <g:checkBox name="safetyRequirement" value="${taskInstance?.safetyRequirement}" ></g:checkBox>
     171                                        <g:helpBalloon code="task.safetyRequirement" />
     172                                    </td>
     173                                </tr>
     174
     175                                <tr class="prop">
     176                                    <td valign="top" class="name">
     177                                        <label for="regulatoryRequirement">Regulatory Requirement:</label>
     178                                    </td>
     179                                    <td valign="top" class="value ${hasErrors(bean:taskInstance,field:'regulatoryRequirement','errors')}">
     180                                        <g:checkBox name="regulatoryRequirement" value="${taskInstance?.regulatoryRequirement}" ></g:checkBox>
     181                                        <g:helpBalloon code="task.regulatoryRequirement" />
     182                                    </td>
     183                                </tr>
     184
     185                                <tr class="prop">
     186                                    <td valign="top" class="name">
     187                                        <label for="mandatoryRequirement">Mandatory Requirement:</label>
     188                                    </td>
     189                                    <td valign="top" class="value ${hasErrors(bean:taskInstance,field:'mandatoryRequirement','errors')}">
     190                                        <g:checkBox name="mandatoryRequirement" value="${taskInstance?.mandatoryRequirement}" ></g:checkBox>
     191                                        <g:helpBalloon code="task.mandatoryRequirement" />
     192                                    </td>
     193                                </tr>
     194
     195                                <tr class="prop">
     196                                    <td valign="top" class="name">
     197                                        <label for="positiveFault">Positive Fault:</label>
     198                                    </td>
     199                                    <td valign="top" class="value ${hasErrors(bean:taskInstance,field:'positiveFault','errors')}">
     200                                        <g:checkBox name="positiveFault" value="${taskInstance?.positiveFault}" ></g:checkBox>
     201                                        <g:helpBalloon code="task.positiveFault" />
     202                                    </td>
     203                                </tr>
     204                            </g:ifAnyGranted>
    203205
    204206                            <g:if test="${taskInstance.assignedGroups}">
  • trunk/grails-app/views/taskProcedureDetailed/_taskProcedure.gsp

    r809 r913  
    2727                <td valign="top" class="name">Linked Asset:</td>
    2828                <td valign="top" class="value">
    29                     <g:render template="/shared/assetTreeCompact" model="['assetInstance': taskProcedureInstance.linkedTask.primaryAsset]" />
     29                    <g:include controller="assetDetailed" action="assetTreeCompact" id="${taskProcedureInstance.linkedTask.primaryAsset.id}" />
    3030                </td>
    3131            </tr>
  • trunk/grails-app/views/taskProcedureDetailed/_taskProcedureRevision.gsp

    r854 r913  
    2525                        <td valign="top" class="name">Linked Asset:</td>
    2626                        <td valign="top" class="value">
    27                             <g:render template="/shared/assetTreeCompact" model="['assetInstance': taskProcedureRevision.linkedTask.primaryAsset]" />
     27                            <g:include controller="assetDetailed" action="assetTreeCompact" id="${taskProcedureRevision.linkedTask.primaryAsset.id}" />
     28
    2829                        </td>
    2930                    </tr>
  • trunk/grails-app/views/taskProcedureDetailed/list.gsp

    r809 r913  
    3636                            <tr>
    3737
    38                                 <g:sortableColumn property="id" title="Id"  params="${filterParams}" />
     38                                <g:sortableColumn property="id" title="Id" params="${filterParams}" />
    3939                                <th>Description</th>
    4040                                <th>Asset</th>
  • trunk/web-app/WEB-INF/tld/grails.tld

    r449 r913  
    55            http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
    66        version="2.0">
    7     <description>The Grails (Groovy on Rails) custom tag library</description>
     7    <description>The Grails custom tag library</description>
    88    <tlib-version>0.2</tlib-version>
    99    <short-name>grails</short-name>
    1010    <uri>http://grails.codehaus.org/tags</uri>
    11 
    1211
    1312    <tag>
Note: See TracChangeset for help on using the changeset viewer.