diff --git a/source/java/org/alfresco/web/forms/xforms/Schema2XForms.java b/source/java/org/alfresco/web/forms/xforms/Schema2XForms.java index 37a4a00507..24529c3978 100644 --- a/source/java/org/alfresco/web/forms/xforms/Schema2XForms.java +++ b/source/java/org/alfresco/web/forms/xforms/Schema2XForms.java @@ -2486,7 +2486,7 @@ public class Schema2XForms implements Serializable case XSConstants.STRING_DT: { result = xformsDocument.createElementNS(NamespaceConstants.XFORMS_NS, - NamespaceConstants.XFORMS_PREFIX + ":textarea"); + NamespaceConstants.XFORMS_PREFIX + ":textarea"); if (appearance == null || appearance.length() == 0) { appearance = "compact"; @@ -2843,7 +2843,7 @@ public class Schema2XForms implements Serializable typeName); } final StringList lexicalPatterns = ((XSSimpleTypeDefinition)controlType).getLexicalPattern(); - + // NOTE: from glen.johnson@alfresco.com // Workaround to fix issue WCM-952 // @@ -2878,8 +2878,22 @@ public class Schema2XForms implements Serializable } constraints.add("chiba:match(., '" + pattern + "',null)"); } - } + + XSSimpleTypeDefinition simpleControlType = ((XSSimpleTypeDefinition) controlType); + if (simpleControlType.isDefinedFacet(XSSimpleTypeDefinition.FACET_MAXLENGTH)) + { + constraints.add("string-length(.) <= " + simpleControlType.getLexicalFacetValue(XSSimpleTypeDefinition.FACET_MAXLENGTH)); + } + + if (simpleControlType.isDefinedFacet(XSSimpleTypeDefinition.FACET_MINLENGTH)) + { + constraints.add("string-length(.) >= " + simpleControlType.getLexicalFacetValue(XSSimpleTypeDefinition.FACET_MINLENGTH)); + } + + } + + final short constraintType = (owner != null && owner instanceof XSElementDeclaration ? ((XSElementDeclaration)owner).getConstraintType() diff --git a/source/web/scripts/ajax/tiny_mce_wcm_extensions.js b/source/web/scripts/ajax/tiny_mce_wcm_extensions.js index 7df6ef9b25..67f0d60123 100644 --- a/source/web/scripts/ajax/tiny_mce_wcm_extensions.js +++ b/source/web/scripts/ajax/tiny_mce_wcm_extensions.js @@ -92,6 +92,21 @@ function alfresco_TinyMCE_file_browser_callback(field_name, url, type, win) cssEl.media = 'screen'; headEl.appendChild(cssEl); + // ALF-872: + // Drop-down and list boxes do not have a z-index property, these are window level controls. + // When you want to show a div in a page that contains these controls, you will face an overlapping problem. + // This is a well-known problem with the IE 6 browser. + // To solve this we just hiding form's divs until FilePickerWidget is undestroyed. + + if (window.ie6) + { + var divs = win.document.getElementsByTagName("div"); + for (var i = 0; i < divs.length; i++) + { + divs[i].style.visibility = "hidden"; + } + } + var div = win.document.createElement("div"); div.style.width = "100%"; div.style.height = "100%"; @@ -117,6 +132,17 @@ function alfresco_TinyMCE_file_browser_callback(field_name, url, type, win) function() { picker.destroy(); + + // Please see comment above + if (window.ie6) + { + var divs = win.document.getElementsByTagName("div"); + for (var i = 0; i < divs.length; i++) + { + divs[i].style.visibility = "visible"; + } + } + div.parentNode.removeChild(div); }, function(picker) diff --git a/source/web/scripts/ajax/xforms.js b/source/web/scripts/ajax/xforms.js index 88f54890a1..91c85f65a7 100644 --- a/source/web/scripts/ajax/xforms.js +++ b/source/web/scripts/ajax/xforms.js @@ -2655,13 +2655,16 @@ alfresco.xforms.AbstractGroup = alfresco.xforms.Widget.extend({ var result = []; for (var i = 0; i < this._children.length; i++) { - if (this._children[i] instanceof alfresco.xforms.AbstractGroup) + if ((this._children[i].domContainer.style.display != "none") || (this._children[i].xformsNode.localName != "case")) { - result = result.concat(this._children[i].getWidgetsInvalidForSubmit()); - } - else if (!this._children[i].isValidForSubmit()) - { - result.push(this._children[i]); + if (this._children[i] instanceof alfresco.xforms.AbstractGroup) + { + result = result.concat(this._children[i].getWidgetsInvalidForSubmit()); + } + else if (!this._children[i].isValidForSubmit()) + { + result.push(this._children[i]); + } } } return result; @@ -4457,10 +4460,12 @@ alfresco.xforms.XForm = new Class({ case "chiba-state-changed": { alfresco.log("handleStateChanged(" + xfe.targetId + ")"); - xfe.getTarget().setModified(true); + var isModified = false; + if ("valid" in xfe.properties) { xfe.getTarget().setValid(xfe.properties["valid"] == "true"); + isModified= true; } if ("required" in xfe.properties) { @@ -4478,7 +4483,9 @@ alfresco.xforms.XForm = new Class({ { alfresco.log("setting " + xfe.getTarget().id + " = " + xfe.properties["value"]); xfe.getTarget().setValue(xfe.properties["value"]); + isModified= true; } + xfe.getTarget().setModified(isModified); break; } case "chiba-prototype-cloned":