diff --git a/source/java/org/alfresco/web/forms/xforms/Schema2XForms.java b/source/java/org/alfresco/web/forms/xforms/Schema2XForms.java index 05534979d1..5815d61d53 100644 --- a/source/java/org/alfresco/web/forms/xforms/Schema2XForms.java +++ b/source/java/org/alfresco/web/forms/xforms/Schema2XForms.java @@ -956,9 +956,15 @@ public class Schema2XForms implements Serializable " at " + newPathToRoot); try { - final String defaultValue = (currentAttributeUse.getConstraintType() == XSConstants.VC_NONE + String defaultValue = (currentAttributeUse.getConstraintType() == XSConstants.VC_NONE ? null : currentAttributeUse.getConstraintValue()); + // make sure boolean attributes have a default value + if (defaultValue == null && "boolean".equals(currentAttribute.getTypeDefinition().getName())) + { + defaultValue = "false"; + } + if (namespacePrefix.length() > 0) { defaultInstanceElement.setAttributeNS(this.targetNamespace, @@ -1714,6 +1720,12 @@ public class Schema2XForms implements Serializable Node value = xformsDocument.createTextNode(element.getConstraintValue()); newDefaultInstanceElement.appendChild(value); } + else if ("boolean".equals(element.getTypeDefinition().getName())) + { + // we have a boolean element without a default value, default to false + Node value = xformsDocument.createTextNode("false"); + newDefaultInstanceElement.appendChild(value); + } this.addElement(xformsDocument, modelSection, diff --git a/source/java/org/alfresco/web/ui/common/renderer/DatePickerRenderer.java b/source/java/org/alfresco/web/ui/common/renderer/DatePickerRenderer.java index 2376282f80..834ad69d61 100644 --- a/source/java/org/alfresco/web/ui/common/renderer/DatePickerRenderer.java +++ b/source/java/org/alfresco/web/ui/common/renderer/DatePickerRenderer.java @@ -396,7 +396,7 @@ public class DatePickerRenderer extends BaseRenderer if (showTime) { - out.write(" type='text' size='1' maxlength='2'"); + out.write(" type='text' size='2' maxlength='2'"); if (component.getAttributes().get("disabled") != null) { diff --git a/source/test-resources/xforms/tests/bugs/ETHREEOH-1886.xsd b/source/test-resources/xforms/tests/bugs/ETHREEOH-1886.xsd new file mode 100644 index 0000000000..ff891ebfc5 --- /dev/null +++ b/source/test-resources/xforms/tests/bugs/ETHREEOH-1886.xsd @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + This control does not have an overridden alert + + + + + + + + Please enter a value for hint-alert + This control should have a hint. + + + + + + + diff --git a/source/test-resources/xforms/tests/bugs/ETHREEOH-1940.xsd b/source/test-resources/xforms/tests/bugs/ETHREEOH-1940.xsd new file mode 100644 index 0000000000..5662202cc7 --- /dev/null +++ b/source/test-resources/xforms/tests/bugs/ETHREEOH-1940.xsd @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + diff --git a/source/test-resources/xforms/tests/bugs/ETHREEOH-1941.xsd b/source/test-resources/xforms/tests/bugs/ETHREEOH-1941.xsd new file mode 100644 index 0000000000..aec6976011 --- /dev/null +++ b/source/test-resources/xforms/tests/bugs/ETHREEOH-1941.xsd @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + diff --git a/source/web/scripts/ajax/tagger.js b/source/web/scripts/ajax/tagger.js index 568f15121e..ca90bb04d6 100644 --- a/source/web/scripts/ajax/tagger.js +++ b/source/web/scripts/ajax/tagger.js @@ -78,7 +78,10 @@ var AlfTagger = new Class( // Add click event handlers for the add and cancel buttons $(this.id + "-addTag-ok").addEvent("click", function() { - this.addTag($(this.id + "-addTag-box").value); + if (this.validateTagBox()) + { + this.addTag($(this.id + "-addTag-box").value); + } }.bind(this)); $(this.id + "-addTag-cancel").addEvent("click", function() @@ -110,15 +113,28 @@ var AlfTagger = new Class( { e.stop(); } - } + }; + // Add validation of tagName and cancel enter keys $(this.id + "-addTag-box").addEvents( { - "keyup": fnEnterStop, + "keyup": function(e) + { + var addTagOk = $(this.id + "-addTag-ok") + if (!this.validateTagBox()) + { + addTagOk.setStyle("opacity", 0.5); + } + else + { + addTagOk.setStyle("opacity", 1); + } + fnEnterStop(e); + }.bind(this), "keypress": fnEnterStop }); }, - + setDefaultIcon: function(icon) { this.defaultIcon = icon; @@ -585,5 +601,11 @@ var AlfTagger = new Class( { } }).request(); + }, + + validateTagBox: function() + { + var tagBox = $(this.id + "-addTag-box"); + return tagBox && tagBox.value && tagBox.value.length > 0 && validateName(tagBox); } }); \ No newline at end of file diff --git a/source/web/scripts/ajax/xforms.js b/source/web/scripts/ajax/xforms.js index f24a6d5bde..38949fb071 100644 --- a/source/web/scripts/ajax/xforms.js +++ b/source/web/scripts/ajax/xforms.js @@ -412,7 +412,7 @@ alfresco.xforms.Widget = new Class({ /** Returns the widget's label. */ getLabel: function() { - var result = ""; + var result = ""; var node = this._getChildXFormsNode("label"); if (node && node.firstChild !== null) @@ -430,15 +430,29 @@ alfresco.xforms.Widget = new Class({ /** Returns the widget's alert text. */ getAlert: function() { + var result = ""; var node = this._getChildXFormsNode("alert"); - return node ? node.firstChild.nodeValue : ""; + + if (node && node.firstChild !== null) + { + result = node.firstChild.nodeValue; + } + + return result; }, /** Returns the widget's alert text. */ getHint: function() { + var result = null; var node = this._getChildXFormsNode("hint"); - return node ? node.firstChild.nodeValue : null; + + if (node && node.firstChild !== null) + { + result = node.firstChild.nodeValue; + } + + return result; }, /** Makes the label red. */ @@ -2310,6 +2324,7 @@ alfresco.xforms.MonthPicker = alfresco.xforms.ComboboxSelect1.extend({ initialize: function(xform, xformsNode) { this.parent(xform, xformsNode); + dojo.require("dojo.date.format"); }, /////////////////////////////////////////////////////////////////