From 61fdd0c72b11f198231938e2a8ad29f8711e58e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcin=20=C5=81abanowski?= Date: Wed, 22 Apr 2015 05:54:48 +0200 Subject: [PATCH 01/12] fileboard support --- inc/config.php | 15 +++++++++- inc/display.php | 4 ++- inc/functions.php | 4 +++ post.php | 19 +++++++++++-- stylesheets/burichan.css | 2 +- stylesheets/caffe.css | 2 +- stylesheets/confraria.css | 8 +++--- stylesheets/dark.css | 10 +++---- stylesheets/dark_roach.css | 24 ++++++++-------- stylesheets/favela.css | 4 +-- stylesheets/ferus.css | 10 +++---- stylesheets/futaba+vichan.css | 4 +-- stylesheets/futaba-light.css | 4 +-- stylesheets/futaba.css | 4 +-- stylesheets/gentoochan.css | 4 +-- stylesheets/jungle.css | 4 +-- stylesheets/luna.css | 22 +++++++-------- stylesheets/miku.css | 8 +++--- stylesheets/nigrachan.css | 8 +++--- stylesheets/notsuba.css | 8 +++--- stylesheets/novo_jungle.css | 6 ++-- stylesheets/piwnichan.css | 4 +-- stylesheets/ricechan.css | 2 +- stylesheets/style.css | 37 ++++++++++++++---------- stylesheets/szalet.css | 4 +-- stylesheets/terminal2.css | 10 +++---- stylesheets/testorange.css | 2 +- stylesheets/v8ch.css | 2 +- stylesheets/wasabi.css | 18 ++++++------ stylesheets/yotsuba.css | 6 ++-- templates/fileboard.html | 15 ++++++++++ templates/post_form.html | 12 ++++++++ templates/post_thread_fileboard.html | 42 ++++++++++++++++++++++++++++ 33 files changed, 219 insertions(+), 109 deletions(-) create mode 100644 templates/fileboard.html create mode 100644 templates/post_thread_fileboard.html diff --git a/inc/config.php b/inc/config.php index e1ad3eec..7e683bb2 100644 --- a/inc/config.php +++ b/inc/config.php @@ -279,7 +279,8 @@ 'file_url', 'json_response', 'user_flag', - 'no_country' + 'no_country', + 'tag' ); @@ -800,6 +801,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 +1610,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 diff --git a/inc/display.php b/inc/display.php index 0f8e3e68..7dd0ffc2 100644 --- a/inc/display.php +++ b/inc/display.php @@ -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, diff --git a/inc/functions.php b/inc/functions.php index 38fe902d..adf6cdb0 100755 --- a/inc/functions.php +++ b/inc/functions.php @@ -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, diff --git a/post.php b/post.php index ce6a5f47..ff32e705 100644 --- a/post.php +++ b/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'); @@ -640,7 +645,11 @@ elseif (isset($_POST['post'])) { error(_('You must choose a flag to post on this board!')); } } - + + if ($config['allowed_tags'] && $_POST['op'] && isset($_POST['tag']) && isset($config['allowed_tags'][$_POST['tag']])) { + $post['body'] .= "\n" . $_POST['tag'] . ""; + } + if (mysql_version() >= 50503) { $post['body_nomarkup'] = $post['body']; // Assume we're using the utf8mb4 charset } @@ -667,7 +676,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']); diff --git a/stylesheets/burichan.css b/stylesheets/burichan.css index f1bbd8e6..6b1de235 100644 --- a/stylesheets/burichan.css +++ b/stylesheets/burichan.css @@ -36,7 +36,7 @@ div.banner { font-weight: normal; } -p.intro span.name { +.intro span.name { font-family: serif; font-size: 12px; } diff --git a/stylesheets/caffe.css b/stylesheets/caffe.css index aee4d5ab..7ba7bd1c 100644 --- a/stylesheets/caffe.css +++ b/stylesheets/caffe.css @@ -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 { diff --git a/stylesheets/confraria.css b/stylesheets/confraria.css index 8769c6bb..3b60aaa6 100644 --- a/stylesheets/confraria.css +++ b/stylesheets/confraria.css @@ -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); } diff --git a/stylesheets/dark.css b/stylesheets/dark.css index 7a0ce6da..209cd86c 100644 --- a/stylesheets/dark.css +++ b/stylesheets/dark.css @@ -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 { diff --git a/stylesheets/dark_roach.css b/stylesheets/dark_roach.css index 7d123c6d..89e050d4 100644 --- a/stylesheets/dark_roach.css +++ b/stylesheets/dark_roach.css @@ -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; } diff --git a/stylesheets/favela.css b/stylesheets/favela.css index 6c9f6d58..52d24c76 100644 --- a/stylesheets/favela.css +++ b/stylesheets/favela.css @@ -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; } diff --git a/stylesheets/ferus.css b/stylesheets/ferus.css index f84d86ca..2517d3b0 100644 --- a/stylesheets/ferus.css +++ b/stylesheets/ferus.css @@ -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; } diff --git a/stylesheets/futaba+vichan.css b/stylesheets/futaba+vichan.css index 5f7d742b..b0b67684 100644 --- a/stylesheets/futaba+vichan.css +++ b/stylesheets/futaba+vichan.css @@ -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 { diff --git a/stylesheets/futaba-light.css b/stylesheets/futaba-light.css index fc67709f..19166adf 100644 --- a/stylesheets/futaba-light.css +++ b/stylesheets/futaba-light.css @@ -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 { diff --git a/stylesheets/futaba.css b/stylesheets/futaba.css index 02c38351..2b4fc1d2 100644 --- a/stylesheets/futaba.css +++ b/stylesheets/futaba.css @@ -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 { diff --git a/stylesheets/gentoochan.css b/stylesheets/gentoochan.css index b5075136..ae7ef2f3 100644 --- a/stylesheets/gentoochan.css +++ b/stylesheets/gentoochan.css @@ -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 { diff --git a/stylesheets/jungle.css b/stylesheets/jungle.css index 1765b3a9..86cb13b8 100644 --- a/stylesheets/jungle.css +++ b/stylesheets/jungle.css @@ -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; } diff --git a/stylesheets/luna.css b/stylesheets/luna.css index 7439f5ca..e2fd6528 100644 --- a/stylesheets/luna.css +++ b/stylesheets/luna.css @@ -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 { diff --git a/stylesheets/miku.css b/stylesheets/miku.css index 84e67933..7a8fb87e 100644 --- a/stylesheets/miku.css +++ b/stylesheets/miku.css @@ -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; } diff --git a/stylesheets/nigrachan.css b/stylesheets/nigrachan.css index 6d0a94fa..28ab3eb3 100644 --- a/stylesheets/nigrachan.css +++ b/stylesheets/nigrachan.css @@ -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; } diff --git a/stylesheets/notsuba.css b/stylesheets/notsuba.css index ef9e1057..8ecb6b21 100644 --- a/stylesheets/notsuba.css +++ b/stylesheets/notsuba.css @@ -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; } diff --git a/stylesheets/novo_jungle.css b/stylesheets/novo_jungle.css index 70501d0a..8c313723 100644 --- a/stylesheets/novo_jungle.css +++ b/stylesheets/novo_jungle.css @@ -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; } diff --git a/stylesheets/piwnichan.css b/stylesheets/piwnichan.css index 2c1ea49a..7780226e 100644 --- a/stylesheets/piwnichan.css +++ b/stylesheets/piwnichan.css @@ -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; } diff --git a/stylesheets/ricechan.css b/stylesheets/ricechan.css index 79b6d145..f01fc9bf 100644 --- a/stylesheets/ricechan.css +++ b/stylesheets/ricechan.css @@ -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 { diff --git a/stylesheets/style.css b/stylesheets/style.css index 0cf9b2a3..954f2f4a 100644 --- a/stylesheets/style.css +++ b/stylesheets/style.css @@ -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; +} diff --git a/stylesheets/szalet.css b/stylesheets/szalet.css index e4deb8ee..77a216a6 100644 --- a/stylesheets/szalet.css +++ b/stylesheets/szalet.css @@ -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; } diff --git a/stylesheets/terminal2.css b/stylesheets/terminal2.css index f7463553..a951bc16 100644 --- a/stylesheets/terminal2.css +++ b/stylesheets/terminal2.css @@ -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 { diff --git a/stylesheets/testorange.css b/stylesheets/testorange.css index cd2161b6..44ebd697 100644 --- a/stylesheets/testorange.css +++ b/stylesheets/testorange.css @@ -202,7 +202,7 @@ div.boardlist.bottom { background-color: rgba(0%, 0%, 0%, 0.45); } -p.intro span.subject { +.intro span.subject { color:#ee8100; } diff --git a/stylesheets/v8ch.css b/stylesheets/v8ch.css index 86492ea6..ba52a5bf 100644 --- a/stylesheets/v8ch.css +++ b/stylesheets/v8ch.css @@ -146,7 +146,7 @@ form table tr th{ background: #fec !important; } -p.intro.thread-hidden{ +.intro.thread-hidden{ padding-bottom: 1em !important; } diff --git a/stylesheets/wasabi.css b/stylesheets/wasabi.css index f898d731..87a81bdd 100644 --- a/stylesheets/wasabi.css +++ b/stylesheets/wasabi.css @@ -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 { diff --git a/stylesheets/yotsuba.css b/stylesheets/yotsuba.css index f5b0540b..3fea60cb 100644 --- a/stylesheets/yotsuba.css +++ b/stylesheets/yotsuba.css @@ -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 { @@ -101,4 +101,4 @@ table.board-list-table .board-tags .board-cell:hover { } table.board-list-table tr:nth-of-type( even ) .board-tags .board-cell { background: #ede2d4; -} \ No newline at end of file +} diff --git a/templates/fileboard.html b/templates/fileboard.html new file mode 100644 index 00000000..a970cecb --- /dev/null +++ b/templates/fileboard.html @@ -0,0 +1,15 @@ + + + + {{ body }} +
  + {% trans %}No.{% endtrans %} + {% trans %}Name{% endtrans %} + {% trans %}File{% endtrans %} + {% trans %}Tag{% endtrans %} + {% trans %}Subject{% endtrans %} + {% trans %}Size{% endtrans %} + {% trans %}Date{% endtrans %} + {% trans %}Replies{% endtrans %} +   +
