-{% extends "base.html" %}
+{% extends "../base.html" %}
-{% block main %}
+{% block container %}
{% import phonenumbers %}
- <div class="card mb-3">
- <div class="card-body">
- {% if account.description %}
- <div class="row">
- <div class="col">
- {% module Markdown(account.description) %}
- </div>
+ <div class="header">
+ <div class="container">
+ <div class="row align-items-center justify-content-center">
+ <div class="col-4 col-lg-2 text-center">
+ <img class="img-fluid rounded-circle my-5"
+ src="{{ account.avatar_url(512) }}" alt="{{ account }}" />
</div>
- {% end %}
- <div class="row">
- <div class="col">
- <a class="btn btn-dark btn-block" href="mailto:{{ account.email }}">
- {{ _("Email %s") % account.first_name }}
- </a>
+ <div class="col-12 col-lg-10">
+ <h2>{{ account }}</h2>
+
+ {% if account.description %}
+ <div>
+ {% module Markdown(account.description) %}
+ </div>
+ {% end %}
+
+ <div class="btn-toolbar mb-3">
+ {% if account.has_shell() %}
+ <a class="btn btn-secondary btn-sm" href="/~{{ account.uid }}/">
+ <span class="fas fa-home mr-2"></span> {{ _("Home Directory") }}
+ </a>
+ {% end %}
+
+ {% if account.can_be_managed_by(current_user) %}
+ <a class="btn btn-link text-warning btn-sm" href="/users/{{ account.uid }}/edit">
+ {{ _("Edit") }}
+ </a>
+
+ <a class="btn btn-link text-muted btn-sm" href="/users/{{ account.uid }}/passwd">
+ {{ _("Change Password") }}
+ </a>
+ {% end %}
+ </div>
</div>
</div>
+ </div>
+ </div>
- {% if current_user == account or current_user.is_staff() %}
+ {% if current_user == account or current_user.is_staff() %}
+ <div class="container">
+ <section>
<div class="row">
- {% if account.address %}
- <div class="col-md-6 mt-5">
- <h6>{{ _("Postal Address") }}</h6>
+ <div class="col-12 col-lg-6">
+ {% if current_user.is_staff() %}
+ <h6>{{ _("Email") }}</h6>
+
+ <ul class="list-unstyled">
+ <li>
+ <a href="mailto:{{ account.email }}">
+ {{ account.email }}
+ </a>
+ </li>
+ </ul>
+ {% end %}
+
+ {% if account.address %}
+ <h6>{{ _("Address") }}</h6>
<address>
- <strong>{{ account.name }}</strong>
- <br>
+ {{ account.name }}<br>
{% for line in account.address %}
{{ line }}<br>
{% end %}
</address>
- </div>
- {% end %}
+ {% end %}
- <div class="col-md-6 mt-5">
{% if account.phone_number or account.fax_number %}
- <h6 class="mb-2">{{ _("Phone Numbers") }}</h6>
+ <h6>{{ _("Phone Numbers") }}</h6>
<ul class="list-unstyled">
{% if account.phone_number %}
<li>
- <span class="fas fa-phone"></span>
+ <i class="fas fa-phone"></i>
<a href="tel:{{ format_phone_number_to_e164(account.phone_number) }}">
{{ format_phone_number(account.phone_number) }}
{% if account.fax_number %}
<li>
- <span class="fas fa-fax"></span>
+ <i class="fas fa-fax"></i>
<a href="fax:{{ format_phone_number_to_e164(account.fax_number) }}">
{{ format_phone_number(account.fax_number) }}
{% end %}
{% if account.phone_numbers %}
- <h6 class="mb-2">{{ _("External Phone Numbers") }}</h6>
+ <h6>{{ _("External Phone Numbers") }}</h6>
<ul class="list-unstyled">
{% for number in account.phone_numbers %}
<li>
{% if phonenumbers.number_type(number) == phonenumbers.PhoneNumberType.MOBILE %}
- <span class="fas fa-mobile" title="{{ _("Mobile") }}"></span>
+ <i class="fas fa-mobile" title="{{ _("Mobile") }}"></i>
{% else %}
- <span class="fas fa-phone"></span>
+ <i class="fas fa-phone"></i>
{% end %}
<a href="tel:{{ format_phone_number_to_e164(number) }}"
</ul>
{% end %}
</div>
- </div>
- {% end %}
- </div>
-
- {% if current_user.is_staff() and account.groups %}
- <div class="card-body">
- <div class="row">
- <div class="col">
- <h6 class="mb-0">{{ _("Groups") }}</h6>
- </div>
- </div>
- </div>
- <div class="list-group list-group-flush">
- {% for g in account.groups %}
- <a class="list-group-item list-group-item-active" href="/groups/{{ g.gid }}">
- <i class="fas fa-users mr-2"></i> {{ g }}
- </a>
- {% end %}
- </div>
- {% end %}
- </div>
+ {% if current_user.is_staff() %}
+ <div class="col-12 col-lg-6">
+ {% if account.groups %}
+ <h6>{{ _("Groups") }}</h6>
- <ul class="list-unstyled small text-muted">
- <li>
- {{ _("Joined %s") % locale.format_date(account.created_at, shorter=True) }}
- </li>
-
- {% if current_user.is_admin() %}
- <li>
- {{ _("Last Modified %s") % locale.format_date(account.modified_at) }}
- </li>
+ <div class="list-group mb-3">
+ {% for g in account.groups %}
+ <a class="list-group-item list-group-item-action" href="/groups/{{ g.gid }}">
+ <i class="fas fa-users mr-2"></i> {{ g }}
+ </a>
+ {% end %}
+ </div>
+ {% end %}
- {% if account.last_successful_authentication %}
- <li>
- {{ _("Last successful authentication: %s") % locale.format_date(account.last_successful_authentication) }}
- </li>
- {% end %}
+ <ul class="list-unstyled small text-muted">
+ <li>
+ {{ _("Joined %s") % locale.format_date(account.created_at, shorter=True) }}
+ </li>
- {% if account.failed_login_count %}
- <li class="text-warning">
- {{ _("One unsuccessful authentication attempt.", "%(num)s unsuccessful authentication attempts.", account.failed_login_count) % { "num" : account.failed_login_count } }}
+ {% if current_user.is_admin() %}
+ <li>
+ {{ _("Last Modified %s") % locale.format_date(account.modified_at) }}
+ </li>
- {% if account.last_failed_authentication %}
- {{ _("Last attempt: %s") % locale.format_date(account.last_failed_authentication) }}
+ {% if account.last_successful_authentication %}
+ <li>
+ {{ _("Last successful authentication: %s") % locale.format_date(account.last_successful_authentication) }}
+ </li>
+ {% end %}
+
+ {% if account.failed_login_count %}
+ <li class="text-warning">
+ {{ _("One unsuccessful authentication attempt.", "%(num)s unsuccessful authentication attempts.", account.failed_login_count) % { "num" : account.failed_login_count } }}
+
+ {% if account.last_failed_authentication %}
+ {{ _("Last attempt: %s") % locale.format_date(account.last_failed_authentication) }}
+ {% end %}
+ </li>
+ {% end %}
+ {% end %}
+ </ul>
+ </div>
{% end %}
- </li>
- {% end %}
- {% end %}
- </ul>
+ </div>
+ </section>
+ </div>
+ {% end %}
{% end block %}