seade       2003/09/02 06:28:28

  Modified:    src/java/org/apache/turbine TurbineConstants.java
               conf     TurbineResources.properties
               src/java/org/apache/turbine/util/template
                        HtmlPageAttributes.java
               conf/master TurbineResources.master
               xdocs/howto velocityonlylayout-howto.xml
               src/java/org/apache/turbine/modules/pages DefaultPage.java
  Log:
  Provides an implementation of HtmlPageAttributes.getDefaultDoctype() free from 
specific domain knowledge.
  
  Revision  Changes    Path
  1.25      +13 -1     
jakarta-turbine-2/src/java/org/apache/turbine/TurbineConstants.java
  
  Index: TurbineConstants.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-turbine-2/src/java/org/apache/turbine/TurbineConstants.java,v
  retrieving revision 1.24
  retrieving revision 1.25
  diff -u -r1.24 -r1.25
  --- TurbineConstants.java     10 Jul 2003 12:33:24 -0000      1.24
  +++ TurbineConstants.java     2 Sep 2003 13:28:28 -0000       1.25
  @@ -60,6 +60,7 @@
    *
    * @author <a href="mailto:[EMAIL PROTECTED]">Jason van Zyl</a>
    * @author <a href="mailto:[EMAIL PROTECTED]">Henning P. Schmiedehausen</a>
  + * @author <a href="mailto:[EMAIL PROTECTED]">Scott Eade</a>
    * @version $Id$
    */
   public interface TurbineConstants
  @@ -256,6 +257,17 @@
       String DOCUMENT_TYPE_HTML40STRICT = "Html40Strict";
       /** Html 4.0 Frameset */
       String DOCUMENT_TYPE_HTML40FRAMESET = "Html40Frameset";
  +
  +    /** Default doctype root element. */
  +    String DEFAULT_HTML_DOCTYPE_ROOT_ELEMENT_KEY 
  +            = "default.html.doctype.root.element";
  +
  +    /** Default doctype dtd. */
  +    String DEFAULT_HTML_DOCTYPE_IDENTIFIER_KEY 
  +            = "default.html.doctype.identifier";
  +
  +    /** Default doctype url. */
  +    String DEFAULT_HTML_DOCTYPE_URI_KEY = "default.html.doctype.url";
   
       /** Default Language property */
       String LOCALE_DEFAULT_LANGUAGE_KEY = "locale.default.language";
  
  
  
  1.51      +15 -6     jakarta-turbine-2/conf/TurbineResources.properties
  
  Index: TurbineResources.properties
  ===================================================================
  RCS file: /home/cvs/jakarta-turbine-2/conf/TurbineResources.properties,v
  retrieving revision 1.50
  retrieving revision 1.51
  diff -u -r1.50 -r1.51
  --- TurbineResources.properties       31 Jul 2003 16:32:11 -0000      1.50
  +++ TurbineResources.properties       2 Sep 2003 13:28:28 -0000       1.51
  @@ -161,14 +161,23 @@
   
   screen.invalidstate=error.InvalidState
   
  -# Set the default Doctype.  The default Doctype can be set by using
  -# the single strings: Html40Strict, Html40Transitional, or
  -# Html40Frameset.  Additionally the default can be supplied as two
  -# strings separated by a comma giving the DTD and URI.
  +# Set the default Doctype if you use the deprecated VelocityECSLayout.  The 
  +# default Doctype can be set by using the single strings: Html40Strict, 
  +# Html40Transitional, or Html40Frameset.  Additionally the default can be 
  +# supplied as two strings separated by a comma giving the DTD and URI.
   #
   # Default: ignored if not set to some value.
   
  -default.doctype=Html40Transitional
  +#default.doctype=Html40Transitional
  +
  +# Set the components of the default Doctype for use in html documents.
  +#
  +# Defaults: There are no defaults - if default.html.doctype.root.element is not
  +#           set then no default doctype will be available.
  +
  +default.html.doctype.root.element=HTML
  +default.html.doctype.identifier=-//W3C//DTD HTML 4.01 Transitional//EN
  +default.html.doctype.url=http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd
   
   # This is the default action to log a user in.  If you write your own
   # implementation of the login action, make sure that you change this
  
  
  
  1.10      +19 -89    