diff --git a/templates/post_form.html b/templates/post_form.html index 52bf59d9..eaef89be 100644 --- a/templates/post_form.html +++ b/templates/post_form.html @@ -84,6 +84,18 @@ {% endif %} + {% if config.allowed_tags and not id %} + + {% trans %}Tag{% endtrans %} + + + + + {% endif %} {% if not config.disable_images %} diff --git a/templates/post_thread_fileboard.html b/templates/post_thread_fileboard.html new file mode 100644 index 00000000..983bfe17 --- /dev/null +++ b/templates/post_thread_fileboard.html @@ -0,0 +1,42 @@ +{% 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 #} + + + +{{ post.id }} +{% include 'post/name.html' %} + {% include 'post/flag.html' %} +[{{ post.files[0].filename|e|bidi_cleanup }}] +{% if post.modifiers['tag'] %}[{{ post.modifiers['tag'] }}]{% endif %} +{% include 'post/subject.html' %} + {% if post.sticky %} + {% if config.font_awesome %} + + {% else %} + Sticky + {% endif %} + {% endif %} + {% if post.locked %} + {% if config.font_awesome %} + + {% else %} + 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 %} + + {% else %} + Bumplocked + {% endif %} + {% endif %} +{{ post.files[0].size|filesize }} +{% include 'post/time.html' %} +{{ post.omitted }} +{% include 'post/post_controls.html' %} + [{% trans %}Reply{% endtrans %}] + + +{% endfilter %} From 1fb892c2b9493d2eba7cef77dc4b875d7e69300e Mon Sep 17 00:00:00 2001 From: czaks Date: Thu, 23 Apr 2015 02:41:17 +0200 Subject: [PATCH 02/12] fileboard: op tag fix --- post.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/post.php b/post.php index ff32e705..5a583b88 100644 --- a/post.php +++ b/post.php @@ -646,7 +646,7 @@ elseif (isset($_POST['post'])) { } } - if ($config['allowed_tags'] && $_POST['op'] && isset($_POST['tag']) && isset($config['allowed_tags'][$_POST['tag']])) { + if ($config['allowed_tags'] && $post['op'] && isset($_POST['tag']) && isset($config['allowed_tags'][$_POST['tag']])) { $post['body'] .= "\n" . $_POST['tag'] . ""; } From 8bf71ded5b478707c0fbaa4f835d8aaf5f372d8c Mon Sep 17 00:00:00 2001 From: czaks Date: Thu, 23 Apr 2015 03:45:08 +0200 Subject: [PATCH 03/12] fileboard: fix possible XSS (mainly applicable to 8chan) --- templates/post_form.html | 2 +- templates/post_thread_fileboard.html | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/templates/post_form.html b/templates/post_form.html index eaef89be..fbda9802 100644 --- a/templates/post_form.html +++ b/templates/post_form.html @@ -90,7 +90,7 @@ diff --git a/templates/post_thread_fileboard.html b/templates/post_thread_fileboard.html index 983bfe17..1a11ff79 100644 --- a/templates/post_thread_fileboard.html +++ b/templates/post_thread_fileboard.html @@ -9,7 +9,7 @@ {% include 'post/name.html' %} {% include 'post/flag.html' %} [{{ post.files[0].filename|e|bidi_cleanup }}] -{% if post.modifiers['tag'] %}[{{ post.modifiers['tag'] }}]{% endif %} +{% if post.modifiers['tag'] %}[{{ post.modifiers['tag']|e }}]{% endif %} {% include 'post/subject.html' %} {% if post.sticky %} {% if config.font_awesome %} From e2218ff47116fc8a21cafd1129e7c861a7dd8c3a Mon Sep 17 00:00:00 2001 From: czaks Date: Thu, 23 Apr 2015 04:26:29 +0200 Subject: [PATCH 04/12] fileboard: 8chan didn`t apply slugify patchset --- templates/post_thread_fileboard.html | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/templates/post_thread_fileboard.html b/templates/post_thread_fileboard.html index 1a11ff79..3f17907d 100644 --- a/templates/post_thread_fileboard.html +++ b/templates/post_thread_fileboard.html @@ -36,7 +36,6 @@ {% include 'post/time.html' %} {{ post.omitted }} {% include 'post/post_controls.html' %} - [{% trans %}Reply{% endtrans %}] - + [{% trans %}Reply{% endtrans %}] {% endfilter %} From fb34878bb15562368071cef539a42ce5df8d7a22 Mon Sep 17 00:00:00 2001 From: czaks Date: Thu, 23 Apr 2015 04:28:23 +0200 Subject: [PATCH 05/12] fileboard/8chan: mod config --- inc/8chan-mod-pages.php | 57 +++++++++++++++++++++++++++++++---- inc/config.php | 3 ++ templates/mod/settings.html | 59 ++++++++++++++++++++++++++++++++----- 3 files changed, 105 insertions(+), 14 deletions(-) diff --git a/inc/8chan-mod-pages.php b/inc/8chan-mod-pages.php index a8e44311..f0c2bd58 100644 --- a/inc/8chan-mod-pages.php +++ b/inc/8chan-mod-pages.php @@ -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", "
\$1
");' : ''; $katex = isset($_POST['katex']) ? '$config[\'katex\'] = true;$config[\'additional_javascript\'][] = \'js/katex/katex.min.js\'; $config[\'markup\'][] = array("/\[tex\](.+?)\[\/tex\]/ms", "\$1"); $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,45 @@ 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['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"; + } + } + } + $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 +505,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; @@ -542,6 +586,7 @@ if (\$config['disable_images']) \$config['max_pages'] = 10000; $locale +$file_board $add_to_config EOT; diff --git a/inc/config.php b/inc/config.php index 7e683bb2..cdc0eeaf 100644 --- a/inc/config.php +++ b/inc/config.php @@ -794,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', 'torrent'); + // Allowed image file extensions. $config['allowed_ext'][] = 'jpg'; $config['allowed_ext'][] = 'jpeg'; diff --git a/templates/mod/settings.html b/templates/mod/settings.html index 04f6a7cd..eb2673bf 100644 --- a/templates/mod/settings.html +++ b/templates/mod/settings.html @@ -24,14 +24,18 @@ + - + - @@ -39,10 +43,10 @@ - + - - + + @@ -53,7 +57,7 @@ - + + + + +
{% trans %}Board type{% endtrans %}
{% trans %}Country flags{% endtrans %}
{% trans %}/pol/-style user flags{% endtrans %}
Enabling this disables country flags
Make sure to actually upload some first!
{% trans %}Forced anonymous{% endtrans %}
{% trans %}YouTube/Voocaroo embedding{% endtrans %}
{% trans %}Require image for OP{% endtrans %}
{% trans %}Require image for OP{% endtrans %}
{% trans %}Require subject for OP{% endtrans %}
{% trans %}Require user/country flag for all posts{% endtrans %}
{% trans %}Disable images{% endtrans %}
{% trans %}Poster ID's{% endtrans %}
{% trans %}Display SAGE! after saged posts{% endtrans %}
{% trans %}Automatically convert ... to …{% endtrans %}
{% trans %}No index{% endtrans %}
{% trans %}Hide from boards index
and do not index in search engines{% endtrans %}
{% trans %}Archive my board on 8archive.moe{% endtrans %}
{% trans %}This archives your board on 8archive.moe if you opt in{% endtrans %}
{% trans %}[code] tags{% endtrans %}
{% trans %}Oekaki{% endtrans %}
{% trans %}Oekaki{% endtrans %}
{% trans %}Format math between $${% endtrans %}
{% trans %}Allow SWF uploading{% endtrans %}
{% trans %}Allow PDF uploading{% endtrans %}
{% trans %}Allow SWF uploading{% endtrans %}
{% trans %}Allow PDF uploading{% endtrans %}
{% trans %}Enable dice rolling{% endtrans %}
{% trans %}Don't allow users to repost images (whole board){% endtrans %}
{% trans %}Don't allow users to repost images (same thread){% endtrans %}
{% trans %}Public bans{% endtrans %}
{% trans %}Displays your bans for the public{% endtrans %}
{% trans %}Public action log{% endtrans %}
{% trans %}Displays all actions to the public{% endtrans %}
{% trans %}Max number of newlines per post{% endtrans %}
{% trans %}Page count{% endtrans %}
{% trans %}Page count{% endtrans %}
{% trans %}Bump limit{% endtrans %}
{% trans %}Language{% endtrans %}
{% trans %}Read this page for more information about contributing translations:
Translation tutorial or use Transifex{% endtrans %}
{% trans %}Allowed file types{% endtrans %} + {% for type in config.fileboard_allowed_types %} + + {% endfor %} +
{% trans %}Disable OP image upload{% endtrans %}
{% trans %}Max images per post{% endtrans %}
@@ -99,9 +111,25 @@ {% endif %} - +
  • +
