mirror of
https://github.com/vichan-devel/vichan.git
synced 2024-11-14 19:07:39 +01:00
vichan-update
This commit is contained in:
commit
b070fdc550
@ -380,8 +380,7 @@ $config['nicenotice_reasons'][] = "We care, and we hope you feel better soon. We
|
||||
'lock',
|
||||
'raw',
|
||||
'embed',
|
||||
'recaptcha_challenge_field',
|
||||
'recaptcha_response_field',
|
||||
'g-recaptcha-response',
|
||||
'captcha_cookie',
|
||||
'captcha_text',
|
||||
'spoiler',
|
||||
@ -2044,6 +2043,9 @@ $config['nicenotice_reasons'][] = "We care, and we hope you feel better soon. We
|
||||
// Enable the search form
|
||||
$config['search']['enable'] = false;
|
||||
|
||||
// Enable search in the board index.
|
||||
$config['board_search'] = false;
|
||||
|
||||
// Maximal number of queries per IP address per minutes
|
||||
$config['search']['queries_per_minutes'] = Array(15, 2);
|
||||
|
||||
|
@ -320,9 +320,6 @@ function loadConfig() {
|
||||
if ($config['syslog'])
|
||||
openlog('tinyboard', LOG_ODELAY, LOG_SYSLOG); // open a connection to sysem logger
|
||||
|
||||
if ($config['recaptcha'])
|
||||
require_once 'inc/lib/recaptcha/recaptchalib.php';
|
||||
|
||||
if ($config['cache']['enabled'])
|
||||
require_once 'inc/cache.php';
|
||||
|
||||
|
@ -1,22 +0,0 @@
|
||||
Copyright (c) 2007 reCAPTCHA -- http://recaptcha.net
|
||||
AUTHORS:
|
||||
Mike Crawford
|
||||
Ben Maurer
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
@ -1,277 +0,0 @@
|
||||
<?php
|
||||
/*
|
||||
* This is a PHP library that handles calling reCAPTCHA.
|
||||
* - Documentation and latest version
|
||||
* http://recaptcha.net/plugins/php/
|
||||
* - Get a reCAPTCHA API Key
|
||||
* https://www.google.com/recaptcha/admin/create
|
||||
* - Discussion group
|
||||
* http://groups.google.com/group/recaptcha
|
||||
*
|
||||
* Copyright (c) 2007 reCAPTCHA -- http://recaptcha.net
|
||||
* AUTHORS:
|
||||
* Mike Crawford
|
||||
* Ben Maurer
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
/**
|
||||
* The reCAPTCHA server URL's
|
||||
*/
|
||||
define("RECAPTCHA_API_SERVER", "http://www.google.com/recaptcha/api");
|
||||
define("RECAPTCHA_API_SECURE_SERVER", "https://www.google.com/recaptcha/api");
|
||||
define("RECAPTCHA_VERIFY_SERVER", "www.google.com");
|
||||
|
||||
/**
|
||||
* Encodes the given data into a query string format
|
||||
* @param $data - array of string elements to be encoded
|
||||
* @return string - encoded request
|
||||
*/
|
||||
function _recaptcha_qsencode ($data) {
|
||||
$req = "";
|
||||
foreach ( $data as $key => $value )
|
||||
$req .= $key . '=' . urlencode( stripslashes($value) ) . '&';
|
||||
|
||||
// Cut the last '&'
|
||||
$req=substr($req,0,strlen($req)-1);
|
||||
return $req;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Submits an HTTP POST to a reCAPTCHA server
|
||||
* @param string $host
|
||||
* @param string $path
|
||||
* @param array $data
|
||||
* @param int port
|
||||
* @return array response
|
||||
*/
|
||||
function _recaptcha_http_post($host, $path, $data, $port = 80) {
|
||||
|
||||
$req = _recaptcha_qsencode ($data);
|
||||
|
||||
$http_request = "POST $path HTTP/1.0\r\n";
|
||||
$http_request .= "Host: $host\r\n";
|
||||
$http_request .= "Content-Type: application/x-www-form-urlencoded;\r\n";
|
||||
$http_request .= "Content-Length: " . strlen($req) . "\r\n";
|
||||
$http_request .= "User-Agent: reCAPTCHA/PHP\r\n";
|
||||
$http_request .= "\r\n";
|
||||
$http_request .= $req;
|
||||
|
||||
$response = '';
|
||||
if( false == ( $fs = @fsockopen($host, $port, $errno, $errstr, 10) ) ) {
|
||||
die ('Could not open socket');
|
||||
}
|
||||
|
||||
fwrite($fs, $http_request);
|
||||
|
||||
while ( !feof($fs) )
|
||||
$response .= fgets($fs, 1160); // One TCP-IP packet
|
||||
fclose($fs);
|
||||
$response = explode("\r\n\r\n", $response, 2);
|
||||
|
||||
return $response;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Gets the challenge HTML (javascript and non-javascript version).
|
||||
* This is called from the browser, and the resulting reCAPTCHA HTML widget
|
||||
* is embedded within the HTML form it was called from.
|
||||
* @param string $pubkey A public key for reCAPTCHA
|
||||
* @param string $error The error given by reCAPTCHA (optional, default is null)
|
||||
* @param boolean $use_ssl Should the request be made over ssl? (optional, default is false)
|
||||
|
||||
* @return string - The HTML to be embedded in the user's form.
|
||||
*/
|
||||
function recaptcha_get_html ($pubkey, $error = null, $use_ssl = false)
|
||||
{
|
||||
if ($pubkey == null || $pubkey == '') {
|
||||
die ("To use reCAPTCHA you must get an API key from <a href='https://www.google.com/recaptcha/admin/create'>https://www.google.com/recaptcha/admin/create</a>");
|
||||
}
|
||||
|
||||
if ($use_ssl) {
|
||||
$server = RECAPTCHA_API_SECURE_SERVER;
|
||||
} else {
|
||||
$server = RECAPTCHA_API_SERVER;
|
||||
}
|
||||
|
||||
$errorpart = "";
|
||||
if ($error) {
|
||||
$errorpart = "&error=" . $error;
|
||||
}
|
||||
return '<script type="text/javascript" src="'. $server . '/challenge?k=' . $pubkey . $errorpart . '"></script>
|
||||
|
||||
<noscript>
|
||||
<iframe src="'. $server . '/noscript?k=' . $pubkey . $errorpart . '" height="300" width="500" frameborder="0"></iframe><br/>
|
||||
<textarea name="recaptcha_challenge_field" rows="3" cols="40"></textarea>
|
||||
<input type="hidden" name="recaptcha_response_field" value="manual_challenge"/>
|
||||
</noscript>';
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* A ReCaptchaResponse is returned from recaptcha_check_answer()
|
||||
*/
|
||||
class ReCaptchaResponse {
|
||||
var $is_valid;
|
||||
var $error;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Calls an HTTP POST function to verify if the user's guess was correct
|
||||
* @param string $privkey
|
||||
* @param string $remoteip
|
||||
* @param string $challenge
|
||||
* @param string $response
|
||||
* @param array $extra_params an array of extra variables to post to the server
|
||||
* @return ReCaptchaResponse
|
||||
*/
|
||||
function recaptcha_check_answer ($privkey, $remoteip, $challenge, $response, $extra_params = array())
|
||||
{
|
||||
if ($privkey == null || $privkey == '') {
|
||||
die ("To use reCAPTCHA you must get an API key from <a href='https://www.google.com/recaptcha/admin/create'>https://www.google.com/recaptcha/admin/create</a>");
|
||||
}
|
||||
|
||||
if ($remoteip == null || $remoteip == '') {
|
||||
die ("For security reasons, you must pass the remote ip to reCAPTCHA");
|
||||
}
|
||||
|
||||
|
||||
|
||||
//discard spam submissions
|
||||
if ($challenge == null || strlen($challenge) == 0 || $response == null || strlen($response) == 0) {
|
||||
$recaptcha_response = new ReCaptchaResponse();
|
||||
$recaptcha_response->is_valid = false;
|
||||
$recaptcha_response->error = 'incorrect-captcha-sol';
|
||||
return $recaptcha_response;
|
||||
}
|
||||
|
||||
$response = _recaptcha_http_post (RECAPTCHA_VERIFY_SERVER, "/recaptcha/api/verify",
|
||||
array (
|
||||
'privatekey' => $privkey,
|
||||
'remoteip' => $remoteip,
|
||||
'challenge' => $challenge,
|
||||
'response' => $response
|
||||
) + $extra_params
|
||||
);
|
||||
|
||||
$answers = explode ("\n", $response [1]);
|
||||
$recaptcha_response = new ReCaptchaResponse();
|
||||
|
||||
if (trim ($answers [0]) == 'true') {
|
||||
$recaptcha_response->is_valid = true;
|
||||
}
|
||||
else {
|
||||
$recaptcha_response->is_valid = false;
|
||||
$recaptcha_response->error = $answers [1];
|
||||
}
|
||||
return $recaptcha_response;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* gets a URL where the user can sign up for reCAPTCHA. If your application
|
||||
* has a configuration page where you enter a key, you should provide a link
|
||||
* using this function.
|
||||
* @param string $domain The domain where the page is hosted
|
||||
* @param string $appname The name of your application
|
||||
*/
|
||||
function recaptcha_get_signup_url ($domain = null, $appname = null) {
|
||||
return "https://www.google.com/recaptcha/admin/create?" . _recaptcha_qsencode (array ('domains' => $domain, 'app' => $appname));
|
||||
}
|
||||
|
||||
function _recaptcha_aes_pad($val) {
|
||||
$block_size = 16;
|
||||
$numpad = $block_size - (strlen ($val) % $block_size);
|
||||
return str_pad($val, strlen ($val) + $numpad, chr($numpad));
|
||||
}
|
||||
|
||||
/* Mailhide related code */
|
||||
|
||||
function _recaptcha_aes_encrypt($val,$ky) {
|
||||
if (! function_exists ("mcrypt_encrypt")) {
|
||||
die ("To use reCAPTCHA Mailhide, you need to have the mcrypt php module installed.");
|
||||
}
|
||||
$mode=MCRYPT_MODE_CBC;
|
||||
$enc=MCRYPT_RIJNDAEL_128;
|
||||
$val=_recaptcha_aes_pad($val);
|
||||
return mcrypt_encrypt($enc, $ky, $val, $mode, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0");
|
||||
}
|
||||
|
||||
|
||||
function _recaptcha_mailhide_urlbase64 ($x) {
|
||||
return strtr(base64_encode ($x), '+/', '-_');
|
||||
}
|
||||
|
||||
/* gets the reCAPTCHA Mailhide url for a given email, public key and private key */
|
||||
function recaptcha_mailhide_url($pubkey, $privkey, $email) {
|
||||
if ($pubkey == '' || $pubkey == null || $privkey == "" || $privkey == null) {
|
||||
die ("To use reCAPTCHA Mailhide, you have to sign up for a public and private key, " .
|
||||
"you can do so at <a href='http://www.google.com/recaptcha/mailhide/apikey'>http://www.google.com/recaptcha/mailhide/apikey</a>");
|
||||
}
|
||||
|
||||
|
||||
$ky = pack('H*', $privkey);
|
||||
$cryptmail = _recaptcha_aes_encrypt ($email, $ky);
|
||||
|
||||
return "http://www.google.com/recaptcha/mailhide/d?k=" . $pubkey . "&c=" . _recaptcha_mailhide_urlbase64 ($cryptmail);
|
||||
}
|
||||
|
||||
/**
|
||||
* gets the parts of the email to expose to the user.
|
||||
* eg, given johndoe@example,com return ["john", "example.com"].
|
||||
* the email is then displayed as john...@example.com
|
||||
*/
|
||||
function _recaptcha_mailhide_email_parts ($email) {
|
||||
$arr = preg_split("/@/", $email );
|
||||
|
||||
if (strlen ($arr[0]) <= 4) {
|
||||
$arr[0] = substr ($arr[0], 0, 1);
|
||||
} else if (strlen ($arr[0]) <= 6) {
|
||||
$arr[0] = substr ($arr[0], 0, 3);
|
||||
} else {
|
||||
$arr[0] = substr ($arr[0], 0, 4);
|
||||
}
|
||||
return $arr;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets html to display an email address given a public an private key.
|
||||
* to get a key, go to:
|
||||
*
|
||||
* http://www.google.com/recaptcha/mailhide/apikey
|
||||
*/
|
||||
function recaptcha_mailhide_html($pubkey, $privkey, $email) {
|
||||
$emailparts = _recaptcha_mailhide_email_parts ($email);
|
||||
$url = recaptcha_mailhide_url ($pubkey, $privkey, $email);
|
||||
|
||||
return htmlentities($emailparts[0]) . "<a href='" . htmlentities ($url) .
|
||||
"' onclick=\"window.open('" . htmlentities ($url) . "', '', 'toolbar=0,scrollbars=0,location=0,statusbar=0,menubar=0,resizable=0,width=500,height=300'); return false;\" title=\"Reveal this e-mail address\">...</a>@" . htmlentities ($emailparts [1]);
|
||||
|
||||
}
|
||||
|
||||
|
||||
?>
|
@ -1759,7 +1759,9 @@ function mod_move($originBoard, $postID) {
|
||||
$post['has_file'] = true;
|
||||
foreach ($post['files'] as $i => &$file) {
|
||||
$file['file_path'] = sprintf($config['board_path'], $board['uri']) . $config['dir']['img'] . $file['file'];
|
||||
$file['thumb_path'] = sprintf($config['board_path'], $board['uri']) . $config['dir']['thumb'] . $file['thumb'];
|
||||
|
||||
if (isset($file['thumb']))
|
||||
$file['thumb_path'] = sprintf($config['board_path'], $board['uri']) . $config['dir']['thumb'] . $file['thumb'];
|
||||
}
|
||||
} else {
|
||||
$post['has_file'] = false;
|
||||
|
8
js/jquery.min.js
vendored
8
js/jquery.min.js
vendored
File diff suppressed because one or more lines are too long
16
post.php
16
post.php
@ -397,14 +397,16 @@ if (isset($_POST['delete'])) {
|
||||
if (!$dropped_post) {
|
||||
// Check for CAPTCHA right after opening the board so the "return" link is in there
|
||||
if ($config['recaptcha']) {
|
||||
if (!isset($_POST['recaptcha_challenge_field']) || !isset($_POST['recaptcha_response_field']))
|
||||
if (!isset($_POST['g-recaptcha-response']))
|
||||
error($config['error']['bot']);
|
||||
// Check what reCAPTCHA has to say...
|
||||
$resp = recaptcha_check_answer($config['recaptcha_private'],
|
||||
$_SERVER['REMOTE_ADDR'],
|
||||
$_POST['recaptcha_challenge_field'],
|
||||
$_POST['recaptcha_response_field']);
|
||||
if (!$resp->is_valid) {
|
||||
|
||||
// Check what reCAPTCHA has to say...
|
||||
$resp = json_decode(file_get_contents(sprintf('https://www.google.com/recaptcha/api/siteverify?secret=%s&response=%s&remoteip=%s',
|
||||
$config['recaptcha_private'],
|
||||
urlencode($_POST['g-recaptcha-response']),
|
||||
$_SERVER['REMOTE_ADDR'])), true);
|
||||
|
||||
if (!$resp['success']) {
|
||||
error($config['error']['captcha']);
|
||||
}
|
||||
}
|
||||
|
@ -15,7 +15,7 @@
|
||||
$boards = listBoards(TRUE);
|
||||
}
|
||||
|
||||
$body = Element('search_form.html', Array('boards' => $boards, 'b' => isset($_GET['board']) ? $_GET['board'] : false, 'search' => isset($_GET['search']) ? str_replace('"', '"', utf8tohtml($_GET['search'])) : false));
|
||||
$body = Element('search_form.html', Array('boards' => $boards, 'board' => isset($_GET['board']) ? $_GET['board'] : false, 'search' => isset($_GET['search']) ? str_replace('"', '"', utf8tohtml($_GET['search'])) : false));
|
||||
|
||||
if(isset($_GET['search']) && !empty($_GET['search']) && isset($_GET['board']) && in_array($_GET['board'], $boards)) {
|
||||
$phrase = $_GET['search'];
|
||||
|
BIN
stylesheets/img/fade-gray.png
Normal file
BIN
stylesheets/img/fade-gray.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 196 B |
401
stylesheets/sharp.css
Normal file
401
stylesheets/sharp.css
Normal file
@ -0,0 +1,401 @@
|
||||
/**
|
||||
* sharp.css
|
||||
* For AwsumChan by Circlepuller
|
||||
*/
|
||||
body {
|
||||
background: #FFF url('img/fade-gray.png') repeat-x 50% 0%;
|
||||
color: black;
|
||||
font-family: arial, helvetica, sans-serif;
|
||||
font-size: 10pt;
|
||||
margin: 0 8px;
|
||||
padding-left: 5px;
|
||||
padding-right: 5px;
|
||||
}
|
||||
table * {
|
||||
margin: 0;
|
||||
}
|
||||
a:link, a:visited {
|
||||
text-decoration: underline;
|
||||
color: #AF0A0F;
|
||||
}
|
||||
a:link:hover, a:visited:hover {
|
||||
color: #F00;
|
||||
}
|
||||
a.post_no {
|
||||
color: inherit;
|
||||
text-decoration: none;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
.intro a.post_no, p.intro a.email {
|
||||
margin: 0;
|
||||
}
|
||||
.intro a.email span.name {
|
||||
color: #34345C;
|
||||
}
|
||||
.intro a.email:hover span.name {
|
||||
color: #F00;
|
||||
}
|
||||
.intro label {
|
||||
display: inline;
|
||||
}
|
||||
h2 {
|
||||
color: #AF0A0F;
|
||||
font-size: 11pt;
|
||||
margin: 0px;
|
||||
padding: 0px;
|
||||
}
|
||||
h1 {
|
||||
font-family: tahoma, sans-serif;
|
||||
letter-spacing: -2px;
|
||||
font-size: 20pt;
|
||||
margin: 0;
|
||||
}
|
||||
h1.logo img {
|
||||
display: inline;
|
||||
float: none;
|
||||
background-image: url('/static/logo_bg.gif');
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
}
|
||||
header div.subtitle, h1 {
|
||||
color: #000;
|
||||
text-align: center;
|
||||
}
|
||||
header div.subtitle {
|
||||
font-size: 8pt;
|
||||
}
|
||||
form {
|
||||
margin-bottom: 4em;
|
||||
}
|
||||
form table {
|
||||
margin: auto;
|
||||
}
|
||||
form table input {
|
||||
height: auto;
|
||||
}
|
||||
input[type="text"], input[type="password"], textarea {
|
||||
border: 1px solid #a9a9a9;
|
||||
text-indent: 0px;
|
||||
text-shadow: none;
|
||||
text-transform: none;
|
||||
word-spacing: normal;
|
||||
padding: 4px;
|
||||
}
|
||||
form table tr td {
|
||||
text-align: left;
|
||||
margin: 0px;
|
||||
padding: 0px;
|
||||
}
|
||||
form table tr th {
|
||||
text-align: left;
|
||||
padding: 4px;
|
||||
}
|
||||
form table tr th {
|
||||
background: #AF0A0F;
|
||||
color: #FFF;
|
||||
border: 1px solid #800000;
|
||||
}
|
||||
form table tr td div {
|
||||
text-align: center;
|
||||
float: left;
|
||||
}
|
||||
form table tr td div input {
|
||||
display: block;
|
||||
margin: 2px auto 0 auto;
|
||||
}
|
||||
form table tr td div label {
|
||||
font-size: 10px;
|
||||
}
|
||||
.unimportant, .unimportant * {
|
||||
font-size: 10px;
|
||||
}
|
||||
p.fileinfo {
|
||||
display: block;
|
||||
margin: 0px;
|
||||
padding-right: 7em;
|
||||
}
|
||||
div.banner {
|
||||
background-color: #AF0A0F;
|
||||
font-size: 12pt;
|
||||
font-weight: bold;
|
||||
text-align: center;
|
||||
margin: 1em 0;
|
||||
}
|
||||
div.banner, div.banner a {
|
||||
color: white;
|
||||
}
|
||||
div.banner a:hover {
|
||||
color: #EEF2FF;
|
||||
text-decoration: none;
|
||||
}
|
||||
img.banner, img.board_image {
|
||||
float: none;
|
||||
margin: 4px auto 0 auto;
|
||||
}
|
||||
img {
|
||||
display: block;
|
||||
float: left;
|
||||
margin: 10px 20px;
|
||||
border: none;
|
||||
}
|
||||
div.post img {
|
||||
padding: 5px;
|
||||
margin: 5px 20px 0 0;
|
||||
}
|
||||
div.post img.icon {
|
||||
display: inline;
|
||||
float: none;
|
||||
margin: 0 5px;
|
||||
padding: 0;
|
||||
}
|
||||
div.post.op {
|
||||
margin-right: 20px;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
div.post.op hr {
|
||||
border-color: #D9BFB7;
|
||||
}
|
||||
.intro {
|
||||
margin: 0.5em 0;
|
||||
padding: 0;
|
||||
padding-bottom: 0.2em;
|
||||
}
|
||||
input.delete {
|
||||
float: left;
|
||||
margin: 1px 6px 0 0;
|
||||
}
|
||||
.intro span.subject {
|
||||
color: #0F0C5D;
|
||||
font-weight: bold;
|
||||
}
|
||||
.intro span.name {
|
||||
color: #117743;
|
||||
font-weight: bold;
|
||||
}
|
||||
.intro a.capcode, p.intro a.nametag {
|
||||
color: #F00000;
|
||||
margin-left: 0;
|
||||
}
|
||||
.intro a {
|
||||
margin-left: 8px;
|
||||
}
|
||||
div.delete {
|
||||
float: right;
|
||||
}
|
||||
div.post.reply p {
|
||||
margin: 0.3em 0 0 0;
|
||||
}
|
||||
div.post.reply div.body {
|
||||
margin-left: 1.8em;
|
||||
margin-top: 0.8em;
|
||||
padding-right: 3em;
|
||||
padding-bottom: 0.3em;
|
||||
}
|
||||
div.post.reply.highlighted {
|
||||
background-color: #DCDCDC;
|
||||
border-color: #999;
|
||||
}
|
||||
div.post.reply div.body a {
|
||||
color: #D00;
|
||||
}
|
||||
div.post {
|
||||
max-width: 97%;
|
||||
}
|
||||
div.post div.body {
|
||||
word-wrap: break-word;
|
||||
}
|
||||
div.post.reply {
|
||||
background: #EEE;
|
||||
margin: 0.2em 16px;
|
||||
padding: 0.2em 0.3em 0.5em 0.6em;
|
||||
border-width: 1px;
|
||||
border-style: none solid solid none;
|
||||
border-color: #DCDCDC;
|
||||
display: inline-block;
|
||||
}
|
||||
span.trip {
|
||||
color: #228854;
|
||||
}
|
||||
span.quote {
|
||||
color: #3C6D8A;
|
||||
}
|
||||
span.omitted {
|
||||
display: block;
|
||||
margin-top: 1em;
|
||||
}
|
||||
br.clear {
|
||||
clear: left;
|
||||
}
|
||||
span.controls {
|
||||
float: right;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
font-size: 80%;
|
||||
}
|
||||
span.controls.op {
|
||||
float: none;
|
||||
margin-left: 10px;
|
||||
}
|
||||
span.controls a {
|
||||
margin: 0;
|
||||
}
|
||||
div#wrap {
|
||||
width: 900px;
|
||||
margin:0 auto;
|
||||
}
|
||||
div.ban {
|
||||
background-color: white;
|
||||
border: 1px solid #AF0A0F;
|
||||
max-width: 700px;
|
||||
margin: 30px auto;
|
||||
}
|
||||
div.ban p, div.ban h2 {
|
||||
padding: 3px 7px;
|
||||
}
|
||||
div.ban h2 {
|
||||
background: #AF0A0F;
|
||||
color: #FFF;
|
||||
font-size: 12pt;
|
||||
}
|
||||
div.ban p {
|
||||
font-size: 12px;
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
div.ban p.reason {
|
||||
font-weight: bold;
|
||||
}
|
||||
span.heading {
|
||||
color: #000;
|
||||
font-size: 11pt;
|
||||
font-weight: bold;
|
||||
display: block;
|
||||
}
|
||||
span.spoiler {
|
||||
background: black;
|
||||
color: black;
|
||||
}
|
||||
div.post.reply div.body span.spoiler a {
|
||||
color: black;
|
||||
}
|
||||
span.spoiler:hover, div.post.reply div.body span.spoiler:hover a {
|
||||
color: white;
|
||||
}
|
||||
div.styles {
|
||||
float: right;
|
||||
padding-bottom: 20px;
|
||||
}
|
||||
div.styles a {
|
||||
margin: 0 10px;
|
||||
}
|
||||
div.styles a.selected {
|
||||
text-decoration: none;
|
||||
}
|
||||
table.test {
|
||||
width: 100%;
|
||||
}
|
||||
table.test td, table.test th {
|
||||
text-align: left;
|
||||
padding: 5px;
|
||||
}
|
||||
table.test tr.h th {
|
||||
background: #AF0A0F;
|
||||
}
|
||||
table.test td img {
|
||||
margin: 0;
|
||||
}
|
||||
fieldset label {
|
||||
display: block;
|
||||
}
|
||||
div.pages {
|
||||
color: #999;
|
||||
background: #EEE;
|
||||
display: inline;
|
||||
padding: 8px;
|
||||
border-right: 1px solid #DCDCDC;
|
||||
border-bottom: 1px solid #DCDCDC;
|
||||
}
|
||||
div.pages a.selected {
|
||||
color: black;
|
||||
font-weight: bolder;
|
||||
}
|
||||
div.pages a:link {
|
||||
text-decoration: none;
|
||||
}
|
||||
div.pages form {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
display: inline;
|
||||
}
|
||||
div.pages form input {
|
||||
margin: 0 5px;
|
||||
display: inline;
|
||||
}
|
||||
hr {
|
||||
border: none;
|
||||
border-top: 1px solid #DCDCDC;
|
||||
height: 0px;
|
||||
}
|
||||
div.boardlist {
|
||||
color: #999;
|
||||
font-size: 9pt;
|
||||
margin-top: 3px;
|
||||
}
|
||||
div.boardlist.bottom {
|
||||
margin-top: 20px;
|
||||
}
|
||||
div.boardlist a {
|
||||
text-decoration: none;
|
||||
color: #AF0A0F;
|
||||
}
|
||||
div.report {
|
||||
color: #333;
|
||||
}
|
||||
table.modlog {
|
||||
margin: auto;
|
||||
width: 100%;
|
||||
}
|
||||
table.modlog tr td {
|
||||
text-align: left;
|
||||
margin: 0px;
|
||||
padding: 4px 15px 0 0;
|
||||
}
|
||||
table.modlog tr th {
|
||||
text-align: left;
|
||||
padding: 4px 15px 5px 5px;
|
||||
white-space: nowrap;
|
||||
}
|
||||
table.modlog tr th {
|
||||
background: #AF0A0F;
|
||||
}
|
||||
td.minimal, th.minimal {
|
||||
width: 1%;
|
||||
white-space: nowrap;
|
||||
}
|
||||
div.top_notice {
|
||||
text-align: center;
|
||||
margin: 5px auto;
|
||||
}
|
||||
span.public_ban {
|
||||
display: block;
|
||||
color: red;
|
||||
font-weight: bold;
|
||||
margin-top: 15px;
|
||||
}
|
||||
span.toolong {
|
||||
display: block;
|
||||
margin-top: 15px;
|
||||
}
|
||||
div.blotter {
|
||||
color: red;
|
||||
font-weight: bold;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.desktop-style div.boardlist:nth-child(1) {
|
||||
|
||||
}
|
||||
|
||||
.desktop-style div.boardlist:nth-child(1):hover, .desktop-style div.boardlist:nth-child(1).cb-menu {
|
||||
background-color: rgba(80%, 80%, 80%, 0.35);
|
||||
}
|
@ -20,7 +20,8 @@
|
||||
{% for javascript in config.additional_javascript %}<script type="text/javascript" src="{{ config.additional_javascript_url }}{{ javascript }}"></script>{% endfor %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% if config.recaptcha %}<style type="text/css">{% raw %}
|
||||
{% if config.recaptcha %}<script src="//www.google.com/recaptcha/api.js"></script>
|
||||
<style type="text/css">{% raw %}
|
||||
#recaptcha_area {
|
||||
float: none !important;
|
||||
padding: 0 !important;
|
||||
|
@ -61,6 +61,17 @@
|
||||
|
||||
{% if config.global_message %}<hr /><div class="blotter">{{ config.global_message }}</div>{% endif %}
|
||||
<hr />
|
||||
{% if config.board_search %}
|
||||
<!-- Start Search Form -->
|
||||
<form style="display:inline" action="/search.php">
|
||||
<p style="margin: 10px;">
|
||||
<input type="text" name="search" placeholder="{{ board.uri }} search">
|
||||
<input type="hidden" name="board" value="{{ board.uri }}">
|
||||
<input type="submit" value="Search">
|
||||
</p>
|
||||
</form>
|
||||
<!-- End Search Form -->
|
||||
{% endif %}
|
||||
<form name="postcontrols" action="{{ config.post_url }}" method="post">
|
||||
<input type="hidden" name="board" value="{{ board.uri }}" />
|
||||
{% if mod %}<input type="hidden" name="mod" value="1" />{% endif %}
|
||||
|
@ -81,7 +81,7 @@
|
||||
{{ antibot.html() }}
|
||||
</th>
|
||||
<td>
|
||||
<script type="text/javascript" src="//www.google.com/recaptcha/api/challenge?k={{ config.recaptcha_public }}"></script>
|
||||
<div class="g-recaptcha" data-sitekey="{{ config.recaptcha_public }}"></div>
|
||||
{{ antibot.html() }}
|
||||
</td>
|
||||
</tr>
|
||||
|
@ -80,6 +80,8 @@
|
||||
}
|
||||
else {
|
||||
$post['src'] = $config['uri_thumb'] . $files[0]->thumb;
|
||||
$post['thumbwidth'] = $files[0]->thumbwidth;
|
||||
$post['thumbheight'] = $files[0]->thumbheight;
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user