Hi,
I think you can do that by overriding cocoon's CFormsRepeater.js file.
1°/ Put a copy of cocoon's CFormsRepeater.js in
<WebContent>/resources/forms/js
2°/ Modify the new added file so that you can choose multiple or single row
selection:
dojo.lang.extend(cocoon.forms.CFormsRepeater, {
// Properties
orderable: false,
multiple: true, // true as default value, as multiple selection is the
actual behaviour
3°/ Modifiy the selectRow method
selectRow: function(e, row, idx) {
if (this.isValidEvent(e)) {
var selectInput = dojo.byId(row.getAttribute("id") + "." +
this.select + ":input");
var selected = selectInput.checked ? false : true;
// Toggle selection
this.setChecked(selectInput, selected);
// And update CSS class accordingly
(selectInput.checked ? dojo.html.prependClass :
dojo.html.removeClass)(row, "forms-row-selected");
if (selected && !this.multiple) {
// Deselect previously selected row, if any
var otherRow;
for (var otherIdx = 0; otherRow = dojo.byId(this.id + "." +
otherIdx); otherIdx++) {
if (otherIdx == idx) continue;
var otherSelect = dojo.byId(otherRow.getAttribute("id")
+ "." + this.select + ":input");
if (otherSelect.checked) {
// Found it
dojo.html.removeClass(otherRow,
"forms-row-selected");
this.setChecked(otherSelect, false);
break; // finished (single selection)
}
}
}
}
},
setChecked: function(input, value) {
input.checked = value;
if (input.onchange) {
input.onchange();
}
}
4°/ Be sure you have a "select" booleanfield in your form, referenced in
your template :
<fd:repeater id="myRepeater">
<fd:widgets>
<fd:booleanfield id="select" />
template :
<table dojoType="CFormsRepeater" class="list" multiple="false"
select="select" width="100%">
...
<ft:repeater-rows>
<ft:widget id="select" style="display:none" />
5°/ As CFormsRepeater is lodaed in the web browser by dojo's XmlHttpRequest
based system, don't forget to empty your browser cache after every change in
CFormsRepeater.js