Changeset 1461


Ignore:
Timestamp:
Feb 1, 2011, 2:36:57 PM (6 years ago)
Author:
work@…
Message:
  • added wizard tags to gdt taglib
Location:
trunk
Files:
3 added
26 edited

Legend:

Unmodified
Added
Removed
  • trunk/grails-app/controllers/dbnp/importer/ImporterController.groovy

    r1456 r1461  
    22
    33import dbnp.studycapturing.*
    4 
     4import org.dbnp.gdt.*
    55import grails.converters.JSON
    6 //import cr.co.arquetipos.crypto.Blowfish
    76import org.codehaus.groovy.grails.plugins.web.taglib.ValidationTagLib
    87import grails.plugins.springsecurity.Secured
  • trunk/grails-app/taglib/dbnp/importer/ImporterTagLib.groovy

    r1456 r1461  
    1515
    1616package dbnp.importer
    17 
     17import org.dbnp.gdt.*
    1818import org.apache.poi.ss.usermodel.Cell
    1919import org.apache.poi.ss.usermodel.DataFormatter
  • trunk/grails-app/taglib/dbnp/studycapturing/WizardTagLib.groovy

    r1460 r1461  
    22
    33import dbnp.authentication.SecUser
    4 import cr.co.arquetipos.crypto.Blowfish
    5 import nl.grails.plugins.ajaxflow.AjaxflowTagLib
    64import org.dbnp.gdt.*
    75
     
    1816 * $Date$
    1917 */
    20 class WizardTagLib extends AjaxflowTagLib {
     18class WizardTagLib extends GdtTagLib {
    2119        def AuthenticationService
    2220       
    23         // define the tag namespace (e.g.: <wizard:action ... />
    24         static namespace = "wizard"
    25 
    26         // define default text field width
    27         static defaultTextFieldSize = 25;
    28 
    29         /**
    30          * generate a base form element
    31          * @param String inputElement name
    32          * @param Map attributes
    33          * @param Closure help content
    34          */
    35         def baseElement = { inputElement, attrs, help ->
    36                 log.info ".rendering [" + inputElement + "] with name [" + attrs.get('name') + "] and value [" + ((attrs.value) ? attrs.get('value').toString() : "-") + "]"
    37 
    38                 // work variables
    39                 def description = attrs.remove('description')
    40                 def addExampleElement = attrs.remove('addExampleElement')
    41                 def addExample2Element = attrs.remove('addExample2Element')
    42                 def helpText = help().trim()
    43 
    44                 // execute inputElement call
    45                 def renderedElement = "$inputElement"(attrs)
    46 
    47                 // if false, then we skip this element
    48                 if (!renderedElement) return false
    49 
    50                 // render a form element
    51                 out << '<div class="element'+ ((attrs.get('required')) ? ' required' : '') +'"'+ ((attrs.get('elementId')) ? 'id="'+attrs.remove('elementId')+'"': '') + '>'
    52                 out << ' <div class="description">'
    53                 out << ((description) ? description.replaceAll(/[a-z][A-Z][a-z]/) { it[0] + ' ' + it[1..2] }.replaceAll(/\w+/) { it[0].toUpperCase() + ((it.size() > 1) ? it[1..-1] : '') } : '')
    54                 out << ' </div>'
    55                 out << ' <div class="input">'
    56                 out << renderedElement
    57                 out << ((helpText.size() > 0) ? '       <div class="helpIcon"></div>' : '')
    58 
    59                 // add an disabled input box for feedback purposes
    60                 // @see dateElement(...)
    61                 if (addExampleElement) {
    62                         def exampleAttrs = new LinkedHashMap()
    63                         exampleAttrs.name = attrs.get('name') + 'Example'
    64                         exampleAttrs.class = 'isExample'
    65                         exampleAttrs.disabled = 'disabled'
    66                         exampleAttrs.size = 30
    67                         out << textField(exampleAttrs)
    68                 }
    69 
    70                 // add an disabled input box for feedback purposes
    71                 // @see dateElement(...)
    72                 if (addExample2Element) {
    73                         def exampleAttrs = new LinkedHashMap()
    74                         exampleAttrs.name = attrs.get('name') + 'Example2'
    75                         exampleAttrs.class = 'isExample'
    76                         exampleAttrs.disabled = 'disabled'
    77                         exampleAttrs.size = 30
    78                         out << textField(exampleAttrs)
    79                 }
    80 
    81                 out << ' </div>'
    82 
    83                 // add help content if it is available
    84                 if (helpText.size() > 0) {
    85                         out << '  <div class="helpContent">'
    86                         out << '    ' + helpText
    87                         out << '  </div>'
    88                 }
    89 
    90                 out << '</div>'
    91         }
    92 
    93         /**
    94          * bind an ajax submit to an onChange event
    95          * @param attrs
    96          * @return attrs
    97          */
    98         private getAjaxOnChange = { attrs ->
    99                 // work variables
    100                 def internetExplorer = (request.getHeader("User-Agent") =~ /MSIE/)
    101                 def ajaxOnChange = attrs.remove('ajaxOnChange')
    102 
    103                 // is ajaxOnChange defined
    104                 if ( ajaxOnChange ) {
    105                         if (!attrs.onChange) attrs.onChange = ''
    106 
    107                         // add onChange AjaxSubmit javascript
    108                         if (internetExplorer) {
    109                                 //              - somehow IE submits these onchanges twice which messes up some parts of the wizard
    110                                 //                (especially the events page). In order to bypass this issue I have introduced an
    111                                 //                if statement utilizing the 'before' and 'after' functionality of the submitToRemote
    112                                 //                function. This check expects lastRequestTime to be in the global Javascript scope,
    113                                 //                (@see pageContent) and calculates the time difference in miliseconds between two
    114                                 //                onChange executions. If this is more than 100 miliseconds the request is executed,
    115                                 //                otherwise it will be ignored... --> 20100527 - Jeroen Wesbeek
    116                                 attrs.onChange += ajaxSubmitJs(
    117                                         [
    118                                                 before: "var execute=true;try { var currentTime=new Date().getTime();execute = ((currentTime-lastRequestTime) > 100);lastRequestTime=currentTime;  } catch (e) {};if (execute) { 1",
    119                                                 after: "}",
    120                                                 functionName: ajaxOnChange,
    121                                                 url: attrs.get('url'),
    122                                                 update: attrs.get('update'),
    123                                                 afterSuccess: attrs.get('afterSuccess')
    124                                         ],
    125                                         ''
    126                                 )
    127                         } else {
    128                                 // this another W3C browser that actually behaves as expected... damn you IE, DAMN YOU!
    129                                 attrs.onChange += ajaxSubmitJs(
    130                                         [
    131                                                 functionName: ajaxOnChange,
    132                                                 url: attrs.get('url'),
    133                                                 update: attrs.get('update'),
    134                                                 afterSuccess: attrs.get('afterSuccess')
    135                                         ],
    136                                         ''
    137                                 )
    138                         }
    139                 }
    140 
    141                 return attrs
    142         }
    143 
    144         /**
    145          * render an ajaxButtonElement
    146          * @param Map attrs
    147          * @param Closure body  (help text)
    148          */
    149         def ajaxButtonElement = { attrs, body ->
    150                 baseElement.call(
    151                         'ajaxButton',
    152                         attrs,
    153                         body
    154                 )
    155         }
    156 
    157         /**
    158          * render a textFieldElement
    159          * @param Map attrs
    160          * @param Closure body  (help text)
    161          */
    162         def textFieldElement = { attrs, body ->
    163                 // set default size, or scale to max length if it is less than the default size
    164                 if (!attrs.get("size")) {
    165                         if (attrs.get("maxlength")) {
    166                                 attrs.size = ((attrs.get("maxlength") as int) > defaultTextFieldSize) ? defaultTextFieldSize : attrs.get("maxlength")
    167                         } else {
    168                                 attrs.size = defaultTextFieldSize
    169                         }
    170                 }
    171 
    172                 // render template element
    173                 baseElement.call(
    174                         'textField',
    175                         attrs,
    176                         body
    177                 )
    178         }
    179 
    180         /**
    181          * render a textAreaElement
    182          * @param Map attrs
    183          * @param Closure body  (help text)
    184          */
    185         def textAreaElement = { attrs, body ->
    186                 // set default size, or scale to max length if it is less than the default size
    187 
    188                 // render template element
    189                 baseElement.call(
    190                         'textArea',
    191                         attrs,
    192                         body
    193                 )
    194         }
    195 
    196 
    197         /**
    198          * render a select form element
    199          * @param Map attrs
    200          * @param Closure body  (help text)
    201          */
    202         def selectElement = { attrs, body ->
    203                 baseElement.call(
    204                         'select',
    205                         attrs,
    206                         body
    207                 )
    208         }
    209 
    210         /**
    211          * render a checkBox form element
    212          * @param Map attrs
    213          * @param Closure body  (help text)
    214          */
    215         def checkBoxElement = { attrs, body ->
    216                 baseElement.call(
    217                         'checkBox',
    218                         attrs,
    219                         body
    220                 )
    221         }
    222 
    223         /**
    224          * render a set of radio form elements
    225          * @param Map attrs
    226          * @param Closure body  (help text)
    227          */
    228         def radioElement = { attrs, body ->
    229                 baseElement.call(
    230                         'radioList',
    231                         attrs,
    232                         body
    233                 )
    234         }
    235 
    236         /**
    237          * render a set of radio elements
    238          * @param Map attrs
    239          * @param Closure body  (help text)
    240          */
    241         def radioList = { attrs ->
    242                 def checked = true
    243 
    244                 attrs.elements.each {
    245                         out << radio(
    246                                 name: attrs.name,
    247                                 value: it,
    248                                 checked: (attrs.value == it || (!attrs.value && checked))
    249                         )
    250                         out << it
    251                         checked = false
    252                 }
    253         }
    254 
    255         /**
    256          * render a dateElement
    257          * NOTE: datepicker is attached through wizard.js!
    258          * @param Map attrs
    259          * @param Closure body  (help text)
    260          */
    261         def dateElement = { attrs, body ->
    262                 // transform value?
    263                 if (attrs.value instanceof Date) {
    264                         // transform date instance to formatted string (dd/mm/yyyy)
    265                         attrs.value = String.format('%td/%<tm/%<tY', attrs.value)
    266                 }
    267 
    268                 // add 'rel' field to identity the datefield using javascript
    269                 attrs.rel = 'date'
    270 
    271                 // set some textfield values
    272                 attrs.maxlength = (attrs.maxlength) ? attrs.maxlength : 10
    273                 attrs.addExampleElement = true
    274 
    275                 // render a normal text field
    276                 //out << textFieldElement(attrs,body)
    277                 textFieldElement.call(
    278                         attrs,
    279                         body
    280                 )
    281         }
    282 
    283         /**
    284          * render a dateElement
    285          * NOTE: datepicker is attached through wizard.js!
    286          * @param Map attrs
    287          * @param Closure body  (help text)
    288          */
    289         def timeElement = { attrs, body ->
    290                 // transform value?
    291                 if (attrs.value instanceof Date) {
    292                         // transform date instance to formatted string (dd/mm/yyyy)
    293                         attrs.value = String.format('%td/%<tm/%<tY %<tH:%<tM', attrs.value)
    294                 }
    295 
    296                 // add 'rel' field to identity the field using javascript
    297                 attrs.rel = 'datetime'
    298 
    299                 attrs.addExampleElement = true
    300                 attrs.addExample2Element = true
    301                 attrs.maxlength = 16
    302 
    303                 // render a normal text field
    304                 //out << textFieldElement(attrs,body)
    305                 textFieldElement.call(
    306                         attrs,
    307                         body
    308                 )
    309         }
    310 
    311         /**
    312          * Button form element
    313          * @param Map attributes
    314          * @param Closure help content
    315          */
    316         def buttonElement = { attrs, body ->
    317                 // render template element
    318                 baseElement.call(
    319                         'ajaxButton',
    320                         attrs,
    321                         body
    322                 )
    323         }
    324 
    325 
    326         /**
    327          * Term form element
    328          * @param Map attributes
    329          * @param Closure help content
    330          */
    331         def termElement = { attrs, body ->
    332                 // render term element
    333                 baseElement.call(
    334                         'termSelect',
    335                         attrs,
    336                         body
    337                 )
    338         }
    339 
    340         /**
    341          * Term select element
    342          * @param Map attributes
    343          */
    344         // TODO: change termSelect to use Term accessions instead of preferred names, to make it possible to track back
    345         // terms from multiple ontologies with possibly the same preferred name
    346         def termSelect = { attrs ->
    347                 def from = []
    348 
    349                 // got ontologies?
    350                 if (attrs.ontologies) {
    351                         // are the ontologies a string?
    352                         if (attrs.ontologies instanceof String) {
    353                                 attrs.ontologies.split(/\,/).each() { ncboId ->
    354                                         // trim the id
    355                                         ncboId.trim()
    356 
    357                                         // fetch all terms for this ontology
    358                                         def ontology = Ontology.findAllByNcboId(ncboId)
    359 
    360                                         // does this ontology exist?
    361                                         if (ontology) {
    362                                                 ontology.each() {
    363                                                         Term.findAllByOntology(it).each() {
    364                                                                 // key = ncboId:concept-id
    365                                                                 from[ from.size() ] = it.name
    366                                                         }
    367                                                 }
    368                                         }
    369                                 }
    370                         } else if (attrs.ontologies instanceof Set) {
    371                                 // are they a set instead?
    372                                 def ontologyList = ""
    373 
    374                                 // iterate through set
    375                                 attrs.ontologies.each() { ontology ->
    376                                         if (ontology) {
    377                                                 ontologyList += ontology.ncboId + ","
    378 
    379                                                 Term.findAllByOntology(ontology).each() {
    380                                                         from[ from.size() ] = it.name
    381                                                 }
    382 
    383                                                 // strip trailing comma
    384                                                 attrs.ontologies = ontologyList[0..-2]
    385                                         }
    386                                 }
    387                         }
    388 
    389                         // sort alphabetically
    390                         from.sort()
    391 
    392                         // add a dummy field?
    393                         if (attrs.remove('addDummy')) {
    394                                 from.add(0,'')
    395                         }
    396 
    397                         // define 'from'
    398                         attrs.from = from
    399 
    400                         // add 'rel' attribute
    401                         attrs.rel = 'term'
    402 
    403                         // got an ajaxOnChange defined?
    404                         attrs = getAjaxOnChange.call(
    405                                 attrs
    406                         )
    407 
    408                         out << select(attrs)
    409                 } else {
    410                         out << "<b>ontologies missing!</b>"
    411                 }
    412         }
    413 
    414         /**
    415          * Ontology form element
    416          * @param Map attributes
    417          * @param Closure help content
    418          */
    419         def ontologyElement = { attrs, body ->
    420                 // @see http://www.bioontology.org/wiki/index.php/NCBO_Widgets#Term-selection_field_on_a_form
    421                 // @see ontology-chooser.js, table-editor.js
    422                 baseElement.call(
    423                         'textField',
    424                         [
    425                             name: attrs.name,
    426                                 value: attrs.value,
    427                                 description: attrs.description,
    428                                 rel: 'ontology-' + ((attrs.ontology) ? attrs.ontology : 'all'),
    429                                 size: 25
    430                         ],
    431                         body
    432                 )
    433                 out << hiddenField(
    434                         name: attrs.name + '-concept_id'
    435                 )
    436                 out << hiddenField(
    437                         name: attrs.name + '-ontology_id'
    438                 )
    439                 out << hiddenField(
    440                         name: attrs.name + '-full_id'
    441                 )
    442         }
    443 
    44421        /**
    44522         * Study form element
     
    48057
    48158        /**
    482          * Template form element
    483          * @param Map attributes
    484          * @param Closure help content
    485          */
    486         def templateElement = { attrs, body ->
    487                 // render template element
    488                 baseElement.call(
    489                         'templateSelect',
    490                         attrs,
    491                         body
    492                 )
    493         }
    494 
    495         /**
    496          * render a template select element
    497          * @param Map attrs
    498          */
    499         def templateSelect = { attrs ->
    500                 def entity = attrs.remove('entity')
    501 
    502                 // add the entity class name to the element
    503                 // do we have crypto information available?
    504                 if (grailsApplication.config.crypto) {
    505                         // generate a Blowfish encrypted and Base64 encoded string.
    506                         attrs['entity'] = URLEncoder.encode(
    507                                 Blowfish.encryptBase64(
    508                                         entity.toString().replaceAll(/^class /, ''),
    509                                         grailsApplication.config.crypto.shared.secret
    510                                 )
    511                         )
    512                 } else {
    513                         // base64 only; this is INSECURE! As this class
    514                         // is instantiated elsewehere. Possibly exploitable!
    515                         attrs['entity'] = URLEncoder.encode(entity.toString().replaceAll(/^class /, '').bytes.encodeBase64())
    516                 }
    517                
    518                 // fetch templates
    519                 attrs.from = (entity) ? Template.findAllByEntity(entity) : Template.findAll()
    520 
    521                 // got a name?
    522                 if (!attrs.name) {
    523                         attrs.name = 'template'
    524                 }
    525 
    526                 // add a rel element if it does not exist
    527                 if (!attrs.rel) {
    528                         attrs.rel = 'template'
    529                 }
    530 
    531                 // got an ajaxOnChange defined?
    532                 attrs = getAjaxOnChange.call(
    533                         attrs
    534                 )
    535 
    536                 // got result?
    537                 if (attrs.from.size() > 0 || attrs.get('addDummy')) {
    538                         // transform all values into strings
    539                         def from = []
    540                         attrs.from.each { from[ from.size() ] = it.toString() }
    541 
    542                         // sort alphabetically
    543                         from.sort()
    544 
    545                         // add a dummy field?
    546                         if (attrs.remove('addDummy')) {
    547                                 from.add(0,'')
    548                         }
    549 
    550                         // set attributes
    551                         attrs.from = from
    552                         attrs.value = (attrs.value) ? attrs.value.toString() : ''
    553 
    554                         // output select element
    555                         out << select(attrs)
    556                 } else {
    557                         // no, return false to make sure this element
    558                         // is not rendered in the template
    559                         return false
    560                 }
    561         }
    562 
    563 
    564         /**
    565          * File form element
    566          * @param Map attributes
    567          * @param Closure help content
    568          */
    569         def fileFieldElement = { attrs, body ->
    570                 // render term element
    571                 baseElement.call(
    572                         'fileField',
    573                         attrs,
    574                         body
    575                 )
    576         }
    577 
    578         /**
    579          * file field.
    580          * @param attributes
    581          */
    582         def fileField = { attrs ->
    583                 /*
    584                 out << '<input type="file" name="' + attrs.name + '"/>'
    585                 if( attrs.value ) {
    586                         out << '<a href="' + resource(dir: '') + '/file/get/' + attrs.value + '" class="isExample">Now contains: ' + attrs.value + '</a>'
    587                 }
    588                 */
    589 
    590                 out << '<div id="upload_button_' + attrs.name + '" class="upload_button">Upload</div>';
    591                 out << '<input type="hidden" name="' + attrs.name + '" id="' + attrs.name + '" value="' + attrs.value + '">';
    592                 out << '<div id="' + attrs.name + 'Example" class="upload_info"></div>';
    593                 out << '<a id="' + attrs.name + 'Delete" class="upload_del" href="#" onClick="if( confirm( \'Are you sure to delete this file?\' ) ) { deleteFile( \'' + attrs.name + '\' ); } return false;"><img src="' + resource( dir: 'images/icons', file: 'delete.png', plugin: 'famfamfam' ) + '"></a>';
    594                 out << '<script type="text/javascript">';
    595                 out << '  $(document).ready( function() { ';
    596                 out << '    var filename = "' + attrs.value + '";';
    597                 out << '    fileUploadField( "' + attrs.name + '" );';
    598                 out << '    if( filename != "" ) {';
    599                 out << '      $("#' + attrs.name + 'Delete").show();';
    600                 out << '      $("#' + attrs.name + 'Example").html("Current file: " + createFileHTML( filename ) )';
    601                 out << '    }';
    602                 out << '  } );';
    603                 out << "</script>\n";
    604         }
    605 
    606         /**
    60759         * Protocol form element
    60860         * @param Map attributes
    60961         * @param Closure help content
    610          */
     62         *
    61163        def protocolElement = { attrs, body ->
    61264                // render protocol element
     
    62173         * render a protocol select element
    62274         * @param Map attrs
    623          */
     75         *
    62476        def protocolSelect = { attrs ->
    62577                // fetch all protocold
     
    64597                out << "!! test version of 'show' tag !!"
    64698        }
    647 
    648         /**
    649          * render table headers for all subjectFields in a template
    650          * @param Map attributes
    651          */
    652         def templateColumnHeaders = { attrs ->
    653                 def entity              = (attrs.get('entity'))
    654                 def template    = (entity && entity instanceof TemplateEntity) ? entity.template : null
    655                 def columnWidths= (attrs.get('columnWidths')) ? attrs.remove('columnWidths') : []
    656 
    657                 // got a template?
    658                 if (template) {
    659                         // render template fields
    660                         entity.giveFields().each() {
    661                                 // Format the column name by:
    662                                 // - separating combined names (SampleName --> Sample Name)
    663                                 // - capitalizing every seperate word
    664                                 def ucName = it.name.replaceAll(/[a-z][A-Z][a-z]/) {
    665                                         it[0] + ' ' + it[1..2]
    666                                 }.replaceAll(/\w+/) {
    667                                         it[0].toUpperCase() + ((it.size() > 1) ? it[1..-1] : '')
    668                                 }
    669 
    670                                 // strip spaces
    671                                 def ucNameSpaceless = ucName.replaceAll(/ /) { '' }
    672 
    673                                 // do we have to use a specific width for this column?
    674                                 if (columnWidths[ucName]) {
    675                                         out << '<div class="' + attrs.get('class') + '" style="width:' + columnWidths[ucNameSpaceless] + 'px;" rel="resized">' + ucName + (it.unit ? " (${it.unit})" : '')
    676                                 } else {
    677                                         out << '<div class="' + attrs.get('class') + '">' + ucName + (it.unit ? " (${it.unit})" : '')
    678                                 }
    679                                 if (it.comment) {
    680                                         out << '<div class="helpIcon"></div>'
    681                                         out << '<div class="helpContent">' + it.comment + '</div>'
    682                                 }
    683                                 out << '</div>'
    684                         }
    685                 }
    686         }
    687 
    688         def templateColumns = { attrs ->
    689                 // render template fields as columns
    690                 attrs.renderType = 'column'
    691                 out << renderTemplateFields(attrs)
    692         }
    693 
    694         def templateElements = { attrs ->
    695                 // render template fields as form elements
    696                 attrs.renderType = 'element'
    697                 out << renderTemplateFields(attrs)
    698         }
    699 
    700         /**
    701          * render form elements based on an entity's template
    702          * @param Map attributes
    703          * @param String body
    704          */
    705         def renderTemplateFields = { attrs ->
    706                 def renderType  = attrs.remove('renderType')
    707                 def entity              = (attrs.get('entity'))
    708                 def prependName = (attrs.get('name')) ? attrs.remove('name')+'_' : ''
    709                 def template    = (entity && entity instanceof TemplateEntity) ? entity.template : null
    710                 def inputElement= null
    711                 def addDummy    = (attrs.get('addDummy')) ? true : false
    712 
    713                 // got a template?
    714                 if (template) {
    715                         // render template fields
    716                         entity.giveFields().each() {
    717                                 def fieldValue  = entity.getFieldValue(it.name)
    718                                 def helpText    = (it.comment && renderType == 'element') ? it.comment : ''
    719                                 def ucName              = it.name[0].toUpperCase() + it.name.substring(1)
    720 
    721                                 // output column opening element?
    722                                 if (renderType == 'column') {
    723                                         out << '<div class="' + attrs.get('class') + '">'
    724                                 }
    725 
    726                                 switch (it.type.toString()) {
    727                                         case ['STRING', 'DOUBLE', 'LONG']:
    728                                                 inputElement = (renderType == 'element') ? 'textFieldElement' : 'textField'
    729                                                 out << "$inputElement"(
    730                                                         description     : ucName,
    731                                                         name            : prependName + it.escapedName(),
    732                                                         value           : fieldValue,
    733                                                         required        : it.isRequired()
    734                                                 ){helpText}
    735                                                 break
    736                                         case 'TEXT':
    737                                                 inputElement = (renderType == 'element') ? 'textAreaElement' : 'textField'
    738                                                 out << "$inputElement"(
    739                                                         description     : ucName,
    740                                                         name            : prependName + it.escapedName(),
    741                                                         value           : fieldValue,
    742                                                         required        : it.isRequired()
    743                                                 ){helpText}
    744                                                 break
    745                                         case 'STRINGLIST':
    746                                                 inputElement = (renderType == 'element') ? 'selectElement' : 'select'
    747                                                 if (!it.listEntries.isEmpty()) {
    748                                                         out << "$inputElement"(
    749                                                                 description     : ucName,
    750                                                                 name            : prependName + it.escapedName(),
    751                                                                 from            : it.listEntries,
    752                                                                 value           : fieldValue,
    753                                                                 required        : it.isRequired()
    754                                                         ){helpText}
    755                                                 } else {
    756                                                         out << '<span class="warning">no values!!</span>'
    757                                                 }
    758                                                 break
    759                                         case 'ONTOLOGYTERM':
    760                                                 // @see http://www.bioontology.org/wiki/index.php/NCBO_Widgets#Term-selection_field_on_a_form
    761                                                 // @see ontology-chooser.js
    762                                                 inputElement = (renderType == 'element') ? 'termElement' : 'termSelect'
    763 
    764                                                 // override addDummy to always add the dummy...
    765                                                 addDummy = true
    766 
    767                                                 if (it.ontologies) {
    768                                                         out << "$inputElement"(
    769                                                                 description     : ucName,
    770                                                                 name            : prependName + it.escapedName(),
    771                                                                 value           : fieldValue.toString(),
    772                                                                 ontologies      : it.ontologies,
    773                                                                 addDummy        : addDummy,
    774                                                                 required        : it.isRequired()
    775                                                         ){helpText}
    776                                                 } else {
    777                                                         out << "$inputElement"(
    778                                                                 description     : ucName,
    779                                                                 name            : prependName + it.escapedName(),
    780                                                                 value           : fieldValue.toString(),
    781                                                                 addDummy        : addDummy,
    782                                                                 required        : it.isRequired()
    783                                                         ){helpText}
    784                                                 }
    785                                                 break
    786                                         case 'ONTOLOGYTERM-old':
    787                                                 // @see http://www.bioontology.org/wiki/index.php/NCBO_Widgets#Term-selection_field_on_a_form
    788                                                 // @see ontology-chooser.js
    789                                                 inputElement = (renderType == 'element') ? 'textFieldElement' : 'textField'
    790                                                 out << "$inputElement"(
    791                                                         name    : prependName + it.escapedName(),
    792                                                         value   : fieldValue,
    793                                                         rel             : 'ontology-all',
    794                                                         size    : 100,
    795                                                         required: it.isRequired()
    796                                                 )
    797                                                 out << hiddenField(
    798                                                         name: prependName + it.name + '-concept_id',
    799                                                         value: fieldValue
    800                                                 )
    801                                                 out << hiddenField(
    802                                                         name: prependName + it.escapedName() + '-ontology_id',
    803                                                         value: fieldValue
    804                                                 )
    805                                                 out << hiddenField(
    806                                                         name: prependName + it.escapedName() + '-full_id',
    807                                                         value: fieldValue
    808                                                 )
    809                                                 break
    810                                         case 'DATE':
    811                                                 inputElement = (renderType == 'element') ? 'dateElement' : 'textField'
    812 
    813                                                 // transform value?
    814                                                 if (fieldValue instanceof Date) {
    815                                                         if (fieldValue.getHours() == 0 && fieldValue.getMinutes() == 0) {
    816                                                                 // transform date instance to formatted string (dd/mm/yyyy)
    817                                                                 fieldValue = String.format('%td/%<tm/%<tY', fieldValue)
    818                                                         } else {
    819                                                                 // transform to date + time
    820                                                                 fieldValue = String.format('%td/%<tm/%<tY %<tH:%<tM', fieldValue)
    821                                                         }
    822                                                 }
    823 
    824                                                 // render element
    825                                                 out << "$inputElement"(
    826                                                         description     : ucName,
    827                                                         name            : prependName + it.escapedName(),
    828                                                         value           : fieldValue,
    829                                                         rel                     : 'date',
    830                                                         required        : it.isRequired()
    831                                                 ){helpText}
    832                                                 break
    833                                         case ['RELTIME']:
    834                                                 inputElement = (renderType == 'element') ? 'textFieldElement' : 'textField'
    835                                                 out << "$inputElement"(
    836                                                         description                     : ucName,
    837                                                         name                            : prependName + it.escapedName(),
    838                                                         value                           : new RelTime( fieldValue ).toString(),
    839                             addExampleElement   : true,
    840                             onBlur                              : 'showExampleReltime(this)',
    841                                                         required                        : it.isRequired()
    842                                                 ){helpText}
    843                                                 break
    844                                         case ['FILE']:
    845                                                 inputElement = (renderType == 'element') ? 'fileFieldElement' : 'fileField'
    846                                                 out << "$inputElement"(
    847                                                         description                     : ucName,
    848                                                         name                            : prependName + it.escapedName(),
    849                                                         value                           : fieldValue ? fieldValue : "",
    850                             addExampleElement   : true,
    851                                                         required                        : it.isRequired()
    852                                                 ){helpText}
    853                                                 break
    854                                         case ['BOOLEAN']:
    855                                                 inputElement = (renderType == 'element') ? 'checkBoxElement' : 'checkBox'
    856                                                 out << "$inputElement"(
    857                                                         description     : ucName,
    858                                                         name            : prependName + it.escapedName(),
    859                                                         value           : fieldValue,
    860                                                         required        : it.isRequired()
    861                                                 ){helpText}
    862                                                 break
    863                                         case ['TEMPLATE']:
    864                                                 inputElement = (renderType == 'element') ? 'templateElement' : 'templateSelect'
    865                                                 out << "$inputElement"(
    866                                                         description     : ucName,
    867                                                         name            : prependName + it.escapedName(),
    868                                                         addDummy        : true,
    869                                                         entity          : it.entity,
    870                                                         value           : fieldValue,
    871                                                         required        : it.isRequired()
    872                                                 ){helpText}
    873                                                 break
    874                                         case ['MODULE']:
    875                                             def from = []
    876                                                 AssayModule.findAll().each { from[from.size()] = it.toString() }
    877 
    878                                                 inputElement = (renderType == 'element') ? 'selectElement' : 'select'
    879                                                 out << "$inputElement"(
    880                                                         description     : ucName,
    881                                                         name            : prependName + it.escapedName(),
    882                                                         from            : from,
    883                                                         value           : fieldValue.toString(),
    884                                                         required        : it.isRequired()
    885                                                 ){helpText}
    886                                         break
    887                                                 break
    888                                         default:
    889                                                 // unsupported field type
    890                                                 out << '<span class="warning">!' + it.type + '</span>'
    891                                                 break
    892                                 }
    893 
    894                                 // output column closing element?
    895                                 if (renderType == 'column') {
    896                                         out << '</div>'
    897                                 }
    898                         }
    899                 }
    900         }
     99         */
    901100
    902101        def PublicationSelectElement = { attrs, body ->
     
    1235434        }
    1236435
    1237         def showTemplateField = { attrs, body ->
    1238                 def field = attrs.get( 'field' );
    1239                 def entity = attrs.get( 'entity' );
    1240                 def fieldName = '';
    1241                 def fieldType = '';
    1242                 def fieldUnit = '';
    1243                
    1244                 if( entity ) {
    1245                         if( field instanceof String ) {
    1246                                 fieldName = field;
    1247                                 fieldType = '';
    1248                                 fieldUnit = '';
    1249                         } else if( field instanceof TemplateField ) {
    1250                                 fieldName = field.name
    1251                                 fieldType = field.type.toString();
    1252                                 fieldUnit = field.unit
    1253                         } else {
    1254                                 return;
    1255                         }
    1256 
    1257                         def value = entity.getFieldValue( fieldName );
    1258 
    1259                         // Show a link if the field is a FILE field
    1260                         if( fieldType == 'FILE' && value != "" ) {
    1261                             out << '<a href="' + g.createLink( controller: "file", action: "get",  id: value ) + '">' + value + '</a>';
    1262                         } else if ( fieldType == 'RELTIME' ) {
    1263                                 out << new RelTime( value ).toString()
    1264                         } else {
    1265                                 out << value;
    1266                         }
    1267 
    1268                         // Show the unit (if a unit is present and a value was shown)
    1269                         if( fieldUnit && value != null && value != "" )
    1270                                 out << " " + fieldUnit
    1271 
    1272                 }
    1273         }
    1274 
    1275436}
  • trunk/grails-app/views/importer/common/_missingproperties.gsp

    r1430 r1461  
    5555                            <div class="firstColumn">#</div>
    5656                            <div class="firstColumn"></div>
    57                                 <wizard:templateColumnHeaders entity="${entity}" class="column" />
     57                                <af:templateColumnHeaders entity="${entity}" class="column" />
    5858                        </div>
    5959                        <input type="hidden" name="entity" value="${entity.getClass().getName()}">
     
    6262                        <div class="firstColumn">#</div>
    6363                        <div class="firstColumn"></div>
    64                         <wizard:templateColumns id="${entity.hashCode()}" entity="${entity}" template="${entity.template}" name="entity_${entity.getIdentifier()}" class="column" subject="${entity.hashCode()}" addDummy="true" />
     64                        <af:templateColumns id="${entity.hashCode()}" entity="${entity}" template="${entity.template}" name="entity_${entity.getIdentifier()}" class="column" subject="${entity.hashCode()}" addDummy="true" />
    6565                    </div>
    6666                </g:each>
  • trunk/grails-app/views/importer/pages/_page_one.gsp

    r1456 r1461  
    2323            </td>
    2424            <td width="100px">
    25                 <wizard:fileFieldElement name="importfile" value=""/>
     25                <af:fileFieldElement name="importfile" value=""/>
    2626            </td>
    2727        </tr>
  • trunk/grails-app/views/query/common/_navigation.gsp

    r1430 r1461  
    1515%>
    1616    <div class="navigation">
    17       <g:if test="${page>1 && page<pages.size}"><wizard:ajaxButton name="previous" value="&laquo; prev" url="[controller:'query',action:'pages']" update="[success:'wizardPage',failure:'wizardError']" afterSuccess="onWizardPage()" class="prevnext" /></g:if>
     17      <g:if test="${page>1 && page<pages.size}"><af:ajaxButton name="previous" value="&laquo; prev" url="[controller:'query',action:'pages']" update="[success:'wizardPage',failure:'wizardError']" afterSuccess="onWizardPage()" class="prevnext" /></g:if>
    1818      <g:if test="${page>1 && page<pages.size}"> | </g:if>
    19       <g:if test="${page<pages.size}"><wizard:ajaxButton name="next" value="next &raquo;" url="[controller:'query',action:'pages']" update="[success:'wizardPage',failure:'wizardError']" afterSuccess="onWizardPage()" class="prevnext" /></g:if>
     19      <g:if test="${page<pages.size}"><af:ajaxButton name="next" value="next &raquo;" url="[controller:'query',action:'pages']" update="[success:'wizardPage',failure:'wizardError']" afterSuccess="onWizardPage()" class="prevnext" /></g:if>
    2020    </div>
  • trunk/grails-app/views/query/common/_query.gsp

    r1430 r1461  
    2020        <g:hiddenField name="do" value="" />
    2121                <div id="wizardPage">
    22                         <wizard:ajaxFlowRedirect form="form#wizardForm" name="next" url="[controller:'query',action:'pages']" update="[success:'wizardPage',failure:'wizardError']" afterSuccess="onWizardPage()" />
     22                        <af:ajaxFlowRedirect form="form#wizardForm" name="next" url="[controller:'query',action:'pages']" update="[success:'wizardPage',failure:'wizardError']" afterSuccess="onWizardPage()" />
    2323                </div>
    2424        </g:form>
  • trunk/grails-app/views/query/pages/_biomarker.gsp

    r1430 r1461  
    1 <wizard:pageContent>
     1<af:pageContent>
    22        Biomarkers
    3 </wizard:pageContent>
    4 
     3</af:pageContent>
  • trunk/grails-app/views/query/pages/_group.gsp

    r1430 r1461  
    1 <wizard:pageContent>
     1<af:pageContent>
    22    Group
    3 </wizard:pageContent>
     3</af:pageContent>
    44
  • trunk/grails-app/views/query/pages/_inputQuery.gsp

    r1430 r1461  
    1 <wizard:pageContent>
     1<af:pageContent>
    22        <g:form url="[action:'results',controller:'query',params: 'q']">
    33          <input type="hidden" name="targetUri" value="${targetUri}" />
     
    66          <input type="submit" name="submit" value="Query"/>
    77        </g:form>
    8 </wizard:pageContent>
     8</af:pageContent>
  • trunk/grails-app/views/query/pages/_result.gsp

    r1430 r1461  
    1 <wizard:pageContent>
     1<af:pageContent>
    22        Results
    3 </wizard:pageContent>
     3</af:pageContent>
    44
  • trunk/grails-app/views/query/pages/_sample.gsp

    r1430 r1461  
    1 <wizard:pageContent>
     1<af:pageContent>
    22
    33  Select samples
    4 </wizard:pageContent>
     4</af:pageContent>
  • trunk/grails-app/views/query/pages/_study.gsp

    r1430 r1461  
    1 <wizard:pageContent>
     1<af:pageContent>
    22        Study
    3 </wizard:pageContent>
     3</af:pageContent>
  • trunk/grails-app/views/setup/common/_wizard.gsp

    r1430 r1461  
    1818        <g:hiddenField name="do" value="" />
    1919                <div id="wizardPage">
    20                         <wizard:ajaxFlowRedirect form="form#wizardForm" name="next" url="[controller:'setup',action:'pages']" update="[success:'wizardPage',failure:'wizardError']" afterSuccess="onWizardPage()" />
     20                        <af:ajaxFlowRedirect form="form#wizardForm" name="next" url="[controller:'setup',action:'pages']" update="[success:'wizardPage',failure:'wizardError']" afterSuccess="onWizardPage()" />
    2121                </div>
    2222        </g:form>
  • trunk/grails-app/views/study/show.gsp

    r1456 r1461  
    100100                                                                        <td>
    101101                                                                                <g:if test="${studyInstance.fieldExists(field.name)}">
    102                                                                                         <wizard:showTemplateField field="${field}" entity="${studyInstance}"/>
     102                                                                                        <af:showTemplateField field="${field}" entity="${studyInstance}"/>
    103103                                                                                </g:if>
    104104                                                                                <g:else>
  • trunk/grails-app/views/study/show_events_table.gsp

    r1456 r1461  
    130130                          <td class="templateFieldValue"><g:if test="${event}">${new RelTime( event.startTime ).toString()}</g:if></td>
    131131                          <g:each in="${showProperties[ currentEventTemplate.name ]}" var="field">
    132                                 <td class="templateFieldValue"><wizard:showTemplateField field="${field}" entity="${event}" /></td>
     132                                <td class="templateFieldValue"><af:showTemplateField field="${field}" entity="${event}" /></td>
    133133                          </g:each>
    134134                        </g:else>
  • trunk/grails-app/views/study/show_samples.gsp

    r1430 r1461  
    8484                        <td>${sample.parentEvent?.template?.name} at ${sample.parentEvent?.getStartTimeString()}</td>
    8585                  <g:each in="${sample.giveDomainFields()}" var="field">
    86                         <td><wizard:showTemplateField field="${field}" entity="${sample}" /></td>
     86                        <td><af:showTemplateField field="${field}" entity="${sample}" /></td>
    8787                  </g:each>
    8888
     
    9191                          <g:if test="${sample.fieldExists(fieldname)}">
    9292                                <g:set var="field" value="${sample.getField(fieldname)}" />
    93                                 <wizard:showTemplateField field="${field}" entity="${sample}" />
     93                                <af:showTemplateField field="${field}" entity="${sample}" />
    9494                          </g:if>
    9595                          <g:else>
  • trunk/grails-app/views/study/show_subjects.gsp

    r1430 r1461  
    8080                        </g:if>
    8181                        <g:each in="${subject.giveDomainFields()}" var="field">
    82                           <td><wizard:showTemplateField field="${field}" entity="${subject}" /></td>
     82                          <td><af:showTemplateField field="${field}" entity="${subject}" /></td>
    8383                        </g:each>
    8484
     
    8787                                <g:if test="${subject.fieldExists(fieldname)}">
    8888                                        <g:set var="field" value="${subject.getField(fieldname)}" />
    89                                         <wizard:showTemplateField field="${field}" entity="${subject}" />
     89                                        <af:showTemplateField field="${field}" entity="${subject}" />
    9090                                </g:if>
    9191                                <g:else>
  • trunk/grails-app/views/studyWizard/pages/_assays.gsp

    r1430 r1461  
    2424        <% /* wizard:textFieldElement name="addNumber" description="Number of assays to add" error="addNumber" value="${values?.addNumber}" size="4" maxlength="4">
    2525                The number of assays to add to your study
    26         </wizard:textFieldElement */ %>
    27         <wizard:templateElement name="template" description="Template" value="${assay?.template}" entity="${dbnp.studycapturing.Assay}" addDummy="true" ajaxOnChange="switchTemplate" afterSuccess="onPage()" >
     26        </af:textFieldElement */ %>
     27        <af:templateElement name="template" description="Template" value="${assay?.template}" entity="${dbnp.studycapturing.Assay}" addDummy="true" ajaxOnChange="switchTemplate" afterSuccess="onPage()" >
    2828                Choose the type of assay you would like to add
    29         </wizard:templateElement>
     29        </af:templateElement>
    3030        <g:if test="${assay}">
    31         <wizard:templateElements entity="${assay}" />
    32         <wizard:ajaxButtonElement name="add" value="Add" afterSuccess="onPage()">
    33         </wizard:ajaxButtonElement>
     31        <af:templateElements entity="${assay}" />
     32        <af:ajaxButtonElement name="add" value="Add" afterSuccess="onPage()">
     33        </af:ajaxButtonElement>
    3434        </g:if>
    3535
     
    4444                                <div class="header">
    4545                                        <div class="firstColumn"></div>
    46                                         <wizard:templateColumnHeaders class="column" entity="${assay}" />
     46                                        <af:templateColumnHeaders class="column" entity="${assay}" />
    4747                                </div>
    4848                                </g:if>
     
    5252                                                <af:ajaxButton name="deleteAssay" src="${resource(dir: 'images/icons', file: 'delete.png', plugin: 'famfamfam')}" alt="delete this assay" class="famfamfam" value="-" before="\$(\'input[name=do]\').val(${assay.getIdentifier()});" afterSuccess="onPage()"/>
    5353                                        </div>
    54                                         <wizard:templateColumns class="column" entity="${assay}" name="assay_${assay.getIdentifier()}" />
     54                                        <af:templateColumns class="column" entity="${assay}" name="assay_${assay.getIdentifier()}" />
    5555                                </div>
    5656                        </g:each>
  • trunk/grails-app/views/studyWizard/pages/_confirmation.gsp

    r1430 r1461  
    4343                  </ul>
    4444                </p>
    45                 Not right? Click <wizard:ajaxButton name="toStudy" value="here" afterSuccess="onPage()" class="prevnext" /> to go back to the study page and make corrections.
     45                Not right? Click <af:ajaxButton name="toStudy" value="here" afterSuccess="onPage()" class="prevnext" /> to go back to the study page and make corrections.
    4646        </div>
    4747        <h3><a href="#">Subjects</a></h3>
     
    5656                </g:each>
    5757
    58                 Not right? Click <wizard:ajaxButton name="toSubjects" value="here" afterSuccess="onPage()" class="prevnext" /> to go back to the subjects page and make corrections.
     58                Not right? Click <af:ajaxButton name="toSubjects" value="here" afterSuccess="onPage()" class="prevnext" /> to go back to the subjects page and make corrections.
    5959        </div>
    6060        <h3><a href="#">Events</a></h3>
     
    7676                </g:each>
    7777
    78                 Not right? Click <wizard:ajaxButton name="toEvents" value="here" afterSuccess="onPage()" class="prevnext" /> to go back to the events page and make corrections.
     78                Not right? Click <af:ajaxButton name="toEvents" value="here" afterSuccess="onPage()" class="prevnext" /> to go back to the events page and make corrections.
    7979        </div>
    8080        <h3><a href="#">Samples</a></h3>
     
    8989                </g:each>
    9090
    91                 Not right? Click <wizard:ajaxButton name="toSamples" value="here" afterSuccess="onPage()" class="prevnext" /> to go back to the subjects page and make corrections.
     91                Not right? Click <af:ajaxButton name="toSamples" value="here" afterSuccess="onPage()" class="prevnext" /> to go back to the subjects page and make corrections.
    9292        </div>
    9393        <h3><a href="#">Assays</a></h3>
     
    102102                </g:each>
    103103
    104                 Not right? Click <wizard:ajaxButton name="toAssays" value="here" afterSuccess="onPage()" class="prevnext" /> to go back to the subjects page and make corrections.
     104                Not right? Click <af:ajaxButton name="toAssays" value="here" afterSuccess="onPage()" class="prevnext" /> to go back to the subjects page and make corrections.
    105105        </div>
    106106</div>
  • trunk/grails-app/views/studyWizard/pages/_events.gsp

    r1430 r1461  
    1717<af:page>
    1818        <g:if env="development">
    19                 <wizard:ajaxButtonElement description="Development feature (clear events)" name="clear" value="clear events" afterSuccess="onPage()">
     19                <af:ajaxButtonElement description="Development feature (clear events)" name="clear" value="clear events" afterSuccess="onPage()">
    2020                        This functionality is only available in development mode for debugging purposes and will not show in test and production environments
    21                 </wizard:ajaxButtonElement>
     21                </af:ajaxButtonElement>
    2222        </g:if>
    2323
     
    2727        </span>
    2828
    29         <wizard:radioElement name="eventType" description="Type" elements="['event','sample']" value="${values?.eventType}">
     29        <af:radioElement name="eventType" description="Type" elements="['event','sample']" value="${values?.eventType}">
    3030                Type of event
    31         </wizard:radioElement>
    32         <wizard:templateElement name="eventTemplate" elementId="eventTemplate" description="Event Template" value="${event?.template}" entity="${dbnp.studycapturing.Event}" addDummy="true" ajaxOnChange="switchTemplate" afterSuccess="onPage()" >
     31        </af:radioElement>
     32        <af:templateElement name="eventTemplate" elementId="eventTemplate" description="Event Template" value="${event?.template}" entity="${dbnp.studycapturing.Event}" addDummy="true" ajaxOnChange="switchTemplate" afterSuccess="onPage()" >
    3333                The template to use for this event
    34         </wizard:templateElement>
    35         <wizard:templateElement name="sampleTemplate" elementId="sampleTemplate" description="Sampling Event Template" value="${event?.template}" entity="${dbnp.studycapturing.SamplingEvent}" addDummy="true" ajaxOnChange="switchTemplate" afterSuccess="onPage()" >
     34        </af:templateElement>
     35        <af:templateElement name="sampleTemplate" elementId="sampleTemplate" description="Sampling Event Template" value="${event?.template}" entity="${dbnp.studycapturing.SamplingEvent}" addDummy="true" ajaxOnChange="switchTemplate" afterSuccess="onPage()" >
    3636                The template to use for this sampling event
    37         </wizard:templateElement>
     37        </af:templateElement>
    3838        <g:if test="${event?.template}">
    3939        <div id="${values?.eventType}TemplateFields">
    40         <g:if test="${event?.template}"><wizard:templateElements entity="${event}" /></g:if>
    41         <g:if test="${event?.template}"><wizard:buttonElement name="add" value="Add" afterSuccess="onPage()"/></g:if>
     40        <g:if test="${event?.template}"><af:templateElements entity="${event}" /></g:if>
     41        <g:if test="${event?.template}"><af:buttonElement name="add" value="Add" afterSuccess="onPage()"/></g:if>
    4242        </div>
    4343        </g:if>
     
    8989                                                <af:ajaxButton name="addEventGroup" src="${resource(dir: 'images/icons', file: 'add.png', plugin: 'famfamfam')}" alt="add a new eventgroup" class="famfamfam" value="+" afterSuccess="onPage()" />
    9090                                        </div>
    91                                   <wizard:templateColumnHeaders class="column" entity="${event}" />
     91                                  <af:templateColumnHeaders class="column" entity="${event}" />
    9292                                </div>
    9393                                </g:if>
     
    109109                                                <af:ajaxButton name="duplicate" src="${resource(dir: 'images/icons', file: 'application_put.png', plugin: 'famfamfam')}" alt="duplicate this event" class="famfamfam" value="-" before="\$(\'input[name=do]\').val(${event.getIdentifier()});" afterSuccess="onPage()" />
    110110                                        </div>
    111                                         <wizard:templateColumns class="column" entity="${event}" name="event_${event.getIdentifier()}" />
     111                                        <af:templateColumns class="column" entity="${event}" name="event_${event.getIdentifier()}" />
    112112                                </div>
    113113
  • trunk/grails-app/views/studyWizard/pages/_modify.gsp

    r1430 r1461  
    2121        </span>
    2222
    23         <wizard:studyElement name="study" description="Study" error="study" value="">
     23        <af:studyElement name="study" description="Study" error="study" value="">
    2424                The study you would like to load and edit
    25         </wizard:studyElement>
     25        </af:studyElement>
    2626</af:page>
  • trunk/grails-app/views/studyWizard/pages/_samples.gsp

    r1430 r1461  
    1818
    1919        <% /* g:if env="development">
    20                 <wizard:ajaxButtonElement description="Development feature (regenerate samples)" name="regenerate" value="regenerate new samples" url="[controller:'wizard',action:'pages']" update="[success:'wizardPage',failure:'wizardError']" afterSuccess="onWizardPage()">
     20                <af:ajaxButtonElement description="Development feature (regenerate samples)" name="regenerate" value="regenerate new samples" url="[controller:'wizard',action:'pages']" update="[success:'wizardPage',failure:'wizardError']" afterSuccess="onWizardPage()">
    2121                        This functionality is only available in development mode for debugging purposes and will not show in test and production environments
    22                 </wizard:ajaxButtonElement>
     22                </af:ajaxButtonElement>
    2323        </g:if */ %>
    2424       
     
    3131        <script type="text/javascript">
    3232                function switchTemplate( element ) {
    33                         <wizard:ajaxSubmitJs functionName="switchTemplate" this="element" afterSuccess="onPage()"/>
     33                        <af:ajaxSubmitJs functionName="switchTemplate" this="element" afterSuccess="onPage()"/>
    3434                }
    3535        </script>
     
    7777                                        </div>
    7878                                        <div class="column">
    79                                                 <wizard:templateSelect name="template_${sample.getIdentifier()}" entity="${dbnp.studycapturing.Sample}" value="${sample.template}" tableEditorChangeEvent="switchTemplate(element);" addDummy="true" />                                         
     79                                                <af:templateSelect name="template_${sample.getIdentifier()}" entity="${dbnp.studycapturing.Sample}" value="${sample.template}" tableEditorChangeEvent="switchTemplate(element);" addDummy="true" />
    8080                                        </div>
    8181                                        <div class="column">${sample.name}</div>
    82                                         <wizard:templateColumns name="sample_${sample.getIdentifier()}" class="column" id="1" entity="${sample}"/>
     82                                        <af:templateColumns name="sample_${sample.getIdentifier()}" class="column" id="1" entity="${sample}"/>
    8383                                </div>
    8484                        </g:if>
     
    103103                                                <div class="column">Subject</div>
    104104                                                <div class="column">Template</div>
    105                                                 <wizard:templateColumnHeaders entity="${sample}" class="column" columnWidths="[Name:250]"/>
     105                                                <af:templateColumnHeaders entity="${sample}" class="column" columnWidths="[Name:250]"/>
    106106                                        </div>
    107107                                </g:if>
     
    134134                                        </div>
    135135                                        <div class="column">
    136                                                 <wizard:templateSelect name="template_${sample.getIdentifier()}" entity="${dbnp.studycapturing.Sample}" value="${sample.template}" addDummy="true" tableEditorChangeEvent="switchTemplate(element);" />
     136                                                <af:templateSelect name="template_${sample.getIdentifier()}" entity="${dbnp.studycapturing.Sample}" value="${sample.template}" addDummy="true" tableEditorChangeEvent="switchTemplate(element);" />
    137137                                        </div>
    138                                         <wizard:templateColumns name="sample_${sample.getIdentifier()}" class="column" id="1" entity="${sample}"/>
     138                                        <af:templateColumns name="sample_${sample.getIdentifier()}" class="column" id="1" entity="${sample}"/>
    139139                                </div>
    140140                        </g:each>
  • trunk/grails-app/views/studyWizard/pages/_samples_previous_warning.gsp

    r1430 r1461  
    3838
    3939                function goToPrevious() {
    40                         <wizard:ajaxSubmitJs name="previous" afterSuccess="onPage()" />
     40                        <af:ajaxSubmitJs name="previous" afterSuccess="onPage()" />
    4141                }
    4242        </script>
  • trunk/grails-app/views/studyWizard/pages/_study.gsp

    r1430 r1461  
    2323        </span>
    2424
    25         <wizard:templateElement name="template" description="Template" value="${study?.template}" entity="${dbnp.studycapturing.Study}" addDummy="true" ajaxOnChange="switchTemplate" afterSuccess="onPage()">
     25        <af:templateElement name="template" description="Template" value="${study?.template}" entity="${dbnp.studycapturing.Study}" addDummy="true" ajaxOnChange="switchTemplate" afterSuccess="onPage()">
    2626                Choose the type of study you would like to create.
    2727                Depending on the chosen template specific fields can be filled out. If none of the templates contain all the necessary fields, a new template can be defined (based on other templates).
    28         </wizard:templateElement>
     28        </af:templateElement>
    2929        <g:if test="${study}">
    30                 <wizard:templateElements entity="${study}"/>
    31                 <wizard:publicationSelectElement name="publication" value="${study?.publications}"/>
    32                 <wizard:contactSelectElement name="contacts" value="${study?.persons}"/>
     30                <af:templateElements entity="${study}"/>
     31                <af:publicationSelectElement name="publication" value="${study?.publications}"/>
     32                <af:contactSelectElement name="contacts" value="${study?.persons}"/>
    3333                <br/>
    3434                <div class="element">
     
    3737                </div>
    3838
    39                 <wizard:userSelectElement name="readers" description="Readers" value="${study?.readers}"/>
    40                 <wizard:userSelectElement name="writers" description="Writers" value="${study?.writers}"/>
     39                <af:userSelectElement name="readers" description="Readers" value="${study?.readers}"/>
     40                <af:userSelectElement name="writers" description="Writers" value="${study?.writers}"/>
    4141        </g:if>
    4242</af:page>
  • trunk/grails-app/views/studyWizard/pages/_subjects.gsp

    r1430 r1461  
    2525        </span>
    2626
    27         <wizard:textFieldElement name="addNumber" description="Number of subjects to add" error="addNumber" value="${values?.addNumber}" size="4" maxlength="4">
     27        <af:textFieldElement name="addNumber" description="Number of subjects to add" error="addNumber" value="${values?.addNumber}" size="4" maxlength="4">
    2828                The number of subjects to add to your study
    29         </wizard:textFieldElement>
    30         <wizard:termElement name="species" description="of species" value="${values?.species}" ontologies="1132" addDummy="true">
     29        </af:textFieldElement>
     30        <af:termElement name="species" description="of species" value="${values?.species}" ontologies="1132" addDummy="true">
    3131                The species of the subjects you would like to add to your study
    32         </wizard:termElement>
    33         <wizard:templateElement name="template" description="with template" value="${values?.template}" error="template" entity="${dbnp.studycapturing.Subject}" ontologies="1132" addDummy="true">
     32        </af:termElement>
     33        <af:templateElement name="template" description="with template" value="${values?.template}" error="template" entity="${dbnp.studycapturing.Subject}" ontologies="1132" addDummy="true">
    3434                The template to use for these subjects
    35         </wizard:templateElement>
    36         <wizard:ajaxButtonElement name="add" value="Add" afterSuccess="onPage()">
    37         </wizard:ajaxButtonElement>
     35        </af:templateElement>
     36        <af:ajaxButtonElement name="add" value="Add" afterSuccess="onPage()">
     37        </af:ajaxButtonElement>
    3838
    3939        <g:if test="${study.subjects}">
     
    4747                                <div class="header">
    4848                                  <div class="firstColumn"></div>
    49                                   <wizard:templateColumnHeaders class="column" entity="${subject}" columnWidths="[Name:200, Species: 150]" />
     49                                  <af:templateColumnHeaders class="column" entity="${subject}" columnWidths="[Name:200, Species: 150]" />
    5050                                </div>
    5151                                </g:if>
     
    5454                                                <af:ajaxButton name="delete" src="${resource(dir: 'images/icons', file: 'delete.png', plugin: 'famfamfam')}" alt="delete this subject" class="famfamfam" value="-" before="\$(\'input[name=do]\').val(${subject.getIdentifier()});" afterSuccess="onPage()" />
    5555                                        </div>
    56                                         <wizard:templateColumns class="column" entity="${subject}" name="subject_${subject.getIdentifier()}" />
     56                                        <af:templateColumns class="column" entity="${subject}" name="subject_${subject.getIdentifier()}" />
    5757                                </div>
    5858                        </g:each>
Note: See TracChangeset for help on using the changeset viewer.