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:
Derek Hulley
2010-01-20 11:30:46 +00:00
parent f387d887f0
commit 419606be51
2 changed files with 164 additions and 93 deletions

View File

@@ -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,

View File

@@ -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";
}
}
}
}
},