Hi, and thanks for reading! I hope you like ATptcha and use it...I am! - If you like this, consider donating [PayPal to tom(at)3x6x9(dot)com] - If you find problems, consider contributing. - If you like beer, you should have some. Sometimes you might want a Captcha in an AT, and rather than futzing with base_edits form controller tragedy, you can now just add a captcha widget. If you want to use a Captcha in a Page Template, you do NOT need ATptcha. PloneCaptcha does this out of the box. This may be a bit strange in implementation, because the value of the field is written to your type (irrelevant) and will show up if you re-edit the object, causing the user to have to re-captcha. Ah well, it's not perfect, but it's better than a spam-filled site. ~Spanky NOTES: The validator gets called twice upon submission. This caused problems when getting things from the REQUEST for validation. Search for XXX to see what I mean. Not sure if this is a security problem, but I don't think see how it could be, but might enable a crafty person to avoid the Captcha (??) REQUIREMENTS: - Plone 2.5.2 and all it entails - PloneCaptcha 1.0.2 INSTALLATION: - Install PloneCaptcha via QuickInstaller - Register for a Captcha account (http://captchas.net) - Configure PloneCaptcha with your Captcha account info - Install ATptcha via QuickInstaller - Add a StringField with a CaptchaWidget to your schema (sample below) USAGE EXAMPLE: StringField('captcha', regfield=1, required=True, widget = CaptchaWidget( description="This helps us prevent automated spamming.", label="Verification Code", label_msgid='captcha_label', description_msgid='captcha_help', i18n_domain='captcha', visible={'view':'invisible',}, ), validators='CaptchaMatch', ), CREDITS: Thanks to the folks who wrote Captcha, PloneCaptcha, and optilude, whose code I used as a template for this widget, and for everyone in #plone IRC who helps me out and puts up with my wisecracks.