<%! import splunk.models.base from splunk.appserver.mrsparkle.lib import util %> ## ## XSS protection ## <%def name="csrf_hidden_input()"> ## ## core HTML form widgets ## <%def name="textbox(name, model=None, value=None, disabled=False, size=40, **html_attrs)"> <%def name="textarea(name, model=None, value=None, disabled=False, rows=5, cols=60, **html_attrs)"> <% if value != None: input_value = value elif isinstance(model, splunk.models.base.SplunkAppObjModel) and hasattr(model, name) and getattr(model, name) != None: input_value = getattr(model, name) else: input_value = '' %> \ <%def name="checkbox(name, model=None, value=None, disabled=False, **html_attrs)"> <%def name="radioset(name, model=None, value=None, disabled=False, options=[], orientation='H', id_offset=0, id=None, **html_attrs)"> <% # try to lookup model value if nothing is explicitly set if value == None and model and hasattr(model, name): value = getattr(model, name) %> % for i, item in enumerate(options, id_offset): <% if isinstance(item, tuple) or isinstance(item, list): option_value = item[0] label = item[1] else: option_value = item label = item %> \ % endfor <%def name="select(name, model=None, value=None, disabled=False, options=[], **html_attrs)"> <% # try to lookup model value if nothing is explicitly set if value == None and model and hasattr(model, name): value = getattr(model, name) %> <%def name="accumulator(name, model=None, values=[], disabled=False, options=[], size='10', available_label='Available fields', selected_label='Selected fields', **html_attrs)"> <% ## build a plain list of values (not labels) to use for quick ## membership testing if len(values) > 0 and (isinstance(values[0], list) or isinstance(values[0], tuple)): raw_values = [v[0] for v in values] else: raw_values = values %>
${available_label|h}
    % for option in options: <% if isinstance(option, list) or isinstance(option, tuple): option_value = option[0] option_label = option[1] is_enabled = True if len(option) > 2 and option[2] != None: is_enabled = option[2] else: option_value = option option_label = option is_enabled = True is_chosen = (option_value in raw_values) css_class = [] if not is_enabled: css_class.append('disabled') if is_chosen: css_class.append('chosen') %>
  • ${option_label | h}
  • \ % endfor
${selected_label|h}
    % for option in values: <% if isinstance(option, list) or isinstance(option, tuple): option_value = option[0] option_label = option[1] is_enabled = True if len(option) > 2 and option[2] != None: is_enabled = option[2] else: option_value = option option_label = option is_enabled = True %>
  • ${option_label | h}
  • % endfor
## ## accumulator2 is an alternate version that uses % for option in options: <% if isinstance(option, list) or isinstance(option, tuple): option_value = option[0] option_label = option[1] is_enabled = True if option[2] == None else option[2] else: option_value = option option_label = option is_enabled = True if option_value in values: is_enabled = False %> \ % endfor


<%def name="button(label, is_primary=False, is_submit=False, href=None, disabled=False, **html_attrs)"> <% css_class = 'splButton-primary' if is_primary else 'splButton-secondary' type = 'submit' if is_submit else 'button' %> ## ## convenience methods ## <%def name="dump_model(model)"> % if not isinstance(model, splunk.models.base.SplunkAppObjModel):

No model object to render!

% else: % for prop in sorted(model.model_fields): % endfor
${prop | h} % if isinstance(getattr(model, prop), list): ${dump_list(getattr(model, prop))} % else: ${getattr(model, prop) | h} % endif
% endif <%def name="dump_list(L)">