On Jan 21, 2010, at 10:23 PM, Caleb James DeLisle wrote:
I am adding a new captcha component, it uses
jcaptcha-2.0-alpha1 and supports
image captchas and sound captchas (freetts jars must be added for sound captcha support)
There is a captcha plugin in xwiki-core which makes the core depend on
jcaptcha-all-1.0-RC3.
jcaptcha-all-1.0-RC3 causes conflicts when getting classes from jcaptcha-2.0.
The plugin in querstion:
http://svn.xwiki.org/svnroot/xwiki/platform/core/trunk/xwiki-core/src/main/…
Here's my +1 for removing it entirely, breaking backward compatibility, lightening
xwiki-core,
and making the core no longer depend on jcaptcha.
You may review a patch for removing the plugin here:
http://jira.xwiki.org/jira/secure/attachment/16508/XWIKI-4779-removeJcaptch…
+1
I'll ask around to see if anyone is using actively the old captcha plugin and if so
then we could retire it to contrib retired projects location (ie not make it part of the
core and of the default distribution but still make it available to anyone who need it).
Caleb: would it still work if it's repackaged as a jar that people could drop in their
WEB-INF/lib directory?
To provide velocity access to the captcha component
for checking the results of the captcha,
I would like to add a VelocityContextInitializer which will add a binding called
$captchaservice
which will provide 3 methods:
+1 for now but note that we want a different way to do this in the future so this binding
should be considered internal for the moment (ie not public). We could name it with some
special chars to mention this (same for other bindings we've added such as the
officeimporter one or the syntax factory one). Maybe something like $_captchaInternal (ie
"_" + name + "Internal")
/**
* If this is false, the captcha system will still work.
* It is for velocity scripts to determine whether captchas are needed.
*
* @return Is the captcha service enabled in the configuration.
*/
boolean isEnabled()
/** @return a List of the names of all registered classes implementing {@link
org.xwiki.captcha.CaptchaVerifier}. */
public List<String> listCaptchaNames()
getAvailableCaptchaTypes() maybe to be similar to getAvailableSyntaxes()?
So this will return the component role hints right? So for now "image" or
"sound", right?
/**
* Get a {@link org.xwiki.captcha.CaptchaVerifier} from the service.
*
* @param captchaName The name of the type of captcha, use {@link #listCaptchaNames()} for
a list
* @return A captcha object which can be used to check a specific answer for a given
challange
* @throws Exception If the named captcha doesn't exist.
*/
public CaptchaVerifier getCaptchaVerifier(String captchaName) throws Exception
I realize throwing an Exception to velocity always results in a stack trace but I see it
as the lesser evil to
returning a non-functional CaptchaVerifier which always returns false. Also I see no use
case where the name of
the captcha is not given in hardcoded velocity so this Exception is only for the velocity
developers.
Here's my +1 for adding this as well.
+1
Thanks
-Vincent