contentdb/app/templates/macros/forms.html

164 lines
6.4 KiB
HTML
Raw Normal View History

2020-12-15 13:56:17 +01:00
{% macro render_errors(field) %}
{% for e in field.errors %}
<p class="invalid-feedback" style="display: block;">{{ e }}</p>
{% endfor %}
{% endmacro %}
2021-01-30 16:22:19 +01:00
{% macro render_field(field, label=None, label_visible=true, right_url=None, right_label=None, fieldclass=None, hint=None) -%}
2020-12-15 13:56:17 +01:00
<div class="form-group {% if field.errors %}has-danger{% endif %} {{ kwargs.pop('class_', '') }}">
2021-02-03 01:56:43 +01:00
{% if field.type != 'HiddenField' %}
2018-12-22 23:29:30 +01:00
{% if not label and label != "" %}{% set label=field.label.text %}{% endif %}
2022-01-27 21:00:33 +01:00
{% if label %}<label for="{{ field.id }}" {% if not label_visible %}class="sr-only"{% else %}class="form-label"{% endif %}>{{ label|safe }}</label>{% endif %}
{% endif %}
2018-12-22 23:29:30 +01:00
{{ field(class_=fieldclass or 'form-control', **kwargs) }}
2021-01-30 16:22:19 +01:00
{% if hint %}
<small class="form-text text-muted">{{ hint | safe }}</small>
{% endif %}
2020-12-15 13:56:17 +01:00
{{ render_errors(field) }}
</div>
2018-03-18 19:14:55 +01:00
{%- endmacro %}
2020-12-10 00:59:31 +01:00
{% macro render_field_prefix(field, label=None, prefix="@", label_visible=true, right_url=None, right_label=None, fieldclass=None) -%}
2020-12-15 13:56:17 +01:00
<div class="form-group {% if field.errors %}has-danger{% endif %} {{ kwargs.pop('class_', '') }}">
2020-12-10 00:59:31 +01:00
{% if field.type != 'HiddenField' and label_visible %}
{% if not label and label != "" %}{% set label=field.label.text %}{% endif %}
2022-01-27 21:00:33 +01:00
{% if label %}<label for="{{ field.id }}" class="form-label">{{ label|safe }}</label>{% endif %}
2020-12-10 00:59:31 +01:00
{% endif %}
<div class="input-group mb-3">
2022-01-27 21:00:33 +01:00
<span class="input-group-text" id="{{ field.name }}">{{ prefix }}</span>
2020-12-10 00:59:31 +01:00
{{ field(class_=fieldclass or 'form-control', **kwargs) }}
</div>
2020-12-15 13:56:17 +01:00
{{ render_errors(field) }}
2020-12-10 00:59:31 +01:00
</div>
{%- endmacro %}
{% macro render_field_prefix_button(field, label=None, prefix="@", label_visible=true, right_url=None, right_label=None, fieldclass=None) -%}
2020-12-15 13:56:17 +01:00
<div class="form-group {% if field.errors %}has-danger{% endif %} {{ kwargs.pop('class_', '') }}">
2020-12-10 00:59:31 +01:00
{% if field.type != 'HiddenField' and label_visible %}
{% if not label and label != "" %}{% set label=field.label.text %}{% endif %}
2022-01-27 21:00:33 +01:00
{% if label %}<label for="{{ field.id }}" class="form-label">{{ label|safe }}</label>{% endif %}
2020-12-10 00:59:31 +01:00
{% endif %}
<div class="input-group mb-3">
2022-01-27 21:00:33 +01:00
<span class="input-group-text" id="basic-addon1">{{ prefix }}</span>
2020-12-10 00:59:31 +01:00
{{ field(class_=fieldclass or 'form-control', **kwargs) }}
<a class="btn btn-secondary" id="{{ field.name }}-button">
2022-01-08 00:27:00 +01:00
{{ _("View") }}
2020-12-10 00:59:31 +01:00
</a>
</div>
2020-12-15 13:56:17 +01:00
{{ render_errors(field) }}
2020-12-10 00:59:31 +01:00
</div>
{%- endmacro %}
2018-12-22 12:23:58 +01:00
{% macro form_scripts() -%}
2021-02-05 17:19:34 +01:00
<link href="/static/libs/jquery-ui.min.css" rel="stylesheet" type="text/css">
<script src="/static/libs/jquery-ui.min.js"></script>
<script src="/static/tagselector.js?v=4"></script>
{% endmacro %}
2018-05-29 21:51:42 +02:00
{% macro package_lists() -%}
<script>
meta_packages = [
{% for m in mpackages %}
{# This is safe as name can only contain `[a-z0-9_]` #}
{
id: "{{ m.name }}",
value: "{{ m.name }}",
toString: function() { return "{{ m.name }}"; },
},
{% endfor %}
]
function escape(unsafe) {
return unsafe
.replace(/&/g, "&amp;")
.replace(/</g, "&lt;")
.replace(/>/g, "&gt;")
.replace(/"/g, "&quot;")
.replace(/'/g, "&#039;");
}
all_packages = meta_packages.slice();
{% for p in packages %}
all_packages.push({
id: "{{ p.author.username }}/{{ p.name }}",
value: escape({{ p.title | tojson }} + " by " + {{ p.author.display_name | tojson }}),
toString: function() { return escape({{ p.title | tojson }} + " by " + {{ p.author.display_name | tojson }} + " only"); },
});
{% endfor %}
</script>
{% endmacro %}
{% macro render_multiselect_field(field, label=None, label_visible=true, right_url=None, right_label=None) -%}
2020-12-15 13:56:17 +01:00
<div class="form-group {% if field.errors %}has-danger{% endif %} {{ kwargs.pop('class_', '') }}">
{% if field.type != 'HiddenField' and label_visible %}
{% if not label %}{% set label=field.label.text %}{% endif %}
2022-01-27 21:00:33 +01:00
<label for="{{ field.id }}" class="form-label">{{ label|safe }}</label>
{% endif %}
2018-12-22 12:23:58 +01:00
<div class="multichoice_selector bulletselector form-control">
2022-01-08 00:27:00 +01:00
<input type="text" placeholder="{{ _('Start typing to see suggestions') }}">
<div class="clearboth"></div>
</div>
2018-12-22 12:23:58 +01:00
<div class="invalid-remaining invalid-feedback"></div>
{{ field(class_='form-control', **kwargs) }}
2020-12-15 13:56:17 +01:00
{{ render_errors(field) }}
2018-05-27 18:58:09 +02:00
</div>
{% endmacro %}
2018-03-18 19:14:55 +01:00
{% macro render_checkbox_field(field, label=None) -%}
{% if not label %}{% set label=field.label.text %}{% endif %}
2022-01-27 21:00:33 +01:00
<div class="form-sheck {{ kwargs.pop('class_', '') }}">
{{ field(type='checkbox', class_="form-check-input", **kwargs) }}
<label class="form-check-label" for="{{ field.id }}">
{{ label }}
</label>
</div>
2018-03-18 19:14:55 +01:00
{%- endmacro %}
2021-01-30 16:41:55 +01:00
{% macro render_radio_field(field, hint=None, label=None, label_visible=true) -%}
<div class="form-group {% if field.errors %}has-danger{% endif %} {{ kwargs.pop('class_', '') }}">
{% if label_visible %}
{% if not label and label != "" %}{% set label=field.label.text %}{% endif %}
{% if label %}<label for="{{ field.id }}">{{ label|safe }}</label>{% endif %}
{% endif %}
{% for value, label, checked in field.iter_choices() %}
<div class="form-check my-1">
<label class="form-check-label">
<input class="form-check-input" type="radio" name="{{ field.id }}" id="{{ field.id }}" value="{{ value }}"{% if checked %} checked{% endif %}>
{{ label }}
</label>
</div>
{% endfor %}
{% if hint %}
<small class="form-text text-muted">{{ hint | safe }}</small>
{% endif %}
{{ render_errors(field) }}
</div>
2018-03-18 19:14:55 +01:00
{%- endmacro %}
{% macro render_toggle_field(field, icons=[]) -%}
2021-01-30 16:41:55 +01:00
<div class="btn-group btn-group-toggle {{ kwargs.pop('class_', '') }}" data-toggle="buttons">
{% for value, label, checked in field.iter_choices() %}
<label class="btn btn-primary{% if checked %} active{% endif %}">
{% set icon = icons[value] %}
{% if icon %}
2022-01-27 21:00:33 +01:00
<i class="fas {{ icon }} me-2"></i>
{% endif %}
<input type="radio" name="{{ field.id }}" id="{{ field.id }}" value="{{ value }}" autocomplete="off" {% if checked %} checked{% endif %}>
{{ label }}
</label>
{% endfor %}
</div>
{%- endmacro %}
2020-12-15 22:22:17 +01:00
{% macro render_submit_field(field, label=None, tabindex=None, class_=None) -%}
{% if not label %}{% set label=field.label.text %}{% endif %}
{#<button type="submit" class="form-control btn btn-default btn-primary">{{label}}</button>#}
2020-12-15 22:22:17 +01:00
<input type="submit" name="{{ field.name }}" value="{{ label }}" class="{{ class_ or 'btn btn-primary' }}"
{% if tabindex %}tabindex="{{ tabindex }}"{% endif %}>
2018-03-18 19:14:55 +01:00
{%- endmacro %}