diff --git a/templates/macros.html b/templates/macros.html new file mode 100644 index 0000000000000000000000000000000000000000..e7a037e3f2c92f064f63f6355de97f62aa9f488e --- /dev/null +++ b/templates/macros.html @@ -0,0 +1,78 @@ + +{% macro render_field(field, label_visible=true) -%} + {{ field(id=field.id, title=field.description, **kwargs) }} + {% if field.errors %} + {% for e in field.errors %} + <p class="help-block">{{ e }}</p> + {% endfor %} + {% endif %} +{%- endmacro %} + +{% macro render_stringfield(field) -%} + <div class="mdl-textfield mdl-js-textfield"> + <input id="{{ field.id }}" name="{{ field.id }}" class="mdl-textfield__input" type="text" /> + <label class="mdl-textfield__label" for="{{ field.id }}">{{ field.label.text }}</label> + {% if field.errors %} + {% for e in errors %} + <div class="mdl-card__supporting-text"> + {{ e }} + </div> + {% endfor %} + {% endif %} + </div> +{%- endmacro %} + +{% macro render_passwordfield(field) -%} + <div class="mdl-textfield mdl-js-textfield"> + <input id="{{ field.id }}" name="{{ field.id }}" class="mdl-textfield__input" type="password" /> + <label class="mdl-textfield__label" for="{{ field.id }}">{{ field.label.text }}</label> + {% if field.errors %} + {% for e in errors %} + <div class="mdl-card__supporting-text"> + {{ e }} + </div> + {% endfor %} + {% endif %} + </div> +{%- endmacro %} + +{% macro render_booleanfield(field) -%} + <label class="mdl-checkbox mdl-js-checkbox mdl-js-ripple-effect" for="{{ field.id }}"> + <input type="checkbox" id="{{ field.id }}" name="{{ field.id }}" class="mdl-checkbox__input" /> + <span class="mdl-checkbox__label">{{ field.label.text }}</span> + </label> +{%- endmacro %} + +{% macro render_csrftokenfield(field, kwargs) -%} + {{ field(title=field.description, **kwargs) }} +{%- endmacro %} + +{% macro render_form(form, action_url="", title=None, action_text="Submit", class_="mdl-card mdl-shadow--2dp", title_class="mdl-card__title", title_next_class="mdl-card__title-text", content_class="mdl-card__supporting-text", action_class="mdl-card__actions", btn_class="mdl-button mdl-js-button mdl-button--raised mdl-button-colored") -%} + <div class="{{ class_ }}"> + <form method="POST" action="{{ action_url }}"> + <div class="{{ title_class }}"> + <h2 class="{{ title_text_class}}">{{ title if title is not none else action_text }}</h2> + </div> + <div class="{{ content_class }}"> + {% for f in form %} + {% if f.type == "StringField" %} + {{ render_stringfield(f) }} + {% elif f.type == "PasswordField" %} + {{ render_passwordfield(f) }} + {% elif f.type == "BooleanField" %} + {{ render_booleanfield(f) }} + {% elif f.type == "CSRFTokenField" %} + {{ render_csrftokenfield(f, kwargs) }} + {% else %} + {{ f.type }} + {{ render_field(f) }} + {% endif %} + {% endfor %} + {% endfor %} + </div> + <div class="{{ action_class }}"> + <button type="submit" class="{{ btn_class }}">{{ action_text }}</button> + </div> + </form> + </div> +{%- endmacro %}