Index: trunk/grails-app/controllers/AppCoreController.groovy
===================================================================
--- trunk/grails-app/controllers/AppCoreController.groovy	(revision 352)
+++ trunk/grails-app/controllers/AppCoreController.groovy	(revision 358)
@@ -1,3 +1,4 @@
 import org.codehaus.groovy.grails.plugins.springsecurity.Secured
+import org.codehaus.groovy.grails.commons.*
 
 /**
@@ -193,3 +194,14 @@
     }
 
+    /**
+    * Render the application log file.
+    */
+    @Secured(['ROLE_AppAdmin'])
+    def appLog = {
+        def file = new File(ConfigurationHolder.config.log4j.appenders.appLog.file)
+
+        // Success.
+        [log: file.text]
+    }
+
 } // end of class.
Index: trunk/grails-app/controllers/SectionDetailedController.groovy
===================================================================
--- trunk/grails-app/controllers/SectionDetailedController.groovy	(revision 352)
+++ trunk/grails-app/controllers/SectionDetailedController.groovy	(revision 358)
@@ -3,4 +3,6 @@
 @Secured(['ROLE_AppAdmin', 'ROLE_Manager', 'ROLE_AssetManager'])
 class SectionDetailedController extends BaseController {
+
+    def sectionService
 
     // the delete, save and update actions only accept POST requests
@@ -29,20 +31,20 @@
     @Secured(['ROLE_AppAdmin'])
     def delete = {
-        def sectionInstance = Section.get( params.id )
-        if(sectionInstance) {
-            try {
-                sectionInstance.delete(flush:true)
-                flash.message = "Section ${params.id} deleted"
-                redirect(action:list)
-            }
-            catch(org.springframework.dao.DataIntegrityViolationException e) {
-                flash.message = "Section ${params.id} could not be deleted"
-                redirect(action:show,id:params.id)
-            }
+        def result = sectionService.delete(params)
+
+        if(!result.error) {
+            flash.message = g.message(code: "default.delete.success", args: ["Section", params.id])
+            redirect(action:list)
+            return
         }
-        else {
-            flash.message = "Section not found with id ${params.id}"
+
+        flash.errorMessage = g.message(code: result.error.code, args: result.error.args)
+
+        if(result.error.code == "default.not.found") {
             redirect(action:list)
+            return
         }
+
+        redirect(action:show, id: params.id)
     }
 
