What steps will reproduce the problem?
1. Build properties for RecaptchaOptions (js)
---------------------
Properties levl1 = new Properties();
levl1.setProperty("theme", "white");
Properties levl2 = new Properties();
levl2.setProperty("instructions_visual", messages.get("captcha.enterwords"));
levl2.setProperty("refresh_btn", messages.get("captcha.reload"));
levl2.setProperty("audio_challenge", messages.get("captcha.getsound"));
levl2.setProperty("visual_challenge", messages.get("captcha.getimage"));
levl2.setProperty("help_btn", messages.get("help"));
levl2.setProperty("play_again", messages.get("captcha.replay"));
levl2.setProperty("cant_hear_this", messages.get("captcha.download"));
levl2.setProperty("instructions_audio", messages.get("captcha.entersound"));
levl2.setProperty("instructions_context", "instructions_context");
levl2.setProperty("incorrect_try_again", "incorrect_try_again");
levl1.put("custom_translations", levl2);
------------------------------
2. captcha().createRecaptchaHtml(null, levl1);
3. Review generated javascript
What is the expected output? What do you see instead?
Expected:
var RecaptchaOptions =
{theme:'white',custom_translations:{audio_challenge:'Afspil
lydfil',instructions_context:'instructions_context',cant_hear_this:'Problemer
med afspilling? Hent som mp3.',play_again:'Hør lydfilen
igen.',instructions_visual:'Indtast ordene ovenfor
',instructions_audio:'Indtast de ord du hører',refresh_btn:'Prøv nye
ord',help_btn:'Hjælp',visual_challenge:'Tilbage til
tekst',incorrect_try_again:'incorrect_try_again'}};
I see: var RecaptchaOptions = {theme:'white',custom_translations:'null'};
What version of the product are you using? On what operating system?
v0.0.7
Please provide any additional information below.
The library does not account for complex/nested json object. Probably this has
been introduced later - and the java lib not updated accordingly.
What I wanted to do was to extend ReCaptchaImpl and override fetchJSOptions.
This is not possible as it's a private method. So I patched and rebuilt
ReCaptchaImpl.
From patched ReCaptchaImpl
----
for (Enumeration e = properties.keys(); e.hasMoreElements(); ) {
String property = (String) e.nextElement();
Object v = properties.get(property);
if(v instanceof String)
jsOptions += property + ":'" + v +"'";
else if(v instanceof Properties) {
Properties sub = (Properties)v;
String s = "{";
Iterator<Entry<Object, Object>> it = sub.entrySet().iterator();
while(it.hasNext()) {
Entry<Object, Object> el = it.next();
s += el.getKey() + ":'" + el.getValue() +"'";
if(it.hasNext())
s += ",";
}
s += "}";
jsOptions += property + ":" + s;
}
if (e.hasMoreElements()) {
jsOptions += ",";
}
}
----
(This is a crude implementation and could be improved further by adding
automatic js string escapes)
Original issue reported on code.google.com by baard.ma...@gmail.com on 8 Oct 2010 at 8:00
Original issue reported on code.google.com by
baard.ma...@gmail.com
on 8 Oct 2010 at 8:00