{% extends theme('base.html') %}
{% import 'fomanticui.html' as sui %}

{% block script %}
    <script src="/static/js/confirm.js"></script>
    <script src="/static/js/profile.js"></script>
{% endblock %}

{% macro render_field(field, noindicator=false) %}
    {% set lock_indicator = field.render_kw and ("readonly" in field.render_kw or "disabled" in field.render_kw) %}
    {% if not edited_user %}
        {{ sui.render_field(field, **kwargs) }}
    {% elif edited_user.uid == user.uid or lock_indicator or noindicator %}
        {{ sui.render_field(field, **kwargs) }}
    {% elif field.name in edited_user.write %}
        {{ sui.render_field(field, **kwargs) }}
    {% elif field.name in edited_user.read %}
        {{ sui.render_field(field, indicator_icon="eye", indicator_text=_("This user cannot edit this field"), **kwargs) }}
    {% else %}
        {{ sui.render_field(field, indicator_icon="eye slash", indicator_text=_("This user cannot see this field"), **kwargs) }}
    {% endif %}
{% endmacro %}

{% block content %}
    {% if self_deletion or (user.can_manage_users and edited_user) %}
        <div id="modal-delete" class="ui basic modal">
            <div class="ui icon header">
                <i class="user minus icon"></i>
                {% trans %}Account deletion{% endtrans %}
            </div>
            <div class="content">
                <p>
                    {% if user.uid != edited_user.uid %}
                        {{ _("Are you sure you want to delete this user? This action is unrevokable and all the data about this user will be removed.") }}
                    {% else %}
                        {{ _("Are you sure you want to delete your account? This action is unrevokable and all your data will be removed forever.") }}
                    {% endif %}
                </p>
            </div>
            <div class="actions">
                <div class="ui inverted cancel button">{% trans %}Cancel{% endtrans %}</div>
                <div class="ui inverted red approve button">{% trans %}Delete{% endtrans %}</div>
            </div>
        </div>
    {% endif %}

    <div class="ui clearing segment">
        <h2 class="ui center aligned header">
            <div class="content">
                {% if not edited_user %}
                    {% trans %}User creation{% endtrans %}
                {% elif user.uid == edited_user.uid %}
                    {% trans %}My profile{% endtrans %}
                {% else %}
                    {% trans %}User profile edition{% endtrans %}
                {% endif %}

            </div>
            <div class="sub header">
                {% if not edited_user %}
                    {% trans %}Create a new user account{% endtrans %}
                {% elif user.uid == edited_user.uid %}
                    {% trans %}Edit your personal informations{% endtrans %}
                {% else %}
                    {% trans %}Edit informations about an user{% endtrans %}
                {% endif %}
            </div>
        </h2>

        <form method="POST"
            id="{{ form.__class__.__name__|lower }}"
            action="{{ request.url }}"
            role="form"
            enctype="multipart/form-data"
            class="ui form info{% if user.can_manage_users and edited_user and not edited_user.has_password() %} warning{% endif %} profile-form"
        >

            {#{ render_field(form.csrf_token) }#}

            <h4 class="ui dividing header">{% trans %}Personal information{% endtrans %}</h4>

            {% if "jpegPhoto" in form %}
                <div class="ui grid">
                    <div class="three wide column">
                        {% block photo_field scoped %}
                            {{ render_field(form.jpegPhoto, display=false, class="photo-field") }}
                            {{ render_field(form.jpegPhoto_delete, display=false, class="photo-delete-button") }}
                            {% set photo = edited_user.jpegPhoto and edited_user.jpegPhoto[0] %}
                            <label
                                class="ui small bordered image photo-content"
                                for="{{ form.jpegPhoto.id }}"
                                title="{{ _("Click to upload a photo") }}"
                                {% if not photo %}style="display: none;"{% endif %}>

                                <a class="ui right corner label photo-delete-icon" title="{{ _("Delete the photo") }}">
                                    <i class="times icon"></i>
                                </a>
                                <img src="{% if photo %}{{ url_for("account.photo", uid=edited_user.uid[0], field="jpegPhoto") }}{% endif %}" alt="User photo">
                            </label>
                            <label
                                class="ui centered photo-placeholder"
                                for="{{ form.jpegPhoto.id }}"
                                title="{{ _("Click to upload a photo") }}"
                                {% if photo %}style="display: none;"{% endif %}>
                                <i class="massive centered portrait icon"></i>
                            </label>
                            </div>
                        {% endblock %}

                        <div class="thirteen wide column">
            {% endif %}

            <div class="two fields">
                {% if "givenName" in form %}
                    {% block given_name_field scoped %}{{ render_field(form.givenName) }}{% endblock %}
                {% endif %}

                {% if "sn" in form %}
                    {% block sn_field scoped %}{{ render_field(form.sn) }}{% endblock %}
                {% endif %}
            </div>

            {% if "displayName" in form %}
                {% block display_name_field scoped %}{{ render_field(form.displayName) }}{% endblock %}
            {% endif %}

            {% if "jpegPhoto" in form %}</div></div>{% endif %}

            {% if "mail" in form %}
                {% block mail_field scoped %}{{ render_field(form.mail) }}{% endblock %}
            {% endif %}

            {% if "telephoneNumber" in form %}
                {% block telephone_number_field scoped %}{{ render_field(form.telephoneNumber) }}{% endblock %}
            {% endif %}

            {% if "postalAddress" in form %}
                {% block postal_address_field scoped %}{{ render_field(form.postalAddress) }}{% endblock %}
            {% endif %}

            {% if "employeeNumber" in form %}
                {% block employee_number_field scoped %}{{ render_field(form.employeeNumber) }}{% endblock %}
            {% endif %}

            {% if "labeledURI" in form %}
                {% block labeled_uri_field scoped %}{{ render_field(form.labeledURI) }}{% endblock %}
            {% endif %}

            {% if "preferredLanguage" in form %}
                {% block preferred_language_field scoped %}{{ render_field(form.preferredLanguage) }}{% endblock %}
            {% endif %}


            <h4 class="ui dividing header">{% trans %}Account information{% endtrans %}</h4>

            {% if "uid" in form %}
                {% block uid_field scoped %}{{ render_field(form.uid) }}{% endblock %}
            {% endif %}

            {% if "groups" in form %}
                {% block groups_field scoped %}{{ render_field(form.groups) }}{% endblock %}
            {% endif %}

            {% if "password1" in form %}
                {% block password_field scoped %}
                    <div class="two fields">
                        {{ render_field(form.password1, noindicator=true) }}
                        {{ render_field(form.password2, noindicator=true) }}
                    </div>
                {% endblock %}
            {% endif %}

            {% if user.can_manage_users %}

                {% if not edited_user %}

                    <div class="ui message info">
                        <div class="header">
                            {% trans %}User password is not mandatory{% endtrans %}
                        </div>
                        {% if has_password %}
                            <p>{% trans %}The user password can be set:{% endtrans %}</p>
                            <ul class="ui list">
                                <li>{% trans %}by filling this form;{% endtrans %}</li>
                                <li>{% trans %}by sending the user a password initialization mail, after the account creation;{% endtrans %}</li>
                                <li>{% trans %}or simply waiting for the user to sign-in a first time, and then receive a password initialization mail.{% endtrans %}</li>
                            </ul>
                        {% else %}
                            <p>{% trans %}The user will not be able to authenticate unless the password is set{% endtrans %}</p>
                        {% endif %}
                    </div>

                {% elif not edited_user.has_password() %}

                    <div class="ui message warning visible">
                        {% if has_smtp and edited_user.can_edit_self %}
                            <button type="submit" name="action" value="password-initialization-mail" class="ui right floated primary button">
                                {% trans %}Send email{% endtrans %}
                            </button>
                        {% endif %}
                        <div class="header">
                            {% trans %}This user does not have a password yet{% endtrans %}
                        </div>
                        {% if has_smtp and edited_user.can_edit_self %}
                            <p>{% trans %}You can solve this by:{% endtrans %}</p>
                            <ul class="ui list">
                                <li>{% trans %}setting a password using this form;{% endtrans %}</li>
                                <li>{% trans %}sending the user a password initialization mail, by clicking this button;{% endtrans %}</li>
                                <li>{% trans %}or simply waiting for the user to sign-in a first time, and then receive a password initialization mail.{% endtrans %}</li>
                            </ul>
                        {% else %}
                            <p>{% trans %}The user will not be able to authenticate unless the password is set{% endtrans %}</p>
                        {% endif %}
                    </div>

                {% elif has_smtp and edited_user.uid != user.uid and edited_user.has_password() and edited_user.can_edit_self %}

                    <div class="ui message info">
                        <button type="submit" name="action" value="password-reset-mail" class="ui right floated button">
                            {% trans %}Send mail{% endtrans %}
                        </button>
                        <div class="header">
                            {% trans %}Password reset{% endtrans %}
                        </div>
                        <p>{% trans %}If the user has forgotten his password, you can send him a password reset email by clicking this button.{% endtrans %}</p>
                    </div>

                {% endif %}

            {% endif %}

            <div class="ui right aligned container">
                <div class="ui stackable buttons">
                    {% if user.can_manage_users and edited_user or self_deletion %}
                        <button type="submit" class="ui right floated basic negative button confirm" name="action" value="delete" id="delete">
                            {% if user.uid != edited_user.uid %}
                                {{ _("Delete the user") }}
                            {% else %}
                                {{ _("Delete my account") }}
                            {% endif %}
                        </button>
                    {% endif %}

                    {% if user.can_impersonate_users and edited_user and user.uid != edited_user.uid %}
                        <a href="{{ url_for('account.impersonate', username=edited_user.uid[0]) }}" class="ui right floated basic button" name="action" value="impersonate" id="impersonate">
                            {{ _("Impersonate") }}
                        </a>
                    {% endif %}

                    {% if user.can_manage_users and not edited_user and has_smtp %}
                        <a href="{{ url_for('account.user_invitation') }}" class="ui right floated button" name="action" value="impersonate" id="impersonate">
                            {{ _("Invite a user") }}
                        </a>
                    {% endif %}

                    <button type="submit" class="ui right floated primary button" name="action" value="edit" id="edit">
                        {{ _("Submit") }}
                    </button>

                </div>
            </div>
        </form>
    </div>
{% endblock %}
