]> git.ipfire.org Git - ipfire.org.git/commitdiff
people: Complete redesign of base template
authorMichael Tremer <michael.tremer@ipfire.org>
Wed, 17 Oct 2018 14:07:01 +0000 (15:07 +0100)
committerMichael Tremer <michael.tremer@ipfire.org>
Wed, 17 Oct 2018 15:12:45 +0000 (16:12 +0100)
A clear and useful sidebar is now telling the user with
who we are dealing

Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
13 files changed:
Makefile.am
src/templates/people/base.html
src/templates/people/call.html
src/templates/people/calls.html
src/templates/people/index.html
src/templates/people/passwd.html
src/templates/people/search.html
src/templates/people/sip.html
src/templates/people/user-base.html [new file with mode: 0644]
src/templates/people/user-edit.html
src/templates/people/user.html
src/templates/people/users.html
src/web/people.py

index a341c3d4b2a14e1037dfb96e3395e1cb9f414220..178798eccf4e1e685e857f86793026bd22db9603 100644 (file)
@@ -160,6 +160,7 @@ templates_people_DATA = \
        src/templates/people/search.html \
        src/templates/people/sip.html \
        src/templates/people/user.html \
+       src/templates/people/user-base.html \
        src/templates/people/user-edit.html \
        src/templates/people/users.html
 
index 8617dd33d007bee2a540974e8a4b10f4c507714d..44b3e913d2b9c31e09b227ec086b3f422eb37dbb 100644 (file)
                <div class="collapse navbar-collapse" id="navbar">
                        <ul class="navbar-nav ml-auto mr-3">
                                <li class="nav-item">
-                                       <a class="nav-link {% if request.path == "/users" %}active{% end %}" href="/users">
-                                               {{ _("Users") }}
+                                       <a class="nav-link {% if request.path == "/users/%s" % current_user.uid %}active{% end %}" href="/users/{{ current_user.uid }}">
+                                               {{ _("My Profile") }}
                                        </a>
                                </li>
 
                                <li class="nav-item">
                                        <a class="nav-link {% if request.path.startswith("/users/%s/calls" % current_user.uid) %}active{% end %}" href="/users/{{ current_user.uid }}/calls">
-                                               {{ _("Calls") }}
+                                               {{ _("My Calls") }}
+                                       </a>
+                               </li>
+
+                               <li class="nav-item">
+                                       <a class="nav-link {% if request.path == "/users" %}active{% end %}" href="/users">
+                                               {{ _("Users") }}
                                        </a>
                                </li>
                        </ul>
                </div>
        {% end %}
 {% end block %}
-
-{% block content %}
-       <div class="row">
-               <div class="col">
-                       {% block main %}{% end block %}
-               </div>
-
-               {% block right %}
-                       <div class="col-md-3 text-center">
-                               <img class="img-fluid rounded-circle mb-4" src="{{ current_user.avatar_url(160) }}" alt="{{ current_user }}" />
-
-                               <p>
-                                       <a class="text-white" href="/users/{{ current_user.uid }}">{{ current_user.name }}</a>
-                               </p>
-
-                               <p>
-                                       {% module SIPStatus(current_user) %}
-                               </p>
-                       </div>
-               {% end block %}
-       </div>
-{% end block %}
index cd87e7463a8cf4dbf2fac4bc07b756face929deb..ced446459e1d85b1bf5253aede1bfb63fe2f727d 100644 (file)
@@ -1,6 +1,6 @@
-{% extends "base.html" %}
+{% extends "user-base.html" %}
 
-{% block title %}{{ _("Call") }}{% end block %}
+{% block title %}{{ account }} - {{ _("Call") }}{% end block %}
 
 {% block main %}
        <div class="card">
index 0045adf8688d74b41df0d7ad4417a7cef98bcb9d..6fc51cf52818dce8c8beefff5f96334264187774 100644 (file)
@@ -1,12 +1,12 @@
-{% extends "base.html" %}
+{% extends "user-base.html" %}
 
