mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-07 17:49:17 +00:00
Merged V3.2 to HEAD
17620: Merged DEV_TEMPORARY to V3.2 17599: Fix for ETHREEOH-3308: xf:switch cannot be used in repeating field type 17634: Put back AVM concurrency checks (reverse r17405) 17644: Fixed up some comments and added return value to in-txn recording of deleted nodes 17647: Fixed read-only detection of ContentStoreCleaner 17648: Merged DEV fixes for ETHREEOH-3473 and ETHREEOH-3454 - DB script and iBatis-related changes 17649: Fixed problem after merge-in: ETHREEOH-3641: build 270: cannot install on PostgreSQL 17652: Fix ETHREEOH-3376 - Reindexer failure: requires rollback (Cluster) 17658: Removed failing concurrency test for split person cleanup 17659: Merged V3.1 to V3.2 17308: Fixed ETHREEOH-2310: Upgrade from 2.1 E Sp7 to 3.1.1 E build 225 - Duplicate alf_node_status entries detected Fixes ETHREEOH-3606 (same as CHK-10454) 17661: Fixed DB2 iBatis problems related to http://issues.apache.org/jira/browse/IBATIS-536 17666: ETHREEOH-3376 / ETHREEOH-3637 - reindexer failure in a cluster (dictionary repo bootstrap) 17678: Follow-on to r17666 (for RM custom model) 17685: Merged DEV_TEMPORARY to V3.2 17676: ETHREEOH-3187: Creating Web Content based on Web Form with most elements-read-only/default failed 17695: Temporarily comment-out testSubmitChangedAssets1 ___________________________________________________________________ Modified: svn:mergeinfo Merged /alfresco/BRANCHES/DEV/BELARUS/V3.2-2009_11_24:r17632,17636,17676 Merged /alfresco/BRANCHES/DEV/BELARUS/V3.2-2009_11_09:r17599 Merged /alfresco/BRANCHES/V3.1:r17308 Merged /alfresco/BRANCHES/V3.2:r17620,17634,17644,17647-17649,17652,17658-17659,17661,17666,17678,17685,17695 git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@18165 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -39,6 +39,7 @@ import java.util.ResourceBundle;
|
||||
import java.util.Stack;
|
||||
import java.util.TreeMap;
|
||||
import java.util.TreeSet;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import org.alfresco.service.namespace.NamespaceService;
|
||||
import org.springframework.extensions.surf.util.Pair;
|
||||
@@ -115,6 +116,8 @@ public class Schema2XForms implements Serializable
|
||||
|
||||
private final static Log LOGGER = LogFactory.getLog(Schema2XForms.class);
|
||||
|
||||
private static final Pattern repeatableNamePattern = Pattern.compile("\\[.+\\]");
|
||||
|
||||
private final static int LONG_LIST_SIZE = 5;
|
||||
|
||||
private final String action;
|
||||
@@ -1000,7 +1003,8 @@ public class Schema2XForms implements Serializable
|
||||
//copy it
|
||||
if (control == null)
|
||||
{
|
||||
LOGGER.warn("Corresponding control not found");
|
||||
if (LOGGER.isDebugEnabled())
|
||||
LOGGER.debug("Corresponding control not found");
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1554,7 +1558,16 @@ public class Schema2XForms implements Serializable
|
||||
for (int i = 0; i < binds.getLength(); i++)
|
||||
{
|
||||
final Element subBind = (Element) binds.item(i);
|
||||
final String name = subBind.getAttributeNS(NamespaceConstants.XFORMS_NS, "nodeset");
|
||||
String name = subBind.getAttributeNS(NamespaceConstants.XFORMS_NS, "nodeset");
|
||||
|
||||
// ETHREEOH-3308 fix
|
||||
name = repeatableNamePattern.matcher(name).replaceAll("");
|
||||
|
||||
if (!subBind.getParentNode().getAttributes().getNamedItem("id").getNodeValue().equals(
|
||||
bindElement2.getAttribute("id")))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if (LOGGER.isDebugEnabled())
|
||||
{
|
||||
@@ -1744,7 +1757,9 @@ public class Schema2XForms implements Serializable
|
||||
//copy it
|
||||
if (control == null)
|
||||
{
|
||||
LOGGER.warn("Corresponding control not found");
|
||||
if (LOGGER.isDebugEnabled())
|
||||
LOGGER.debug("Corresponding control not found");
|
||||
|
||||
this.addElementToGroup(xformsDocument,
|
||||
modelSection,
|
||||
defaultInstanceElement,
|
||||
|
@@ -61,10 +61,11 @@ alfresco.xforms.constants.COLLAPSED_IMAGE.src =
|
||||
* a parent widget, and state variables.
|
||||
*/
|
||||
alfresco.xforms.Widget = new Class({
|
||||
initialize: function(xform, xformsNode, domNode)
|
||||
initialize: function(xform, xformsNode, parentWidget, domNode)
|
||||
{
|
||||
this.xform = xform;
|
||||
this.xformsNode = xformsNode;
|
||||
this.parentWidget = parentWidget;
|
||||
this.id = this.xformsNode.getAttribute("id");
|
||||
this._modified = false;
|
||||
this._valid = true;
|
||||
@@ -539,9 +540,9 @@ alfresco.xforms.Widget = new Class({
|
||||
|
||||
/** The file picker widget which handles xforms widget xf:upload. */
|
||||
alfresco.xforms.FilePicker = alfresco.xforms.Widget.extend({
|
||||
initialize: function(xform, xformsNode, params)
|
||||
initialize: function(xform, xformsNode, parentWidget, params)
|
||||
{
|
||||
this.parent(xform, xformsNode);
|
||||
this.parent(xform, xformsNode, parentWidget);
|
||||
this._selectableTypes = "selectable_types" in params ? params["selectable_types"].split(",") : null;
|
||||
this._filterMimetypes = "filter_mimetypes" in params ? params["filter_mimetypes"].split(",") : [];
|
||||
this._folderRestriction = "folder_restriction" in params ? params["folder_restriction"] : null;
|
||||
@@ -629,9 +630,9 @@ alfresco.xforms.FilePicker = alfresco.xforms.Widget.extend({
|
||||
|
||||
/** The textfield widget which handle xforms widget xf:input with any string or numerical type */
|
||||
alfresco.xforms.TextField = alfresco.xforms.Widget.extend({
|
||||
initialize: function(xform, xformsNode)
|
||||
initialize: function(xform, xformsNode, parentWidget)
|
||||
{
|
||||
this.parent(xform, xformsNode, new Element("input", { type: "text" }));
|
||||
this.parent(xform, xformsNode, parentWidget, new Element("input", { type: "text" }));
|
||||
this._maxLength = (_hasAttribute(this.xformsNode, alfresco.xforms.constants.ALFRESCO_PREFIX + ":maxLength")
|
||||
? Number(this.xformsNode.getAttribute(alfresco.xforms.constants.ALFRESCO_PREFIX + ":maxLength"))
|
||||
: -1);
|
||||
@@ -721,9 +722,9 @@ alfresco.xforms.TextField = alfresco.xforms.Widget.extend({
|
||||
|
||||
/** The number range widget which handle xforms widget xf:range with any numerical type */
|
||||
alfresco.xforms.NumericalRange = alfresco.xforms.Widget.extend({
|
||||
initialize: function(xform, xformsNode)
|
||||
initialize: function(xform, xformsNode, parentWidget)
|
||||
{
|
||||
this.parent(xform, xformsNode);
|
||||
this.parent(xform, xformsNode, parentWidget);
|
||||
dojo.require("dojo.widget.Slider");
|
||||
this._fractionDigits = (_hasAttribute(this.xformsNode, alfresco.xforms.constants.ALFRESCO_PREFIX + ":fractionDigits")
|
||||
? Number(this.xformsNode.getAttribute(alfresco.xforms.constants.ALFRESCO_PREFIX + ":fractionDigits"))
|
||||
@@ -815,9 +816,9 @@ alfresco.xforms.NumericalRange = alfresco.xforms.Widget.extend({
|
||||
|
||||
/** The text area widget handles xforms widget xf:textarea with appearance minimal */
|
||||
alfresco.xforms.PlainTextEditor = alfresco.xforms.Widget.extend({
|
||||
initialize: function(xform, xformsNode)
|
||||
initialize: function(xform, xformsNode, parentWidget)
|
||||
{
|
||||
this.parent(xform, xformsNode, new Element("textarea"));
|
||||
this.parent(xform, xformsNode, parentWidget, new Element("textarea"));
|
||||
},
|
||||
|
||||
/////////////////////////////////////////////////////////////////
|
||||
@@ -872,9 +873,9 @@ alfresco.xforms.PlainTextEditor = alfresco.xforms.Widget.extend({
|
||||
|
||||
/** The textfield widget which handle xforms widget xf:textarea. with appearance full or compact */
|
||||
alfresco.xforms.RichTextEditor = alfresco.xforms.Widget.extend({
|
||||
initialize: function(xform, xformsNode, params)
|
||||
initialize: function(xform, xformsNode, parentWidget, params)
|
||||
{
|
||||
this.parent(xform, xformsNode);
|
||||
this.parent(xform, xformsNode, parentWidget);
|
||||
this._focused = false;
|
||||
this._params = params;
|
||||
this._oldValue = null;
|
||||
@@ -1195,9 +1196,9 @@ alfresco.xforms.RichTextEditor.determineNecessaryTinyMCEPlugins = function(confi
|
||||
|
||||
/** Base class for all select widgets. */
|
||||
alfresco.xforms.AbstractSelectWidget = alfresco.xforms.Widget.extend({
|
||||
initialize: function(xform, xformsNode, domNode)
|
||||
initialize: function(xform, xformsNode, parentWidget, domNode)
|
||||
{
|
||||
this.parent(xform, xformsNode, domNode);
|
||||
this.parent(xform, xformsNode, parentWidget, domNode);
|
||||
},
|
||||
|
||||
/////////////////////////////////////////////////////////////////
|
||||
@@ -1269,9 +1270,9 @@ alfresco.xforms.AbstractSelectWidget = alfresco.xforms.Widget.extend({
|
||||
* checkboxes depending on the number of inputs.
|
||||
*/
|
||||
alfresco.xforms.CheckboxSelect = alfresco.xforms.AbstractSelectWidget.extend({
|
||||
initialize: function(xform, xformsNode)
|
||||
initialize: function(xform, xformsNode, parentWidget)
|
||||
{
|
||||
this.parent(xform, xformsNode);
|
||||
this.parent(xform, xformsNode, parentWidget);
|
||||
},
|
||||
|
||||
/////////////////////////////////////////////////////////////////
|
||||
@@ -1356,9 +1357,9 @@ alfresco.xforms.CheckboxSelect = alfresco.xforms.AbstractSelectWidget.extend({
|
||||
* checkboxes depending on the number of inputs.
|
||||
*/
|
||||
alfresco.xforms.ListSelect = alfresco.xforms.AbstractSelectWidget.extend({
|
||||
initialize: function(xform, xformsNode)
|
||||
initialize: function(xform, xformsNode, parentWidget)
|
||||
{
|
||||
this.parent(xform, xformsNode, new Element("select"));
|
||||
this.parent(xform, xformsNode, parentWidget, new Element("select"));
|
||||
},
|
||||
|
||||
/////////////////////////////////////////////////////////////////
|
||||
@@ -1448,9 +1449,9 @@ alfresco.xforms.ListSelect = alfresco.xforms.AbstractSelectWidget.extend({
|
||||
* radios depending on the number of inputs.
|
||||
*/
|
||||
alfresco.xforms.RadioSelect1 = alfresco.xforms.AbstractSelectWidget.extend({
|
||||
initialize: function(xform, xformsNode)
|
||||
initialize: function(xform, xformsNode, parentWidget)
|
||||
{
|
||||
this.parent(xform, xformsNode);
|
||||
this.parent(xform, xformsNode, parentWidget);
|
||||
},
|
||||
|
||||
/////////////////////////////////////////////////////////////////
|
||||
@@ -1559,9 +1560,9 @@ alfresco.xforms.RadioSelect1 = alfresco.xforms.AbstractSelectWidget.extend({
|
||||
* radios depending on the number of inputs.
|
||||
*/
|
||||
alfresco.xforms.ComboboxSelect1 = alfresco.xforms.AbstractSelectWidget.extend({
|
||||
initialize: function(xform, xformsNode)
|
||||
initialize: function(xform, xformsNode, parentWidget)
|
||||
{
|
||||
this.parent(xform, xformsNode, new Element("select"));
|
||||
this.parent(xform, xformsNode, parentWidget, new Element("select"));
|
||||
},
|
||||
|
||||
/////////////////////////////////////////////////////////////////
|
||||
@@ -1650,10 +1651,10 @@ alfresco.xforms.ComboboxSelect1 = alfresco.xforms.AbstractSelectWidget.extend({
|
||||
* Handles xforms widget xf:select1 with a type of boolean.
|
||||
*/
|
||||
alfresco.xforms.Checkbox = alfresco.xforms.Widget.extend({
|
||||
initialize: function(xform, xformsNode)
|
||||
initialize: function(xform, xformsNode, parentWidget)
|
||||
{
|
||||
this.parent(xform,
|
||||
xformsNode,
|
||||
xformsNode, parentWidget,
|
||||
new Element("input", { type: "checkbox" }));
|
||||
},
|
||||
|
||||
@@ -1712,9 +1713,9 @@ alfresco.xforms.Checkbox = alfresco.xforms.Widget.extend({
|
||||
|
||||
/** The date picker widget which handles xforms widget xf:input with type xf:date */
|
||||
alfresco.xforms.DatePicker = alfresco.xforms.Widget.extend({
|
||||
initialize: function(xform, xformsNode)
|
||||
initialize: function(xform, xformsNode, parentWidget)
|
||||
{
|
||||
this.parent(xform, xformsNode);
|
||||
this.parent(xform, xformsNode, parentWidget);
|
||||
this._minInclusive = (_hasAttribute(this.xformsNode, alfresco.xforms.constants.ALFRESCO_PREFIX + ":minInclusive")
|
||||
? this.xformsNode.getAttribute(alfresco.xforms.constants.ALFRESCO_PREFIX + ":minInclusive")
|
||||
: null);
|
||||
@@ -1891,16 +1892,32 @@ alfresco.xforms.DatePicker = alfresco.xforms.Widget.extend({
|
||||
|
||||
/** The date picker widget which handles xforms widget xf:input with type xf:date */
|
||||
alfresco.xforms.TimePicker = alfresco.xforms.Widget.extend({
|
||||
initialize: function(xform, xformsNode)
|
||||
initialize: function(xform, xformsNode, parentWidget)
|
||||
{
|
||||
this.parent(xform, xformsNode);
|
||||
this.parent(xform, xformsNode, parentWidget);
|
||||
dojo.require("dojo.date.format");
|
||||
this._noValueSet = (alfresco.resources["eg"] + " " +
|
||||
dojo.date.format(new Date(),
|
||||
{timePattern: alfresco.xforms.constants.TIME_FORMAT,
|
||||
selector: "timeOnly"}));
|
||||
this._xformsFormat = "HH:mm:ss.S";
|
||||
this._xformsFormat = new Array("HH:mm:ss.S", "HH:mm:ss");
|
||||
},
|
||||
|
||||
_parseTime: function(timeValue)
|
||||
{
|
||||
var resDate = null;
|
||||
for (i = 0; i < this._xformsFormat.length; i++)
|
||||
{
|
||||
resDate = dojo.date.parse(timeValue, {timePattern: this._xformsFormat[i],
|
||||
selector: "timeOnly"});
|
||||
if (resDate != null)
|
||||
{
|
||||
return resDate;
|
||||
}
|
||||
}
|
||||
return resDate;
|
||||
},
|
||||
|
||||
/** */
|
||||
_createPicker: function()
|
||||
{
|
||||
@@ -1908,9 +1925,7 @@ alfresco.xforms.TimePicker = alfresco.xforms.Widget.extend({
|
||||
var timePickerDiv = document.createElement("div");
|
||||
this.domNode.appendChild(timePickerDiv);
|
||||
var jsDate = (this.getValue()
|
||||
? dojo.date.parse(this.getValue(),
|
||||
{timePattern: this._xformsFormat,
|
||||
selector: "timeOnly"})
|
||||
? this._parseTime(this.getValue())
|
||||
: new Date());
|
||||
this.widget.picker = dojo.widget.createWidget("TimePicker",
|
||||
{
|
||||
@@ -1959,7 +1974,7 @@ alfresco.xforms.TimePicker = alfresco.xforms.Widget.extend({
|
||||
this.widget = new Element("input", { "id": this.id + "-widget", "type": "text" });
|
||||
if (initial_value)
|
||||
{
|
||||
var jsDate = dojo.date.parse(initial_value, {timePattern: this._xformsFormat, selector: "timeOnly"});
|
||||
var jsDate = this._parseTime(initial_value);
|
||||
this.widget.setAttribute("value",
|
||||
dojo.date.format(jsDate,
|
||||
{timePattern: alfresco.xforms.constants.TIME_FORMAT,
|
||||
@@ -2000,7 +2015,7 @@ alfresco.xforms.TimePicker = alfresco.xforms.Widget.extend({
|
||||
else
|
||||
{
|
||||
this.parent(value, forceCommit);
|
||||
var jsDate = dojo.date.parse(value, {timePattern: this._xformsFormat, selector: "timeOnly"});
|
||||
var jsDate = this._parseTime(value);
|
||||
this.widget.value = dojo.date.format(jsDate,
|
||||
{timePattern: alfresco.xforms.constants.TIME_FORMAT,
|
||||
selector: "timeOnly"});
|
||||
@@ -2021,7 +2036,7 @@ alfresco.xforms.TimePicker = alfresco.xforms.Widget.extend({
|
||||
var jsDate = dojo.date.parse(this.widget.value,
|
||||
{timePattern: alfresco.xforms.constants.TIME_FORMAT,
|
||||
selector: "timeOnly"});
|
||||
return dojo.date.format(jsDate, {timePattern: this._xformsFormat, selector: "timeOnly"});
|
||||
return dojo.date.format(jsDate, {timePattern: this._xformsFormat[0], selector: "timeOnly"});
|
||||
}
|
||||
},
|
||||
|
||||
@@ -2041,7 +2056,7 @@ alfresco.xforms.TimePicker = alfresco.xforms.Widget.extend({
|
||||
|
||||
_timePicker_valueChangedHandler: function(date)
|
||||
{
|
||||
var xfDate = dojo.date.format(date, {timePattern: this._xformsFormat, selector: "timeOnly"});
|
||||
var xfDate = dojo.date.format(date, {timePattern: this._xformsFormat[0], selector: "timeOnly"});
|
||||
this.setValue(xfDate);
|
||||
this._commitValueChange();
|
||||
},
|
||||
@@ -2061,9 +2076,9 @@ alfresco.xforms.TimePicker = alfresco.xforms.Widget.extend({
|
||||
|
||||
/** The date time picker widget which handles xforms widget xf:input with type xf:datetime */
|
||||
alfresco.xforms.DateTimePicker = alfresco.xforms.Widget.extend({
|
||||
initialize: function(xform, xformsNode)
|
||||
initialize: function(xform, xformsNode, parentWidget)
|
||||
{
|
||||
this.parent(xform, xformsNode);
|
||||
this.parent(xform, xformsNode, parentWidget);
|
||||
dojo.require("dojo.date.format");
|
||||
this._noValueSet = (alfresco.resources["eg"] + " " +
|
||||
dojo.date.format(new Date(),
|
||||
@@ -2266,9 +2281,9 @@ alfresco.xforms.DateTimePicker = alfresco.xforms.Widget.extend({
|
||||
|
||||
/** The year picker handles xforms widget xf:input with a gYear type */
|
||||
alfresco.xforms.YearPicker = alfresco.xforms.TextField.extend({
|
||||
initialize: function(xform, xformsNode)
|
||||
initialize: function(xform, xformsNode, parentWidget)
|
||||
{
|
||||
this.parent(xform, xformsNode);
|
||||
this.parent(xform, xformsNode, parentWidget);
|
||||
},
|
||||
|
||||
|
||||
@@ -2306,9 +2321,9 @@ alfresco.xforms.YearPicker = alfresco.xforms.TextField.extend({
|
||||
|
||||
/** The day picker widget which handles xforms widget xf:input with type xf:gDay */
|
||||
alfresco.xforms.DayPicker = alfresco.xforms.ComboboxSelect1.extend({
|
||||
initialize: function(xform, xformsNode)
|
||||
initialize: function(xform, xformsNode, parentWidget)
|
||||
{
|
||||
this.parent(xform, xformsNode);
|
||||
this.parent(xform, xformsNode, parentWidget);
|
||||
},
|
||||
|
||||
/////////////////////////////////////////////////////////////////
|
||||
@@ -2333,9 +2348,9 @@ alfresco.xforms.DayPicker = alfresco.xforms.ComboboxSelect1.extend({
|
||||
|
||||
/** The month picker widget which handles xforms widget xf:input with type xf:gMonth */
|
||||
alfresco.xforms.MonthPicker = alfresco.xforms.ComboboxSelect1.extend({
|
||||
initialize: function(xform, xformsNode)
|
||||
initialize: function(xform, xformsNode, parentWidget)
|
||||
{
|
||||
this.parent(xform, xformsNode);
|
||||
this.parent(xform, xformsNode, parentWidget);
|
||||
dojo.require("dojo.date.format");
|
||||
},
|
||||
|
||||
@@ -2363,9 +2378,9 @@ alfresco.xforms.MonthPicker = alfresco.xforms.ComboboxSelect1.extend({
|
||||
|
||||
/** The month day picker widget which handles xforms widget xf:input with type xf:gMonthDay */
|
||||
alfresco.xforms.MonthDayPicker = alfresco.xforms.Widget.extend({
|
||||
initialize: function(xform, xformsNode)
|
||||
initialize: function(xform, xformsNode, parentWidget)
|
||||
{
|
||||
this.parent(xform, xformsNode);
|
||||
this.parent(xform, xformsNode, parentWidget);
|
||||
this.monthPicker = new alfresco.xforms.MonthPicker(xform, xformsNode);
|
||||
this.monthPicker._compositeParent = this;
|
||||
|
||||
@@ -2403,9 +2418,9 @@ alfresco.xforms.MonthDayPicker = alfresco.xforms.Widget.extend({
|
||||
|
||||
/** The year month picker widget which handles xforms widget xf:input with type xf:gYearMonth */
|
||||
alfresco.xforms.YearMonthPicker = alfresco.xforms.Widget.extend({
|
||||
initialize: function(xform, xformsNode)
|
||||
initialize: function(xform, xformsNode, parentWidget)
|
||||
{
|
||||
this.parent(xform, xformsNode);
|
||||
this.parent(xform, xformsNode, parentWidget);
|
||||
this.yearPicker = new alfresco.xforms.YearPicker(xform, xformsNode);
|
||||
this.yearPicker._compositeParent = this;
|
||||
|
||||
@@ -2453,9 +2468,9 @@ alfresco.xforms.YearMonthPicker = alfresco.xforms.Widget.extend({
|
||||
* that are not the root group.
|
||||
*/
|
||||
alfresco.xforms.AbstractGroup = alfresco.xforms.Widget.extend({
|
||||
initialize: function(xform, xformsNode, domNode)
|
||||
initialize: function(xform, xformsNode, parentWidget, domNode)
|
||||
{
|
||||
this.parent(xform, xformsNode, domNode);
|
||||
this.parent(xform, xformsNode, parentWidget, domNode);
|
||||
this._children = [];
|
||||
this.domNode.removeClass("xformsItem");
|
||||
},
|
||||
@@ -2668,9 +2683,9 @@ alfresco.xforms.AbstractGroup._requiredImage.src = alfresco.constants.WEBAPP_CON
|
||||
* that are not the root group.
|
||||
*/
|
||||
alfresco.xforms.VGroup = alfresco.xforms.AbstractGroup.extend({
|
||||
initialize: function(xform, xformsNode)
|
||||
initialize: function(xform, xformsNode, parentWidget)
|
||||
{
|
||||
this.parent(xform, xformsNode);
|
||||
this.parent(xform, xformsNode, parentWidget);
|
||||
},
|
||||
|
||||
/////////////////////////////////////////////////////////////////
|
||||
@@ -2961,9 +2976,9 @@ alfresco.xforms.VGroup = alfresco.xforms.AbstractGroup.extend({
|
||||
* that are not the root group.
|
||||
*/
|
||||
alfresco.xforms.HGroup = alfresco.xforms.AbstractGroup.extend({
|
||||
initialize: function(xform, xformsNode)
|
||||
initialize: function(xform, xformsNode, parentWidget)
|
||||
{
|
||||
this.parent(xform, xformsNode, new Element("table"));
|
||||
this.parent(xform, xformsNode, parentWidget, new Element("table"));
|
||||
},
|
||||
|
||||
/////////////////////////////////////////////////////////////////
|
||||
@@ -3041,9 +3056,9 @@ alfresco.xforms.HGroup = alfresco.xforms.AbstractGroup.extend({
|
||||
});
|
||||
|
||||
alfresco.xforms.SwitchGroup = alfresco.xforms.VGroup.extend({
|
||||
initialize: function(xform, xformsNode)
|
||||
initialize: function(xform, xformsNode, parentWidget)
|
||||
{
|
||||
this.parent(xform, xformsNode);
|
||||
this.parent(xform, xformsNode, parentWidget);
|
||||
if (this.getInitialValue())
|
||||
{
|
||||
var initialValueTrigger = this._getCaseToggleTriggerByTypeValue(this.getInitialValue());
|
||||
@@ -3054,10 +3069,19 @@ alfresco.xforms.SwitchGroup = alfresco.xforms.VGroup.extend({
|
||||
/////////////////////////////////////////////////////////////////
|
||||
// methods & properties
|
||||
/////////////////////////////////////////////////////////////////
|
||||
|
||||
/** triggers that belong to the current switch */
|
||||
triggers: null,
|
||||
|
||||
/////////////////////////////////////////////////////////////////
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////
|
||||
|
||||
_getCaseToggleTriggers: function()
|
||||
{
|
||||
var bw = this.xform.getBinding(this.xformsNode).widgets;
|
||||
var result = [];
|
||||
var cases = [];
|
||||
for (var i in bw)
|
||||
{
|
||||
if (! (bw[i] instanceof alfresco.xforms.Trigger))
|
||||
@@ -3066,9 +3090,17 @@ alfresco.xforms.SwitchGroup = alfresco.xforms.VGroup.extend({
|
||||
}
|
||||
|
||||
var action = bw[i].getActions()["toggle"];
|
||||
if (action)
|
||||
var currentCase = cases[action.properties["case"]]
|
||||
if (action && (!currentCase || eval(bw[i].id.replace('C', '')) > eval(currentCase.id.replace('C', ''))))
|
||||
{
|
||||
result.push(bw[i]);
|
||||
cases[action.properties["case"]] = bw[i];
|
||||
}
|
||||
}
|
||||
for (var j in cases)
|
||||
{
|
||||
if (cases[j] instanceof alfresco.xforms.Trigger)
|
||||
{
|
||||
result.push(cases[j]);
|
||||
}
|
||||
}
|
||||
return result;
|
||||
@@ -3076,7 +3108,7 @@ alfresco.xforms.SwitchGroup = alfresco.xforms.VGroup.extend({
|
||||
|
||||
_getCaseToggleTriggerByCaseId: function(caseId)
|
||||
{
|
||||
var bw = this.xform.getBinding(this.xformsNode).widgets;
|
||||
var bw = this.triggers;
|
||||
for (var i in bw)
|
||||
{
|
||||
if (! (bw[i] instanceof alfresco.xforms.Trigger))
|
||||
@@ -3145,6 +3177,7 @@ alfresco.xforms.SwitchGroup = alfresco.xforms.VGroup.extend({
|
||||
{
|
||||
this.parent(attach_point);
|
||||
var cases = this._getCaseToggleTriggers();
|
||||
this.triggers = cases;
|
||||
var caseToggleSelect = new Element("select",
|
||||
{
|
||||
"id": this.id + "-toggle-select",
|
||||
@@ -3175,7 +3208,7 @@ alfresco.xforms.SwitchGroup = alfresco.xforms.VGroup.extend({
|
||||
{
|
||||
alfresco.log(this.id + ".handleSwitchToggled(" + selectedCaseId +
|
||||
", " + deselectedCaseId + ")");
|
||||
this.selectedCaseId = selectedCaseId;
|
||||
this._selectedCaseId = selectedCaseId;
|
||||
for (var i = 0; i < this._children.length; i++)
|
||||
{
|
||||
if (this._children[i].id == selectedCaseId)
|
||||
@@ -3196,17 +3229,26 @@ alfresco.xforms.SwitchGroup = alfresco.xforms.VGroup.extend({
|
||||
|
||||
_caseToggleSelect_changeHandler: function(event)
|
||||
{
|
||||
if (event.stopPropagation)
|
||||
{
|
||||
event.stopPropagation();
|
||||
var t = this._getCaseToggleTriggerByCaseId(event.target.value);
|
||||
t.fire();
|
||||
}
|
||||
else if (window.event)
|
||||
{
|
||||
window.event.cancelBubble = true;
|
||||
var t = this._getCaseToggleTriggerByCaseId(window.event.srcElement.value);
|
||||
t.fire();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
/** */
|
||||
alfresco.xforms.CaseGroup = alfresco.xforms.VGroup.extend({
|
||||
initialize: function(xform, xformsNode)
|
||||
initialize: function(xform, xformsNode, parentWidget)
|
||||
{
|
||||
this.parent(xform, xformsNode);
|
||||
this.parent(xform, xformsNode, parentWidget);
|
||||
}
|
||||
});
|
||||
|
||||
@@ -3215,9 +3257,9 @@ alfresco.xforms.CaseGroup = alfresco.xforms.VGroup.extend({
|
||||
* to present a title rather than a group header.
|
||||
*/
|
||||
alfresco.xforms.ViewRoot = alfresco.xforms.VGroup.extend({
|
||||
initialize: function(xform, xformsNode)
|
||||
initialize: function(xform, xformsNode, parentWidget)
|
||||
{
|
||||
this.parent(xform, xformsNode);
|
||||
this.parent(xform, xformsNode, parentWidget);
|
||||
this.focusedRepeat = null;
|
||||
},
|
||||
|
||||
@@ -3282,9 +3324,9 @@ alfresco.xforms.RepeatIndexData = function(repeat, index)
|
||||
* Handles xforms widget xf:repeat.
|
||||
*/
|
||||
alfresco.xforms.Repeat = alfresco.xforms.VGroup.extend({
|
||||
initialize: function(xform, xformsNode)
|
||||
initialize: function(xform, xformsNode, parentWidget)
|
||||
{
|
||||
this.parent(xform, xformsNode);
|
||||
this.parent(xform, xformsNode, parentWidget);
|
||||
this._repeatControls = [];
|
||||
this._selectedIndex = -1;
|
||||
},
|
||||
@@ -3610,7 +3652,6 @@ alfresco.xforms.Repeat = alfresco.xforms.VGroup.extend({
|
||||
{
|
||||
this._groupHeaderNode.removeClass("xformsRepeatFocusedHeader");
|
||||
}
|
||||
|
||||
for (var i = 0; i < this._children.length; i++)
|
||||
{
|
||||
var domContainerClasses = this._children[i].domContainer.getProperty("class").split(" ");
|
||||
@@ -3628,8 +3669,12 @@ alfresco.xforms.Repeat = alfresco.xforms.VGroup.extend({
|
||||
}
|
||||
this._children[i].domContainer.setProperty("class", domContainerClasses.join(" "));
|
||||
|
||||
this._repeatControls[i].style.backgroundColor =
|
||||
this._children[i].domContainer.getStyle("background-color");
|
||||
this._repeatControls[i].style.backgroundColor = this._children[i].domContainer.getStyle("background-color");
|
||||
|
||||
if (window.navigator.appName == "Microsoft Internet Explorer")
|
||||
{
|
||||
this._children[i]._updateDisplay(true);
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@@ -3764,7 +3809,7 @@ alfresco.xforms.Repeat = alfresco.xforms.VGroup.extend({
|
||||
{
|
||||
alfresco.log(this.id + ".handleItemInserted(" + clonedPrototype.nodeName +
|
||||
", " + position + ")");
|
||||
var w = this.xform.createWidget(clonedPrototype);
|
||||
var w = this.xform.createWidget(clonedPrototype, this);
|
||||
this._insertChildAt(w, position);
|
||||
this.xform.loadWidgets(w.xformsNode, w);
|
||||
},
|
||||
@@ -3785,9 +3830,9 @@ alfresco.xforms.Repeat = alfresco.xforms.VGroup.extend({
|
||||
* Handles xforms widget xf:trigger.
|
||||
*/
|
||||
alfresco.xforms.Trigger = alfresco.xforms.Widget.extend({
|
||||
initialize: function(xform, xformsNode)
|
||||
initialize: function(xform, xformsNode, parentWidget)
|
||||
{
|
||||
this.parent(xform, xformsNode, new Element("input", { type: "submit" }));
|
||||
this.parent(xform, xformsNode, parentWidget, new Element("input", { type: "submit" }));
|
||||
},
|
||||
|
||||
/////////////////////////////////////////////////////////////////
|
||||
@@ -3860,9 +3905,9 @@ alfresco.xforms.Trigger = alfresco.xforms.Widget.extend({
|
||||
* Handles xforms widget xf:submit.
|
||||
*/
|
||||
alfresco.xforms.Submit = alfresco.xforms.Trigger.extend({
|
||||
initialize: function(xform, xformsNode)
|
||||
initialize: function(xform, xformsNode, parentWidget)
|
||||
{
|
||||
this.parent(xform, xformsNode);
|
||||
this.parent(xform, xformsNode, parentWidget);
|
||||
var submit_buttons = (this.id == "submit"
|
||||
? _xforms_getSubmitButtons()
|
||||
: (this.id == "save-draft"
|
||||
@@ -4103,7 +4148,7 @@ alfresco.xforms.XForm = new Class({
|
||||
},
|
||||
|
||||
/** Creates the widget for the provided xforms node. */
|
||||
createWidget: function(xformsNode)
|
||||
createWidget: function(xformsNode, parentWidget)
|
||||
{
|
||||
var appearance = (xformsNode.getAttribute("appearance") ||
|
||||
xformsNode.getAttribute(alfresco.xforms.constants.XFORMS_PREFIX + ":appearance"));
|
||||
@@ -4144,7 +4189,7 @@ alfresco.xforms.XForm = new Class({
|
||||
" schemaType " + schemaType +
|
||||
" appearance " + appearance);
|
||||
}
|
||||
var result = new cstr(this, xformsNode, $merge({}, x.params));
|
||||
var result = new cstr(this, xformsNode, parentWidget, $merge({}, x.params));
|
||||
if (result instanceof alfresco.xforms.Widget)
|
||||
{
|
||||
return result;
|
||||
@@ -4166,6 +4211,18 @@ alfresco.xforms.XForm = new Class({
|
||||
{
|
||||
if (xformsNode.childNodes[i].nodeType != document.ELEMENT_NODE)
|
||||
{
|
||||
// fix for ETWOTWO-490, hide elements after rendering (Mozila/Firefox)
|
||||
if ((i == (xformsNode.childNodes.length - 1)) &&
|
||||
(parentWidget instanceof alfresco.xforms.SwitchGroup))
|
||||
{
|
||||
for (var x = 0; x < parentWidget._children.length; x++)
|
||||
{
|
||||
if (parentWidget.triggers[x].getActions()["toggle"].properties["case"] != parentWidget._selectedCaseId)
|
||||
{
|
||||
parentWidget._children[x].domContainer.style.display = "none";
|
||||
}
|
||||
}
|
||||
}
|
||||
continue;
|
||||
}
|
||||
alfresco.log("loading " + xformsNode.childNodes[i].nodeName +
|
||||
@@ -4178,21 +4235,7 @@ alfresco.xforms.XForm = new Class({
|
||||
continue;
|
||||
}
|
||||
|
||||
// fix for ETWOTWO-490, hide elements after rendering
|
||||
if (xformsNode.childNodes[i].nodeName == "chiba:data" &&
|
||||
parentWidget instanceof alfresco.xforms.SwitchGroup)
|
||||
{
|
||||
var selectedCase = parentWidget._selectedCaseId;
|
||||
for (var x = 0; x < parentWidget._children.length; x++)
|
||||
{
|
||||
if (parentWidget._children[x].id != selectedCase)
|
||||
{
|
||||
parentWidget._children[x].domContainer.style.display = "none";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var w = this.createWidget(xformsNode.childNodes[i]);
|
||||
var w = this.createWidget(xformsNode.childNodes[i], parentWidget);
|
||||
if (w != null)
|
||||
{
|
||||
alfresco.log("created " + w.id + " for " + xformsNode.childNodes[i].nodeName);
|
||||
@@ -4202,6 +4245,19 @@ alfresco.xforms.XForm = new Class({
|
||||
this.loadWidgets(xformsNode.childNodes[i], w);
|
||||
}
|
||||
}
|
||||
|
||||
// fix for ETWOTWO-490, hide elements after rendering (Internet Explorer)
|
||||
if ((i == (xformsNode.childNodes.length - 1)) &&
|
||||
(parentWidget instanceof alfresco.xforms.SwitchGroup))
|
||||
{
|
||||
for (var x = 0; x < parentWidget._children.length; x++)
|
||||
{
|
||||
if (parentWidget.triggers[x].getActions()["toggle"].properties["case"] != parentWidget._selectedCaseId)
|
||||
{
|
||||
parentWidget._children[x].domContainer.style.display = "none";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
|
Reference in New Issue
Block a user