source: trunk/grails-app/controllers/EntryDetailedController.groovy @ 168

Last change on this file since 168 was 147, checked in by gav, 15 years ago

Re-install class-diagram from local svn build with patch to allow war deployment.
Class-diagram overrides removed from Config.groovy since these have all been included upstream.
Tidy comments in SecurityConfig?.groovy
Some work on adding assignedPerson work flow and PersonController?.
Add navAlt and filterPane search to Person and TaskProcedure?.

File size: 3.4 KB
RevLine 
[91]1import org.codehaus.groovy.grails.plugins.springsecurity.Secured
2
3class EntryDetailedController extends BaseController {
4
5    def authenticateService
[147]6
[91]7    def index = { redirect(action:list,params:params) }
8
9    // the delete, save and update actions only accept POST requests
10    static allowedMethods = [delete:'POST', save:'POST', update:'POST']
11
12    def list = {
13        if(!params.max) params.max = 10
14        [ entryInstanceList: Entry.list( params ) ]
15    }
16
17    def show = {
18        def entryInstance = Entry.get( params.id )
19
20        if(!entryInstance) {
21            flash.message = "Entry not found with id ${params.id}"
22            redirect(action:list)
23        }
24        else { return [ entryInstance : entryInstance ] }
25    }
26
27    def delete = {
28        def entryInstance = Entry.get( params.id )
29        if(entryInstance) {
[98]30            if(entryInstance.enteredBy.loginName == authenticateService.userDomain().loginName) {
31                entryInstance.delete()
32                flash.message = "Entry ${params.id} deleted"
33                redirect(action:list)
34            }
35            else {
36                flash.message = "You may only delete your own entries."
37                redirect(action:show,id:entryInstance.id)
38            }
39
[91]40        }
41        else {
42            flash.message = "Entry not found with id ${params.id}"
43            redirect(action:list)
44        }
45    }
46
47    def edit = {
48        def entryInstance = Entry.get( params.id )
49        if(!entryInstance) {
[98]50                flash.message = "Entry not found with id ${params.id}"
51                redirect(action:list)
[91]52        }
53        else {
[98]54
55            if(entryInstance.enteredBy.loginName == authenticateService.userDomain().loginName) {
56                return [ entryInstance : entryInstance ]
57            }
58            else {
59                flash.message = "You may only edit your own entries."
60                redirect(action:show,id:entryInstance.id)
61            }
62
[91]63        }
64    }
65
66    def update = {
67        def entryInstance = Entry.get( params.id )
68        if(entryInstance) {
69            entryInstance.properties = params
70            if(!entryInstance.hasErrors() && entryInstance.save()) {
71                flash.message = "Entry ${params.id} updated"
72                redirect(action:show,id:entryInstance.id)
73            }
74            else {
75                render(view:'edit',model:[entryInstance:entryInstance])
76            }
77        }
78        else {
79            flash.message = "Entry not found with id ${params.id}"
80            redirect(action:edit,id:params.id)
81        }
82    }
83
84    def create = {
[98]85        try {
86            def taskInstance = Task.get(params.taskInstance.id)
87            def entryInstance = new Entry()
88            entryInstance.task = taskInstance
89            return ['entryInstance':entryInstance]
90        }
91        catch(Exception e) {
92            flash.message = "Please select a task, then 'Add Entry'"
93            redirect(controller:"taskDetailed", action:"list")
94        }
[91]95    }
96
97    def save = {
98        def entryInstance = new Entry(params)
99
100        entryInstance.enteredBy = Person.get(authenticateService.userDomain().id)
101        if(!entryInstance.hasErrors() && entryInstance.save()) {
102            flash.message = "Entry ${entryInstance.id} created"
103            redirect(controller:"taskDetailed", action:"show", id: params.task.id)
104        }
105        else {
106            render(view:'create',model:[entryInstance:entryInstance])
107        }
108    }
109}
Note: See TracBrowser for help on using the repository browser.