Author: niallp
Date: Wed Apr  6 00:44:25 2005
New Revision: 160262

URL: http://svn.apache.org/viewcvs?view=rev&rev=160262
Log:
Port to 1.2.x branch - Bug 21603 Automatic readonly/disabled settings in 
struts-html reported by Shai Berger.

Modified:
    struts/core/branches/STRUTS_1_2_BRANCH/doc/userGuide/struts-html.xml
    
struts/core/branches/STRUTS_1_2_BRANCH/src/share/org/apache/struts/taglib/html/BaseHandlerTag.java
    
struts/core/branches/STRUTS_1_2_BRANCH/src/share/org/apache/struts/taglib/html/FormTag.java
    
struts/core/branches/STRUTS_1_2_BRANCH/src/share/org/apache/struts/taglib/html/ImgTag.java
    
struts/core/branches/STRUTS_1_2_BRANCH/src/share/org/apache/struts/taglib/html/LinkTag.java
    
struts/core/branches/STRUTS_1_2_BRANCH/src/share/org/apache/struts/taglib/html/PasswordTag.java
    
struts/core/branches/STRUTS_1_2_BRANCH/src/share/org/apache/struts/taglib/html/TextTag.java
    
struts/core/branches/STRUTS_1_2_BRANCH/src/share/org/apache/struts/taglib/html/TextareaTag.java

Modified: struts/core/branches/STRUTS_1_2_BRANCH/doc/userGuide/struts-html.xml
URL: 
http://svn.apache.org/viewcvs/struts/core/branches/STRUTS_1_2_BRANCH/doc/userGuide/struts-html.xml?view=diff&r1=160261&r2=160262
==============================================================================
--- struts/core/branches/STRUTS_1_2_BRANCH/doc/userGuide/struts-html.xml 
(original)
+++ struts/core/branches/STRUTS_1_2_BRANCH/doc/userGuide/struts-html.xml Wed 
Apr  6 00:44:25 2005
@@ -1645,6 +1645,17 @@
         </attribute>
 
         <attribute>
+            <name>disabled</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <info>
+                Set to <code>true</code> if the Form's input fields should be
+                disabled.
+            </info>
+            <since>Struts 1.2.7</since>
+        </attribute>
+
+        <attribute>
             <name>enctype</name>
             <required>false</required>
             <rtexprvalue>true</rtexprvalue>
@@ -1704,6 +1715,17 @@
             <info>
                 JavaScript event handler executed if the form is submitted.
             </info>
+        </attribute>
+
+        <attribute>
+            <name>readonly</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <info>
+                Set to <code>true</code> if the Form's input fields should be
+                read only.
+            </info>
+            <since>Struts 1.2.7</since>
         </attribute>
 
                <attribute>

Modified: 
struts/core/branches/STRUTS_1_2_BRANCH/src/share/org/apache/struts/taglib/html/BaseHandlerTag.java
URL: 
http://svn.apache.org/viewcvs/struts/core/branches/STRUTS_1_2_BRANCH/src/share/org/apache/struts/taglib/html/BaseHandlerTag.java?view=diff&r1=160261&r2=160262
==============================================================================
--- 
struts/core/branches/STRUTS_1_2_BRANCH/src/share/org/apache/struts/taglib/html/BaseHandlerTag.java
 (original)
+++ 
struts/core/branches/STRUTS_1_2_BRANCH/src/share/org/apache/struts/taglib/html/BaseHandlerTag.java
 Wed Apr  6 00:44:25 2005
@@ -132,9 +132,22 @@
     /** Component is disabled. */
     private boolean disabled = false;
 
+    /** Indicates whether 'disabled' is a valid attribute */
+    protected boolean doDisabled = true;
+
     /** Component is readonly. */
     private boolean readonly = false;
 
+    /** 
+     * <p>Indicates whether 'readonly' is a valid attribute.</p>
+     *
+     * <p>According to the HTML 4.0 Specification &lt;readonly&gt;
+     *    is valid for &lt;input type="text"&gt;, &lt;input type="password"&gt;
+     *    and &lt;textarea"&gt; elements. Therefore, except for those tags this
+     *    value is set to <code>false</code>.</p>
+     */
+    protected boolean doReadonly = false;
+
     // CSS Style Support
 
     /** Style attribute associated with component. */