-{% block title %}{{ _("Calls") }}{% end block %}
+{% block title %}{{ account }} - {{ _("Calls") }}{% end block %}
 
 {% block main %}
+       <h1>{{ _("Calls") }}</h1>
+
        <div class="card">
                <div class="card-body">
-                       <h4>{{ _("Calls on %s") % locale.format_day(date) }}</h4>
-
                        <nav>
                                <ul class="pagination justify-content-center">
                                        {% set yesterday = date - datetime.timedelta(days=1) %}
index f0f9cdb2bc96da6128584d936c7936f86c1ccee7..3b8ced9f513959846f6c7e76fd14434db84a96d9 100644 (file)
@@ -2,14 +2,10 @@
 
 {% block title %}{{ _("Home") }}{% end block %}
 
-{% block main %}
-       {% module Channels(current_user) %}
-
-       <div class="card">
-               <div class="card-body">
-                       <h4>{{ _("Your Recent Calls") }}</h4>
+{% block content %}
+       <section>
+               <h1>{{ _("Hello, %s!") % current_user.first_name }}</h1>
+       </section>
 
-                       {% module CDR(current_user, limit=5) %}
-               </div>
-       </div>
+       {% module Channels(current_user) %}
 {% end block %}
index 5c072ea4f1a67e1c432400dd64ad5dde3c0fee1d..3504379dc73ed210279d60f13c7810aa1aca08db 100644 (file)
@@ -1,11 +1,11 @@
-{% extends "base.html" %}
+{% extends "user-base.html" %}
 
-{% block title %}{{ _("Change Password for %s") % account }}{% end block %}
+{% block title %}{{ account }} - {{ _("Change Password") }}{% end block %}
 
 {% block main %}
        <div class="row justify-content-center">
                <div class="col col-md-8">
-                       <h4 class="mb-4">{{ _("Change Password for %s") % account }}</h4>
+                       <h4 class="mb-4">{{ _("Change Password") }}</h4>
 
                        <form method="POST" action="">
                                {% raw xsrf_form_html() %}
index 0eb017b73ced45df9353e98a83cb1467a485ba26..4a73096495538171baadb838276598d57a4b045f 100644 (file)
@@ -2,14 +2,18 @@
 
 {% block title %}{{ _("Search Results for \"%s\"") % q }}{% end block %}
 
-{% block main %}
-       <h3 class="mb-4">{{ _("Search Results for \"%s\"") % q }}</h3>
+{% block content %}
+       <div class="row justify-content-center">
+               <div class="col col-md-8">
+                       <h1>{{ _("Search Results for \"%s\"") % q }}</h1>
 
-       {% if accounts %}
-               {% module AccountsList(accounts) %}
-       {% else %}
-               <p class="text-muted text-center my-5">
-                       {{ _("There are no results for \"%s\"") % q }}
-               </p>
-       {% end %}
+                       {% if accounts %}
+                               {% module AccountsList(accounts) %}
+                       {% else %}
+                               <p class="text-muted text-center my-5">
+                                       {{ _("There are no results for \"%s\"") % q }}
+                               </p>
+                       {% end %}
+               </div>
+       </div>
 {% end block %}
index f9fca69f9b354a3c92f1d7b82e8b2c9d0d575a9f..32c056cee94f3bd46a2b2164aef7edcdc3fb4313 100644 (file)
@@ -1,6 +1,6 @@
-{% extends "base.html" %}
+{% extends "user-base.html" %}
 
-{% block title %}{{ _("SIP Status of %s") % account }}{% end block %}
+{% block title %}{{ account }} - {{ _("SIP Status") }}{% end block %}
 
 {% block main %}
        <h1>{{ _("SIP Status") }}</h1>
