1
0
mirror of https://github.com/vichan-devel/vichan.git synced 2024-11-23 23:20:57 +01:00

Merge pull request #693 from Zankaria/premade-ban-reasons

Add premade ban reasons
This commit is contained in:
Lorenzo Yario 2024-03-30 22:15:20 -07:00 committed by GitHub
commit 45f476084e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 81 additions and 7 deletions

View File

@ -688,6 +688,27 @@
// a link to an email address or IRC chat room to appeal the ban.
$config['ban_page_extra'] = '';
// Pre-configured ban reasons that pre-fill the ban form when clicked.
// $config['premade_ban_reasons'] = array(
// array(
// 'reason' => 'Low-quality posting',
// 'length' => '1d'
// ),
// array(
// 'reason' => 'Off-topic',
// 'length' => '1d'
// ),
// array(
// 'reason' => 'Ban evasion',
// 'length' => '30d'
// ),
// array(
// 'reason' => 'Illegal content',
// 'length' => ''
// )
//);
$config['premade_ban_reasons'] = false;
// Allow users to appeal bans through vichan.
$config['ban_appeals'] = false;

View File

@ -1586,6 +1586,7 @@ function mod_ban_post($board, $delete, $post, $token = false) {
'board' => $board,
'delete' => (bool)$delete,
'boards' => listBoards(),
'reasons' => $config['premade_ban_reasons'],
'token' => $security_token
);

12
js/mod/mod_snippets.js Normal file
View File

@ -0,0 +1,12 @@
/*
* mod_snippets.js
*
* Javascript snippets to be loaded when in mod mode
*
*/
function populateFormJQuery(frm, data) {
$.each(data, function(key, value){
$('[name='+key+']', frm).val(value);
});
}

View File

@ -1225,3 +1225,13 @@ table.fileboard .intro a {
div.mix {
display: inline-block;
}
.ban-reason-table .warning-reason-table tr td:first-child {
text-align: right;
padding-right: 10px;
}
.ban-reason-table .warning-reason-table tr:hover td {
cursor: pointer;
background-color: rgba(100%,100%,100%,0.2);
}

View File

@ -16,6 +16,9 @@
{% if not config.additional_javascript_compile %}
{% for javascript in config.additional_javascript %}<script type="text/javascript" src="{{ config.additional_javascript_url }}{{ javascript }}"></script>{% endfor %}
{% endif %}
{% if mod %}
<script type="text/javascript" src="/js/mod/mod_snippets.js"></script>
{% endif %}
{% endif %}
{% if config.recaptcha %}<script src="//www.recaptcha.net/recaptcha/api.js"></script>
<style type="text/css">{% verbatim %}

View File

@ -6,7 +6,17 @@
{% set action = '?/ban' %}
{% endif %}
<form action="{{ action }}" method="post">
{% if reasons %}
<script type="text/javascript">
$(document).ready(function(){
{% for key, reason in reasons %}
var data_{{ key }} = '{"reason":"{{ reason.reason|escape('js') }}","message":"{{ reason.reason|escape('js') }}","length":"{{ reason.length|escape('js') }}"}';
$('#reason-selector-id-{{ key }}').click(function() { populateFormJQuery('#ban-form-id', $.parseJSON(data_{{ key }})); });
{% endfor %}
});
</script>
{% endif %}
<form action="{{ action }}" method="post" id="ban-form-id">
<input type="hidden" name="token" value="{{ token }}">
{% if redirect %}
<input type="hidden" name="redirect" value="{{ redirect|e }}">
@ -41,7 +51,7 @@
{% if post and board and not delete %}
<tr>
<th>
<label for="reason">{% trans 'Message' %}</label>
<label for="message">{% trans 'Message' %}</label>
</th>
<td>
<input type="checkbox" id="public_message" name="public_message"{% if config.mod.check_ban_message %} checked{% endif %}>
@ -93,3 +103,20 @@
</table>
</form>
{% if reasons %}
<div style="text-align:center">
<h3>Predefined Reasons:</h3>
<table class="ban-reason-table">
<tr id="reason-selector-heading">
<th><b>Length</b></th>
<th><b>Reason</b></th>
</tr>
{% for key, reason in reasons %}
<tr id="reason-selector-id-{{ key }}">
<td>{% if not reason.length %}forever{% else %}{{ reason.length|e }}{% endif %}</td>
<td>{{ reason.reason|e }}</td>
</tr>
{% endfor %}
</table>
</div>
{% endif %}