Ignore:
Timestamp:
Nov 1, 2010, 12:42:49 PM (11 years ago)
Author:
robert@…
Message:

Implemented compare templates feature and fixed show studies overview (tickets #7 and #137)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/grails-app/controllers/dbnp/studycapturing/TemplateEditorController.groovy

    r996 r1027  
    1616import dbnp.data.*
    1717import dbnp.studycapturing.*
     18
    1819import dbnp.authentication.AuthenticationService
     20import grails.plugins.springsecurity.Secured
     21
    1922import cr.co.arquetipos.crypto.Blowfish
    2023import grails.converters.*
    2124import java.lang.reflect.*;
    2225
     26@Secured(['IS_AUTHENTICATED_REMEMBERED'])
    2327class TemplateEditorController {
    2428    def entityName;
    2529    def entity;
    26 
    2730        def AuthenticationService
     31
     32        /**
     33     * Fires after every action and determines the layout of the page
     34     */
     35    def afterInterceptor = { model, modelAndView ->
     36      if ( params['standalone'] ) {
     37        model.layout = 'main';
     38        model.extraparams = [ 'standalone': 'true' ] ;
     39      } else {
     40        model.layout = 'dialog';
     41        model.extraparams = [] ;
     42      }
     43    }
    2844       
    2945        /**
     
    8197
    8298                // redirect to template editor page of the specified entity
    83                 redirect(action: "index",params:[entity: resultEntity])
     99                params.entity = resultEntity
     100                redirect(action: "index", params:params)
    84101        }
    85 
    86102
    87103    /**
     
    110126    }
    111127
     128    /**
     129     * compare two or more templates
     130     */
     131    def compare = {
     132        // Check whether a right entity is given
     133        if( !_checkEntity() ) {
     134                        return
     135                }
     136
     137        // fetch all templates for this entity
     138        def templates = Template.findAllByEntity(entity)
     139
     140                // Find all available fields
     141                def allFields = TemplateField.findAllByEntity( entity ).sort { a, b -> a.name <=> b.name }
     142
     143                // Generate a human readable entity name
     144                def parts = entityName.tokenize( '.' );
     145                def humanReadableEntity = parts[ parts.size() - 1 ];
     146
     147        return [
     148            entity: entity,
     149            templates: templates,
     150                        allFields: allFields,
     151            encryptedEntity: params.entity,
     152            humanReadableEntity: humanReadableEntity,
     153                        ontologies: params.ontologies,
     154                        templateEntities: this.templateEntityList()
     155        ];
     156    }
     157
    112158        /**
    113159         * Shows the editing of a template
     
    138184                def parts = entityName.tokenize( '.' );
    139185                def humanReadableEntity = parts[ parts.size() - 1 ];
    140 
    141 
    142186
    143187                // Find all available fields
     
    836880
    837881    }
     882
     883        def templateEntityList = {
     884                def entities = [
     885                        [ name: 'Study', entity: 'dbnp.studycapturing.Study' ],
     886                        [ name: 'Subject', entity: 'dbnp.studycapturing.Subject' ],
     887                        [ name: 'Event', entity: 'dbnp.studycapturing.Event' ],
     888                        [ name: 'Sampling Event', entity: 'dbnp.studycapturing.SamplingEvent' ],
     889                        [ name: 'Sample', entity: 'dbnp.studycapturing.Sample' ],
     890                        [ name: 'Assay', entity: 'dbnp.studycapturing.Assay' ]
     891                ]
     892
     893                entities.each {
     894                        // add the entity class name to the element
     895                        // do we have crypto information available?
     896                        if (grailsApplication.config.crypto) {
     897                                // generate a Blowfish encrypted and Base64 encoded string.
     898                                it.encoded = URLEncoder.encode(
     899                                        Blowfish.encryptBase64(
     900                                                it.entity.toString().replaceAll(/^class /, ''),
     901                                                grailsApplication.config.crypto.shared.secret
     902                                        )
     903                                )
     904                        } else {
     905                                // base64 only; this is INSECURE! As this class
     906                                // is instantiated elsewehere. Possibly exploitable!
     907                                it.encoded = URLEncoder.encode(it.entity.toString().replaceAll(/^class /, '').bytes.encodeBase64())
     908                        }
     909                }
     910
     911                return entities
     912        }
    838913}
Note: See TracChangeset for help on using the changeset viewer.