diff --git a/src/templates/people/user-base.html b/src/templates/people/user-base.html
new file mode 100644 (file)
index 0000000..d9f20e6
--- /dev/null
@@ -0,0 +1,47 @@
+{% extends "base.html" %}
+
+{% block title %}{{ account }}{% end block %}
+
+{% block content %}
+       <div class="row">
+               {% block sidebar %}
+                       <div class="col-12 col-md-3">
+                               <img class="img-fluid rounded-circle my-2" src="{{ account.avatar_url(512) }}" alt="{{ account }}" />
+
+                               <h3 class="my-3">
+                                       <a class="text-white" href="/users/{{ account.uid }}">{{ account.name }}</a>
+                               </h3>
+
+                               {% if account.sip_id %}
+                                       <h5>
+                                               {{ account.sip_id }}
+
+                                               <small class="ml-2">
+                                                       {% module SIPStatus(account) %}
+                                               </small>
+                                       </h5>
+                               {% end %}
+
+                               {% if account.can_be_managed_by(current_user) %}
+                                       <div class="btn-toolbar mb-3">
+                                               <a class="btn btn-warning btn-sm btn-block" href="/users/{{ account.uid }}/edit">
+                                                       <span class="fas fa-edit mr-2"></span> {{ _("Edit") }}
+                                               </a>
+
+                                               <a class="btn btn-light btn-sm btn-block" href="/users/{{ account.uid }}/passwd">
+                                                       {{ _("Change Password") }}
+                                               </a>
+
+                                               <a class="btn btn-light btn-sm btn-block" href="/users/{{ account.uid }}/ssh-keys">
+                                                       <span class="fas fa-key mr-2"></span> {{ _("Manage SSH Keys") }}
+                                               </a>
+                                       </div>
+                               {% end %}
+                       </div>
+               {% end %}
+
+               <div class="col-12 col-md-8 offset-md-1">
+                       {% block main %}{% end block %}
+               </div>
+       </div>
+{% end block %}
index 57e4e28ff8b5cb8f53f10c28213d91f43a533d28..31c323cc51e33588fd23acb96e24d3e207504684 100644 (file)
@@ -1,98 +1,92 @@
-{% extends "base.html" %}
+{% extends "user-base.html" %}
 
-{% block title %}{{ _("Edit %s") % account }}{% end block %}
+{% block title %}{{ account }} - {{ _("Edit") }}{% end block %}
 
 {% block main %}
-       <div class="row justify-content-center">
-               <div class="col-6">
-                       <h4 class="mb-4">{{ _("Edit %s") % account }}</h4>
+       <h4 class="mb-4">{{ _("Edit") }}</h4>
 
-                       <form method="POST" action="" enctype="multipart/form-data">
-                               {% raw xsrf_form_html() %}
+       <form method="POST" action="" enctype="multipart/form-data">
+               {% raw xsrf_form_html() %}
 
-                               <div class="form-row mb-3">
-                                       <div class="col">
-                                               <label>{{ _("First Name") }}</label>
+               <div class="form-row mb-3">
+                       <div class="col">
+                               <label>{{ _("First Name") }}</label>
 
-                                               <input type="text" class="form-control" name="first_name"
-                                                       placeholder="{{ _("First Name") }}" value="{{ account.first_name }}" required>
-                                       </div>
+                               <input type="text" class="form-control" name="first_name"
+                                       placeholder="{{ _("First Name") }}" value="{{ account.first_name }}" required>
+                       </div>
 
-                                       <div class="col">
-                                               <label>{{ _("Last Name") }}</label>
+                       <div class="col">
+                               <label>{{ _("Last Name") }}</label>
 
-                                               <input type="text" class="form-control" name="last_name"
-                                                       placeholder="{{ _("Last Name") }}" value="{{ account.last_name }}" required>
-                                       </div>
-                               </div>
+                               <input type="text" class="form-control" name="last_name"
+                                       placeholder="{{ _("Last Name") }}" value="{{ account.last_name }}" required>
+                       </div>
+               </div>
+
+               <div class="form-group">
+                       <label>{{ _("Address") }}</label>
 
