%page args="element, eaiAttributes, form_defaults" />
<%!
import random
%>
<%
subelement = element.get('element')
if not subelement:
raise Exception("repeatable element didn't define an element to be repeated")
prefix = element.get('fieldprefix')
if not prefix:
raise Exception("repeatable element didn't define a field prefix")
ignoreprefix = element.get('ignoreprefix')
widget = subelement['type'] if 'type' in subelement else 'textfield'
# find all existing elements to be repeated
form_default_keys = form_defaults.keys()
form_default_keys.sort()
id = random.randint(0,1000000000)
settings = jsonify({'prefix': prefix, 'mincount': element.get('mincount', 0), 'maxcount': element.get('maxcount', -1)})
%>
## Store key information about the repeatable on the container tag so the javascript routines can easily locate it
% if 'label' in element:
% endif
## Find all elements that should be included in the list
% for elname in form_default_keys:
% if elname.startswith(prefix):
<%
if ignoreprefix and elname.startswith(ignoreprefix):
continue
# Pass-thru some parameters to the sub-element
subelement['elementName'] = elname
for field in ('mincount', 'maxcount', 'deleteable', 'expandable', 'fieldprefix'):
if field in element:
subelement[field] = element[field]
%>
<%include file="/admin/widgets/${widget}.html" args="element=subelement, eaiAttributes=form_defaults['eai:attributes'], widgetstyle=''" />
% endif
% endfor
## Create an empty element, if permitted
% if element.get('expandable', False):
<%
subelement['elementName'] = prefix
for field in ('mincount', 'maxcount', 'deleteable', 'expandable', 'fieldprefix'):
if field in element:
subelement[field] = element[field]
%>
<%include file="/admin/widgets/${widget}.html" args="element=subelement, eaiAttributes={}, widgetstyle=''" />
## Create a template that the javascript add operation can use