+ + + + + {% if config.allowed_tags %} + {% for tag_id, tag_desc in config.allowed_tags %} + + {% endfor %} + {% else %} + + {% endif %} +
{% trans %}Tags{% endtrans %}
{% trans %}ID{% endtrans %}{% trans %}Description{% endtrans %}
+ +
    +
  • {# {% if mod|hasPermission(config.mod.deleteboard) %} @@ -110,4 +138,19 @@
- + From 4916869e4acec82a5b82b86d057fbbfe4021815d Mon Sep 17 00:00:00 2001 From: czaks Date: Thu, 23 Apr 2015 04:31:59 +0200 Subject: [PATCH 06/12] fileboard/8chan: swf too --- inc/config.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/inc/config.php b/inc/config.php index cdc0eeaf..5a046d91 100644 --- a/inc/config.php +++ b/inc/config.php @@ -795,7 +795,7 @@ $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', 'torrent'); + $config['fileboard_allowed_types'] = array('zip', '7z', 'tar', 'gz', 'bz2', 'xz', 'swf', 'txt', 'pdf', 'torrent'); // Allowed image file extensions. $config['allowed_ext'][] = 'jpg'; From 68109155b35e20251457031be7603ae94f9386d8 Mon Sep 17 00:00:00 2001 From: czaks Date: Thu, 23 Apr 2015 05:06:34 +0200 Subject: [PATCH 07/12] append a random number, if a file already exists on a board --- post.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/post.php b/post.php index 5a583b88..d2f86d11 100644 --- a/post.php +++ b/post.php @@ -549,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++; From e4ed7434f4e5d876778c787dea0addbf1e3aa66e Mon Sep 17 00:00:00 2001 From: czaks Date: Thu, 23 Apr 2015 05:08:55 +0200 Subject: [PATCH 08/12] fileboard: allowed ext op, add this to allowed filetypes --- templates/post_form.html | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/templates/post_form.html b/templates/post_form.html index fbda9802..028de0f3 100644 --- a/templates/post_form.html +++ b/templates/post_form.html @@ -242,7 +242,12 @@

{% 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 %}
+ {% 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 %}
{% trans %}Max filesize is{% endtrans %} {{ config.max_filesize|filesize }}.
{% trans %}Max image dimensions are{% endtrans %} {{ config.max_height }} x {{ config.max_width }}.
{% set max_images = config.max_images %} {# workaround for "The text to be translated with "trans" can only contain references to simple variables" #} From 7241d6e65b95b569418c84385e2ef9254f4c1f73 Mon Sep 17 00:00:00 2001 From: czaks Date: Thu, 23 Apr 2015 05:18:43 +0200 Subject: [PATCH 09/12] fileboard/8chan: anal filenames, webms for op --- inc/8chan-mod-pages.php | 8 ++++++++ inc/instance-functions.php | 6 ++++++ templates/mod/settings.html | 5 +++-- 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/inc/8chan-mod-pages.php b/inc/8chan-mod-pages.php index f0c2bd58..ab8a058a 100644 --- a/inc/8chan-mod-pages.php +++ b/inc/8chan-mod-pages.php @@ -452,6 +452,11 @@ FLAGS; 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'])) { @@ -470,6 +475,8 @@ FLAGS; } } + $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'); @@ -586,6 +593,7 @@ if (\$config['disable_images']) \$config['max_pages'] = 10000; $locale +$anal_filenames $file_board $add_to_config EOT; diff --git a/inc/instance-functions.php b/inc/instance-functions.php index 71e933d1..aa4bf010 100644 --- a/inc/instance-functions.php +++ b/inc/instance-functions.php @@ -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; +} diff --git a/templates/mod/settings.html b/templates/mod/settings.html index eb2673bf..931651dd 100644 --- a/templates/mod/settings.html +++ b/templates/mod/settings.html @@ -73,8 +73,9 @@ {% endfor %} - {% trans %}Disable OP image upload{% endtrans %} - + {% trans %}Disable OP image upload{% endtrans %} + + {% trans %}Keep original filename{% endtrans %} {% trans %}Max images per post{% endtrans %} From f00930a592d8717e2b0939d354d26d1e0c6b14f2 Mon Sep 17 00:00:00 2001 From: czaks Date: Thu, 23 Apr 2015 05:24:07 +0200 Subject: [PATCH 10/12] fix textboards --- inc/8chan-mod-pages.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/inc/8chan-mod-pages.php b/inc/8chan-mod-pages.php index ab8a058a..05821586 100644 --- a/inc/8chan-mod-pages.php +++ b/inc/8chan-mod-pages.php @@ -589,13 +589,13 @@ FLAGS; \$config['max_newlines'] = $max_newlines; \$config['oekaki'] = $oekaki; $code_tags $katex $replace $multiimage $allow_flash $allow_pdf $user_flags -if (\$config['disable_images']) - \$config['max_pages'] = 10000; - $locale $anal_filenames $file_board $add_to_config + +if (\$config['disable_images']) + \$config['max_pages'] = 10000; EOT; // Clean up our CSS...no more expression() or off-site URLs. From b49e92ad91f761321e64f2640c2a77c4286a01a7 Mon Sep 17 00:00:00 2001 From: czaks Date: Thu, 23 Apr 2015 05:25:13 +0200 Subject: [PATCH 11/12] ok, fine, this is a better place for this --- inc/8chan-mod-pages.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/inc/8chan-mod-pages.php b/inc/8chan-mod-pages.php index 05821586..f080c70f 100644 --- a/inc/8chan-mod-pages.php +++ b/inc/8chan-mod-pages.php @@ -592,10 +592,11 @@ $code_tags $katex $replace $multiimage $allow_flash $allow_pdf $user_flags $locale $anal_filenames $file_board -$add_to_config if (\$config['disable_images']) \$config['max_pages'] = 10000; + +$add_to_config EOT; // Clean up our CSS...no more expression() or off-site URLs. From e56112879315baa76e0164e4ddddda106a39aa05 Mon Sep 17 00:00:00 2001 From: czaks Date: Thu, 23 Apr 2015 07:57:52 +0200 Subject: [PATCH 12/12] fix error while installing themes; thanks xixi --- inc/mod/pages.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/inc/mod/pages.php b/inc/mod/pages.php index 45cb92ba..3d78fb31 100644 --- a/inc/mod/pages.php +++ b/inc/mod/pages.php @@ -3340,7 +3340,7 @@ function mod_theme_configure($theme_name) { // Clean cache Cache::delete("themes"); - Cache::delete("theme_settings_".$theme); + Cache::delete("theme_settings_".$theme_name); $result = true; $message = false;