|
|
<div tal:define="item_tmpl item_template|field.widget.item_template;
|
|
|
oid oid|field.oid;
|
|
|
name name|field.name;
|
|
|
min_len min_len|field.widget.min_len;
|
|
|
min_len min_len or 0;
|
|
|
max_len max_len|field.widget.max_len;
|
|
|
max_len max_len or 100000;
|
|
|
now_len len(subfields);
|
|
|
orderable orderable|field.widget.orderable;
|
|
|
orderable orderable and 1 or 0;
|
|
|
prototype field.widget.prototype(field);
|
|
|
title title|field.title;"
|
|
|
class="deform-seq"
|
|
|
id="${oid}">
|
|
|
|
|
|
<style>
|
|
|
body.dragging, body.dragging * {
|
|
|
cursor: move !important;
|
|
|
}
|
|
|
|
|
|
.dragged {
|
|
|
position: absolute;
|
|
|
opacity: 0.5;
|
|
|
z-index: 2000;
|
|
|
}
|
|
|
</style>
|
|
|
|
|
|
<!-- sequence -->
|
|
|
<input type="hidden" name="__start__"
|
|
|
value="${field.name}:sequence"
|
|
|
class="deform-proto"
|
|
|
tal:attributes="prototype prototype"/>
|
|
|
|
|
|
<div class="panel panel-default">
|
|
|
<div class="panel-body">
|
|
|
|
|
|
<div class="deform-seq-container"
|
|
|
id="${oid}-orderable">
|
|
|
<div tal:define="subfields [ x[1] for x in subfields ]"
|
|
|
tal:repeat="subfield subfields"
|
|
|
tal:replace="structure subfield.render_template(item_tmpl,parent=field)" />
|
|
|
<span class="deform-insert-before"
|
|
|
tal:attributes="
|
|
|
min_len min_len;
|
|
|
max_len max_len;
|
|
|
now_len now_len;
|
|
|
orderable orderable;">
|
|
|
|
|
|
</span>
|
|
|
</div>
|
|
|
|
|
|
<div style="clear: both"></div>
|
|
|
</div>
|
|
|
|
|
|
<div class="panel-footer">
|
|
|
<a href="#"
|
|
|
class="btn deform-seq-add"
|
|
|
id="${field.oid}-seqAdd"
|
|
|
onclick="javascript: return deform.appendSequenceItem(this);">
|
|
|
<small id="${field.oid}-addtext">${add_subitem_text}</small>
|
|
|
</a>
|
|
|
|
|
|
<script type="text/javascript">
|
|
|
deform.addCallback(
|
|
|
'${field.oid}',
|
|
|
function(oid) {
|
|
|
oid_node = $('#'+ oid);
|
|
|
deform.processSequenceButtons(oid_node, ${min_len},
|
|
|
${max_len}, ${now_len},
|
|
|
${orderable});
|
|
|
}
|
|
|
)
|
|
|
<tal:block condition="orderable">
|
|
|
$( "#${oid}-orderable" ).sortable({
|
|
|
handle: ".deform-order-button, .panel-heading",
|
|
|
containerSelector: "#${oid}-orderable",
|
|
|
itemSelector: ".deform-seq-item",
|
|
|
placeholder: '<span class="glyphicon glyphicon-arrow-right placeholder"></span>',
|
|
|
onDragStart: function ($item, container, _super) {
|
|
|
var offset = $item.offset(),
|
|
|
pointer = container.rootGroup.pointer;
|
|
|
|
|
|
adjustment = {
|
|
|
left: pointer.left - offset.left,
|
|
|
top: pointer.top - offset.top
|
|
|
};
|
|
|
|
|
|
_super($item, container)
|
|
|
},
|
|
|
onDrag: function ($item, position) {
|
|
|
$item.css({
|
|
|
left: position.left - adjustment.left,
|
|
|
top: position.top - adjustment.top
|
|
|
})
|
|
|
}
|
|
|
});
|
|
|
</tal:block>
|
|
|
</script>
|
|
|
|
|
|
<input type="hidden" name="__end__" value="${field.name}:sequence"/>
|
|
|
<!-- /sequence -->
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
</div>
|