-                               <div class="form-group">
-                                       <label>{{ _("Address") }}</label>
+                       <textarea type="text" class="form-control" name="address" rows="5" required
+                               placeholder="{{ _("Address") }}">{{ "\n".join(account.address) }}</textarea>
 
-                                       <textarea type="text" class="form-control" name="address" rows="5" required
-                                               placeholder="{{ _("Address") }}">{{ "\n".join(account.address) }}</textarea>
+                       <small class="form-text text-muted">
+                               {{ _("Enter your full address including your country") }}
+                       </small>
+               </div>
 
-                                       <small class="form-text text-muted">
-                                               {{ _("Enter your full address including your country") }}
-                                       </small>
-                               </div>
+               <div class="form-group">
+                       <label>{{ _("Avatar") }}</label>
 
-                               <div class="form-group">
-                                       <label>{{ _("Avatar") }}</label>
+                       <input type="file" class="form-control-file" name="avatar">
 
-                                       <input type="file" class="form-control-file" name="avatar">
+                       <small class="form-text text-muted">
+                               {{ _("Upload a new avatar") }}
+                       </small>
+               </div>
 
-                                       <small class="form-text text-muted">
-                                               {{ _("Upload a new avatar") }}
-                                       </small>
-                               </div>
 
+               <fieldset>
+                       <legend>{{ _("Email") }}</legend>
 
-                               <fieldset>
-                                       <legend>{{ _("Email") }}</legend>
-       
-                                       <div class="form-group">
-                                               <label>{{ _("Forward Emails") }}</label>
+                       <div class="form-group">
+                               <label>{{ _("Forward Emails") }}</label>
 
-                                               <input type="mail" class="form-control" name="mail_routing_address"
-                                                       placeholder="{{ _("Email Address") }}" value="{{ account.mail_routing_address or "" }}">
+                               <input type="mail" class="form-control" name="mail_routing_address"
+                                       placeholder="{{ _("Email Address") }}" value="{{ account.mail_routing_address or "" }}">
 
-                                               <small class="form-text text-muted">
-                                                       {{ _("All emails will be forwarded to this email address") }}
-                                               </small>
-                                       </div>
-                               </fieldset>
+                               <small class="form-text text-muted">
+                                       {{ _("All emails will be forwarded to this email address") }}
+                               </small>
+                       </div>
+               </fieldset>
 
-                               <fieldset>
-                                       <legend>{{ _("Telephone") }}</legend>
+               <fieldset>
+                       <legend>{{ _("Telephone") }}</legend>
 
-                                       <div class="form-group">
-                                               <label>{{ _("Phone Numbers") }}</label>
+                       <div class="form-group">
+                               <label>{{ _("Phone Numbers") }}</label>
 
-                                               <textarea type="text" class="form-control" name="phone_numbers" rows="5"
-                                                       placeholder="{{ _("Phone Numbers") }}">{{ "\n".join((format_phone_number_to_e164(n) for n in account.phone_numbers)) }}</textarea>
+                               <textarea type="text" class="form-control" name="phone_numbers" rows="5"
+                                       placeholder="{{ _("Phone Numbers") }}">{{ "\n".join((format_phone_number_to_e164(n) for n in account.phone_numbers)) }}</textarea>
 
-                                               <small class="form-text text-muted">
-                                                       {{ _("Enter your landline and mobile phone numbers") }}
-                                               </small>
-                                       </div>
+                               <small class="form-text text-muted">
+                                       {{ _("Enter your landline and mobile phone numbers") }}
+                               </small>
+                       </div>
 
-                                       <div class="form-group">
-                                               <label>{{ _("Forward Calls") }}</label>
+                       <div class="form-group">
+                               <label>{{ _("Forward Calls") }}</label>
 
-                                               <input type="text" class="form-control" name="sip_routing_address"
-                                                       placeholder="{{ _("SIP URI or Phone Number") }}" value="{{ account.sip_routing_address or "" }}">
+                               <input type="text" class="form-control" name="sip_routing_address"
+                                       placeholder="{{ _("SIP URI or Phone Number") }}" value="{{ account.sip_routing_address or "" }}">
 
