You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by hl...@apache.org on 2012/03/20 21:19:40 UTC
svn commit: r1303131 - in
/tapestry/tapestry5/trunk/tapestry-kaptcha/src/main/java/org/apache/tapestry5/kaptcha:
KaptchaSymbolConstants.java components/KaptchaField.java
components/KaptchaImage.java services/KaptchaModule.java
Author: hlship
Date: Tue Mar 20 20:19:40 2012
New Revision: 1303131
URL: http://svn.apache.org/viewvc?rev=1303131&view=rev
Log:
TAP5-1827: It shoud be possible to customize kaptcha field so that it allows input type=text instead of input type=password
Added:
tapestry/tapestry5/trunk/tapestry-kaptcha/src/main/java/org/apache/tapestry5/kaptcha/KaptchaSymbolConstants.java
Modified:
tapestry/tapestry5/trunk/tapestry-kaptcha/src/main/java/org/apache/tapestry5/kaptcha/components/KaptchaField.java
tapestry/tapestry5/trunk/tapestry-kaptcha/src/main/java/org/apache/tapestry5/kaptcha/components/KaptchaImage.java
tapestry/tapestry5/trunk/tapestry-kaptcha/src/main/java/org/apache/tapestry5/kaptcha/services/KaptchaModule.java
Added: tapestry/tapestry5/trunk/tapestry-kaptcha/src/main/java/org/apache/tapestry5/kaptcha/KaptchaSymbolConstants.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-kaptcha/src/main/java/org/apache/tapestry5/kaptcha/KaptchaSymbolConstants.java?rev=1303131&view=auto
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-kaptcha/src/main/java/org/apache/tapestry5/kaptcha/KaptchaSymbolConstants.java (added)
+++ tapestry/tapestry5/trunk/tapestry-kaptcha/src/main/java/org/apache/tapestry5/kaptcha/KaptchaSymbolConstants.java Tue Mar 20 20:19:40 2012
@@ -0,0 +1,31 @@
+// Copyright 2012 The Apache Software Foundation
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package org.apache.tapestry5.kaptcha;
+
+/**
+ * Defines constants used by the {@link org.apache.tapestry5.kaptcha.services.KaptchaModule} and related components.
+ *
+ * @since 5.3
+ */
+public class KaptchaSymbolConstants
+{
+ /**
+ * Sets the default for the {@link org.apache.tapestry5.kaptcha.components.KaptchaField} component's visible parameter.
+ * This defaults to false.
+ *
+ * @since 5.3
+ */
+ public static final String KAPTCHA_DEFAULT_VISIBLE = "tapestry.kaptcha-default-visible";
+}
Modified: tapestry/tapestry5/trunk/tapestry-kaptcha/src/main/java/org/apache/tapestry5/kaptcha/components/KaptchaField.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-kaptcha/src/main/java/org/apache/tapestry5/kaptcha/components/KaptchaField.java?rev=1303131&r1=1303130&r2=1303131&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-kaptcha/src/main/java/org/apache/tapestry5/kaptcha/components/KaptchaField.java (original)
+++ tapestry/tapestry5/trunk/tapestry-kaptcha/src/main/java/org/apache/tapestry5/kaptcha/components/KaptchaField.java Tue Mar 20 20:19:40 2012
@@ -1,4 +1,4 @@
-// Copyright 2011 The Apache Software Foundation
+// Copyright 2011, 2012 The Apache Software Foundation
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
@@ -15,11 +15,15 @@
package org.apache.tapestry5.kaptcha.components;
import org.apache.tapestry5.*;
-import org.apache.tapestry5.annotations.*;
+import org.apache.tapestry5.annotations.Environmental;
+import org.apache.tapestry5.annotations.Import;
+import org.apache.tapestry5.annotations.Parameter;
+import org.apache.tapestry5.annotations.SupportsInformalParameters;
import org.apache.tapestry5.corelib.base.AbstractField;
import org.apache.tapestry5.internal.TapestryInternalUtils;
import org.apache.tapestry5.ioc.Messages;
import org.apache.tapestry5.ioc.annotations.Inject;
+import org.apache.tapestry5.kaptcha.KaptchaSymbolConstants;
import org.apache.tapestry5.services.FieldValidatorSource;
import org.apache.tapestry5.services.Request;
@@ -28,6 +32,7 @@ import org.apache.tapestry5.services.Req
* the correct value.
*
* @since 5.3
+ * @tapestrydoc
*/
@SupportsInformalParameters
@Import(stylesheet = "kaptcha.css")
@@ -41,6 +46,16 @@ public class KaptchaField extends Abstra
@Parameter(required = true, defaultPrefix = BindingConstants.COMPONENT)
private KaptchaImage image;
+ /**
+ * Controls whether the field is rendered like a password field (false, the factory default)
+ * or like a normal text field (true).
+ *
+ * @see KaptchaSymbolConstants#KAPTCHA_DEFAULT_VISIBLE
+ * @since 5.3
+ */
+ @Parameter("symbol:" + KaptchaSymbolConstants.KAPTCHA_DEFAULT_VISIBLE)
+ private boolean visible;
+
@Inject
private Request request;
@@ -56,6 +71,9 @@ public class KaptchaField extends Abstra
@Inject
private FieldValidatorSource fieldValidatorSource;
+ /**
+ * Always required.
+ */
@Override
public boolean isRequired()
{
@@ -67,6 +85,8 @@ public class KaptchaField extends Abstra
{
String userValue = request.getParameter(controlName);
+ validationTracker.recordInput(this, userValue);
+
if (TapestryInternalUtils.isEqual(image.getCaptchaText(), userValue))
return;
@@ -74,24 +94,21 @@ public class KaptchaField extends Abstra
}
@SuppressWarnings("rawtypes")
- @BeginRender
- boolean begin(MarkupWriter writer)
+ boolean beginRender(MarkupWriter writer)
{
-
writer.element("input",
- "type", "password",
+ "type", visible ? "text" : "password",
"id", getClientId(),
"name", getControlName(),
- "value", "");
+ "value", visible ? validationTracker.getInput(this) : "");
resources.renderInformalParameters(writer);
- FieldValidator fieldValidator = fieldValidatorSource
- .createValidator(this, "required", null);
+ FieldValidator fieldValidator = fieldValidatorSource.createValidator(this, "required", null);
fieldValidator.render(writer);
Modified: tapestry/tapestry5/trunk/tapestry-kaptcha/src/main/java/org/apache/tapestry5/kaptcha/components/KaptchaImage.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-kaptcha/src/main/java/org/apache/tapestry5/kaptcha/components/KaptchaImage.java?rev=1303131&r1=1303130&r2=1303131&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-kaptcha/src/main/java/org/apache/tapestry5/kaptcha/components/KaptchaImage.java (original)
+++ tapestry/tapestry5/trunk/tapestry-kaptcha/src/main/java/org/apache/tapestry5/kaptcha/components/KaptchaImage.java Tue Mar 20 20:19:40 2012
@@ -1,4 +1,4 @@
-// Copyright 2011 The Apache Software Foundation
+// Copyright 2011, 2012 The Apache Software Foundation
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
@@ -14,30 +14,29 @@
package org.apache.tapestry5.kaptcha.components;
-import java.awt.image.BufferedImage;
-import java.io.IOException;
-import java.io.OutputStream;
-
-import javax.imageio.ImageIO;
-
import org.apache.tapestry5.ComponentResources;
import org.apache.tapestry5.Link;
import org.apache.tapestry5.MarkupWriter;
import org.apache.tapestry5.annotations.Persist;
import org.apache.tapestry5.annotations.SupportsInformalParameters;
import org.apache.tapestry5.ioc.annotations.Inject;
+import org.apache.tapestry5.kaptcha.services.KaptchaProducer;
import org.apache.tapestry5.services.Response;
-import org.apache.tapestry5.kaptcha.services.KaptchaProducer;
+import javax.imageio.ImageIO;
+import java.awt.image.BufferedImage;
+import java.io.IOException;
+import java.io.OutputStream;
/**
* Part of a Captcha based authentication scheme; a KaptchaImage generates a new
* text image whenever it <em>renders</em> and can provide the previously
- * rendred text subsequently (it is stored persistently in the session).
- * <p>
- * The component renders an <img> tag, including width and height attributes. Other attributes
+ * rendered text subsequently (it is stored persistently in the session).
+ * <p/>
+ * The component renders an {@code <img>} tag, including width and height attributes. Other attributes
* come from informal parameters.
*
+ * @tapestrydoc
* @since 5.3
*/
@SupportsInformalParameters
@@ -72,11 +71,11 @@ public class KaptchaImage
writer.element("img",
- "src", link.toURI(),
+ "src", link.toURI(),
- "width", producer.getWidth(),
+ "width", producer.getWidth(),
- "height", producer.getHeight());
+ "height", producer.getHeight());
resources.renderInformalParameters(writer);
Modified: tapestry/tapestry5/trunk/tapestry-kaptcha/src/main/java/org/apache/tapestry5/kaptcha/services/KaptchaModule.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-kaptcha/src/main/java/org/apache/tapestry5/kaptcha/services/KaptchaModule.java?rev=1303131&r1=1303130&r2=1303131&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-kaptcha/src/main/java/org/apache/tapestry5/kaptcha/services/KaptchaModule.java (original)
+++ tapestry/tapestry5/trunk/tapestry-kaptcha/src/main/java/org/apache/tapestry5/kaptcha/services/KaptchaModule.java Tue Mar 20 20:19:40 2012
@@ -1,4 +1,4 @@
-// Copyright 2011 The Apache Software Foundation
+// Copyright 2011, 2012 The Apache Software Foundation
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
@@ -15,20 +15,15 @@
package org.apache.tapestry5.kaptcha.services;
import org.apache.tapestry5.internal.InternalConstants;
-import org.apache.tapestry5.ioc.Configuration;
-import org.apache.tapestry5.ioc.OrderedConfiguration;
-import org.apache.tapestry5.ioc.Resource;
-import org.apache.tapestry5.ioc.ServiceBinder;
+import org.apache.tapestry5.ioc.*;
import org.apache.tapestry5.ioc.annotations.Contribute;
import org.apache.tapestry5.ioc.annotations.Value;
+import org.apache.tapestry5.ioc.services.FactoryDefaults;
+import org.apache.tapestry5.ioc.services.SymbolProvider;
+import org.apache.tapestry5.kaptcha.KaptchaSymbolConstants;
import org.apache.tapestry5.kaptcha.internal.services.KaptchaDataTypeAnalyzer;
import org.apache.tapestry5.kaptcha.internal.services.KaptchaProducerImpl;
-import org.apache.tapestry5.services.BeanBlockContribution;
-import org.apache.tapestry5.services.BeanBlockSource;
-import org.apache.tapestry5.services.ComponentClassResolver;
-import org.apache.tapestry5.services.DataTypeAnalyzer;
-import org.apache.tapestry5.services.EditBlockContribution;
-import org.apache.tapestry5.services.LibraryMapping;
+import org.apache.tapestry5.services.*;
import org.apache.tapestry5.services.messages.ComponentMessagesSource;
/**
@@ -43,6 +38,13 @@ public class KaptchaModule
binder.bind(KaptchaProducer.class, KaptchaProducerImpl.class);
}
+ @Contribute(SymbolProvider.class)
+ @FactoryDefaults
+ public static void factoryDefaults(MappedConfiguration<String, Object> configuration)
+ {
+ configuration.add(KaptchaSymbolConstants.KAPTCHA_DEFAULT_VISIBLE, false);
+ }
+
@Contribute(ComponentClassResolver.class)
public static void provideLibraryMapping(Configuration<LibraryMapping> configuration)
{
@@ -50,7 +52,7 @@ public class KaptchaModule
}
@Contribute(ComponentMessagesSource.class)
- public static void provideLibrayMessages(
+ public static void provideLibraryMessages(
OrderedConfiguration<Resource> configuration,
@Value("classpath:org/apache/tapestry5/kaptcha/tapestry-kaptcha.properties")
Resource coreCatalog)