Changeset 137 for trunk


Ignore:
Timestamp:
Sep 1, 2009, 10:10:43 PM (15 years ago)
Author:
gav
Message:

Update to grails-1.1.1 release.
Fix WorkDone? and Fault entries not showing after update, now using criteria.
Work on TaskRecurringSchedule, add DateUtilService class, regenerate views to suite.
Finally have correct rollback behaviour on TaskRecurringSchedule? domain object updates by using transactions.
Added name to copyright since the license has no meaning without it.

Location:
trunk
Files:
3 added
23 edited

Legend:

Unmodified
Added
Removed
  • trunk/.classpath

    r104 r137  
    1313<classpathentry kind="output" path="web-app/WEB-INF/classes"/>
    1414<classpathentry kind="var" path="GRAILS_HOME/ant/lib/ant.jar"/>
     15<classpathentry kind="var" path="GRAILS_HOME/lib/slf4j-api-1.5.6.jar" />
     16<classpathentry kind="var" path="GRAILS_HOME/lib/jasper-runtime-5.5.15.jar" />
     17<classpathentry kind="var" path="GRAILS_HOME/lib/jsp-api-2.0.jar" />
     18<classpathentry kind="var" path="GRAILS_HOME/lib/sitemesh-2.4.jar" />
     19<classpathentry kind="var" path="GRAILS_HOME/lib/commons-codec-1.3.jar" />
     20<classpathentry kind="var" path="GRAILS_HOME/lib/oro-2.0.8.jar" />
     21<classpathentry kind="var" path="GRAILS_HOME/lib/backport-util-concurrent-3.0.jar" />
     22<classpathentry kind="var" path="GRAILS_HOME/lib/commons-dbcp-1.2.1.jar" />
     23<classpathentry kind="var" path="GRAILS_HOME/lib/start.jar" />
     24<classpathentry kind="var" path="GRAILS_HOME/lib/ant-junit-1.7.0.jar" />
     25<classpathentry kind="var" path="GRAILS_HOME/lib/ant-1.7.0.jar" />
     26<classpathentry kind="var" path="GRAILS_HOME/lib/hsqldb-1.8.0.5.jar" />
     27<classpathentry kind="var" path="GRAILS_HOME/lib/jetty-plus-6.1.14.jar" />
     28<classpathentry kind="var" path="GRAILS_HOME/lib/slf4j-log4j12-1.5.6.jar" />
     29<classpathentry kind="var" path="GRAILS_HOME/lib/junit-3.8.2.jar" />
     30<classpathentry kind="var" path="GRAILS_HOME/lib/spring-webmvc-2.5.6.jar" />
     31<classpathentry kind="var" path="GRAILS_HOME/lib/org.springframework.webflow-2.0.3.RELEASE.jar" />
     32<classpathentry kind="var" path="GRAILS_HOME/lib/jstl-2.4.jar" />
     33<classpathentry kind="var" path="GRAILS_HOME/lib/ehcache-1.5.0.jar" />
     34<classpathentry kind="var" path="GRAILS_HOME/lib/xpp3_min-1.1.3.4.O.jar" />
     35<classpathentry kind="var" path="GRAILS_HOME/lib/ivy-2.0.0.jar" />
     36<classpathentry kind="var" path="GRAILS_HOME/lib/jsp-api-2.1.jar" />
     37<classpathentry kind="var" path="GRAILS_HOME/lib/jetty-util-6.1.14.jar" />
     38<classpathentry kind="var" path="GRAILS_HOME/lib/jline-0.9.91.jar" />
     39<classpathentry kind="var" path="GRAILS_HOME/lib/jetty-naming-6.1.14.jar" />
     40<classpathentry kind="var" path="GRAILS_HOME/lib/ant-nodeps-1.7.0.jar" />
     41<classpathentry kind="var" path="GRAILS_HOME/lib/commons-collections-3.2.jar" />
     42<classpathentry kind="var" path="GRAILS_HOME/lib/standard-2.4.jar" />
     43<classpathentry kind="var" path="GRAILS_HOME/lib/spring-2.5.6.jar" />
     44<classpathentry kind="var" path="GRAILS_HOME/lib/jasper-compiler-jdt-5.5.15.jar" />
     45<classpathentry kind="var" path="GRAILS_HOME/lib/log4j-1.2.15.jar" />
     46<classpathentry kind="var" path="GRAILS_HOME/lib/groovy-all-1.6.3.jar" />
     47<classpathentry kind="var" path="GRAILS_HOME/lib/svnkit-1.2.0.jar" />
     48<classpathentry kind="var" path="GRAILS_HOME/lib/jcl-over-slf4j-1.5.6.jar" />
     49<classpathentry kind="var" path="GRAILS_HOME/lib/jta-1.1.jar" />
     50<classpathentry kind="var" path="GRAILS_HOME/lib/jetty-6.1.14.jar" />
    1551<classpathentry kind="var" path="GRAILS_HOME/lib/cglib-nodep-2.1_3.jar" />
    16 <classpathentry kind="var" path="GRAILS_HOME/lib/ant-junit-1.7.0.jar" />
    17 <classpathentry kind="var" path="GRAILS_HOME/lib/org.springframework.webflow-2.0.3.RELEASE.jar" />
    18 <classpathentry kind="var" path="GRAILS_HOME/lib/junit-3.8.2.jar" />
    1952<classpathentry kind="var" path="GRAILS_HOME/lib/spring-test-2.5.6.jar" />
     53<classpathentry kind="var" path="GRAILS_HOME/lib/standard-2.3.jar" />
     54<classpathentry kind="var" path="GRAILS_HOME/lib/commons-el-1.0.jar" />
     55<classpathentry kind="var" path="GRAILS_HOME/lib/org.springframework.binding-2.0.3.RELEASE.jar" />
     56<classpathentry kind="var" path="GRAILS_HOME/lib/commons-validator-1.3.0.jar" />
     57<classpathentry kind="var" path="GRAILS_HOME/lib/oscache-2.4.1.jar" />
     58<classpathentry kind="var" path="GRAILS_HOME/lib/org.springframework.js-2.0.3.RELEASE.jar" />
     59<classpathentry kind="var" path="GRAILS_HOME/lib/serializer.jar" />
     60<classpathentry kind="var" path="GRAILS_HOME/lib/ognl-2.6.9.jar" />
     61<classpathentry kind="var" path="GRAILS_HOME/lib/ant-trax.jar" />
     62<classpathentry kind="var" path="GRAILS_HOME/lib/ant-launcher-1.7.0.jar" />
     63<classpathentry kind="var" path="GRAILS_HOME/lib/jsr107cache-1.0.jar" />
     64<classpathentry kind="var" path="GRAILS_HOME/lib/commons-fileupload-1.2.1.jar" />
     65<classpathentry kind="var" path="GRAILS_HOME/lib/jstl-2.3.jar" />
     66<classpathentry kind="var" path="GRAILS_HOME/lib/servlet-api-2.5-6.1.14.jar" />
     67<classpathentry kind="var" path="GRAILS_HOME/lib/jasper-compiler-5.5.15.jar" />
     68<classpathentry kind="var" path="GRAILS_HOME/lib/commons-lang-2.4.jar" />
     69<classpathentry kind="var" path="GRAILS_HOME/lib/ejb3-persistence-3.3.0.jar" />
     70<classpathentry kind="var" path="GRAILS_HOME/lib/commons-beanutils-1.7.0.jar" />
    2071<classpathentry kind="var" path="GRAILS_HOME/lib/commons-io-1.4.jar" />
    21 <classpathentry kind="var" path="GRAILS_HOME/lib/standard-2.4.jar" />
    22 <classpathentry kind="var" path="GRAILS_HOME/lib/commons-collections-3.2.jar" />
    23 <classpathentry kind="var" path="GRAILS_HOME/lib/jcl-over-slf4j-1.5.6.jar" />
    24 <classpathentry kind="var" path="GRAILS_HOME/lib/spring-webmvc-2.5.6.jar" />
    25 <classpathentry kind="var" path="GRAILS_HOME/lib/commons-validator-1.3.0.jar" />
    26 <classpathentry kind="var" path="GRAILS_HOME/lib/jetty-util-6.1.14.jar" />
    27 <classpathentry kind="var" path="GRAILS_HOME/lib/jta-1.1.jar" />
     72<classpathentry kind="var" path="GRAILS_HOME/lib/gant_groovy1.6-1.6.0.jar" />
    2873<classpathentry kind="var" path="GRAILS_HOME/lib/antlr-2.7.6.jar" />
    29 <classpathentry kind="var" path="GRAILS_HOME/lib/jsp-api-2.0.jar" />
    3074<classpathentry kind="var" path="GRAILS_HOME/lib/commons-cli-1.0.jar" />
    31 <classpathentry kind="var" path="GRAILS_HOME/lib/servlet-api-2.5-6.1.14.jar" />
    32 <classpathentry kind="var" path="GRAILS_HOME/lib/oscache-2.4.1.jar" />
    33 <classpathentry kind="var" path="GRAILS_HOME/lib/slf4j-api-1.5.6.jar" />
    34 <classpathentry kind="var" path="GRAILS_HOME/lib/standard-2.3.jar" />
    35 <classpathentry kind="var" path="GRAILS_HOME/lib/ivy-2.0.0.jar" />
    36 <classpathentry kind="var" path="GRAILS_HOME/lib/ant-1.7.0.jar" />
    37 <classpathentry kind="var" path="GRAILS_HOME/lib/start.jar" />
    38 <classpathentry kind="var" path="GRAILS_HOME/lib/ant-nodeps-1.7.0.jar" />
    39 <classpathentry kind="var" path="GRAILS_HOME/lib/ehcache-1.5.0.jar" />
    40 <classpathentry kind="var" path="GRAILS_HOME/lib/hsqldb-1.8.0.5.jar" />
    41 <classpathentry kind="var" path="GRAILS_HOME/lib/commons-el-1.0.jar" />
    42 <classpathentry kind="var" path="GRAILS_HOME/lib/groovy-all-1.6.0.jar" />
    43 <classpathentry kind="var" path="GRAILS_HOME/lib/jstl-2.3.jar" />
    44 <classpathentry kind="var" path="GRAILS_HOME/lib/serializer.jar" />
    45 <classpathentry kind="var" path="GRAILS_HOME/lib/jsr107cache-1.0.jar" />
    4675<classpathentry kind="var" path="GRAILS_HOME/lib/commons-pool-1.2.jar" />
    47 <classpathentry kind="var" path="GRAILS_HOME/lib/commons-lang-2.4.jar" />
    48 <classpathentry kind="var" path="GRAILS_HOME/lib/jstl-2.4.jar" />
    49 <classpathentry kind="var" path="GRAILS_HOME/lib/org.springframework.js-2.0.3.RELEASE.jar" />
    50 <classpathentry kind="var" path="GRAILS_HOME/lib/commons-beanutils-1.7.0.jar" />
    51 <classpathentry kind="var" path="GRAILS_HOME/lib/jetty-plus-6.1.14.jar" />
    52 <classpathentry kind="var" path="GRAILS_HOME/lib/oro-2.0.8.jar" />
    53 <classpathentry kind="var" path="GRAILS_HOME/lib/slf4j-log4j12-1.5.6.jar" />
    54 <classpathentry kind="var" path="GRAILS_HOME/lib/backport-util-concurrent-3.0.jar" />
    55 <classpathentry kind="var" path="GRAILS_HOME/lib/jline-0.9.91.jar" />
    56 <classpathentry kind="var" path="GRAILS_HOME/lib/jasper-runtime-5.5.15.jar" />
    57 <classpathentry kind="var" path="GRAILS_HOME/lib/ant-trax.jar" />
    58 <classpathentry kind="var" path="GRAILS_HOME/lib/log4j-1.2.15.jar" />
    59 <classpathentry kind="var" path="GRAILS_HOME/lib/xpp3_min-1.1.3.4.O.jar" />
    60 <classpathentry kind="var" path="GRAILS_HOME/lib/commons-fileupload-1.1.1.jar" />
    61 <classpathentry kind="var" path="GRAILS_HOME/lib/jasper-compiler-5.5.15.jar" />
    62 <classpathentry kind="var" path="GRAILS_HOME/lib/gant_groovy1.6-1.6.0.jar" />
    63 <classpathentry kind="var" path="GRAILS_HOME/lib/jetty-naming-6.1.14.jar" />
    64 <classpathentry kind="var" path="GRAILS_HOME/lib/commons-dbcp-1.2.1.jar" />
    65 <classpathentry kind="var" path="GRAILS_HOME/lib/jasper-compiler-jdt-5.5.15.jar" />
    66 <classpathentry kind="var" path="GRAILS_HOME/lib/commons-codec-1.3.jar" />
    67 <classpathentry kind="var" path="GRAILS_HOME/lib/org.springframework.binding-2.0.3.RELEASE.jar" />
    68 <classpathentry kind="var" path="GRAILS_HOME/lib/spring-2.5.6.jar" />
    69 <classpathentry kind="var" path="GRAILS_HOME/lib/jsp-api-2.1.jar" />
    70 <classpathentry kind="var" path="GRAILS_HOME/lib/ognl-2.6.9.jar" />
    71 <classpathentry kind="var" path="GRAILS_HOME/lib/svnkit-1.2.0.jar" />
    72 <classpathentry kind="var" path="GRAILS_HOME/lib/sitemesh-2.4.jar" />
    73 <classpathentry kind="var" path="GRAILS_HOME/lib/jetty-6.1.14.jar" />
    74 <classpathentry kind="var" path="GRAILS_HOME/lib/ant-launcher-1.7.0.jar" />
    75 <classpathentry kind="var" path="GRAILS_HOME/lib/ejb3-persistence-3.3.0.jar" />
    76 <classpathentry kind="var" path="GRAILS_HOME/dist/grails-spring-1.1.jar" />
    77 <classpathentry kind="var" path="GRAILS_HOME/dist/grails-crud-1.1.jar" />
    78 <classpathentry kind="var" path="GRAILS_HOME/dist/grails-web-1.1.jar" />
    79 <classpathentry kind="var" path="GRAILS_HOME/dist/grails-bootstrap-1.1.jar" />
    80 <classpathentry kind="var" path="GRAILS_HOME/dist/grails-webflow-1.1.jar" />
    81 <classpathentry kind="var" path="GRAILS_HOME/dist/grails-resources-1.1.jar" />
    82 <classpathentry kind="var" path="GRAILS_HOME/dist/grails-gorm-1.1.jar" />
    83 <classpathentry kind="var" path="GRAILS_HOME/dist/grails-test-1.1.jar" />
    84 <classpathentry kind="var" path="GRAILS_HOME/dist/grails-scripts-1.1.jar" />
    85 <classpathentry kind="var" path="GRAILS_HOME/dist/grails-core-1.1.jar" />
     76<classpathentry kind="var" path="GRAILS_HOME/dist/grails-test-1.1.1.jar" />
     77<classpathentry kind="var" path="GRAILS_HOME/dist/grails-scripts-1.1.1.jar" />
     78<classpathentry kind="var" path="GRAILS_HOME/dist/grails-bootstrap-1.1.1.jar" />
     79<classpathentry kind="var" path="GRAILS_HOME/dist/grails-gorm-1.1.1.jar" />
     80<classpathentry kind="var" path="GRAILS_HOME/dist/grails-resources-1.1.1.jar" />
     81<classpathentry kind="var" path="GRAILS_HOME/dist/grails-crud-1.1.1.jar" />
     82<classpathentry kind="var" path="GRAILS_HOME/dist/grails-webflow-1.1.1.jar" />
     83<classpathentry kind="var" path="GRAILS_HOME/dist/grails-core-1.1.1.jar" />
     84<classpathentry kind="var" path="GRAILS_HOME/dist/grails-spring-1.1.1.jar" />
     85<classpathentry kind="var" path="GRAILS_HOME/dist/grails-web-1.1.1.jar" />
    8686</classpath>
  • trunk/README

    r104 r137  
     1    GnuMims - A web application providing a Maintenance and Inventory Management Solution.
     2    Copyright (C) <2009>  <Gavin Kromhout>
     3 
    14    This program is free software: you can redistribute it and/or modify
    25    it under the terms of the GNU Affero General Public License as published by
  • trunk/application.properties

    r126 r137  
    11#utf-8
    2 #Mon May 04 19:08:49 EST 2009
     2#Tue May 19 13:36:38 EST 2009
    33plugins.acegi=0.5.1
    44app.version=
     
    77plugins.richui=0.6
    88app.servlet.version=2.4
    9 plugins.hibernate=1.1
     9plugins.hibernate=1.1.1
    1010app.name=gnuMims
    11 app.grails.version=1.1
     11app.grails.version=1.1.1
  • trunk/gnuMims.launch

    r104 r137  
    1010<listAttribute key="org.eclipse.jdt.launching.CLASSPATH">
    1111<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&#10;&lt;runtimeClasspathEntry containerPath=&quot;org.eclipse.jdt.launching.JRE_CONTAINER&quot; javaProject=&quot;gnuMims&quot; path=&quot;1&quot; type=&quot;4&quot;/&gt;&#10;"/>
    12 <listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&#10;&lt;runtimeClasspathEntry containerPath=&quot;GRAILS_HOME/dist/grails-bootstrap-1.1.jar&quot; path=&quot;3&quot; type=&quot;3&quot;/&gt;&#10;"/>
    13 <listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&#10;&lt;runtimeClasspathEntry containerPath=&quot;GRAILS_HOME/lib/groovy-all-1.6.0.jar&quot; path=&quot;3&quot; type=&quot;3&quot;/&gt;&#10;"/>
     12<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&#10;&lt;runtimeClasspathEntry containerPath=&quot;GRAILS_HOME/dist/grails-bootstrap-1.1.1.jar&quot; path=&quot;3&quot; type=&quot;3&quot;/&gt;&#10;"/>
     13<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&#10;&lt;runtimeClasspathEntry containerPath=&quot;GRAILS_HOME/lib/groovy-all-1.6.3.jar&quot; path=&quot;3&quot; type=&quot;3&quot;/&gt;&#10;"/>
    1414</listAttribute>
    1515<booleanAttribute key="org.eclipse.jdt.launching.DEFAULT_CLASSPATH" value="false"/>
  • trunk/grails-app/conf/BootStrap.groovy

    r136 r137  
    358358
    359359        //Entry #1
    360         entryInstance = new Entry(enteredBy: Person.get(6),
     360        entryInstance = new Entry(enteredBy: Person.get(3),
    361361                                                    task: Task.get(1),
    362362                                                    entryType: EntryType.findByName("Fault"),
     
    611611
    612612        //MaintenanceAction #1
    613         maintenanceActionInstance = new MaintenanceAction(description: "Check all E-stops, active E-stop S1-S12 and ensure machine cannot run",
     613        maintenanceActionInstance = new MaintenanceAction(description: "Check all E-stops, activate E-stops S1-S12 and ensure machine cannot run",
    614614                                                                                                        procedureStepNumber: 1,
    615615                                                                                                        maintenancePolicy: MaintenancePolicy.get(1),
  • trunk/grails-app/controllers/TaskDetailedController.groovy

    r134 r137  
    3131                        params.order = "desc"
    3232                        params.sort = "id"
     33                       
     34                        def entryWorkDoneList = Entry.withCriteria {
     35                                                                                                                                def entryType = EntryType.findByName("WorkDone")
     36                                                                                                                                eq("entryType", entryType)
     37                                                                                                                                eq("task", taskInstance)
     38                                                                                                                }
     39                       
     40                        def entryFaultList = Entry.withCriteria {
     41                                                                                                                                def entryType = EntryType.findByName("Fault")
     42                                                                                                                                eq("entryType", entryType)
     43                                                                                                                                eq("task", taskInstance)
     44                                                                                                                }
    3345
    3446                        def subTaskInstanceList = Task.findAllByParentTask(taskInstance, params)
     
    5365            }
    5466                       
    55             return [ taskInstance : taskInstance,
     67            return [ taskInstance: taskInstance,
     68                                                        entryWorkDoneList: entryWorkDoneList,
     69                                                        entryFaultList: entryFaultList,
    5670                            taskProcedureInstance: taskProcedureInstance,
    5771                            taskProcedureExits: taskProcedureExits,
  • trunk/grails-app/controllers/TaskRecurringScheduleDetailedController.groovy

    r136 r137  
    11import org.codehaus.groovy.grails.plugins.springsecurity.Secured
    22import org.codehaus.groovy.runtime.TimeCategory
     3import java.text.SimpleDateFormat
    34
    45class TaskRecurringScheduleDetailedController extends BaseController {
    56   
     7        def dateUtilService
     8       
    69    def index = { redirect(action:list,params:params) }
    710
     
    5154        }
    5255        else {
    53             return [ taskRecurringScheduleInstance : taskRecurringScheduleInstance ]
     56            return [ taskRecurringScheduleInstance : taskRecurringScheduleInstance]
    5457        }
    5558    }
    5659
    5760    def update = {
    58         def taskRecurringScheduleInstance = TaskRecurringSchedule.get( params.id )
    59         if(taskRecurringScheduleInstance) {
    60             if(params.version) {
    61                 def version = params.version.toLong()
    62                 if(taskRecurringScheduleInstance.version > version) {
     61                TaskRecurringSchedule.withTransaction { status ->
     62       
     63                def taskRecurringScheduleInstance = TaskRecurringSchedule.get( params.id )
     64                        if(taskRecurringScheduleInstance) {
     65                               
     66                                if(params.version) {
     67                                        def version = params.version.toLong()
     68                                        if(taskRecurringScheduleInstance.version > version) {
     69                                                taskRecurringScheduleInstance.errors.rejectValue("version", "taskRecurringSchedule.optimistic.locking.failure", "Another user has updated this TaskRecurringSchedule while you were editing.")
     70                                                render(view:'edit',model:[taskRecurringScheduleInstance:taskRecurringScheduleInstance])
     71                                                return
     72                                        }
     73                                }
     74                                       
     75                                Date originalDate = taskRecurringScheduleInstance.startDate
     76                                taskRecurringScheduleInstance.properties = params  // Domain object is now 'dirty'.
     77                                Date newDate = taskRecurringScheduleInstance.startDate
     78       
     79                                // If user changes startDate then ensure it is in the future, otherwise it's ok to keep the original date.
     80                                if(originalDate.getTime() != newDate.getTime())
     81                                {
     82                                        if(newDate < dateUtilService.getToday())
     83                                        {
     84                                                status.setRollbackOnly()  // Only allow the transaction to Rollback, preventing flush due to 'dirty'.
     85                                                taskRecurringScheduleInstance.errors.rejectValue("startDate", "taskRecurring.startDate.NotInTheFuture")
     86                                                render(view:'edit',model:[taskRecurringScheduleInstance:taskRecurringScheduleInstance])
     87                                                return
     88                                        }
     89                                }
     90                                       
     91                                taskRecurringScheduleInstance.nextTargetStartDate = taskRecurringScheduleInstance.startDate
     92                                taskRecurringScheduleInstance.setNextGenerationDate()
     93                                taskRecurringScheduleInstance.setNextTargetCompletionDate()
    6394                   
    64                     taskRecurringScheduleInstance.errors.rejectValue("version", "taskRecurringSchedule.optimistic.locking.failure", "Another user has updated this TaskRecurringSchedule while you were editing.")
    65                     render(view:'edit',model:[taskRecurringScheduleInstance:taskRecurringScheduleInstance])
    66                     return
    67                 }
    68             }
    69 //             taskRecurringScheduleInstance.properties = params
    70             setUpdateProperties()
    71                    
    72             if(!taskRecurringScheduleInstance.hasErrors() && taskRecurringScheduleInstance.save()) {
    73                 flash.message = "TaskRecurringSchedule ${params.id} updated"
    74                 redirect(action:show,id:taskRecurringScheduleInstance.id)
    75             }
    76             else {
    77                 render(view:'edit',model:[taskRecurringScheduleInstance:taskRecurringScheduleInstance])
    78             }
    79         }
    80         else {
    81             flash.message = "TaskRecurringSchedule not found with id ${params.id}"
    82             redirect(action:edit,id:params.id)
    83         }
    84     }
     95                                if(!taskRecurringScheduleInstance.hasErrors() && taskRecurringScheduleInstance.save())
     96                                {
     97                                        flash.message = "TaskRecurringSchedule ${params.id} updated"
     98                                        redirect(action:show,id:taskRecurringScheduleInstance.id)
     99                                }
     100                                else
     101                                {
     102                                        render(view:'edit',model:[taskRecurringScheduleInstance:taskRecurringScheduleInstance])
     103                                }
     104                        }
     105                        else
     106                        {
     107                                flash.message = "TaskRecurringSchedule not found with id ${params.id}"
     108                                redirect(action:edit,id:params.id)
     109                        }
     110                       
     111                } // end withTransaction                       
     112        } // end update()
    85113       
    86114    def create = {
     
    95123            redirect(controller:"taskDetailed", action:"list")
    96124        }
    97     }
     125    } // end create()
    98126
    99127    def save = {
     
    106134                }
    107135                else {
     136                       
     137                        if(taskRecurringScheduleInstance.startDate < dateUtilService.getToday()) {
     138                                taskRecurringScheduleInstance.errors.rejectValue("startDate", "taskRecurring.startDate.NotInTheFuture")
     139                        }
    108140                       
    109141                        if(!taskRecurringScheduleInstance.hasErrors() && taskRecurringScheduleInstance.save()) {
     
    125157                }
    126158
    127     }
    128                
    129     private setUpdateProperties() {
    130         def originalStartDate = taskRecurringScheduleInstance.startDate
    131        
    132         if(taskRecurringScheduleInstance.startDate == params.startDate) {
    133             taskRecurringScheduleInstance.properties = params
    134         }
    135         else {
    136             taskRecurringScheduleInstance.properties = params
    137             taskRecurringScheduleInstance.nextTargetStartDate = params.startDate
    138         }
    139        
    140     }
     159    } // end save()
    141160
    142 /*   
    143     private Date calculateNextDueDate(recurEvery, period, startDate) {
    144         def nextDue = new Date()
    145        
    146         switch (period) {
    147             case "Day(s)":
    148                 use(TimeCategory) {
    149                     nextDue = startDate + recurEvery.days
    150                 }
    151                 return nextDue
    152             case "Week(s)":
    153                 use(TimeCategory) {
    154                     nextDue = startDate + recurEvery.weeks
    155                 }
    156                 return nextDue
    157             case "Month(s)":
    158                 use(TimeCategory) {
    159                     nextDue = startDate + recurEvery.months
    160                 }
    161                 return nextDue
    162             case "Year(s)":
    163                 use(TimeCategory) {
    164                     nextDue = startDate + recurEvery.years
    165                 }
    166                 return nextDue
    167             default:
    168                 return nextDue
    169         }
    170        
    171     }*/
    172161}
  • trunk/grails-app/domain/TaskRecurringSchedule.groovy

    r136 r137  
    2323
    2424    static constraints = {
    25 //              startDate(validator: {return (it > new Date())})
    26         recurEvery(min:0, max:365)
     25        recurEvery(min:1, max:365)
    2726        taskDuration(min:0, max:365)
    2827        generateAhead(min:0, max:365)
     
    3534    }
    3635   
    37     //As of Grails 1.1 this does not fire/pass before validation.
    38     //But setting defaults above and placing this code here in the hope that this will be fixed in future versions.
     36    // As of Grails 1.1.1 this does not fire/pass before validation.
     37    // But setting some defaults above to pass validation and placing this code here
     38        // in the hope that this will be fixed in future versions.
    3939    def beforeInsert = {
    40         def now = new Date()
    41        
    4240        nextTargetStartDate = startDate
    43        
    44         //nextGenerationDate
     41        setNextGenerationDate()
     42        setNextTargetCompletionDate()
     43    }
     44   
     45    public void setNextGenerationDate() {
    4546        switch (generateAheadPeriod.period) {
    4647            case "Day(s)":
     
    6768                break
    6869        }
    69        
     70        def now = new Date()
    7071        if( nextGenerationDate < now) {nextGenerationDate = now}
    71        
    72         //nextTargetCompletionDate
     72    }
     73   
     74    public void setNextTargetCompletionDate() {
    7375        switch (taskDurationPeriod.period) {
    7476            case "Day(s)":
     
    9294                }
    9395                break
    94         default:
     96            default:
    9597                break
    9698        }
    97        
    9899    }
    99 
     100   
    100101}
    101102
  • trunk/grails-app/i18n/messages.properties

    r106 r137  
    1818task.leadPerson=Lead Person
    1919task.leadPerson.help=The primay contact person.
     20   
     21taskRecurring.startDate.NotInTheFuture=Please select a start date that is not in the past, or use original date.
     22taskRecurring.startDate=Start Date
     23taskRecurring.startDate.help=The tartget start date for the first auto generated subTask.
    2024
    2125default.doesnt.match.message=Property [{0}] of class [{1}] with value [{2}] does not match the required pattern [{3}]
  • trunk/grails-app/jobs/TaskRecurringScheduleJob.groovy

    r126 r137  
    11
    22class TaskRecurringScheduleJob {/*
    3 //     def timeout = 5000 // execute job once in 5 seconds
    4     def timeout = 60000
     3    def timeout = 1000 // execute job once in 1 seconds
     4//     def timeout = 60000
    55
    66    def execute() {
    7 //         println "TaskRecurringScheduleJob: tick"
    8 //         println "TaskRecurringScheduleJob: tock"
     7        println "TaskRecurringScheduleJob: tick"
     8        println "TaskRecurringScheduleJob: tock"/*
    99        def recurringScheduleInstanceList = RecurringSchedule.list()
    1010        def now = new Date()
  • trunk/grails-app/views/entryDetailed/edit.gsp

    r98 r137  
    6262
    6363                                <td valign="top" class="value">
    64                                     <input class="duration ${hasErrors(bean:entryInstance,field:'durationHour','errors')}"
     64                                    <input class="time ${hasErrors(bean:entryInstance,field:'durationHour','errors')}"
    6565                                        type="text" id="durationHour" name="durationHour"
    6666                                        value="${fieldValue(bean:entryInstance,field:'durationHour')}" />
    6767                                    :
    68                                     <input class="duration ${hasErrors(bean:entryInstance,field:'durationMinute','errors')}"
     68                                    <input class="time ${hasErrors(bean:entryInstance,field:'durationMinute','errors')}"
    6969                                        type="text" id="durationMinute" name="durationMinute"
    7070                                        value="${fieldValue(bean:entryInstance,field:'durationMinute')}" />
  • trunk/grails-app/views/taskDetailed/show.gsp

    r135 r137  
    158158                        </div>
    159159           
    160            
    161160                        <div class="buttons">
    162161                            <g:form>
     
    186185                                </thead>
    187186                                <tbody>
    188                                 <g:each in="${taskInstance?.entries}" status="i" var="entry">
    189                                     <g:if test="${entry.entryType == EntryType.findByName('Fault')}">
     187                                <g:each in="${entryFaultList}" status="i" var="entry">
    190188                                        <tr class="${(i % 2) == 0 ? 'clickableOdd' : 'clickableEven'}" onclick='window.location = "${request.getContextPath()}/entryDetailed/edit/${entry.id}"'/>
    191189                                       
     
    202200           
    203201                                        </tr>
    204                                     </g:if>
    205202                                </g:each>
    206203                                </tbody>
     
    227224                                </thead>
    228225                                <tbody>
    229                                 <g:each in="${taskInstance?.entries}" status="i" var="entry">
    230                                     <g:if test="${entry.entryType == EntryType.findByName('WorkDone')}">
     226                                <g:each in="${entryWorkDoneList}" status="i" var="entry">
    231227                                        <tr class="${(i % 2) == 0 ? 'clickableOdd' : 'clickableEven'}" onclick='window.location = "${request.getContextPath()}/entryDetailed/edit/${entry.id}"'/>
    232228           
     
    243239           
    244240                                        </tr>
    245                                     </g:if>
    246241                                </g:each>
    247242                                </tbody>
     
    261256                    </richui:tabContent>
    262257<!-- End Task tab -->
     258
     259
    263260
    264261<!-- Start Task Procedure tab-->
     
    398395                                                                                                <g:formatDate date="${taskRecurringScheduleInstance.startDate}" format="EEE, dd MMM yyyy"/>
    399396                                                                                        </td>
     397                           
     398                                        </tr>
     399                                   
     400                                        <tr class="prop">
     401                                            <td valign="top" class="name">Task Duration:</td>
     402                                           
     403                                            <td valign="top" class="value">
     404                                                ${taskRecurringScheduleInstance?.taskDuration} ${taskRecurringScheduleInstance?.taskDurationPeriod}
     405                                            </td>
     406                                        </tr>
     407                   
     408                                        <tr class="prop">
     409                                            <td valign="top" class="name">Generate Ahead:</td>
     410                                           
     411                                            <td valign="top" class="value">
     412                                                ${taskRecurringScheduleInstance?.generateAhead} ${taskRecurringScheduleInstance?.generateAheadPeriod}
     413                                            </td>
     414                                           
     415                                        </tr>
    400416                                                                                       
    401417                                                                                </tr>
     
    407423                                                                                       
    408424                                                                                </tr>
     425                                       
     426                                    </tbody>
     427                                </table>
     428               
     429                                <table>
     430                                    <tbody>
    409431                       
    410432                                                                                <tr class="prop">
    411                                                                                         <td></td>
    412                                                                                 </tr>
    413                                                                                
    414                                                                                 <tr class="prop">
    415                                                                                         <td></td>
    416                                                                                 </tr>
    417                                
    418                                                                                 <tr class="prop">
    419                                                                                         <td valign="top" class="name">Next Due Date:</td>   
     433                                                                                        <td valign="top" class="name">Next Target Start Date:</td>   
    420434                                                                                                                 
    421435                                                                                        <td valign="top" class="value">
    422                                                                                                 <g:formatDate date="${taskRecurringScheduleInstance.nextDueDate}" format="EEE, dd MMM yyyy"/>
     436                                                                                                <g:formatDate date="${taskRecurringScheduleInstance.nextTargetStartDate}" format="EEE, dd MMM yyyy"/>
    423437                                                                                        </td>
    424438                                                                                       
    425439                                                                                </tr>
     440               
     441                                        <tr class="prop">
     442                                            <td valign="top" class="name">Next Target Completion Date:</td>   
     443                                                                     
     444                                            <td valign="top" class="value">
     445                                                <g:formatDate date="${taskRecurringScheduleInstance.nextTargetCompletionDate}" format="EEE, dd MMM yyyy"/>
     446                                            </td>
     447                                           
     448                                        </tr>
     449                       
     450                                        <tr class="prop">
     451                                            <td valign="top" class="name">Next Generation Date:</td>
     452                                           
     453                                            <td valign="top" class="value">
     454                                                <g:formatDate date="${taskRecurringScheduleInstance.nextGenerationDate}" format="EEE, dd MMM yyyy"/>
     455                                            </td>
     456                                        </tr>
    426457                               
    427458                                                                                <tr class="prop">
  • trunk/grails-app/views/taskRecurringSchedule/create.gsp

    r131 r137  
    4747                            <tr class="prop">
    4848                                <td valign="top" class="name">
     49                                    <label for="generateAhead">Generate Ahead:</label>
     50                                </td>
     51                                <td valign="top" class="value ${hasErrors(bean:taskRecurringScheduleInstance,field:'generateAhead','errors')}">
     52                                    <input type="text" id="generateAhead" name="generateAhead" value="${fieldValue(bean:taskRecurringScheduleInstance,field:'generateAhead')}" />
     53                                </td>
     54                            </tr>
     55                       
     56                            <tr class="prop">
     57                                <td valign="top" class="name">
     58                                    <label for="generateAheadPeriod">Generate Ahead Period:</label>
     59                                </td>
     60                                <td valign="top" class="value ${hasErrors(bean:taskRecurringScheduleInstance,field:'generateAheadPeriod','errors')}">
     61                                    <g:select optionKey="id" from="${Period.list()}" name="generateAheadPeriod.id" value="${taskRecurringScheduleInstance?.generateAheadPeriod?.id}" ></g:select>
     62                                </td>
     63                            </tr>
     64                       
     65                            <tr class="prop">
     66                                <td valign="top" class="name">
    4967                                    <label for="isEnabled">Is Enabled:</label>
    5068                                </td>
     
    6583                            <tr class="prop">
    6684                                <td valign="top" class="name">
    67                                     <label for="period">Period:</label>
     85                                    <label for="nextGenerationDate">Next Generation Date:</label>
    6886                                </td>
    69                                 <td valign="top" class="value ${hasErrors(bean:taskRecurringScheduleInstance,field:'period','errors')}">
    70                                     <g:select optionKey="id" from="${Period.list()}" name="period.id" value="${taskRecurringScheduleInstance?.period?.id}" ></g:select>
     87                                <td valign="top" class="value ${hasErrors(bean:taskRecurringScheduleInstance,field:'nextGenerationDate','errors')}">
     88                                    <g:datePicker name="nextGenerationDate" value="${taskRecurringScheduleInstance?.nextGenerationDate}" ></g:datePicker>
    7189                                </td>
    7290                            </tr>
     
    7896                                <td valign="top" class="value ${hasErrors(bean:taskRecurringScheduleInstance,field:'recurEvery','errors')}">
    7997                                    <input type="text" id="recurEvery" name="recurEvery" value="${fieldValue(bean:taskRecurringScheduleInstance,field:'recurEvery')}" />
     98                                </td>
     99                            </tr>
     100                       
     101                            <tr class="prop">
     102                                <td valign="top" class="name">
     103                                    <label for="recurPeriod">Recur Period:</label>
     104                                </td>
     105                                <td valign="top" class="value ${hasErrors(bean:taskRecurringScheduleInstance,field:'recurPeriod','errors')}">
     106                                    <g:select optionKey="id" from="${Period.list()}" name="recurPeriod.id" value="${taskRecurringScheduleInstance?.recurPeriod?.id}" ></g:select>
    80107                                </td>
    81108                            </tr>
  • trunk/grails-app/views/taskRecurringSchedule/edit.gsp

    r131 r137  
    5050                            <tr class="prop">
    5151                                <td valign="top" class="name">
     52                                    <label for="generateAhead">Generate Ahead:</label>
     53                                </td>
     54                                <td valign="top" class="value ${hasErrors(bean:taskRecurringScheduleInstance,field:'generateAhead','errors')}">
     55                                    <input type="text" id="generateAhead" name="generateAhead" value="${fieldValue(bean:taskRecurringScheduleInstance,field:'generateAhead')}" />
     56                                </td>
     57                            </tr>
     58                       
     59                            <tr class="prop">
     60                                <td valign="top" class="name">
     61                                    <label for="generateAheadPeriod">Generate Ahead Period:</label>
     62                                </td>
     63                                <td valign="top" class="value ${hasErrors(bean:taskRecurringScheduleInstance,field:'generateAheadPeriod','errors')}">
     64                                    <g:select optionKey="id" from="${Period.list()}" name="generateAheadPeriod.id" value="${taskRecurringScheduleInstance?.generateAheadPeriod?.id}" ></g:select>
     65                                </td>
     66                            </tr>
     67                       
     68                            <tr class="prop">
     69                                <td valign="top" class="name">
    5270                                    <label for="isEnabled">Is Enabled:</label>
    5371                                </td>
     
    6886                            <tr class="prop">
    6987                                <td valign="top" class="name">
    70                                     <label for="period">Period:</label>
     88                                    <label for="nextGenerationDate">Next Generation Date:</label>
    7189                                </td>
    72                                 <td valign="top" class="value ${hasErrors(bean:taskRecurringScheduleInstance,field:'period','errors')}">
    73                                     <g:select optionKey="id" from="${Period.list()}" name="period.id" value="${taskRecurringScheduleInstance?.period?.id}" ></g:select>
     90                                <td valign="top" class="value ${hasErrors(bean:taskRecurringScheduleInstance,field:'nextGenerationDate','errors')}">
     91                                    <g:datePicker name="nextGenerationDate" value="${taskRecurringScheduleInstance?.nextGenerationDate}" ></g:datePicker>
    7492                                </td>
    7593                            </tr>
     
    8199                                <td valign="top" class="value ${hasErrors(bean:taskRecurringScheduleInstance,field:'recurEvery','errors')}">
    82100                                    <input type="text" id="recurEvery" name="recurEvery" value="${fieldValue(bean:taskRecurringScheduleInstance,field:'recurEvery')}" />
     101                                </td>
     102                            </tr>
     103                       
     104                            <tr class="prop">
     105                                <td valign="top" class="name">
     106                                    <label for="recurPeriod">Recur Period:</label>
     107                                </td>
     108                                <td valign="top" class="value ${hasErrors(bean:taskRecurringScheduleInstance,field:'recurPeriod','errors')}">
     109                                    <g:select optionKey="id" from="${Period.list()}" name="recurPeriod.id" value="${taskRecurringScheduleInstance?.recurPeriod?.id}" ></g:select>
    83110                                </td>
    84111                            </tr>
  • trunk/grails-app/views/taskRecurringSchedule/list.gsp

    r131 r137  
    2828                                <th>Last Generated Sub Task</th>
    2929                           
     30                                <g:sortableColumn property="generateAhead" title="Generate Ahead" />
     31                       
     32                                <th>Generate Ahead Period</th>
     33                           
    3034                                <g:sortableColumn property="isEnabled" title="Is Enabled" />
    3135                       
    32                                 <g:sortableColumn property="nextDueDate" title="Next Due Date" />
    33                        
    34                                 <th>Period</th>
    35                            
    3636                        </tr>
    3737                    </thead>
     
    4646                            <td>${fieldValue(bean:taskRecurringScheduleInstance, field:'lastGeneratedSubTask')}</td>
    4747                       
     48                            <td>${fieldValue(bean:taskRecurringScheduleInstance, field:'generateAhead')}</td>
     49                       
     50                            <td>${fieldValue(bean:taskRecurringScheduleInstance, field:'generateAheadPeriod')}</td>
     51                       
    4852                            <td>${fieldValue(bean:taskRecurringScheduleInstance, field:'isEnabled')}</td>
    49                        
    50                             <td>${fieldValue(bean:taskRecurringScheduleInstance, field:'nextDueDate')}</td>
    51                        
    52                             <td>${fieldValue(bean:taskRecurringScheduleInstance, field:'period')}</td>
    5353                       
    5454                        </tr>
  • trunk/grails-app/views/taskRecurringSchedule/show.gsp

    r131 r137  
    4545                   
    4646                        <tr class="prop">
     47                            <td valign="top" class="name">Generate Ahead:</td>
     48                           
     49                            <td valign="top" class="value">${fieldValue(bean:taskRecurringScheduleInstance, field:'generateAhead')}</td>
     50                           
     51                        </tr>
     52                   
     53                        <tr class="prop">
     54                            <td valign="top" class="name">Generate Ahead Period:</td>
     55                           
     56                            <td valign="top" class="value"><g:link controller="period" action="show" id="${taskRecurringScheduleInstance?.generateAheadPeriod?.id}">${taskRecurringScheduleInstance?.generateAheadPeriod?.encodeAsHTML()}</g:link></td>
     57                           
     58                        </tr>
     59                   
     60                        <tr class="prop">
    4761                            <td valign="top" class="name">Is Enabled:</td>
    4862                           
     
    5973                   
    6074                        <tr class="prop">
    61                             <td valign="top" class="name">Period:</td>
     75                            <td valign="top" class="name">Next Generation Date:</td>
    6276                           
    63                             <td valign="top" class="value"><g:link controller="period" action="show" id="${taskRecurringScheduleInstance?.period?.id}">${taskRecurringScheduleInstance?.period?.encodeAsHTML()}</g:link></td>
     77                            <td valign="top" class="value">${fieldValue(bean:taskRecurringScheduleInstance, field:'nextGenerationDate')}</td>
    6478                           
    6579                        </tr>
     
    6983                           
    7084                            <td valign="top" class="value">${fieldValue(bean:taskRecurringScheduleInstance, field:'recurEvery')}</td>
     85                           
     86                        </tr>
     87                   
     88                        <tr class="prop">
     89                            <td valign="top" class="name">Recur Period:</td>
     90                           
     91                            <td valign="top" class="value"><g:link controller="period" action="show" id="${taskRecurringScheduleInstance?.recurPeriod?.id}">${taskRecurringScheduleInstance?.recurPeriod?.encodeAsHTML()}</g:link></td>
    7192                           
    7293                        </tr>
  • trunk/grails-app/views/taskRecurringScheduleDetailed/create.gsp

    r135 r137  
    5353                                    <input type="text" class="time ${hasErrors(bean:taskRecurringScheduleInstance,field:'recurEvery','errors')}"
    5454                                                                                id="recurEvery" name="recurEvery" value="${fieldValue(bean:taskRecurringScheduleInstance,field:'recurEvery')}" />
    55                                     <g:select optionKey="id" from="${Period.list()}" name="period.id" value="${taskRecurringScheduleInstance?.period?.id}" ></g:select>
     55                                    <g:select optionKey="id" from="${Period.list()}" name="recurPeriod.id" value="${taskRecurringScheduleInstance?.recurPeriod?.id}" ></g:select>
     56                                </td>
     57                            </tr>   
     58                     
     59                            <tr class="prop">
     60                                <td valign="top" class="name">
     61                                    <label for="recurEvery">Task Duration:</label>
     62                                </td>
     63                                <td valign="top" class="value" >
     64                                    <input type="text" class="time ${hasErrors(bean:taskRecurringScheduleInstance,field:'taskDuration','errors')}"
     65                                        id="taskDuration" name="taskDuration" value="${fieldValue(bean:taskRecurringScheduleInstance,field:'taskDuration')}" />
     66                                    <g:select optionKey="id" from="${Period.list()}" name="taskDurationPeriod.id" value="${taskRecurringScheduleInstance?.taskDurationPeriod?.id}" ></g:select>
     67                                </td>
     68                            </tr>   
     69                     
     70                            <tr class="prop">
     71                                <td valign="top" class="name">
     72                                    <label for="recurEvery">Generate Ahead:</label>
     73                                </td>
     74                                <td valign="top" class="value" >
     75                                    <input type="text" class="time ${hasErrors(bean:taskRecurringScheduleInstance,field:'generateAhead','errors')}"
     76                                        id="generateAhead" name="generateAhead" value="${fieldValue(bean:taskRecurringScheduleInstance,field:'generateAhead')}" />
     77                                    <g:select optionKey="id" from="${Period.list()}" name="generateAheadPeriod.id" value="${taskRecurringScheduleInstance?.generateAheadPeriod?.id}" ></g:select>
    5678                                </td>
    5779                            </tr>
  • trunk/grails-app/views/taskRecurringScheduleDetailed/edit.gsp

    r135 r137  
    5555                                    <input type="text" class="time ${hasErrors(bean:taskRecurringScheduleInstance,field:'recurEvery','errors')}"
    5656                                                                                id="recurEvery" name="recurEvery" value="${fieldValue(bean:taskRecurringScheduleInstance,field:'recurEvery')}" />
    57                                     <g:select optionKey="id" from="${Period.list()}" name="period.id" value="${taskRecurringScheduleInstance?.period?.id}" ></g:select>
     57                                    <g:select optionKey="id" from="${Period.list()}" name="recurPeriod.id" value="${taskRecurringScheduleInstance?.recurPeriod?.id}" ></g:select>
    5858                                </td>
    59                             </tr>
     59                            </tr>   
     60                     
     61                            <tr class="prop">
     62                                <td valign="top" class="name">
     63                                    <label for="recurEvery">Task Duration:</label>
     64                                </td>
     65                                <td valign="top" class="value" >
     66                                    <input type="text" class="time ${hasErrors(bean:taskRecurringScheduleInstance,field:'taskDuration','errors')}"
     67                                        id="taskDuration" name="taskDuration" value="${fieldValue(bean:taskRecurringScheduleInstance,field:'taskDuration')}" />
     68                                    <g:select optionKey="id" from="${Period.list()}" name="taskDurationPeriod.id" value="${taskRecurringScheduleInstance?.taskDurationPeriod?.id}" ></g:select>
     69                                </td>
     70                            </tr>       
     71                     
     72                            <tr class="prop">
     73                                <td valign="top" class="name">
     74                                    <label for="recurEvery">Generate Ahead:</label>
     75                                </td>
     76                                <td valign="top" class="value" >
     77                                    <input type="text" class="time ${hasErrors(bean:taskRecurringScheduleInstance,field:'generateAhead','errors')}"
     78                                        id="generateAhead" name="generateAhead" value="${fieldValue(bean:taskRecurringScheduleInstance,field:'generateAhead')}" />
     79                                    <g:select optionKey="id" from="${Period.list()}" name="generateAheadPeriod.id" value="${taskRecurringScheduleInstance?.generateAheadPeriod?.id}" ></g:select>
     80                                </td>
     81                            </tr>
    6082                       
    6183                            <tr class="prop">
     
    7395                <div class="buttons">
    7496                    <span class="button"><g:actionSubmit class="save" value="Update" /></span>
    75                     <span class="button"><g:actionSubmit class="delete" onclick="return confirm('Are you sure?');" value="Delete" /></span>
     97<!--                     <span class="button"><g:actionSubmit class="delete" onclick="return confirm('Are you sure?');" value="Delete" /></span> -->
    7698                </div>
    7799            </g:form>
  • trunk/grails-app/views/taskRecurringScheduleDetailed/list.gsp

    r135 r137  
    2828                                <g:sortableColumn property="recurEvery" title="Recur Every" />
    2929                               
    30                                 <g:sortableColumn property="period" title="Period" />
     30                                <g:sortableColumn property="recurPeriod" title="Recur Period" />
    3131                               
    3232                                <g:sortableColumn property="isEnabled" title="Is Enabled" />
     
    4747                            <td>${fieldValue(bean:taskRecurringScheduleInstance, field:'recurEvery')}</td>
    4848                       
    49                             <td>${fieldValue(bean:taskRecurringScheduleInstance, field:'period')}</td>
     49                            <td>${fieldValue(bean:taskRecurringScheduleInstance, field:'recurPeriod')}</td>
    5050                       
    5151                            <td>${fieldValue(bean:taskRecurringScheduleInstance, field:'isEnabled')}</td>
  • trunk/grails-app/views/taskRecurringScheduleDetailed/show.gsp

    r135 r137  
    3939                   
    4040                        <tr class="prop">
     41                            <td valign="top" class="name">Start Date:</td>
     42                           
     43                            <td valign="top" class="value">
     44                                <g:formatDate date="${taskRecurringScheduleInstance.startDate}" format="EEE, dd MMM yyyy"/>
     45                            </td>
     46                        </tr>
     47                   
     48                        <tr class="prop">
    4149                            <td valign="top" class="name">Recur Every:</td>
    4250                           
    4351                            <td valign="top" class="value">
    44                                                                 ${taskRecurringScheduleInstance?.recurEvery} ${taskRecurringScheduleInstance?.period}
     52                                                                ${taskRecurringScheduleInstance?.recurEvery} ${taskRecurringScheduleInstance?.recurPeriod}
    4553                                                        </td>
    4654                           
     
    4856                   
    4957                        <tr class="prop">
    50                             <td valign="top" class="name">Start Date:</td>
     58                            <td valign="top" class="name">Task Duration:</td>
    5159                           
    52                                                         <td valign="top" class="value">
    53                                                                 <g:formatDate date="${taskRecurringScheduleInstance.startDate}" format="EEE, dd MMM yyyy"/>
    54                                                         </td>
     60                            <td valign="top" class="value">
     61                                ${taskRecurringScheduleInstance?.taskDuration} ${taskRecurringScheduleInstance?.taskDurationPeriod}
     62                            </td>
     63                        </tr>
     64                   
     65                        <tr class="prop">
     66                            <td valign="top" class="name">Generate Ahead:</td>
     67                           
     68                            <td valign="top" class="value">
     69                                ${taskRecurringScheduleInstance?.generateAhead} ${taskRecurringScheduleInstance?.generateAheadPeriod}
     70                            </td>
     71                           
    5572                        </tr>
    5673                   
     
    6178                           
    6279                        </tr>
     80                    </tbody>
     81                </table>
     82               
     83                <table>
     84                    <tbody>
     85                        <tr class="prop">
     86                            <td valign="top" class="name">Next Target Start Date:</td>
     87                           
     88                            <td valign="top" class="value">
     89                                                                <g:formatDate date="${taskRecurringScheduleInstance.nextTargetStartDate}" format="EEE, dd MMM yyyy"/>
     90                                                        </td>
     91                           
     92                        </tr>
     93                   
     94                        <tr class="prop">
     95                            <td valign="top" class="name">Next Target Completion Date:</td>
     96                           
     97                            <td valign="top" class="value">
     98                                <g:formatDate date="${taskRecurringScheduleInstance.nextTargetCompletionDate}" format="EEE, dd MMM yyyy"/>
     99                            </td>
     100                           
     101                        </tr>
    63102                       
    64103                        <tr class="prop">
    65                                 <td></td>
    66                                                 </tr>
    67                        
    68                         <tr class="prop">
    69                                 <td></td>
    70                                                 </tr>
    71                    
    72                         <tr class="prop">
    73                             <td valign="top" class="name">Next Due Date:</td>
     104                            <td valign="top" class="name">Next Generation Date:</td>
    74105                           
    75106                            <td valign="top" class="value">
    76                                                                 <g:formatDate date="${taskRecurringScheduleInstance.nextDueDate}" format="EEE, dd MMM yyyy"/>
    77                                                         </td>
    78                            
     107                                <g:formatDate date="${taskRecurringScheduleInstance.nextGenerationDate}" format="EEE, dd MMM yyyy"/>
     108                            </td>
    79109                        </tr>
    80110                                               
     
    105135                    <input type="hidden" name="id" value="${taskRecurringScheduleInstance?.id}" />
    106136                    <span class="button"><g:actionSubmit class="edit" value="Edit" /></span>
    107                     <span class="button"><g:actionSubmit class="delete" onclick="return confirm('Are you sure?');" value="Delete" /></span>
     137<!--                     <span class="button"><g:actionSubmit class="delete" onclick="return confirm('Are you sure?');" value="Delete" /></span> -->
    108138                </g:form>
    109139            </div>
  • trunk/web-app/WEB-INF/sitemesh.xml

    r55 r137  
    22    <page-parsers>
    33        <parser content-type="text/html"
    4             class="com.opensymphony.module.sitemesh.parser.FastPageParser" />
     4            class="com.opensymphony.module.sitemesh.parser.HTMLPageParser" />
    55        <parser content-type="text/html;charset=ISO-8859-1"
    6             class="com.opensymphony.module.sitemesh.parser.FastPageParser" />
     6            class="com.opensymphony.module.sitemesh.parser.HTMLPageParser" />
    77        <parser content-type="text/html;charset=UTF-8"
    8             class="com.opensymphony.module.sitemesh.parser.FastPageParser" />           
     8            class="com.opensymphony.module.sitemesh.parser.HTMLPageParser" />           
    99    </page-parsers>
    1010
  • trunk/web-app/WEB-INF/tld/grails.tld

    r56 r137  
    1010    <uri>http://grails.codehaus.org/tags</uri>
    1111
    12     <tag>
    13         <description>
    14                 Includes a javascript src file, library or inline script
    15                 if the tag has no src or library attributes its assumed to be an inline script
    16         </description>
    17         <name>javascript</name>
    18         <tag-class>org.codehaus.groovy.grails.plugins.web.taglib.JavascriptTagLib</tag-class>
    19         <body-content>JSP</body-content>
    20         <attribute>
    21             <description>A predefined JavaScript or AJAX library to load</description>
    22             <name>library</name>
    23             <required>false</required>
    24             <rtexprvalue>true</rtexprvalue>
    25         </attribute>
    26         <attribute>
    27             <description>A custom (or unknown to Grails) JavaScript source file</description>
    28             <name>src</name>
    29             <required>false</required>
    30             <rtexprvalue>true</rtexprvalue>
    31         </attribute>
    32         <attribute>
    33             <description>Since 0.6 Specifies the full base url to prepend to the library name</description>
    34             <name>base</name>
    35             <required>false</required>
    36             <rtexprvalue>true</rtexprvalue>
    37         </attribute>
    38         <dynamic-attributes>false</dynamic-attributes>
    39     </tag>
    40    
    41     <!-- 
    42     <tag>
    43         <description>
    44         </description>
    45         <name></name>
    46         <tag-class></tag-class>
    47         <body-content></body-content>
    48         <attribute>
    49                 <description></description>
    50                 <name></name>
    51                 <required></required>
    52                 <rtexprvalue></rtexprvalue>
    53         </attribute>
    54     </tag>
    55     -->
    56     <tag>
    57         <description>Escapes a javasacript string replacing single/double quotes and new lines
    58         </description>
    59         <name>escapeJavascript</name>
    60         <tag-class>org.codehaus.groovy.grails.plugins.web.taglib.JavascriptTagLib</tag-class>
    61         <body-content>JSP</body-content>
    62     </tag>
    63    
    64     <tag>
    65         <description>Creates a form submit button that submits the current form to a remote ajax call
    66         </description>
    67         <name>submitToRemote</name>
    68         <tag-class>org.codehaus.groovy.grails.plugins.web.taglib.JavascriptTagLib</tag-class>
    69         <body-content>JSP</body-content>
    70         <attribute>
    71             <name>name</name>
    72             <required>true</required>
    73             <rtexprvalue>true</rtexprvalue>
    74         </attribute>
    75         <attribute>
    76             <name>value</name>
    77             <required>false</required>
    78             <rtexprvalue>true</rtexprvalue>
    79         </attribute>
    80         <attribute>
    81             <name>id</name>
    82             <required>false</required>
    83             <rtexprvalue>true</rtexprvalue>
    84         </attribute>
    85         <attribute>
    86             <name>class</name>
    87             <required>false</required>
    88             <rtexprvalue>true</rtexprvalue>
    89         </attribute>
    90     </tag>
    91    
    92     <tag>
    93         <description>A field that sends its value to a remote link
    94         </description>
    95         <name>remoteField</name>
    96         <tag-class>org.codehaus.groovy.grails.plugins.web.taglib.JavascriptTagLib</tag-class>
    97         <body-content>JSP</body-content>
    98         <attribute>
    99             <name>name</name>
    100             <required>true</required>
    101             <rtexprvalue>true</rtexprvalue>
    102         </attribute>
    103         <attribute>
    104             <name>value</name>
    105             <required>false</required>
    106             <rtexprvalue>true</rtexprvalue>
    107         </attribute>
    108         <attribute>
    109             <name>paramName</name>
    110             <required>false</required>
    111             <rtexprvalue>true</rtexprvalue>
    112         </attribute>
    113         <attribute>
    114             <name>before</name>
    115             <required>false</required>
    116             <rtexprvalue>true</rtexprvalue>
    117         </attribute>
    118         <attribute>
    119             <name>after</name>
    120             <required>false</required>
    121             <rtexprvalue>true</rtexprvalue>
    122         </attribute>
    123         <attribute>
    124             <name>action</name>
    125             <required>false</required>
    126             <rtexprvalue>true</rtexprvalue>
    127         </attribute>
    128         <attribute>
    129             <name>controller</name>
    130             <required>false</required>
    131             <rtexprvalue>true</rtexprvalue>
    132         </attribute>
    133         <attribute>
    134             <name>id</name>
    135             <required>false</required>
    136             <rtexprvalue>true</rtexprvalue>
    137         </attribute>
    138         <attribute>
    139             <name>params</name>
    140             <required>false</required>
    141             <rtexprvalue>true</rtexprvalue>
    142         </attribute>
    143         <attribute>
    144             <name>asynchronous</name>
    145             <required>false</required>
    146             <rtexprvalue>true</rtexprvalue>
    147         </attribute>
    148         <attribute>
    149             <name>method</name>
    150             <required>false</required>
    151             <rtexprvalue>true</rtexprvalue>
    152         </attribute>
    153         <attribute>
    154             <name>update</name>
    155             <required>false</required>
    156             <rtexprvalue>true</rtexprvalue>
    157         </attribute>
    158         <attribute>
    159             <name>onSuccess</name>
    160             <required>false</required>
    161             <rtexprvalue>true</rtexprvalue>
    162         </attribute>
    163         <attribute>
    164             <name>onFailure</name>
    165             <required>false</required>
    166             <rtexprvalue>true</rtexprvalue>
    167         </attribute>
    168         <attribute>
    169             <name>onComplete</name>
    170             <required>false</required>
    171             <rtexprvalue>true</rtexprvalue>
    172         </attribute>
    173         <attribute>
    174             <name>onLoading</name>
    175             <required>false</required>
    176             <rtexprvalue>true</rtexprvalue>
    177         </attribute>
    178         <attribute>
    179             <name>onLoaded</name>
    180             <required>false</required>
    181             <rtexprvalue>true</rtexprvalue>
    182         </attribute>
    183         <attribute>
    184             <name>onUninitialized</name>
    185             <required>false</required>
    186             <rtexprvalue>true</rtexprvalue>
    187         </attribute>
    188         <attribute>
    189             <name>on_ERROR_CODE</name>
    190             <required>false</required>
    191             <rtexprvalue>true</rtexprvalue>
    192         </attribute>
    193         <dynamic-attributes>true</dynamic-attributes>
    194     </tag>
    195     <tag>
    196         <description>
    197                 Enables the storing of a value into the given ${var}
    198         </description>
    199         <name>set</name>
    200         <tag-class>org.codehaus.groovy.grails.web.taglib.GroovySetTag</tag-class>
    201         <body-content>JSP</body-content>
    202         <attribute>
    203             <description>The value to store</description>
    204             <name>value</name>
    205             <required>true</required>
    206             <rtexprvalue>true</rtexprvalue>
    207         </attribute>
    208         <attribute>
    209             <description>The name of the variable to store the value in</description>
    210             <name>var</name>
    211             <required>true</required>
    212             <rtexprvalue>true</rtexprvalue>
    213         </attribute>
    214         <dynamic-attributes>false</dynamic-attributes>
    215     </tag>
    216 
    217     <tag>
    218         <description>
    219                 Enables the storing of a value into the given ${var} into the page context
    220         </description>
    221         <name>def</name>
    222         <tag-class>org.codehaus.groovy.grails.web.taglib.GroovyDefTag</tag-class>
    223         <body-content>JSP</body-content>
    224         <attribute>
    225             <description>The value to store</description>
    226             <name>value</name>
    227             <required>true</required>
    228             <rtexprvalue>true</rtexprvalue>
    229         </attribute>
    230         <attribute>
    231             <description>The name of the variable to store the value in</description>
    232             <name>var</name>
    233             <required>true</required>
    234             <rtexprvalue>true</rtexprvalue>
    235         </attribute>
    236         <dynamic-attributes>false</dynamic-attributes>
    237     </tag>
    238 
    239     <tag>
    240         <description>
    241                 Logical if tag to test whether the given condition is true
    242         </description>
    243         <name>if</name>
    244         <tag-class>org.codehaus.groovy.grails.web.taglib.GroovyIfTag</tag-class>
    245         <body-content>JSP</body-content>
    246         <attribute>
    247             <description>The condition to test</description>
    248             <name>test</name>
    249             <required>true</required>
    250             <rtexprvalue>true</rtexprvalue>
    251         </attribute>
    252         <dynamic-attributes>false</dynamic-attributes>
    253     </tag>
    254 
    255     <tag>
    256         <description>
    257                 Logical else tag as fallback if the if condition fails
    258         </description>
    259         <name>else</name>
    260         <tag-class>org.codehaus.groovy.grails.web.taglib.GroovyElseTag</tag-class>
    261         <body-content>JSP</body-content>
    262         <dynamic-attributes>false</dynamic-attributes>
    263     </tag>
    264 
    265     <tag>
    266         <description>
    267                 Logical elseif tag to test whether the given condition is true
    268         </description>
    269         <name>elseif</name>
    270         <tag-class>org.codehaus.groovy.grails.web.taglib.GroovyElseIfTag</tag-class>
    271         <body-content>JSP</body-content>
    272         <attribute>
    273             <description>The condition to test</description>
    274             <name>test</name>
    275             <required>true</required>
    276             <rtexprvalue>true</rtexprvalue>
    277         </attribute>
    278         <dynamic-attributes>false</dynamic-attributes>
    279     </tag>
    280 
    281         <tag>
    282         <description>
    283                 Tag to loop over a collection while the test expression returns true
    284         </description>
    285         <name>while</name>
    286         <tag-class>org.codehaus.groovy.grails.web.taglib.GroovyWhileTag</tag-class>
    287         <body-content>JSP</body-content>
    288         <attribute>
    289             <description>The condition to test</description>
    290             <name>test</name>
    291             <required>true</required>
    292             <rtexprvalue>true</rtexprvalue>
    293         </attribute>
    294         <dynamic-attributes>false</dynamic-attributes>
    295     </tag>
    296 
    297     <tag>
    298         <description>Iterates over the given collection</description>
    299         <name>each</name>
    300         <tag-class>org.codehaus.groovy.grails.web.taglib.GroovyEachTag</tag-class>
    301         <body-content>JSP</body-content>
    302         <attribute>
    303                 <description>The collection to iterate over</description>
    304             <name>in</name>
    305             <required>true</required>
    306             <rtexprvalue>true</rtexprvalue>
    307         </attribute>
    308         <attribute>
    309                 <description>An optional var-name to reference onto the elements</description>
    310             <name>var</name>
    311             <required>false</required>
    312             <rtexprvalue>true</rtexprvalue>
    313         </attribute>
    314         <attribute>
    315             <name>status</name>
    316             <required>false</required>
    317             <rtexprvalue>true</rtexprvalue>
    318         </attribute>
    319         <dynamic-attributes>true</dynamic-attributes>
    320     </tag>
    321 
    322     <tag>
    323         <description>Iterates over the given collection</description>
    324         <name>findAll</name>
    325         <tag-class>org.codehaus.groovy.grails.web.taglib.GroovyFindAllTag</tag-class>
    326         <body-content>JSP</body-content>
    327         <attribute>
    328                 <description>The collection to iterate over</description>
    329             <name>in</name>
    330             <required>true</required>
    331             <rtexprvalue>true</rtexprvalue>
    332         </attribute>
    333         <attribute>
    334                 <description>An optional var-name to reference onto the elements</description>
    335             <name>var</name>
    336             <required>false</required>
    337             <rtexprvalue>true</rtexprvalue>
    338         </attribute>
    339         <attribute>
    340                 <description>The expression to filter the elements to iterate over</description>
    341             <name>expr</name>
    342             <required>true</required>
    343             <rtexprvalue>true</rtexprvalue>
    344         </attribute>
    345         <attribute>
    346             <name>status</name>
    347             <required>false</required>
    348             <rtexprvalue>true</rtexprvalue>
    349         </attribute>
    350         <dynamic-attributes>true</dynamic-attributes>
    351     </tag>
    352 
    353         <tag>
    354         <description>Iterates over the given collection and collects the elements
    355                 you want to work with</description>
    356         <name>collect</name>
    357         <tag-class>org.codehaus.groovy.grails.web.taglib.GroovyCollectTag</tag-class>
    358         <body-content>JSP</body-content>
    359         <attribute>
    360                 <description>The collection to iterate over</description>
    361             <name>in</name>
    362             <required>true</required>
    363             <rtexprvalue>true</rtexprvalue>
    364         </attribute>
    365         <attribute>
    366                 <description>An optional var-name to reference onto the elements</description>
    367             <name>var</name>
    368             <required>false</required>
    369             <rtexprvalue>true</rtexprvalue>
    370         </attribute>
    371         <attribute>
    372                 <description>The expression to use to collect the elements. The
    373                 expression must retur true to add the element to the
    374                 collection</description>
    375             <name>expr</name>
    376             <required>true</required>
    377             <rtexprvalue>true</rtexprvalue>
    378         </attribute>
    379         <attribute>
    380             <name>status</name>
    381             <required>false</required>
    382             <rtexprvalue>true</rtexprvalue>
    383         </attribute>
    384         <dynamic-attributes>false</dynamic-attributes>
    385     </tag>
    386 
    387     <tag>
    388         <description>Iterates over the given collection and filters the elements
    389         with a regular expression</description>
    390         <name>grep</name>
    391         <tag-class>org.codehaus.groovy.grails.web.taglib.GroovyGrepTag</tag-class>
    392         <body-content>JSP</body-content>
    393         <attribute>
    394                 <description>The collection to iterate over</description>
    395             <name>in</name>
    396             <required>true</required>
    397             <rtexprvalue>true</rtexprvalue>
    398         </attribute>
    399         <attribute>
    400                 <description>An optional var-name to reference onto the elements</description>
    401             <name>var</name>
    402             <required>false</required>
    403             <rtexprvalue>true</rtexprvalue>
    404         </attribute>
    405         <attribute>
    406                 <description>The regular expression to filter the element with. The
    407                 filter is a simple Groovy Regex</description>
    408             <name>filter</name>
    409             <required>true</required>
    410             <rtexprvalue>true</rtexprvalue>
    411         </attribute>
    412         <attribute>
    413             <name>status</name>
    414             <required>false</required>
    415             <rtexprvalue>true</rtexprvalue>
    416         </attribute>
    417         <dynamic-attributes>false</dynamic-attributes>
    418     </tag>
    419 
    42012
    42113    <tag>
Note: See TracChangeset for help on using the changeset viewer.