Changeset 913


Ignore:
Timestamp:
05/01/11 12:46:31 (7 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.