1
<!-- Copyright 2010 Canonical Ltd. This software is licensed under the
2
GNU Affero General Public License version 3 (see the file LICENSE). -->
4
{% extends "base.html" %}
8
{% blocktrans %}{{ account_displayname }}'s details{% endblocktrans %}
11
{% block extra_header %}
12
<script type="text/javascript" src="/assets/identityprovider/passwordhint.js"></script>
13
<script language="JavaScript" type="text/javascript">
14
function addLoadEvent(func) {
15
// add func to the onload event
16
var oldonload = window.onload;
17
if (typeof window.onload != "function") {
20
window.onload = function() {
29
function disable_autocomplete() {
30
// disable autocomplete without invalidating html markup
31
if (document.getElementsByTagName) {
32
var inputElements = document.getElementsByTagName("input");
33
for (i=0; inputElements[i]; i++) {
34
if (inputElements[i].className && (inputElements[i].className.indexOf("disableAutoComplete") != -1)) {
35
// disable autocomplete
36
inputElements[i].setAttribute("autocomplete", "off");
37
// remove any already autocompleted value
38
inputElements[i].value = "";
39
// remove any styling already applied by the previos
41
inputElements[i].focus();
42
inputElements[i].blur();
43
}//if current input element has the disableAutoComplete class set.
44
}//loop thru input elements
45
}//basic DOM-happiness-check
48
addLoadEvent(disable_autocomplete);
53
<h2 class="main">{% trans "Your account" %}</h2>
55
<form action="+edit" method="post" class="shortfields">
57
<p{% if form.displayname.errors %} class="haserrors"{% endif %}>
58
<label class="formLabel"
59
for="id_displayname">{% trans "Full name" %}</label>
60
{{ form.displayname }}
61
{% if form.displayname.errors %}
63
{{ form.displayname.errors|first }}
67
<p style="margin-bottom:6px"
68
{% if form.preferred_email.errors %} class="haserrors"{% endif %}>
69
<label class="formLabel tooltip"
70
for="id_preferred_email">{% trans "Preferred email" %}
71
<span class="description tooltip">? <span class="tooltip-content">
72
{% blocktrans %}This email address is passed on to other
73
sites when requested as part of the login process.{% endblocktrans %}
75
<span class="tooltip-tail"> </span></span></label>
76
{{ form.preferred_email }}
77
{% if form.preferred_email.errors %}
79
{{ form.preferred_email.errors|first }}
84
<p style="margin-top:0">
85
<a href="./+new-email">{% trans "Add another email" %}</a></p>
87
{% if unverified_emails %}
88
<label class="formLabel">{% trans "Unverified emails" %}</label>
89
<ul id="unverified-emails">
90
{% for email in unverified_emails %}
91
<li>{{ email }} {%if not readonly %}
92
<a href="./+verify-email?id={{ email.id }}">{% trans "Verify" %}</a>
93
<a href="./+remove-email?id={{ email.id }}">
94
<img src="/assets/identityprovider/trash-icon.gif" width="14" height="14">
102
{% if not readonly %}
104
<p{% if form.newpassword.errors or form.non_field_errors %} class="haserrors"{% endif %}>
105
<label class="formLabel"
106
for="id_newpassword">{% trans "Choose password" %}</label>
107
{{ form.newpassword }}
108
{% if form.newpassword.errors %}
110
{{ form.newpassword.errors|first }}
114
<p{% if form.newpasswordconfirm.errors or form.non_field_errors %} class="haserrors"{% endif %}>
115
<label class="formLabel"
116
for="id_newpasswordconfirm">{% trans "Retype password" %}</label>
117
{{ form.newpasswordconfirm }}
118
{% if form.newpasswordconfirm.errors %}
120
{{ form.newpasswordconfirm.errors|first }}
123
{% if not form.newpassword.errors %}
125
{% blocktrans %}Password must be at least 8 characters long,
126
and must contain at least one number and an upper case letter.{% endblocktrans %}
129
{% if form.non_field_errors %}
130
<span class="error">{{ form.non_field_errors|first }}</span>
135
<p class="actions" style="clear:both">
136
{% if not readonly %}
137
<button type="submit" class="btn" name="update"><span><span>{% trans "Update" %}</span></span></button>
141
<a href=".">{% trans "exit without updating" %}</a>
146
{% include "widgets/last_auth_sites.html" %}
148
<script type="text/javascript">
149
togglePasswordPolicy(false);