Index: /trunk/application.properties
===================================================================
--- /trunk/application.properties	(revision 912)
+++ /trunk/application.properties	(revision 913)
@@ -1,19 +1,9 @@
 #Grails Metadata file
-#Thu Jan 27 17:24:52 EST 2011
-app.grails.version=1.2.2
+#Tue Mar 22 15:05:37 EST 2011
+app.grails.version=1.3.7
 app.name=gnuMims
 app.servlet.version=2.4
 app.vcsRevision=$Rev$
 app.version=
-plugins.acegi=0.5.2
-plugins.class-diagram=0.5.1
-plugins.export=0.6
-plugins.filterpane=0.6.8
-plugins.help-balloons=1.3
-plugins.hibernate=1.2.2
-plugins.jasper=0.9.7
-plugins.navigation=1.1.1
-plugins.quartz=0.4.2
-plugins.richui=0.8
-plugins.searchable=0.5.5
-plugins.tomcat=1.2.2
+plugins.hibernate=1.3.7
+plugins.tomcat=1.3.7
Index: /trunk/grails-app/conf/BootStrap.groovy
===================================================================
--- /trunk/grails-app/conf/BootStrap.groovy	(revision 912)
+++ /trunk/grails-app/conf/BootStrap.groovy	(revision 913)
@@ -1,16 +1,7 @@
 class BootStrap
 {
-
-    def sessionFactory // used by isDirty().
-    def grailsApplication // used by isDirty().
     def createDataService
 
     def init = { servletContext ->
-
-        /** Add isDirty() to domainClasses.
-        * @todo remove after upgrading to Grails-1.3 >.
-        * See: http://grails.1312388.n4.nabble.com/beforeUpdate-Compare-with-previous-set-value-isDirty-not-working-in-Events-td1695661.html
-        */
-        addDirtyCheckMethods()
 
         /** Environment specific settings.
@@ -46,76 +37,3 @@
     }
 
-   private void addDirtyCheckMethods() {
-      for (dc in grailsApplication.domainClasses) {
-         addDirtyCheckMethods dc.clazz.metaClass
-      }
-   }
-
-    private void addDirtyCheckMethods(metaClass) {
-      metaClass.isDirty = { ->
-         def session = sessionFactory.currentSession
-         def entry = findEntityEntry(delegate, session)
-         if (!entry) {
-            return false
-         }
-
-         Object[] values = entry.persister.getPropertyValues(delegate, session.entityMode)
-         def dirtyProperties = entry.persister.findDirty(values, entry.loadedState, delegate, session)
-         return dirtyProperties != null
-      }
-
-      metaClass.isDirty = { String fieldName ->
-         def session = sessionFactory.currentSession
-         def entry = findEntityEntry(delegate, session)
-         if (!entry) {
-            return false
-         }
-
-         Object[] values = entry.persister.getPropertyValues(delegate, session.entityMode)
-         int[] dirtyProperties = entry.persister.findDirty(values, entry.loadedState, delegate, session)
-         int fieldIndex = entry.persister.propertyNames.findIndexOf { fieldName == it }
-         return fieldIndex in dirtyProperties
-      }
-
-      metaClass.getDirtyPropertyNames = { ->
-         def session = sessionFactory.currentSession
-         def entry = findEntityEntry(delegate, session)
-         if (!entry) {
-            return []
-         }
-
-         Object[] values = entry.persister.getPropertyValues(delegate, session.entityMode)
-         int[] dirtyProperties = entry.persister.findDirty(values, entry.loadedState, delegate, session)
-         def names = []
-         for (index in dirtyProperties) {
-            names << entry.persister.propertyNames[index]
-         }
-         names
-      }
-
-      metaClass.getPersistentValue = { String fieldName ->
-         def session = sessionFactory.currentSession
-         def entry = findEntityEntry(delegate, session, false)
-         if (!entry) {
-            return null
-         }
-
-         int fieldIndex = entry.persister.propertyNames.findIndexOf { fieldName == it }
-         return fieldIndex == -1 ? null : entry.loadedState[fieldIndex]
-      }
-   }
-
-   private findEntityEntry(instance, session, boolean forDirtyCheck = true) {
-      def entry = session.persistenceContext.getEntry(instance)
-      if (!entry) {
-         return null
-      }
-
-      if (forDirtyCheck && !entry.requiresDirtyCheck(instance) && entry.loadedState) {
-         return null
-      }
-
-      entry
-   }
-
 } // end class
Index: /trunk/grails-app/conf/BuildConfig.groovy
===================================================================
--- /trunk/grails-app/conf/BuildConfig.groovy	(revision 912)
+++ /trunk/grails-app/conf/BuildConfig.groovy	(revision 913)
@@ -1,5 +1,5 @@
 grails.project.class.dir = "target/classes"
 grails.project.test.class.dir = "target/test-classes"
-grails.project.test.reports.dir	= "target/test-reports"
+grails.project.test.reports.dir = "target/test-reports"
 
 def env = System.getProperty('grails.env')
@@ -8,34 +8,24 @@
     case "production":
         //grails.project.war.file = "target/${appName}-${appVersion}.war"
-        grails.project.war.file="target/${appName}Live.war"
+        grails.project.war.file = "target/${appName}Live.war"
         break
     case "development":
-        grails.project.war.file="target/${appName}Dev.war"
+        grails.project.war.file = "target/${appName}Dev.war"
         break
     default:
-        grails.project.war.file="target/${appName}.war"
+        grails.project.war.file = "target/${appName}.war"
         break
 }
 
 grails.war.resources = { stagingDir, args ->
-    // Remove some duplicate jars.
-    delete file: "${stagingDir}/WEB-INF/lib/jasperreports-2.0.5.jar"
-    delete file: "${stagingDir}/WEB-INF/lib/jasperreports-3.1.2.jar"
-    delete file: "${stagingDir}/WEB-INF/lib/aspectjrt-1.5.4.jar"
-    delete file: "${stagingDir}/WEB-INF/lib/commons-digester-1.7.jar"
-    delete file: "${stagingDir}/WEB-INF/lib/iText-2.0.8.jar"
+    // Remove some duplicate/not required jars.
+    // From export plugin lib dir.
     delete file: "${stagingDir}/WEB-INF/lib/iText-2.1.5.jar"
-    delete file: "${stagingDir}/WEB-INF/lib/jfreechart-1.0.3.jar"
-    delete file: "${stagingDir}/WEB-INF/lib/poi-3.0.2-FINAL-20080204.jar"
-    delete file: "${stagingDir}/WEB-INF/lib/facebook-2.0.4.jar"
-    // Included by searchable plugin.
-    delete file: "${stagingDir}/WEB-INF/lib/compass-2.1.0.jar"
-    delete file: "${stagingDir}/WEB-INF/lib/compass-2.1.0-src.jar"
-    delete file: "${stagingDir}/WEB-INF/lib/lucene-core.jar"
-    delete file: "${stagingDir}/WEB-INF/lib/lucene-analyzers.jar"
-    delete file: "${stagingDir}/WEB-INF/lib/lucene-highlighter.jar"
-    delete file: "${stagingDir}/WEB-INF/lib/lucene-queries.jar"
-    delete file: "${stagingDir}/WEB-INF/lib/lucene-snowball.jar"
-    delete file: "${stagingDir}/WEB-INF/lib/lucene-spellchecker.jar"
+    // From acegi plugin lib dir.
+    delete file: "${stagingDir}/WEB-INF/lib/facebook-java-api-2.0.4.jar"
+    delete file: "${stagingDir}/WEB-INF/lib/easymock.jar"
+    delete file: "${stagingDir}/WEB-INF/lib/cas-client-core-3.1.1.jar"
+    delete file: "${stagingDir}/WEB-INF/lib/openid4java-0.9.2.jar"
+
 }
 
@@ -43,5 +33,5 @@
 
     // inherit Grails' default dependencies
-    inherits( "global" ) {
+    inherits("global") {
         // uncomment to disable ehcache
         // excludes 'ehcache'
@@ -51,6 +41,7 @@
 
     repositories {
+        grailsHome()
         grailsPlugins()
-        grailsHome()
+        grailsCentral()
 
         // uncomment the below to enable remote dependency resolution
@@ -58,8 +49,26 @@
         //mavenLocal()
         mavenCentral()
+        mavenRepo "https://nexus.codehaus.org/content/repositories/snapshots"
         //mavenRepo "http://snapshots.repository.codehaus.org"
         //mavenRepo "http://repository.codehaus.org"
         //mavenRepo "http://download.java.net/maven/2/"
         //mavenRepo "http://repository.jboss.com/maven2/"
+    }
+
+    plugins {
+        runtime ':acegi:0.5.3'
+        runtime ':export:0.7'
+        runtime ':filterpane:0.7'
+        runtime ':help-balloons:1.4'
+        runtime(':jasper:1.1.3') {
+            transitive = false
+        }
+        runtime ':navigation:1.1.1'
+        runtime ':quartz:0.4.2'
+        runtime ':richui:0.8'
+        runtime ':searchable:0.6-SNAPSHOT'
+
+        test ':geb:0.6-SNAPSHOT'
+        test ':spock:0.5-groovy-1.7'
     }
 
@@ -69,23 +78,22 @@
         runtime 'mysql:mysql-connector-java:5.1.9'
 
-        runtime ('org.apache.poi:poi:3.5-FINAL') {
-            excludes 'servlet-api', 'commons-logging', 'log4j'
+        // Japser plugin.
+        runtime('net.sf.jasperreports:jasperreports:3.7.2') {
+            excludes 'antlr', 'commons-beanutils', 'commons-collections', 'commons-logging',
+                    'ant', 'mondrian', 'commons-javaflow','barbecue', 'xml-apis-ext','xml-apis', 'xalan', 'groovy-all', 'hibernate', 'saaj-api', 'servlet-api',
+                    'xercesImpl','xmlParserAPIs','spring-core','bsh', 'spring-beans', 'jaxen', 'barcode4j','batik-svg-dom','batik-xml','batik-awt-util','batik-dom',
+                    'batik-css','batik-gvt','batik-script', 'batik-svggen','batik-util','batik-bridge','persistence-api','jdtcore','bcmail-jdk14','bcprov-jdk14','bctsp-jdk14'
+        }
+        runtime('org.apache.poi:poi:3.5-FINAL') {
+            excludes 'log4j', 'commons-logging'
         }
 
-        runtime ('net.sf.jasperreports:jasperreports:3.7.2') {
+        // Origin unknown, still required?
+        runtime('org.apache.ant:ant:1.7.1')
+        runtime('org.apache.ant:ant-launcher:1.7.1')
+
+        test('org.seleniumhq.selenium:selenium-htmlunit-driver:latest.release') {
             excludes 'xml-apis'
         }
-
-        runtime ('org.compass-project:compass:2.1.4')
-        runtime ('org.apache.lucene:lucene-core:2.4.1')
-        runtime ('org.apache.lucene:lucene-analyzers:2.4.1')
-        runtime ('org.apache.lucene:lucene-highlighter:2.4.1')
-        runtime ('org.apache.lucene:lucene-queries:2.4.1')
-        runtime ('org.apache.lucene:lucene-snowball:2.4.1')
-        runtime ('org.apache.lucene:lucene-spellchecker:2.4.1')
-
-        runtime ('org.apache.ant:ant:1.7.1')
-        runtime ('org.apache.ant:ant-launcher:1.7.1')
-
     }
 
Index: /trunk/grails-app/conf/SecurityConfig.groovy
===================================================================
--- /trunk/grails-app/conf/SecurityConfig.groovy	(revision 912)
+++ /trunk/grails-app/conf/SecurityConfig.groovy	(revision 913)
@@ -44,6 +44,4 @@
     '/plugins/*/css/**': ['IS_AUTHENTICATED_ANONYMOUSLY'],
     '/plugins/*/js/**': ['IS_AUTHENTICATED_ANONYMOUSLY'],
-    '/classDiagram*': ['IS_AUTHENTICATED_FULLY'],
-    '/classDiagram/**': ['IS_AUTHENTICATED_FULLY'],
     '/login*': ['IS_AUTHENTICATED_ANONYMOUSLY'],
     '/login/**': ['IS_AUTHENTICATED_ANONYMOUSLY'],
Index: /trunk/grails-app/controllers/AppCoreController.groovy
===================================================================
--- /trunk/grails-app/controllers/AppCoreController.groovy	(revision 912)
+++ /trunk/grails-app/controllers/AppCoreController.groovy	(revision 913)
@@ -58,10 +58,11 @@
 
         // Build the plugins string.
-        def pluginProperties = grailsApplication.metadata.findAll {it.key.contains('plugin')}
-        pluginProperties.each() {
-            it.key = WordUtils.capitalize( (it.key + GString.EMPTY).split("\\.")[-1] )
-        }
-        pluginProperties = pluginProperties.sort { p1, p2 -> p1.key.compareToIgnoreCase(p2.key) }
-        def plugins = pluginProperties.collect{ it.key + '-' + it.value }.join(", ")
+        def userPlugins = org.codehaus.groovy.grails.plugins.PluginManagerHolder.pluginManager.userPlugins 
+
+        userPlugins = userPlugins.sort { p1, p2 -> p1.name.compareToIgnoreCase(p2.name) }
+
+        def plugins = userPlugins.collect{
+            WordUtils.capitalize(it.name) + '-' + it.version
+        }.join(", ")
 
         def sections = Section.findAllByIsActive(true).sort { p1, p2 -> p1.name.compareToIgnoreCase(p2.name) }
Index: /trunk/grails-app/controllers/AssetDetailedController.groovy
===================================================================
--- /trunk/grails-app/controllers/AssetDetailedController.groovy	(revision 912)
+++ /trunk/grails-app/controllers/AssetDetailedController.groovy	(revision 913)
@@ -44,4 +44,18 @@
     }
 
+    /**
+    * Build and return the compact asset tree response.
+    */
+    @Secured(['ROLE_AppAdmin', 'ROLE_Manager', 'ROLE_AssetManager', 'ROLE_AssetUser'])
+    def assetTreeCompact = {
+        def assetInstance = Asset.read(params.id)
+        if(!assetInstance) {
+            render g.message(code: 'default.not.found', args: ['Asset',params.id])
+            return
+        }
+
+        render(template:"/shared/assetTreeCompact", model:['assetInstance':assetInstance])
+    }
+
     @Secured(['ROLE_AppAdmin', 'ROLE_Manager', 'ROLE_AssetManager', 'ROLE_AssetUser'])
     def exportAssetTreeHtml = {
@@ -150,9 +164,9 @@
         if(params?.format && params.format != "html") {
 
-            def dateFmt = { date ->
-                formatDate(format: "EEE, dd-MMM-yyyy", date: date)
+            def dateFmt = { domain, value ->
+                formatDate(format: "EEE, dd-MMM-yyyy", date: value)
             }
 
-//             def fmtAsset = { m ->
+//             def fmtAsset = { d, m ->
 //                     def r = ''
 //                     def assetInstance = Asset.findByName(m)
@@ -170,5 +184,5 @@
 //             }
 
-//             def fmtSubAsset = { m ->
+//             def fmtSubAsset = { d, m ->
 //                     def r = ''
 //                     m.each() {
Index: /trunk/grails-app/controllers/AssetSubItemDetailedController.groovy
===================================================================
--- /trunk/grails-app/controllers/AssetSubItemDetailedController.groovy	(revision 912)
+++ /trunk/grails-app/controllers/AssetSubItemDetailedController.groovy	(revision 913)
@@ -60,6 +60,6 @@
         if(params?.format && params.format != "html") {
 
-            def dateFmt = { date ->
-                formatDate(format: "EEE, dd-MMM-yyyy", date: date)
+            def dateFmt = { domain, value ->
+                formatDate(format: "EEE, dd-MMM-yyyy", date: value)
             }
 
Index: /trunk/grails-app/controllers/InventoryItemDetailedController.groovy
===================================================================
--- /trunk/grails-app/controllers/InventoryItemDetailedController.groovy	(revision 912)
+++ /trunk/grails-app/controllers/InventoryItemDetailedController.groovy	(revision 913)
@@ -292,6 +292,6 @@
         if(params?.format && params.format != "html") {
 
-            def dateFmt = { date ->
-                formatDate(format: "EEE, dd-MMM-yyyy", date: date)
+            def dateFmt = { domain, value ->
+                formatDate(format: "EEE, dd-MMM-yyyy", date: value)
             }
 
@@ -646,6 +646,6 @@
         if(params?.format && params.format != "html") {
 
-            def dateFmt = { date ->
-                formatDate(format: "EEE, dd-MMM-yyyy", date: date)
+            def dateFmt = { domain, value ->
+                formatDate(format: "EEE, dd-MMM-yyyy", date: value)
             }
 
Index: /trunk/grails-app/controllers/InventoryItemPurchaseDetailedController.groovy
===================================================================
--- /trunk/grails-app/controllers/InventoryItemPurchaseDetailedController.groovy	(revision 912)
+++ /trunk/grails-app/controllers/InventoryItemPurchaseDetailedController.groovy	(revision 913)
@@ -142,6 +142,6 @@
         if(params?.format && params.format != "html") {
 
-            def dateFmt = { date ->
-                formatDate(format: "EEE, dd-MMM-yyyy", date: date)
+            def dateFmt = { domain, value ->
+                formatDate(format: "EEE, dd-MMM-yyyy", date: value)
             }
 
Index: /trunk/grails-app/controllers/TaskDetailedController.groovy
===================================================================
--- /trunk/grails-app/controllers/TaskDetailedController.groovy	(revision 912)
+++ /trunk/grails-app/controllers/TaskDetailedController.groovy	(revision 913)
@@ -147,6 +147,6 @@
         if(params?.format && params.format != "html") {
 
-            def dateFmt = { date ->
-                formatDate(format: "EEE, dd-MMM-yyyy", date: date)
+            def dateFmt = { domain, value ->
+                formatDate(format: "EEE, dd-MMM-yyyy", date: value)
             }
 
@@ -308,6 +308,6 @@
         if(params?.format && params.format != "html") {
 
-            def dateFmt = { date ->
-                formatDate(format: "EEE, dd-MMM-yyyy", date: date)
+            def dateFmt = { domain, value ->
+                formatDate(format: "EEE, dd-MMM-yyyy", date: value)
             }
 
Index: /trunk/grails-app/controllers/TaskProcedureDetailedController.groovy
===================================================================
--- /trunk/grails-app/controllers/TaskProcedureDetailedController.groovy	(revision 912)
+++ /trunk/grails-app/controllers/TaskProcedureDetailedController.groovy	(revision 913)
@@ -17,12 +17,22 @@
         params.max = Math.min( params.max ? params.max.toInteger() : 10,  100)
 
-        if(!params.filter)
-        { return [taskProcedureInstanceList: TaskProcedure.list(params), taskProcedureInstanceTotal: TaskProcedure.count()] }
+        def taskProcedureInstanceList
+        def taskProcedureInstanceTotal
+        def filterParams = com.zeddware.grails.plugins.filterpane.FilterUtils.extractFilterParams(params)
+
+        if(params.filter) {
+            taskProcedureInstanceList = filterService.filter( params, TaskProcedure )
+            taskProcedureInstanceTotal = filterService.count( params, TaskProcedure )
+        }
+        else {
+            taskProcedureInstanceList = TaskProcedure.list(params)
+            taskProcedureInstanceTotal = TaskProcedure.count()
+        }
 
         // filterPane:
-        return[ taskProcedureInstanceList: filterService.filter( params, TaskProcedure ),
-            taskProcedureInstanceTotal: filterService.count( params, TaskProcedure ),
-            filterParams: com.zeddware.grails.plugins.filterpane.FilterUtils.extractFilterParams(params),
-            params:params ]
+        return[ taskProcedureInstanceList: taskProcedureInstanceList,
+            taskProcedureInstanceTotal: taskProcedureInstanceTotal,
+            filterParams: filterParams,
+            params: params ]
     }
 
Index: /trunk/grails-app/domain/Image.groovy
===================================================================
--- /trunk/grails-app/domain/Image.groovy	(revision 912)
+++ /trunk/grails-app/domain/Image.groovy	(revision 913)
@@ -13,6 +13,4 @@
 
     static mapping = {
-        picture index: 'images_index', unique: true
-        size index: 'images_index', unique: true
         data type: 'binary'
     }
@@ -20,4 +18,5 @@
     static constraints = {
         data(maxSize: MAX_SIZE)
+        size(unique:'picture')
     }
 
Index: /trunk/grails-app/views/appCore/manager.gsp
===================================================================
--- /trunk/grails-app/views/appCore/manager.gsp	(revision 912)
+++ /trunk/grails-app/views/appCore/manager.gsp	(revision 913)
@@ -72,18 +72,4 @@
                         </tr>
 
-                        <tr class="prop">
-                            <td valign="top" class="name">
-                                <label>Entity Relationship Diagram:</label>
-                            </td>
-                            <td valign="top" class="value">
-
-                                <a href="${createLink(controller:'classDiagram', action:'model', params:[outputFormat: 'pdf', skin: 'classicSpaced', showMethods: 'false', autoUpdate: 'false'])}">PDF</a>
-                                <br />
-                                <a href="${createLink(controller:'classDiagram', action:'legend', target:'_blank')}">Legend</a>
-                                <br />
-                                <a href="${createLink(controller:'classDiagram', action:'show')}">Interactive.</a>
-                            </td>
-                        </tr>
-
                     </tbody>
                 </table>
Index: /trunk/grails-app/views/shared/_assetTreeCompact.gsp
===================================================================
--- /trunk/grails-app/views/shared/_assetTreeCompact.gsp	(revision 912)
+++ /trunk/grails-app/views/shared/_assetTreeCompact.gsp	(revision 913)
@@ -1,13 +1,9 @@
-
-<%--  Fetch to prevent lazy initialization error.  --%>
-<% assetInstance = Asset.read(assetInstance?.id)%>
-
 <div class="static_tree">
-    ${assetInstance?.encodeAsHTML()}
+    ${assetInstance.encodeAsHTML()}
     <div class="static_tree_compact">
         <ul>
-        <g:each var="assetSubItem1" in="${assetInstance?.assetSubItems?.sort { p1, p2 -> p1.name.compareToIgnoreCase(p2.name) } }">
+        <g:each var="assetSubItem1" in="${assetInstance.assetSubItems?.sort { p1, p2 -> p1.name.compareToIgnoreCase(p2.name) } }">
             <li>
-                ${assetSubItem1?.encodeAsHTML()}
+                ${assetSubItem1.encodeAsHTML()}
             </li>
 
@@ -17,5 +13,5 @@
                 <g:each var="assetSubItem2" in="${assetSubItem1.subItems.sort { p1, p2 -> p1.name.compareToIgnoreCase(p2.name) } }">
                     <li>
-                        ${assetSubItem2?.encodeAsHTML()}
+                        ${assetSubItem2.encodeAsHTML()}
                     </li>
                 </g:each> <!--assetSubItem2-->
Index: /trunk/grails-app/views/taskDetailed/createUnscheduled.gsp
===================================================================
--- /trunk/grails-app/views/taskDetailed/createUnscheduled.gsp	(revision 912)
+++ /trunk/grails-app/views/taskDetailed/createUnscheduled.gsp	(revision 913)
@@ -129,35 +129,47 @@
                                     ${taskInstance.taskType.encodeAsHTML()}
                                 </td>
-                            </tr> 
-                        
-                            <tr class="prop">
-                                <td valign="top" class="name">
-                                    <label for="safetyRequirement">Safety Requirement:</label>
-                                </td>
-                                <td valign="top" class="value ${hasErrors(bean:taskInstance,field:'safetyRequirement','errors')}">
-                                    <g:checkBox name="safetyRequirement" value="${taskInstance?.safetyRequirement}" ></g:checkBox>
-                                    <g:helpBalloon code="task.safetyRequirement" />
-                                </td>
-                            </tr> 
-                        
-                            <tr class="prop">
-                                <td valign="top" class="name">
-                                    <label for="regulatoryRequirement">Regulatory Requirement:</label>
-                                </td>
-                                <td valign="top" class="value ${hasErrors(bean:taskInstance,field:'regulatoryRequirement','errors')}">
-                                    <g:checkBox name="regulatoryRequirement" value="${taskInstance?.regulatoryRequirement}" ></g:checkBox>
-                                    <g:helpBalloon code="task.regulatoryRequirement" />
-                                </td>
-                            </tr> 
-                        
-                            <tr class="prop">
-                                <td valign="top" class="name">
-                                    <label for="mandatoryRequirement">Mandatory Requirement:</label>
-                                </td>
-                                <td valign="top" class="value ${hasErrors(bean:taskInstance,field:'mandatoryRequirement','errors')}">
-                                    <g:checkBox name="mandatoryRequirement" value="${taskInstance?.mandatoryRequirement}" ></g:checkBox>
-                                    <g:helpBalloon code="task.mandatoryRequirement" />
-                                </td>
-                            </tr> 
+                            </tr>
+
+                            <g:ifAnyGranted role="ROLE_AppAdmin,ROLE_Manager,ROLE_TaskManager">
+                                <tr class="prop">
+                                    <td valign="top" class="name">
+                                        <label for="safetyRequirement">Safety Requirement:</label>
+                                    </td>
+                                    <td valign="top" class="value ${hasErrors(bean:taskInstance,field:'safetyRequirement','errors')}">
+                                        <g:checkBox name="safetyRequirement" value="${taskInstance?.safetyRequirement}" ></g:checkBox>
+                                        <g:helpBalloon code="task.safetyRequirement" />
+                                    </td>
+                                </tr>
+
+                                <tr class="prop">
+                                    <td valign="top" class="name">
+                                        <label for="regulatoryRequirement">Regulatory Requirement:</label>
+                                    </td>
+                                    <td valign="top" class="value ${hasErrors(bean:taskInstance,field:'regulatoryRequirement','errors')}">
+                                        <g:checkBox name="regulatoryRequirement" value="${taskInstance?.regulatoryRequirement}" ></g:checkBox>
+                                        <g:helpBalloon code="task.regulatoryRequirement" />
+                                    </td>
+                                </tr>
+
+                                <tr class="prop">
+                                    <td valign="top" class="name">
+                                        <label for="mandatoryRequirement">Mandatory Requirement:</label>
+                                    </td>
+                                    <td valign="top" class="value ${hasErrors(bean:taskInstance,field:'mandatoryRequirement','errors')}">
+                                        <g:checkBox name="mandatoryRequirement" value="${taskInstance?.mandatoryRequirement}" ></g:checkBox>
+                                        <g:helpBalloon code="task.mandatoryRequirement" />
+                                    </td>
+                                </tr>
+
+                                <tr class="prop">
+                                    <td valign="top" class="name">
+                                        <label for="positiveFault">Positive Fault:</label>
+                                    </td>
+                                    <td valign="top" class="value ${hasErrors(bean:taskInstance,field:'positiveFault','errors')}">
+                                        <g:checkBox name="positiveFault" value="${taskInstance?.positiveFault}" ></g:checkBox>
+                                        <g:helpBalloon code="task.positiveFault" />
+                                    </td>
+                                </tr>
+                            </g:ifAnyGranted>
                         
                         </tbody>
Index: /trunk/grails-app/views/taskDetailed/edit.gsp
===================================================================
--- /trunk/grails-app/views/taskDetailed/edit.gsp	(revision 912)
+++ /trunk/grails-app/views/taskDetailed/edit.gsp	(revision 913)
@@ -161,44 +161,46 @@
                                 </td>
                             </tr>
-                        
-                            <tr class="prop">
-                                <td valign="top" class="name">
-                                    <label for="safetyRequirement">Safety Requirement:</label>
-                                </td>
-                                <td valign="top" class="value ${hasErrors(bean:taskInstance,field:'safetyRequirement','errors')}">
-                                    <g:checkBox name="safetyRequirement" value="${taskInstance?.safetyRequirement}" ></g:checkBox>
-                                    <g:helpBalloon code="task.safetyRequirement" />
-                                </td>
-                            </tr> 
-                        
-                            <tr class="prop">
-                                <td valign="top" class="name">
-                                    <label for="regulatoryRequirement">Regulatory Requirement:</label>
-                                </td>
-                                <td valign="top" class="value ${hasErrors(bean:taskInstance,field:'regulatoryRequirement','errors')}">
-                                    <g:checkBox name="regulatoryRequirement" value="${taskInstance?.regulatoryRequirement}" ></g:checkBox>
-                                    <g:helpBalloon code="task.regulatoryRequirement" />
-                                </td>
-                            </tr> 
-                        
-                            <tr class="prop">
-                                <td valign="top" class="name">
-                                    <label for="mandatoryRequirement">Mandatory Requirement:</label>
-                                </td>
-                                <td valign="top" class="value ${hasErrors(bean:taskInstance,field:'mandatoryRequirement','errors')}">
-                                    <g:checkBox name="mandatoryRequirement" value="${taskInstance?.mandatoryRequirement}" ></g:checkBox>
-                                    <g:helpBalloon code="task.mandatoryRequirement" />
-                                </td>
-                            </tr> 
-                        
-                            <tr class="prop">
-                                <td valign="top" class="name">
-                                    <label for="positiveFault">Positive Fault:</label>
-                                </td>
-                                <td valign="top" class="value ${hasErrors(bean:taskInstance,field:'positiveFault','errors')}">
-                                    <g:checkBox name="positiveFault" value="${taskInstance?.positiveFault}" ></g:checkBox>
-                                    <g:helpBalloon code="task.positiveFault" />
-                                </td>
-                            </tr> 
+
+                            <g:ifAnyGranted role="ROLE_AppAdmin,ROLE_Manager,ROLE_TaskManager">
+                                <tr class="prop">
+                                    <td valign="top" class="name">
+                                        <label for="safetyRequirement">Safety Requirement:</label>
+                                    </td>
+                                    <td valign="top" class="value ${hasErrors(bean:taskInstance,field:'safetyRequirement','errors')}">
+                                        <g:checkBox name="safetyRequirement" value="${taskInstance?.safetyRequirement}" ></g:checkBox>
+                                        <g:helpBalloon code="task.safetyRequirement" />
+                                    </td>
+                                </tr>
+
+                                <tr class="prop">
+                                    <td valign="top" class="name">
+                                        <label for="regulatoryRequirement">Regulatory Requirement:</label>
+                                    </td>
+                                    <td valign="top" class="value ${hasErrors(bean:taskInstance,field:'regulatoryRequirement','errors')}">
+                                        <g:checkBox name="regulatoryRequirement" value="${taskInstance?.regulatoryRequirement}" ></g:checkBox>
+                                        <g:helpBalloon code="task.regulatoryRequirement" />
+                                    </td>
+                                </tr>
+
+                                <tr class="prop">
+                                    <td valign="top" class="name">
+                                        <label for="mandatoryRequirement">Mandatory Requirement:</label>
+                                    </td>
+                                    <td valign="top" class="value ${hasErrors(bean:taskInstance,field:'mandatoryRequirement','errors')}">
+                                        <g:checkBox name="mandatoryRequirement" value="${taskInstance?.mandatoryRequirement}" ></g:checkBox>
+                                        <g:helpBalloon code="task.mandatoryRequirement" />
+                                    </td>
+                                </tr>
+
+                                <tr class="prop">
+                                    <td valign="top" class="name">
+                                        <label for="positiveFault">Positive Fault:</label>
+                                    </td>
+                                    <td valign="top" class="value ${hasErrors(bean:taskInstance,field:'positiveFault','errors')}">
+                                        <g:checkBox name="positiveFault" value="${taskInstance?.positiveFault}" ></g:checkBox>
+                                        <g:helpBalloon code="task.positiveFault" />
+                                    </td>
+                                </tr>
+                            </g:ifAnyGranted>
 
                             <g:if test="${taskInstance.assignedGroups}">
Index: /trunk/grails-app/views/taskProcedureDetailed/_taskProcedure.gsp
===================================================================
--- /trunk/grails-app/views/taskProcedureDetailed/_taskProcedure.gsp	(revision 912)
+++ /trunk/grails-app/views/taskProcedureDetailed/_taskProcedure.gsp	(revision 913)
@@ -27,5 +27,5 @@
                 <td valign="top" class="name">Linked Asset:</td>
                 <td valign="top" class="value">
-                    <g:render template="/shared/assetTreeCompact" model="['assetInstance': taskProcedureInstance.linkedTask.primaryAsset]" />
+                    <g:include controller="assetDetailed" action="assetTreeCompact" id="${taskProcedureInstance.linkedTask.primaryAsset.id}" />
                 </td>
             </tr>
Index: /trunk/grails-app/views/taskProcedureDetailed/_taskProcedureRevision.gsp
===================================================================
--- /trunk/grails-app/views/taskProcedureDetailed/_taskProcedureRevision.gsp	(revision 912)
+++ /trunk/grails-app/views/taskProcedureDetailed/_taskProcedureRevision.gsp	(revision 913)
@@ -25,5 +25,6 @@
                         <td valign="top" class="name">Linked Asset:</td>
                         <td valign="top" class="value">
-                            <g:render template="/shared/assetTreeCompact" model="['assetInstance': taskProcedureRevision.linkedTask.primaryAsset]" />
+                            <g:include controller="assetDetailed" action="assetTreeCompact" id="${taskProcedureRevision.linkedTask.primaryAsset.id}" />
+
                         </td>
                     </tr>
Index: /trunk/grails-app/views/taskProcedureDetailed/list.gsp
===================================================================
--- /trunk/grails-app/views/taskProcedureDetailed/list.gsp	(revision 912)
+++ /trunk/grails-app/views/taskProcedureDetailed/list.gsp	(revision 913)
@@ -36,5 +36,5 @@
                             <tr>
 
-                                <g:sortableColumn property="id" title="Id"  params="${filterParams}" />
+                                <g:sortableColumn property="id" title="Id" params="${filterParams}" />
                                 <th>Description</th>
                                 <th>Asset</th>
Index: /trunk/web-app/WEB-INF/tld/grails.tld
===================================================================
--- /trunk/web-app/WEB-INF/tld/grails.tld	(revision 912)
+++ /trunk/web-app/WEB-INF/tld/grails.tld	(revision 913)
@@ -5,9 +5,8 @@
             http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
         version="2.0">
-    <description>The Grails (Groovy on Rails) custom tag library</description>
+    <description>The Grails custom tag library</description>
     <tlib-version>0.2</tlib-version>
     <short-name>grails</short-name>
     <uri>http://grails.codehaus.org/tags</uri>
-
 
     <tag>
