What's the point of CommonEmptyHeader?
It's definied in CommonUiLabels.xml as:
<property key="CommonEmptyHeader">
<!-- do not remove this! -->
<value xml:lang="en" xml:space="preserve"> </value>
</property>
It is just a simple space (0x20)
It is used ~500 times in forms as a title in a field definition
Example:
<form name="EditPerson" type="single" target="updatePerson"
...
<field name="cancelLink" title="${uiLabelMap.CommonEmptyHeader}"
<hyperlink target="${donePage}" also-hidden="false"
description="${uiLabelMap.CommonCancelDone}">
<parameter param-name="partyId"/>
</hyperlink>
</field>
</form>
This is a button which should have no label, but if the title attribute
is empty then the name attribute is used as label.
Why not just put a space (" ") into the title attribute - still a hack,
but exactly same result a using CommonEmptyHeader without the need using
CommonEmptyHeader.
The real solution is of course not to display a label if the title
attribute is empty.
Christian
Adrian Crum schrieb:
> The bad thing about this change is that it is not necessary. This change
> hides a problem - it does not solve it. I mentioned that in the Jira issue.
>
> The method is supposed to pretty-print an XML document, and if you turn
> off space removal, the indentation will be wrong. In other words, it
> will not be pretty.
>
> -1 on this change in any version.
>
> -Adrian
>
> On 5/16/2012 2:25 AM, Scott Gray wrote:
>> I see in your subsequent commits that you encountered the problems
>> caused by this type of change.
>>
>> They're also a pretty good indication that once again you didn't
>> compile or test before back-porting, I'm not sure what I can do to
>> make the need for this any clearer to you. Please remember your
>> responsibilities as a committer.
>>
>> Regards
>> Scott
>>
>> On 16/05/2012, at 1:17 PM, Scott Gray wrote:
>>
>>> You've changed the signature on the UtilXml methods, that should not
>>> be done and especially not be back-ported to the branches. Even in
>>> the trunk the correct thing to do is to add a new method with the new
>>> signature and then (if needed) deprecate the old method. Obviously
>>> deprecation shouldn't be back-ported.
>>>
>>> There's nothing new in this comment Jacques, the general rule of
>>> thumb is never change a method signature unless it is private.
>>>
>>> Regards
>>> Scott
>>>
>>> On 16/05/2012, at 7:11 AM, [email protected] wrote:
>>>
>>>> Author: jleroux
>>>> Date: Tue May 15 19:11:13 2012
>>>> New Revision: 1338836
>>>>
>>>> URL: http://svn.apache.org/viewvc?rev=1338836&view=rev
>>>> Log:
>>>> "Applied fix from trunk for revision: 1338831" (conflict in
>>>> CommonUiLabels.xml handled by hand)
>>>> ------------------------------------------------------------------------
>>>>
>>>> r1338831 | jleroux | 2012-05-15 21:03:26 +0200 (mar., 15 mai 2012) |
>>>> 14 lines
>>>>
>>>> Fixes https://issues.apache.org/jira/browse/OFBIZ-4652 "The Label
>>>> Manager is wrongly overriding CommonEmptyHeader"
>>>> * Adds a keepSpace boolean to UtilXml.writeXmlDocument(), this
>>>> allows to use xsl:preserve-space into UtilXml.createOutputTransformer()
>>>> * Uses it into SaveLabelsToXmlFile.saveLabelsToXmlFile()
>>>> * Adds some French labels into CommonUiLabels.xml using Labels
>>>> Manager to test the new functionality
>>>> * Adds the xml:space attribute into the valueType complexType
>>>> * Adds the ofbiz-properties.xsd schema into the base-catalog.xml
>>>>
>>>> I got an issue when 1st trying to commit:
>>>> Commit failed (details follow):
>>>> While preparing
>>>> 'D:\workspace\ofbizClean\framework\common\config\CommonUiLabels.xml'
>>>> for commit
>>>> Inconsistent line ending style
>>>>
>>>> So I forced the EOLs to my locale platform value (Win XP)
>>>> ------------------------------------------------------------------------
>>>>
>>>>
>>>>
>>>> Modified:
>>>> ofbiz/branches/release12.04/ (props changed)
>>>> ofbiz/branches/release12.04/framework/base/dtd/base-catalog.xml
>>>> ofbiz/branches/release12.04/framework/base/dtd/ofbiz-properties.xsd
>>>>
>>>> ofbiz/branches/release12.04/framework/base/src/org/ofbiz/base/util/UtilXml.java
>>>>
>>>>
>>>> ofbiz/branches/release12.04/framework/common/config/CommonUiLabels.xml
>>>>
>>>> ofbiz/branches/release12.04/framework/webtools/src/org/ofbiz/webtools/labelmanager/SaveLabelsToXmlFile.java
>>>>
>>>>
>>>> Propchange: ofbiz/branches/release12.04/
>>>> ------------------------------------------------------------------------------
>>>>
>>>> Merged /ofbiz/trunk:r1338831
>>>>
>>>> Modified:
>>>> ofbiz/branches/release12.04/framework/base/dtd/base-catalog.xml
>>>> URL:
>>>> http://svn.apache.org/viewvc/ofbiz/branches/release12.04/framework/base/dtd/base-catalog.xml?rev=1338836&r1=1338835&r2=1338836&view=diff
>>>>
>>>> ==============================================================================
>>>>
>>>> --- ofbiz/branches/release12.04/framework/base/dtd/base-catalog.xml
>>>> (original)
>>>> +++ ofbiz/branches/release12.04/framework/base/dtd/base-catalog.xml
>>>> Tue May 15 19:11:13 2012
>>>> @@ -29,4 +29,5 @@ under the License.
>>>> <system systemId="http://ofbiz.apache.org/dtds/jndi-config.xsd"
>>>> uri="jndi-config.xsd"/>
>>>> <system
>>>> systemId="http://ofbiz.apache.org/dtds/ofbiz-component.xsd"
>>>> uri="ofbiz-component.xsd"/>
>>>> <system
>>>> systemId="http://ofbiz.apache.org/dtds/ofbiz-containers.xsd"
>>>> uri="ofbiz-containers.xsd"/>
>>>> +<system
>>>> systemId="http://ofbiz.apache.org/dtds/ofbiz-properties.xsd"
>>>> uri="ofbiz-properties.xsd"/>
>>>> </catalog>
>>>>
>>>> Modified:
>>>> ofbiz/branches/release12.04/framework/base/dtd/ofbiz-properties.xsd
>>>> URL:
>>>> http://svn.apache.org/viewvc/ofbiz/branches/release12.04/framework/base/dtd/ofbiz-properties.xsd?rev=1338836&r1=1338835&r2=1338836&view=diff
>>>>
>>>> ==============================================================================
>>>>
>>>> ---
>>>> ofbiz/branches/release12.04/framework/base/dtd/ofbiz-properties.xsd
>>>> (original)
>>>> +++
>>>> ofbiz/branches/release12.04/framework/base/dtd/ofbiz-properties.xsd
>>>> Tue May 15 19:11:13 2012
>>>> @@ -42,6 +42,7 @@ under the License.
>>>> <xs:simpleContent>
>>>> <xs:extension base="xs:string">
>>>> <xs:attribute ref="xml:lang"/>
>>>> +<xs:attribute ref="xml:space"/>
>>>> </xs:extension>
>>>> </xs:simpleContent>
>>>> </xs:complexType>
>>>>
>>>> Modified:
>>>> ofbiz/branches/release12.04/framework/base/src/org/ofbiz/base/util/UtilXml.java
>>>>
>>>> URL:
>>>> http://svn.apache.org/viewvc/ofbiz/branches/release12.04/framework/base/src/org/ofbiz/base/util/UtilXml.java?rev=1338836&r1=1338835&r2=1338836&view=diff
>>>>
>>>> ==============================================================================
>>>>
>>>> ---
>>>> ofbiz/branches/release12.04/framework/base/src/org/ofbiz/base/util/UtilXml.java
>>>> (original)
>>>> +++
>>>> ofbiz/branches/release12.04/framework/base/src/org/ofbiz/base/util/UtilXml.java
>>>> Tue May 15 19:11:13 2012
>>>> @@ -158,20 +158,26 @@ public class UtilXml {
>>>>
>>>> // ----- TrAX Methods ----------------- //
>>>>
>>>> - /** Creates a JAXP TrAX Transformer suitable for
>>>> pretty-printing an
>>>> - * XML document. This method is provided as an alternative to the
>>>> - *
>>>> deprecated<code>org.apache.xml.serialize.OutputFormat</code> class.
>>>> - * @param encoding Optional encoding, defaults to UTF-8
>>>> - * @param omitXmlDeclaration If<code>true</code> the xml
>>>> declaration
>>>> - * will be omitted from the output
>>>> - * @param indent If<code>true</code>, the output will be indented
>>>> - * @param indentAmount If<code>indent</code> is<code>true</code>,
>>>> - * the number of spaces to indent. Default is 4.
>>>> + /**
>>>> + * Creates a JAXP TrAX Transformer suitable for pretty-printing
>>>> an XML document. This method is provided as an alternative to the
>>>> deprecated
>>>> + *<code>org.apache.xml.serialize.OutputFormat</code> class.
>>>> + *
>>>> + * @param encoding
>>>> + * Optional encoding, defaults to UTF-8
>>>> + * @param omitXmlDeclaration
>>>> + * If<code>true</code> the xml declaration will be
>>>> omitted from the output
>>>> + * @param indent
>>>> + * If<code>true</code>, the output will be indented
>>>> + * @param indentAmount
>>>> + * If<code>indent</code> is<code>true</code>, the
>>>> number of spaces to indent. Default is 4.
>>>> + * @param keepSpace
>>>> + * If<code>true</code> spaces are preserved, else
>>>> striped
>>>> * @return A<code>Transformer</code> instance
>>>> * @see<a
>>>> href="http://java.sun.com/javase/6/docs/api/javax/xml/transform/package-summary.html">JAXP
>>>> TrAX</a>
>>>> * @throws TransformerConfigurationException
>>>> */
>>>> - public static Transformer createOutputTransformer(String
>>>> encoding, boolean omitXmlDeclaration, boolean indent, int
>>>> indentAmount) throws TransformerConfigurationException {
>>>> + public static Transformer createOutputTransformer(String
>>>> encoding, boolean omitXmlDeclaration, boolean indent, int
>>>> indentAmount, boolean keepSpace)
>>>> + throws TransformerConfigurationException {
>>>> StringBuilder sb = new StringBuilder();
>>>> sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
>>>> sb.append("<xsl:stylesheet
>>>> xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\"
>>>> xmlns:xalan=\"http://xml.apache.org/xslt\" version=\"1.0\">\n");
>>>> @@ -189,7 +195,11 @@ public class UtilXml {
>>>> sb.append(indentAmount<= 0 ? 4 : indentAmount);
>>>> sb.append("\"");
>>>> }
>>>> - sb.append("/>\n<xsl:strip-space elements=\"*\"/>\n");
>>>> + if (keepSpace) {
>>>> + sb.append("/>\n<xsl:preserve-space elements=\"*\"/>\n");
>>>> + } else {
>>>> + sb.append("/>\n<xsl:strip-space elements=\"*\"/>\n");
>>>> + }
>>>> sb.append("<xsl:template match=\"@*|node()\">\n");
>>>> sb.append("<xsl:copy><xsl:apply-templates
>>>> select=\"@*|node()\"/></xsl:copy>\n");
>>>> sb.append("</xsl:template>\n</xsl:stylesheet>\n");
>>>> @@ -212,21 +222,29 @@ public class UtilXml {
>>>> transformer.transform(source, result);
>>>> }
>>>>
>>>> - /** Serializes a DOM<code>Node</code> to
>>>> an<code>OutputStream</code>
>>>> - * using JAXP TrAX.
>>>> - * @param node The<code>Node</code> to serialize
>>>> - * @param os The<code>OutputStream</code> to serialize to
>>>> - * @param encoding Optional encoding, defaults to UTF-8
>>>> - * @param omitXmlDeclaration If<code>true</code> the xml
>>>> declaration
>>>> - * will be omitted from the output
>>>> - * @param indent If<code>true</code>, the output will be indented
>>>> - * @param indentAmount If<code>indent</code> is<code>true</code>,
>>>> - * the number of spaces to indent. Default is 4.
>>>> + /**
>>>> + * Serializes a DOM<code>Node</code> to
>>>> an<code>OutputStream</code> using JAXP TrAX.
>>>> + *
>>>> + * @param node
>>>> + * The<code>Node</code> to serialize
>>>> + * @param os
>>>> + * The<code>OutputStream</code> to serialize to
>>>> + * @param encoding
>>>> + * Optional encoding, defaults to UTF-8
>>>> + * @param omitXmlDeclaration
>>>> + * If<code>true</code> the xml declaration will be
>>>> omitted from the output
>>>> + * @param keepSpace
>>>> + * If<code>true</code> spaces are preserved, else
>>>> striped
>>>> + * @param indent
>>>> + * If<code>true</code>, the output will be indented
>>>> + * @param indentAmount
>>>> + * If<code>indent</code> is<code>true</code>, the
>>>> number of spaces to indent. Default is 4.
>>>> * @see<a
>>>> href="http://java.sun.com/javase/6/docs/api/javax/xml/transform/package-summary.html">JAXP
>>>> TrAX</a>
>>>> * @throws TransformerException
>>>> */
>>>> - public static void writeXmlDocument(Node node, OutputStream os,
>>>> String encoding, boolean omitXmlDeclaration, boolean indent, int
>>>> indentAmount) throws TransformerException {
>>>> - Transformer transformer = createOutputTransformer(encoding,
>>>> omitXmlDeclaration, indent, indentAmount);
>>>> + public static void writeXmlDocument(Node node, OutputStream os,
>>>> String encoding, boolean omitXmlDeclaration, boolean indent, int
>>>> indentAmount,
>>>> + boolean keepSpace) throws TransformerException {
>>>> + Transformer transformer = createOutputTransformer(encoding,
>>>> omitXmlDeclaration, indent, indentAmount, keepSpace);
>>>> transformDomDocument(transformer, node, os);
>>>> }
>>>>
>>>> @@ -325,9 +343,9 @@ public class UtilXml {
>>>> return;
>>>> }
>>>> // OutputFormat defaults are: indent on, indent = 4, include
>>>> XML declaration,
>>>> - // charset = UTF-8, line width = 72
>>>> + // charset = UTF-8, line width = 72, strip spaces
>>>> try {
>>>> - writeXmlDocument(node, os, "UTF-8", false, true, 4);
>>>> + writeXmlDocument(node, os, "UTF-8", false, true, 4,
>>>> false);
>>>> } catch (TransformerException e) {
>>>> // Wrapping this exception for backwards compatibility
>>>> throw new IOException(e.getMessage());
>>>>
>>>> Modified:
>>>> ofbiz/branches/release12.04/framework/common/config/CommonUiLabels.xml
>>>> URL:
>>>> http://svn.apache.org/viewvc/ofbiz/branches/release12.04/framework/common/config/CommonUiLabels.xml?rev=1338836&r1=1338835&r2=1338836&view=diff
>>>>
>>>> ==============================================================================
>>>>
>>>> ---
>>>> ofbiz/branches/release12.04/framework/common/config/CommonUiLabels.xml
>>>> (original)
>>>> +++
>>>> ofbiz/branches/release12.04/framework/common/config/CommonUiLabels.xml
>>>> Tue May 15 19:11:13 2012
>>>> @@ -8,6 +8,7 @@
>>>> to you 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,
>>>> @@ -17,13 +18,13 @@
>>>> specific language governing permissions and limitations
>>>> under the License.
>>>> -->
>>>> -<resource xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
>>>> +<resource xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>>>> xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/ofbiz-properties.xsd">
>>>>
>>>> <property key="AP">
>>>> <value xml:lang="de">Kreditoren</value>
>>>> <value xml:lang="en">AP</value>
>>>> <value xml:lang="es">Compras</value>
>>>> <value xml:lang="fr">Cpt. fourn.</value>
>>>> -<value xml:lang="hi_IN">लेखा देय</value>
>>>> +<value xml:lang="hi-IN">लेखा देय</value>
>>>> <value xml:lang="it">AP</value>
>>>> <value xml:lang="nl">Schulden</value>
>>>> <value xml:lang="pt_BR">Contas a pagar</value>
>>>> @@ -127,6 +128,7 @@
>>>> <property key="CommonAbort">
>>>> <value xml:lang="en">Abort</value>
>>>> <value xml:lang="es">Cancelar</value>
>>>> +<value xml:lang="fr">Abandonner</value>
>>>> <value xml:lang="vi">Hủy</value>
>>>> </property>
>>>> <property key="CommonAccepted">
>>>> @@ -413,6 +415,7 @@
>>>> <value xml:lang="de">Die Adresse wurde nicht gefunden.</value>
>>>> <value xml:lang="en">Address not found.</value>
>>>> <value xml:lang="es">Dirección no encontrada.</value>
>>>> +<value xml:lang="fr">Adresse inconnue</value>
>>>> <value xml:lang="vi">Không tìm thấy địa chỉ</value>
>>>> </property>
>>>> <property key="CommonAddresses">
>>>> @@ -2770,7 +2773,8 @@
>>>> <value xml:lang="zh_TW">電子郵件</value>
>>>> </property>
>>>> <property key="CommonEmptyHeader">
>>>> -<value xml:lang="en" xml:space="preserve"> </value><!-- do not
>>>> remove this! -->
>>>> +<!-- do not remove this! -->
>>>> +<value xml:lang="en" xml:space="preserve"> </value>
>>>> </property>
>>>> <property key="CommonEnable">
>>>> <value xml:lang="en">Enable</value>
>>>> @@ -11081,6 +11085,31 @@
>>>> <value xml:lang="zh">有效日期</value>
>>>> <value xml:lang="zh_TW">有效日</value>
>>>> </property>
>>>> +<property key="FormFieldTitle_expireButton">
>>>> +<value xml:lang="ar">نهاية الصلاحية</value>
>>>> +<value xml:lang="cs">Vypršet</value>
>>>> +<value xml:lang="de">Ablaufen</value>
>>>> +<value xml:lang="en">Expire</value>
>>>> +<value xml:lang="es">Expiración</value>
>>>> +<value xml:lang="fr">Invalider</value>
>>>> +<value xml:lang="hi-IN">निश्वासन</value>
>>>> +<value xml:lang="it">Scade</value>
>>>> +<value xml:lang="nl">Maak verlopen</value>
>>>> +<value xml:lang="pt">Expirar</value>
>>>> +<value xml:lang="pt-PT">Terminar</value>
>>>> +<value xml:lang="ro">Expira</value>
>>>> +<value xml:lang="ru">Прекратить</value>
>>>> +<value xml:lang="th">หมดเขต</value>
>>>> +<value xml:lang="vi">Hết hạn</value>
>>>> +<value xml:lang="zh">过期</value>
>>>> +<value xml:lang="zh-CN">过期</value>
>>>> +<value xml:lang="zh-TW">過期</value>
>>>> +</property>
>>>> +<property key="FormFieldTitle_extDevicePurposeActionId">
>>>> +<value xml:lang="en">External Device Purpose Action Id</value>
>>>> +<value xml:lang="es">Código acción dispositivo externo</value>
>>>> +<value xml:lang="fr">Obj. de l'action</value>
>>>> +</property>
>>>> <property key="FormFieldTitle_externalDeviceId">
>>>> <value xml:lang="en">External Device Id</value>
>>>> <value xml:lang="es">Código dispositivo externo</value>
>>>> @@ -11091,11 +11120,6 @@
>>>> <value xml:lang="es">Código tipo dispositivo externo</value>
>>>> <value xml:lang="fr">Type de Mat. Externe</value>
>>>> </property>
>>>> -<property key="FormFieldTitle_extDevicePurposeActionId">
>>>> -<value xml:lang="en">External Device Purpose Action Id</value>
>>>> -<value xml:lang="es">Código acción dispositivo externo</value>
>>>> -<value xml:lang="fr">Obj. de l'action</value>
>>>> -</property>
>>>> <property key="FormFieldTitle_fromDate">
>>>> <value xml:lang="ar">تاريخ البدء</value>
>>>> <value xml:lang="de">Von Datum</value>
>>>>
>>>> Modified:
>>>> ofbiz/branches/release12.04/framework/webtools/src/org/ofbiz/webtools/labelmanager/SaveLabelsToXmlFile.java
>>>>
>>>> URL:
>>>> http://svn.apache.org/viewvc/ofbiz/branches/release12.04/framework/webtools/src/org/ofbiz/webtools/labelmanager/SaveLabelsToXmlFile.java?rev=1338836&r1=1338835&r2=1338836&view=diff
>>>>
>>>> ==============================================================================
>>>>
>>>> ---
>>>> ofbiz/branches/release12.04/framework/webtools/src/org/ofbiz/webtools/labelmanager/SaveLabelsToXmlFile.java
>>>> (original)
>>>> +++
>>>> ofbiz/branches/release12.04/framework/webtools/src/org/ofbiz/webtools/labelmanager/SaveLabelsToXmlFile.java
>>>> Tue May 15 19:11:13 2012
>>>> @@ -34,10 +34,8 @@ import org.ofbiz.base.util.UtilPropertie
>>>> import org.ofbiz.base.util.UtilValidate;
>>>> import org.ofbiz.base.util.UtilXml;
>>>> import org.ofbiz.base.util.cache.UtilCache;
>>>> -
>>>> import org.ofbiz.service.DispatchContext;
>>>> import org.ofbiz.service.ServiceUtil;
>>>> -
>>>> import org.w3c.dom.Comment;
>>>> import org.w3c.dom.Document;
>>>> import org.w3c.dom.Element;
>>>> @@ -151,7 +149,7 @@ public class SaveLabelsToXmlFile {
>>>> if (apacheLicenseText != null) {
>>>> fos.write(apacheLicenseText.getBytes());
>>>> }
>>>> - UtilXml.writeXmlDocument(resourceElem, fos,
>>>> "UTF-8", !(apacheLicenseText == null), true, 4);
>>>> + UtilXml.writeXmlDocument(resourceElem, fos,
>>>> "UTF-8", !(apacheLicenseText == null), true, 4, true);
>>>> } finally {
>>>> fos.close();
>>>> // clear cache to see immediately the new
>>>> labels and
>>>>
>>>>
>