Ignore:
Timestamp:
Mar 7, 2010, 4:45:10 PM (14 years ago)
Author:
gav
Message:

Add create unsheduled task feature.
Refactor task priorities.
Limit task types and priorites during task creation.
Add work around for show and edit navigation links in task views.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/grails-app/controllers/TaskDetailedController.groovy

    r418 r433  
    219219        if(params._action_Show)
    220220            params.action='show'
     221
     222        // Used by navigation.
     223        if(params.id == 'nav') {
     224            params.id = session.currentTaskId ?: null
     225            redirect(action: show, id: params.id)
     226            return
     227        }
    221228
    222229        def showTab = [:]
     
    245252        }
    246253        else {
     254            // Remember the current task id for use with navigation.
     255            session.currentTaskId = params.id
     256
    247257            params.max = 10
    248258            params.order = "desc"
     
    477487            params.action='edit'
    478488
     489        // Used by navigation.
     490        if(params.id == 'nav') {
     491            params.id = session.currentTaskId ?: null
     492            redirect(action: edit, id: params.id)
     493            return
     494        }
     495
    479496        def taskInstance = Task.get( params.id )
    480497
     
    484501        }
    485502        else {
     503            // Remember the current task id for use with navigation.
     504            session.currentTaskId = params.id
     505
    486506            if(taskInstance.trash) {
    487507                flash.message = "You may not edit tasks that are in the trash."
     
    524544        taskInstance.leadPerson = authService.currentUser
    525545        taskInstance.properties = params
    526         return ['taskInstance': taskInstance]
     546
     547        def scheduledTaskTypes = taskService.scheduledTaskTypes
     548        def scheduledTaskPriorities = taskService.scheduledTaskPriorities
     549        taskInstance.taskPriority = scheduledTaskPriorities.default
     550        return ['taskInstance': taskInstance,
     551                    'scheduledTaskTypes': scheduledTaskTypes,
     552                    'scheduledTaskPriorities': scheduledTaskPriorities.list]
    527553    }
    528554
     
    540566            flash.errorMessage = g.message(code: result.error.code, args: result.error.args)
    541567
    542         render(view:'create', model:[taskInstance:result.taskInstance])
     568
     569        def scheduledTaskTypes = taskService.scheduledTaskTypes
     570        def scheduledTaskPriorities = taskService.scheduledTaskPriorities
     571        render(view:'create', model:[taskInstance:result.taskInstance,
     572                                                    'scheduledTaskTypes': scheduledTaskTypes,
     573                                                    'scheduledTaskPriorities': scheduledTaskPriorities.list])
    543574    }
    544575
     
    591622
    592623    @Secured(['ROLE_AppAdmin', 'ROLE_Manager', 'ROLE_TaskManager', 'ROLE_TaskUser'])
     624    def createUnscheduled = {
     625        def taskInstance = new Task()
     626
     627        // Default leadPerson to current user, unless supplied in params.
     628        taskInstance.leadPerson = authService.currentUser
     629        taskInstance.properties = params
     630
     631        // Always for Unscheduled task.
     632        taskInstance.taskType = TaskType.get(2) // Unscheduled Breakin.
     633        def unscheduledTaskPriorities = taskService.unscheduledTaskPriorities
     634        taskInstance.taskPriority = unscheduledTaskPriorities.default
     635
     636        return ['taskInstance': taskInstance, 'unscheduledTaskPriorities': unscheduledTaskPriorities.list]
     637    }
     638
     639    @Secured(['ROLE_AppAdmin', 'ROLE_Manager', 'ROLE_TaskManager', 'ROLE_TaskUser'])
     640    def saveUnscheduled = {
     641        def result = taskService.saveUnscheduled(params)
     642
     643        if(!result.error) {
     644            flash.message = "Task ${result.taskInstance.id} created."
     645            redirect(action: 'show', id: result.taskInstance.id)
     646            return
     647        }
     648
     649        if(result.error.code == "task.modifications.failedToSave")
     650            flash.errorMessage = g.message(code: result.error.code, args: result.error.args)
     651
     652        def unscheduledTaskPriorities = taskService.unscheduledTaskPriorities
     653
     654        render(view:'createUnscheduled',
     655                    model: ['taskInstance': result.taskInstance, 'unscheduledTaskPriorities': unscheduledTaskPriorities.list])
     656    }
     657
     658    @Secured(['ROLE_AppAdmin', 'ROLE_Manager', 'ROLE_TaskManager', 'ROLE_TaskUser'])
    593659    def createImmediateCallout = {
    594660        def taskInstance = new Task()
Note: See TracChangeset for help on using the changeset viewer.