Changeset 1182 for trunk/grails-app
- Timestamp:
- Nov 22, 2010, 5:27:23 PM (13 years ago)
- Location:
- trunk/grails-app
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/grails-app/controllers/dbnp/studycapturing/FileController.groovy
r959 r1182 23 23 */ 24 24 def get = { 25 // Check whether the file exists26 def filename = params.id;27 25 def fileExists; 26 27 // Filename is not url decoded for some reason 28 def coder = new org.apache.commons.codec.net.URLCodec() 29 def filename = coder.decode(params.id) 30 31 // Security check to prevent accessing files in other directories 32 if( filename.contains( '..' ) ) { 33 response.status = 500; 34 render "Invalid filename given"; 35 return; 36 } 37 28 38 try { 29 39 fileExists = fileService.fileExists( filename ) … … 33 43 if( !filename || !fileExists ) { 34 44 response.status = 404; 35 render( " " );45 render( "File not found" ); 36 46 return; 37 47 } … … 42 52 43 53 // Return the file 54 response.setHeader "Content-disposition", "attachment; filename=${filename}" 44 55 response.outputStream << file.newInputStream() 56 response.outputStream.flush() 45 57 } 46 58 … … 73 85 } 74 86 } 87 88 75 89 } -
trunk/grails-app/domain/dbnp/studycapturing/TemplateEntity.groovy
r1175 r1182 450 450 return getStore(field.type)[fieldName] 451 451 } 452 453 452 } 454 453 … … 549 548 // Magic setter for files: handle values for file fields 550 549 // 551 // If NULL is given , the field value is emptied and the old file is removed550 // If NULL is given or "*deleted*", the field value is emptied and the old file is removed 552 551 // If an empty string is given, the field value is kept as was 553 552 // If a file is given, it is moved to the right directory. Old files are deleted. If … … 559 558 def currentFile = getFieldValue(field.name); 560 559 561 if (value == null ) {560 if (value == null || ( value.class == String && value == '*deleted*' ) ) { 562 561 // If NULL is given, the field value is emptied and the old file is removed 563 562 value = ""; -
trunk/grails-app/taglib/dbnp/studycapturing/WizardTagLib.groovy
r1166 r1182 793 793 out << '<input type="hidden" name="' + attrs.name + '" id="' + attrs.name + '" value="' + attrs.value + '">'; 794 794 out << '<div id="' + attrs.name + 'Example" class="upload_info"></div>'; 795 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>'; 795 796 out << '<script type="text/javascript">'; 796 797 out << ' $(document).ready( function() { '; … … 798 799 out << ' fileUploadField( "' + attrs.name + '" );'; 799 800 out << ' if( filename != "" ) {'; 801 out << ' $("#' + attrs.name + 'Delete").show();'; 800 802 out << ' $("#' + attrs.name + 'Example").html("Current file: " + createFileHTML( filename ) )'; 801 803 out << ' }'; … … 1432 1434 } 1433 1435 1436 def showTemplateField = { attrs, body -> 1437 def field = attrs.get( 'field' ); 1438 def entity = attrs.get( 'entity' ); 1439 def fieldName = ''; 1440 def fieldType = ''; 1441 1442 if( entity ) { 1443 if( field instanceof String ) { 1444 fieldName = field; 1445 fieldType = ''; 1446 } else if( field instanceof TemplateField ) { 1447 fieldName = field.name 1448 fieldType = field.type.toString(); 1449 } else { 1450 return; 1451 } 1452 1453 def value = entity.getFieldValue( fieldName ); 1454 1455 if( fieldType == 'FILE' && value != "" ) { 1456 out << '<a href="' + g.createLink( controller: "file", action: "get", id: value ) + '">' + value + '</a>'; 1457 } else { 1458 out << value; 1459 } 1460 1461 } 1462 } 1463 1434 1464 } -
trunk/grails-app/views/study/show.gsp
r1036 r1182 242 242 <td> 243 243 <g:if test="${studyInstance.fieldExists(field.name)}"> 244 ${studyInstance.getFieldValue(field.name)}244 <wizard:showTemplateField field="${field}" entity="${studyInstance}" /> 245 245 </g:if> 246 246 <g:else> … … 411 411 </g:if> 412 412 <g:each in="${subject.giveDomainFields()}" var="field"> 413 <td> ${subject.getFieldValue(field.name)}</td>413 <td><wizard:showTemplateField field="${field}" entity="${subject}" /></td> 414 414 </g:each> 415 415 … … 417 417 <td> 418 418 <g:if test="${subject.fieldExists(field.name)}"> 419 ${subject.getFieldValue(field.name)}419 <wizard:showTemplateField field="${field}" entity="${subject}" /> 420 420 </g:if> 421 421 <g:else> … … 495 495 <g:if test="${event.getFieldValue(field.name)}"> 496 496 <g:if test="${fieldCounter > 1}">, </g:if> 497 ${field.name} = ${event.getFieldValue( field.name )}497 ${field.name} = <wizard:showTemplateField field="${field}" entity="${event}" /> 498 498 <g:set var="fieldCounter" value="${fieldCounter + 1}" /> 499 499 </g:if> … … 583 583 <g:if test="${event.getFieldValue(field.name)}"> 584 584 <g:if test="${fieldCounter > 1}">, </g:if> 585 ${field.name} = ${event.getFieldValue( field.name )}585 ${field.name} = <wizard:showTemplateField field="${field}" entity="${event}" /> 586 586 <g:set var="fieldCounter" value="${fieldCounter + 1}" /> 587 587 </g:if> … … 744 744 <td>${sample.parentEvent?.template?.name} at ${sample.parentEvent?.getStartTimeString()}</td> 745 745 <g:each in="${sample.giveDomainFields()}" var="field"> 746 <td> ${sample.getFieldValue(field.name)}</td>746 <td><wizard:showTemplateField field="${field}" entity="${sample}" /></td> 747 747 </g:each> 748 748 … … 750 750 <td> 751 751 <g:if test="${sample.fieldExists(field.name)}"> 752 ${sample.getFieldValue(field.name)}752 <wizard:showTemplateField field="${field}" entity="${sample}" /> 753 753 </g:if> 754 754 <g:else>
Note: See TracChangeset
for help on using the changeset viewer.