|
|
<form
|
|
|
tal:define="style style|field.widget.style;
|
|
|
css_class css_class|string:${field.widget.css_class or field.css_class or ''};
|
|
|
item_template item_template|field.widget.item_template;
|
|
|
autocomplete autocomplete|field.autocomplete;
|
|
|
title title|field.title;
|
|
|
errormsg errormsg|field.errormsg;
|
|
|
description description|field.description;
|
|
|
buttons buttons|field.buttons;
|
|
|
use_ajax use_ajax|field.use_ajax;
|
|
|
ajax_options ajax_options|field.ajax_options;
|
|
|
formid formid|field.formid;
|
|
|
action action|field.action or None;
|
|
|
method method|field.method;"
|
|
|
tal:attributes="autocomplete autocomplete;
|
|
|
style style;
|
|
|
class css_class;
|
|
|
action action;"
|
|
|
id="${formid}"
|
|
|
method="${method}"
|
|
|
enctype="multipart/form-data"
|
|
|
accept-charset="utf-8"
|
|
|
i18n:domain="deform"
|
|
|
>
|
|
|
|
|
|
<fieldset class="deform-form-fieldset">
|
|
|
|
|
|
<legend tal:condition="title">${title}</legend>
|
|
|
|
|
|
<input type="hidden" name="${h.csrf_token_key}" value="${h.get_csrf_token(request.session)}" />
|
|
|
<input type="hidden" name="_charset_" />
|
|
|
<input type="hidden" name="__formid__" value="${formid}"/>
|
|
|
|
|
|
<!--
|
|
|
<div class="alert alert-danger" tal:condition="field.error">
|
|
|
<div class="error-msg-lbl" i18n:translate=""
|
|
|
>There was a problem with your submission</div>
|
|
|
<div class="error-msg-detail" i18n:translate=""
|
|
|
>Errors have been highlighted below</div>
|
|
|
<p class="error-msg">${field.errormsg}</p>
|
|
|
</div>
|
|
|
-->
|
|
|
|
|
|
<p class="section first" tal:condition="description">
|
|
|
${description}
|
|
|
</p>
|
|
|
|
|
|
<div tal:repeat="child field"
|
|
|
tal:replace="structure child.render_template(item_template)"/>
|
|
|
|
|
|
<div class="form-group">
|
|
|
<tal:loop tal:repeat="button buttons">
|
|
|
<button
|
|
|
tal:define="btn_disposition repeat.button.start and 'btn-primary' or (button.name == 'delete' and 'btn-danger' or 'btn-default');
|
|
|
btn_icon button.icon|None"
|
|
|
tal:attributes="disabled button.disabled if button.disabled else None"
|
|
|
id="${formid+button.name}"
|
|
|
name="${button.name}"
|
|
|
type="${button.type}"
|
|
|
class="btn ${button.css_class or btn_disposition}"
|
|
|
value="${button.value}">
|
|
|
<i tal:condition="btn_icon" class="${btn_icon}"> </i>
|
|
|
${button.title}
|
|
|
</button>
|
|
|
</tal:loop>
|
|
|
</div>
|
|
|
|
|
|
</fieldset>
|
|
|
|
|
|
<script type="text/javascript" tal:condition="use_ajax">
|
|
|
deform.addCallback(
|
|
|
'${formid}',
|
|
|
function(oid) {
|
|
|
var target = '#' + oid;
|
|
|
var options = {
|
|
|
target: target,
|
|
|
replaceTarget: true,
|
|
|
success: function() {
|
|
|
deform.processCallbacks();
|
|
|
deform.focusFirstInput(target);
|
|
|
},
|
|
|
beforeSerialize: function() {
|
|
|
// See http://bit.ly/1agBs9Z (hack to fix tinymce-related ajax bug)
|
|
|
if ('tinymce' in window) {
|
|
|
$(tinymce.get()).each(
|
|
|
function(i, el) {
|
|
|
var content = el.getContent();
|
|
|
var editor_input = document.getElementById(el.id);
|
|
|
editor_input.value = content;
|
|
|
});
|
|
|
}
|
|
|
}
|
|
|
};
|
|
|
var extra_options = ${ajax_options} || {};
|
|
|
$('#' + oid).ajaxForm($.extend(options, extra_options));
|
|
|
}
|
|
|
);
|
|
|
</script>
|
|
|
|
|
|
</form>
|