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

Reply via email to