jakarta-turbine-2/src/java/org/apache/turbine/util/template/HtmlPageAttributes.java
  
  Index: HtmlPageAttributes.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-turbine-2/src/java/org/apache/turbine/util/template/HtmlPageAttributes.java,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- HtmlPageAttributes.java   2 Sep 2003 06:25:48 -0000       1.9
  +++ HtmlPageAttributes.java   2 Sep 2003 13:28:28 -0000       1.10
  @@ -58,7 +58,6 @@
   import java.util.List;
   import java.util.Map;
   import java.util.ArrayList;
  -import java.util.Vector;
   
   import org.apache.commons.lang.StringUtils;
   import org.apache.commons.logging.Log;
  @@ -67,7 +66,6 @@
   import org.apache.turbine.TurbineConstants;
   import org.apache.turbine.services.pull.ApplicationTool;
   import org.apache.turbine.util.RunData;
  -import org.apache.turbine.util.TurbineException;
   
   /**
    * Template context tool that can be used to set various attributes of a
  @@ -128,6 +126,7 @@
    *   $page.setHttpEquiv("refresh","5; URL=http://localhost/nextpage.html";)</code>
    *
    * @author <a href="mailto:[EMAIL PROTECTED]">Quinton McCombs</a>
  + * @author <a href="mailto:[EMAIL PROTECTED]">Scott Eade</a>
    * @version $Id$
    */
   public class HtmlPageAttributes
  @@ -661,104 +660,35 @@
       }
       
       /**
  -     * Retrieve the default Doctype.  If Doctype is set to null, then an empty
  -     * string will be returned.  The default Doctype can be set in
  -     * TurbineResources as three strings giving the tag (e.g. "HTML"), dtd (e.g. 
  -     * "-//W3C//DTD HTML 4.01 Transitional//EN") and uri (e.g. 
  -     * "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd";).  For
  -     * backwards compatibility the default can be set using one of the single 
  -     * strings: Html40Strict, Html40Transitional, or Html40Frameset or as two 
  -     * strings providing the the dtd and uri (tag is assumed to be "HTML") - 
  -     * all but the three string configuration will result in an info level 
  -     * deprecation message being written to the log.
  -     *
  -     * @exception TurbineException If the default doctype is not specified in 
  +     * Retrieve the default Doctype as configured by the 
  +     * TurbineResources.peoperties 
  +     * default.doctype.root.element, default.doctype.identifier and
  +     * default.doctype.url properties (defaults are "HTML", 
  +     * "-//W3C//DTD HTML 4.01 Transitional//EN" and 
  +     * "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd"; respectively).
  +     * 
  +     * @return the DOCTYPE tag constructed from the properties in 
        * TurbineResources.properties.
        */
       public static String getDefaultDoctype()
  -            throws TurbineException
       {
           if (doctype == null)
           {
  -            String errMsg = "default.doctype property not set properly in " 
  -                    + "TurbineResources.properties!";
  -            Vector doctypeProperty = Turbine.getConfiguration()
  -                    .getVector(TurbineConstants.DEFAULT_DOCUMENT_TYPE_KEY);
  -
  -            if (doctypeProperty != null)
  +            String tag = Turbine.getConfiguration().getString(
  +                    TurbineConstants.DEFAULT_HTML_DOCTYPE_ROOT_ELEMENT_KEY);
  +            if (StringUtils.isEmpty(tag))
               {
  -                String tag;
  -                String identifier;
  -                String uri;
  -                switch(doctypeProperty.size())
  -                {
  -                case 1:
  -                    {
  -                        String doc = (String) doctypeProperty.firstElement();
  -                        tag = "HTML";
  -                        identifier = "-//W3C//DTD HTML 4.0 ";
  -                        uri = "http://www.w3.org/TR/REC-html40/";;
  -                        if (doc.equalsIgnoreCase(
  -                             TurbineConstants.DOCUMENT_TYPE_HTML40TRANSITIONAL))
  -                        {
  -                            identifier += "Transitional";
                            uri += "loose";
  -                        }
  -                        else if (doc.equalsIgnoreCase(
  -                                TurbineConstants.DOCUMENT_TYPE_HTML40STRICT))
  -                        {
  -                            uri += "strict";
  -                        }
  -                        else if (doc.equalsIgnoreCase(
  -                                TurbineConstants.DOCUMENT_TYPE_HTML40FRAMESET))
  -                        {
  -                            identifier = "Frameset";
  -                            uri += "frameset";
  -                        }
  -                        else
  -                        {
  -                            throw new TurbineException(errMsg);
  -                        }
  -                        identifier += "//EN";
  -                        uri += ".dtd";
  -
  -                        log.info("Defining default.doctype with a single string"
  -                            + " in TurbineResources.properties is deprecated.  "
  -                            + "Please use three strings instead (tag, dtd and "
  -                            + "uri).");
  -                        break;
  -                    }
  -                case 2:
  -                    {
  -                        tag = "HTML";
  -                        identifier = (String) doctypeProperty.elementAt(0); 
  -                        uri = (String) doctypeProperty.elementAt(1);
  -
  -                        log.info("Defining default.doctype with two strings"
  -                            + " in TurbineResources.properties is deprecated.  "
  -                            + "Please use three strings instead (tag, dtd and "
  -                            + "uri).");
  -                        break;
  -                    }
  -                case 3:
  -                    {
  -                        tag = (String) doctypeProperty.elementAt(0);
  -                        identifier = (String) doctypeProperty.elementAt(1); 
  -                        uri = (String) doctypeProperty.elementAt(2);
  -                        break;
  -                    }
  -                default:
  -                    {
  -                        throw new TurbineException(errMsg);
  -                    }
  -                }
  -                doctype = getDoctype(tag, identifier, uri);
  +                doctype = "";
               }
               else
               {
  -                doctype = "";
  +                String identifier = Turbine.getConfiguration().getString(
  +                        TurbineConstants.DEFAULT_HTML_DOCTYPE_IDENTIFIER_KEY);
  +                String uri = Turbine.getConfiguration().getString(
  +                        TurbineConstants.DEFAULT_HTML_DOCTYPE_URI_KEY);
  +                doctype = getDoctype(tag, identifier, uri);
               }
           }
  -
           return doctype;
       }
       
  
  
  
  1.50      +15 -6     jakarta-turbine-2/conf/master/TurbineResources.master
  
  Index: TurbineResources.master
  ===================================================================
  RCS file: /home/cvs/jakarta-turbine-2/conf/master/TurbineResources.master,v
  retrieving revision 1.49
  retrieving revision 1.50
  diff -u -r1.49 -r1.50
  --- TurbineResources.master   31 Jul 2003 16:32:11 -0000      1.49
  +++ TurbineResources.master   2 Sep 2003 13:28:28 -0000       1.50
  @@ -161,14 +161,23 @@
   
   [EMAIL PROTECTED]@
   
  -# Set the default Doctype.  The default Doctype can be set by using
  -# the single strings: Html40Strict, Html40Transitional, or
  -# Html40Frameset.  Additionally the default can be supplied as two
  -# strings separated by a comma giving the DTD and URI.
  +# Set the default Doctype if you use the deprecated VelocityECSLayout.  The 
  +# default Doctype can be set by using the single strings: Html40Strict, 
  +# Html40Transitional, or Html40Frameset.  Additionally the default can be 
  +# supplied as two strings separated by a comma giving the DTD and URI.
   #
   # Default: ignored if not set to some value.
   
  -default.doctype=Html40Transitional
  +#default.doctype=Html40Transitional
  +
  +# Set the components of the default Doctype for use in html documents.
  +#
  +# Defaults: There are no defaults - if default.html.doctype.root.element is not
  +#           set then no default doctype will be available.
  +
  +default.html.doctype.root.element=HTML
  +default.html.doctype.identifier=-//W3C//DTD HTML 4.01 Transitional//EN
  +default.html.doctype.url=http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd
   
   # This is the default action to log a user in.  If you write your own
   # implementation of the login action, make sure that you change this
  
  
  
  1.5       +14 -2     jakarta-turbine-2/xdocs/howto/velocityonlylayout-howto.xml
  
  Index: velocityonlylayout-howto.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-turbine-2/xdocs/howto/velocityonlylayout-howto.xml,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- velocityonlylayout-howto.xml      2 Sep 2003 07:22:10 -0000       1.4
  +++ velocityonlylayout-howto.xml      2 Sep 2003 13:28:28 -0000       1.5
  @@ -79,9 +79,21 @@
   ]]>
   </source>
   <p>
  -    to your templates to pick up the default doctype definition from
  -    TurbineResources.properties and make it available as $page.DefaultDoctype.
  +    to your layout templates to pick up the default doctype definition from
  +    TurbineResources.properties thus:
   </p>
  +<source>
  +<![CDATA[
  +# Set the components of the default Doctype for use in html documents.
  +#
  +# Defaults: There are no defaults - if default.html.doctype.root.element is not
  +#           set then no default doctype will be available.
  +
  +default.html.doctype.root.element=HTML
  +default.html.doctype.identifier=-//W3C//DTD HTML 4.01 Transitional//EN
  +default.html.doctype.url=http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd
  +]]>
  +</source>
   <p>
       Add the line
   </p>
  
  
  
  1.9       +6 -10     
