113 lines
4.6 KiB
XML
Executable file
113 lines
4.6 KiB
XML
Executable file
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US"
|
|
i18n:domain="cybertools.composer.schema">
|
|
<body>
|
|
|
|
|
|
<metal:input define-macro="input_grid"
|
|
tal:define="fieldInstance python: field.getFieldInstance(view.instance);
|
|
columns fieldInstance/columnTypes">
|
|
<script type="text/javascript" language="JavaScript"
|
|
tal:content="string:
|
|
data_$name = dojo.fromJson('${data/?name}');
|
|
store_$name = new dojo.data.ItemFileWriteStore({data: data_$name});
|
|
store_$name._saveEverything = function(ccb, ecb, data) {
|
|
dojo.byId('$name').value = data;
|
|
};
|
|
dojo.connect(dojo.byId('editForm'), 'onsubmit', function(evt) {
|
|
dijit.byId('grid_$name').edit.apply();
|
|
store_$name.save();
|
|
});">
|
|
</script>
|
|
<textarea rows="3" style="display: none"
|
|
tal:attributes="name name; id name">
|
|
</textarea>
|
|
<table dojoType="dojox.grid.DataGrid"
|
|
style="width: 100%; height: 12em"
|
|
singleClickEdit="true"
|
|
tal:attributes="id string:grid_$name;
|
|
store string:store_$name">
|
|
<thead>
|
|
<tr>
|
|
<tal:header repeat="column columns">
|
|
<th width="auto" editable="true"
|
|
tal:attributes="field column/name"
|
|
tal:content="column/title">Column Title</th>
|
|
</tal:header>
|
|
</tr></thead>
|
|
</table><br />
|
|
</metal:input>
|
|
|
|
|
|
<metal:input define-macro="input_records"
|
|
tal:define="fieldInstance python: field.getFieldInstance(view.instance);
|
|
columns fieldInstance/columnTypes;
|
|
rows data/?name">
|
|
<table class="records" style="width: auto">
|
|
<thead>
|
|
<tr>
|
|
<tal:header repeat="column columns">
|
|
<th tal:attributes="class string:${column/baseField/cssClass|string:}"
|
|
tal:content="column/title">Column Title</th>
|
|
</tal:header>
|
|
</tr>
|
|
</thead>
|
|
<tbody tal:attributes="id string:tbody.$name">
|
|
<tr tal:repeat="row rows">
|
|
<td tal:repeat="column columns"
|
|
tal:attributes="class string:${column/baseField/cssClass|string:}">
|
|
<input type="text" style="width: auto"
|
|
tal:define="cname column/name"
|
|
tal:attributes="value row/?cname;
|
|
name string:$name.$cname:records;
|
|
style string:width: ${column/baseField/width|string:auto};" /></td>
|
|
</tr>
|
|
<tal:empty condition="python: not field.cardinality
|
|
or field.cardinality > len(rows)">
|
|
<tr>
|
|
<td tal:repeat="column columns"
|
|
tal:attributes="class string:${column/baseField/cssClass|string:}">
|
|
<input type="text"
|
|
tal:define="cname column/name"
|
|
tal:attributes="name string:$name.$cname:records;
|
|
style string:width: ${column/baseField/width|string:auto};" /></td>
|
|
</tr>
|
|
<tr style="display: none"
|
|
tal:attributes="id string:$name.empty">
|
|
<td tal:repeat="column columns"
|
|
tal:attributes="class string:${column/baseField/cssClass|string:}">
|
|
<input type="text" style="width: auto"
|
|
tal:define="cname column/name"
|
|
tal:attributes="name string:$name.$cname:records;
|
|
style string:width: ${column/baseField/width|string:auto};" /></td>
|
|
</tr>
|
|
</tal:empty>
|
|
</tbody>
|
|
</table>
|
|
<div>
|
|
<input type="button" value="+"
|
|
tal:condition="python: not field.cardinality
|
|
or field.cardinality > len(rows) + 1"
|
|
tal:attributes="onclick string:
|
|
n = dojo.byId('$name.empty').cloneNode(true);;
|
|
n.id = null;;
|
|
n.style.display = '';;
|
|
dojo.byId('tbody.$name').appendChild(n);;" />
|
|
</div><br />
|
|
</metal:input>
|
|
|
|
|
|
<metal:display define-macro="display_records"
|
|
tal:define="value data/?fieldName">
|
|
<table class="listing">
|
|
<tr>
|
|
<th tal:repeat="header value/headers"
|
|
tal:content="header">Column Title</th></tr>
|
|
<tr tal:repeat="row value/rows">
|
|
<td tal:repeat="cell row"
|
|
tal:content="cell" /></tr>
|
|
</table>
|
|
</metal:display>
|
|
|
|
|
|
</body>
|
|
</html>
|