a lot more improvements

This commit is contained in:
Michael Save 2012-05-06 01:33:10 +10:00
parent ac2837c620
commit a610458720
40 changed files with 986 additions and 271 deletions

View file

@ -16,19 +16,19 @@
<tr>
<th>
<label for="ip">IP <span class="unimportant">(or subnet)</span></label>
<label for="ip">{% trans 'IP' %} <span class="unimportant">{% trans '(or subnet)' %}</span></label>
</th>
<td>
{% if not hide_ip %}
<input type="text" name="ip" id="ip" size="30" maxlength="40" value="{{ ip }}">
{% else %}
<em>hidden</em>
<em>{% trans 'hidden' %}</em>
{% endif %}
</td>
</tr>
<tr>
<th>
<label for="reason">Reason</label>
<label for="reason">{% trans 'Reason' %}</label>
</th>
<td>
<textarea name="reason" id="reason" rows="5" cols="30">{{ reason|e }}</textarea>
@ -37,12 +37,12 @@
{% if post and board and not delete %}
<tr>
<th>
<label for="reason">Message</label>
<label for="reason">{% trans 'Message' %}</label>
</th>
<td>
<input type="checkbox" id="public_message" name="public_message">
<input type="text" name="message" id="message" size="35" maxlength="200" value="{{ config.mod.default_ban_message|e }}">
<span class="unimportant">(public; attached to post)</span>
<span class="unimportant">({% trans 'public; attached to post' %})</span>
<script type="text/javascript">
document.getElementById('message').disabled = true;
document.getElementById('public_message').onchange = function() {
@ -54,20 +54,20 @@
{% endif %}
<tr>
<th>
<label for="length">Length</label>
<label for="length">{% trans 'Length' %}</label>
</th>
<td>
<input type="text" name="length" id="length" size="20" maxlength="40">
<span class="unimportant">(eg. "2d1h30m" or "2 days")</span></td>
</tr>
<tr>
<th>Board</th>
<th>{% trans 'Board' %}</th>
<td>
<ul style="list-style:none;padding:2px 5px">
<li>
<input type="radio" name="board" value="*" id="ban-allboards" checked>
<label style="display:inline" for="ban-allboards">
<em>all boards</em>
<em>{% trans 'all boards' %}</em>
</label>
</li>
@ -75,7 +75,7 @@
<li>
<input type="radio" name="board" value="{{ board.uri }}" id="ban-board-{{ board.uri }}">
<label style="display:inline" for="ban-board-{{ board.uri }}">
{{ config.board_abbreviation|sprintf(board.uri) }} - {{ board.title }}
{{ config.board_abbreviation|sprintf(board.uri) }} - {{ board.title|e }}
</label>
</li>
{% endfor %}
@ -84,7 +84,7 @@
</tr>
<tr>
<td></td>
<td><input name="new_ban" type="submit" value="New Ban"></td>
<td><input name="new_ban" type="submit" value="{% trans 'New Ban' %}"></td>
</tr>
</table>
</form>

View file

@ -1,15 +1,15 @@
{% if bans|count == 0 %}
<p style="text-align:center" class="unimportant">(There are no active bans.)</p>
<p style="text-align:center" class="unimportant">({% trans 'There are no active bans.' %})</p>
{% else %}
<form action="" method="post">
<table class="mod">
<tr>
<th>{% trans %}IP address{% endtrans %}</th>
<th>{% trans %}Reason{% endtrans %}</th>
<th>{% trans %}Board{% endtrans %}</th>
<th>{% trans %}Set{% endtrans %}</th>
<th>{% trans %}Expires{% endtrans %}</th>
<th>{% trans %}Staff{% endtrans %}</th>
<th>{% trans 'IP address' %}</th>
<th>{% trans 'Reason' %}</th>
<th>{% trans 'Board' %}</th>
<th>{% trans 'Set' %}</th>
<th>{% trans 'Expires' %}</th>
<th>{% trans 'Staff' %}</th>
</tr>
{% for ban in bans %}
<tr{% if ban.expires != 0 and ban.expires < time() %} style="text-decoration:line-through"{% endif %}>
@ -32,7 +32,7 @@
{% if ban.board %}
{{ config.board_abbreviation|sprintf(ban.board) }}
{% else %}
<em>{% trans %}all boards{% endtrans %}
<em>{% trans 'all boards' %}</em>
{% endif %}
</td>
<td style="white-space: nowrap">
@ -40,7 +40,7 @@
</td>
<td style="white-space: nowrap">
{% if ban.expires == 0 %}
<em>never</em>
<em>{% trans 'never' %}</em>
{% else %}
{{ ban.expires|date(config.post_date) }}
{% if ban.expires > time() %}
@ -59,8 +59,10 @@
{% endif %}
{% endif %}
{% elseif ban.mod == -1 %}
<em>system</em>
{% else %}
<em>deleted?</em>
<em>{% trans 'deleted?' %}</em>
{% endif %}
</td>
</tr>
@ -68,7 +70,7 @@
</table>
<p style="text-align:center">
<input type="submit" name="unban" value="Unban selected">
<input type="submit" name="unban" value="{% trans 'Unban selected' %}">
</p>
</form>
{% endif %}

44
templates/mod/board.html Normal file
View file

@ -0,0 +1,44 @@
{% if new %}
{% set action = '?/new-board' %}
{% else %}
{% set action = '?/edit/' ~ board.uri %}
{% endif %}
<form action="{{ action }}" method="post">
<table>
<tr>
<th>{% trans 'URI' %}</th>
<td>
{% if not new %}
{{ config.board_abbreviation|sprintf(board.uri) }}
{% else %}
/<input size="10" maxlength="255" type="text" name="uri" autocomplete="off">/
{% endif %}
</td>
</tr>
<tr>
<th>{% trans 'Title' %}</th>
<td>
<input size="25" type="text" name="title" value="{{ board.title|e }}" autocomplete="off">
</td>
</tr>
<tr>
<th>{% trans 'Subtitle' %}</th>
<td>
<input size="25" type="text" name="subtitle" value="{{ board.subtitle|e }}" autocomplete="off">
</td>
</tr>
</table>
<ul style="padding:0;text-align:center;list-style:none">
{% if new %}
<li><input type="submit" value="{% trans 'Create board' %}"></li>
{% else %}
<li><input type="submit" value="{% trans 'Save changes' %}"></li>
{% if mod|hasPermission(config.mod.deleteboard) %}
<li><input name="delete" onclick="return confirm('Are you sure you want to permanently delete this board?');" type="submit" value="{% trans 'Delete board' %}"></li>
{% endif %}
{% endif %}
</ul>
</form>

View file

@ -1,7 +1,7 @@
<p style="text-align:center;font-size:1.1em">
Are you sure you want to do that? <a href="?/{{ request }}">Click to proceed to ?/{{ request }}</a>.
{% trans 'Are you sure you want to do that?' %} <a href="?/{{ request }}">{% trans 'Click to proceed to' %} ?/{{ request }}</a>.
</p>
<p class="unimportant" style="text-align:center">
You are seeing this message because we were unable to serve a confirmation dialog, probably due to Javascript being disabled.
{% trans 'You are seeing this message because we were unable to serve a confirmation dialog, probably due to Javascript being disabled.' %}
</p>

View file

@ -6,30 +6,30 @@
<li>
<a href="?/{{ config.board_path|sprintf(board.uri) }}{{ config.file_index }}">{{ config.board_abbreviation|sprintf(board.uri) }}</a>
-
{{ board.title }}
{{ board.title|e }}
{% if board.subtitle %}
<small>&mdash; {{ board.subtitle }}</small>
<small>&mdash; {{ board.subtitle|e }}</small>
{% endif %}
{% if mod|hasPermission(config.mod.manageboards) %}
<a href="?/manage/{{ board.uri }}"><small>[{% trans 'manage' %}]</small></a>
<a href="?/edit/{{ board.uri }}"><small>[{% trans 'edit' %}]</small></a>
{% endif %}
</li>
{% endfor %}
{% if mod|hasPermission(config.mod.newboard) %}
<li style="margin-top:15px"><a href="?/new_board"><strong>{% trans 'Create new board' %}</strong></a></li>
<li style="margin-top:15px"><a href="?/new-board"><strong>{% trans 'Create new board' %}</strong></a></li>
{% endif %}
</ul>
</fieldset>
{% if mod|hasPermission(config.mod.noticeboard) %}
<fieldset>
<legend>{% trans 'Noticeboard' %}</legend>
<ul>
<fieldset>
<legend>{% trans 'Messages' %}</legend>
<ul>
{% if mod|hasPermission(config.mod.noticeboard) %}
{% if noticeboard|count > 0 %}
<li>
{% trans 'Latest posts:' %}
{% trans 'Noticeboard' %}:
<ul>
{% for post in noticeboard %}
<li>
@ -43,7 +43,7 @@
<small class="unimportant">
&mdash; by
{% if post.username %}
{{ post.username }}
{{ post.username|e }}
{% else %}
<em>deleted?</em>
{% endif %}
@ -56,9 +56,18 @@
</li>
{% endif %}
<li><a href="?/noticeboard">{% trans 'View all entries' %}</a></li>
</ul>
</fieldset>
{% endif %}
{% endif %}
<li><a href="?/news">{% trans 'News' %}</a></li>
<li>
<a href="?/inbox">
{% trans 'PM inbox' %}
{% if unread_pms > 0 %}
<strong>({{ unread_pms }} unread)</strong>
{% endif %}
</a>
</li>
</ul>
</fieldset>
<fieldset>
<legend>{% trans 'Administration' %}</legend>
@ -115,3 +124,24 @@
</fieldset>
{% endif %}
{% if newer_release %}
<fieldset>
<legend>Update</legend>
<ul>
<li>
A newer version of Tinyboard
(<strong>v{{ newer_release.massive }}.{{ newer_release.major }}.{{ newer_release.minor }}</strong>) is available!
See <a href="http://tinyboard.org">http://tinyboard.org/</a> for upgrade instructions.
</li>
</ul>
</fieldset>
{% endif %}
<fieldset>
<legend>{% trans 'User account' %}</legend>
<ul>
<li><a href="?/logout">{% trans 'Logout' %}</a></li>
</ul>
</fieldset>

36
templates/mod/inbox.html Normal file
View file

@ -0,0 +1,36 @@
{% if messages|count == 0 %}
<p style="text-align:center" class="unimportant">({% trans 'No private messages for you.' %})</p>
{% else %}
<table class="modlog">
<tr>
<th>{% trans 'ID' %}</th>
<th>{% trans 'From' %}</th>
<th>{% trans 'Date' %}</th>
<th>{% trans 'Message snippet' %}</th>
</tr>
{% for message in messages %}
<tr{% if message.unread %} style="font-weight:bold"{% endif %}>
<td class="minimal">
<a href="?/PM/{{ message.id }}">
{{ message.id }}
</a>
</td>
<td class="minimal">
{% if message.username %}
<a href="?/new_PM/{{ message.username|e }}">{{ message.username|e }}</a>
{% else %}
<em>{% trans 'deleted?' %}</em>
{% endif %}
</td>
<td class="minimal">
{{ message.time|date(config.post_date) }}
</td>
<td>
<a href="?/PM/{{ message.id }}">
{{ message.snippet }}
</a>
</td>
</tr>
{% endfor %}
</table>
{% endif %}

View file

@ -1,15 +1,21 @@
<table class="modlog">
<tr>
<th>Staff</th>
<th>IP address</th>
<th>Time</th>
<th>Board</th>
<th>Action</th>
<th>{% trans 'Staff' %}</th>
<th>{% trans 'IP address' %}</th>
<th>{% trans 'Time' %}</th>
<th>{% trans 'Board' %}</th>
<th>{% trans 'Action' %}</th>
</tr>
{% for log in logs %}
<tr>
<td class="minimal">
<a href="?/new_PM/{{ log.username }}">{{ log.username }}</a>
{% if log.username %}
<a href="?/new_PM/{{ log.username|e }}">{{ log.username|e }}</a>
{% elseif log.mod == -1 %}
<em>system</em>
{% else %}
<em>{% trans 'deleted?' %}</em>
{% endif %}
</td>
<td class="minimal">
<a href="?/IP/{{ log.ip }}">{{ log.ip }}</a>

View file

@ -3,7 +3,7 @@
<table style="margin-top:25px;">
<tr>
<th>
{% trans %}Username{% endtrans %}
{% trans 'Username' %}
</th>
<td>
<input type="text" name="username" size="20" maxlength="30" value="{{ username|e }}">
@ -11,7 +11,7 @@
</tr>
<tr>
<th>
{% trans %}Password{% endtrans %}
{% trans 'Password' %}
</th>
<td>
<input type="password" name="password" size="20" maxlength="30" value="">

View file

@ -1,7 +1,3 @@
{#{% if id == mod.id %}
{% set username = 'me' %}
{% endif %}#}
<form action="?/new_PM/{{ username|e }}" method="post">
<table>
<tr>
@ -18,5 +14,5 @@
</tr>
</table>
<p style="text-align:center"><input type="submit" value="Send message"></p>
<p style="text-align:center"><input type="submit" value="{% trans 'Send message' %}"></p>
</form>

70
templates/mod/news.html Normal file
View file

@ -0,0 +1,70 @@
{% if mod|hasPermission(config.mod.news) %}
<fieldset>
<legend>{% trans 'New post' %}</legend>
<form style="margin:0" action="" method="post">
<table>
<tr>
<th>
{% if mod|hasPermission(config.mod.news_custom) %}
<label for="name">{% trans 'Name' %}</label>
{% else %}
{% trans 'Name' %}
{% endif %}
</th>
<td>
{% if mod|hasPermission(config.mod.news_custom) %}
<input type="text" size="55" name="name" id="name" value="{{ mod.username|e }}">
{% else %}
{{ mod.username|e }}
{% endif %}
</td>
</tr>
<tr>
<th><label for="subject">{% trans 'Subject' %}</label></th>
<td><input type="text" size="55" name="subject" id="subject"></td>
</tr>
<tr>
<th><label for="body">{% trans 'Body' %}</label></th>
<td><textarea name="body" id="body" style="width:100%;height:100px"></textarea></td>
</tr>
</table>
<p style="text-align:center">
<input type="submit" value="{% trans 'Post news entry' %}">
</p>
</form>
</fieldset>
{% endif %}
{% for post in news %}
<div class="ban">
{% if mod|hasPermission(config.mod.news_delete) %}
<span style="float:right;padding:2px">
<a class="unimportant" href="?/news/delete/{{ post.id }}">[{% trans 'delete' %}]</a>
</span>
{% endif %}
<h2 id="{{ post.id }}">
<small class="unimportant">
<a href="#{{ post.id }}">#</a>
</small>
{% if post.subject %}
{{ post.subject|e }}
{% else %}
<em>{% trans 'no subject' %}</em>
{% endif %}
<small class="unimportant">
&mdash; {% trans 'by' %} {{ post.name }} {% trans 'at' %} {{ notice.time|date(config.post_date) }}
</small>
</h2>
<p>
{{ post.body }}
</p>
</div>
{% endfor %}
{% if count > news|count %}
<p class="unimportant" style="text-align:center;word-wrap:break-word">
{% for i in range(0, (count - 1) / config.mod.news_page) %}
<a href="?/news/{{ i + 1 }}">[{{ i + 1 }}]</a>
{% endfor %}
</p>
{% endif %}

View file

@ -40,13 +40,13 @@
<em>{% trans 'no subject' %}</em>
{% endif %}
<small class="unimportant">
&mdash; by
&mdash; {% trans 'by' %}
{% if post.username %}
{{ post.username }}
{{ post.username|e }}
{% else %}
<em>deleted?</em>
<em>{% trans 'deleted?' %}</em>
{% endif %}
at
{% trans 'at' %}
{{ notice.time|date(config.post_date) }}
</small>
</h2>

View file

@ -1,11 +1,11 @@
<form action="" method="post">
<table>
<tr>
<th>From</th>
<th>{% trans 'From' %}</th>
{% if username %}
<td><a href="?/new_PM/{{ username|e }}">{{ username|e }}</a></td>
{% else %}
<td><em>deleted?</em></td>
<td><em>{% trans 'deleted?' %}</em></td>
{% endif %}
</tr>
{% if to != mod.id %}
@ -14,27 +14,27 @@
{% if to_username %}
<td><a href="?/new_PM/{{ to_username|e }}">{{ to_username|e }}</a></td>
{% else %}
<td><em>deleted?</em></td>
<td><em>{% trans 'deleted?' %}</em></td>
{% endif %}
</tr>
{% endif %}
<tr>
<th>Date</th>
<th>{% trans 'Date' %}</th>
<td>{{ time|date(config.post_date) }}</td>
</tr>
<tr>
<th>Message</th>
<th>{% trans 'Message' %}</th>
<td>{{ message }}</td>
</tr>
</table>
<ul style="list-style:none;text-align:center;padding:0">
<li style="padding:5px 0">
<input type="submit" name="delete" value="Delete forever">
<input type="submit" name="delete" value="{% trans 'Delete forever' %}">
</li>
<li style="padding:5px 0">
<a href="?/PM/{{ id }}/reply">
Reply with quote
{% trans 'Reply with quote' %}
</a>
</li>
</ul>

View file

@ -2,7 +2,7 @@
<ul id="rebuild">
<li style="margin-bottom:8px">
<input type="checkbox" name="rebuild_all" id="rebuild_all" onchange="toggleall(this.checked)">
<label for="rebuild_all"><strong>Toggle all</strong></label>
<label for="rebuild_all"><strong>{% trans 'Toggle all' %}</strong></label>
<script>
function toggleall(val) {
/* TODO: something more suitable for all browsers? */
@ -15,27 +15,27 @@
</li>
<li>
<input type="checkbox" name="rebuild_cache" id="rebuild_cache" checked>
<label for="rebuild_cache">Flush cache</label>
<label for="rebuild_cache">{% trans 'Flush cache' %}</label>
</li>
<li>
<input type="checkbox" name="rebuild_javascript" id="rebuild_javascript" checked>
<label for="rebuild_javascript">Rebuild Javascript</label>
<label for="rebuild_javascript">{% trans 'Rebuild Javascript' %}</label>
</li>
<li>
<input type="checkbox" name="rebuild_index" id="rebuild_index" checked>
<label for="rebuild_index">Rebuild index pages</label>
<label for="rebuild_index">{% trans 'Rebuild index pages' %}</label>
</li>
<li>
<input type="checkbox" name="rebuild_thread" id="rebuild_thread" checked>
<label for="rebuild_thread">Rebuild thread pages</label>
<label for="rebuild_thread">{% trans 'Rebuild thread pages' %}</label>
</li>
<li>
<input type="checkbox" name="rebuild_themes" id="rebuild_themes" checked>
<label for="rebuild_themes">Rebuild themes</label>
<label for="rebuild_themes">{% trans 'Rebuild themes' %}</label>
</li>
<li>
<input type="checkbox" name="rebuild_posts" id="rebuild_posts">
<label for="rebuild_posts">Rebuild replies</label>
<label for="rebuild_posts">{% trans 'Rebuild replies' %}</label>
</li>
</ul>
@ -44,7 +44,7 @@
<ul id="boards">
<li style="margin-bottom:8px">
<input type="checkbox" name="boards_all" id="boards_all" onchange="toggleallboards(this.checked)" checked>
<label for="boards_all"><strong>All boards</strong></label>
<label for="boards_all"><strong>{% trans 'All boards' %}</strong></label>
<script>
function toggleallboards(val) {
/* TODO: something more suitable for all browsers? */
@ -59,13 +59,13 @@
<li>
<input type="checkbox" name="board_{{ board.uri }}" id="board-{{ board.uri }}" checked>
<label for="board-{{ board.uri }}">
{{ config.board_abbreviation|sprintf(board.uri) }} - {{ board.title }}
{{ config.board_abbreviation|sprintf(board.uri) }} - {{ board.title|e }}
</label>
</li>
{% endfor %}
</ul>
<p style="text-align:center">
<input type="submit" value="Rebuild" name="rebuild">
<input type="submit" value="{% trans 'Rebuild' %}" name="rebuild">
</p>
</form>

View file

@ -1,12 +1,12 @@
<div class="ban">
<h2>Rebuilt</h2>
<h2>{% trans 'Rebuilt' %}</h2>
<ul>
{% for log in logs %}
<li>{{ log }}</li>
{% endfor %}
</ul>
<p>
<a href="?/rebuild">Go back and rebuild again</a>.
<a href="?/rebuild">{% trans 'Go back and rebuild again' %}</a>.
</p>
</div>

View file

@ -1,25 +1,25 @@
<div class="report">
<hr>
Board: <a href="?/{{ report.board }}/{{ config.file_index }}">{{ config.board_abbreviation|sprintf(report.board) }}</a>
{% trans 'Board' %}: <a href="?/{{ report.board }}/{{ config.file_index }}">{{ config.board_abbreviation|sprintf(report.board) }}</a>
<br>
Reason: {{ report.reason }}
{% trans 'Reason' %}: {{ report.reason }}
<br>
Report date: {{ report.time|date(config.post_date) }}
{% trans 'Report date' %}: {{ report.time|date(config.post_date) }}
<br>
{% if mod|hasPermission(config.mod.show_ip, report.board) %}
Reported by: <a href="?/IP/{{ report.ip }}">{{ report.ip }}</a>
{% trans 'Reported by' %}: <a href="?/IP/{{ report.ip }}">{{ report.ip }}</a>
<br>
{% endif %}
{% if mod|hasPermission(config.mod.report_dismiss, report.board) or mod|hasPermission(config.mod.report_dismiss_ip, report.board) %}
<hr>
{% if mod|hasPermission(config.mod.report_dismiss, report.board) %}
<a title="Discard abuse report" href="?/reports/{{ report.id }}/dismiss">Dismiss</a>
<a title="{% trans 'Discard abuse report' %}" href="?/reports/{{ report.id }}/dismiss">Dismiss</a>
{% endif %}
{% if mod|hasPermission(config.mod.report_dismiss_ip, report.board) %}
{% if mod|hasPermission(config.mod.report_dismiss, report.board) %}
|
{% endif %}
<a title="Discard all abuse reports by this IP address" href="?/reports/{{ report.id }}/dismissall">Dismiss+</a>
<a title="{% trans 'Discard all abuse reports by this IP address' %}" href="?/reports/{{ report.id }}/dismissall">Dismiss+</a>
{% endif %}
{% endif %}
</div>

View file

@ -1,5 +1,6 @@
{% if reports %}
{{ reports }}
{% else %}
<p style="text-align:center" class="unimportant">(There are no reports.)</p>
<p style="text-align:center" class="unimportant">({% trans 'There are no reports.' %})</p>
{% endif %}

View file

@ -1,9 +1,15 @@
<form action="?/users/{{ mod.id }}" method="post">
{% if new %}
{% set action = '?/users/new' %}
{% else %}
{% set action = '?/users/' ~ user.id %}
{% endif %}
<form action="{{ action }}" method="post">
<table>
<tr>
<th>Username</th>
<th>{% trans 'Username' %}</th>
<td>
{% if mod|hasPermission(config.mod.editusers) %}
{% if new or mod|hasPermission(config.mod.editusers) %}
<input size="20" maxlength="30" type="text" name="username" value="{{ user.username|e }}" autocomplete="off">
{% else %}
{{ user.username|e }}
@ -11,17 +17,38 @@
</td>
</tr>
<tr>
<th>Password <small style="font-weight:normal">(new; optional)</small></th>
<th>{% trans 'Password' %}{% if not new %} <small style="font-weight:normal">({% trans 'new; optional' %})</small>{% endif %}</th>
<td>
{% if mod|hasPermission(config.mod.editusers) or (mod|hasPermission(config.mod.change_password) and user.id == mod.id) %}
{% if new or (mod|hasPermission(config.mod.editusers) or (mod|hasPermission(config.mod.change_password) and user.id == mod.id)) %}
<input size="20" maxlength="30" type="password" name="password" value="" autocomplete="off">
{% else %}
-
{% endif %}
</td>
</tr>
{% if new %}
<tr>
<th>{% trans 'Class' %}</th>
<td>
<ul style="padding:5px 8px;list-style:none">
<li>
<input type="radio" name="type" id="janitor" value="{{ constant('JANITOR') }}">
<label for="janitor">{% trans 'Janitor' %}</label>
</li>
<li>
<input type="radio" name="type" id="mod" value="{{ constant('MOD') }}" checked>
<label for="mod">{% trans 'Mod' %}</label>
</li>
<li>
<input type="radio" name="type" id="admin" value="{{ constant('Admin') }}">
<label for="admin">{% trans 'Admin' %}</label>
</li>
</ul>
</td>
</tr>
{% endif %}
<tr>
<th>Boards</th>
<th>{% trans 'Boards' %}</th>
<td>
<ul style="padding:0 5px;list-style:none">
<li>
@ -31,7 +58,7 @@
disabled
{% endif %}
>
<label for="allboards">"*" - All boards</label>
<label for="allboards">"*" - {% trans 'All boards' %}</label>
</li>
{% for board in boards %}
<li>
@ -44,7 +71,7 @@
<label for="board_{{ board.uri }}">
{{ config.board_abbreviation|sprintf(board.uri) }}
-
{{ board.title }}
{{ board.title|e }}
</label>
</li>
{% endfor %}
@ -53,10 +80,14 @@
</tr>
</table>
<ul style="padding:0;text-align:center">
<li><input type="submit" value="Save changes"></li>
{% if mod|hasPermission(config.mod.deleteusers) %}
<li><input type="submit" value="Delete user"></li>
<ul style="padding:0;text-align:center;list-style:none">
{% if new %}
<li><input type="submit" value="{% trans 'Create user' %}"></li>
{% else %}
<li><input type="submit" value="{% trans 'Save changes' %}"></li>
{% if mod|hasPermission(config.mod.deleteusers) %}
<li><input name="delete" onclick="return confirm('Are you sure you want to permanently delete this user?');" type="submit" value="{% trans 'Delete user' %}"></li>
{% endif %}
{% endif %}
</ul>
</form>
@ -64,10 +95,10 @@
{% if logs|count > 0 %}
<table class="modlog" style="width:600px">
<tr>
<th>IP address</th>
<th>Time</th>
<th>Board</th>
<th>Action</th>
<th>{% trans 'IP address' %}</th>
<th>{% trans 'Time' %}</th>
<th>{% trans 'Board' %}</th>
<th>{% trans 'Action' %}</th>
</tr>
{% for log in logs %}
<tr>
@ -91,3 +122,4 @@
{% endfor %}
</table>
{% endif %}

View file

@ -1,39 +1,45 @@
<table class="modlog" style="width:auto">
<tr>
<th>ID</th>
<th>Username</th>
<th>Type</th>
<th>Boards</th>
<th>Last action</th>
<th>{% trans 'ID' %}</th>
<th>{% trans 'Username' %}</th>
<th>{% trans 'Type' %}</th>
<th>{% trans 'Boards' %}</th>
<th>{% trans 'Last action' %}</th>
<th>&hellip;</th>
</tr>
{% for user in users %}
<tr>
<td><small>{{ user.id }}</small></td>
<td>{{ user.username }}</td>
<td>{{ user.username|e }}</td>
<td>
{% if user.type == constant('JANITOR') %}Janitor
{% elseif user.type == constant('MOD') %}Mod
{% elseif user.type == constant('ADMIN') %}Admin
{% if user.type == constant('JANITOR') %}{% trans 'Janitor' %}
{% elseif user.type == constant('MOD') %}{% trans 'Mod' %}
{% elseif user.type == constant('ADMIN') %}{% trans 'Admin' %}
{% endif %}
</td>
<td>
{# This is really messy, but IMO it beats doing it in PHP. #}
{% set boards = user.boards|split(',') %}
{% set _boards = [] %}
{% for board in boards %}
{% set _boards = _boards|push(board == '*' ? '*' : config.board_abbreviation|sprintf(board)) %}
{% endfor %}
{% set _boards = _boards|sort %}
{{ _boards|join(', ') }}
{% if user.boards == '' %}
<em>{% trans 'none' %}</em>
{% elseif user.boards == '*' %}
<em>{% trans 'all boards' %}</em>
{% else %}
{# This is really messy, but IMO it beats doing it in PHP. #}
{% set boards = user.boards|split(',') %}
{% set _boards = [] %}
{% for board in boards %}
{% set _boards = _boards|push(board == '*' ? '*' : config.board_abbreviation|sprintf(board)) %}
{% endfor %}
{% set _boards = _boards|sort %}
{{ _boards|join(', ') }}
{% endif %}
</td>
<td>
{% if mod|hasPermission(config.mod.modlog) %}
{% if user.last %}
<span title="{{ user.action|e }}">{{ user.last|ago }}</span>
{% else %}
<em>never</em>
<em>{% trans 'never' %}</em>
{% endif %}
{% else %}
&ndash;
@ -41,18 +47,25 @@
</td>
<td>
{% if mod|hasPermission(config.mod.promoteusers) and user.type < constant('ADMIN') %}
<a style="float:left;text-decoration:none" href="?/users/{{ user.id }}/promote" title="Promote">&#9650;</a>
<a style="float:left;text-decoration:none" href="?/users/{{ user.id }}/promote" title="{% trans 'Promote' %}">&#9650;</a>
{% endif %}
{% if mod|hasPermission(config.mod.promoteusers) and user.type > constant('JANITOR') %}
<a style="float:left;text-decoration:none" href="?/users/{{ user.id }}/demote" title="Demote">&#9660;</a>
<a style="float:left;text-decoration:none" href="?/users/{{ user.id }}/demote" title="{% trans 'Demote' %}">&#9660;</a>
{% endif %}
{% if mod|hasPermission(config.editusers) or (mod|hasPermission(config.change_password) and mod.id == user.id) %}
<a class="unimportant" style="margin-left:5px;float:right" href="?/users/{{ user.id }}">[edit]</a>
<a class="unimportant" style="margin-left:5px;float:right" href="?/users/{{ user.id }}">[{% trans 'edit' %}]</a>
{% endif %}
{% if mod|hasPermission(config.mod.create_pm) %}
<a class="unimportant" style="margin-left:5px;float:right" href="?/new_PM/{{ user.username }}">[PM]</a>
<a class="unimportant" style="margin-left:5px;float:right" href="?/new_PM/{{ user.username|e }}">[{% trans 'PM' %}]</a>
{% endif %}
</td>
</tr>
{% endfor %}
</table>
{% if mod|hasPermission(config.mod.createusers) %}
<p style="text-align:center">
<a href="?/users/new">Create a new user</a>
</p>
{% endif %}

View file

@ -1,37 +1,38 @@
{% for board_posts in posts %}
<fieldset>
<legend>
<a href="?/{{ config.board_path|sprintf(board.uri) }}{{ config.file_index }}">{{ config.board_abbreviation|sprintf(board_posts.board.uri) }}</a>
<a href="?/{{ config.board_path|sprintf(board_posts.board.uri) }}{{ config.file_index }}">{{ config.board_abbreviation|sprintf(board_posts.board.uri) }}</a>
-
{{ board_posts.board.title }}
{{ board_posts.board.title|e }}
</legend>
{{ board_posts.posts|join('<hr>') }}
</fieldset>
{% endfor %}
{% if mod|hasPermission(config.mod.view_notes) %}
<fieldset>
<fieldset id="notes">
<legend>
{{ notes|count }} note{% if notes|count != 1 %}s{% endif %} on record
{% set notes_on_record = 'note' ~ (notes|count != 1 ? 's' : '') ~ ' on record' %}
<legend>{{ notes|count }} {% trans notes_on_record %}</legend>
</legend>
{% if notes|count > 0 %}
<table class="modlog">
<tr>
<th>Staff</th>
<th>Note</th>
<th>Date</th>
<th>{% trans 'Staff' %}</th>
<th>{% trans 'Note' %}</th>
<th>{% trans 'Date' %}</th>
{% if mod|hasPermission(config.mod.remove_notes) %}
<th>Actions</th>
<th>{% trans 'Actions' %}</th>
{% endif %}
</tr>
{% for note in notes %}
<tr>
<td class="minimal">
{% if note.username %}
<a href="?/new_PM/{{ note.username }}">{{ note.username }}</a>
<a href="?/new_PM/{{ note.username|e }}">{{ note.username|e }}</a>
{% else %}
<em>deleted?</em>
<em>{% trans 'deleted?' %}</em>
{% endif %}
</td>
<td>
@ -42,7 +43,9 @@
</td>
{% if mod|hasPermission(config.mod.remove_notes) %}
<td class="minimal">
<a href="?/IP/{{ ip }}/remove_note/{{ note.id }}"><small>[remove]</small></a>
<a href="?/IP/{{ ip }}/remove_note/{{ note.id }}">
<small>[{% trans 'remove' %}]</small>
</a>
</td>
{% endif %}
</tr>
@ -54,12 +57,12 @@
<form action="" method="post" style="margin:0">
<table>
<tr>
<th>Staff</th>
<td>{{ mod.username }}</td>
<th>{% trans 'Staff' %}</th>
<td>{{ mod.username|e }}</td>
</tr>
<tr>
<th>
<label for="note">Note</label>
<label for="note">{% trans 'Note' %}</label>
</th>
<td>
<textarea id="note" name="note" rows="5" cols="30"></textarea>
@ -67,7 +70,7 @@
</tr>
<tr>
<td></td>
<td><input type="submit" value="New note"></td>
<td><input type="submit" value="{% trans 'New note' %}"></td>
</tr>
</table>
</form>
@ -76,73 +79,74 @@
{% endif %}
{% if bans|count > 0 and mod|hasPermission(config.mod.view_ban) %}
<fieldset>
<legend>Ban{% if bans|count != 1 %}s{% endif %} on record</legend>
<fieldset id="bans">
{% set bans_on_record = 'ban' ~ (bans|count != 1 ? 's' : '') ~ ' on record' %}
<legend>{{ bans|count }} {% trans bans_on_record %}</legend>
{% for ban in bans %}
<form action="" method="post" style="text-align:center">
<table style="width:400px;margin-bottom:10px;border-bottom:1px solid #ddd;padding:5px">
<tr>
<th>Status</th>
<th>{% trans 'Status' %}</th>
<td>
{% if config.mod.view_banexpired and ban.expires != 0 and ban.expires < time() %}
Expired
{% trans 'Expired' %}
{% else %}
Active
{% trans 'Active' %}
{% endif %}
</td>
</tr>
<tr>
<th>IP</th>
<th>{% trans 'IP' %}</th>
<td>{{ ban.ip }}</td>
</tr>
<tr>
<th>Reason</th>
<th>{% trans 'Reason' %}</th>
<td>
{% if ban.reason %}
{{ ban.reason }}
{% else %}
<em>no reason</em>
<em>{% trans 'no reason' %}</em>
{% endif %}
</td>
</tr>
<tr>
<th>Board</th>
<th>{% trans 'Board' %}</th>
<td>
{% if ban.board %}
{{ config.board_abbreviation|sprintf(ban.board) }}
{% else %}
<em>all boards</em>
<em>{% trans 'all boards' %}</em>
{% endif %}
</td>
</tr>
<tr>
<th>Set</th>
<th>{% trans 'Set' %}</th>
<td>{{ ban.set|date(config.post_date) }}</td>
</tr>
<tr>
<th>Expires</th>
<th>{% trans 'Expires' %}</th>
<td>
{% if ban.expires %}
{{ ban.expires|date(config.post_date) }}
{% else %}
<em>never</em>
<em>{% trans 'never' %}</em>
{% endif %}
</td>
</tr>
<tr>
<th>Staff</th>
<th>{% trans 'Staff' %}</th>
<td>
{% if ban.username %}
{{ ban.username }}
{{ ban.username|e }}
{% else %}
<em>deleted?</em>
<em>{% trans 'deleted?' %}</em>
{% endif %}
</td>
</tr>
</table>
<input type="hidden" name="ban_id" value="{{ ban.id }}">
<input type="submit" name="unban" value="Remove ban">
<input type="submit" name="unban" value="{% trans 'Remove ban' %}">
</form>
{% endfor %}
</fieldset>
@ -150,8 +154,8 @@
{% if mod|hasPermission(config.mod.ban) %}
<fieldset>
<legend>New ban</legend>
{% set redirect = '?/IP/' ~ ip %}
<legend>{% trans 'New ban' %}</legend>
{% set redirect = '?/IP/' ~ ip ~ '#bans' %}
{% include 'mod/ban_form.html' %}
</fieldset>
{% endif %}