jakarta-turbine-2/src/java/org/apache/turbine/modules/pages/DefaultPage.java
  
  Index: DefaultPage.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-turbine-2/src/java/org/apache/turbine/modules/pages/DefaultPage.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- DefaultPage.java  2 Sep 2003 06:25:49 -0000       1.8
  +++ DefaultPage.java  2 Sep 2003 13:28:28 -0000       1.9
  @@ -255,6 +255,11 @@
           {
               switch(doctypeProperty.size())
               {
  +            case 0:
  +                {
  +                    // Don't add a doctype.
  +                    break;
  +                }
               case 1:
                   {
                       String doc = (String) doctypeProperty.firstElement();
  @@ -282,15 +287,6 @@
                           .setDoctype(new Doctype()
                                       .setIdentifier((String) 
doctypeProperty.elementAt(0))
                                       .setUri((String) doctypeProperty.elementAt(1)));
  -                    break;
  -                }
  -            case 3:
  -                {
  -                    // Ignore first string as the tag value is provided by ECS.
  -                    data.getPage()
  -                        .setDoctype(new Doctype()
  -                                    .setIdentifier((String) 
doctypeProperty.elementAt(1))
  -                                    .setUri((String) doctypeProperty.elementAt(2)));
                       break;
                   }
               default:
  
  
  

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

Reply via email to