{% macro render_errors(field) %} {% for e in field.errors %} <p class="invalid-feedback" style="display: block;">{{ e }}</p> {% endfor %} {% endmacro %} {% macro render_field(field, label=None, label_visible=true, right_url=None, right_label=None, fieldclass=None) -%} <div class="form-group {% if field.errors %}has-danger{% endif %} {{ kwargs.pop('class_', '') }}"> {% if field.type != 'HiddenField' and label_visible %} {% if not label and label != "" %}{% set label=field.label.text %}{% endif %} {% if label %}<label for="{{ field.id }}">{{ label|safe }}</label>{% endif %} {% endif %} {{ field(class_=fieldclass or 'form-control', **kwargs) }} {{ render_errors(field) }} </div> {%- endmacro %} {% macro render_field_prefix(field, label=None, prefix="@", label_visible=true, right_url=None, right_label=None, fieldclass=None) -%} <div class="form-group {% if field.errors %}has-danger{% endif %} {{ kwargs.pop('class_', '') }}"> {% if field.type != 'HiddenField' and label_visible %} {% if not label and label != "" %}{% set label=field.label.text %}{% endif %} {% if label %}<label for="{{ field.id }}">{{ label|safe }}</label>{% endif %} {% endif %} <div class="input-group mb-3"> <div class="input-group-prepend"> <span class="input-group-text" id="basic-addon1">{{ prefix }}</span> </div> {{ field(class_=fieldclass or 'form-control', **kwargs) }} </div> {{ render_errors(field) }} </div> {%- endmacro %} {% macro render_field_prefix_button(field, label=None, prefix="@", label_visible=true, right_url=None, right_label=None, fieldclass=None) -%} <div class="form-group {% if field.errors %}has-danger{% endif %} {{ kwargs.pop('class_', '') }}"> {% if field.type != 'HiddenField' and label_visible %} {% if not label and label != "" %}{% set label=field.label.text %}{% endif %} {% if label %}<label for="{{ field.id }}">{{ label|safe }}</label>{% endif %} {% endif %} <div class="input-group mb-3"> <div class="input-group-prepend"> <span class="input-group-text" id="basic-addon1">{{ prefix }}</span> </div> {{ field(class_=fieldclass or 'form-control', **kwargs) }} <a class="btn btn-secondary" id="{{ field.name }}-button"> View </a> </div> {{ render_errors(field) }} </div> {%- endmacro %} {% macro form_scripts() -%} <link href="/static/jquery-ui.min.css?v=2" rel="stylesheet" type="text/css"> <script src="/static/jquery-ui.min.js?v=2"></script> <script src="/static/tagselector.js?v=3"></script> {% endmacro %} {% 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, "&") .replace(/</g, "<") .replace(/>/g, ">") .replace(/"/g, """) .replace(/'/g, "'"); } 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) -%} <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 %} <label for="{{ field.id }}">{{ label|safe }}</label> {% endif %} <div class="multichoice_selector bulletselector form-control"> <input type="text" placeholder="Start typing to see suggestions"> <div class="clearboth"></div> </div> <div class="invalid-remaining invalid-feedback"></div> {{ field(class_='form-control', **kwargs) }} {{ render_errors(field) }} </div> {% endmacro %} {% macro render_mpackage_field(field, label=None, label_visible=true, right_url=None, right_label=None) -%} <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 %} <label for="{{ field.id }}">{{ label|safe }}</label> {% endif %} <div class="metapackage_selector bulletselector form-control"> <input type="text" placeholder="Comma-seperated values"> <div class="clearboth"></div> </div> {{ field(class_='form-control', **kwargs) }} <div class="invalid-remaining invalid-feedback"></div> {{ render_errors(field) }} </div> {% endmacro %} {% macro render_deps_field(field, label=None, label_visible=true, right_url=None, right_label=None) -%} <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 %} <label for="{{ field.id }}">{{ label|safe }}</label> {% endif %} <div class="deps_selector bulletselector form-control"> <input type="text" placeholder="Comma-seperated values"> <div class="clearboth"></div> </div> {{ field(class_='form-control', **kwargs) }} <div class="invalid-remaining invalid-feedback"></div> {{ render_errors(field) }} </div> {% endmacro %} {% macro render_checkbox_field(field, label=None) -%} {% if not label %}{% set label=field.label.text %}{% endif %} <div class="checkbox {{ kwargs.pop('class_', '') }}"> <label> {{ field(type='checkbox', **kwargs) }} {{ label }} </label> </div> {%- endmacro %} {% macro render_radio_field(field) -%} {% 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 %} {%- endmacro %} {% macro render_toggle_field(field, icons=[]) -%} <div class="btn-group btn-group-toggle" 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 %} <i class="fas {{ icon }} mr-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 %} {% 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>#} <input type="submit" name="{{ field.name }}" value="{{ label }}" class="{{ class_ or 'btn btn-primary' }}" {% if tabindex %}tabindex="{{ tabindex }}"{% endif %}> {%- endmacro %}