-                                               <small class="form-text text-muted">
-                                                       {{ _("All calls will be forwarded to this phone number or SIP URI") }}
-                                               </small>
-                                       </div>
-                               </fieldset>
+                               <small class="form-text text-muted">
+                                       {{ _("All calls will be forwarded to this phone number or SIP URI") }}
+                               </small>
+                       </div>
+               </fieldset>
 
-                               <input class="btn btn-primary btn-block" type="submit" value="{{ _("Save") }}">
-                       </form>
-               </div>
-       </div>
+               <input class="btn btn-primary btn-block" type="submit" value="{{ _("Save") }}">
+       </form>
 {% end block %}
-
-{% block right %}{% end block %}
index 0d61715a670eccab10f8c138f2f67b29263d5787..98c9ea2c8c81e5afa038a3b9df4188f5ed14fc31 100644 (file)
@@ -1,96 +1,54 @@
-{% extends "base.html" %}
-
-{% block title %}{{ account }}{% end block %}
+{% extends "user-base.html" %}
 
 {% block main %}
        {% import phonenumbers %}
 
-       <div class="row justify-content-center">
-               <div class="col col-md-6 col-lg-4 mb-5">
-                       <img class="img-fluid rounded-circle my-5" src="{{ account.avatar_url(512) }}" alt="{{ account }}" />
-
-                       <h3 class="text-center mb-0">{{ account }}</h3>
-
-                       {% if account.sip_id %}
-                               <h5 class="text-center mb-0">{{ account.sip_id }}</h5>
-                       {% end %}
-               </div>
-       </div>
+       <div class="card p-3">
+               <div class="card-body">
+                       <div class="row">
+                               <div class="col">
+                                       <a class="btn btn-dark btn-block" href="mailto:{{ account.email }}">
+                                               {{ _("Email %s") % account.first_name }}
+                                       </a>
+                               </div>
+                       </div>
 
-       <div class="row justify-content-center">
-               <div class="col col-md-8">
-                       <div class="card p-3">
-                               <div class="card-body">
-                                       <div class="row">
-                                               <div class="col">
-                                                       <a class="btn btn-dark btn-block" href="mailto:{{ account.email }}">
-                                                               {{ _("Email %s") % account.first_name }}
-                                                       </a>
-                                               </div>
+                       <div class="row">
+                               {% if account.address %}
+                                       <div class="col-md-6 mt-5">
+                                               <h6>{{ _("Postal Address") }}</h6>
+
+                                               <address>
+                                                       <strong>{{ account.name }}</strong>
+                                                       <br>
+                                                       {% for line in account.address %}
+                                                               {{ line }}<br>
+                                                       {% end %}
+                                               </address>
                                        </div>
-
-                                       <div class="row">
-                                               {% if account.address %}
-                                                       <div class="col-md-6 mt-5">
-                                                               <h6>{{ _("Postal Address") }}</h6>
-                       
-                                                               <address>
-                                                                       <strong>{{ account.name }}</strong>
-                                                                       <br>
-                                                                       {% for line in account.address %}
-                                                                               {{ line }}<br>
+                               {% end %}
+
+                               {% if account.phone_numbers %}
+                                       <div class="col-md-6 mt-5">
+                                               <h6>{{ _("Phone Numbers") }}</h6>
+
+                                               <ul class="list-unstyled">
+                                                       {% for number in account.phone_numbers %}
+                                                               <li>
+                                                                       {% if phonenumbers.number_type(number) == phonenumbers.PhoneNumberType.MOBILE %}
+                                                                               <span class="fa fa-mobile" title="{{ _("Mobile") }}"></span>
+                                                                       {% else %}
+                                                                               <span class="fa fa-phone"></span>
                                                                        {% end %}
