SCode Image Reload
Sometimes the numbers on SCodePlugin-generated CAPTCHA image are not easy to read. And rather than refreshing the whole page, it would be nice to reload only the image and generate a new / more readable code.
In order to give this a go, I modified the comment form on Melbourne photoblog and added a short Javascript code to refresh the image source. You can try it yourself on this form, just click the text “Generate another code” and wait shortly for the image to be reloaded with a new code.
I have updated the Usage sample code on SCode Plugin wiki page with this improvement.
As a side note, I found a problem where modifying img.src value via anchor tag’s onclick attribute does not work on IE 6 and the image will just disappear, while it works just fine on Firefox 2 and Opera 8.5 .
function reloadSCode() {
var scodeImage = document.getElementById("scodeImage");
scodeImage.src="$BLOJSOM_BLOG.getBlogBaseURL()/captcha?flavor=kink&t=" + (new Date()).getMilliseconds();
}
<a href="javascript: void(0);" onclick="reloadSCode();">Generate another code</a>.
After some mucking around, I found out that the function call must be made from the href attribute. This works on the browsers mentioned above.
<a href="javascript: reloadSCode();">Generate another code</a>.
Them browsers better implement proper Javascript standard before doomsday comes.
SCodePlugin v0.5
SCodePlugin v0.5 has been released, expect the jar and source downloads to be available from SourceForge mirrors in the next few days. As usual, if you want it earlier, just email me and I’ll send it to you.
Changelog:
- Introduced KaptchaImageEngine using Kaptcha (was Simple Captcha) library, with 3 new flavours from KinkImageEngine, FishEyeImageEngine, and ShadowImageEngine.
- Replaced image engine class loading in image factory with constructor injection. SCodePlugin passes the image factory to SCodeServlet, instead of passing the image engines.
- Set ImageIO caching off during SCodeServlet initialisation. This improves performance and prevents any temporary disk-based image creation.
Upgrade instruction:
- In WEB-INF/lib directory, replace scodeplugin-0.4.jar with scodeplugin-0.5.jar, and add kaptcha-1.1.jar .
- On /WEB-INF/classes/blojsom-plugins.xml file, replace the scode bean declaration you have for SCodePlugin v0.4:
<bean id="scode" class="com.mbledug.blojsom.plugin.scode.SCodePlugin" init-method="init" destroy-method="destroy"> <constructor-arg> <map> <entry key="simple" value="com.mbledug.blojsom.plugin.scode.engine.SimpleImageEngine"/> <entry key="gradient" value="com.mbledug.blojsom.plugin.scode.engine.GradientImageEngine"/> <entry key="funky" value="com.mbledug.blojsom.plugin.scode.engine.FunkyImageEngine"/> </map> </constructor-arg> </bean>with this for SCodePlugin v0.5:
<bean id="scodeSimpleImageEngine" class="com.mbledug.blojsom.plugin.scode.engine.SimpleImageEngine"/> <bean id="scodeGradientImageEngine" class="com.mbledug.blojsom.plugin.scode.engine.GradientImageEngine"/> <bean id="scodeFunkyImageEngine" class="com.mbledug.blojsom.plugin.scode.engine.FunkyImageEngine"/> <bean id="scodeKinkImageEngine" class="com.mbledug.blojsom.plugin.scode.engine.KinkImageEngine"/> <bean id="scodeFishEyeImageEngine" class="com.mbledug.blojsom.plugin.scode.engine.FishEyeImageEngine"/> <bean id="scodeShadowImageEngine" class="com.mbledug.blojsom.plugin.scode.engine.ShadowImageEngine"/> <bean id="scodeImageFactory" class="com.mbledug.blojsom.plugin.scode.ImageFactory"> <constructor-arg> <map> <entry key="simple" value-ref="scodeSimpleImageEngine"/> <entry key="gradient" value-ref="scodeGradientImageEngine"/> <entry key="funky" value-ref="scodeFunkyImageEngine"/> <entry key="kink" value-ref="scodeKinkImageEngine"/> <entry key="fisheye" value-ref="scodeFishEyeImageEngine"/> <entry key="shadow" value-ref="scodeShadowImageEngine"/> </map> </constructor-arg> </bean> <bean id="scode" class="com.mbledug.blojsom.plugin.scode.SCodePlugin" init-method="init" destroy-method="destroy"> <constructor-arg> <ref bean="scodeImageFactory"/> </constructor-arg> </bean>
FishEye And Shadow Flavors
Still using Kaptcha, I added 2 new flavors to SCode Plugin: “fisheye” and “shadow”. Here’s the screenshot:

Same as “kink”, these new flavors will be part of SCode Plugin 0.5 .