@@ -844,12 +857,27 @@
         prepareAttribute(handlers, "onblur", getOnblur());
         prepareAttribute(handlers, "onfocus", getOnfocus());
 
-        if (getDisabled()) {
-            handlers.append(" disabled=\"disabled\"");
+        // Get the parent FormTag (if necessary)
+        FormTag formTag = null;
+        if ((doDisabled && !getDisabled()) ||
+            (doReadonly && !getReadonly())) {
+            formTag = (FormTag)findAncestorWithClass(this, FormTag.class);
         }
 
-        if (getReadonly()) {
-            handlers.append(" readonly=\"readonly\"");
+        // Format Disabled
+        if (doDisabled) {
+            boolean formDisabled = formTag == null ? false : 
formTag.isDisabled();
+            if (formDisabled || getDisabled()) {
+                handlers.append(" disabled=\"disabled\"");
+            }
+        }
+
+        // Format Read Only
+        if (doReadonly) {
+            boolean formReadOnly = formTag == null ? false : 
formTag.isReadonly();
+            if (formReadOnly || getReadonly()) {
+                handlers.append(" readonly=\"readonly\"");
+            }
         }
 
     }

Modified: 
struts/core/branches/STRUTS_1_2_BRANCH/src/share/org/apache/struts/taglib/html/FormTag.java
URL: 
http://svn.apache.org/viewcvs/struts/core/branches/STRUTS_1_2_BRANCH/src/share/org/apache/struts/taglib/html/FormTag.java?view=diff&r1=160261&r2=160262
==============================================================================
--- 
struts/core/branches/STRUTS_1_2_BRANCH/src/share/org/apache/struts/taglib/html/FormTag.java
 (original)
+++ 
struts/core/branches/STRUTS_1_2_BRANCH/src/share/org/apache/struts/taglib/html/FormTag.java
 Wed Apr  6 00:44:25 2005
@@ -169,6 +169,12 @@
      */
     protected String acceptCharset = null;
 
+    /** Controls whether child controls should be 'disabled'. */
+    private boolean disabled = false;
+
+    /** Controls whether child controls should be 'readonly'. */
+    protected boolean readonly = false;
+
     // ------------------------------------------------------------- Properties
 
     /**
@@ -403,6 +409,26 @@
 
     }
 
+    /** Sets the disabled event handler. */
+    public void setDisabled(boolean disabled) {
+        this.disabled = disabled;
+    }
+
+    /** Returns the disabled event handler. */
+    public boolean isDisabled() {
+        return disabled;
+    }
+
+    /** Sets the readonly event handler. */
+    public void setReadonly(boolean readonly) {
+        this.readonly = readonly;
+    }
+
+    /** Returns the readonly event handler. */
+    public boolean isReadonly() {
+        return readonly;
+    }
+
 
     // --------------------------------------------------------- Public Methods
 
@@ -680,12 +706,14 @@
         action = null;
         moduleConfig = null;
         enctype = null;
+        disabled = false;
         focus = null;
         focusIndex = null;
         mapping = null;
         method = null;
         onreset = null;
         onsubmit = null;
+        readonly = false;
         servlet = null;
         style = null;
         styleClass = null;

Modified: 
struts/core/branches/STRUTS_1_2_BRANCH/src/share/org/apache/struts/taglib/html/ImgTag.java
URL: 
http://svn.apache.org/viewcvs/struts/core/branches/STRUTS_1_2_BRANCH/src/share/org/apache/struts/taglib/html/ImgTag.java?view=diff&r1=160261&r2=160262
==============================================================================
--- 
struts/core/branches/STRUTS_1_2_BRANCH/src/share/org/apache/struts/taglib/html/ImgTag.java
 (original)
+++ 
struts/core/branches/STRUTS_1_2_BRANCH/src/share/org/apache/struts/taglib/html/ImgTag.java
 Wed Apr  6 00:44:25 2005
@@ -45,6 +45,13 @@
 
 public class ImgTag extends BaseHandlerTag {
 
+    // ----------------------------------------------------- Constructor
+
+    public ImgTag() {
+        super();
+        doDisabled = false;
+    }
+
     // ------------------------------------------------------------- Properties
 
      /**

Modified: 
struts/core/branches/STRUTS_1_2_BRANCH/src/share/org/apache/struts/taglib/html/LinkTag.java
URL: 
http://svn.apache.org/viewcvs/struts/core/branches/STRUTS_1_2_BRANCH/src/share/org/apache/struts/taglib/html/LinkTag.java?view=diff&r1=160261&r2=160262
==============================================================================
--- 
struts/core/branches/STRUTS_1_2_BRANCH/src/share/org/apache/struts/taglib/html/LinkTag.java
 (original)
+++ 
struts/core/branches/STRUTS_1_2_BRANCH/src/share/org/apache/struts/taglib/html/LinkTag.java
 Wed Apr  6 00:44:25 2005
@@ -44,6 +44,13 @@
      */
     protected String text = null;
 
+    // ----------------------------------------------------- Constructor
+
+    public LinkTag() {
+        super();
+        doDisabled = false;
+    }
+
 
     // ------------------------------------------------------------- Properties
 

Modified: 
struts/core/branches/STRUTS_1_2_BRANCH/src/share/org/apache/struts/taglib/html/PasswordTag.java
URL: 
http://svn.apache.org/viewcvs/struts/core/branches/STRUTS_1_2_BRANCH/src/share/org/apache/struts/taglib/html/PasswordTag.java?view=diff&r1=160261&r2=160262
==============================================================================
--- 
struts/core/branches/STRUTS_1_2_BRANCH/src/share/org/apache/struts/taglib/html/PasswordTag.java
 (original)
+++ 
struts/core/branches/STRUTS_1_2_BRANCH/src/share/org/apache/struts/taglib/html/PasswordTag.java
 Wed Apr  6 00:44:25 2005
@@ -31,6 +31,7 @@
     public PasswordTag() {
         super();
         this.type = "password";
+        doReadonly = true;
     }
 
 }

Modified: 
struts/core/branches/STRUTS_1_2_BRANCH/src/share/org/apache/struts/taglib/html/TextTag.java
URL: 
http://svn.apache.org/viewcvs/struts/core/branches/STRUTS_1_2_BRANCH/src/share/org/apache/struts/taglib/html/TextTag.java?view=diff&r1=160261&r2=160262
==============================================================================
--- 
struts/core/branches/STRUTS_1_2_BRANCH/src/share/org/apache/struts/taglib/html/TextTag.java
 (original)
+++ 
struts/core/branches/STRUTS_1_2_BRANCH/src/share/org/apache/struts/taglib/html/TextTag.java
 Wed Apr  6 00:44:25 2005
@@ -34,8 +34,9 @@
      */
     public TextTag() {
 
-          super();
-          this.type = "text";
+         super();
+         this.type = "text";
+         doReadonly = true;
 
     }
 

Modified: 
struts/core/branches/STRUTS_1_2_BRANCH/src/share/org/apache/struts/taglib/html/TextareaTag.java
URL: 
http://svn.apache.org/viewcvs/struts/core/branches/STRUTS_1_2_BRANCH/src/share/org/apache/struts/taglib/html/TextareaTag.java?view=diff&r1=160261&r2=160262
==============================================================================
--- 
struts/core/branches/STRUTS_1_2_BRANCH/src/share/org/apache/struts/taglib/html/TextareaTag.java
 (original)
+++ 
struts/core/branches/STRUTS_1_2_BRANCH/src/share/org/apache/struts/taglib/html/TextareaTag.java
 Wed Apr  6 00:44:25 2005
@@ -30,6 +30,13 @@
 public class TextareaTag extends BaseInputTag {
 
 
+    // ----------------------------------------------------- Constructor
+
+    public TextareaTag () {
+        super();
+        doReadonly = true;
+    }
+
     // --------------------------------------------------------- Public Methods
 
 



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to