-                                                               </address>
-                                                       </div>
-                                               {% end %}
-               
-                                               {% if account.phone_numbers %}
-                                                       <div class="col-md-6 mt-5">
-                                                               <h6>
-                                                                       <span class="mr-2">{{ _("SIP Status") }}</span>
 
-                                                                       {% module SIPStatus(account) %}
-                                                               </h6>
-
-                                                               <h6>{{ _("Phone Numbers") }}</h6>
-                       
-                                                               <ul class="list-unstyled">
-                                                                       {% for number in account.phone_numbers %}
-                                                                               <li>
-                                                                                       {% if phonenumbers.number_type(number) == phonenumbers.PhoneNumberType.MOBILE %}
-                                                                                               <span class="fa fa-mobile" title="{{ _("Mobile") }}"></span>
-                                                                                       {% else %}
-                                                                                               <span class="fa fa-phone"></span>
-                                                                                       {% end %}
-
-                                                                                       <a href="tel:{{ format_phone_number_to_e164(number) }}"
-                                                                                               title="{{ format_phone_number_location(number) }}">{{ format_phone_number(number) }}</a>
-                                                                               </li>
-                                                                       {% end %}
-                                                               </ul>
-                                                       </div>
-                                               {% end %}
+                                                                       <a href="tel:{{ format_phone_number_to_e164(number) }}"
+                                                                               title="{{ format_phone_number_location(number) }}">{{ format_phone_number(number) }}</a>
+                                                               </li>
+                                                       {% end %}
+                                               </ul>
                                        </div>
-
-                                       {% if account.can_be_managed_by(current_user) %}
-                                               <div class="btn-toolbar justify-content-center">
-                                                       <a class="btn btn-warning" href="/users/{{ account.uid }}/edit">
-                                                               <span class="fas fa-edit mr-2"></span> {{ _("Edit") }}
-                                                       </a>
-
-                                                       <a class="btn btn-light ml-2" href="/users/{{ account.uid }}/passwd">
-                                                               {{ _("Change Password") }}
-                                                       </a>
-
-                                                       <a class="btn btn-light ml-2" href="/users/{{ account.uid }}/ssh-keys">
-                                                               <span class="fas fa-key mr-2"></span> {{ _("Manage SSH Keys") }}
-                                                       </a>
-                                               </div>
-                                       {% end %}
-                               </div>
+                               {% end %}
                        </div>
                </div>
        </div>
 {% end block %}
-
-{% block right %}{% end block %}
index af6d92b03bc3ecfa950d2753c1e7d341cdf42c1f..914645e5ef51626f4fd6ab03d22b2ee21ddf690a 100644 (file)
@@ -2,8 +2,12 @@
 
 {% block title %}{{ _("Users") }}{% end block %}
 
-{% block main %}
-       <h3 class="mb-4">{{ _("Users") }}</h3>
+{% block content %}
+       <div class="row justify-content-center">
+               <div class="col col-md-8">
+                       <h1>{{ _("Users") }}</h1>
 
-       {% module AccountsList() %}
+                       {% module AccountsList() %}
+               </div>
+       </div>
 {% end block %}
index ad15abf4739dd0fb75fc3a7182880b79b1924741..4f97388415a6809401ca2c59a94b3aa1dade9c58 100644 (file)
@@ -74,13 +74,17 @@ class CallsHandler(base.BaseHandler):
 class CallHandler(base.BaseHandler):
        @tornado.web.authenticated
        def get(self, uid, uuid):
+               account = self.backend.accounts.get_by_uid(uid)
+               if not account:
+                       raise tornado.web.HTTPError(404, "Could not find account %s" % uid)
+
                call = self.backend.talk.freeswitch.get_call_by_uuid(uuid)
                if not call:
                        raise tornado.web.HTTPError(404, "Could not find call %s" % uuid)
 
                # XXX limit
 
-               self.render("people/call.html", call=call)
+               self.render("people/call.html", account=account, call=call)
 
 
 class SearchHandler(base.BaseHandler):