[TYPO3-project-formidable] CAPTCHA renderlet reloadpic javascript issue and quick fix

Gary Wong gary.wong at spingroup.com
Mon Dec 1 21:29:00 CET 2008


(Disregard if this was fixed in a newer version, but using SVN 2.0.248)

I was getting a JS error when clicking reload on a captcha renderlet:

<meta>
        <name>Form</name>
        <form formid="aform"/>
        <debug>false</debug>
        <displaylabels>true</displaylabels>
        <libs>scriptaculous</libs>
</meta>
... snip ...
   <renderlet:CAPTCHA name="mycaptcha" />

was creating the reloadpic javascript function like this:

<script type="text/javascript">
            function reloadpic_aform.mycaptcha(){
                var picture = false;
   ...

and calling it like this:

onclick="javascript:reloadpic_aform.mycaptcha();return false;"

Can easily be fixed by patching class.tx_rdtcaptcha.php - have it 
replace any dots (".") with ("_") when rendering JS:

diff of old vs new:

113c113
<                       function reloadpic_'.$this->_getElementHtmlId().'(){
---
 >                       function 
reloadpic_'.str_replace(".","_",$this->_getElementHtmlId()).'(){

136c136
<               if ($reload) $aCaptcha["reload"] = "<a 
title='".($reload==1?'':$reload)."' style=\"cursor:pointer\" 
onclick=\"javascript:reloadpic_".$this->_getElementHtmlId()."();return 
false;\"><img 
src=\"".$this->_getPathReload(trim(strtolower($this->aElement["reloadpic"])))."\" 
class=\"captchapic\" /></a>";
---
 >               if ($reload) $aCaptcha["reload"] = "<a 
title='".($reload==1?'':$reload)."' style=\"cursor:pointer\" 
onclick=\"javascript:reloadpic_".str_replace(".","_",$this->_getElementHtmlId())."();return 
false;\"><img 
src=\"".$this->_getPathReload(trim(strtolower($this->aElement["reloadpic"])))."\" 
class=\"captchapic\" /></a>";


etc.

-gary






More information about the TYPO3-project-formidable mailing list