-<select name="{{ name }}" {% if id %}id="{{ id }}"{% end %}>
+<select class="form-control" name="{{ name }}" {% if id %}id="{{ id }}" aria-describedby="{{ id }}Help"{% end %}>
<option value="">- {{ _("Auto-select") }} -</option>
{% for code, name_en, name_loc in supported_locales %}
-<select name="{{ name }}" {% if id %}id="{{ id }}"{% end %}>
+<select class="form-control" name="{{ name }}" {% if id %}id="{{ id }}" aria-describedby="{{ id }}Help"{% end %}>
<option value="">- {{ _("Auto-select") }} -</option>
{% for tz in supported_timezones %}
-<table class="table table-striped table-hover">
- <tbody>
- {% for u in users %}
- <tr>
- <td>
- <img class="pull-right" src="{{ u.gravatar_icon(64) }}" alt="{{ u.realname }}">
+<div class="table-responsive">
+ <table class="table table-striped table-hover">
+ <tbody>
+ {% for u in users %}
+ <tr>
+ <td>
+ <img class="float-right img-fluid" src="{{ u.gravatar_icon(64) }}" alt="{{ u.realname }}">
- <a href="/user/{{ u.name }}">{{ u.realname }}</a>
- <br>
- {% if not u.name == u.realname %}
- <span class="muted">{{ u.name }}</span>
- {% end %}
- </td>
- </tr>
- {% end %}
- </tbody>
-</table>
+ <a href="/user/{{ u.name }}">{{ u.realname }}</a>
+ <br>
+ {% if not u.name == u.realname %}
+ <span class="text-muted">{{ u.name }}</span>
+ {% end %}
+ </td>
+ </tr>
+ {% end %}
+ </tbody>
+ </table>
+</div>
\ No newline at end of file
{% extends "base.html" %}
{% block body %}
- <h1>{{ _("Delete user %s") % user.realname }}</h1>
- <p>
- {% if current_user == user %}
- {{ _("Do you really want to delete your own account?") }}
- {{ _("You won't be able to login and use this service any more.") }}
- {% else %}
- {{ _("Do you really want to delete the user %s?") % user.realname }}
- {% end %}
- </p>
+ <div class="row justify-content-center">
+ <div class="col-12 col-sm-12 col-md-12 col-lg-8 col-xl-8">
+ <h2 style="word-wrap: break-word;">
+ {{ _("Delete user %s") % user.realname }}
+ </h2>
+ </div>
+ </div>
- <p class="buttons">
- <a href="/user/delete/{{ user.name }}?confirmed=1">{{ _("Delete %s") % user.realname }}</a>
- |
- <a href="/user/{{ user.name }}">{{ _("Back") }}</a>
- </p>
+ <div class="row justify-content-center">
+ <div class="col-12 col-sm-12 col-md-12 col-lg-8 col-xl-8">
+ <p>
+ {% if current_user == user %}
+ {{ _("Do you really want to delete your own account?") }}
+ {{ _("You won't be able to login and use this service any more.") }}
+ {% else %}
+ {{ _("Do you really want to delete the user %s?") % user.realname }}
+ {% end %}
+ </p>
+ </div>
+ </div>
+
+ <div class="row justify-content-center">
+ <div class="col-12 col-sm-12 col-md-12 col-lg-8 col-xl-8">
+ <div class="d-flex justify-content-end" style="width:100%">
+ <a class="btn btn-danger mb-2 mr-2" href="/user/delete/{{ user.name }}?confirmed=1">
+ {{ _("Delete %s") % user.realname }}
+ </a>
+ <a class="btn btn-primary mb-2" href="/user/{{ user.name }}">
+ {{ _("Back") }}
+ </a>
+ </div>
+ </div>
+ </div>
{% end block %}
-{% extends "base-form2.html" %}
+{% extends "base.html" %}
{% block title %}{{ _("Forgot password") }}{% end block %}
{% block body %}
- <ul class="breadcrumb">
- <li>
- <a href="/">{{ _("Home") }}</a>
- <span class="divider">/</span>
- </li>
- <li class="active">
- <a href="/password-recovery">{{ _("Forgot password") }}</a>
- </li>
- </ul>
-
- <div class="page-header">
- <h1>{{ _("Forgot password") }}</h1>
+
+<div class="row justify-content-center">
+ <div class="col-12 col-sm-12 col-md-12 col-lg-8 col-xl-8">
+ <nav aria-label="breadcrumb" role="navigation">
+ <ol class="breadcrumb">
+ <li class="breadcrumb-item"><a href="/">{{ _("Home") }}</a></li>
+ <li class="breadcrumb-item active"><a href="/password-recovery">{{ _("Forgot password") }}</a></li>
+ </ol>
+ </nav>
+ </div>
+ </div>
+
+ <div class="row justify-content-center">
+ <div class="col-12 col-sm-12 col-md-12 col-lg-8 col-xl-8">
+ <h2>
+ {{ _("Forgot password") }}
+ </h2>
+ </div>
</div>
- <div class="row">
- <div class="span6">
+ <div class="row justify-content-center">
+ <div class="col-12 col-sm-12 col-md-12 col-lg-8 col-xl-8">
<p>
{{ _("You have forgotten you password, eh? Shame on you.") }}
{{ _("However, we allow to re-activate your account.") }}
{{ _("After that, you will receive an email with intructions how to go on.") }}
</p>
<hr>
+ </div>
+ </div>
+
+ <div class="row justify-content-center">
+ <div class="col-12 col-sm-12 col-md-12 col-lg-8 col-xl-8">
<form class="form-horizontal" method="POST" action="">
{% raw xsrf_form_html() %}
<fieldset>
- <div class="control-group">
- <label class="control-label" for="name">{{ _("Your username or email address") }}</label>
- <div class="controls">
- <input type="text" class="input-xlarge" id="name" name="name" />
- </div>
- </div>
-
- <div class="form-actions">
- <button type="submit" class="btn btn-primary">{{ _("Submit") }}</button>
+ <div class="form-group">
+ <label for="name">{{ _("Your username or email address") }}</label>
+ <input type="text" class="form-control" id="name" name="name" aria-describedby="nameHelp" placeholder="{{ _("Username or email address") }}">
</div>
</fieldset>
+ <button type="submit" class="btn btn-primary">{{ _("Submit") }}</button>
</form>
</div>
</div>
{% block title %}{{ _("Impersonate user %s") % user.realname }}{% end block %}
{% block body %}
- <div class="page-header">
- <h1>{{ _("User impersonation") }}: {{ user.realname }}</h1>
+ <div class="row">
+ <div class="col-12 col-sm-12 col-md-9 col-lg-10 col-xl-10">
+ <h2 style="word-wrap: break-word;">
+ {{ _("User impersonation") }}: {{ user.realname }}
+ </h2>
+ </div>
</div>
<div class="row">
- <div class="span2 offset2">
- <img src="{{ user.gravatar_icon() }}" alt="{{ user.name }}" />
+ <div class="col-12 col-sm-12 col-md-4 col-lg-3 col-xl-3 mb-2">
+ <div class="d-flex justify-content-center justify-content-md-start">
+ <img class="img-fluid" src="{{ user.gravatar_icon(200) }}" alt="{{ user.name }}" />
+ </div>
</div>
-
- <div class="span6">
+ <div class="col-12 col-sm-12 col-md-8 col-lg-9 col-xl-9">
<p>
{{ _("When impersonating another user, every action you perform will be taking place as if you had logged in as the user whom will be impersonating.") }}
</p>
<h4 class="alert-heading">{{ _("Use with caution!") }}</h4>
{{ _("This is a very powerful feature. You should be very careful while using it.") }}
</div>
-
+ </div>
+ </div>
+ <div class="row justify-content-end">
+ <div class="col-12 col-sm-12 col-md-5 col-lg-4 col-xl-3">
<form method="POST" action="">
{% raw xsrf_form_html() %}
<input type="hidden" name="user" value="{{ user.name }}" />
- <input class="btn btn-danger pull-right" type="submit" value="{{ _("Impersonate %s") % user.realname }}" />
+ <button type="submit" class="btn btn-block btn-danger">{{ _("Impersonate %s") % user.realname }}</button>
</form>
</div>
</div>
{% block title %}{{ _("User list") }}{% end block %}
{% block body %}
- <ul class="breadcrumb">
- <li>
- <a href="/">{{ _("Home") }}</a>
- <span class="divider">/</span>
- </li>
- <li class="active">
- <a href="/users">{{ _("Users") }}</a>
- </li>
- </ul>
- <div class="page-header">
- <h2>{{ _("Users") }}</h2>
+ <div class="row">
+ <div class="col-12 col-sm-12 col-md-12 col-lg-12 col-xl-12">
+ <nav aria-label="breadcrumb" role="navigation">
+ <ol class="breadcrumb">
+ <li class="breadcrumb-item"><a href="/">{{ _("Home") }}</a></li>
+ <li class="breadcrumb-item active">
+ <a href="/users">
+ {{ _("Users") }}
+ </a>
+ </li>
+ </ol>
+ </nav>
+ </div>
+ </div>
+
+ <div class="row">
+ <div class="col-12 col-sm-12 col-md-12 col-lg-12 col-xl-12">
+ <h2 style="word-wrap: break-word;">
+ {{ _("Users") }}
+ </h2>
+ </div>
+ </div>
+
+ <div class="row">
+ <div class="col-12 col-sm-12 col-md-12 col-lg-12 col-xl-12">
+ {% module UsersTable(users) %}
+ </div>
</div>
- {% module UsersTable(users) %}
{% end block %}
{% block title %}{{ _("Builds by %s") % user.realname }}{% end block %}
{% block body %}
- <div class="page-header">
- <h2>{{ _("Builds by %s") % user.realname }}</h2>
+ <div class="row">
+ <div class="col-12 col-sm-12 col-md-12 col-lg-12 col-xl-12">
+ <h2 style="word-wrap: break-word;">
+ {{ _("Builds by %s") % user.realname }}
+ </h2>
+ </div>
</div>
- {% module BuildTable(builds) %}
+ <div class="row">
+ <div class="col-12 col-sm-12 col-md-12 col-lg-12 col-xl-12">
+ {% module BuildTable(builds) %}
+ </div>
+ </div>
{% end block %}
{% extends "base.html" %}
{% block body %}
- <h1>{{ _("Edit failed") }}</h1>
- <p>
- {{ _("We are sorry.") }}
- {{ _("The user profile cannot be saved.") }}
- </p>
- <ul>
- {% for msg in messages %}
- <li>{{ msg }}</li>
- {% end %}
- </ul>
+ <div class="row">
+ <div class="col-12 col-sm-12 col-md-12 col-lg-12 col-xl-12">
+ <div class="alert alert-danger" role="alert">
+ <h2 style="word-wrap: break-word;" class="alert-heading">
+ {{ _("Edit failed") }}
+ </h2>
+ <p>
+ {{ _("We are sorry.") }}
+ {{ _("The user profile cannot be saved.") }}
+ </p>
+
+ <ul>
+ {% for msg in messages %}
+ <li>{{ msg }}</li>
+ {% end %}
+ </ul>
+
+ <p>
+ {{ _("Use the back button on your web browser to go back to the previous page and correct your submission.") }}
+ </p>
+ </div>
+ </div>
+ </div>
- <p>
- {{ _("Use the back button on your web browser to go back to the previous page and correct your submission.") }}
- </p>
{% end %}
{% block title %}{{ _("Edit user profile: %s") % user.realname }}{% end block %}
{% block body %}
- <ul class="breadcrumb">
- <li>
- <a href="/">{{ _("Home") }}</a>
- <span class="divider">/</span>
- </li>
- <li>
- <a href="/users">{{ _("Users") }}</a>
- <span class="divider">/</span>
- </li>
- <li>
- <a href="/user/{{ user.name }}">{{ user.realname }}</a>
- <span class="divider">/</span>
- </li>
- <li class="active">
- <a href="/user/{{ user.name }}/edit">{{ _("Edit") }}</a>
- </li>
- </ul>
-
- <div class="page-header">
- <h2>
- {{ _("Edit user profile: %s") % user.realname }}
- </h2>
+
+ <div class="row">
+ <div class="col-12 col-sm-12 col-md-12 col-lg-12 col-xl-12">
+ <nav aria-label="breadcrumb" role="navigation">
+ <ol class="breadcrumb">
+ <li class="breadcrumb-item"><a href="/">{{ _("Home") }}</a></li>
+ <li class="breadcrumb-item">
+ <a href="/users">{{ _("Users") }}</a>
+ </li>
+ <li class="breadcrumb-item">
+ <a href="/user/{{ user.name }}">{{ user.realname }}</a>
+ </li>
+ <li class="breadcrumb-item active">
+ <a href="/user/{{ user.name }}/edit">{{ _("Edit") }}</a>
+ </li>
+ </ol>
+ </nav>
+ </div>
</div>
- <form class="form-horizontal" method="POST" action="">
- {% raw xsrf_form_html() %}
-
- <fieldset>
- <legend>{{ _("User Identity") }}</legend>
-
- <div class="control-group">
- <label class="control-label">{{ _("Username") }}</label>
- <div class="controls">
- <span class="input-xlarge uneditable-input">{{ user.name }}</span>
-
- <span class="help-inline">
- {{ _("Cannot be changed.") }}
- </span>
- </div>
- </div>
-
- <div class="control-group">
- <label class="control-label" for="inputRealname">{{ _("Real name") }}</label>
- <div class="controls">
- <input type="text" class="input-xlarge" id="inputRealname" name="realname" placeholder="{{ _("Real name") }}"
- value="{{ user.realname }}">
-
- <span class="help-block">
- {{ _("This field is optional, but we appreciate it very much if you type in your real name.") }}
- </span>
- </div>
- </div>
- </fieldset>
-
- <fieldset>
- <legend>{{ _("Email Adresses") }}</legend>
-
- <div class="control-group">
- <label class="control-label">{{ _("Primary email address") }}</label>
- <div class="controls">
- <select class="input-xlarge" name="primary_email_address">
- {% for email in user.emails %}
- <option {% if user.email == email %}selected{% end %}>{{ email }}</option>
- {% end %}
- </select>
-
- <span class="help-block">
- {{ _("This email address will be used for all messages to you.") }}
- </span>
- </div>
- </div>
-
- </fieldset>
-
- <fieldset>
- <legend>{{ _("Account security settings") }}</legend>
-
- <div class="control-group">
- <label class="control-label" for="inputPass1">{{ _("Password") }}</label>
- <div class="controls">
- <input type="password" class="input-xlarge" id="inputPass1" name="pass1" placeholder="{{ _("Password") }}">
-
- <span class="help-block">
- {{ _("The password is used to secure the login and must be at least 8 characters.") }}
- </span>
- </div>
- </div>
-
- <div class="control-group">
- <label class="control-label" for="inputPass2">{{ _("Confirm") }}</label>
- <div class="controls">
- <input type="password" class="input-xlarge" id="inputPass2" name="pass2" placeholder="{{ _("Confirm password") }}">
-
- <span class="help-block">
- {{ _("Leave the password fields empty to keep the current password.") }}
- </span>
- </div>
- </div>
- </fieldset>
-
- <fieldset>
- <legend>{{ _("Locale & timezone settings") }}</legend>
-
- <div class="control-group">
- <label class="control-label" for="inputLocale">{{ _("Preferred language") }}</label>
- <div class="controls">
- {% module SelectLocale(name="locale", id="inputLocale", preselect=user.locale) %}
-
- <span class="help-block">
- {{ _("Auto-detect will use the language transmitted by your browser.") }}
- </span>
- </div>
- </div>
-
- <div class="control-group">
- <label class="control-label" for="inputTimezone">{{ _("Timezone") }}</label>
- <div class="controls">
- {% module SelectTimezone(name="timezone", id="inputTimezone", preselect=user.timezone.zone) %}
-
- <span class="help-block">
- {{ _("Auto-detect will use the timezone transmitted by your browser.") }}
- </span>
- </div>
- </div>
- </fieldset>
-
- <div class="form-actions">
- <button type="submit" class="btn btn-primary">{{ _("Save") }}</button>
- <a class="btn" href="/user/{{ user.name }}">{{ _("Cancel") }}</a>
+ <div class="row">
+ <div class="col-12 col-sm-12 col-md-12 col-lg-12 col-xl-12">
+ <h2 style="word-wrap: break-word;">
+ {{ _("Edit user profile: %s") % user.realname }}
+ </h2>
</div>
- </form>
+ </div>
+ <div class="row">
+ <div class="col-12 col-sm-12 col-md-12 col-lg-12 col-xl-12">
+ <form method="POST" action="">
+ {% raw xsrf_form_html() %}
+
+ <fieldset>
+ <legend>{{ _("User Identity") }}</legend>
+
+ <div class="form-group">
+ <label for="username">{{ _("Username") }}</label>
+ <input type="text" class="form-control" id="username" name="username"
+ aria-describedby="usernameHelp" value="{{ user.name }}" disabled>
+ <small id="usernameHelp" class="form-text text-muted">
+ {{ _("Cannot be changed.") }}
+ </small>
+ </div>
+
+ <div class="form-group">
+ <label for="inputRealname">{{ _("Real name") }}</label>
+ <input type="text" class="form-control" id="inputRealname" name="realname" aria-describedby="realnameHelp"
+ placeholder="{{ _("Real name") }}" value="{{ user.realname }}">
+ <small id="inputRealnameHelp" class="form-text text-muted">
+ {{ _("This field is optional, but we appreciate it very much if you type in your real name.") }}
+ </small>
+ </div>
+ </fieldset>
+
+ <fieldset>
+ <legend>{{ _("Email Adresses") }}</legend>
+
+ <div class="form-group">
+ <label for="primary_email_address">{{ _("Primary email address") }}</label>
+ <select class="form-control" id="primary_email_address" name="primary_email_address" aria-describedby="primary_email_addressHelp">
+ {% for email in user.emails %}
+ <option {% if user.email == email %}selected{% end %}>{{ email }}</option>
+ {% end %}
+ </select>
+ <small id="primary_email_addressHelp" class="form-text text-muted">
+ {{ _("This email address will be used for all messages to you.") }}
+ </small>
+ </div>
+ </fieldset>
+
+ <fieldset>
+ <legend>{{ _("Account security settings") }}</legend>
+
+ <div class="form-group">
+ <label for="inputPass1">{{ _("Password") }}</label>
+ <input type="password" class="form-control"
+ id="inputPass1" name="pass1" aria-describedby="pass1Help" placeholder="{{ _("Password") }}">
+ <small id="inputPass1Help" class="form-text text-muted">
+ {{ _("The password is used to secure the login and must be at least 8 characters.") }}
+ </small>
+ </div>
+
+ <div class="form-group">
+ <label for="inputPass2">{{ _("Confirm Password") }}</label>
+ <input type="password" class="form-control"
+ id="inputPass2" name="pass2" aria-describedby="inputPass2Help" placeholder="{{ _("Confirm Password") }}">
+ <small id="inputPass2Help" class="form-text text-muted">
+ {{ _("Leave the password fields empty to keep the current password.") }}
+ </small>
+ </div>
+ </fieldset>
+
+ <fieldset>
+ <legend>{{ _("Locale & timezone settings") }}</legend>
+
+ <div class="form-group">
+ <label for="inputLocale">{{ _("Preferred language") }}</label>
+ {% module SelectLocale(name="locale", id="inputLocale", preselect=user.locale) %}
+ <small id="inputLocaleHelp" class="form-text text-muted">
+ {{ _("Auto-detect will use the language transmitted by your browser.") }}
+ </small>
+ </div>
+
+ <div class="form-group">
+ <label for="inputTimezone">{{ _("Timezone") }}</label>
+ {% module SelectTimezone(name="timezone", id="inputTimezone", preselect=user.timezone.zone) %}
+ <small id="inputTimezoneHelp" class="form-text text-muted">
+ {{ _("Auto-detect will use the timezone transmitted by your browser.") }}
+ </small>
+ </div>
+ </fieldset>
+
+ <button type="submit" class="btn btn-primary">{{ _("Save") }}</button>
+ <a class="btn btn-light" href="/user/{{ user.name }}">{{ _("Cancel") }}</a>
+ </form>
{% end block %}
{% extends "base.html" %}
{% block body %}
- <h1>{{ _("Edit successful") }}</h1>
- <p>
- {{ _("The user profile was successfully altered.") }}
- {{ _("But as you have changed the email address, you need to re-activate the account.") }}
- {{ _("Have a look at you mailbox - you already do know what to do.") }}
- </p>
+ <div class="row align-items-center justify-content-center">
+ <div class="col-12 col-sm-12 col-md-12 col-lg-8 col-xl-8">
+ <div class="alert alert-success" role="alert">
+ <h2 style="word-wrap: break-word;" class="alert-heading">
+ {{ _("Edit successful") }}
+ </h2>
+ <p>
+ {{ _("The user profile was successfully altered.") }}
+ {{ _("But as you have changed the email address, you need to re-activate the account.") }}
+ {{ _("Have a look at you mailbox - you already do know what to do.") }}
+ </p>
+ </div>
+ </div>
+ </div>
+
{% end %}
{% block title %}{{ _("Password changed") }}{% end block %}
{% block body %}
- <ul class="breadcrumb">
- <li>
- <a href="/">{{ _("Home") }}</a>
- <span class="divider">/</span>
- </li>
- <li>
- <a href="/users">{{ _("Users") }}</a>
- <span class="divider">/</span>
- </li>
- <li>
- <a href="/user/{{ user.name }}">{{ user.realname }}</a>
- <span class="divider">/</span>
- </li>
- <li>
- <a href="/user/{{ user.name }}/passwd">{{ _("Change password") }}</a>
- <span class="divider">/</span>
- </li>
- <li class="active">
- {{ _("Done!") }}
- </li>
- </ul>
- <div class="page-header">
- <h1>{{ _("Password changed") }}</h1>
+<div class="row">
+ <div class="col-12 col-sm-12 col-md-12 col-lg-12 col-xl-12">
+ <nav aria-label="breadcrumb" role="navigation">
+ <ol class="breadcrumb">
+ <li class="breadcrumb-item"><a href="/">{{ _("Home") }}</a></li>
+ <li class="breadcrumb-item">
+ <a href="/users">{{ _("Users") }}</a>
+ </li>
+ <li class="breadcrumb-item">
+ <a href="/user/{{ user.name }}">{{ user.realname }}</a>
+ </li>
+ <li class="breadcrumb-item">
+ <a href="/user/{{ user.name }}/passwd">{{ _("Change password") }}</a>
+ </li>
+ <li class="breadcrumb-item">
+ {{ _("Done!") }}
+ </li>
+ </ol>
+ </nav>
+ </div>
</div>
<div class="row">
- <div class="span6 offset3">
- <div class="well">
+ <div class="col-12 col-sm-12 col-md-12 col-lg-12 col-xl-12">
+ <div class="alert alert-success" role="alert">
+ <h2 style="word-wrap: break-word;" class="alert-heading">
+ {{ _("Password changed") }}
+ </h2>
{% if current_user == user %}
<p>
{{ _("Your password has successfully been changed.") }}
{{ _("The password of %s has successfully been changed.") % user.realname }}
</p>
{% end %}
-
- <div class="pull-right">
- <a class="btn btn-primary" href="/user/{{ user.name }}">{{ _("Ok") }}</a>
- </div>
</div>
</div>
</div>
+
+ <div class="row justify-content-end">
+ <div class="col-12 col-sm-12 col-md-5 col-lg-4 col-xl-3">
+ <a class="btn btn-block btn-success" href="/user/{{ user.name }}">{{ _("Ok") }}</a>
+ </div>
+ </div>
+
{% end %}
{% block title %}{{ _("Change password") }}{% end block %}
{% block body %}
- <ul class="breadcrumb">
- <li>
- <a href="/">{{ _("Home") }}</a>
- <span class="divider">/</span>
- </li>
- <li>
- <a href="/users">{{ _("Users") }}</a>
- <span class="divider">/</span>
- </li>
- <li>
- <a href="/user/{{ user.name }}">{{ user.realname }}</a>
- <span class="divider">/</span>
- </li>
- <li class="active">
- <a href="/user/{{ user.name }}/passwd">{{ _("Change password") }}</a>
- </li>
- </ul>
- <div class="page-header">
- <h1>{{ _("Change password") }}</h1>
+ <div class="row">
+ <div class="col-12 col-sm-12 col-md-12 col-lg-12 col-xl-12">
+ <nav aria-label="breadcrumb" role="navigation">
+ <ol class="breadcrumb">
+ <li class="breadcrumb-item"><a href="/">{{ _("Home") }}</a></li>
+ <li class="breadcrumb-item">
+ <a href="/users">{{ _("Users") }}</a>
+ </li>
+ <li class="breadcrumb-item">
+ <a href="/user/{{ user.name }}">{{ user.realname }}</a>
+ </li>
+ <li class="breadcrumb-item active">
+ <a href="/user/{{ user.name }}/passwd">{{ _("Change password") }}</a>
+ </li>
+ </ol>
+ </nav>
+ </div>
+ </div>
+
+ <div class="row">
+ <div class="col-12 col-sm-12 col-md-12 col-lg-12 col-xl-12">
+ <h2 style="word-wrap: break-word;">
+ {{ _("Change password") }}
+ </h2>
+ </div>
</div>
+ {% if error_msg %}
+ <div class="row">
+ <div class="col-12 col-sm-12 col-md-12 col-lg-12 col-xl-12">
+ <div class="alert alert-danger alert-dismissible fade show" role="alert">
+ <h3 style="word-wrap: break-word;" class="alert-heading">
+ {{ _("Oops!") }}
+ </h3>
+ {{ error_msg }}
+ <button type="button" class="close" data-dismiss="alert" aria-label="Close">
+ <span aria-hidden="true">×</span>
+ </button>
+ </div>
+ </div>
+ </div>
+ {% end %}
+
<div class="row">
- <div class="span6 offset3">
+ <div class="col-12 col-sm-12 col-md-12 col-lg-12 col-xl-12">
{% if user == current_user %}
- <p>
+ <p>
{{ _("You are going to change your password.") }}
</p>
<p>
</div>
<div class="row">
- <div class="span6 offset3">
- {% if error_msg %}
- <div class="alert alert-block alert-important">
- <a class="close" data-dismiss="alert">×</a>
- <strong>{{ _("Oops!") }}</strong> {{ error_msg }}
- </div>
- {% end %}
-
- <form class="form-horizontal" method="POST" action="">
+ <div class="col-12 col-sm-12 col-md-12 col-lg-12 col-xl-12">
+ <form method="POST" action="">
{% raw xsrf_form_html() %}
<fieldset>
{% if user == current_user %}
- <div class="control-group">
- <label class="control-label">{{ _("Old password") }}</label>
- <div class="controls">
- <input type="password" class="input-xlarge" name="pass0" />
-
- <p class="help-block">
- {{ _("Please provide your old password.") }}
- </p>
- </div>
+ <div class="form-group">
+ <label for="pass0">{{ _("Old password") }}</label>
+ <input type="password" class="form-control"
+ id="pass0" name="pass0" aria-describedby="pass0Help" placeholder="{{ _("Old password") }}">
+ <small id="pass0Help" class="form-text text-muted">
+ {{ _("Please provide your old password.") }}
+ </small>
</div>
{% end %}
- <div class="control-group">
- <label class="control-label">{{ _("New password") }}</label>
- <div class="controls">
- <input type="password" class="input-xlarge" name="pass1" />
-
- <p class="help-block">
- {{ _("Choose a new password. Make sure that it is as strong as possible.") }}
- </p>
- </div>
+ <div class="form-group">
+ <label for="pass1">{{ _("New password") }}</label>
+ <input type="password" class="form-control"
+ id="pass1" name="pass1" aria-describedby="pass1Help" placeholder="{{ _("New password") }}">
+ <small id="pass1Help" class="form-text text-muted">
+ {{ _("Choose a new password. Make sure that it is as strong as possible.") }}
+ </small>
</div>
- <div class="control-group">
- <label class="control-label">{{ _("Confirm") }}</label>
- <div class="controls">
- <input type="password" class="input-xlarge" name="pass2" />
-
- <p class="help-block">
- {{ _("Confirm the new password.") }}
- </p>
- </div>
+ <div class="form-group">
+ <label for="pass2">{{ _("Confirm new password") }}</label>
+ <input type="password" class="form-control"
+ id="pass2" name="pass2" aria-describedby="pass2Help" placeholder="{{ _("Confirm new password") }}">
+ <small id="pass2Help" class="form-text text-muted">
+ {{ _("Confirm the new password.") }}
+ </small>
</div>
- <div class="form-actions">
- <button type="submit" class="btn btn-primary">{{ _("Change password") }}</button>
- <a class="btn" href="/user/{{ user.name }}">{{ _("Cancel") }}</a>
- </div>
+ <button type="submit" class="btn btn-primary">{{ _("Change password") }}</button>
+ <a class="btn btn-light" href="/user/{{ user.name }}">{{ _("Cancel") }}</a>
+
</fieldset>
</form>
</div>
{% block title %}{{ user.realname }}{% end block %}
{% block body %}
- <ul class="breadcrumb">
- <li>
- <a href="/">{{ _("Home") }}</a>
- <span class="divider">/</span>
- </li>
- <li>
- <a href="/users">{{ _("Users") }}</a>
- <span class="divider">/</span>
- </li>
- <li class="active">
- <a href="/user/{{ user.name }}">{{ user.realname }}</a>
- </li>
- </ul>
-
- <ul class="nav nav-pills pull-right">
- <li>
- <a href="/builds/comments/{{ user.name }}">
- {{ _("View comments") }}
- </a>
- </li>
- </ul>
+ <div class="row">
+ <div class="col-12 col-sm-12 col-md-12 col-lg-12 col-xl-12">
+ <nav aria-label="breadcrumb" role="navigation">
+ <ol class="breadcrumb">
+ <li class="breadcrumb-item"><a href="/">{{ _("Home") }}</a></li>
+ <li class="breadcrumb-item">
+ <a href="/users">{{ _("Users") }}</a>
+ </li>
+ <li class="breadcrumb-item active">
+ <a href="/user/{{ user.name }}">{{ user.realname }}</a>
+ </li>
- <div class="page-header">
- <h2>{{ _("User") }}: {{ user.realname }}</h2>
+ </ol>
+ </nav>
+ </div>
</div>
<div class="row">
- <div class="span6 offset2">
- <table class="table">
- <tbody>
- <tr>
- <td>{{ _("Username") }}</td>
- <td>{{ user.name }}</td>
- </tr>
- <tr>
- <td>{{ _("Email") }}</td>
- <td>
- <a href="mailto:{{ user.email }}">{{ user.email }}</a>
- </td>
- </tr>
- <tr>
- <td>{{ _("State") }}</td>
- <td>
- {% if user.is_admin() %}
- {{ _("Admin") }}
- {% else %}
- {{ _("User") }}
- {% end %}
- </td>
- </tr>
-
+ <div class="col-12 col-sm-12 col-md-9 col-lg-10 col-xl-10">
+ <h2 style="word-wrap: break-word;">
+ {{ _("User") }}: {{ user.realname }}
+ </h2>
+ </div>
+ <div class="col-12 col-sm-12 col-md-3 col-lg-2 col-xl-2 mb-2">
+ <div class="dropdown">
+ <button class="btn btn-block btn-light dropdown-toggle mb-2" type="button" id="dropdownMenuButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
+ {{ _("Actions") }}
+ </button>
+ <div class="dropdown-menu dropdown-menu-right" aria-labelledby="dropdownMenuButton">
+ <a class="dropdown-item" href="/builds/comments/{{ user.name }}">
+ {{ _("View comments") }}
+ </a>
{% if current_user == user or current_user.is_admin() %}
+ <a class="dropdown-item" href="/user/{{ user.name }}/edit">
+ <i class="icon-edit"></i>
+ {{ _("Edit profile") }}
+ </a>
+ <a class="dropdown-item" href="/user/{{ user.name }}/passwd">
+ <i class="icon-lock"></i>
+ {{ _("Change password") }}
+ </a>
+ <div class="dropdown-divider"></div>
+ <a class="dropdown-item" href="/user/{{ user.name }}/delete">
+ <i class="icon-trash"></i>
+ {{ _("Delete account") }}
+ </a>
+ {% if not current_user == user and current_user.is_admin() %}
+ <div class="dropdown-divider"></div>
+ <a class="dropdown-item" href="/user/{{ user.name }}/impersonate">{{ _("Impersonate User") }}</a>
+ {% end %}
+ {% end %}
+ </div>
+ </div>
+ </div>
+ </div>
+
+ <div class="row">
+ <div class="col-12 col-sm-12 col-md-4 col-lg-3 col-xl-3 mb-2">
+ <div class="d-flex justify-content-center justify-content-md-start">
+ <img class="img-fluid" src="{{ user.gravatar_icon(200) }}" alt="{{ user.name }}" />
+ </div>
+ </div>
+ <div class="col-12 col-sm-12 col-md-8 col-lg-9 col-xl-9">
+ <div class="table-responsive mb-2">
+ <table class="table">
+ <tbody>
+ <tr>
+ <td>{{ _("Username") }}</td>
+ <td>{{ user.name }}</td>
+ </tr>
<tr>
- <td>{{ _("Registered") }}</td>
+ <td>{{ _("Email") }}</td>
<td>
- {{ format_date(user.registered_at, full_format=True) }}
+ <a href="mailto:{{ user.email }}">{{ user.email }}</a>
</td>
</tr>
- {% end %}
-
- {% if current_user == user or current_user.is_admin() %}
<tr>
- <td colspan="2">
- <div class="btn-group pull-right">
- <a class="btn dropdown-toggle" data-toggle="dropdown" href="#">
- {{ _("Action") }}
- <span class="caret"></span>
- </a>
- <ul class="dropdown-menu">
- <li>
- <a href="/user/{{ user.name }}/edit">
- <i class="icon-edit"></i>
- {{ _("Edit profile") }}
- </a>
- </li>
- <li>
- <a href="/user/{{ user.name }}/passwd">
- <i class="icon-lock"></i>
- {{ _("Change password") }}
- </a>
- </li>
-
- <li class="divider"></li>
- <li>
- <a href="/user/{{ user.name }}/delete">
- <i class="icon-trash"></i>
- {{ _("Delete account") }}
- </a>
- </li>
-
- {% if not current_user == user and current_user.is_admin() %}
- <li class="divider"></li>
- <li>
- <a href="/user/{{ user.name }}/impersonate">{{ _("Impersonate User") }}</a>
- </li>
- {% end %}
- </ul>
- </div>
+ <td>{{ _("State") }}</td>
+ <td>
+ {% if user.is_admin() %}
+ {{ _("Admin") }}
+ {% else %}
+ {{ _("User") }}
+ {% end %}
</td>
</tr>
- {% end %}
- </tbody>
- </table>
- </div>
- <div class="span4">
- <img src="{{ user.gravatar_icon(200) }}" alt="{{ user.name }}" />
+ {% if current_user == user or current_user.is_admin() %}
+ <tr>
+ <td>{{ _("Registered") }}</td>
+ <td>
+ {{ format_date(user.registered_at, full_format=True) }}
+ </td>
+ </tr>
+ {% end %}
+ </tbody>
+ </table>
+ </div>
</div>
</div>
+
{% if current_user == user or current_user.is_admin() %}
<div class="row">
- <div class="span6 offset2">
+ <div class="col-12 col-sm-12 col-md-12 col-lg-12 col-xl-12">
<h3>{{ _("Permissions") }}</h3>
-
- {% if user.is_admin() %}
+ </div>
+ </div>
+ <div class="row">
+ <div class="col-12 col-sm-12 col-md-12 col-lg-12 col-xl-12">
+ {% if user.is_admin() %}
<p>
{{ _("This user has administration rights.") }}
<i class="icon-star"></i>
</p>
{% else %}
- <table class="table table-striped table-hover">
- <tr>
- <td>
- {{ _("User is allowed to create scratch builds?") }}
- </td>
- <td>
- {% if user.has_perm("create_scratch_builds") %}
- {{ _("Yes") }}
- {% else %}
- {{ _("No") }}
- {% end %}
- </td>
- </tr>
- </table>
+ <div class="table-responsive">
+ <table class="table table-striped table-hover">
+ <tr>
+ <td>
+ {{ _("User is allowed to create scratch builds?") }}
+ </td>
+ <td>
+ {% if user.has_perm("create_scratch_builds") %}
+ {{ _("Yes") }}
+ {% else %}
+ {{ _("No") }}
+ {% end %}
+ </td>
+ </tr>
+ </table>
+ </div>
{% end %}
</div>
</div>
-{% extends "base-form2.html" %}
+{% extends "base.html" %}
{% block title %}{{ _("Requested password recovery") }}{% end block %}
{% block body %}
- <div class="page-header">
- <h1>{{ _("Password recovery requested") }}</h1>
+ <div class="row">
+ <div class="col-12 col-sm-12 col-md-12 col-lg-12 col-xl-12">
+ <h2 style="word-wrap: break-word;">
+ {{ _("Password recovery requested") }}
+ </h2>
+ </div>
</div>
<div class="row">
- <div class="span6">
+ <div class="col-12 col-sm-12 col-md-12 col-lg-12 col-xl-12">
<p>
{{ _("An email with instructions how to recover your password was send to your primary email address.") }}
</p>
- <hr>
</div>
</div>
{% end %}
-{% extends "base-form2.html" %}
+{% extends "base.html" %}
{% block title %}{{ _("Password reset failed") }}{% end block %}
{% block body %}
- <div class="page-header">
- <h1>{{ _("Password reset failed") }}</h1>
- </div>
-
- <div class="row">
- <div class="span6">
+<div class="row">
+ <div class="col-12 col-sm-12 col-md-12 col-lg-12 col-xl-12">
+ <div class="alert alert-danger" role="alert">
+ <h2 style="word-wrap: break-word;" class="alert-heading">
+ {{ _("Password reset failed") }}
+ </h2>
<p>
{{ message }}
</p>
- <hr>
</div>
</div>
+</div>
{% end %}
-{% extends "base-form2.html" %}
+{% extends "base.html" %}
{% block title %}{{ _("Password reset succeeded") }}{% end block %}
{% block body %}
- <div class="page-header">
- <h1>{{ _("Password reset succeeded") }}</h1>
- </div>
-
- <div class="row">
- <div class="span6">
+<div class="row">
+ <div class="col-12 col-sm-12 col-md-12 col-lg-12 col-xl-12">
+ <div class="alert alert-success" role="alert">
+ <h2 style="word-wrap: break-word;" class="alert-heading">
+ {{ _("Password reset succeeded") }}
+ </h2>
<p>
{{ _("Successfully reset your password") }}
</p>
- <hr>
</div>
</div>
+</div>
+
{% end %}
{% block title %}{{ _("Register a new account") }}{% end block %}
{% block body %}
- <div class="page-header">
- <h2>
- {{ _("Reset password") }}
- </h2>
+ <div class="row">
+ <div class="col-12 col-sm-12 col-md-12 col-lg-12 col-xl-12">
+ <h2 style="word-wrap: break-word;">
+ {{ _("Reset password") }}
+ </h2>
+ </div>
</div>
- <form class="form-horizontal" method="POST" action="">
+ <form method="POST" action="">
{% raw xsrf_form_html() %}
<input type="hidden" name="code" value="{{ user.password_recovery_code }}">
<fieldset>
- <div class="control-group">
- <label class="control-label" for="password1">{{ _("Password") }}</label>
- <div class="controls">
- <input type="password" class="input-xlarge" id="password1" name="password1">
- </div>
+ <div class="form-group">
+ <label for="password1">{{ _("Password") }}</label>
+ <input type="password" class="form-control"
+ id="password1" name="password1" aria-describedby="password1Help" placeholder="{{ _("Password") }}">
+ <small id="password1Help" class="form-text text-muted">
+ {{ _("Choose a new password. Make sure that it is as strong as possible.") }}
+ </small>
</div>
- <div class="control-group">
- <label class="control-label" for="password2">{{ _("Confirm password") }}</label>
- <div class="controls">
- <input type="password" class="input-xlarge" id="password2" name="password2">
- </div>
+ <div class="form-group">
+ <label for="password2">{{ _("Confirm password") }}</label>
+ <input type="password" class="form-control"
+ id="password2" name="password2" aria-describedby="password2Help" placeholder="{{ _("Confirm password") }}">
+ <small id="password2Help" class="form-text text-muted">
+ {{ _("Confirm the new password.") }}
+ </small>
</div>
- </fieldset>
- <div class="form-actions">
- <button type="submit" class="btn btn-primary">{{ _("Reset password") }}</button>
- </div>
+ <button type="submit" class="btn btn-primary">{{ _("Reset password") }}</button>
</form>
{% end block %}