forked from GithubBackups/vichan
commit
67ae4314d6
@ -384,13 +384,18 @@ FLAGS;
|
||||
$possible_languages = array_diff(scandir('inc/locale/'), array('..', '.', '.tx', 'README.md'));
|
||||
|
||||
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
|
||||
$board_type = $_POST['board_type'];
|
||||
$imgboard = $board_type == 'imgboard';
|
||||
$txtboard = $board_type == 'txtboard';
|
||||
$fileboard = $board_type == 'fileboard';
|
||||
|
||||
$title = $_POST['title'];
|
||||
$subtitle = $_POST['subtitle'];
|
||||
$country_flags = isset($_POST['country_flags']) ? 'true' : 'false';
|
||||
$field_disable_name = isset($_POST['field_disable_name']) ? 'true' : 'false';
|
||||
$enable_embedding = isset($_POST['enable_embedding']) ? 'true' : 'false';
|
||||
$force_image_op = isset($_POST['force_image_op']) ? 'true' : 'false';
|
||||
$disable_images = isset($_POST['disable_images']) ? 'true' : 'false';
|
||||
$force_image_op = $imgboard && isset($_POST['force_image_op']) ? 'true' : 'false';
|
||||
$disable_images = $txtboard ? 'true' : 'false';
|
||||
$poster_ids = isset($_POST['poster_ids']) ? 'true' : 'false';
|
||||
$show_sages = isset($_POST['show_sages']) ? 'true' : 'false';
|
||||
$auto_unicode = isset($_POST['auto_unicode']) ? 'true' : 'false';
|
||||
@ -400,8 +405,8 @@ FLAGS;
|
||||
$image_reject_repost_in_thread = isset($_POST['image_reject_repost_in_thread']) ? 'true' : 'false';
|
||||
$early_404 = isset($_POST['early_404']) ? 'true' : 'false';
|
||||
$allow_delete = isset($_POST['allow_delete']) ? 'true' : 'false';
|
||||
$allow_flash = isset($_POST['allow_flash']) ? '$config[\'allowed_ext_files\'][] = \'swf\';' : '';
|
||||
$allow_pdf = isset($_POST['allow_pdf']) ? '$config[\'allowed_ext_files\'][] = \'pdf\';' : '';
|
||||
$allow_flash = $imgboard && isset($_POST['allow_flash']) ? '$config[\'allowed_ext_files\'][] = \'swf\';' : '';
|
||||
$allow_pdf = $imgboard && isset($_POST['allow_pdf']) ? '$config[\'allowed_ext_files\'][] = \'pdf\';' : '';
|
||||
$code_tags = isset($_POST['code_tags']) ? '$config[\'additional_javascript\'][] = \'js/code_tags/run_prettify.js\';$config[\'markup\'][] = array("/\[code\](.+?)\[\/code\]/ms", "<code><pre class=\'prettyprint\' style=\'display:inline-block\'>\$1</pre></code>");' : '';
|
||||
$katex = isset($_POST['katex']) ? '$config[\'katex\'] = true;$config[\'additional_javascript\'][] = \'js/katex/katex.min.js\'; $config[\'markup\'][] = array("/\[tex\](.+?)\[\/tex\]/ms", "<span class=\'tex\'>\$1</span>"); $config[\'additional_javascript\'][] = \'js/katex-enable.js\';' : '';
|
||||
$user_flags = isset($_POST['user_flags']) ? "if (file_exists('$b/flags.php')) { include 'flags.php'; }\n" : '';
|
||||
@ -410,7 +415,7 @@ FLAGS;
|
||||
$force_flag = isset($_POST['force_flag']) ? 'true' : 'false';
|
||||
$tor_posting = isset($_POST['tor_posting']) ? 'true' : 'false';
|
||||
$new_thread_capt = isset($_POST['new_thread_capt']) ? 'true' : 'false';
|
||||
$oekaki = isset($_POST['oekaki']) ? 'true' : 'false';
|
||||
$oekaki = ($imgboard || $fileboard) && isset($_POST['oekaki']) ? 'true' : 'false';
|
||||
|
||||
if ($_POST['locale'] !== 'en' && in_array($_POST['locale'], $possible_languages)) {
|
||||
$locale = "\$config['locale'] = '{$_POST['locale']}.UTF-8';";
|
||||
@ -426,6 +431,52 @@ FLAGS;
|
||||
$multiimage = '';
|
||||
}
|
||||
|
||||
$file_board = '';
|
||||
if ($fileboard) {
|
||||
$force_image_op = true;
|
||||
|
||||
$file_board = "\$config['threads_per_page'] = 30;
|
||||
\$config['file_board'] = true;
|
||||
\$config['threads_preview'] = 0;
|
||||
\$config['threads_preview_sticky'] = 0;
|
||||
\$config['allowed_ext_files'] = array();\n";
|
||||
|
||||
|
||||
if (isset ($_POST['allowed_type'])) {
|
||||
foreach ($_POST['allowed_type'] as $val) {
|
||||
if (in_array ($val, $config['fileboard_allowed_types'])) {
|
||||
$file_board .= "\$config['allowed_ext_files'][] = '$val';\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (isset ($_POST['allowed_ext_op'])) {
|
||||
$file_board .= "\$config['allowed_ext_op'] = \$config['allowed_ext_files'];\n";
|
||||
|
||||
if (isset ($_POST['allowed_ext_op_video'])) {
|
||||
$file_board .= "\$config['allowed_ext_op'][] = 'webm';
|
||||
\$config['allowed_ext_op'][] = 'mp4';\n";
|
||||
}
|
||||
}
|
||||
|
||||
if (isset ($_POST['tag_id'])) {
|
||||
$file_board .= "\$config['allowed_tags'] = array();\n";
|
||||
foreach ($_POST['tag_id'] as $id => $v) {
|
||||
$file_board .= "\$config['allowed_tags'][";
|
||||
$file_board .= 'base64_decode("';
|
||||
$file_board .= base64_encode($_POST['tag_id'][$id]);
|
||||
$file_board .= '")';
|
||||
$file_board .= "] = ";
|
||||
$file_board .= 'base64_decode("';
|
||||
$file_board .= base64_encode($_POST['tag_desc'][$id]);
|
||||
$file_board .= '")';
|
||||
$file_board .= ";\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$anal_filenames = ($imgboard || $fileboard) && isset($_POST['anal_filenames']) ? "\$config['filename_func'] = 'filename_func';\n" : '';
|
||||
|
||||
$anonymous = base64_encode($_POST['anonymous']);
|
||||
$blotter = base64_encode(purify_html(html_entity_decode($_POST['blotter'])));
|
||||
$add_to_config = @file_get_contents($b.'/extra_config.php');
|
||||
@ -461,7 +512,7 @@ FLAGS;
|
||||
|
||||
if (isset($_POST['max_pages'])) {
|
||||
$mp = (int)$_POST['max_pages'];
|
||||
if ($mp > 25 || $mp < 2) {
|
||||
if ($mp > 25 || $mp < 1) {
|
||||
$max_pages = 15;
|
||||
} else {
|
||||
$max_pages = $mp;
|
||||
@ -538,10 +589,13 @@ FLAGS;
|
||||
\$config['max_newlines'] = $max_newlines;
|
||||
\$config['oekaki'] = $oekaki;
|
||||
$code_tags $katex $replace $multiimage $allow_flash $allow_pdf $user_flags
|
||||
$locale
|
||||
$anal_filenames
|
||||
$file_board
|
||||
|
||||
if (\$config['disable_images'])
|
||||
\$config['max_pages'] = 10000;
|
||||
|
||||
$locale
|
||||
$add_to_config
|
||||
EOT;
|
||||
|
||||
|
@ -279,7 +279,8 @@
|
||||
'file_url',
|
||||
'json_response',
|
||||
'user_flag',
|
||||
'no_country'
|
||||
'no_country',
|
||||
'tag'
|
||||
);
|
||||
|
||||
|
||||
@ -793,6 +794,9 @@
|
||||
// Details: https://github.com/savetheinternet/Tinyboard/issues/20
|
||||
$config['ie_mime_type_detection'] = '/<(?:body|head|html|img|plaintext|pre|script|table|title|a href|channel|scriptlet)/i';
|
||||
|
||||
// Config panel, fileboard: allowed upload extensions
|
||||
$config['fileboard_allowed_types'] = array('zip', '7z', 'tar', 'gz', 'bz2', 'xz', 'swf', 'txt', 'pdf', 'torrent');
|
||||
|
||||
// Allowed image file extensions.
|
||||
$config['allowed_ext'][] = 'jpg';
|
||||
$config['allowed_ext'][] = 'jpeg';
|
||||
@ -800,6 +804,11 @@
|
||||
$config['allowed_ext'][] = 'png';
|
||||
// $config['allowed_ext'][] = 'svg';
|
||||
|
||||
// Allowed extensions for OP. Inherits from the above setting if set to false. Otherwise, it overrides both allowed_ext and
|
||||
// allowed_ext_files (filetypes for downloadable files should be set in allowed_ext_files as well). This setting is useful
|
||||
// for creating fileboards.
|
||||
$config['allowed_ext_op'] = false;
|
||||
|
||||
// Allowed additional file extensions (not images; downloadable files).
|
||||
// $config['allowed_ext_files'][] = 'txt';
|
||||
// $config['allowed_ext_files'][] = 'zip';
|
||||
@ -1604,6 +1613,13 @@
|
||||
// Allow OP to remove arbitrary posts in his thread
|
||||
$config['user_moderation'] = false;
|
||||
|
||||
// File board. Like 4chan /f/
|
||||
$config['file_board'] = false;
|
||||
|
||||
// Thread tags. Set to false to disable
|
||||
// Example: array('A' => 'Chinese cartoons', 'M' => 'Music', 'P' => 'Pornography');
|
||||
$config['allowed_tags'] = false;
|
||||
|
||||
/*
|
||||
* ====================
|
||||
* Public post search
|
||||
|
@ -511,7 +511,9 @@ class Thread extends Post {
|
||||
|
||||
event('show-thread', $this);
|
||||
|
||||
$built = Element('post_thread.html', array(
|
||||
$file = ($index && $config['file_board']) ? 'post_thread_fileboard.html' : 'post_thread.html';
|
||||
|
||||
$built = Element($file, array(
|
||||
'config' => $config,
|
||||
'board' => $board,
|
||||
'post' => &$this,
|
||||
|
@ -1568,6 +1568,10 @@ function index($page, $mod=false) {
|
||||
$body .= $thread->build(true);
|
||||
}
|
||||
|
||||
if ($config['file_board']) {
|
||||
$body = Element('fileboard.html', array('body' => $body, 'mod' => $mod));
|
||||
}
|
||||
|
||||
return array(
|
||||
'board' => $board,
|
||||
'body' => $body,
|
||||
|
@ -22,3 +22,9 @@ function max_posts_per_hour($post) {
|
||||
function page_404() {
|
||||
include('404.php');
|
||||
}
|
||||
|
||||
function filename_func($a) {
|
||||
$f = basename($a['filename'], '.'.$a['extension']);
|
||||
$f = str_replace(array("\0", "\n", "<", ">", "/", "&"), array("?", "?", "«", "»", "⁄", "and"), $f);
|
||||
return $f;
|
||||
}
|
||||
|
23
post.php
23
post.php
@ -373,7 +373,12 @@ elseif (isset($_POST['post'])) {
|
||||
$url_without_params = $post['file_url'];
|
||||
|
||||
$post['extension'] = strtolower(mb_substr($url_without_params, mb_strrpos($url_without_params, '.') + 1));
|
||||
if (!in_array($post['extension'], $config['allowed_ext']) && !in_array($post['extension'], $config['allowed_ext_files']))
|
||||
|
||||
if ($post['op'] && $config['allowed_ext_op']) {
|
||||
if (!in_array($post['extension'], $config['allowed_ext_op']))
|
||||
error($config['error']['unknownext']);
|
||||
}
|
||||
else if (!in_array($post['extension'], $config['allowed_ext']) && !in_array($post['extension'], $config['allowed_ext_files']))
|
||||
error($config['error']['unknownext']);
|
||||
|
||||
$post['file_tmp'] = tempnam($config['tmp'], 'url');
|
||||
@ -544,6 +549,12 @@ elseif (isset($_POST['post'])) {
|
||||
$file['file_id'] .= "-$i";
|
||||
|
||||
$file['file'] = $config['dir']['img_root'] . $board['dir'] . $config['dir']['img'] . $file['file_id'] . '.' . $file['extension'];
|
||||
|
||||
while (file_exists ($file['file'])) {
|
||||
$file['file_id'] .= rand(0,9);
|
||||
$file['file'] = $config['dir']['img_root'] . $board['dir'] . $config['dir']['img'] . $file['file_id'] . '.' . $file['extension'];
|
||||
}
|
||||
|
||||
$file['thumb'] = $config['dir']['img_root'] . $board['dir'] . $config['dir']['thumb'] . $file['file_id'] . '.' . ($config['thumb_ext'] ? $config['thumb_ext'] : $file['extension']);
|
||||
$post['files'][] = $file;
|
||||
$i++;
|
||||
@ -641,6 +652,10 @@ elseif (isset($_POST['post'])) {
|
||||
}
|
||||
}
|
||||
|
||||
if ($config['allowed_tags'] && $post['op'] && isset($_POST['tag']) && isset($config['allowed_tags'][$_POST['tag']])) {
|
||||
$post['body'] .= "\n<tinyboard tag>" . $_POST['tag'] . "</tinyboard>";
|
||||
}
|
||||
|
||||
if (mysql_version() >= 50503) {
|
||||
$post['body_nomarkup'] = $post['body']; // Assume we're using the utf8mb4 charset
|
||||
}
|
||||
@ -667,7 +682,11 @@ elseif (isset($_POST['post'])) {
|
||||
$allhashes = '';
|
||||
|
||||
foreach ($post['files'] as $key => &$file) {
|
||||
if (!in_array($file['extension'], $config['allowed_ext']) && !in_array($file['extension'], $config['allowed_ext_files']))
|
||||
if ($post['op'] && $config['allowed_ext_op']) {
|
||||
if (!in_array($file['extension'], $config['allowed_ext_op']))
|
||||
error($config['error']['unknownext']);
|
||||
}
|
||||
elseif (!in_array($file['extension'], $config['allowed_ext']) && !in_array($file['extension'], $config['allowed_ext_files']))
|
||||
error($config['error']['unknownext']);
|
||||
|
||||
$file['is_an_image'] = !in_array($file['extension'], $config['allowed_ext_files']);
|
||||
|
@ -36,7 +36,7 @@ div.banner {
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
p.intro span.name {
|
||||
.intro span.name {
|
||||
font-family: serif;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
@ -353,7 +353,7 @@ width: 100%;
|
||||
#attention_bar:hover {
|
||||
background-color: rgba(88, 53, 41, 0.3);
|
||||
}
|
||||
p.intro a.email span.name {
|
||||
.intro a.email span.name {
|
||||
color: #8e6152;
|
||||
}
|
||||
a.post_no:hover {
|
||||
|
@ -55,11 +55,11 @@ form table tr th {
|
||||
padding: 0px 5px;
|
||||
}
|
||||
|
||||
p.intro span.name {
|
||||
.intro span.name {
|
||||
color: #C5C8C6;
|
||||
}
|
||||
|
||||
p.intro span.subject {
|
||||
.intro span.subject {
|
||||
color: #CC1105;
|
||||
font-weight: bold;
|
||||
}
|
||||
@ -90,11 +90,11 @@ div.post.reply.highlighted {
|
||||
background: #4A4C4F;
|
||||
}
|
||||
|
||||
p.intro a.email span.name {
|
||||
.intro a.email span.name {
|
||||
color: rgb(129, 162, 190);
|
||||
}
|
||||
|
||||
p.intro a.email:hover span.name {
|
||||
.intro a.email:hover span.name {
|
||||
color: rgb(95, 137, 172);
|
||||
}
|
||||
|
||||
|
@ -23,7 +23,7 @@ div.title, h1 {
|
||||
div.title p {
|
||||
font-size: 10px;
|
||||
}
|
||||
a:link, a:visited, p.intro a.email span.name {
|
||||
a:link, a:visited, .intro a.email span.name {
|
||||
color: #CCCCCC;
|
||||
text-decoration: none;
|
||||
font-family: sans-serif;
|
||||
@ -61,21 +61,21 @@ div.post.reply div.body a:link, div.post.reply div.body a:visited {
|
||||
div.post.reply div.body a:link:hover, div.post.reply div.body a:visited:hover {
|
||||
color: #32DD72;
|
||||
}
|
||||
p.intro span.subject {
|
||||
.intro span.subject {
|
||||
font-size: 12px;
|
||||
font-family: sans-serif;
|
||||
color: #446655;
|
||||
font-weight: 800;
|
||||
}
|
||||
p.intro span.name {
|
||||
.intro span.name {
|
||||
color: #32DD72;
|
||||
font-weight: 800;
|
||||
}
|
||||
p.intro a.capcode, p.intro a.nametag {
|
||||
.intro a.capcode, p.intro a.nametag {
|
||||
color: magenta;
|
||||
margin-left: 0;
|
||||
}
|
||||
p.intro a.email, p.intro a.email span.name, p.intro a.email:hover, p.intro a.email:hover span.name {
|
||||
.intro a.email, p.intro a.email span.name, p.intro a.email:hover, p.intro a.email:hover span.name {
|
||||
color: #32ddaf;
|
||||
}
|
||||
input[type="text"], textarea, select {
|
||||
|
@ -20,7 +20,7 @@ a, a:visited {
|
||||
text-decoration: none;
|
||||
color: #9999CC;
|
||||
}
|
||||
a:hover, p.intro a.post_no:hover {
|
||||
a:hover, .intro a.post_no:hover {
|
||||
color: #996699
|
||||
}
|
||||
a.post_no {
|
||||
@ -28,19 +28,19 @@ a.post_no {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
p.intro a.post_no {
|
||||
.intro a.post_no {
|
||||
color: inherit;
|
||||
}
|
||||
p.intro a.post_no, p.intro a.email {
|
||||
.intro a.post_no, p.intro a.email {
|
||||
margin: 0;
|
||||
}
|
||||
p.intro a.email span.name {
|
||||
.intro a.email span.name {
|
||||
color: #666699;
|
||||
}
|
||||
p.intro a.email:hover span.name {
|
||||
.intro a.email:hover span.name {
|
||||
color: #663366;
|
||||
}
|
||||
p.intro label {
|
||||
.intro label {
|
||||
display: inline;
|
||||
}
|
||||
h2 {
|
||||
@ -163,7 +163,7 @@ div.post.op {
|
||||
div.post.op hr {
|
||||
border-color: #000000;
|
||||
}
|
||||
p.intro {
|
||||
.intro {
|
||||
margin: 0.5em 0;
|
||||
padding: 0;
|
||||
padding-bottom: 0.2em;
|
||||
@ -172,19 +172,19 @@ input.delete {
|
||||
float: left;
|
||||
margin: 1px 6px 0 0;
|
||||
}
|
||||
p.intro span.subject {
|
||||
.intro span.subject {
|
||||
color: #336699;
|
||||
font-weight: bold;
|
||||
}
|
||||
p.intro span.name {
|
||||
.intro span.name {
|
||||
color: #336600;
|
||||
font-weight: bold;
|
||||
}
|
||||
p.intro span.capcode, p.intro a.capcode, p.intro a.nametag {
|
||||
.intro span.capcode, p.intro a.capcode, p.intro a.nametag {
|
||||
color: #CC0000;
|
||||
margin-left: 0;
|
||||
}
|
||||
p.intro a {
|
||||
.intro a {
|
||||
margin-left: 8px;
|
||||
}
|
||||
div.delete {
|
||||
@ -456,7 +456,7 @@ table.mod.config-editor input[type="text"] {
|
||||
background-color: #333333;
|
||||
opacity: 0.8;
|
||||
}
|
||||
p.intro.thread-hidden {
|
||||
.intro.thread-hidden {
|
||||
margin: 0px;
|
||||
padding: 0px;
|
||||
}
|
||||
|
@ -46,7 +46,7 @@ form table tr th {
|
||||
color: #FFF;
|
||||
}
|
||||
|
||||
p.intro span.name {
|
||||
.intro span.name {
|
||||
font-family: serif;
|
||||
}
|
||||
|
||||
@ -81,7 +81,7 @@ div[id^="thread_"].highlighted {
|
||||
background: #B5FFDD;
|
||||
}
|
||||
|
||||
p.intro a.email span.name {
|
||||
.intro a.email span.name {
|
||||
color: #345456;
|
||||
}
|
||||
|
||||
|
@ -16,7 +16,7 @@ div.title, h1 {
|
||||
div.title p {
|
||||
font-size: 13px;
|
||||
}
|
||||
a:link, a:visited, p.intro a.email span.name {
|
||||
a:link, a:visited, .intro a.email span.name {
|
||||
color: #16C816;
|
||||
text-decoration: underline;
|
||||
font-family: monospace;
|
||||
@ -51,21 +51,21 @@ div.post.reply div.body a:link, div.post.reply div.body a:visited {
|
||||
div.post.reply div.body a:link:hover, div.post.reply div.body a:visited:hover {
|
||||
color: #00FF00;
|
||||
}
|
||||
p.intro span.subject {
|
||||
.intro span.subject {
|
||||
font-size: 12px;
|
||||
font-family: monospace;
|
||||
color: #446655;
|
||||
font-weight: 800;
|
||||
}
|
||||
p.intro span.name {
|
||||
.intro span.name {
|
||||
color: #008200;
|
||||
font-weight: 900;
|
||||
}
|
||||
p.intro a.capcode, p.intro a.nametag {
|
||||
.intro a.capcode, p.intro a.nametag {
|
||||
color: magenta;
|
||||
margin-left: 0;
|
||||
}
|
||||
p.intro a.email, p.intro a.email span.name, p.intro a.email:hover, p.intro a.email:hover span.name {
|
||||
.intro a.email, p.intro a.email span.name, p.intro a.email:hover, p.intro a.email:hover span.name {
|
||||
color: #00CC64;
|
||||
font-family: monospace;
|
||||
}
|
||||
|
@ -15,7 +15,7 @@ div.title p {
|
||||
div.pages {
|
||||
font-size: 13px !important;
|
||||
}
|
||||
a:link, a:visited, p.intro a.email span.name {
|
||||
a:link, a:visited, .intro a.email span.name {
|
||||
color: #0000ff;
|
||||
font-size: inherit;
|
||||
text-decoration: inherit;
|
||||
@ -41,7 +41,7 @@ div.post.reply.highlighted {
|
||||
div.post.reply div.body a {
|
||||
color: navy;
|
||||
}
|
||||
p.intro span.subject {
|
||||
.intro span.subject {
|
||||
color: #d00;
|
||||
}
|
||||
form table tr th {
|
||||
|
@ -15,7 +15,7 @@ div.title p {
|
||||
div.pages {
|
||||
font-size: 13px !important;
|
||||
}
|
||||
a:link, a:visited, p.intro a.email span.name {
|
||||
a:link, a:visited, .intro a.email span.name {
|
||||
color: #A32615;
|
||||
font-size: inherit;
|
||||
text-decoration: inherit;
|
||||
@ -42,7 +42,7 @@ div.post.reply.highlighted {
|
||||
div.post.reply div.body a {
|
||||
color: rgb(190, 79, 43);
|
||||
}
|
||||
p.intro span.subject {
|
||||
.intro span.subject {
|
||||
color: #AA4848;
|
||||
}
|
||||
form table tr th {
|
||||
|
@ -10,7 +10,7 @@ div.title h1 {
|
||||
div.title p {
|
||||
font-size: 10px;
|
||||
}
|
||||
a:link, a:visited, p.intro a.email span.name {
|
||||
a:link, a:visited, .intro a.email span.name {
|
||||
color: #0000ff;
|
||||
}
|
||||
a:link:hover {
|
||||
@ -30,7 +30,7 @@ div.post.reply.highlighted {
|
||||
div.post.reply div.body a {
|
||||
color: navy;
|
||||
}
|
||||
p.intro span.subject {
|
||||
.intro span.subject {
|
||||
color: #d00;
|
||||
}
|
||||
form table tr th {
|
||||
|
@ -2,7 +2,7 @@ body {
|
||||
background: #0E0E0E url(data:image/gif;base64,R0lGODlhGAAMAKEEAOXl5ebm5vDw8PHx8SH+EUNyZWF0ZWQgd2l0aCBHSU1QACwAAAAAGAAMAAACRpQiY6cLa146MyY1EJQKjG81lNGRUPOIkgMJHtquBgIO7xwvpbrpduUSuXq8ntEC0bBEylYitdDAdM1ViaobkgKgZwyDLAAAOw==) repeat 0 0!important;
|
||||
color: #000;
|
||||
}
|
||||
a:link, a:visited, p.intro a.email span.name {
|
||||
a:link, a:visited, .intro a.email span.name {
|
||||
-webkit-transition: all ease-in 0.3s;
|
||||
-moz-transition: all ease-in 0.3s;
|
||||
color: rgba(0, 0, 0, 0.6);
|
||||
@ -33,7 +33,7 @@ div.post.reply.highlighted {
|
||||
div.post.reply p.body a {
|
||||
color: navy;
|
||||
}
|
||||
p.intro span.subject {
|
||||
.intro span.subject {
|
||||
color: #000;
|
||||
}
|
||||
form table tr th {
|
||||
|
@ -66,7 +66,7 @@ box-shadow: 0px 2px 3px rgba(0, 0, 0, 0.35);
|
||||
div.post.reply div.body a {
|
||||
color: #00E;
|
||||
}
|
||||
p.intro span.subject {
|
||||
.intro span.subject {
|
||||
color: #d00;
|
||||
}
|
||||
form table tr th {
|
||||
@ -118,7 +118,7 @@ table.modlog tr th {
|
||||
background: #EA8;
|
||||
}
|
||||
|
||||
p.intro span.name {
|
||||
.intro span.name {
|
||||
color: maroon;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
@ -22,7 +22,7 @@ a, a:selected {
|
||||
text-decoration: bold;
|
||||
color: #ffffff;
|
||||
}
|
||||
a:hover, p.intro a.post_no:hover {
|
||||
a:hover, .intro a.post_no:hover {
|
||||
color: #ffffff;
|
||||
}
|
||||
a.post_no {
|
||||
@ -30,19 +30,19 @@ a.post_no {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
p.intro a.post_no {
|
||||
.intro a.post_no {
|
||||
color: inherit;
|
||||
}
|
||||
p.intro a.post_no, p.intro a.email {
|
||||
.intro a.post_no, p.intro a.email {
|
||||
margin: 0;
|
||||
}
|
||||
p.intro a.email span.name {
|
||||
.intro a.email span.name {
|
||||
color: #0091ff;
|
||||
}
|
||||
p.intro a.email:hover span.name {
|
||||
.intro a.email:hover span.name {
|
||||
color: #ffffff;
|
||||
}
|
||||
p.intro label {
|
||||
.intro label {
|
||||
display: inline;
|
||||
}
|
||||
h2 {
|
||||
@ -165,7 +165,7 @@ div.post.op {
|
||||
div.post.op hr {
|
||||
border-color: #040934;
|
||||
}
|
||||
p.intro {
|
||||
.intro {
|
||||
margin: 0.5em 0;
|
||||
padding: 0;
|
||||
padding-bottom: 0.2em;
|
||||
@ -174,19 +174,19 @@ input.delete {
|
||||
float: left;
|
||||
margin: 1px 6px 0 0;
|
||||
}
|
||||
p.intro span.subject {
|
||||
.intro span.subject {
|
||||
color: #CCCCEE;
|
||||
font-weight: bold;
|
||||
}
|
||||
p.intro span.name {
|
||||
.intro span.name {
|
||||
color: #BBBBDD;
|
||||
font-weight: bold;
|
||||
}
|
||||
p.intro span.capcode, p.intro a.capcode, p.intro a.nametag {
|
||||
.intro span.capcode, p.intro a.capcode, p.intro a.nametag {
|
||||
color: #CCCCEE;
|
||||
margin-left: 0;
|
||||
}
|
||||
p.intro a {
|
||||
.intro a {
|
||||
margin-left: 8px;
|
||||
}
|
||||
div.delete {
|
||||
|
@ -19,11 +19,11 @@ a.post_no {
|
||||
color: #000033;
|
||||
}
|
||||
|
||||
p.intro a.email span.name {
|
||||
.intro a.email span.name {
|
||||
color: #0093AB;
|
||||
}
|
||||
|
||||
p.intro a.email:hover span.name {
|
||||
.intro a.email:hover span.name {
|
||||
color: #DD0000;
|
||||
}
|
||||
|
||||
@ -43,12 +43,12 @@ div.post.op hr {
|
||||
border-color: #B7C9D5;
|
||||
}
|
||||
|
||||
p.intro span.subject {
|
||||
.intro span.subject {
|
||||
color: #117743;
|
||||
font-weight: 800;
|
||||
}
|
||||
|
||||
p.intro span.name {
|
||||
.intro span.name {
|
||||
color: #117743;
|
||||
font-weight: 800;
|
||||
}
|
||||
|
@ -52,7 +52,7 @@ input[type="text"], input[type="password"], textarea, input[type="submit"], inpu
|
||||
border: 1px solid #202020;
|
||||
}
|
||||
|
||||
p.intro span.name {
|
||||
.intro span.name {
|
||||
font-size: 11pt;
|
||||
color: #505050;
|
||||
font-weight: bold;
|
||||
@ -88,16 +88,16 @@ div.post.reply.highlighted {
|
||||
background: #111111;
|
||||
}
|
||||
|
||||
p.intro a.email span.name {
|
||||
.intro a.email span.name {
|
||||
color: #FFFFFF;
|
||||
}
|
||||
|
||||
p.intro a.email:hover span.name {
|
||||
.intro a.email:hover span.name {
|
||||
color: #A0A0A0;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
p.intro span.subject {
|
||||
.intro span.subject {
|
||||
color: #606060;
|
||||
}
|
||||
|
||||
|
@ -20,11 +20,11 @@ a.post_no {
|
||||
color: #000033;
|
||||
}
|
||||
|
||||
p.intro a.email span.name {
|
||||
.intro a.email span.name {
|
||||
color: #608673;
|
||||
}
|
||||
|
||||
p.intro a.email:hover span.name {
|
||||
.intro a.email:hover span.name {
|
||||
color: #DD0000;
|
||||
}
|
||||
|
||||
@ -44,12 +44,12 @@ div.post.op hr {
|
||||
border-color: #608673;
|
||||
}
|
||||
|
||||
p.intro span.subject {
|
||||
.intro span.subject {
|
||||
color: #8a2e2e;
|
||||
font-weight: 800;
|
||||
}
|
||||
|
||||
p.intro span.name {
|
||||
.intro span.name {
|
||||
color: #117743;
|
||||
font-weight: 800;
|
||||
}
|
||||
|
@ -65,7 +65,7 @@ form[name="postcontrols"] {
|
||||
margin: 20px auto;
|
||||
}
|
||||
|
||||
p.intro span.name {
|
||||
.intro span.name {
|
||||
color: #800000;
|
||||
font-weight: 800;
|
||||
}
|
||||
@ -104,11 +104,11 @@ div.post.reply.highlighted {
|
||||
background-image: url('img/jungle_td_dark.png');;
|
||||
}
|
||||
|
||||
p.intro a.email span.name {
|
||||
.intro a.email span.name {
|
||||
color: #0000EE;
|
||||
}
|
||||
|
||||
p.intro a.email:hover span.name {
|
||||
.intro a.email:hover span.name {
|
||||
color: #00990B;
|
||||
}
|
||||
|
||||
|
@ -41,7 +41,7 @@ a.email span.name {
|
||||
color: #5A8C99 !important;
|
||||
}
|
||||
|
||||
p.intro span.capcode, p.intro a.capcode, p.intro a.nametag {
|
||||
.intro span.capcode, p.intro a.capcode, p.intro a.nametag {
|
||||
color: #6E0877;
|
||||
}
|
||||
|
||||
@ -157,7 +157,7 @@ div.banner, .replymode, .catalogmode {
|
||||
font-weight:800;
|
||||
}
|
||||
|
||||
p.intro span.subject {
|
||||
.intro span.subject {
|
||||
color: #4D2C80;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
@ -190,7 +190,7 @@ blockquote {
|
||||
.de-refmap {
|
||||
color: #4C505E !important;
|
||||
}
|
||||
p.intro a.email span.name {
|
||||
.intro a.email span.name {
|
||||
text-decoration: underline;
|
||||
}
|
||||
.quote {
|
||||
|
@ -118,7 +118,7 @@ a,a:visited {
|
||||
color: #34345C;
|
||||
}
|
||||
|
||||
a:hover,p.intro a.post_no:hover {
|
||||
a:hover,.intro a.post_no:hover {
|
||||
color: #ff0000;
|
||||
}
|
||||
|
||||
@ -128,27 +128,27 @@ a.post_no {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
p.intro a.post_no {
|
||||
.intro a.post_no {
|
||||
color: inherit;
|
||||
}
|
||||
|
||||
p.intro a.post_no,p.intro a.email,p.intro a.post_anchor {
|
||||
.intro a.post_no,p.intro a.email,p.intro a.post_anchor {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
p.intro a.email span.name {
|
||||
.intro a.email span.name {
|
||||
color: #34345C;
|
||||
}
|
||||
|
||||
p.intro a.email:hover span.name {
|
||||
.intro a.email:hover span.name {
|
||||
color: #ff0000;
|
||||
}
|
||||
|
||||
p.intro label {
|
||||
.intro label {
|
||||
display: inline;
|
||||
}
|
||||
|
||||
p.intro time,p.intro a.ip-link,p.intro a.capcode {
|
||||
.intro time,p.intro a.ip-link,p.intro a.capcode {
|
||||
direction: ltr;
|
||||
unicode-bidi: embed;
|
||||
}
|
||||
@ -331,7 +331,7 @@ div.post.op hr {
|
||||
border-color: #D9BFB7;
|
||||
}
|
||||
|
||||
p.intro {
|
||||
.intro {
|
||||
margin: 0.5em 0;
|
||||
padding: 0;
|
||||
padding-bottom: 0.2em;
|
||||
@ -342,22 +342,22 @@ input.delete {
|
||||
margin: 1px 6px 0 0;
|
||||
}
|
||||
|
||||
p.intro span.subject {
|
||||
.intro span.subject {
|
||||
color: #0F0C5D;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
p.intro span.name {
|
||||
.intro span.name {
|
||||
color: #117743;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
p.intro span.capcode,p.intro a.capcode,p.intro a.nametag {
|
||||
.intro span.capcode,p.intro a.capcode,p.intro a.nametag {
|
||||
color: #F00000;
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
p.intro a {
|
||||
.intro a {
|
||||
margin-left: 5px;
|
||||
}
|
||||
|
||||
@ -698,7 +698,7 @@ div.blotter {
|
||||
background-color: rgba(100%,100%,100%,0.2);
|
||||
}
|
||||
|
||||
p.intro.thread-hidden {
|
||||
.intro.thread-hidden {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
@ -1032,7 +1032,7 @@ span.pln {
|
||||
}
|
||||
|
||||
@media screen and (min-width: 768px) {
|
||||
p.intro {
|
||||
.intro {
|
||||
clear: none;
|
||||
}
|
||||
|
||||
@ -1649,3 +1649,12 @@ td.board-tags a.tag-link {
|
||||
#post-moderation-fields {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* Fileboard */
|
||||
table.fileboard th, table.fileboard td {
|
||||
padding: 2px;
|
||||
text-align: center;
|
||||
}
|
||||
table.fileboard .intro a {
|
||||
margin-left: 0px;
|
||||
}
|
||||
|
@ -20,7 +20,7 @@ background-repeat: repeat;
|
||||
background-color: #200000;
|
||||
}
|
||||
|
||||
p.intro span.capcode, p.intro a.capcode, p.intro a.nametag {
|
||||
.intro span.capcode, p.intro a.capcode, p.intro a.nametag {
|
||||
color: #26899C;
|
||||
}
|
||||
|
||||
@ -154,7 +154,7 @@ div.banner, .replymode, .catalogmode {
|
||||
font-weight:800;
|
||||
}
|
||||
|
||||
p.intro span.subject {
|
||||
.intro span.subject {
|
||||
color: #771018;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
@ -16,7 +16,7 @@ div.title, h1 {
|
||||
div.title p {
|
||||
font-size: 10px;
|
||||
}
|
||||
a:link, a:visited, p.intro a.email span.name {
|
||||
a:link, a:visited, .intro a.email span.name {
|
||||
color: #00FF00;
|
||||
text-decoration: underline;
|
||||
font-family: sans-serif;
|
||||
@ -50,21 +50,21 @@ div.post.reply div.body a:link, div.post.reply div.body a:visited {
|
||||
div.post.reply div.body a:link:hover, div.post.reply div.body a:visited:hover {
|
||||
color: #00FF00;
|
||||
}
|
||||
p.intro span.subject {
|
||||
.intro span.subject {
|
||||
font-size: 12px;
|
||||
font-family: sans-serif;
|
||||
color: #446655;
|
||||
font-weight: 800;
|
||||
}
|
||||
p.intro span.name {
|
||||
.intro span.name {
|
||||
color: #00FF00;
|
||||
font-weight: 800;
|
||||
}
|
||||
p.intro a.capcode, p.intro a.nametag {
|
||||
.intro a.capcode, p.intro a.nametag {
|
||||
color: #00FF00;
|
||||
margin-left: 0;
|
||||
}
|
||||
p.intro a.email, p.intro a.email span.name, p.intro a.email:hover, p.intro a.email:hover span.name {
|
||||
.intro a.email, p.intro a.email span.name, p.intro a.email:hover, p.intro a.email:hover span.name {
|
||||
color: #00FF00;
|
||||
}
|
||||
input[type="text"], textarea, select {
|
||||
|
@ -202,7 +202,7 @@ div.boardlist.bottom {
|
||||
background-color: rgba(0%, 0%, 0%, 0.45);
|
||||
}
|
||||
|
||||
p.intro span.subject {
|
||||
.intro span.subject {
|
||||
color:#ee8100;
|
||||
}
|
||||
|
||||
|
@ -146,7 +146,7 @@ form table tr th{
|
||||
background: #fec !important;
|
||||
}
|
||||
|
||||
p.intro.thread-hidden{
|
||||
.intro.thread-hidden{
|
||||
padding-bottom: 1em !important;
|
||||
}
|
||||
|
||||
|
@ -27,16 +27,16 @@ a.post_no {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
p.intro a.post_no, p.intro a.email {
|
||||
.intro a.post_no, p.intro a.email {
|
||||
margin: 0;
|
||||
}
|
||||
p.intro a.email span.name {
|
||||
.intro a.email span.name {
|
||||
color: #34345C;
|
||||
}
|
||||
p.intro a.email:hover span.name {
|
||||
.intro a.email:hover span.name {
|
||||
color: #ff0000;
|
||||
}
|
||||
p.intro label {
|
||||
.intro label {
|
||||
display: inline;
|
||||
}
|
||||
h2 {
|
||||
@ -155,7 +155,7 @@ div.post.op {
|
||||
div.post.op hr {
|
||||
border-color: #D9BFB7;
|
||||
}
|
||||
p.intro {
|
||||
.intro {
|
||||
margin: 0.5em 0;
|
||||
padding: 0;
|
||||
padding-bottom: 0.2em;
|
||||
@ -164,19 +164,19 @@ input.delete {
|
||||
float: left;
|
||||
margin: 1px 6px 0 0;
|
||||
}
|
||||
p.intro span.subject {
|
||||
.intro span.subject {
|
||||
color: #0F0C5D;
|
||||
font-weight: bold;
|
||||
}
|
||||
p.intro span.name {
|
||||
.intro span.name {
|
||||
color: #117743;
|
||||
font-weight: bold;
|
||||
}
|
||||
p.intro a.capcode, p.intro a.nametag {
|
||||
.intro a.capcode, p.intro a.nametag {
|
||||
color: #F00000;
|
||||
margin-left: 0;
|
||||
}
|
||||
p.intro a {
|
||||
.intro a {
|
||||
margin-left: 8px;
|
||||
}
|
||||
div.delete {
|
||||
|
@ -2,7 +2,7 @@ body {
|
||||
background: #ffe url('img/fade-yotsuba.png') repeat-x 50% 0%;
|
||||
color: #800000;
|
||||
}
|
||||
a:link, a:visited, p.intro a.email span.name {
|
||||
a:link, a:visited, .intro a.email span.name {
|
||||
color: #800;
|
||||
}
|
||||
a:link:hover {
|
||||
@ -22,7 +22,7 @@ div.post.reply.highlighted {
|
||||
div.post.reply div.body a {
|
||||
color: navy;
|
||||
}
|
||||
p.intro span.subject {
|
||||
.intro span.subject {
|
||||
color: #d00;
|
||||
}
|
||||
form table tr th {
|
||||
|
15
templates/fileboard.html
Normal file
15
templates/fileboard.html
Normal file
@ -0,0 +1,15 @@
|
||||
<table class='fileboard'>
|
||||
<tr>
|
||||
<th> <!-- checkbox -->
|
||||
<th>{% trans %}No.{% endtrans %}
|
||||
<th>{% trans %}Name{% endtrans %}
|
||||
<th>{% trans %}File{% endtrans %}
|
||||
<th>{% trans %}Tag{% endtrans %}
|
||||
<th>{% trans %}Subject{% endtrans %}
|
||||
<th>{% trans %}Size{% endtrans %}
|
||||
<th>{% trans %}Date{% endtrans %}
|
||||
<th>{% trans %}Replies{% endtrans %}
|
||||
<th> <!-- reply -->
|
||||
</tr>
|
||||
{{ body }}
|
||||
</table>
|
@ -24,14 +24,18 @@
|
||||
</table>
|
||||
|
||||
<table>
|
||||
<tr><th>{% trans %}Board type{% endtrans %}</th><td><select name="board_type" id="board_type">
|
||||
<option value="imgboard" {% if not config.disable_images and not config.file_board %}selected{% endif %}>Image board</option>
|
||||
<option value="txtboard" {% if config.disable_images %}selected{% endif %}>Text board</option>
|
||||
<option value="fileboard" {% if config.file_board %}selected{% endif %}>File board</option>
|
||||
</select></td></tr>
|
||||
<tr><th>{% trans %}Country flags{% endtrans %}</th><td><input type="checkbox" name="country_flags" {% if config.country_flags %}checked{% endif %}></td></tr>
|
||||
<tr><th>{% trans %}/pol/-style user flags{% endtrans %}<br><span class="unimportant">Enabling this disables country flags<br>Make sure to actually upload some first!</span></th><td><input type="checkbox" name="user_flags" {% if config.user_flag %}checked{% endif %}></td></tr>
|
||||
<tr><th>{% trans %}Forced anonymous{% endtrans %}</th><td><input type="checkbox" name="field_disable_name" {% if config.field_disable_name %}checked{% endif %}></td></tr>
|
||||
<tr><th>{% trans %}YouTube/Voocaroo embedding{% endtrans %}</th><td><input type="checkbox" name="enable_embedding" {% if config.enable_embedding %}checked{% endif %}></td></tr>
|
||||
<tr><th>{% trans %}Require image for OP{% endtrans %}</th><td><input type="checkbox" name="force_image_op" {% if config.force_image_op %}checked{% endif %}></td></tr>
|
||||
<tr class='imgboard'><th>{% trans %}Require image for OP{% endtrans %}</th><td><input type="checkbox" name="force_image_op" {% if config.force_image_op %}checked{% endif %}></td></tr>
|
||||
<tr><th>{% trans %}Require subject for OP{% endtrans %}</th><td><input type="checkbox" name="force_subject_op" {% if config.force_subject_op %}checked{% endif %}></td></tr>
|
||||
<tr><th>{% trans %}Require user/country flag for all posts{% endtrans %}</th><td><input type="checkbox" name="force_flag" {% if config.force_flag %}checked{% endif %}></td></tr>
|
||||
<tr><th>{% trans %}Disable images{% endtrans %}</th><td><input type="checkbox" name="disable_images" {% if config.disable_images %}checked{% endif %}></td></tr>
|
||||
<tr><th>{% trans %}Poster ID's{% endtrans %}</th><td><input type="checkbox" name="poster_ids" {% if config.poster_ids %}checked{% endif %}></td></tr>
|
||||
<tr><th>{% trans %}Display SAGE! after saged posts{% endtrans %}</th><td><input type="checkbox" name="show_sages" {% if config.show_sages %}checked{% endif %}></td></tr>
|
||||
<tr><th>{% trans %}Automatically convert ... to …{% endtrans %}</th><td><input type="checkbox" name="auto_unicode" {% if config.auto_unicode %}checked{% endif %}></td></tr>
|
||||
@ -39,10 +43,10 @@
|
||||
<tr><th>{% trans %}No index{% endtrans %}<br><span class="unimportant">{% trans %}Hide from boards index<br/>and do not index in search engines{% endtrans %}</span></th><td><input type="checkbox" name="meta_noindex" {% if not board.indexed %}checked{% endif %}></td></tr>
|
||||
<tr><th>{% trans %}Archive my board on 8archive.moe{% endtrans %}<br><span class="unimportant">{% trans %}This archives your board on 8archive.moe if you opt in{% endtrans %}</span></th><td><input type="checkbox" name="8archive" {% if board['8archive'] %}checked{% endif %}></td></tr>
|
||||
<tr><th>{% trans %}[code] tags{% endtrans %}</th><td><input type="checkbox" name="code_tags" {% if 'js/code_tags/run_prettify.js' in config.additional_javascript %}checked{% endif %}></td></tr>
|
||||
<tr><th>{% trans %}Oekaki{% endtrans %}</th><td><input type="checkbox" name="oekaki" {% if config.oekaki %}checked{% endif %}></td></tr>
|
||||
<tr class='imgboard fileboard'><th>{% trans %}Oekaki{% endtrans %}</th><td><input type="checkbox" name="oekaki" {% if config.oekaki %}checked{% endif %}></td></tr>
|
||||
<tr><th>{% trans %}Format math between $${% endtrans %}</th><td><input type="checkbox" name="katex" {% if config.katex %}checked{% endif %}></td></tr>
|
||||
<tr><th>{% trans %}Allow SWF uploading{% endtrans %}</th><td><input type="checkbox" name="allow_flash" {% if 'swf' in config.allowed_ext_files %}checked{% endif %}></td></tr>
|
||||
<tr><th>{% trans %}Allow PDF uploading{% endtrans %}</th><td><input type="checkbox" name="allow_pdf" {% if 'pdf' in config.allowed_ext_files %}checked{% endif %}></td></tr>
|
||||
<tr class='imgboard'><th>{% trans %}Allow SWF uploading{% endtrans %}</th><td><input type="checkbox" name="allow_flash" {% if 'swf' in config.allowed_ext_files %}checked{% endif %}></td></tr>
|
||||
<tr class='imgboard'><th>{% trans %}Allow PDF uploading{% endtrans %}</th><td><input type="checkbox" name="allow_pdf" {% if 'pdf' in config.allowed_ext_files %}checked{% endif %}></td></tr>
|
||||
<tr><th>{% trans %}Enable dice rolling{% endtrans %}</th><td><input type="checkbox" name="allow_roll" {% if config.allow_roll %}checked{% endif %}></td></tr>
|
||||
<tr><th>{% trans %}Don't allow users to repost images (whole board){% endtrans %}</th><td><input type="checkbox" name="image_reject_repost" {% if config.image_reject_repost %}checked{% endif %}></td></tr>
|
||||
<tr><th>{% trans %}Don't allow users to repost images (same thread){% endtrans %}</th><td><input type="checkbox" name="image_reject_repost_in_thread" {% if config.image_reject_repost_in_thread %}checked{% endif %}></td></tr>
|
||||
@ -53,7 +57,7 @@
|
||||
<tr><th>{% trans %}Public bans{% endtrans %}<br><span class="unimportant">{% trans %}Displays your bans for the public{% endtrans %}</span></th><td><input type="checkbox" name="public_bans" {% if board.public_bans %}checked{% endif %}></td></tr>
|
||||
<tr><th>{% trans %}Public action log{% endtrans %}<br><span class="unimportant">{% trans %}Displays all actions to the public{% endtrans %}</span></th><td><select name="public_logs"><option value="0" {% if board.public_logs == 0 %}selected{% endif %}>None</option><option value="1" {% if board.public_logs == 1 %}selected{% endif %}>Full log of all actions</option><option value="2" {% if board.public_logs == 2 %}selected{% endif %}>Full log of all actions, no usernames</option></td></tr>
|
||||
<tr><th>{% trans %}Max number of newlines per post{% endtrans %}</th><td><select name="max_newlines"><option value="0" {% if config.max_newlines == 0 %}selected{% endif %}>unlimited</option>{% for i in range(20, 300) %}<option value="{{ i }}" {% if config.max_newlines == i %}selected{% endif %}>{{ i }}</option>{% endfor %}</select></td></tr>
|
||||
<tr><th>{% trans %}Page count{% endtrans %}</th><td><select name="max_pages">{% for i in range(2, 25) %}<option value="{{ i }}" {% if config.max_pages == i %}selected{% endif %}>{{ i }}</option>{% endfor %}</select></td></tr>
|
||||
<tr><th>{% trans %}Page count{% endtrans %}</th><td><select name="max_pages">{% for i in range(1, 25) %}<option value="{{ i }}" {% if config.max_pages == i %}selected{% endif %}>{{ i }}</option>{% endfor %}</select></td></tr>
|
||||
<tr><th>{% trans %}Bump limit{% endtrans %}</th><td><select name="reply_limit">{% for i in range(250, 750, 25) %}<option value="{{ i }}" {% if config.reply_limit == i %}selected{% endif %}>{{ i }}</option>{% endfor %}</select></td></tr>
|
||||
<tr><th>{% trans %}Language{% endtrans %}<br/><span class="unimportant">{% trans %}Read this page for more information about contributing translations:<br><a href="/translation.html">Translation tutorial</a> or use <a href="https://www.transifex.com/projects/p/infinity/">Transifex</a>{% endtrans %}</span></th><td>
|
||||
<select name="locale">
|
||||
@ -64,6 +68,15 @@
|
||||
{% endfor %}
|
||||
</select>
|
||||
</td></tr>
|
||||
<tr class='fileboard'><th>{% trans %}Allowed file types{% endtrans %}</th><td>
|
||||
{% for type in config.fileboard_allowed_types %}
|
||||
<label><input type='checkbox' name='allowed_type[]' value='{{ type }}' {% if type in config.allowed_ext_files %}checked{% endif %}>{{ type }}</label>
|
||||
{% endfor %}
|
||||
</td></tr>
|
||||
<tr class='fileboard'><th>{% trans %}Disable OP image upload{% endtrans %}</th><td><input type="checkbox" name="allowed_ext_op" {% if config.allowed_ext_op %}checked{% endif %}>
|
||||
<label> (<input type="checkbox" name="allowed_ext_op_video" {% if config.allowed_ext_op and 'webm' in config.allowed_ext_op %}checked{% endif %}> also allow video upload)</label></td></tr>
|
||||
<tr class='fileboard imgboard'><th>{% trans %}Keep original filename{% endtrans %}</th><td><input type="checkbox" name="anal_filenames" {% if config.filename_func == 'filename_func' %}checked{% endif %}></td></tr>
|
||||
</tr>
|
||||
<tr><th>{% trans %}Max images per post{% endtrans %}</th><td><select name="max_images">{% for i in 1..5 %}<option value="{{ i }}" {% if config.max_images == i %} selected {% endif %}>{{ i }}</option>{% endfor %}</select></td></tr>
|
||||
</table>
|
||||
|
||||
@ -102,6 +115,22 @@
|
||||
|
||||
<ul style="padding:0;text-align:center;list-style:none">
|
||||
<li><input type="button" value="{% trans 'Add another wordfilter' %}" id="wf_add"></li>
|
||||
</ul>
|
||||
|
||||
<table id="tags" class='fileboard'>
|
||||
<th colspan="2">{% trans %}Tags{% endtrans %}</th>
|
||||
<tr><th>{% trans %}ID{% endtrans %}</th><th>{% trans %}Description{% endtrans %}</th></tr>
|
||||
{% if config.allowed_tags %}
|
||||
{% for tag_id, tag_desc in config.allowed_tags %}
|
||||
<tr><td><input name="tag_id[]" value="{{ tag_id|e }}"></td><td><input name="tag_desc[]" value="{{ tag_desc|e }}"></td></tr>
|
||||
{% endfor %}
|
||||
{% else %}
|
||||
<tr><td><input name="tag_id[]"></td><td><input name="tag_desc[]"></td></tr>
|
||||
{% endif %}
|
||||
</table>
|
||||
|
||||
<ul style="padding:0;text-align:center;list-style:none">
|
||||
<li class='fileboard'><input type="button" value="{% trans 'Add another tag' %}" id="tag_add"></li>
|
||||
<li><input type="submit" value="{% trans 'Save changes' %}"></li>
|
||||
{#
|
||||
{% if mod|hasPermission(config.mod.deleteboard) %}
|
||||
@ -110,4 +139,19 @@
|
||||
</ul>
|
||||
</form>
|
||||
|
||||
<script>$('#wf_add').on('click', function(){$('#wf').append('<tr><td><input name="replace[]"></td><td><input name="with[]"></td></tr>')});</script>
|
||||
<script>
|
||||
$('#wf_add').on('click', function() {
|
||||
$('#wf').append('<tr><td><input name="replace[]"></td><td><input name="with[]"></td></tr>');
|
||||
});
|
||||
|
||||
$('#tag_add').on('click', function() {
|
||||
$('#tags').append('<tr><td><input name="tag_id[]"></td><td><input name="tag_desc[]"></td></tr>');
|
||||
});
|
||||
|
||||
var update_fields;
|
||||
$('#board_type').on('input', update_fields = function() {
|
||||
$('.txtboard, .fileboard, .imgboard').hide();
|
||||
$('.'+$('#board_type').val()).show();
|
||||
});
|
||||
update_fields();
|
||||
</script>
|
||||
|
@ -84,6 +84,18 @@
|
||||
</td>
|
||||
</tr>
|
||||
{% endif %}
|
||||
{% if config.allowed_tags and not id %}
|
||||
<tr>
|
||||
<th>{% trans %}Tag{% endtrans %}</th>
|
||||
<td>
|
||||
<select name="tag">
|
||||
{% for id, tag in config.allowed_tags %}
|
||||
<option value="{{ id|e }}">{{ tag|e }}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
{% endif %}
|
||||
{% if not config.disable_images %}
|
||||
<tr id="upload">
|
||||
<th>
|
||||
@ -230,7 +242,12 @@
|
||||
<td colspan="2">
|
||||
<p class="unimportant board-settings">
|
||||
{% if not config.disable_images %}
|
||||
{% trans %}Allowed file types:{% endtrans %} {{ config.allowed_ext|join(', ') }}{% if config.allowed_ext_files %}, {{ config.allowed_ext_files|join(', ') }}{% endif %}<br />
|
||||
{% trans %}Allowed file types:{% endtrans %}
|
||||
{% if config.allowed_ext_op and not id %}
|
||||
{{ config.allowed_ext_op|join(', ') }}
|
||||
{% else %}
|
||||
{{ config.allowed_ext|join(', ') }}{% if config.allowed_ext_files %}, {{ config.allowed_ext_files|join(', ') }}{% endif %}
|
||||
{% endif %}<br />
|
||||
{% trans %}Max filesize is{% endtrans %} {{ config.max_filesize|filesize }}.<br />
|
||||
{% trans %}Max image dimensions are{% endtrans %} {{ config.max_height }} x {{ config.max_width }}.<br />
|
||||
{% set max_images = config.max_images %} {# workaround for "The text to be translated with "trans" can only contain references to simple variables" #}
|
||||
|
41
templates/post_thread_fileboard.html
Normal file
41
templates/post_thread_fileboard.html
Normal file
@ -0,0 +1,41 @@
|
||||
{% filter remove_whitespace %}
|
||||
{# tabs and new lines will be ignored #}
|
||||
|
||||
{# we are intentionally breaking the thread_ID convention: the jses need to handle this case differently #}
|
||||
<tr id="filethread_{{ post.id }}" class="intro" data-board="{{ board.uri }}">
|
||||
|
||||
<td><input type="checkbox" class="delete" name="delete_{{ post.id }}" id="delete_{{ post.id }}" />
|
||||
<td><a class="post_no" onclick="citeReply({{ post.id }})" href="{{ post.link('q') }}">{{ post.id }}</a>
|
||||
<td>{% include 'post/name.html' %}
|
||||
{% include 'post/flag.html' %}
|
||||
<td>[<a href="{{ config.uri_img }}{{ post.files[0].file }}">{{ post.files[0].filename|e|bidi_cleanup }}</a>]
|
||||
<td>{% if post.modifiers['tag'] %}[{{ post.modifiers['tag']|e }}]{% endif %}
|
||||
<td>{% include 'post/subject.html' %}
|
||||
{% if post.sticky %}
|
||||
{% if config.font_awesome %}
|
||||
<i class="fa fa-thumb-tack"></i>
|
||||
{% else %}
|
||||
<img class="icon" title="Sticky" src="{{ config.image_sticky }}" alt="Sticky" />
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% if post.locked %}
|
||||
{% if config.font_awesome %}
|
||||
<i class="fa fa-lock"></i>
|
||||
{% else %}
|
||||
<img class="icon" title="Locked" src="{{ config.image_locked }}" alt="Locked" />
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% if post.bumplocked and (config.mod.view_bumplock < 0 or (post.mod and post.mod|hasPermission(config.mod.view_bumplock, board.uri))) %}
|
||||
{% if config.font_awesome %}
|
||||
<i class="fa fa-anchor"></i>
|
||||
{% else %}
|
||||
<img class="icon" title="Bumplocked" src="{{ config.image_bumplocked }}" alt="Bumplocked" />
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
<td>{{ post.files[0].size|filesize }}
|
||||
<td>{% include 'post/time.html' %}
|
||||
<td>{{ post.omitted }}
|
||||
<td>{% include 'post/post_controls.html' %}
|
||||
<a href="{{ post.root }}{{ board.dir }}{{ config.dir.res }}{{ config.file_page|sprintf(post.id) }}">[{% trans %}Reply{% endtrans %}]</a>
|
||||
</tr>
|
||||
{% endfilter %}
|
Loading…
x
Reference in New Issue
Block a user