aboutsummaryrefslogtreecommitdiffstats
path: root/root
diff options
context:
space:
mode:
authorRomain d'Alverny <rda@mageia.org>2010-11-26 16:42:58 +0000
committerRomain d'Alverny <rda@mageia.org>2010-11-26 16:42:58 +0000
commit5ff32b9091bb0f716a6321dfdb323992eb8f7637 (patch)
treed232bd40ffeb0140eed30a996c4d99f68ba743e0 /root
parent25d21fb06408f5d9a13bdd396e9174e2c60ab75a (diff)
parent8c8dda54492aa15dc238fc4d192bfb456481f949 (diff)
downloadidentity-5ff32b9091bb0f716a6321dfdb323992eb8f7637.tar
identity-5ff32b9091bb0f716a6321dfdb323992eb8f7637.tar.gz
identity-5ff32b9091bb0f716a6321dfdb323992eb8f7637.tar.bz2
identity-5ff32b9091bb0f716a6321dfdb323992eb8f7637.tar.xz
identity-5ff32b9091bb0f716a6321dfdb323992eb8f7637.zip
Merge branch 'stable' into master
Conflicts: root/register/index.tt root/template/html root/ttsite.css Additional Differences During Subversion Conversion: catdap.yml lib/CatDap.pm
Diffstat (limited to 'root')
-rw-r--r--root/admin/account.tt86
-rw-r--r--root/admin/account_addoc.tt53
-rw-r--r--root/admin/account_group.tt45
-rw-r--r--root/admin/account_modify.tt134
-rw-r--r--root/admin/account_promote.tt68
-rw-r--r--root/admin/group_modify.tt45
-rw-r--r--root/admin/index.tt2
-rw-r--r--root/email/activation.tt2
-rw-r--r--root/email/admin/password.tt2
-rw-r--r--root/index.tt36
-rw-r--r--root/register/check.tt2
-rw-r--r--root/register/complete.tt5
-rw-r--r--root/register/index.tt78
-rw-r--r--root/static/style/ttsite.css55
-rw-r--r--root/static/style/yui/base-min.css7
-rw-r--r--root/static/style/yui/reset-fonts-grids.css7
-rw-r--r--root/template/footer7
-rw-r--r--root/template/header27
-rw-r--r--root/template/html29
-rw-r--r--root/template/layout61
-rw-r--r--root/ttsite.css254
-rw-r--r--root/user/firstlogin.tt32
-rw-r--r--root/user/index.tt69
-rw-r--r--root/user/password.tt41
24 files changed, 506 insertions, 641 deletions
diff --git a/root/admin/account.tt b/root/admin/account.tt
index b00b8a4..aae4888 100644
--- a/root/admin/account.tt
+++ b/root/admin/account.tt
@@ -1,47 +1,49 @@
-<form method='POST'>
-<table>
-<tr>
-<td>
-Search by
-</td>
-<td>
-<select name="attribute">
-<option value="uid">Username</option>
-<option value="mail">Email</option>
-<option value="cn">Full Name</option>
-<option value="sn">Surname</option>
-</select>
-</td>
-<!-- td>
-<select name="matchtype">
-<option value="substring">contains</option>
-<option value="exact">is exactly</option>
-<option value="gte">greater than or equal to</option>
-<option value="lt">less than</option>
-</select>
-</td -->
-<td><input name='value'></td>
-</table>
+<form method="post" action="">
+ <table>
+ <tr>
+ <td>Search by</td>
+ <td>
+ <select name="attribute">
+ <option value="uid">Username</option>
+ <option value="mail">Email</option>
+ <option value="cn">Full Name</option>
+ <option value="sn">Surname</option>
+ </select>
+ </td>
+ <!-- td>
+ <select name="matchtype">
+ <option value="substring">contains</option>
+ <option value="exact">is exactly</option>
+ <option value="gte">greater than or equal to</option>
+ <option value="lt">less than</option>
+ </select>
+ </td -->
+ <td><input name="value" value="" /></td>
+ </tr>
+ </table>
</form>
+
+<hr />
+
[% IF entries %]
-<table border=0>
-<tr>
-<th>Username</th>
-<th>Email</th>
-<th>First Name</th>
-<th>Surname</td>
-<th>Full Name</td>
-</tr>
-[% FOREACH entry IN entries %]
-<tr>
-<td><a href="[% c.uri_for('/admin/account_modify') %]/[% entry.uid %]">[% entry.uid %]</a></td>
-<td>[% entry.mail %]</td>
-<td>[% entry.givenName %]</td>
-<td>[% entry.sn %]</td>
-<td>[% entry.cn %]</td>
-</tr>
-[% END %]
-</table>
+ <table border=0>
+ <tr>
+ <th>Username</th>
+ <th>Email</th>
+ <th>First Name</th>
+ <th>Surname</td>
+ <th>Full Name</td>
+ </tr>
+ [% FOREACH entry IN entries %]
+ <tr>
+ <td><a href="[% c.uri_for('/admin/account_modify') %]/[% entry.uid %]">[% entry.uid %]</a></td>
+ <td>[% entry.mail %]</td>
+ <td>[% entry.givenName %]</td>
+ <td>[% entry.sn %]</td>
+ <td>[% entry.cn %]</td>
+ </tr>
+ [% END %]
+ </table>
[% END %]
diff --git a/root/admin/account_addoc.tt b/root/admin/account_addoc.tt
index 771ac8d..75c6898 100644
--- a/root/admin/account_addoc.tt
+++ b/root/admin/account_addoc.tt
@@ -1,27 +1,30 @@
Adding objectclass [% oc %] to dn [% dn %]
-<form method=post>
-<input type=hidden name='dn' value='[% dn %]'>
-<input type=hidden name='uid' value='[% uid %]'>
-<input type='hidden' name='objectclass' value='[% oc %]'>
-<table>
-<tr>
-<th>Attribute</th>
-<th>Value</th>
-</tr>
-[% FOREACH attr IN must %]
-[% IF attr != "objectClass" %]
-<tr>
-<td>[% attr %]</td>
-<td><input name='[% attr %]'><span color='red'>*</span></td>
-</tr>
-[% END %]
-[% END %]
-[% FOREACH attr IN may %]
-<tr>
-<td>[% attr %]</td>
-<td><input name='[% attr %]'></td>
-</tr>
-[% END %]
-</table>
-<input type='submit' value='Add'>
+<form method="post" action="">
+ <input type="hidden" name="dn" value="[% dn %]" />
+ <input type="hidden" name="uid" value="[% uid %]" />
+ <input type="hidden" name="objectclass" value="[% oc %]" />
+ <table>
+ <tr>
+ <th>Attribute</th>
+ <th>Value</th>
+ </tr>
+ [% FOREACH attr IN must %]
+ [% IF attr != "objectClass" %]
+ <tr>
+ <td>[% attr %]</td>
+ <td><input name='[% attr %]'>
+ <span color='red'>*</span></td>
+ </tr>
+ [% END %]
+ [% END %]
+ [% FOREACH attr IN may %]
+ <tr>
+ <td>[% attr %]</td>
+ <td><input name='[% attr %]'></td>
+ </tr>
+ [% END %]
+ </table>
+ <p><input type="submit" value="Add" /></p>
+
+</form> \ No newline at end of file
diff --git a/root/admin/account_group.tt b/root/admin/account_group.tt
index 3b04992..d2355c7 100644
--- a/root/admin/account_group.tt
+++ b/root/admin/account_group.tt
@@ -1,24 +1,29 @@
-Add user [% uid %] to a new group:
+<h2>Add user [% uid %] to a new group</h2>
-<form method='post'>
-<input type='hidden' name='uid' value='[% uid %]'>
-<input type='hidden' name='op' value='add'>
-<select name='group'>
-[% FOREACH group IN newgroups %]
-<option value='[% group.cn %]'>[% group.cn %]</option>
-[% END %]
-</select>
-<input type='submit' value='Add'>
+<form method="post" action="">
+ <input type='hidden' name='uid' value='[% uid %]' />
+ <input type='hidden' name='op' value='add' />
+ <select name='group'>
+ [% FOREACH group IN newgroups %]
+ <option value='[% group.cn %]'>[% group.cn %]</option>
+ [% END %]
+ </select>
+ <input type='submit' value='Add' />
</form>
-Delete user [% uid %] from an existing group:
-<form method='post'>
-<input type='hidden' name='uid' value='[% uid %]'>
-<input type='hidden' name='op' value='delete'>
-<select name='group'>
-[% FOREACH group IN groups %]
-<option value='[% group.cn %]'>[% group.cn %]</option>
-[% END %]
-</select>
-<input type='submit' value='Delete'>
+<hr />
+
+<h2>Delete user [% uid %] from an existing group:</h2>
+
+<form method="post" action="">
+ <input type='hidden' name='uid' value='[% uid %]' />
+ <input type='hidden' name='op' value='delete' />
+ <select name='group'>
+ [% FOREACH group IN groups %]
+ <option value='[% group.cn %]'>[% group.cn %]</option>
+ [% END %]
+ </select>
+ <input type='submit' value='Delete' />
</form>
+
+<hr /> \ No newline at end of file
diff --git a/root/admin/account_modify.tt b/root/admin/account_modify.tt
index 6a1ecc8..8acd4b4 100644
--- a/root/admin/account_modify.tt
+++ b/root/admin/account_modify.tt
@@ -1,66 +1,88 @@
<a href="[% c.uri_for('/admin/password') %]/[% uid %]">Reset password</a>
<a href="[% c.uri_for('/admin/account_group') %]/[% uid %]">Groups</a>
-<form method=post>
-<input type='hidden' name='operation' value='replace'>
-<table border=0>
-<tr><th>Attribute</th><th>Value</th></tr>
-[% FOREACH attr IN values %]
- <tr>
- <td>[% attr.name %]</td>
- <td>[% FOREACH val IN attr.values %][% IF attr.editable %]<input type=hidden name="[% attr.name %]_old" value="[% val %]"><input name="[% attr.name %]_new" value="[% val %]">[% ELSE %][% val %]<br/>[% END %]
-[% IF attr.addable AND attr.editable %]<a href="[% c.uri_for('/admin/account_edit') %]/add/[% attr.name %]">Add</a>[% END %]
-[% IF attr.removable AND attr.editable %]<a href="[% c.uri_for('/admin/account_modifydel') %]/[% uid %]/[% attr.name %]/[% val %]">Delete</a>[% END %]
- [% END %]</td>
- </tr>
-[% END %]
-<tr><td colspan=2 align=center><input type='Submit' value='Update'></td></tr>
-</table>
+<form method="post" action="">
+ <input type='hidden' name='operation' value='replace' />
+ <table border=0>
+ <tr>
+ <th>Attribute</th>
+ <th>Value</th>
+ </tr>
+ [% FOREACH attr IN values %]
+ <tr>
+ <td>[% attr.name %]</td>
+ <td>
+ [% FOREACH val IN attr.values %]
+ [% IF attr.editable %]
+ <input type="hidden" name="[% attr.name %]_old" value="[% val %]" />
+ <input name="[% attr.name %]_new" value="[% val %]" />
+ [% ELSE %]
+ [% val %]
+ <br/>
+ [% END %]
+ [% IF attr.addable AND attr.editable %]
+ <a href="[% c.uri_for('/admin/account_edit') %]/add/[% attr.name %]">Add</a>
+ [% END %]
+ [% IF attr.removable AND attr.editable %]
+ <a href="[% c.uri_for('/admin/account_modifydel') %]/[% uid %]/[% attr.name %]/[% val %]">Delete</a>
+ [% END %]
+ [% END %]
+ </td>
+ </tr>
+ [% END %]
+ <tr>
+ <td colspan=2 align=center>
+ <input type='Submit' value='Update'>
+ </td>
+ </tr>
+ </table>
</form>
-<table border=0>
-<tr>
-<td>
-<form method=post action="[% c.uri_for('/admin/account_modify') %]/[% uid %]">
-<input type='hidden' name='operation' value='add'>
- Add attribute
- <select name='attribute'>[% FOREACH attr IN may %]
- <option value="[% attr %]">[% attr %]</option>[% END %]
- </select>
- with value
-<input name='value'>
- <input type=submit value='Add'>
+<hr />
+
+<form method="post" action="[% c.uri_for('/admin/account_modify') %]/[% uid %]">
+ <input type="hidden" name="operation" value="add" />
+
+ <p>
+ Add attribute
+ <select name='attribute'>
+ [% FOREACH attr IN may %]
+ <option value="[% attr %]">[% attr %]</option>
+ [% END %]
+ </select>
+ with value
+ <input name="value" value="" />
+ <input type="submit" value="Add" />
+ </p>
</form>
-</td>
-</tr>
+
+<hr />
+
[% IF groups %]
-<tr>
-<td>
-Promote user to posixAccount with primary group:
-<form method=post action="[% c.uri_for('/admin/account_promote') %]">
-<input type='hidden' name='dn' value='[% dn %]'>
-<select name='gid'>
-[% FOREACH group IN groups %]
-<option value='[% group.gidNumber %]'>[% group.name %]</option>
-[% END %]
-</select>
-<input type=submit value='Promote'>
+<p>Promote user to posixAccount with primary group: </p>
+
+<form method="post" action="[% c.uri_for('/admin/account_promote') %]">
+ <input type="hidden" name="dn" value="[% dn %]" />
+ <select name="gid">
+ [% FOREACH group IN groups %]
+ <option value="[% group.gidNumber %]">[% group.name %]</option>
+ [% END %]
+ </select>
+ <input type="submit" value="Promote" />
</form>
-</td>
-</tr>
-[% END %]
-<tr>
-<td>
-<form method=post action="[% c.uri_for('/admin/account_addoc') %]">
-<input type='hidden' name='dn' value='[% dn %]'>
-<input type='hidden' name='uid' value='[% uid %]'>
-<select name='objectclass'>
-[% FOREACH oc IN offer_ocs %]
-<option value='[% oc %]'>[% oc %]</option>
[% END %]
-</select>
-<input type='submit' value='Add ObjectClass'>
+
+<hr />
+
+<form method="post" action="[% c.uri_for('/admin/account_addoc') %]">
+ <input type='hidden' name='dn' value='[% dn %]'>
+ <input type='hidden' name='uid' value='[% uid %]'>
+ <select name='objectclass'>
+ [% FOREACH oc IN offer_ocs %]
+ <option value='[% oc %]'>[% oc %]</option>
+ [% END %]
+ </select>
+ <input type="submit" value="Add ObjectClass" />
</form>
-</td>
-</tr>
-</table>
+
+<hr /> \ No newline at end of file
diff --git a/root/admin/account_promote.tt b/root/admin/account_promote.tt
index fd6400e..39dba87 100644
--- a/root/admin/account_promote.tt
+++ b/root/admin/account_promote.tt
@@ -1,34 +1,38 @@
-<form method=post>
-<table border=0>
-<tr>
-<th>Select</th>
-<th>Username</th>
-<th>Email</th>
-<th>First Name</th>
-<th>Surname</td>
-<th>Full Name</td>
-</tr>
-[% FOREACH entry IN entries %]
-<tr>
-<td><input type='checkbox' name='username' value="[% entry.uid %]">
-<td>[% entry.uid %]</td>
-<td>[% entry.mail %]</td>
-<td>[% entry.givenName %]</td>
-<td>[% entry.sn %]</td>
-<td>[% entry.cn %]</td>
-</tr>
-[% END %]
-</table>
+<form method="post" action="">
+ <table border=0>
+ <tr>
+ <th>Select</th>
+ <th>Username</th>
+ <th>Email</th>
+ <th>First Name</th>
+ <th>Surname</td>
+ <th>Full Name</td>
+ </tr>
+ [% FOREACH entry IN entries %]
+ <tr>
+ <td><input type='checkbox' name='username' value="[% entry.uid %]">
+ <td>[% entry.uid %]</td>
+ <td>[% entry.mail %]</td>
+ <td>[% entry.givenName %]</td>
+ <td>[% entry.sn %]</td>
+ <td>[% entry.cn %]</td>
+ </tr>
+ [% END %]
+ </table>
-<table border=0>
-<tr>
-<td>Primary group</td>
-<td><select name='gid'>
-[% FOREACH group IN groups %]
-<option value=[% group.gidNumber %]>[% group.cn %]</option>
-[% END %]
-</td>
-<td>
-<input type='submit' value='Promote'>
-</table>
+ <table border=0>
+ <tr>
+ <td>Primary group</td>
+ <td>
+ <select name="gid">
+ [% FOREACH group IN groups %]
+ <option value=[% group.gidNumber %]>[% group.cn %]</option>
+ [% END %]
+ </select>
+ </td>
+ <td>
+ <input type="submit" value="Promote" />
+ </td>
+ </tr>
+ </table>
</form>
diff --git a/root/admin/group_modify.tt b/root/admin/group_modify.tt
index 01520d5..15357f6 100644
--- a/root/admin/group_modify.tt
+++ b/root/admin/group_modify.tt
@@ -1,22 +1,23 @@
-<form method=post>
-<input type='hidden' name='dn' value='[% group.dn %]'>
-<table>
-<tr>
-<th>Attribute</th>
-<th>Value</th>
-</tr>
-[% FOREACH attr IN group.attributes %]
-<tr>
-<td>
-[% attr %]
-</td>
-<td>
-[% FOREACH value IN group.get_value(attr) %]
-[% value %] <a href="[% c.uri_for('/admin/group_modify') %]/delete/[% group.dn %]/[% attr %]/[% value %]">delete</a><br/>
-[% END %]
-<input name='[% attr %]'>
-<input type='submit' value='Add'>
-</td>
-</tr>
-[% END %]
-</table>
+<form method="post" action="">
+ <input type='hidden' name='dn' value='[% group.dn %]'>
+ <table>
+ <tr>
+ <th>Attribute</th>
+ <th>Value</th>
+ </tr>
+ [% FOREACH attr IN group.attributes %]
+ <tr>
+ <td>[% attr %]</td>
+ <td>
+ [% FOREACH value IN group.get_value(attr) %]
+ [% value %]
+ <a href="[% c.uri_for('/admin/group_modify') %]/delete/[% group.dn %]/[% attr %]/[% value %]">delete</a>
+ <br/>
+ [% END %]
+ <input name="[% attr %]" value="" />
+ <input type="submit" value="Add" />
+ </td>
+ </tr>
+ [% END %]
+ </table>
+</form> \ No newline at end of file
diff --git a/root/admin/index.tt b/root/admin/index.tt
index a603c30..72dff05 100644
--- a/root/admin/index.tt
+++ b/root/admin/index.tt
@@ -1 +1 @@
-Please use the menus above
+<p>Please use the menus above.</p> \ No newline at end of file
diff --git a/root/email/activation.tt b/root/email/activation.tt
index 5e749cd..b873421 100644
--- a/root/email/activation.tt
+++ b/root/email/activation.tt
@@ -3,3 +3,5 @@
[% l('To activate your account, please follow the link below.') %]
[% url %]
+--
+http://mageia.org/ \ No newline at end of file
diff --git a/root/email/admin/password.tt b/root/email/admin/password.tt
index 38bf2a3..0d9bac1 100644
--- a/root/email/admin/password.tt
+++ b/root/email/admin/password.tt
@@ -6,3 +6,5 @@
[% url %]
+--
+http://mageia.org/ \ No newline at end of file
diff --git a/root/index.tt b/root/index.tt
index a01aec2..e809b4f 100644
--- a/root/index.tt
+++ b/root/index.tt
@@ -1,23 +1,21 @@
-<h2>[% l('Login') %]</h2>
+<h1>[% l('Login') %]</h1>
-<form method=post action="/user">
+<form method="post" action="/user">
-<table border=0>
-<tr>
-<td>[% l('Username') %]</td>
-<td><input type=text name="username" value="[% c.user.username %]"></td>
-</tr>
-<tr>
-<td>[% l('Password') %]</td>
-<td><input type=password name='password'></td>
-</tr>
-<tr>
-<td></td>
-<td colspan=1>
- <input type='Submit' value='[% l('Login') %]'> [% l('or') %]
- <a href="/register">[% l('Register') %]</a>
-</td>
-</tr>
-</table>
+ <p>
+ <label for="username_">[% l('Username') %]</label>
+ <input id="username_" type="text" name="username" value="[% c.user.username %]" />
+ </p>
+ <p>
+ <label for="password_">[% l('Password') %]</label>
+ <input id="password_" type="password" name="password" />
+ </p>
+ <p><input type="submit" value="[% l('Login') %]" />
+ [% l('or') %]
+ <a href="/register">[% l('Register') %]</a></p>
+
+ <p>@todo [% l('Forgotten password?') %]</p>
+
+</form>
diff --git a/root/register/check.tt b/root/register/check.tt
index aab8e33..b8ec933 100644
--- a/root/register/check.tt
+++ b/root/register/check.tt
@@ -1,4 +1,4 @@
<h2>Success</h2>
<p>
[% message %]
-
+</p> \ No newline at end of file
diff --git a/root/register/complete.tt b/root/register/complete.tt
index 24638ba..75c6f6c 100644
--- a/root/register/complete.tt
+++ b/root/register/complete.tt
@@ -1,5 +1,6 @@
<h2>[% l('Registration completed') %]</h2>
<p>
-[% l('Registration was successful.') %]
-[% l('Check your mail for activation instructions.') %]
+ [% l('Registration was successful.') %]
+ [% l('Check your mail for activation instructions.') %]
+</p> \ No newline at end of file
diff --git a/root/register/index.tt b/root/register/index.tt
index 7ecd5bb..ab8956b 100644
--- a/root/register/index.tt
+++ b/root/register/index.tt
@@ -5,41 +5,43 @@ END; %]
<h2>[% l('Register') %]</h2>
-<span class="error">
-[% FOREACH error IN errors %]
-[% error %]<br/>
-[% END %]
-</span>
-
-<form method=POST action="/register/check">
-
-<table border=0>
-<tr>
-<td>[% l('Username') %]</td>
-<td><input type=text name="uid" value=[% c.request.params.uid %]></td>
-</tr>
-<tr>
-<td>[% l('First name') %]</td>
-<td><input type=text name='gn' value=[% c.request.params.gn %]></td>
-</tr>
-<tr>
-<td>[% l('Surname') %]</td>
-<td><input type=text name='sn' value=[% c.request.params.sn %]></td>
-</tr>
-<tr>
-<td>[% l('Email address') %]</td>
-<td><input type=text name='mail1' value=[% c.request.params.mail1 %]></td>
-</tr>
-<tr>
-<td>[% l('Confirm Email address') %]</td>
-<td><input type=text name='mail2' value=[% c.request.params.mail2 %]></td>
-</tr>
-<tr>
-<td><img src=/register/captcha></td>
-<td><input type=text name=validate>
-</tr>
-<tr>
-<td></td>
-<td colspan=1><input type='Submit' value="[% l('Register') %]">
-</tr>
-</table>
+<p class="error">
+ [% FOREACH error IN errors %]
+ [% error %]<br/>
+ [% END %]
+</p>
+
+<form method="post" action="/register/check">
+ <p>
+ <label for="uid_">[% l('Username') %]</label>
+ <input id="uid_" type="text" name="uid" value="[% c.request.params.uid %]" />
+ </p>
+
+ <p>
+ <label for="gn_">[% l('First name') %]</label>
+ <input id="gn_" type="text" name="gn" value="[% c.request.params.gn %]" />
+ </p>
+
+ <p>
+ <label for="sn_">[% l('Surname') %]</label>
+ <input id="sn_" type="text" name="sn" value="[% c.request.params.sn %]" />
+ </p>
+
+ <p>
+ <label for="mail1_">[% l('Email address') %]</label>
+ <input id="mail1_" type="text" name="mail1" value="[% c.request.params.mail1 %]" />
+ </p>
+
+ <p>
+ <label for="mail2_">[% l('Confirm Email address') %]</label>
+ <input id="mail2_" type="text" name="mail2" value="[% c.request.params.mail2 %]" />
+ </p>
+
+ <p>
+ <img src="/register/captcha" />
+ <input type="text" name="validate" />
+ </p>
+
+ <p><input type="submit" value="[% l('Register') %]" /></p>
+
+</form>>>>>>>> .merge-right.r121
diff --git a/root/static/style/ttsite.css b/root/static/style/ttsite.css
new file mode 100644
index 0000000..3f7436d
--- /dev/null
+++ b/root/static/style/ttsite.css
@@ -0,0 +1,55 @@
+html, body {
+ background: #ccc;
+}
+
+#doc {
+ -webkit-box-shadow: 0 0 10px #aaa;
+ -moz-box-shadow: 0 0 10px #aaa;
+ box-shadow: 0 0 10px #aaa;
+ background: #fff;
+}
+
+#hd, #ft, #nav, #content, .inside { padding: 0 1em 0.5em 0; }
+
+.message {
+ color: #000;
+}
+
+.error {
+ color: #f00;
+}
+
+/* horizontal navigation elements. create a DIV element with the class hnav
+ * and stick one unordered list inside it to generate a horizontal menu.
+ */
+.hnav
+{
+}
+.hnav, .hnav ul li a
+{
+ /* need to middor veritcal padding on .hnav and child anchor elements
+ * because the anchors are _not_ block elements. since they are not
+ * block elements web browsers will not expand .hnav to contain them
+ * even with the extra padding. by applying the same padding to both
+ * the parent .hnav _looks_ like its containing the child anchor
+ * elements.
+ */
+ padding-top: 3px;
+ padding-bottom: 4px;
+}
+.hnav ul, .hnav ul li
+{
+ display: inline;
+ list-style-type: none;
+ margin: 0;
+ padding: 0;
+}
+.hnav ul li a
+{
+ margin: 0 -1px 0 0;
+ padding-left: 10px;
+ padding-right: 10px;
+ border-left: solid 0px #000;
+ border-right: solid 0px #000;
+ white-space: nowrap;
+}
diff --git a/root/static/style/yui/base-min.css b/root/static/style/yui/base-min.css
new file mode 100644
index 0000000..c354440
--- /dev/null
+++ b/root/static/style/yui/base-min.css
@@ -0,0 +1,7 @@
+/*
+Copyright (c) 2010, Yahoo! Inc. All rights reserved.
+Code licensed under the BSD License:
+http://developer.yahoo.com/yui/license.html
+version: 2.8.2r1
+*/
+body{margin:10px;}h1{font-size:138.5%;}h2{font-size:123.1%;}h3{font-size:108%;}h1,h2,h3{margin:1em 0;}h1,h2,h3,h4,h5,h6,strong,dt{font-weight:bold;}optgroup{font-weight:normal;}abbr,acronym{border-bottom:1px dotted #000;cursor:help;}em{font-style:italic;}del{text-decoration:line-through;}blockquote,ul,ol,dl{margin:1em;}ol,ul,dl{margin-left:2em;}ol li{list-style:decimal outside;}ul li{list-style:disc outside;}dl dd{margin-left:1em;}th,td{border:1px solid #000;padding:.5em;}th{font-weight:bold;text-align:center;}caption{margin-bottom:.5em;text-align:center;}sup{vertical-align:super;}sub{vertical-align:sub;}p,fieldset,table,pre{margin-bottom:1em;}button,input[type="checkbox"],input[type="radio"],input[type="reset"],input[type="submit"]{padding:1px;} \ No newline at end of file
diff --git a/root/static/style/yui/reset-fonts-grids.css b/root/static/style/yui/reset-fonts-grids.css
new file mode 100644
index 0000000..70bf2a0
--- /dev/null
+++ b/root/static/style/yui/reset-fonts-grids.css
@@ -0,0 +1,7 @@
+/*
+Copyright (c) 2010, Yahoo! Inc. All rights reserved.
+Code licensed under the BSD License:
+http://developer.yahoo.com/yui/license.html
+version: 2.8.2r1
+*/
+html{color:#000;background:#FFF;}body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,button,textarea,p,blockquote,th,td{margin:0;padding:0;}table{border-collapse:collapse;border-spacing:0;}fieldset,img{border:0;}address,caption,cite,code,dfn,em,strong,th,var,optgroup{font-style:inherit;font-weight:inherit;}del,ins{text-decoration:none;}li{list-style:none;}caption,th{text-align:left;}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal;}q:before,q:after{content:'';}abbr,acronym{border:0;font-variant:normal;}sup{vertical-align:baseline;}sub{vertical-align:baseline;}legend{color:#000;}input,button,textarea,select,optgroup,option{font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;}input,button,textarea,select{*font-size:100%;}body{font:13px/1.231 arial,helvetica,clean,sans-serif;*font-size:small;*font:x-small;}select,input,button,textarea,button{font:99% arial,helvetica,clean,sans-serif;}table{font-size:inherit;font:100%;}pre,code,kbd,samp,tt{font-family:monospace;*font-size:108%;line-height:100%;}body{text-align:center;}#doc,#doc2,#doc3,#doc4,.yui-t1,.yui-t2,.yui-t3,.yui-t4,.yui-t5,.yui-t6,.yui-t7{margin:auto;text-align:left;width:57.69em;*width:56.25em;}#doc2{width:73.076em;*width:71.25em;}#doc3{margin:auto 10px;width:auto;}#doc4{width:74.923em;*width:73.05em;}.yui-b{position:relative;}.yui-b{_position:static;}#yui-main .yui-b{position:static;}#yui-main,.yui-g .yui-u .yui-g{width:100%;}.yui-t1 #yui-main,.yui-t2 #yui-main,.yui-t3 #yui-main{float:right;margin-left:-25em;}.yui-t4 #yui-main,.yui-t5 #yui-main,.yui-t6 #yui-main{float:left;margin-right:-25em;}.yui-t1 .yui-b{float:left;width:12.30769em;*width:12.00em;}.yui-t1 #yui-main .yui-b{margin-left:13.30769em;*margin-left:13.05em;}.yui-t2 .yui-b{float:left;width:13.8461em;*width:13.50em;}.yui-t2 #yui-main .yui-b{margin-left:14.8461em;*margin-left:14.55em;}.yui-t3 .yui-b{float:left;width:23.0769em;*width:22.50em;}.yui-t3 #yui-main .yui-b{margin-left:24.0769em;*margin-left:23.62em;}.yui-t4 .yui-b{float:right;width:13.8456em;*width:13.50em;}.yui-t4 #yui-main .yui-b{margin-right:14.8456em;*margin-right:14.55em;}.yui-t5 .yui-b{float:right;width:18.4615em;*width:18.00em;}.yui-t5 #yui-main .yui-b{margin-right:19.4615em;*margin-right:19.125em;}.yui-t6 .yui-b{float:right;width:23.0769em;*width:22.50em;}.yui-t6 #yui-main .yui-b{margin-right:24.0769em;*margin-right:23.62em;}.yui-t7 #yui-main .yui-b{display:block;margin:0 0 1em 0;}#yui-main .yui-b{float:none;width:auto;}.yui-gb .yui-u,.yui-g .yui-gb .yui-u,.yui-gb .yui-g,.yui-gb .yui-gb,.yui-gb .yui-gc,.yui-gb .yui-gd,.yui-gb .yui-ge,.yui-gb .yui-gf,.yui-gc .yui-u,.yui-gc .yui-g,.yui-gd .yui-u{float:left;}.yui-g .yui-u,.yui-g .yui-g,.yui-g .yui-gb,.yui-g .yui-gc,.yui-g .yui-gd,.yui-g .yui-ge,.yui-g .yui-gf,.yui-gc .yui-u,.yui-gd .yui-g,.yui-g .yui-gc .yui-u,.yui-ge .yui-u,.yui-ge .yui-g,.yui-gf .yui-g,.yui-gf .yui-u{float:right;}.yui-g div.first,.yui-gb div.first,.yui-gc div.first,.yui-gd div.first,.yui-ge div.first,.yui-gf div.first,.yui-g .yui-gc div.first,.yui-g .yui-ge div.first,.yui-gc div.first div.first{float:left;}.yui-g .yui-u,.yui-g .yui-g,.yui-g .yui-gb,.yui-g .yui-gc,.yui-g .yui-gd,.yui-g .yui-ge,.yui-g .yui-gf{width:49.1%;}.yui-gb .yui-u,.yui-g .yui-gb .yui-u,.yui-gb .yui-g,.yui-gb .yui-gb,.yui-gb .yui-gc,.yui-gb .yui-gd,.yui-gb .yui-ge,.yui-gb .yui-gf,.yui-gc .yui-u,.yui-gc .yui-g,.yui-gd .yui-u{width:32%;margin-left:1.99%;}.yui-gb .yui-u{*margin-left:1.9%;*width:31.9%;}.yui-gc div.first,.yui-gd .yui-u{width:66%;}.yui-gd div.first{width:32%;}.yui-ge div.first,.yui-gf .yui-u{width:74.2%;}.yui-ge .yui-u,.yui-gf div.first{width:24%;}.yui-g .yui-gb div.first,.yui-gb div.first,.yui-gc div.first,.yui-gd div.first{margin-left:0;}.yui-g .yui-g .yui-u,.yui-gb .yui-g .yui-u,.yui-gc .yui-g .yui-u,.yui-gd .yui-g .yui-u,.yui-ge .yui-g .yui-u,.yui-gf .yui-g .yui-u{width:49%;*width:48.1%;*margin-left:0;}.yui-g .yui-g .yui-u{width:48.1%;}.yui-g .yui-gb div.first,.yui-gb .yui-gb div.first{*margin-right:0;*width:32%;_width:31.7%;}.yui-g .yui-gc div.first,.yui-gd .yui-g{width:66%;}.yui-gb .yui-g div.first{*margin-right:4%;_margin-right:1.3%;}.yui-gb .yui-gc div.first,.yui-gb .yui-gd div.first{*margin-right:0;}.yui-gb .yui-gb .yui-u,.yui-gb .yui-gc .yui-u{*margin-left:1.8%;_margin-left:4%;}.yui-g .yui-gb .yui-u{_margin-left:1.0%;}.yui-gb .yui-gd .yui-u{*width:66%;_width:61.2%;}.yui-gb .yui-gd div.first{*width:31%;_width:29.5%;}.yui-g .yui-gc .yui-u,.yui-gb .yui-gc .yui-u{width:32%;_float:right;margin-right:0;_margin-left:0;}.yui-gb .yui-gc div.first{width:66%;*float:left;*margin-left:0;}.yui-gb .yui-ge .yui-u,.yui-gb .yui-gf .yui-u{margin:0;}.yui-gb .yui-gb .yui-u{_margin-left:.7%;}.yui-gb .yui-g div.first,.yui-gb .yui-gb div.first{*margin-left:0;}.yui-gc .yui-g .yui-u,.yui-gd .yui-g .yui-u{*width:48.1%;*margin-left:0;}.yui-gb .yui-gd div.first{width:32%;}.yui-g .yui-gd div.first{_width:29.9%;}.yui-ge .yui-g{width:24%;}.yui-gf .yui-g{width:74.2%;}.yui-gb .yui-ge div.yui-u,.yui-gb .yui-gf div.yui-u{float:right;}.yui-gb .yui-ge div.first,.yui-gb .yui-gf div.first{float:left;}.yui-gb .yui-ge .yui-u,.yui-gb .yui-gf div.first{*width:24%;_width:20%;}.yui-gb .yui-ge div.first,.yui-gb .yui-gf .yui-u{*width:73.5%;_width:65.5%;}.yui-ge div.first .yui-gd .yui-u{width:65%;}.yui-ge div.first .yui-gd div.first{width:32%;}#hd:after,#bd:after,#ft:after,.yui-g:after,.yui-gb:after,.yui-gc:after,.yui-gd:after,.yui-ge:after,.yui-gf:after{content:".";display:block;height:0;clear:both;visibility:hidden;}#hd,#bd,#ft,.yui-g,.yui-gb,.yui-gc,.yui-gd,.yui-ge,.yui-gf{zoom:1;} \ No newline at end of file
diff --git a/root/template/footer b/root/template/footer
index 78203d5..b2c05f9 100644
--- a/root/template/footer
+++ b/root/template/footer
@@ -1,3 +1,4 @@
-<!-- BEGIN site/footer -->
-<!-- div id="copyright">&copy; [% c.config.organisation %] 2010</div -->
-<!-- END site/footer -->
+<p>2010 <a href="http://mageia.org/">Mageia.org</a>
+ | <a href="http://mageia.org/policies/privacy/">Privacy policy</a>
+ | <a href="http://mageia.org/faq/accounts/">Mageia user accounts FAQ</a>
+ </p> \ No newline at end of file
diff --git a/root/template/header b/root/template/header
index a80c079..9bfe555 100644
--- a/root/template/header
+++ b/root/template/header
@@ -1,16 +1,15 @@
-<!-- BEGIN template/header -->
-<div class="masthead">
-<h1>[% c.config.apptitle %]</h1>
-</div>
+<p>[% template.title or site.title or c.config.apptitle %]</p>
+
<div class="hnav">
-<!--div class="hnav" -->
-<ul class="hnav">
-[% FOREACH page IN pages %]
-<li><a href="[% c.uri_for(page.page) %]">[% page.title %]</a></li>
-[% END %]
-[% IF c.user.username %]
-<li>[ <a href="[% c.uri_for("/user") %]">[% c.user.username %]</a> ]<a href="/user/logout">[% l('Log out') %]</a></li>
-[% END %]
-</ul>
+ <ul class="hnav">
+ [% FOREACH page IN pages %]
+ <li><a href="[% c.uri_for(page.page) %]">[% page.title %]</a></li>
+ [% END %]
+ [% IF c.user.username %]
+ <li><strong><a href="[% c.uri_for("/user") %]">[% c.user.username %]</a></strong></li>
+ <li><a href="/user/logout">[% l('Log out') %]</a></li>
+ [% ELSE %]
+ <li><a href="/">[% l('Login') %]</a></li>
+ [% END %]
+ </ul>
</div>
-<!-- END template/header -->
diff --git a/root/template/html b/root/template/html
index 9696e8a..abac43a 100644
--- a/root/template/html
+++ b/root/template/html
@@ -1,14 +1,17 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
- <head>
- <title>[% template.title or site.title %]</title>
- <meta http-equiv="Content-type" content="text/html;charset=UTF-8" />
- <link rel="Stylesheet" href="/ttsite.css">
- <!-- style type="text/css" -->
- <!--% PROCESS ttsite.css %-->
- <!-- /style -->
- </head>
- <body>
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE html>
+<html lang="en" dir="ltr">
+<head>
+ <meta charset="utf-8" />
+ <title>[% template.title or site.title or c.config.apptitle %]</title>
+ <meta content="description" value="Mageia.org online user account panel" />
+ <meta content="keywords" value="mageia, user, account, password" />
+ <meta content="robots" value="index,nofollow" />
+ <link rel="stylesheet" type="text/css" href="/static/style/yui/reset-fonts-grids.css">
+ <link rel="stylesheet" type="text/css" href="/static/style/yui/base-min.css">
+ <link rel="stylesheet" type="text/css" href="/static/style/ttsite.css" />
+</head>
+<body>
[% content %]
- </body>
-</html>
+</body>
+</html> \ No newline at end of file
diff --git a/root/template/layout b/root/template/layout
index 53d0202..bd9201a 100644
--- a/root/template/layout
+++ b/root/template/layout
@@ -1,40 +1,37 @@
-<!-- BEGIN template/header -->
-<div id="header">[% PROCESS template/header %]</div>
-<!-- END template/header -->
-
-<div id="outerColumnContainer">
- <div id="leftColumn">
- <div class="inside">
- <div class="vnav">
- <ul>
+<div id="doc" class="yui-t7">
+ <div id="hd" role="banner">
+ [% PROCESS template/header %]
+ </div>
+ <div id="bd" role="main">
+ <div class="yui-g">
+ <ul id="nav">
[% FOREACH subpage IN subpages %]
- <li><a href="[% c.uri_for(subpage.page) %]">[% l(subpage.title) %]</a></li>
+ <li><a href="[% c.uri_for(subpage.page) %]">[% l(subpage.title) %]</a></li>
[% END %]
</ul>
- </div>
- </div>
- </div>
- <div id="innerColumnContainer">
- <!-- div id="SOWrap" -->
- <div id="middleColumn">
- <div class="inside">
- [% IF errors %]
- <span class="error">
- [% FOREACH error IN errors %]
- [% error %]<br/>
+ <div class="inside">
+ [% IF errors %]
+ <span class="error">
+ [% FOREACH error IN errors %]
+ [% error %]
+ <br/>
+ [% END %]
+ </span>
[% END %]
- </span>
- [% END %]
- <div id="content">
- [% content %]
- </div>
+ </div>
+ <div id="content">[% content %]</div>
</div>
- <div class="clear"></div>
+ <div class="yui-g">
+ <div class="yui-u first">
+ <!-- YOUR DATA GOES HERE -->
+ </div>
+ <div class="yui-u">
+ <!-- YOUR DATA GOES HERE -->
+ </div>
</div>
- <div class="clear"></div>
- </div>
- <!-- /div -->
- </div>
+ </div>
+ <div id="ft" role="contentinfo">
+ [% PROCESS template/footer %]
+ </div>
</div>
-<!-- div id="footer">[% PROCESS template/footer %]</div -->
diff --git a/root/ttsite.css b/root/ttsite.css
deleted file mode 100644
index 3df303f..0000000
--- a/root/ttsite.css
+++ /dev/null
@@ -1,254 +0,0 @@
-
-html {
- height: 100%;
- margin: 0;
-}
-
-body {
- /*background-color: #ccc;*/
- color: #000;
- margin: 0;
- padding: 0px;
- height: 100%;
-}
-
-#header {
- background-color: #eee;
- border-bottom: 0px solid #fff;
-}
-
-#footer {
- background-color: #ccc;
- text-align: center;
- /*border-top: 1px solid #000;*/
- position: absolute;
- /*top: 99%;*/
- float: bottom;
- left: 0px;
- width: 100%;
- height: 1em;
- padding: 0px;
- padding-bottom: 2px;
- top: 100%;
-}
-
-#content {
- padding: 10px;
- vertical-align: top;
-}
-
-h1.title {
- padding: 4px;
- margin: 0px;
-}
-
-.message {
- color: #000;
-}
-
-.error {
- color: #f00;
-}
-
-
-/* Some stuff from skidoo_too.css */
-#outerColumnContainer
-{
- /* reserves space for the left and right columns. you can use either
- * padding, margins, or borders, depending on your needs. however you
- * can use the border method to create a background color for both left
- * and right columns
- */
- /*height: 98%;*/
- border-left: solid 12em #eee;
- border-right: solid 0em #eee;
- /*border-bottom: solid 1em #fff;*/
-}
-#innerColumnContainer
-{
- border: solid 0px #000;
- border-width: 0 0px;
- margin: 0 -1px; /* compensate for the borders because of
- 100% width declaration */
- width: 100%;
- /*height: 90%;*/
- /*z-index: 1;*/
- background-color: #fff;
- float: right;
-}
-#leftColumn, #middleColumn, #rightColumn, * html #SOWrap
-{
- overflow: visible; /* fix for IE italics bug */
- position: relative; /* fix some rendering issues */
-}
-#SOWrap
-{
- float: left;
- margin: 0 -1px 0 0;
- width: 100%;
- /*z-index: 3;*/
-}
-#middleColumn
-{
- float: right;
- margin: 0 0 0 -1px;
- width: 100%;
- /*z-index: 5;*/
-}
-#leftColumn
-{
- float: left;
- margin: 0 1px 0 -12em;
- width: 12em;
- /*z-index: 4;*/
- height: 100%;
- background-color: #eee;
-}
-#rightColumn
-{
- float: right;
- width: 14em;
- margin: 0 -14em 0 1px;
- /*z-index: 2;*/
-}
-
-/* vertical navigation stuff. mostly exactly as seen in the vnav.css styleheet
- * in the original skidoo layout.
- */
-.vnav
-{
- margin: 0em 0;
-}
-.vnav ul, .vnav ul li
-{
- margin: 0;
- padding: 0;
- list-style-type: none;
- display: block;
-}
-.vnav ul
-{
- border: solid 0px #fff;
- border-bottom-width: 0;
-}
-.vnav ul li
-{
- border-bottom: solid 0px #fff;
-}
-.vnav ul li, .vnav ul li a
-{
- margin: 0;
- display: block;
- padding: 0;
- line-height: normal;
-}
-.vnav ul li a
-{
- display: block;
- padding: 2px 5px 3px 5px;
-}
-.vnav ul li a, .vnav ul li a:link, .vnav ul li a:visited, .vnav ul li a:active, .vnav ul li a:hover
-{
- text-decoration: none;
- cursor: pointer;
- background-color: #eee;
- color: #000;
-}
-
-.vnav ul li a:hover
-{
- text-decoration: none;
- background-color: #ccc;
-}
-
-
-.vnav h3
-{
- margin-bottom: 0;
- padding-bottom: 0;
- font-size: 126%;
-}
-* html .vnav ul li a/* hide from IE5.0/Win & IE5/Mac */
-{
- height: 0.01%;
-}
-* html .vnav ul
-{
- position: relative; /* IE needs this to fix a rendering problem */
-}
-
-/* horizontal navigation elements. create a DIV element with the class hnav
- * and stick one unordered list inside it to generate a horizontal menu.
- */
-.hnav
-{
- border-bottom: solid 0px #fff;
- text-align: center;
-}
-.hnav, .hnav ul li a
-{
- /* need to middor veritcal padding on .hnav and child anchor elements
- * because the anchors are _not_ block elements. since they are not
- * block elements web browsers will not expand .hnav to contain them
- * even with the extra padding. by applying the same padding to both
- * the parent .hnav _looks_ like its containing the child anchor
- * elements.
- */
- padding-top: 3px;
- padding-bottom: 4px;
-}
-.hnav ul, .hnav ul li
-{
- display: inline;
- list-style-type: none;
- margin: 0;
- padding: 0;
-}
-.hnav ul li a
-{
- margin: 0 -1px 0 0;
- padding-left: 10px;
- padding-right: 10px; /* short-hand padding attribute would overwrite
- top/bottom padding set in a previous rule */
- border-left: solid 0px #000;
- border-right: solid 0px #000;
- white-space: nowrap;
-}
-.hnav ul li a:link, .hnav ul li a:visited, .hnav ul li a:active, .hnav ul li a:hover
-{
- text-decoration: none;
- color: #7f899a;
-}
-.hnav ul li a:hover
-{
- text-decoration: none;
- background-color: #ccc;
-}
-.hnav ul li span.divider
-{
- display: none;
-}
-* html .hnav ul li, * html .hnav ul li a
-{
- width: 1%; /* IE/Mac needs this */
- display: inline-block; /* IE/Mac needs this */
- /* \*/
- width: auto;
- display: inline;
- /* reset above hack */
-}
-* html .hnav, * html .hnav ul a
-{
- /* \*/ height: 0.01%; /* hasLayout hack to fix render bugs in IE/Win.
- IE/Mac will ignore this rule. */
-}
-* html .HNAV
-{
- padding: 0; /* IE5/Win will resize #hnav to fit the heights of its
- inline children that have vertical padding. So this
- incorrect case selector hack will be applied only by
- IE 5.x/Win */
-}
-
-/* svn test */
-
diff --git a/root/user/firstlogin.tt b/root/user/firstlogin.tt
index 7ec3aa2..5fa648a 100644
--- a/root/user/firstlogin.tt
+++ b/root/user/firstlogin.tt
@@ -1,18 +1,16 @@
-<html>
-<form method=post>
-<table border='0'>
-<tr>
-<td>[% l('New Password') %]</td>
-<td><input name='newpassword1' type='password'></td>
-</tr>
-<tr>
-<td>[% l('Repeat New Password') %]</td>
-<td><input name='newpassword2' type='password'></td>
-</tr>
-<tr>
-<td></td>
-<td align=right><input type='submit' value='[% l('Change') %]'></td>
-</tr>
-</table>
+
+<form method="post" action="">
+
+ <p>
+ <label for="newpassword1_">[% l('New Password') %]</label>
+ <input id="newpassword1_" name="newpassword1" type="password" value="" />
+ </p>
+
+ <p>
+ <label for="newpassword2_">[% l('Repeat New Password') %]</label>
+ <input id="newpassword2_" name="newpassword2" type="password" value="" />
+ </p>
+
+ <p><input type="submit" value="[% l('Change') %]" /></p>
+
</form>
-</html>
diff --git a/root/user/index.tt b/root/user/index.tt
index dc5411c..7c70b4a 100644
--- a/root/user/index.tt
+++ b/root/user/index.tt
@@ -1,32 +1,43 @@
-<form method=post>
-<table border=0>
-<tr><th>Attribute</th><th>Value</th></tr>
-[% FOREACH attr IN values %]
- <tr>
- <td>[% attr.name %]</td>
- <td>[% FOREACH val IN attr.values %][% IF attr.editable %]<input type=hidden name="[% attr.name %]_old" value="[% val %]"><input name="[% attr.name %]_new" value="[% val %]">[% ELSE %][% val %]<br/>[% END %]
-[% IF attr.addable AND attr.editable %]<a href="/user/add/[% attr.name %]">[% l('Add') %]</a>[% END %]
-[% IF attr.removable AND attr.editable %]<a href="/user/delete/[% attr.name %]/[% val %]">[% l('Delete') %]</a>[% END %]
- [% END %]</td>
- </tr>
-[% END %]
-<tr><td colspan=2 align=center><input type='Submit' value='[% l('Update') %]'></td></tr>
-</table>
+<form method="post" action="">
+ <table border=0>
+ <tr><th>Attribute</th><th>Value</th></tr>
+ [% FOREACH attr IN values %]
+ <tr>
+ <td>[% attr.name %]</td>
+ <td>
+ [% FOREACH val IN attr.values %]
+ [% IF attr.editable %]<input type=hidden name="[% attr.name %]_old" value="[% val %]">
+ <input name="[% attr.name %]_new" value="[% val %]">
+ [% ELSE %]
+ [% val %]
+ <br/>
+ [% END %]
+ [% IF attr.addable AND attr.editable %]
+ <a href="/user/add/[% attr.name %]">[% l('Add') %]</a>
+ [% END %]
+ [% IF attr.removable AND attr.editable %]
+ <a href="/user/delete/[% attr.name %]/[% val %]">[% l('Delete') %]</a>
+ [% END %]
+ [% END %]
+ </td>
+ </tr>
+ [% END %]
+ </table>
+
+ <p><input type="Submit" value="[% l('Update') %]" /></p>
</form>
-<form method=post action=/user/add>
-<table>
-<tr>
-<td>
- <select name='attribute'>[% FOREACH attr IN may %]
- <option value="[% attr %]">[% attr %]</option>[% END %]
- </select>
-</td>
-<td><input name='value'>
-</td>
-<td>
- <input type=submit value='[% l('Add') %]'>
-</td>
-</tr>
-</table>
+<hr />
+
+<form method="post" action="/user/add">
+ <p>
+ <select name="attribute">
+ [% FOREACH attr IN may %]
+ <option value="[% attr %]">[% attr %]</option>
+ [% END %]
+
+ <input name="value" value="" />
+
+ <input type="submit" value="[% l('Add') %]" />
+ </p>
</form>
diff --git a/root/user/password.tt b/root/user/password.tt
index 2b4a26b..85db475 100644
--- a/root/user/password.tt
+++ b/root/user/password.tt
@@ -1,22 +1,21 @@
-<html>
-<form method=post>
-<table border='0'>
-<tr>
-<td>[% l('Current password') %]</td>
-<td><input name='password' type='password'></td>
-</tr>
-<tr>
-<td>[% l('New Password') %]</td>
-<td><input name='newpassword1' type='password'></td>
-</tr>
-<tr>
-<td>[% l('Repeat New Password') %]</td>
-<td><input name='newpassword2' type='password'></td>
-</tr>
-<tr>
-<td></td>
-<td align=right><input type='submit' value='[% l('Change') %]'></td>
-</tr>
-</table>
+
+<form method="post" action="">
+
+ <p>
+ <label for="password_">[% l('Current password') %]</label>
+ <input id="password_" name="password" type="password" value="" />
+ </p>
+
+ <p>
+ <label for="newpassword1_">[% l('New Password') %]</label>
+ <input id="newpassword1_" name="newpassword1" type="password" value="" />
+ </p>
+
+ <p>
+ <label for="newpassword2_">[% l('Repeat New Password') %]</label>
+ <input id="newpassword2_" name="newpassword2" type="password" value="" />
+ </p>
+
+ <p><input type="submit" value="[% l('Change') %]" /></p>
+
</form>
-</html>