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")
 &nbsp;<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") &nbsp; <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