r1325 - in xwiki/trunk/src/main: java/com/xpn/xwiki/plugin/captcha java/com/xpn/xwiki/web resources web/templates
Phung Hai Nam
namphunghai at users.forge.objectweb.org
Mon Sep 18 06:49:24 CEST 2006
Author: namphunghai
Date: 2006-09-18 06:49:24 +0200 (Mon, 18 Sep 2006)
New Revision: 1325
Removed:
xwiki/trunk/src/main/java/com/xpn/xwiki/plugin/captcha/CaptchaParams.java
Modified:
xwiki/trunk/src/main/java/com/xpn/xwiki/plugin/captcha/CaptchaPlugin.java
xwiki/trunk/src/main/java/com/xpn/xwiki/plugin/captcha/CaptchaPluginApi.java
xwiki/trunk/src/main/java/com/xpn/xwiki/web/CommentAddAction.java
xwiki/trunk/src/main/java/com/xpn/xwiki/web/EditAction.java
xwiki/trunk/src/main/java/com/xpn/xwiki/web/PreviewAction.java
xwiki/trunk/src/main/java/com/xpn/xwiki/web/SaveAction.java
xwiki/trunk/src/main/java/com/xpn/xwiki/web/ViewAction.java
xwiki/trunk/src/main/resources/ApplicationResources.properties
xwiki/trunk/src/main/web/templates/captcha.vm
xwiki/trunk/src/main/web/templates/comments.vm
xwiki/trunk/src/main/web/templates/edit.vm
xwiki/trunk/src/main/web/templates/wysiwyg.vm
Log:
modified something for captcha code. and add captcha for comment
Deleted: xwiki/trunk/src/main/java/com/xpn/xwiki/plugin/captcha/CaptchaParams.java
===================================================================
--- xwiki/trunk/src/main/java/com/xpn/xwiki/plugin/captcha/CaptchaParams.java 2006-09-15 20:44:35 UTC (rev 1324)
+++ xwiki/trunk/src/main/java/com/xpn/xwiki/plugin/captcha/CaptchaParams.java 2006-09-18 04:49:24 UTC (rev 1325)
@@ -1,46 +0,0 @@
-/*
- * Copyright 2006, XpertNet SARL, and individual contributors as indicated
- * by the contributors.txt.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- *
- * @author Phung Hai Nam (phunghainam at xwiki.com)
- * @version 5 Sep 2006
- */
-
-package com.xpn.xwiki.plugin.captcha;
-
-import java.util.HashMap;
-import java.util.Map;
-
-public class CaptchaParams {
-
- private Map map = new HashMap();
-
- public CaptchaParams() { }
-
- public CaptchaParams(Map map) {
- this.map = map;
- }
-
- public Object get(Object key) {
- return map.get(key);
- }
-
- public void put(Object key, Object value) {
- map.put(key, value);
- }
-}
\ No newline at end of file
Modified: xwiki/trunk/src/main/java/com/xpn/xwiki/plugin/captcha/CaptchaPlugin.java
===================================================================
--- xwiki/trunk/src/main/java/com/xpn/xwiki/plugin/captcha/CaptchaPlugin.java 2006-09-15 20:44:35 UTC (rev 1324)
+++ xwiki/trunk/src/main/java/com/xpn/xwiki/plugin/captcha/CaptchaPlugin.java 2006-09-18 04:49:24 UTC (rev 1325)
@@ -35,7 +35,6 @@
import com.xpn.xwiki.web.XWikiRequest;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.apache.velocity.VelocityContext;
public class CaptchaPlugin extends XWikiDefaultPlugin {
@@ -60,17 +59,9 @@
super.init(context);
}
- public CaptchaParams getCaptchaParams(String user, String action, XWikiContext context) throws XWikiException {
- CaptchaParams cparams = new CaptchaParams();
- cparams.put("user", user);
- cparams.put("action", action);
- return cparams;
- }
-
- public String displayCaptcha(CaptchaParams captchaParams, String classname, XWikiContext context) throws XWikiException {
+ public String displayCaptcha(String action, String classname, XWikiContext context) throws XWikiException {
StringBuffer output = new StringBuffer();
- String user = (String) captchaParams.get("user");
- String action = (String) captchaParams.get("action");
+ String user = context.getUser();
String actionuser = "";
if(user.equals("XWiki.XWikiGuest")) actionuser = action + "_anonymous" ;
else if (user.equals("XWiki.Admin"))
@@ -105,13 +96,12 @@
return output.toString();
}
- public Boolean verifyCaptcha(CaptchaParams captchaParams, XWikiContext context) throws XWikiException {
- String user = (String) captchaParams.get("user");
- String action = (String) captchaParams.get("action");
+ public Boolean verifyCaptcha(String action, XWikiContext context) throws XWikiException {
+ String user = context.getUser();
String actionuser;
if(user.equals("XWiki.XWikiGuest")) actionuser = action + "_anonymous";
else if (user.equals("XWiki.Admin"))
- return Boolean.TRUE; // if is admin then return TRUE for confirm captcha
+ return Boolean.TRUE; // If is admin then return TRUE for confirm captcha
else actionuser = action + "_registered";
String typecaptcha = context.getWiki().getWebPreference(actionuser, context);
Modified: xwiki/trunk/src/main/java/com/xpn/xwiki/plugin/captcha/CaptchaPluginApi.java
===================================================================
--- xwiki/trunk/src/main/java/com/xpn/xwiki/plugin/captcha/CaptchaPluginApi.java 2006-09-15 20:44:35 UTC (rev 1324)
+++ xwiki/trunk/src/main/java/com/xpn/xwiki/plugin/captcha/CaptchaPluginApi.java 2006-09-18 04:49:24 UTC (rev 1325)
@@ -44,15 +44,11 @@
this.plugin = plugin;
}
- public String displayCaptcha(CaptchaParams captchaParams, String classname) throws XWikiException {
- return getPlugin().displayCaptcha(captchaParams, classname, context);
+ public String displayCaptcha(String action, String classname) throws XWikiException {
+ return getPlugin().displayCaptcha(action, classname, context);
}
- public Boolean verifyCaptcha(CaptchaParams captchaParams) throws XWikiException {
- return getPlugin().verifyCaptcha(captchaParams, context);
+ public Boolean verifyCaptcha(String action) throws XWikiException {
+ return getPlugin().verifyCaptcha(action, context);
}
-
- public CaptchaParams getCaptchaParams(String user, String typecaptcha) throws XWikiException {
- return getPlugin().getCaptchaParams(user, typecaptcha, context);
- }
}
Modified: xwiki/trunk/src/main/java/com/xpn/xwiki/web/CommentAddAction.java
===================================================================
--- xwiki/trunk/src/main/java/com/xpn/xwiki/web/CommentAddAction.java 2006-09-15 20:44:35 UTC (rev 1324)
+++ xwiki/trunk/src/main/java/com/xpn/xwiki/web/CommentAddAction.java 2006-09-18 04:49:24 UTC (rev 1325)
@@ -27,6 +27,7 @@
import com.xpn.xwiki.doc.XWikiDocument;
import com.xpn.xwiki.objects.BaseObject;
import com.xpn.xwiki.objects.classes.BaseClass;
+import com.xpn.xwiki.plugin.captcha.CaptchaPluginApi;
public class CommentAddAction extends XWikiAction {
public boolean action(XWikiContext context) throws XWikiException {
@@ -36,25 +37,40 @@
XWikiDocument doc = context.getDoc();
ObjectAddForm oform = (ObjectAddForm) context.getForm();
+ Boolean isResponseCorrect = Boolean.TRUE;
+ if (xwiki.hasCaptcha(context)) {
+ CaptchaPluginApi captchaPluginApi = (CaptchaPluginApi) xwiki.getPluginApi("jcaptcha", context);
+ if (captchaPluginApi != null)
+ isResponseCorrect = captchaPluginApi.verifyCaptcha("comment");
+ }
+
// Make sure this class exists
BaseClass baseclass = xwiki.getCommentsClass(context);
-
- if (doc.isNew()) {
- return true;
+ if (isResponseCorrect.booleanValue()) {
+ if (doc.isNew()) {
+ return true;
+ } else {
+ XWikiDocument olddoc = (XWikiDocument) doc.clone();
+ String className = "XWiki.XWikiComments";
+ int nb = doc.createNewObject(className, context);
+ BaseObject oldobject = doc.getObject(className, nb);
+ BaseObject newobject = (BaseObject) baseclass.fromMap(oform.getObject(className), oldobject);
+ newobject.setNumber(oldobject.getNumber());
+ newobject.setName(doc.getFullName());
+ doc.setObject(className, nb, newobject);
+ xwiki.saveDocument(doc, olddoc, context);
+ }
+ // forward to edit
+ String redirect = Utils.getRedirect("edit", context);
+ sendRedirect(response, redirect);
} else {
- XWikiDocument olddoc = (XWikiDocument) doc.clone();
- String className = "XWiki.XWikiComments";
- int nb = doc.createNewObject(className, context);
- BaseObject oldobject = doc.getObject(className, nb);
- BaseObject newobject = (BaseObject) baseclass.fromMap(oform.getObject(className), oldobject);
- newobject.setNumber(oldobject.getNumber());
- newobject.setName(doc.getFullName());
- doc.setObject(className, nb, newobject);
- xwiki.saveDocument(doc, olddoc, context);
+ String url = context.getDoc().getURL("view", "xpage=comments&confirm=false",context);
+ try {
+ response.sendRedirect(url);
+ } catch (Exception e) {
+ System.err.println(e.getStackTrace().toString());
+ }
}
- // forward to edit
- String redirect = Utils.getRedirect("edit", context);
- sendRedirect(response, redirect);
return false;
}
Modified: xwiki/trunk/src/main/java/com/xpn/xwiki/web/EditAction.java
===================================================================
--- xwiki/trunk/src/main/java/com/xpn/xwiki/web/EditAction.java 2006-09-15 20:44:35 UTC (rev 1324)
+++ xwiki/trunk/src/main/java/com/xpn/xwiki/web/EditAction.java 2006-09-18 04:49:24 UTC (rev 1325)
@@ -46,9 +46,14 @@
VelocityContext vcontext = (VelocityContext) context.get("vcontext");
// Add captcha plugin to avoid spam robots
- CaptchaPluginApi captchaPluginApi = (CaptchaPluginApi) xwiki.getPluginApi("jcaptcha", context);
- if (xwiki.hasCaptcha(context) && captchaPluginApi != null) vcontext.put("captchaPlugin", captchaPluginApi);
- else vcontext.put("captchaPlugin", "noCaptchaPlugin");
+ if (xwiki.hasCaptcha(context)) {
+ CaptchaPluginApi captchaPluginApi = (CaptchaPluginApi) xwiki.getPluginApi("jcaptcha", context);
+ if (captchaPluginApi != null)
+ vcontext.put("captchaPlugin", captchaPluginApi);
+ else
+ throw new XWikiException(XWikiException.MODULE_XWIKI_PLUGINS,
+ XWikiException.ERROR_XWIKI_UNKNOWN, "CaptchaPlugin not loaded");
+ }
// Check for edit section
String sectionContent = "";
Modified: xwiki/trunk/src/main/java/com/xpn/xwiki/web/PreviewAction.java
===================================================================
--- xwiki/trunk/src/main/java/com/xpn/xwiki/web/PreviewAction.java 2006-09-15 20:44:35 UTC (rev 1324)
+++ xwiki/trunk/src/main/java/com/xpn/xwiki/web/PreviewAction.java 2006-09-18 04:49:24 UTC (rev 1325)
@@ -27,7 +27,6 @@
import com.xpn.xwiki.XWikiException;
import com.xpn.xwiki.api.Document;
import com.xpn.xwiki.doc.XWikiDocument;
-import com.xpn.xwiki.plugin.captcha.CaptchaParams;
import com.xpn.xwiki.plugin.captcha.CaptchaPluginApi;
import org.apache.velocity.VelocityContext;
@@ -68,17 +67,12 @@
XWikiForm form = context.getForm();
VelocityContext vcontext = (VelocityContext) context.get("vcontext");
- Boolean isResponseCorrect = Boolean.TRUE;
- CaptchaPluginApi captchaPluginApi = (CaptchaPluginApi) xwiki.getPluginApi("jcaptcha", context);
- if (captchaPluginApi != null) vcontext.put("captchaPlugin", captchaPluginApi);
- else vcontext.put("captchaPlugin", "noCaptchaPlugin");
- if (captchaPluginApi != null) {
- // verify captcha
- CaptchaParams captchaParams = captchaPluginApi.getCaptchaParams(context.getUser(), "edit");
- isResponseCorrect = captchaPluginApi.verifyCaptcha(captchaParams);
+ if (xwiki.hasCaptcha(context)) {
+ CaptchaPluginApi captchaPluginApi = (CaptchaPluginApi) xwiki.getPluginApi("jcaptcha", context);
+ if (captchaPluginApi != null)
+ vcontext.put("captchaPlugin", captchaPluginApi);
+ vcontext.put("isResponseCorrect", captchaPluginApi.verifyCaptcha("edit").toString());
}
- // put isResponseCorrect value to vcontext for save action
- vcontext.put("isResponseCorrect", isResponseCorrect.toString());
String language = ((EditForm) form).getLanguage();
XWikiDocument tdoc;
Modified: xwiki/trunk/src/main/java/com/xpn/xwiki/web/SaveAction.java
===================================================================
--- xwiki/trunk/src/main/java/com/xpn/xwiki/web/SaveAction.java 2006-09-15 20:44:35 UTC (rev 1324)
+++ xwiki/trunk/src/main/java/com/xpn/xwiki/web/SaveAction.java 2006-09-18 04:49:24 UTC (rev 1325)
@@ -28,7 +28,6 @@
import com.xpn.xwiki.XWikiException;
import com.xpn.xwiki.doc.XWikiDocument;
import com.xpn.xwiki.doc.XWikiLock;
-import com.xpn.xwiki.plugin.captcha.CaptchaParams;
import com.xpn.xwiki.plugin.captcha.CaptchaPluginApi;
public class SaveAction extends PreviewAction {
@@ -40,14 +39,16 @@
// Confirm edit to avoid spam robots
Boolean isResponseCorrect = Boolean.TRUE;
- CaptchaPluginApi captchaPluginApi = (CaptchaPluginApi) xwiki.getPluginApi("jcaptcha", context);
// If 'save' action after preview
String isResponsePreviewCorrect = request.getParameter("isResponsePreviewCorrect");
if ((isResponsePreviewCorrect != null))
isResponseCorrect = Boolean.valueOf(isResponsePreviewCorrect);
- else if (captchaPluginApi != null) {
- CaptchaParams captchaParams = captchaPluginApi.getCaptchaParams(context.getUser(), "edit");
- isResponseCorrect = captchaPluginApi.verifyCaptcha(captchaParams);
+ else {
+ if (xwiki.hasCaptcha(context)) {
+ CaptchaPluginApi captchaPluginApi = (CaptchaPluginApi) xwiki.getPluginApi("jcaptcha", context);
+ if (captchaPluginApi != null)
+ isResponseCorrect = captchaPluginApi.verifyCaptcha("edit");
+ }
}
// If captcha is not correct it will be required again
if (!isResponseCorrect.booleanValue()) return true;
Modified: xwiki/trunk/src/main/java/com/xpn/xwiki/web/ViewAction.java
===================================================================
--- xwiki/trunk/src/main/java/com/xpn/xwiki/web/ViewAction.java 2006-09-15 20:44:35 UTC (rev 1324)
+++ xwiki/trunk/src/main/java/com/xpn/xwiki/web/ViewAction.java 2006-09-18 04:49:24 UTC (rev 1325)
@@ -23,9 +23,12 @@
*/
package com.xpn.xwiki.web;
+import com.xpn.xwiki.XWiki;
import com.xpn.xwiki.XWikiContext;
import com.xpn.xwiki.XWikiException;
import com.xpn.xwiki.doc.XWikiDocument;
+import com.xpn.xwiki.plugin.captcha.CaptchaPluginApi;
+import org.apache.velocity.VelocityContext;
import java.io.IOException;
@@ -49,6 +52,19 @@
public String render(XWikiContext context) throws XWikiException {
handleRevision(context);
XWikiDocument doc = (XWikiDocument) context.get("doc");
+ XWiki xwiki = context.getWiki();
+ VelocityContext vcontext = (VelocityContext) context.get("vcontext");
+
+ // Add captcha plugin for comment to avoid spam robots
+ if (xwiki.hasCaptcha(context)) {
+ CaptchaPluginApi captchaPluginApi = (CaptchaPluginApi) xwiki.getPluginApi("jcaptcha", context);
+ if (captchaPluginApi != null)
+ vcontext.put("captchaPlugin", captchaPluginApi);
+ else
+ throw new XWikiException(XWikiException.MODULE_XWIKI_PLUGINS,
+ XWikiException.ERROR_XWIKI_UNKNOWN, "CaptchaPlugin not loaded");
+ }
+
String defaultTemplate = doc.getDefaultTemplate();
if ((defaultTemplate !=null) && (!defaultTemplate.equals(""))) {
return defaultTemplate;
Modified: xwiki/trunk/src/main/resources/ApplicationResources.properties
===================================================================
--- xwiki/trunk/src/main/resources/ApplicationResources.properties 2006-09-15 20:44:35 UTC (rev 1324)
+++ xwiki/trunk/src/main/resources/ApplicationResources.properties 2006-09-18 04:49:24 UTC (rev 1325)
@@ -487,4 +487,5 @@
edit_registered=Registered
comment_anonymous=Anonymous
comment_registered=Registered
-comment=Comment
\ No newline at end of file
+comment=Comment
+confirmcommentnotcorrect=Confirm to avoid spam robots. Please try again !!
\ No newline at end of file
Modified: xwiki/trunk/src/main/web/templates/captcha.vm
===================================================================
--- xwiki/trunk/src/main/web/templates/captcha.vm 2006-09-15 20:44:35 UTC (rev 1324)
+++ xwiki/trunk/src/main/web/templates/captcha.vm 2006-09-18 04:49:24 UTC (rev 1325)
@@ -4,9 +4,8 @@
#template("previewheader.vm")
<div id="xwikicontent">
<form id="edit" method="post" action="$doc.getURL("save")">
-#if (!$captchaPlugin.equals("noCaptchaPlugin"))
-#set($captchaParams = $captchaPlugin.getCaptchaParams($context.user,"edit"))
-$captchaPlugin.displayCaptcha($captchaParams,"wiki_captcha")
+#if ($captchaPlugin)
+ $captchaPlugin.displayCaptcha("edit","wiki_captcha")
<br />
#end
<p>
Modified: xwiki/trunk/src/main/web/templates/comments.vm
===================================================================
--- xwiki/trunk/src/main/web/templates/comments.vm 2006-09-15 20:44:35 UTC (rev 1324)
+++ xwiki/trunk/src/main/web/templates/comments.vm 2006-09-18 04:49:24 UTC (rev 1325)
@@ -32,6 +32,13 @@
#set($pclass = $comment.getxWikiClass().get("comment"))
$doc.displayEdit($pclass,"XWiki.XWikiComments_",$comment)
<br />
+#if ($captchaPlugin)
+ #if ($request.confirm == "false")
+ <br /><font color="red">$msg.get("confirmcommentnotcorrect")</font>
+ #end
+ $captchaPlugin.displayCaptcha("comment","wiki_captcha")
+#end
+<br />
<input type="submit" value="$msg.get("addcomment")" />
</p>
</form>
Modified: xwiki/trunk/src/main/web/templates/edit.vm
===================================================================
--- xwiki/trunk/src/main/web/templates/edit.vm 2006-09-15 20:44:35 UTC (rev 1324)
+++ xwiki/trunk/src/main/web/templates/edit.vm 2006-09-18 04:49:24 UTC (rev 1325)
@@ -81,9 +81,8 @@
// -->
</script>
$msg.get("helponsyntax") <a href="" onClick="openHelp(); return false;">$msg.get("xwikisyntax")</a>
-#if (!$captchaPlugin.equals("noCaptchaPlugin"))
-#set($captchaParams = $captchaPlugin.getCaptchaParams($context.user,"edit"))
-$captchaPlugin.displayCaptcha($captchaParams,"wiki_captcha")
+#if ($captchaPlugin)
+ $captchaPlugin.displayCaptcha("edit","wiki_captcha")
#end
<br />
#if ($tdoc.language=="")
Modified: xwiki/trunk/src/main/web/templates/wysiwyg.vm
===================================================================
--- xwiki/trunk/src/main/web/templates/wysiwyg.vm 2006-09-15 20:44:35 UTC (rev 1324)
+++ xwiki/trunk/src/main/web/templates/wysiwyg.vm 2006-09-18 04:49:24 UTC (rev 1325)
@@ -72,9 +72,8 @@
$msg.get("switchto") <span style="color: blue; cursor:pointer;" onclick="document.forms.edit.action='$doc.getURL("edit","$switchParam")';if (document.forms.edit.onsubmit) document.forms.edit.onsubmit(); document.forms.edit.submit(); return false;"><u>$msg.get("wikieditor")</u></span>
<br />
$xwiki.getTextArea($tdoc.content)
-#if (!$captchaPlugin.equals("noCaptchaPlugin"))
-#set($captchaParams = $captchaPlugin.getCaptchaParams($context.user,"edit"))
-$captchaPlugin.displayCaptcha($captchaParams,"wiki_captcha")
+#if ($captchaPlugin)
+ $captchaPlugin.displayCaptcha("edit","wiki_captcha")
#end
<br/>
#if ($tdoc.language=="")
More information about the Xwiki-notifications
mailing list