{% extends "base.html" %} {% block title %}Edit Profile - {{ config.BBS_NAME }}{% endblock %} {% block content %}

Edit Profile

{# Avatar-remove form lives OUTSIDE the main profile form. HTML forbids nesting
tags — browsers auto-close the outer form at the inner , which historically dropped the Privacy/Signature/Theme/Submit fields out of the profile form entirely. The Remove Avatar button below uses the HTML5 `form="remove_avatar_form"` attribute to submit this hidden form from its visual position inside the Avatar card. #} {% if avatar %}
{% endif %}
{{ form.hidden_tag() }}
Basic Info
{{ form.display_name.label(class="form-label") }} {{ form.display_name(class="form-control", placeholder="Your display name") }}
{{ form.email.label(class="form-label") }} {{ form.email(class="form-control") }} {% for e in form.email.errors %}
{{ e }}
{% endfor %}
{{ form.bio.label(class="form-label") }} {{ form.bio(class="form-control", rows="4", maxlength="500", id="bio-textarea") }} 0/500 characters
{{ form.location.label(class="form-label") }} {{ form.location(class="form-control", placeholder="City, Country") }}
{{ form.website.label(class="form-label") }} {{ form.website(class="form-control", placeholder="https://...") }}
Avatar
{% if avatar %} Current Avatar {% else %} {% endif %}
{{ form.avatar_url.label(class="form-label") }} {{ form.avatar_url(class="form-control", placeholder="https://example.com/avatar.jpg") }}
{{ form.avatar_file(class="form-control") }} {% for e in form.avatar_file.errors %}
{{ e }}
{% endfor %} Max 2MB. JPG, PNG, GIF, WebP allowed.
{% if avatar %} {% endif %}
Privacy
{{ form.show_email(class="form-check-input") }} {{ form.show_email.label(class="form-check-label") }}
{{ form.date_of_birth.label(class="form-label") }} {{ form.date_of_birth(class="form-control") }}
Forum Signature
{{ form.signature(class="form-control", rows="3", maxlength="200", id="sig-textarea") }} 0/200 characters
FTN Tagline
{{ form.tagline(class="form-control", maxlength="160") }} {{ form.tagline.description }}
Theme
{{ form.theme_id.label(class="form-label") }} {{ form.theme_id(class="form-select") }}
{% if themes %}
{% for theme in themes %} {% set vars = theme.css_variables | from_json %}
{{ theme.display_name }}
{% endfor %}
{% endif %}
{{ form.submit(class="btn btn-primary") }} Cancel Change Password
{% endblock %} {% block extra_js %} {% endblock %}