Compare commits
193 Commits
7f9ca15178
...
1e80c4b724
Author | SHA1 | Date |
---|---|---|
discomrade | 1e80c4b724 | 1 year ago |
discomrade | 81152e1392 | 1 year ago |
perdedora | 0432d8d533 | 1 year ago |
discomrade | ac037596ef | 1 year ago |
discomrade | 0596bf7124 | 1 year ago |
discomrade | 036b48c78b | 1 year ago |
discomrade | 8eeb7b1968 | 1 year ago |
Majin Bejitto | 4820ac5a94 | 1 year ago |
deysu | 7229adeef5 | 1 year ago |
清靈語 | 93d7bead55 | 1 year ago |
runit | e9af479521 | 2 years ago |
Fred Brennan | 35bafa52d7 | 2 years ago |
sshscp15 | 0f984f7299 | 2 years ago |
27chan | 0c35faa4ba | 2 years ago |
sshscp15 | e742811f32 | 2 years ago |
sshscp15 | 7d5cd8111b | 2 years ago |
Fred Brennan | a1e7478d90 | 2 years ago |
Fred Brennan | f57584dbf8 | 2 years ago |
C Hatfield | 3e53fa3a01 | 2 years ago |
haruhianon609 | 20590d1aa5 | 2 years ago |
Fredrick Brennan | c1ebe99b4d | 2 years ago |
370chan | 4d63ddcb27 | 2 years ago |
bebyx | d991acb6e3 | 2 years ago |
Junicchi | a4a1ac7e70 | 2 years ago |
ben2613 | 5a202f3674 | 2 years ago |
sshscp15 | 10d5ceb556 | 2 years ago |
27chan | 72aa19b3b4 | 2 years ago |
27chan | 268391f437 | 2 years ago |
discomrade | fdff445469 | 2 years ago |
discomrade | 74df4aec50 | 2 years ago |
discomrade | 316da513dc | 2 years ago |
discomrade | f77f462910 | 2 years ago |
discomrade | b01f5dce68 | 2 years ago |
discomrade | 10ca647470 | 2 years ago |
discomrade | c09bb8e1da | 2 years ago |
discomrade | 20a066581e | 2 years ago |
discomrade | 5d22e5bc2a | 2 years ago |
discomrade | 1a8ec2d295 | 2 years ago |
discomrade | 7bfac5913c | 2 years ago |
discomrade | 38fe235d86 | 2 years ago |
discomrade | 8bc467e259 | 2 years ago |
discomrade | 9f855d7291 | 2 years ago |
discomrade | 374770e79c | 2 years ago |
discomrade | d6256875fc | 2 years ago |
discomrade | 66fe31446b | 2 years ago |
discomrade | e231fbb644 | 2 years ago |
discomrade | 6afaa1b0a3 | 2 years ago |
discomrade | 179dd0a828 | 2 years ago |
discomrade | 2b054e9f34 | 2 years ago |
discomrade | 7b3fccfabd | 2 years ago |
discomrade | c5a1c43919 | 2 years ago |
discomrade | 0bca2b022c | 2 years ago |
discomrade | fbce45b2ee | 2 years ago |
discomrade | 94f91fce30 | 2 years ago |
discomrade | 318f7ff120 | 2 years ago |
discomrade | bfff0e2e56 | 2 years ago |
discomrade | e87f16175b | 2 years ago |
discomrade | 77fa071ff5 | 2 years ago |
discomrade | 009af18519 | 2 years ago |
discomrade | 181fcdd774 | 2 years ago |
discomrade | 49c21a3b19 | 2 years ago |
discomrade | e8bba537f1 | 2 years ago |
discomrade | 1cd27f249c | 2 years ago |
discomrade | 923b208430 | 2 years ago |
discomrade | 0e8cc7a66d | 2 years ago |
discomrade | 710db4e749 | 2 years ago |
discomrade | 8e2b779c30 | 2 years ago |
discomrade | e843576519 | 2 years ago |
discomrade | 32aa1802c7 | 2 years ago |
discomrade | 9b29b30330 | 2 years ago |
discomrade | 7324135025 | 2 years ago |
discomrade | 5b74355046 | 2 years ago |
discomrade | 6645a8f989 | 2 years ago |
discomrade | 175022f519 | 2 years ago |
discomrade | 0afbeac7bd | 2 years ago |
discomrade | 58d719c7f9 | 2 years ago |
discomrade | 070ae35161 | 2 years ago |
discomrade | 88c25af7cf | 2 years ago |
discomrade | 288f09c1f9 | 2 years ago |
discomrade | e1eb910ef4 | 2 years ago |
discomrade | 8cd2ad7b10 | 2 years ago |
discomrade | a8115d2e53 | 2 years ago |
discomrade | 6fb529e745 | 2 years ago |
discomrade | 17ed5819f6 | 2 years ago |
discomrade | d5284f3a34 | 2 years ago |
discomrade | 321c742124 | 2 years ago |
discomrade | 6bcf20804b | 2 years ago |
discomrade | 8d3b5c86ab | 2 years ago |
discomrade | f6b4eb9040 | 2 years ago |
discomrade | 354f70fa97 | 2 years ago |
discomrade | 8dcdf00d18 | 2 years ago |
discomrade | 341729abff | 2 years ago |
discomrade | e0be553970 | 2 years ago |
discomrade | 20a86fd50e | 2 years ago |
discomrade | e3ee4b0ce9 | 2 years ago |
discomrade | a13330a77a | 2 years ago |
discomrade | 5df46e0c77 | 2 years ago |
tmp-server | 7876df0a50 | 2 years ago |
discomrade | 5fb6acf047 | 2 years ago |
discomrade | 7535aad664 | 2 years ago |
discomrade | 4cf0c59eee | 2 years ago |
discomrade | bd120bbda7 | 2 years ago |
discomrade | d606deba0e | 2 years ago |
Your Name | 74ecc4fe17 | 3 years ago |
discomrade | 485c077187 | 3 years ago |
discomrade | 92d7181932 | 3 years ago |
discomrade | 81bc9d23dd | 3 years ago |
discomrade | d3d3e2e969 | 3 years ago |
discomrade | b1004367b0 | 3 years ago |
discomrade | ea6f004022 | 3 years ago |
discomrade | 151261fa80 | 3 years ago |
discomrade | 39d2ad5212 | 3 years ago |
discomrade | f7478bc840 | 3 years ago |
discomrade | 98cfb3ad2b | 3 years ago |
discomrade | ec917def7c | 3 years ago |
discomrade | 0ac2b7ec70 | 3 years ago |
discomrade | 49b5fb75a6 | 3 years ago |
discomrade | 1f155498b0 | 3 years ago |
discomrade | b91d8694a9 | 3 years ago |
discomrade | 617a924826 | 3 years ago |
Pietro Carrara | 43cc3fd465 | 3 years ago |
Pietro Carrara | cb8c7ddd2e | 3 years ago |
Pietro Carrara | 68dc6bb495 | 3 years ago |
Pietro Carrara | 3b9494e362 | 3 years ago |
Pietro Carrara | 2b914f6145 | 3 years ago |
discomrade | 49e1ab9a87 | 3 years ago |
discomrade | 04c41a4f4a | 3 years ago |
discomrade | 6dfedaeb4c | 3 years ago |
discomrade | 713b08b689 | 3 years ago |
discomrade | b1629a33e9 | 3 years ago |
discomrade | e310803f95 | 3 years ago |
discomrade | 0fdf53319a | 3 years ago |
towards-a-new-leftypol | 19e216b924 | 3 years ago |
towards-a-new-leftypol | eb0a8ac991 | 3 years ago |
PVNFU-28 | a54e286b66 | 3 years ago |
towards-a-new-leftypol | 146f7a341a | 3 years ago |
nonmakina | ba235ac2bd | 3 years ago |
nonmakina | 95fc4a1f42 | 3 years ago |
nonmakina | c3de0f1feb | 3 years ago |
Dedushka | d55dd98e68 | 3 years ago |
Pietro Carrara | 38065ff02c | 3 years ago |
nonmakina | 971dd24441 | 3 years ago |
Pietro Carrara | 7002bc7698 | 3 years ago |
Pietro Carrara | f60b4ea6b3 | 3 years ago |
Pietro Carrara | 0b8c4b49b1 | 3 years ago |
Barbara Pitt | 22246a2961 | 3 years ago |
Couchy | 2a1d99a4bb | 5 years ago |
Benjamin Southall | d63a54cf7f | 5 years ago |
Benjamin Southall | 768fd905fe | 5 years ago |
Benjamin Southall | 3c89b30861 | 5 years ago |
Equus2 | 14972d15e7 | 5 years ago |
fallenPineapple | 9253f61298 | 5 years ago |
H1K1CH4N | 6906318d4e | 6 years ago |
PupperWoff | 6d80285513 | 6 years ago |
Benjamin Southall | 66793eee6d | 6 years ago |
PupperWoff | e754a6fead | 6 years ago |
PupperWoff | 9406a72d7d | 6 years ago |
PupperWoff | fda9ae12c0 | 6 years ago |
PupperWoff | 37b37f0e04 | 6 years ago |
PupperWoff | d568e5a311 | 6 years ago |
PupperWoff | 060ae1e547 | 6 years ago |
Equus | 902dff94c1 | 6 years ago |
PupperWoff | b72b335f3e | 6 years ago |
PupperWoff | 81bdcfdf6d | 7 years ago |
Benjamin Southall | 67ed3c9f10 | 7 years ago |
PupperWoff | 9083090c46 | 7 years ago |
PupperWoff | 787fa11309 | 7 years ago |
PupperWoff | c76a1bd3ef | 7 years ago |
Equus | ee2c58724f | 7 years ago |
PupperWoff | 2b05fd12f4 | 7 years ago |
PupperWoff | fca78a3a04 | 7 years ago |
PupperWoff | dd0847b751 | 7 years ago |
Arvo Huru | 4989762458 | 7 years ago |
Arvo Huru | 008273f707 | 7 years ago |
Arvo Huru | 371d87e840 | 7 years ago |
Arvo Huru | ce750b8a20 | 7 years ago |
Equus | 7a5b2aef35 | 7 years ago |
animepony | 177c87d465 | 7 years ago |
PupperWoff | 7ffa8a00f9 | 7 years ago |
Equus | c500b5c6e9 | 7 years ago |
fallenPineapple | 9eacd5def2 | 7 years ago |
fallenPineapple | 47b3756762 | 7 years ago |
PupperWoff | 0778052ef7 | 7 years ago |
PupperWoff | b359d89de5 | 7 years ago |
PupperWoff | 73a0547fe6 | 7 years ago |
PupperWoff | 45b00c76b5 | 7 years ago |
PupperWoff | 93d316f0fc | 7 years ago |
PupperWoff | c353e1284d | 7 years ago |
PupperWoff | e74c54601e | 7 years ago |
PupperWoff | 932b0b9e63 | 7 years ago |
PupperWoff | 16c4f2719a | 7 years ago |
PupperWoff | e712b12ad9 | 7 years ago |
PupperWoff | 8544714057 | 7 years ago |
217 changed files with 12589 additions and 1934 deletions
@ -0,0 +1,19 @@ |
|||
<?php |
|||
$dir = "static/banners/"; |
|||
$files = scandir($dir, SCANDIR_SORT_NONE); |
|||
$images = array_diff($files, array('.', '..')); |
|||
$name = $images[array_rand($images)]; |
|||
// open the file in a binary mode |
|||
$fp = fopen($dir . $name, 'rb'); |
|||
|
|||
// send the right headers |
|||
header('Cache-Control: no-cache, no-store, must-revalidate'); // HTTP 1.1 |
|||
header('Pragma: no-cache'); // HTTP 1.0 |
|||
header('Expires: 0'); // Proxies |
|||
header('Content-Type: ' . $fp['type']); |
|||
header('Content-Length: ' . $fp['bytes']); |
|||
|
|||
// dump the picture and stop the script |
|||
fpassthru($fp); |
|||
exit; |
|||
?> |
@ -0,0 +1,16 @@ |
|||
<?php |
|||
function getBannerSrc(){ |
|||
$files = scandir(__dir__.'/static/banners/'); |
|||
$files = array_diff($files, array('.', '..')); |
|||
return $files[array_rand($files)]; |
|||
} |
|||
|
|||
$filename = getBannerSrc(); |
|||
$filename = "static/banners/" . $filename; |
|||
$fp = fopen($filename, 'rb'); |
|||
|
|||
header("Content-Type: image/png"); |
|||
header("Content-Length: " . filesize($filename)); |
|||
|
|||
fpassthru($fp); |
|||
?> |
File diff suppressed because it is too large
@ -0,0 +1,436 @@ |
|||
<?php |
|||
class ShadowDelete { |
|||
|
|||
static public function hashShadowDelFilename($filename) |
|||
{ |
|||
global $config; |
|||
|
|||
if($filename == 'spoiler') |
|||
return $config['spoiler_image']; |
|||
|
|||
$file = pathinfo($filename); |
|||
return sha1($file['filename'] . $config['shadow_del']['filename_seed']) . "." . $file['extension']; |
|||
} |
|||
|
|||
static public function hashShadowDelFilenamesDBJSON($files_db_json) |
|||
{ |
|||
// Fix Filenames if shadow copy |
|||
$files_new = array(); |
|||
foreach (json_decode($files_db_json) as $i => $f) { |
|||
if ($f->file !== 'deleted') { |
|||
// Add file to array of all files |
|||
$f->file = self::hashShadowDelFilename($f->file); |
|||
$f->thumb = self::hashShadowDelFilename($f->thumb); |
|||
$files_new[] = $f; |
|||
} |
|||
} |
|||
return json_encode($files_new); |
|||
} |
|||
|
|||
// Delete a post (reply or thread) |
|||
static public function deletePost($id, $error_if_doesnt_exist=true, $rebuild_after=true) { |
|||
global $board, $config; |
|||
|
|||
// Select post and replies (if thread) in one query |
|||
$query = prepare(sprintf("SELECT `id`,`thread`,`files`,`slug` FROM ``posts_%s`` WHERE `id` = :id OR `thread` = :id", $board['uri'])); |
|||
$query->bindValue(':id', $id, PDO::PARAM_INT); |
|||
$query->execute() or error(db_error($query)); |
|||
|
|||
if ($query->rowCount() < 1) { |
|||
if ($error_if_doesnt_exist) |
|||
error($config['error']['invalidpost']); |
|||
else return false; |
|||
} |
|||
|
|||
$ids = array(); |
|||
$files = array(); |
|||
|
|||
// Temporarly Delete posts and maybe replies |
|||
while ($post = $query->fetch(PDO::FETCH_ASSOC)) { |
|||
event('shadow-delete', $post); |
|||
|
|||
// If thread |
|||
if (!$post['thread']) { |
|||
// Delete thread HTML page |
|||
file_unlink($board['dir'] . $config['dir']['res'] . link_for($post) ); |
|||
file_unlink($board['dir'] . $config['dir']['res'] . link_for($post, true) ); // noko50 |
|||
file_unlink($board['dir'] . $config['dir']['res'] . sprintf('%d.json', $post['id'])); |
|||
|
|||
// Insert antispam to temp table |
|||
$antispam_query = prepare("INSERT INTO ``shadow_antispam`` SELECT * FROM ``antispam`` WHERE `board` = :board AND `thread` = :thread"); |
|||
$antispam_query->bindValue(':board', $board['uri']); |
|||
$antispam_query->bindValue(':thread', $post['id']); |
|||
$antispam_query->execute() or error(db_error($antispam_query)); |
|||
|
|||
// Delete Antispam entry |
|||
$antispam_query = prepare('DELETE FROM ``antispam`` WHERE `board` = :board AND `thread` = :thread'); |
|||
$antispam_query->bindValue(':board', $board['uri']); |
|||
$antispam_query->bindValue(':thread', $post['id']); |
|||
$antispam_query->execute() or error(db_error($antispam_query)); |
|||
} elseif ($query->rowCount() == 1) { |
|||
// Rebuild thread |
|||
$rebuild = &$post['thread']; |
|||
} |
|||
if ($post['files']) { |
|||
// Move files to temp storage |
|||
foreach (json_decode($post['files']) as $i => $f) { |
|||
if ($f->file !== 'deleted') { |
|||
// Add file to array of all files |
|||
$files[] = $f; |
|||
// Move files to temp storage |
|||
@rename($board['dir'] . $config['dir']['img'] . $f->file, $board['dir'] . $config['dir']['shadow_del'] . $config['dir']['img'] . self::hashShadowDelFilename($f->file)); |
|||
@rename($board['dir'] . $config['dir']['thumb'] . $f->thumb, $board['dir'] . $config['dir']['shadow_del'] . $config['dir']['thumb'] . self::hashShadowDelFilename($f->thumb)); |
|||
} |
|||
} |
|||
} |
|||
|
|||
$ids[] = (int)$post['id']; |
|||
} |
|||
|
|||
// Determine if it is an thread or just post we are deleting |
|||
$query = prepare(sprintf("SELECT `thread` FROM ``posts_%s`` WHERE `id` = :id", $board['uri'])); |
|||
$query->bindValue(':id', $id, PDO::PARAM_INT); |
|||
$query->execute() or error(db_error($query)); |
|||
$thread_id = $query->fetch(PDO::FETCH_ASSOC)['thread']; |
|||
|
|||
|
|||
// Insert data into temp table |
|||
$insert_query = prepare("INSERT INTO ``shadow_deleted`` VALUES(NULL, :board, :post_id, :del_time, :files, :cite_ids)"); |
|||
$insert_query->bindValue(':board', $board['uri'], PDO::PARAM_STR); |
|||
$insert_query->bindValue(':post_id', $id, PDO::PARAM_INT); |
|||
$insert_query->bindValue(':del_time', time(), PDO::PARAM_INT); |
|||
$insert_query->bindValue(':files', json_encode($files)); |
|||
$insert_query->bindValue(':cite_ids', json_encode($ids)); |
|||
$insert_query->execute() or error(db_error($insert_query)); |
|||
|
|||
// Insert post table into temp post table |
|||
$insert_query = prepare(sprintf("INSERT INTO ``shadow_posts_%s`` SELECT * FROM ``posts_%s`` WHERE `id` = " . implode(' OR `id` = ', $ids), $board['uri'], $board['uri'])); |
|||
$insert_query->execute() or error(db_error($insert_query)); |
|||
|
|||
// Delete post table entries |
|||
$query = prepare(sprintf("DELETE FROM ``posts_%s`` WHERE `id` = :id OR `thread` = :id", $board['uri'])); |
|||
$query->bindValue(':id', $id, PDO::PARAM_INT); |
|||
$query->execute() or error(db_error($query)); |
|||
|
|||
// Insert filehash table into temp filehash table |
|||
$insert_query = prepare("INSERT INTO ``shadow_filehashes`` SELECT * FROM ``filehashes`` WHERE `board` = :board AND (`post` = " . implode(' OR `post` = ', $ids) . ")"); |
|||
$insert_query->bindValue(':board', $board['uri'], PDO::PARAM_STR); |
|||
$insert_query->execute() or error(db_error($insert_query)); |
|||
|
|||
// Delete filehash entries for thread from filehash table |
|||
$query = prepare(sprintf("DELETE FROM ``filehashes`` WHERE ( `thread` = :id OR `post` = :id ) AND `board` = '%s'", $board['uri'])); |
|||
$query->bindValue(':id', $id, PDO::PARAM_INT); |
|||
$query->execute() or error(db_error($query)); |
|||
|
|||
|
|||
// Update bump order |
|||
if (isset($thread_id)) |
|||
{ |
|||
$query = prepare(sprintf('SELECT MAX(`time`) AS `correct_bump` FROM `posts_%s` WHERE (`thread` = :thread AND NOT email <=> "sage") OR `id` = :thread', $board['uri'])); |
|||
$query->bindValue(':thread', $thread_id, PDO::PARAM_INT); |
|||
$query->execute() or error(db_error($query)); |
|||
$correct_bump = $query->fetch(PDO::FETCH_ASSOC)['correct_bump']; |
|||
|
|||
$query = prepare(sprintf("UPDATE ``posts_%s`` SET `bump` = :bump WHERE `id` = :id", $board['uri'])); |
|||
$query->bindValue(':bump', $correct_bump, PDO::PARAM_INT); |
|||
$query->bindValue(':id', $thread_id, PDO::PARAM_INT); |
|||
$query->execute() or error(db_error($query)); |
|||
} |
|||
|
|||
// Update Cite Links |
|||
$query = prepare("SELECT `board`, `post` FROM ``cites`` WHERE `target_board` = :board AND (`target` = " . implode(' OR `target` = ', $ids) . ") ORDER BY `board`"); |
|||
$query->bindValue(':board', $board['uri']); |
|||
$query->execute() or error(db_error($query)); |
|||
while ($cite = $query->fetch(PDO::FETCH_ASSOC)) { |
|||
if ($board['uri'] != $cite['board']) { |
|||
if (!isset($tmp_board)) |
|||
$tmp_board = $board['uri']; |
|||
openBoard($cite['board']); |
|||
} |
|||
rebuildPost($cite['post']); |
|||
} |
|||
|
|||
if (isset($tmp_board)) |
|||
openBoard($tmp_board); |
|||
|
|||
// Insert Cited to temp table |
|||
$query = prepare("INSERT INTO ``shadow_cites`` SELECT * FROM ``cites`` WHERE (`target_board` = :board AND (`target` = " . implode(' OR `target` = ', $ids) . ")) OR (`board` = :board AND (`post` = " . implode(' OR `post` = ', $ids) . "))"); |
|||
$query->bindValue(':board', $board['uri']); |
|||
$query->execute() or error(db_error($query)); |
|||
|
|||
// Delete Cites |
|||
$query = prepare("DELETE FROM ``cites`` WHERE (`target_board` = :board AND (`target` = " . implode(' OR `target` = ', $ids) . ")) OR (`board` = :board AND (`post` = " . implode(' OR `post` = ', $ids) . "))"); |
|||
$query->bindValue(':board', $board['uri']); |
|||
$query->execute() or error(db_error($query)); |
|||
|
|||
if (isset($rebuild) && $rebuild_after) { |
|||
buildThread($rebuild); |
|||
buildIndex(); |
|||
} |
|||
|
|||
// If Thread ID is set return it (deleted post within thread) this will pe a positive number and thus viewed as true for legacy purposes |
|||
if(isset($thread_id)) |
|||
return $thread_id; |
|||
|
|||
return true; |
|||
} |
|||
|
|||
// Restore a post (reply or thread) |
|||
static public function restorePost($id, $error_if_doesnt_exist=true, $rebuild_after=true) { |
|||
global $board, $config; |
|||
|
|||
// Select post and replies (if thread) in one query |
|||
$query = prepare(sprintf("SELECT `id`,`thread`,`files`,`slug` FROM ``shadow_posts_%s`` WHERE `id` = :id OR `thread` = :id", $board['uri'])); |
|||
$query->bindValue(':id', $id, PDO::PARAM_INT); |
|||
$query->execute() or error(db_error($query)); |
|||
|
|||
if ($query->rowCount() < 1) { |
|||
if ($error_if_doesnt_exist) |
|||
error($config['error']['invalidpost']); |
|||
else return false; |
|||
} |
|||
|
|||
$ids = array(); |
|||
|
|||
// Restore posts and maybe replies |
|||
while ($post = $query->fetch(PDO::FETCH_ASSOC)) { |
|||
event('shadow-restore', $post); |
|||
|
|||
// If thread |
|||
if (!$post['thread']) { |
|||
// Insert temp antispam to table |
|||
$antispam_query = prepare("INSERT INTO ``antispam`` SELECT * FROM ``shadow_antispam`` WHERE `board` = :board AND `thread` = :thread"); |
|||
$antispam_query->bindValue(':board', $board['uri']); |
|||
$antispam_query->bindValue(':thread', $post['id']); |
|||
$antispam_query->execute() or error(db_error($antispam_query)); |
|||
|
|||
// Delete Temp Antispam entry |
|||
$antispam_query = prepare('DELETE FROM ``shadow_antispam`` WHERE `board` = :board AND `thread` = :thread'); |
|||
$antispam_query->bindValue(':board', $board['uri']); |
|||
$antispam_query->bindValue(':thread', $post['id']); |
|||
$antispam_query->execute() or error(db_error($antispam_query)); |
|||
} |
|||
|
|||
// Restore Files |
|||
if ($post['files']) { |
|||
// Move files from temp storage |
|||
foreach (json_decode($post['files']) as $i => $f) { |
|||
if ($f->file !== 'deleted') { |
|||
@rename($board['dir'] . $config['dir']['shadow_del'] . $config['dir']['img'] . self::hashShadowDelFilename($f->file), $board['dir'] . $config['dir']['img'] . $f->file); |
|||
@rename($board['dir'] . $config['dir']['shadow_del'] . $config['dir']['thumb'] . self::hashShadowDelFilename($f->thumb), $board['dir'] . $config['dir']['thumb'] . $f->thumb); |
|||
} |
|||
} |
|||
} |
|||
|
|||
$ids[] = (int)$post['id']; |
|||
} |
|||
|
|||
// Delete data from temp table |
|||
$insert_query = prepare("DELETE FROM ``shadow_deleted`` WHERE `board` = :board AND `post_id` = :id"); |
|||
$insert_query->bindValue(':board', $board['uri'], PDO::PARAM_STR); |
|||
$insert_query->bindValue(':id', $post['id'], PDO::PARAM_INT); |
|||
$insert_query->execute() or error(db_error($insert_query)); |
|||
|
|||
|
|||
// Determin if it is an thread or just post we are restoring |
|||
$query = prepare(sprintf("SELECT `thread` FROM ``shadow_posts_%s`` WHERE `id` = :id", $board['uri'])); |
|||
$query->bindValue(':id', $id, PDO::PARAM_INT); |
|||
$query->execute() or error(db_error($query)); |
|||
$thread_id = $query->fetch(PDO::FETCH_ASSOC)['thread']; |
|||
|
|||
|
|||
// Insert temp post table into post table |
|||
$insert_query = prepare(sprintf("INSERT INTO ``posts_%s`` SELECT * FROM ``shadow_posts_%s`` WHERE `id` = " . implode(' OR `id` = ', $ids), $board['uri'], $board['uri'])); |
|||
$insert_query->execute() or error(db_error($insert_query)); |
|||
|
|||
// Delete post table entries |
|||
$query = prepare(sprintf("DELETE FROM ``shadow_posts_%s`` WHERE `id` = :id OR `thread` = :id", $board['uri'])); |
|||
$query->bindValue(':id', $id, PDO::PARAM_INT); |
|||
$query->execute() or error(db_error($query)); |
|||
|
|||
// Insert filehash table into temp filehash table |
|||
$insert_query = prepare("INSERT INTO ``filehashes`` SELECT * FROM ``shadow_filehashes`` WHERE `board` = :board AND (`post` = " . implode(' OR `post` = ', $ids) . ")"); |
|||
$insert_query->bindValue(':board', $board['uri'], PDO::PARAM_STR); |
|||
$insert_query->execute() or error(db_error($insert_query)); |
|||
|
|||
// Delete filehash entries for thread from filehash table |
|||
$query = prepare(sprintf("DELETE FROM ``shadow_filehashes`` WHERE ( `thread` = :id OR `post` = :id ) AND `board` = '%s'", $board['uri'])); |
|||
$query->bindValue(':id', $id, PDO::PARAM_INT); |
|||
$query->execute() or error(db_error($query)); |
|||
|
|||
|
|||
// Update bump order |
|||
if (isset($thread_id)) |
|||
{ |
|||
$query = prepare(sprintf('SELECT MAX(`time`) AS `correct_bump` FROM `posts_%s` WHERE (`thread` = :thread AND NOT email <=> "sage") OR `id` = :thread', $board['uri'])); |
|||
$query->bindValue(':thread', $thread_id, PDO::PARAM_INT); |
|||
$query->execute() or error(db_error($query)); |
|||
$correct_bump = $query->fetch(PDO::FETCH_ASSOC)['correct_bump']; |
|||
|
|||
$query = prepare(sprintf("UPDATE ``posts_%s`` SET `bump` = :bump WHERE `id` = :id", $board['uri'])); |
|||
$query->bindValue(':bump', $correct_bump, PDO::PARAM_INT); |
|||
$query->bindValue(':id', $thread_id, PDO::PARAM_INT); |
|||
$query->execute() or error(db_error($query)); |
|||
} |
|||
|
|||
$query = prepare("SELECT `board`, `post` FROM ``shadow_cites`` WHERE `target_board` = :board AND (`target` = " . implode(' OR `target` = ', $ids) . ") ORDER BY `board`"); |
|||
$query->bindValue(':board', $board['uri']); |
|||
$query->execute() or error(db_error($query)); |
|||
while ($cite = $query->fetch(PDO::FETCH_ASSOC)) { |
|||
if ($board['uri'] != $cite['board']) { |
|||
if (!isset($tmp_board)) |
|||
$tmp_board = $board['uri']; |
|||
openBoard($cite['board']); |
|||
} |
|||
rebuildPost($cite['post']); |
|||
} |
|||
|
|||
if (isset($tmp_board)) |
|||
openBoard($tmp_board); |
|||
|
|||
// Insert Temp Cited to Cited Table |
|||
$query = prepare("INSERT INTO ``cites`` SELECT * FROM ``shadow_cites`` WHERE (`target_board` = :board AND (`target` = " . implode(' OR `target` = ', $ids) . ")) OR (`board` = :board AND (`post` = " . implode(' OR `post` = ', $ids) . "))"); |
|||
$query->bindValue(':board', $board['uri']); |
|||
$query->execute() or error(db_error($query)); |
|||
|
|||
// Delete Temp Cites |
|||
$query = prepare("DELETE FROM ``shadow_cites`` WHERE (`target_board` = :board AND (`target` = " . implode(' OR `target` = ', $ids) . ")) OR (`board` = :board AND (`post` = " . implode(' OR `post` = ', $ids) . "))"); |
|||
$query->bindValue(':board', $board['uri']); |
|||
$query->execute() or error(db_error($query)); |
|||
|
|||
if (isset($rebuild) && $rebuild_after) { |
|||
buildThread($rebuild); |
|||
buildIndex(); |
|||
} |
|||
|
|||
// If Thread ID is set return it (deleted post within thread) this will pe a positive number and thus viewed as true for legacy purposes |
|||
if(isset($thread_id)) |
|||
return $thread_id; |
|||
|
|||
return true; |
|||
} |
|||
|
|||
// Purge a post (reply or thread) |
|||
static public function purgePost($id, $error_if_doesnt_exist=true, $rebuild_after=true) { |
|||
global $board, $config; |
|||
|
|||
// Select post and replies (if thread) in one query |
|||
$query = prepare(sprintf("SELECT `id`,`thread`,`files`,`slug` FROM ``shadow_posts_%s`` WHERE `id` = :id OR `thread` = :id", $board['uri'])); |
|||
$query->bindValue(':id', $id, PDO::PARAM_INT); |
|||
$query->execute() or error(db_error($query)); |
|||
|
|||
if ($query->rowCount() < 1) { |
|||
if ($error_if_doesnt_exist) |
|||
error($config['error']['invalidpost']); |
|||
else return false; |
|||
} |
|||
|
|||
$ids = array(); |
|||
|
|||
// Delete files |
|||
while ($post = $query->fetch(PDO::FETCH_ASSOC)) { |
|||
event('shadow-perm-delete', $post); |
|||
if ($post['files']) { |
|||
foreach (json_decode($post['files']) as $i => $f) { |
|||
if ($f->file !== 'deleted') { |
|||
@unlink($board['dir'] . $config['dir']['shadow_del'] . $config['dir']['img'] . self::hashShadowDelFilename($f->file)); |
|||
@unlink($board['dir'] . $config['dir']['shadow_del'] . $config['dir']['thumb'] . self::hashShadowDelFilename($f->thumb)); |
|||
} |
|||
} |
|||
} |
|||
|
|||
$ids[] = (int)$post['id']; |
|||
} |
|||
|
|||
// Delete data from temp table |
|||
$insert_query = prepare("DELETE FROM ``shadow_deleted`` WHERE `board` = :board AND `post_id` = :id"); |
|||
$insert_query->bindValue(':board', $board['uri'], PDO::PARAM_STR); |
|||
$insert_query->bindValue(':id', $post['id'], PDO::PARAM_INT); |
|||
$insert_query->execute() or error(db_error($insert_query)); |
|||
|
|||
// Determin if it is an thread or just post we are restoring |
|||
$query = prepare(sprintf("SELECT `thread` FROM ``shadow_posts_%s`` WHERE `id` = :id", $board['uri'])); |
|||
$query->bindValue(':id', $id, PDO::PARAM_INT); |
|||
$query->execute() or error(db_error($query)); |
|||
$thread_id = $query->fetch(PDO::FETCH_ASSOC)['thread']; |
|||
|
|||
// Delete post table entries |
|||
$query = prepare(sprintf("DELETE FROM ``shadow_posts_%s`` WHERE `id` = :id OR `thread` = :id", $board['uri'])); |
|||
$query->bindValue(':id', $id, PDO::PARAM_INT); |
|||
$query->execute() or error(db_error($query)); |
|||
|
|||
// Delete filehash entries for thread from filehash table |
|||
$query = prepare(sprintf("DELETE FROM ``shadow_filehashes`` WHERE ( `thread` = :id OR `post` = :id ) AND `board` = '%s'", $board['uri'])); |
|||
$query->bindValue(':id', $id, PDO::PARAM_INT); |
|||
$query->execute() or error(db_error($query)); |
|||
|
|||
// Delete Temp Cites |
|||
$query = prepare("DELETE FROM ``shadow_cites`` WHERE (`target_board` = :board AND (`target` = " . implode(' OR `target` = ', $ids) . ")) OR (`board` = :board AND (`post` = " . implode(' OR `post` = ', $ids) . "))"); |
|||
$query->bindValue(':board', $board['uri']); |
|||
$query->execute() or error(db_error($query)); |
|||
|
|||
// If Thread ID is set return it (deleted post within thread) this will pe a positive number and thus viewed as true for legacy purposes |
|||
if(isset($thread_id)) |
|||
return $thread_id; |
|||
|
|||
return true; |
|||
} |
|||
|
|||
static public function purge() { |
|||
global $config; |
|||
|
|||
// Delete data from temp table |
|||
$query = prepare("SELECT * FROM ``shadow_deleted`` WHERE `del_time` < :del_time"); |
|||
$query->bindValue(':del_time', strtotime("-" . $config['shadow_del']['lifetime']), PDO::PARAM_INT); |
|||
$query->execute() or error(db_error($query)); |
|||
|
|||
// Temporarly Delete posts and maybe replies |
|||
while ($shadow_post = $query->fetch(PDO::FETCH_ASSOC)) { |
|||
event('shadow-perm-delete', $shadow_post); |
|||
|
|||
// Set Board Dir for Deletion |
|||
$board['dir'] = sprintf($config['board_path'], $shadow_post['board']); |
|||
|
|||
// Delete files from temp storage |
|||
foreach (json_decode($shadow_post['files']) as $i => $f) { |
|||
@unlink($board['dir'] . $config['dir']['shadow_del'] . $config['dir']['img'] . self::hashShadowDelFilename($f->file)); |
|||
@unlink($board['dir'] . $config['dir']['shadow_del'] . $config['dir']['thumb'] . self::hashShadowDelFilename($f->thumb)); |
|||
} |
|||
|
|||
// Delete post table entries |
|||
$delete_query = prepare(sprintf("DELETE FROM ``shadow_posts_%s`` WHERE `id` = :id OR `thread` = :id", $shadow_post['board'])); |
|||
$delete_query->bindValue(':id', $shadow_post['post_id'], PDO::PARAM_INT); |
|||
$delete_query->execute() or error(db_error($delete_query)); |
|||
|
|||
// Delete filehash entries for thread from filehash table |
|||
$delete_query = prepare("DELETE FROM ``shadow_filehashes`` WHERE ( `thread` = :id OR `post` = :id ) AND `board` = :board"); |
|||
$delete_query->bindValue(':id', $shadow_post['post_id'], PDO::PARAM_INT); |
|||
$delete_query->bindValue(':board', $shadow_post['board'], PDO::PARAM_STR); |
|||
$delete_query->execute() or error(db_error($delete_query)); |
|||
|
|||
// Delete Temp Antispam entry |
|||
$delete_query = prepare('DELETE FROM ``shadow_antispam`` WHERE `board` = :board AND `thread` = :thread'); |
|||
$delete_query->bindValue(':board', $shadow_post['board']); |
|||
$delete_query->bindValue(':thread', $shadow_post['post_id']); |
|||
$delete_query->execute() or error(db_error($delete_query)); |
|||
|
|||
// Delete Temp Cites |
|||
$ids = array(); |
|||
foreach (json_decode($shadow_post['cite_ids']) as $c) |
|||
$ids[] = $c; |
|||
|
|||
// Delete Temp Cites |
|||
$delete_query = prepare("DELETE FROM ``cites`` WHERE (`target_board` = :board AND (`target` = " . implode(' OR `target` = ', $ids) . ")) OR (`board` = :board AND (`post` = " . implode(' OR `post` = ', $ids) . "))"); |
|||
$delete_query->bindValue(':board', $shadow_post['board']); |
|||
$delete_query->execute() or error(db_error($delete_query)); |
|||
} |
|||
|
|||
// Delete data from temp table |
|||
$query = prepare("DELETE FROM ``shadow_deleted`` WHERE `del_time` < :del_time"); |
|||
$query->bindValue(':del_time', strtotime("-" . $config['shadow_del']['lifetime']), PDO::PARAM_INT); |
|||
$query->execute() or error(db_error($query)); |
|||
|
|||
return true; |
|||
} |
|||
} |
|||
?> |
@ -0,0 +1,188 @@ |
|||
<?php |
|||
|
|||
class Statistics { |
|||
|
|||
static public function get_stat_24h($boardName = false, $realtime = true, $boards = false) { |
|||
global $config, $pdo; |
|||
|
|||
$query = ""; |
|||
if(!$boardName) { |
|||
// Get list of all boards |
|||
if($boards === false) |
|||
$boards = listBoards(); |
|||
|
|||
// Get post count by hour for the last day |
|||
$query = "SELECT SUM(count) AS count, hour FROM ("; |
|||
foreach ($boards as $board) { |
|||
if($realtime) |
|||
$query .= sprintf("SELECT COUNT(*) AS count, HOUR(FROM_UNIXTIME(time)) AS hour FROM posts_%s WHERE DATE(FROM_UNIXTIME(time)) = CURDATE() GROUP BY hour UNION ALL ", $board['uri']); |
|||
else |
|||
$query .= sprintf("SELECT COUNT(*) AS count, HOUR(FROM_UNIXTIME(time)) AS hour FROM posts_%s WHERE DATE(FROM_UNIXTIME(time)) = DATE(NOW() - INTERVAL 1 HOUR) AND HOUR(FROM_UNIXTIME(time)) <= HOUR(NOW() - INTERVAL 1 HOUR) GROUP BY hour UNION ALL ", $board['uri']); |
|||
} |
|||
// Remove the last "UNION ALL" seperator and complete the query |
|||
$query = preg_replace('/UNION ALL $/', ') AS deriv_all GROUP BY hour ORDER BY hour ASC', $query); |
|||
} else { |
|||
if($realtime) |
|||
$query = sprintf("SELECT COUNT(*) AS count, HOUR(FROM_UNIXTIME(time)) AS hour FROM posts_%s WHERE DATE(FROM_UNIXTIME(time)) = CURDATE() GROUP BY hour", $boardName); |
|||
else |
|||
$query = sprintf("SELECT COUNT(*) AS count, HOUR(FROM_UNIXTIME(time)) AS hour FROM posts_%s WHERE DATE(FROM_UNIXTIME(time)) = DATE(NOW() - INTERVAL 1 HOUR) AND HOUR(FROM_UNIXTIME(time)) <= HOUR(NOW() - INTERVAL 1 HOUR) GROUP BY hour", $boardName); |
|||
} |
|||
$query = query($query) or error(db_error($query)); |
|||
$query_result = $query->fetchAll(PDO::FETCH_ASSOC); |
|||
|
|||
if(empty($query_result)) |
|||
$query_result = [['hour' => 0, 'count' => "0"]]; |
|||
|
|||
// Get 24h array over post count |
|||
$statistics_hour = array_fill(0,24,0); |
|||
foreach ($query_result as &$hour_data) { |
|||
$statistics_hour[$hour_data['hour']] = $hour_data['count']; |
|||
} |
|||
|
|||
// Set last variables to 'null' for JavaScript |
|||
$last_hour = end($query_result)['hour']; |
|||
if($last_hour != 23) |
|||
for($i=$last_hour+1; $i<24; $i++) |
|||
$statistics_hour[$i] = 'null'; |
|||
|
|||
// Make string for JS |
|||
$statistics_hour = implode(",", $statistics_hour); |
|||
|
|||
return $statistics_hour; |
|||
} |
|||
|
|||
static public function get_stat_week($previous_week = false, $boardName = false, $realtime = true, $hour_realtime = true, $boards = false) { |
|||
global $config, $pdo; |
|||
|
|||
$query = ""; |
|||
if(!$boardName) { |
|||
// Get list of all boards |
|||
if($boards === false) |
|||
$boards = listBoards(); |
|||
|
|||
// Get post count by hour for the last week |
|||
$query = "SELECT SUM(count) AS count, day FROM ("; |
|||
foreach ($boards as $board) { |
|||
if($previous_week) { |
|||
if($realtime) |
|||
$query .= sprintf("SELECT COUNT(*) AS count, WEEKDAY(FROM_UNIXTIME(time)) AS day FROM posts_%s WHERE YEARWEEK(FROM_UNIXTIME(time), 1) = YEARWEEK(DATE_SUB(NOW(), INTERVAL 1 WEEK), 1) GROUP BY day UNION ALL ", $board['uri']); |
|||
else if($hour_realtime) |
|||
$query .= sprintf("SELECT COUNT(*) AS count, WEEKDAY(FROM_UNIXTIME(time)) AS day FROM posts_%s WHERE YEARWEEK(FROM_UNIXTIME(time), 1) = YEARWEEK(DATE_SUB(NOW() - INTERVAL 1 HOUR, INTERVAL 1 WEEK), 1) GROUP BY day UNION ALL ", $board['uri']); |
|||
else |
|||
$query .= sprintf("SELECT COUNT(*) AS count, WEEKDAY(FROM_UNIXTIME(time)) AS day FROM posts_%s WHERE YEARWEEK(FROM_UNIXTIME(time), 1) = YEARWEEK(DATE_SUB(NOW() - INTERVAL 1 DAY, INTERVAL 1 WEEK), 1) GROUP BY day UNION ALL ", $board['uri']); |
|||
} else { |
|||
if($realtime) |
|||
$query .= sprintf("SELECT COUNT(*) AS count, WEEKDAY(FROM_UNIXTIME(time)) AS day FROM posts_%s WHERE YEARWEEK(FROM_UNIXTIME(time), 1) = YEARWEEK(NOW(), 1) GROUP BY day UNION ALL ", $board['uri']); |
|||
else if($hour_realtime) |
|||
$query .= sprintf("SELECT COUNT(*) AS count, WEEKDAY(FROM_UNIXTIME(time)) AS day FROM posts_%s WHERE YEARWEEK(FROM_UNIXTIME(time), 1) = YEARWEEK(NOW() - INTERVAL 1 HOUR, 1) AND ( (DATE(FROM_UNIXTIME(time)) = DATE(NOW() - INTERVAL 1 HOUR) AND HOUR(FROM_UNIXTIME(time)) <= HOUR(NOW() - INTERVAL 1 HOUR)) OR (DATE(FROM_UNIXTIME(time)) < DATE(NOW() - INTERVAL 1 HOUR)) ) GROUP BY day UNION ALL ", $board['uri']); |
|||
else |
|||
$query .= sprintf("SELECT COUNT(*) AS count, WEEKDAY(FROM_UNIXTIME(time)) AS day FROM posts_%s WHERE YEARWEEK(FROM_UNIXTIME(time), 1) = YEARWEEK(NOW() - INTERVAL 1 DAY, 1) AND WEEKDAY(FROM_UNIXTIME(time)) <= WEEKDAY(NOW() - INTERVAL 1 DAY) GROUP BY day UNION ALL ", $board['uri']); |
|||
} |
|||
} |
|||
// Remove the last "UNION ALL" seperator and complete the query |
|||
$query = preg_replace('/UNION ALL $/', ') AS deriv_all GROUP BY day ORDER BY day ASC', $query); |
|||
} else { |
|||
if($previous_week) { |
|||
if($realtime) |
|||
$query = sprintf("SELECT COUNT(*) AS count, WEEKDAY(FROM_UNIXTIME(time)) AS day FROM posts_%s WHERE YEARWEEK(FROM_UNIXTIME(time), 1) = YEARWEEK(DATE_SUB(NOW(), INTERVAL 1 WEEK), 1) GROUP BY day", $boardName); |
|||
else if($hour_realtime) |
|||
$query = sprintf("SELECT COUNT(*) AS count, WEEKDAY(FROM_UNIXTIME(time)) AS day FROM posts_%s WHERE YEARWEEK(FROM_UNIXTIME(time), 1) = YEARWEEK(DATE_SUB(NOW() - INTERVAL 1 HOUR, INTERVAL 1 WEEK), 1) GROUP BY day", $boardName); |
|||
else |
|||
$query = sprintf("SELECT COUNT(*) AS count, WEEKDAY(FROM_UNIXTIME(time)) AS day FROM posts_%s WHERE YEARWEEK(FROM_UNIXTIME(time), 1) = YEARWEEK(DATE_SUB(NOW() - INTERVAL 1 DAY, INTERVAL 1 WEEK), 1) GROUP BY day", $boardName); |
|||
} else { |
|||
if($realtime) |
|||
$query .= sprintf("SELECT COUNT(*) AS count, WEEKDAY(FROM_UNIXTIME(time)) AS day FROM posts_%s WHERE YEARWEEK(FROM_UNIXTIME(time), 1) = YEARWEEK(NOW(), 1) GROUP BY day", $boardName); |
|||
else if($hour_realtime) |
|||
$query .= sprintf("SELECT COUNT(*) AS count, WEEKDAY(FROM_UNIXTIME(time)) AS day FROM posts_%s WHERE YEARWEEK(FROM_UNIXTIME(time), 1) = YEARWEEK(NOW() - INTERVAL 1 HOUR, 1) AND ( (DATE(FROM_UNIXTIME(time)) = DATE(NOW() - INTERVAL 1 HOUR) AND HOUR(FROM_UNIXTIME(time)) <= HOUR(NOW() - INTERVAL 1 HOUR)) OR (DATE(FROM_UNIXTIME(time)) < DATE(NOW() - INTERVAL 1 HOUR)) ) GROUP BY day", $boardName); |
|||
else |
|||
$query .= sprintf("SELECT COUNT(*) AS count, WEEKDAY(FROM_UNIXTIME(time)) AS day FROM posts_%s WHERE YEARWEEK(FROM_UNIXTIME(time), 1) = YEARWEEK(NOW() - INTERVAL 1 DAY, 1) AND WEEKDAY(FROM_UNIXTIME(time)) <= WEEKDAY(NOW() - INTERVAL 1 DAY) GROUP BY day", $boardName); |
|||
} |
|||
} |
|||
$query = query($query) or error(db_error($query)); |
|||
$query_result = $query->fetchAll(PDO::FETCH_ASSOC); |
|||
|
|||
// Get week array over post count |
|||
$statistics_week = array_fill(0,7,0); |
|||
foreach ($query_result as &$day_data) { |
|||
$statistics_week[$day_data['day']] = $day_data['count']; |
|||
} |
|||
|
|||
return $statistics_week; |
|||
} |
|||
|
|||
static public function get_stat_week_labels($week_data) { |
|||
return sprintf("'Monday\\n(%d)', 'Tuesday\\n(%d)', 'Wednesday\\n(%d)', 'Thursday\\n(%d)', 'Friday\\n(%d)', 'Saturday\\n(%d)', 'Sunday\\n(%d)'", $week_data[0], $week_data[1], $week_data[2], $week_data[3], $week_data[4], $week_data[5], $week_data[6]); |
|||
} |
|||
static public function get_stat_week_jsdata($week_data) { |
|||
// Make string for JS |
|||
return implode(",", $week_data); |
|||
} |
|||
|
|||
static public function getPostStatistics($boards) { |
|||
global $config; |
|||
|
|||
if (!isset($config['boards'])) { |
|||
return null; |
|||
} |
|||
|
|||
$HOUR = 3600; |
|||
$DAY = $HOUR * 24; |
|||
$WEEK = $DAY * 7; |
|||
|
|||
$stats = []; |
|||
$hourly = []; |
|||
$daily = []; |
|||
$weekly = []; |
|||
|
|||
foreach ($boards as $board) { |
|||
if (!array_key_exists('uri', $board)) { |
|||
// board doesn't exist. |
|||
continue; |
|||
} |
|||
$_board = getBoardInfo($board['uri']); |
|||
if (!$_board) { |
|||
// board doesn't exist. |
|||
continue; |
|||
} |
|||
|
|||
$boardStat['title'] = $_board['title']; |
|||
|
|||
$boardStat['hourly_ips'] = Statistics::countUniqueIps($hourly, $HOUR, $_board); |
|||
$boardStat['daily_ips'] = Statistics::countUniqueIps($daily, $DAY, $_board); |
|||
$boardStat['weekly_ips'] = Statistics::countUniqueIps($weekly, $WEEK, $_board); |
|||
|
|||
$pph_query = query( |
|||
sprintf("SELECT COUNT(*) AS count FROM ``posts_%s`` WHERE time > %d", |
|||
$_board['uri'], |
|||
time()-3600) |
|||
) or error(db_error()); |
|||
|
|||
$boardStat['pph'] = $pph_query->fetch()['count']; |
|||
|
|||
$stats['boards'][] = $boardStat; |
|||
} |
|||
|
|||
$stats['hourly_ips'] = count($hourly); |
|||
$stats['daily_ips'] = count($daily); |
|||
$stats['weekly_ips'] = count($weekly); |
|||
$stats['pph'] = array_sum(array_column($stats['boards'], 'pph')); |
|||
|
|||
return $stats; |
|||
} |
|||
|
|||
static private function countUniqueIps(&$markAsCounted, $timespan, $_board) { |
|||
$unique_query = query( |
|||
sprintf("SELECT DISTINCT ip FROM ``posts_%s`` WHERE time > %d", |
|||
$_board['uri'], |
|||
time()-$timespan) |
|||
) or error(db_error()); |
|||
$uniqueIps = $unique_query->fetchAll(); |
|||
foreach ($uniqueIps as $_k => $row) { |
|||
$markAsCounted[$row['ip']] = true; |
|||
} |
|||
|
|||
return count($uniqueIps); |
|||
} |
|||
} |
|||
|
|||
?> |
@ -0,0 +1,33 @@ |
|||
/* |
|||
* boardlist-catalog-links.js |
|||
* |
|||
* Usage: |
|||
* $config['additional_javascript'][] = 'js/jquery.min.js'; |
|||
* $config['additional_javascript'][] = 'js/boardlist-catalog-links.js'; |
|||
* |
|||
*/ |
|||
|
|||
$(document).ready(function() { |
|||
|
|||
function replace_index_links() { |
|||
$('.boardlist').children('span[class="sub"]').children('a.board').each(function() { |
|||
this.href = this.href.replace('index.html', 'catalog.html'); |
|||
}); |
|||
} |
|||
|
|||
if (window.Options && Options.get_tab('general')) { |
|||
Options.extend_tab("general", "<fieldset><legend> Board List Catalog Links </legend><label><input type='checkbox' id='boardlist_catalog_links' /> "+_('Use catalog links for the board list')+"</label></fieldset>"); |
|||
|
|||
$('#boardlist_catalog_links').on('change', function(){ |
|||
var setting = $(this).attr('id'); |
|||
|
|||
localStorage[setting] = $(this).is(':checked'); |
|||
location.reload(); |
|||
}); |
|||
|
|||
if (localStorage.boardlist_catalog_links === 'true') { |
|||
$('#boardlist_catalog_links').prop('checked', true); |
|||
replace_index_links(); |
|||
} |
|||
} |
|||
}); |
File diff suppressed because one or more lines are too long
@ -1,42 +0,0 @@ |
|||
/* |
|||
* download-original.js |
|||
* https://github.com/savetheinternet/Tinyboard/blob/master/js/download-original.js
|
|||
* |
|||
* Makes image filenames clickable, allowing users to download and save files as their original filename. |
|||
* Only works in newer browsers. http://caniuse.com/#feat=download
|
|||
* |
|||
* Released under the MIT license |
|||
* Copyright (c) 2012-2013 Michael Save <savetheinternet@tinyboard.org> |
|||
* Copyright (c) 2013-2014 Marcin Łabanowski <marcin@6irc.net> |
|||
* |
|||
* Usage: |
|||
* $config['additional_javascript'][] = 'js/jquery.min.js'; |
|||
* $config['additional_javascript'][] = 'js/download-original.js'; |
|||
* |
|||
*/ |
|||
|
|||
onready(function(){ |
|||
var do_original_filename = function() { |
|||
var filename, truncated; |
|||
if ($(this).attr('title')) { |
|||
filename = $(this).attr('title'); |
|||
truncated = true; |
|||
} else { |
|||
filename = $(this).text(); |
|||
} |
|||
|
|||
$(this).replaceWith( |
|||
$('<a></a>') |
|||
.attr('download', filename) |
|||
.append($(this).contents()) |
|||
.attr('href', $(this).parent().parent().find('a').attr('href')) |
|||
.attr('title', _('Save as original filename') + (truncated ? ' (' + filename + ')' : '')) |
|||
); |
|||
}; |
|||
|
|||
$('.postfilename').each(do_original_filename); |
|||
|
|||
$(document).on('new_post', function(e, post) { |
|||
$(post).find('.postfilename').each(do_original_filename); |
|||
}); |
|||
}); |
@ -0,0 +1,45 @@ |
|||
/* |
|||
* flag-preview.js - Add preview of user flag. |
|||
* |
|||
* Usage: |
|||
* $config['additional_javascript'][] = 'js/jquery.min.js'; |
|||
* $config['additional_javascript'][] = 'js/flag-preview.js'; |
|||
* $config['flag_preview'] = true; |
|||
*/ |
|||
|
|||
function getFlagUrl(value){ |
|||
// No flag or None flag
|
|||
if(!value || value == "") { |
|||
return "/static/blank.gif" |
|||
} else { |
|||
return "/static/flags/"+value+".png" |
|||
} |
|||
} |
|||
|
|||
function updatePreviewWithSelected(img, select) { |
|||
img.attr("src", getFlagUrl(select.find(":selected").val())); |
|||
} |
|||
|
|||
$(document).ready(function(){ |
|||
var flagImg = $('#flag_preview'); |
|||
var flagSelect = $('#user_flag'); |
|||
updatePreviewWithSelected(flagImg,flagSelect); |
|||
|
|||
flagSelect.change(function() { |
|||
flagImg.attr("src", getFlagUrl($(this).find(":selected").val())); |
|||
}); |
|||
}); |
|||
|
|||
$(window).on('quick-reply', function() { |
|||
var flagImg = $('#flag_preview'); |
|||
var quickReplyFlagImg = $('form#quick-reply img[name="flag_preview"]') |
|||
updatePreviewWithSelected(quickReplyFlagImg,$('form#quick-reply select[name="user_flag"]')); |
|||
$('form#quick-reply select[name="user_flag"]').change(function() { |
|||
updatePreviewWithSelected(quickReplyFlagImg,$(this)); |
|||
updatePreviewWithSelected(flagImg,$(this)); |
|||
}); |
|||
$('#user_flag').change(function() { |
|||
updatePreviewWithSelected(quickReplyFlagImg,$(this)); |
|||
updatePreviewWithSelected(flagImg,$(this)); |
|||
}); |
|||
}); |
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -0,0 +1,274 @@ |
|||
/* |
|||
* recent-posts-auto-reload.js |
|||
* |
|||
* Hacked the regular auto-reload for the mod recent page. |
|||
* |
|||
* Released under the MIT license |
|||
* Copyright (c) 2012 Michael Save <savetheinternet@tinyboard.org> |
|||
* Copyright (c) 2013-2014 Marcin Łabanowski <marcin@6irc.net> |
|||
* Copyright (c) 2013 undido <firekid109@hotmail.com> |
|||
* Copyright (c) 2014-2015 Fredrick Brennan <admin@8chan.co> |
|||
* |
|||
* Usage: |
|||
* $config['additional_javascript'][] = 'js/jquery.min.js'; |
|||
* //$config['additional_javascript'][] = 'js/titlebar-notifications.js';
|
|||
* |
|||
*/ |
|||
|
|||
+function(){ |
|||
var notify = false; |
|||
auto_reload_enabled = true; // for watch.js to interop
|
|||
|
|||
$(document).ready(function(){ |
|||
// Adds Options panel item
|
|||
if (typeof localStorage.auto_recent_update_mod === 'undefined') { |
|||
localStorage.auto_recent_update_mod = 'true'; //default value
|
|||
} |
|||
if (window.Options && Options.get_tab('general')) { |
|||
Options.extend_tab("general", "<fieldset id='auto-update-fs'><legend>"+_("Auto update (recent)")+"</legend>" |
|||
+ ('<label id="auto-recent-update-mod"><input type="checkbox">' + _('Auto update recent (mod)') + '</label>') |
|||
+ ('<label id="auto_recent_desktop_notifications_all_mod"><input type="checkbox">' + _('Show desktop notifications on all replies (mod) (requires refresh)') + '</label>') |
|||
+ '</fieldset>'); |
|||
|
|||
$('#auto-recent-update-mod>input').on('click', function() { |
|||
if ($('#auto-recent-update-mod>input').is(':checked')) { |
|||
localStorage.auto_recent_update_mod = 'true'; |
|||
} else { |
|||
localStorage.auto_recent_update_mod = 'false'; |
|||
} |
|||
}); |
|||
|
|||
$('#auto_recent_desktop_notifications_all_mod>input').on('click', function() { |
|||
if (!("Notification" in window)) return; |
|||
|
|||
var setting = $(this).parent().attr('id'); |
|||
|
|||
if ($(this).is(':checked')) { |
|||
Notification.requestPermission(function(permission){ |
|||
if (permission === "granted") { |
|||
localStorage[setting] = 'true'; |
|||
} |
|||
}); |
|||
if (Notification.permission === "granted") { |
|||
localStorage[setting] = 'true'; |
|||
} |
|||
} else { |
|||
localStorage[setting] = 'false'; |
|||
} |
|||
}); |
|||
|
|||
if (localStorage.auto_recent_update_mod === 'true') { |
|||
$('#auto-recent-update-mod>input').prop('checked', true); |
|||
} |
|||
|
|||
if (localStorage.auto_recent_desktop_notifications_all_mod === 'true') { |
|||
$('#auto_recent_desktop_notifications_all_mod>input').prop('checked', true); |
|||
notify = true; |
|||
} |
|||
} |
|||
|
|||
var countdown_interval; |
|||
|
|||
// Add an update link
|
|||
$(".update-bar").append("<span id='updater'><a href='#' id='update_thread'>["+_("Update")+"]</a> (<input type='checkbox' id='auto_update_status'> "+_("Auto")+") <span id='update_secs'></span></span>"); |
|||
|
|||
// Set the updater checkbox according to user setting
|
|||
if (localStorage.auto_recent_update_mod === 'true') { |
|||
$('#auto_update_status').prop('checked', true); |
|||
} |
|||
|
|||
// Grab the settings
|
|||
var settings = new script_settings('auto-reload-mod'); |
|||
var poll_interval_mindelay = settings.get('min_delay_bottom', 5000); |
|||
var poll_interval_maxdelay = settings.get('max_delay', 10000); |
|||
var poll_interval_errordelay = settings.get('error_delay', 9000); |
|||
|
|||
// number of ms to wait before reloading
|
|||
var poll_interval_delay = poll_interval_mindelay; |
|||
var poll_current_time = poll_interval_delay; |
|||
|
|||
var end_of_page = false; |
|||
|
|||
var new_posts = 0; |
|||
var first_new_post = null; |
|||
|
|||
var title = document.title; |
|||
|
|||
if (typeof update_title == "undefined") { |
|||
var update_title = function() { |
|||
if (new_posts) { |
|||
document.title = "("+new_posts+") "+title; |
|||
} else { |
|||
document.title = title; |
|||
} |
|||
}; |
|||
} |
|||
|
|||
if (typeof add_title_collector != "undefined") |
|||
add_title_collector(function(){ |
|||
return new_posts; |
|||
}); |
|||
|
|||
var window_active = true; |
|||
$(window).focus(function() { |
|||
window_active = true; |
|||
recheck_activated(); |
|||
|
|||
// Reset the delay if needed
|
|||
if(settings.get('reset_focus', true)) { |
|||
poll_interval_delay = poll_interval_mindelay; |
|||
} |
|||
}); |
|||
$(window).blur(function() { |
|||
window_active = false; |
|||
}); |
|||
|
|||
$('#auto_update_status').click(function() { |
|||
if($("#auto_update_status").is(':checked')) { |
|||
auto_update(poll_interval_mindelay); |
|||
} else { |
|||
stop_auto_update(); |
|||
$('#update_secs').text(""); |
|||
} |
|||
|
|||
}); |
|||
|
|||
var decrement_timer = function() { |
|||
poll_current_time = poll_current_time - 1000; |
|||
$('#update_secs').text(poll_current_time/1000); |
|||
|
|||
if (poll_current_time <= 0) { |
|||
poll(manualUpdate = false); |
|||
} |
|||
} |
|||
|
|||
var recheck_activated = function() { |
|||
if (new_posts && window_active && |
|||
$(window).scrollTop() <= |
|||
$('header').position().top + $('header').outerHeight(true)) { |
|||
new_posts = 0; |
|||
} |
|||
update_title(); |
|||
first_new_post = null; |
|||
}; |
|||
|
|||
// automatically updates the thread after a specified delay
|
|||
var auto_update = function(delay) { |
|||
clearInterval(countdown_interval); |
|||
|
|||
poll_current_time = delay; |
|||
countdown_interval = setInterval(decrement_timer, 1000); |
|||
$('#update_secs').text(poll_current_time/1000); |
|||
} |
|||
|
|||
var stop_auto_update = function() { |
|||
clearInterval(countdown_interval); |
|||
} |
|||
|
|||
var epoch = (new Date).getTime(); |
|||
var epochold = epoch; |
|||
|
|||
var timeDiff = function (delay) { |
|||
if((epoch-epochold) > delay) { |
|||
epochold = epoch = (new Date).getTime(); |
|||
return true; |
|||
}else{ |
|||
epoch = (new Date).getTime(); |
|||
return; |
|||
} |
|||
} |
|||
|
|||
var poll = function(manualUpdate) { |
|||
stop_auto_update(); |
|||
$('#update_secs').text(_("Updating...")); |
|||
|
|||
$.ajax({ |
|||
url: document.location, |
|||
success: function(data) { |
|||
var loaded_posts = 0; // the number of new posts loaded in this update
|
|||
$($(data).find('div.post.reply,div.thread').get().reverse()).each(function(i) { |
|||
var id = $(this).attr('id'); |
|||
// check that this post doesn't already exist
|
|||
if($('#' + id).length == 0) { |
|||
if (notify) { |
|||
if ($(this).hasClass('thread')){ |
|||
var body = $(this).children('.post').children('.body').html().replace(/<br\s*[\/]?>/gi, "\n"); |
|||
var n = new Notification("New thread in "+ title, {body: $('<div/>').html(body).text()}); |
|||
} else { |
|||
var body = $(this).children('.body').html().replace(/<br\s*[\/]?>/gi, "\n"); |
|||
var n = new Notification("New reply to "+ title, {body: $('<div/>').html(body).text()}); |
|||
} |
|||
} |
|||
$(this).parent().insertBefore($('.post-wrapper').first()); |
|||
new_posts++; |
|||
loaded_posts++; |
|||
$(document).trigger('new_post', this); |
|||
recheck_activated(); |
|||
} |
|||
}); |
|||
|
|||
time_loaded = Date.now(); // interop with watch.js
|
|||
|
|||
if ($('#auto_update_status').is(':checked')) { |
|||
// If there are no new posts, double the delay. Otherwise set it to the min.
|
|||
if(loaded_posts == 0) { |
|||
// if the update was manual, don't increase the delay
|
|||
if (manualUpdate == false) { |
|||
poll_interval_delay *= 2; |
|||
|
|||
// Don't increase the delay beyond the maximum
|
|||
if(poll_interval_delay > poll_interval_maxdelay) { |
|||
poll_interval_delay = poll_interval_maxdelay; |
|||
} |
|||
} |
|||
} else { |
|||
poll_interval_delay = poll_interval_mindelay; |
|||
} |
|||
|
|||
auto_update(poll_interval_delay); |
|||
} else { |
|||
// Decide the message to show if auto update is disabled
|
|||
if (loaded_posts > 0) |
|||
$('#update_secs').text(fmt(_("Posts updated with {0} new post(s)"), [loaded_posts])); |
|||
else |
|||
$('#update_secs').text(_("No new posts found")); |
|||
} |
|||
}, |
|||
error: function(xhr, status_text, error_text) { |
|||
if (status_text == "error") { |
|||
if (error_text == "Not Found") { |
|||
$('#update_secs').text(_("Failed to load")); |
|||
$('#auto_update_status').prop('checked', false); |
|||
$('#auto_update_status').prop('disabled', true); // disable updates if thread is deleted
|
|||
return; |
|||
} else { |
|||
$('#update_secs').text("Error: "+error_text); |
|||
} |
|||
} else if (status_text) { |
|||
$('#update_secs').text(_("Error: ")+status_text); |
|||
} else { |
|||
$('#update_secs').text(_("Unknown error")); |
|||
} |
|||
|
|||
// Keep trying to update
|
|||
if ($('#auto_update_status').is(':checked')) { |
|||
poll_interval_delay = poll_interval_errordelay; |
|||
auto_update(poll_interval_delay); |
|||
} |
|||
} |
|||
}); |
|||
|
|||
return false; |
|||
}; |
|||
|
|||
$(window).scrollStopped(function() { |
|||
recheck_activated(); |
|||
}); |
|||
|
|||
$('#update_thread').on('click', function() { poll(manualUpdate = true); return false; }); |
|||
|
|||
if($("#auto_update_status").is(':checked')) { |
|||
auto_update(poll_interval_delay); |
|||
} |
|||
}); |
|||
}(); |
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 3.8 KiB After Width: | Height: | Size: 3.8 KiB |
@ -0,0 +1,60 @@ |
|||
<?php |
|||
|
|||
require_once 'inc/bootstrap.php'; |
|||
|
|||
// Boards that are nsfw |
|||
$nsfw_boards = $config['api']['status']['nsfw_boards']; |
|||
// Boards where posts are not allowed to be created |
|||
$readonly_boards = $config['api']['status']['locked_boards']; |
|||
|
|||
// Allowed boards |
|||
$whitelist = $config['api']['status']['whitelist']; |
|||
foreach ($config['boards'] as $boards) { |
|||
foreach ($boards as $board) { |
|||
$whitelist[] = $board; |
|||
} |
|||
} |
|||
foreach (array_keys($config['overboards']) as $board_uri) { |
|||
$whitelist[] = $board_uri; |
|||
$readonly_boards[] = $board_uri; |
|||
} |
|||
|
|||
$board_list = listBoards(); |
|||
|
|||
// Add objects that are not boards but are treated as such |
|||
foreach (array_keys($config['overboards']) as $uri => $overboard) { |
|||
$board_list[] = array( |
|||
'uri' => $uri, |
|||
'title' => $config['overboards'][$overboard]['title'] |
|||
); |
|||
} |
|||
|
|||
/** |
|||
* Allowed fields for the board object: |
|||
* - code<string>: The board code ('b', 'tech', ...) |
|||
* - name<string>: The board user-readable name ('Siberia', ...) |
|||
* - sfw<boolean>: Is this board sfw? |
|||
* - posting_enabled<boolean>: Can new posts be created belonging to this board? |
|||
*/ |
|||
$boards = []; |
|||
foreach ($board_list as $board) { |
|||
// Skip non-whitelisted boards |
|||
if (!in_array($board['uri'], $whitelist)) { |
|||
continue; |
|||
} |
|||
|
|||
$boards[] = [ |
|||
'code' => $board['uri'], |
|||
'name' => $board['title'], |
|||
'sfw' => !in_array($board['uri'], $nsfw_boards), |
|||
'posting_enabled' => !in_array($board['uri'], $readonly_boards), |
|||
]; |
|||
} |
|||
|
|||
header('Content-Type: application/json'); |
|||
echo json_encode([ |
|||
'captcha' => $config['captcha']['enabled'], |
|||
'recaptcha' => $config['recaptcha'], |
|||
'flags' => $config['user_flags'], |
|||
'boards' => $boards, |
|||
]); |
@ -0,0 +1,371 @@ |
|||
/** |
|||
* 500px.css |
|||
* kalyx is terrible at css |
|||
*/ |
|||
|
|||
body |
|||
{ |
|||
display:block; |
|||
padding-top: 26px; |
|||
background: #0d1010; |
|||
color: #d2e7e8; |
|||
font-family: sans-serif; |
|||
font-size: 13px; |
|||
border: solid 1px #803474; |
|||
|
|||
max-width: 568px; |
|||
} |
|||
|
|||
html { |
|||
/* Size of largest container or bigger */ |
|||
background-image:url('img/starry.png'); |
|||
max-width: 568px; |
|||
margin-left: auto; |
|||
margin-right: auto; |
|||
border: double 0px #93e0e3; |
|||
box-shadow: 2px 3px #803474; |
|||
} |
|||
|
|||
.board_image{ |
|||
display: none; |
|||
} |
|||
|
|||
div.sidearrows{ |
|||
display: none; |
|||
} |
|||
|
|||
span.quote |
|||
{ |
|||
color:#6fc58a; |
|||
} |
|||
@font-face { |
|||
font-family: 'lain'; |
|||
src: url('./fonts/lain.woff') format('woff'), |
|||
url('./fonts/lain.TTF') format('truetype'); |
|||
} |
|||
h1 |
|||
{ |
|||
display: none; |
|||
font-family: 'lain', tahoma; |
|||
|
|||
letter-spacing: -2px; |
|||
font-size: 42pt; |
|||
text-align: center; |
|||
color: #d2e7e8; |
|||
|
|||
} |
|||
header div.subtitle |
|||
{ |
|||
display: none; |
|||
color: #d2e7e8; |
|||
font-size: 13px; |
|||
margin-left: auto; |
|||
margin-right: auto; |
|||
max-width:385px; |
|||
} |
|||
div.title |
|||
{ |
|||
display: none; |
|||
color: #ce54ba; |
|||
font-family: Arial, Helvetica, sans-serif; |
|||
|
|||
} |
|||
div.title p |
|||
{ |
|||
font-size: 8px; |
|||
color: #ce54ba; |
|||
} |
|||
a, a:link, a:visited, p.intro a.email span.name |
|||
{ |
|||
color: #d2e7e8; |
|||
text-transform: uppercase; |
|||
font-size: 10px; |
|||
text-decoration: none; |
|||
font-family: sans-serif; |
|||
} |
|||
a, a:link, a:visited, p.intro a.email span.name |
|||
{ |
|||
-moz-transition: 0.15s text-shadow, 0.15s color; |
|||
-webkit-transition: 0.15s text-shadow, 0.15s color; |
|||
-khtml-transition: 0.15s text-shadow, 0.15s color; |
|||
-o-transition: 0.15s text-shadow, 0.15s color; |
|||
-ms-transition: 0.15s text-shadow, 0.15s color; |
|||
transition: 0.15s text-shadow, 0.15s color; |
|||
} |
|||
input[type="text"], textarea |
|||
{ |
|||
-moz-transition: 0.15s border-color; |
|||
-webkit-transition: 0.15s border-color; |
|||
-khtml-transition: 0.15s border-color; |
|||
-o-transition: 0.15s border-color; |
|||
-ms-transition: 0.15s border-color; |
|||
transition: 0.15s border-color; |
|||
} |
|||
input[type="submit"] |
|||
{ |
|||
-moz-transition: 0.15s border-color, 0.15s background-color, 0.15s color; |
|||
-webkit-transition: 0.15s border-color, 0.15s background-color, 0.15s color; |
|||
-khtml-transition: 0.15s border-color, 0.15s background-color, 0.15s color; |
|||
-o-transition: 0.15s border-color, 0.15s background-color, 0.15s color; |
|||
-ms-transition: 0.15s border-color, 0.15s background-color, 0.15s color; |
|||
transition: 0.15s border-color, 0.15s background-color, 0.15s color; |
|||
} |
|||
a:hover, a:link:hover, a:visited:hover |
|||
{ |
|||
color: #ce54ba; |
|||
font-family: sans-serif; |
|||
text-decoration: none; |
|||
text-shadow: 0px 0px 5px #ce54ba; |
|||
} |
|||
a.post_no |
|||
{ |
|||
color: #ce54ba; |
|||
text-decoration: none; |
|||
} |
|||
p.intro a.post_no:hover |
|||
{ |
|||
color: #32DD72!important; |
|||
} |
|||
div.post.reply |
|||
{ |
|||
background: #0d1010; |
|||
align: center; |
|||
max-width:96% !important; |
|||
min-width: 96%!important; |
|||
border: solid 1px #ce54ba; |
|||
box-shadow: 2px 2px #803474; |
|||
|
|||
|
|||
} |
|||
|
|||
div.postcontainer |
|||
{ |
|||
max-width:100% !important; |
|||
min-width: 100%!important; |
|||
|
|||
} |
|||
div.post.reply.highlighted |
|||
{ |
|||
background: #1e2324; |
|||
border: solid 1px #93e0e3; |
|||
box-shadow: 3px 5px #5c8c8e; |
|||
margin-left: auto; |
|||
margin-right: auto; |
|||
} |
|||
div.post.reply div.body a:link, div.post.reply div.body a:visited |
|||
{ |
|||
color: #CCCCCC; |
|||
|
|||
} |
|||
div.post.reply div.body a:link:hover, div.post.reply div.body a:visited:hover |
|||
{ |
|||
color: #ce54ba; |
|||
|
|||
} |
|||
p.intro span.subject |
|||
{ |
|||
font-size: 12px; |
|||
font-family: sans-serif; |
|||
color: #ce54ba; |
|||
font-weight: 800; |
|||
|
|||
} |
|||
p.intro span.name |
|||
{ |
|||
color: #32DD72; |
|||
font-weight: 800; |
|||
} |
|||
p.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 |
|||
{ |
|||
color: #32ddaf; |
|||
|
|||
} |
|||
input[type="text"], textarea, select |
|||
{ |
|||
background: #0d1010!important; |
|||
color: #CCCCCC!important; |
|||
border: solid 1px #ce54ba; |
|||
box-shadow: 1px 1px #803474; |
|||
margin-left: auto; |
|||
margin-right: auto; |
|||
|
|||
|
|||
} |
|||
input[type="password"] |
|||
{ |
|||
background: #0d1010!important; |
|||
color: #CCCCCC!important; |
|||
border: #d2e7e8 1px double!important; |
|||
} |
|||
form table tr th |
|||
{ |
|||
background: #0d1010!important; |
|||
color: #d2e7e8!important; |
|||
border: solid 1px #ce54ba; |
|||
box-shadow: 1px 1px #803474; |
|||
text-align: right; |
|||
|
|||
} |
|||
div.banner |
|||
{ |
|||
|
|||
background: #E04000; |
|||
border: 0px solid hsl(17, 100%, 60%); |
|||
color: #EEE; |
|||
text-align: center; |
|||
height: 15px; |
|||
padding: 1px 1px 4px 1px; |
|||
margin-left: auto; |
|||
margin-right: auto; |
|||
} |
|||
div.banner a |
|||
{ |
|||
color:#000; |
|||
} |
|||
input[type="submit"] |
|||
{ |
|||
background: #333333; |
|||
border: #666 1px solid; |
|||
color: #CCCCCC; |
|||
} |
|||
input[type="submit"]:hover |
|||
{ |
|||
background: #555; |
|||
border: #888 1px solid; |
|||
color: #32DD72; |
|||
} |
|||
input[type="text"]:focus, textarea:focus |
|||
{ |
|||
border:#888 1px solid!important; |
|||
} |
|||
p.fileinfo a:hover |
|||
{ |
|||
text-decoration: underline; |
|||
} |
|||
span.trip |
|||
{ |
|||
color: #AAA; |
|||
} |
|||
.bar |
|||
{ |
|||
background: #0c0c0c!important; |
|||
-moz-box-shadow: 0 0 40px #000; |
|||
-webkit-box-shadow: 0 0 40px #000; |
|||
|
|||
|
|||
|
|||
|
|||
} |
|||
.bar.top |
|||
{ |
|||
border: solid 1px #803474; |
|||
box-shadow: 6px 2px #803474; |
|||
|
|||
} |
|||
.bar.bottom |
|||
{ |
|||
border-top: 0px solid #666; |
|||
border: solid 1px #803474; |
|||
|
|||
|
|||
} |
|||
div.pages |
|||
{ |
|||
color: #d2e7e8 ; |
|||
background: #333; |
|||
border: #666 0px solid; |
|||
font-family: sans-serif; |
|||
font-size: 10pt; |
|||
} |
|||
div.pages a.selected |
|||
{ |
|||
color: #d2e7e8 ; |
|||
} |
|||
hr |
|||
{ |
|||
height: 0px; |
|||
border: #d2e7e8 2px solid; |
|||
|
|||
} |
|||
div.boardlist |
|||
{ |
|||
color: #d2e7e8; |
|||
} |
|||
|
|||
div.ban |
|||
{ |
|||
background-color: #0d1010; |
|||
border: 0px solid #555; |
|||
-moz-border-radius: 2px; |
|||
-webkit-border-radius: 2px; |
|||
border-radius: 2px; |
|||
text-align: left!important; |
|||
font-size: 13px; |
|||
|
|||
} |
|||
div.ban h2 |
|||
{ |
|||
background: #333; |
|||
color: #d2e7e8; |
|||
padding: 3px 7px; |
|||
font-size: 12pt; |
|||
border-bottom: 1px solid #555; |
|||
} |
|||
div.ban h2:not(:nth-child(1)) |
|||
{ |
|||
border-top: 0px solid #555; |
|||
} |
|||
table.modlog tr th |
|||
{ |
|||
background: #333; |
|||
color: #AAA; |
|||
} |
|||
|
|||
div.report |
|||
{ |
|||
color: #666; |
|||
} |
|||
.pages, .board_image, input, .reply, form table th, textarea, a img, select, .banner |
|||
{ |
|||
-webkit-border-radius: 2px; |
|||
-khtml-border-radius: 2px; |
|||
-moz-border-radius: 2px; |
|||
-o-border-radius: 2px; |
|||
-ms-border-radius: 2px; |
|||
border-radius: 2px; |
|||
} |
|||
.blur |
|||
{ |
|||
filter: blur(20px); |
|||
-webkit-filter: blur(23px); |
|||
-moz-filter: blur(23px); |
|||
-o-filter: blur(23px); |
|||
-ms-filter: blur(23px); |
|||
filter: url(svg/blur.svg#blur); |
|||
} |
|||
|
|||
/* options.js */ |
|||
#options_div |
|||
{ |
|||
background: #333333; |
|||
} |
|||
.options_tab_icon |
|||
{ |
|||
color: #AAAAAA; |
|||
} |
|||
.options_tab_icon.active |
|||
{ |
|||
color: #FFFFFF; |
|||
} |
|||
|
|||
|
|||
|
|||
.blotter |
|||
{ |
|||
color: #DCA1F5!important; |
|||
} |
@ -0,0 +1,482 @@ |
|||
DIV.announcement.apr212015.board-owners-or-users-feel-free-to-hide |
|||
{color: #fff;} |
|||
|
|||
form table tr td { |
|||
background-color: rgb(43, 43, 43);} |
|||
|
|||
/*monoelains ez css for VIP quality imageboards. steal this .css and edit it to your liking. */ |
|||
|
|||
|
|||
|
|||
|
|||
/*Bottom bar settings for lainchan.org CSS theft by kalyx*/ |
|||
|
|||
.bar { |
|||
-moz-box-shadow: 0 0 0px #d1d5ee; |
|||
-webkit-box-shadow: 0 0 0px #d1d5ee; |
|||
box-shadow: 0 0 0px #d1d5ee; |
|||
display: table; |
|||
position: fixed; |
|||
width: 100%; |
|||
left: 0px; |
|||
z-index: 3; |
|||
background-color: #35363b; |
|||
border-color: #39d958; |
|||
} |
|||
.bar.bottom { |
|||
bottom: 0px; |
|||
border-top: 1px solid #333333; |
|||
background-color: #1A1A1A !important; |
|||
} |
|||
|
|||
/* OPTION HIDING */ |
|||
|
|||
|
|||
/*removes footer (STI pls dont sue) |
|||
footer { |
|||
display:none; |
|||
color: #ffffff; |
|||
} |
|||
|
|||
/* hides AA in catalog */ |
|||
.theme-catalog span.aa { |
|||
display: none !important; |
|||
} |
|||
|
|||
/* hides expand all images */ |
|||
#expand-all-images { |
|||
display: none; |
|||
} |
|||
|
|||
/* hides hints*/ |
|||
.hint { |
|||
display: none; |
|||
} |
|||
|
|||
/* hides horizontal bar */ |
|||
hr { |
|||
display: none; |
|||
} |
|||
|
|||
/*banner stuff*/ |
|||
img.banner, img.board_image { |
|||
border: 1px solid #989898; |
|||
background-color: #B2A50F; |
|||
display: ; |
|||
box-shadow: 3px 5px #989898; |
|||
margin: 30px auto 0px; |
|||
margin-top: 50px; |
|||
} |
|||
|
|||
/* hides delete options (obsolete) */ |
|||
div.delete { |
|||
display: none; |
|||
} |
|||
|
|||
/*makes files align vertically (hw pls fix this shit)*/ |
|||
.file { |
|||
display: block; |
|||
margin-right: 11px; |
|||
} |
|||
|
|||
|
|||
/*expanded image border/shadow*/ |
|||
.full-image { |
|||
border-top-right-radius: 0; |
|||
box-shadow: 3px 5px #2e8b57; |
|||
border: solid 1px #2e8b57; |
|||
border-bottom-right-radius: 0; |
|||
border-bottom-left-radius: 0; |
|||
border-top-left-radius: 0; |
|||
padding: 5px; |
|||
margin: 0px 0px 0px; |
|||
border-radius: 0; |
|||
max-width: 80% !important; |
|||
float: none; |
|||
background-color: #2b2b2b; |
|||
} |
|||
|
|||
/*gives quick reply its border/shadow*/ |
|||
#quick-reply table { |
|||
background: none repeat scroll 0 0 #2b2b2b; |
|||
border: 1px solid #989898; |
|||
margin: 0; |
|||
box-shadow: 3px 5px #989898; |
|||
width: auto !important; |
|||
} |
|||
|
|||
/*makes posting form maroon*/ |
|||
form table tr th { |
|||
background-color: #2e8b57; |
|||
color: #2b2b2b; |
|||
font-family: "Lucida Console", Monaco, monospace; |
|||
} |
|||
|
|||
/*gives images border/shadow*/ |
|||
div.files img.post-image { |
|||
box-shadow: 3px 5px #4D4D4D; |
|||
background-color: #2b2b2b; |
|||
border: solid 1px #4D4D4D; |
|||
padding: 0px; |
|||
border-radius: 0; |
|||
margin-bottom: 5px; |
|||
} |
|||
|
|||
/* makes Youtube thumbs not obscenely big */ |
|||
div.video-container { |
|||
width: auto !important; |
|||
height: auto !important; |
|||
max-height: 50% !important; |
|||
max-width: 50% !important; |
|||
} |
|||
|
|||
/* Image thumbs size limit (make as big as you want)*/ |
|||
.post-image { |
|||
border: solid 1px #2e8b57; |
|||
height: auto !important; |
|||
width: auto !important; |
|||
max-height: 60%; |
|||
max-width: 60%; |
|||
box-shadow: 3px 5px #2e8b57; |
|||
padding: 5px; |
|||
background-color: #2b2b2b; |
|||
} |
|||
|
|||
/* Keep small thumbnails in replies */ |
|||
.post.reply a:not([data-expanded="true"]) .post-image { |
|||
width: auto !important; |
|||
height: auto !important; |
|||
max-height: 60%; |
|||
max-width: 60%; |
|||
} |
|||
|
|||
/* reply box size */ |
|||
.input[type="text"], textarea { |
|||
min-height: 117px; |
|||
min-width: 240px; |
|||
} |
|||
|
|||
/*boardwide font stuff goes here also background image*/ |
|||
body { |
|||
padding: 0; |
|||
font-family: "Lucida Console", Monaco, monospace; |
|||
font-size: 14px; |
|||
background: url("img/cyber_dot_overlay.png") fixed repeat top #000000; |
|||
float: left; |
|||
margin-left: 10px; |
|||
margin-right: 35px; |
|||
} |
|||
/*saves one pixel of space*/ |
|||
header { |
|||
margin-bottom: 0px; |
|||
} |
|||
|
|||
/*gives posting table its border/shadow*/ |
|||
form table { |
|||
max-width: 500px; |
|||
min-width: 100% |
|||
|
|||
display: inline-block; |
|||
margin: 5px auto; |
|||
background-color: #2b2b2b; |
|||
border: solid 1px #989898; |
|||
color: #61CE3C; |
|||
padding: 5px; |
|||
box-shadow: 3px 3px #989898 !important; |
|||
} |
|||
|
|||
/*gives threads its border/shadow*/ |
|||
div[id^="thread_"] { |
|||
background-color: #1A1A1A; |
|||
color: #61CE3C; |
|||
margin-bottom: 20px; |
|||
padding: 10px; |
|||
border: solid 1px #7b68ee; |
|||
width: 100%; |
|||
box-shadow: 3px 5px #7b68ee; |
|||
} |
|||
|
|||
/*adds horizontal bar below subject*/ |
|||
p.intro { |
|||
background-image: "img/line_diagonal.png"; |
|||
background-repeat: repeat-x; |
|||
background-position: bottom; |
|||
padding-bottom: 7px; |
|||
} |
|||
|
|||
/*gives replies border/shadow*/ |
|||
div.post.reply { |
|||
max-width: 95% !important; |
|||
box-shadow: 3px 5px #2e8b57; |
|||
padding: 4px; |
|||
margin-top: 9px; |
|||
border: solid 1px #2e8b57; |
|||
background-color: #2b2b2b; |
|||
} |
|||
|
|||
/*unfucks highlighting replies and gives border/shadow*/ |
|||
div.post.reply.highlighted { |
|||
background-color: #2b2b2b; |
|||
border: solid 1px #93e0e3; |
|||
box-shadow: 3px 5px #93e0e3; |
|||
} |
|||
|
|||
/*dont touch this*/ |
|||
div.body { |
|||
display: block; |
|||
clear: both; |
|||
padding-top: 10px; |
|||
} |
|||
|
|||
/*makes page bar have border/shadow*/ |
|||
div.pages { |
|||
box-shadow: 3px 5px #2e8b57; |
|||
width: 100%; |
|||
display: block; |
|||
clear: both; |
|||
border: solid 1px #2e8b57; |
|||
/*background-color: #2b2b2b;*/ |
|||
} |
|||
|
|||
/*hovered links have underline*/ |
|||
a:hover { |
|||
text-decoration: underline; |
|||
} |
|||
|
|||
/*stops textbox resizing shenanigans*/ |
|||
.input[type="text"], textarea { |
|||
font-size: 14px; |
|||
max-width: 9000px; |
|||
font-family: "Lucida Console", Monaco, monospace; |
|||
min-height: 115px; |
|||
min-width: 270px; |
|||
background-color: #1A1A1A; |
|||
color: #61CE3C; |
|||
} |
|||
|
|||
input { |
|||
background-color: #1A1A1A; |
|||
color: #61CE3C; |
|||
} |
|||
select { |
|||
background-color: #1A1A1A; |
|||
color: #61CE3C; |
|||
} |
|||
|
|||
/*boardname nice font. replace with something classy someday*/ |
|||
header div.subtitle, h1 { |
|||
font-family: "Lucida Console", Monaco, monospace; |
|||
color: #cc0000; |
|||
} |
|||
|
|||
/*announcement font and color*/ |
|||
div.blotter { |
|||
padding: 15px; |
|||
color: #cc0000; |
|||
font-family: "Lucida Console", Monaco, monospace; |
|||
} |
|||
|
|||
/*makes links red*/ |
|||
a { |
|||
color: #c80b63; |
|||
text-decoration: none; |
|||
} |
|||
|
|||
/*top boardlist stuff. change position to "fixed" to make it behave like normal 8chan*/ |
|||
div.boardlist:not(.bottom) { |
|||
background-color: #1A1A1A !important; |
|||
text-align: center; |
|||
padding: 5px 1px; |
|||
letter-spacing: -2px; |
|||
color: #989898; |
|||
font-size: 11px; |
|||
border-bottom: double 3px #989898 !important; |
|||
position:fixed; |
|||
} |
|||
|
|||
/*favorites in a new line*/ |
|||
div.boardlist span.favorite-boards { |
|||
display: ; |
|||
} |
|||
|
|||
@-moz-document url-prefix() { |
|||
|
|||
div.boardlist { |
|||
word-spacing:-1px !important; |
|||
} |
|||
|
|||
} |
|||
|
|||
/*subject color*/ |
|||
p.intro span.subject { |
|||
color: #7b68ee; |
|||
} |
|||
|
|||
/*bottom boardlist centered*/ |
|||
|
|||
div.boardlist.bottom { |
|||
text-align: center; |
|||
background-color: #1A1A1A; |
|||
border: solid 1px #989898; |
|||
box-shadow: 3px 7px #989898; |
|||
width: 100%; |
|||
margin: 15px; |
|||
|
|||
|
|||
} |
|||
|
|||
/*colors name*/ |
|||
p.intro span.name { |
|||
color: #989898; |
|||
font-family: ; |
|||
} |
|||
|
|||
/*catalog stuff*/ |
|||
.theme-catalog div.thread { |
|||
background-color: #2b2b2b; |
|||
color: #61CE3C; |
|||
border: solid 1px #2e8b57; |
|||
} |
|||
|
|||
.theme-catalog div.thread:hover { |
|||
background-color: #383838; |
|||
border: solid 1px #2e8b57; |
|||
} |
|||
|
|||
span.trip { |
|||
color: rgb(34, 136, 84); |
|||
} |
|||
|
|||
#updater, #thread-links { |
|||
background-color: #2b2b2b; |
|||
border:solid 1px #989898; |
|||
padding: 5px; |
|||
margin: 5px; |
|||
box-shadow: 3px 5px #989898; |
|||
color: #989898; |
|||
} |
|||
|
|||
A#update_thread |
|||
{color: #ffffff;} |
|||
A#thread-catalog |
|||
{color: #ffffff;} |
|||
A#thread-top |
|||
{color: #ffffff;} |
|||
A#thread-return |
|||
{color: #ffffff;} |
|||
|
|||
div.banner { |
|||
width: 380px; |
|||
display:block; |
|||
margin-left:auto; |
|||
margin-right:auto; |
|||
|
|||
} |
|||
|
|||
#quick-reply th .close-btn{ |
|||
color:#ffffff; |
|||
|
|||
} |
|||
|
|||
div.post-hover { |
|||
|
|||
border: solid 1px #2e8b57; |
|||
box-shadow: 3px 5px #2e8b57; |
|||
max-width: 50%; |
|||
} |
|||
|
|||
span.subject:after { content: '\A'; white-space:pre; } |
|||
SPAN.controls.op:before { content: '\A'; white-space:pre; } |
|||
|
|||
a:visited {color: #97094b} |
|||
|
|||
.quote {color: #93e0e3;} |
|||
a:hover,p.intro a.post_no:hover { |
|||
color: #ff0000 !important; |
|||
} |
|||
|
|||
p.intro {color: #989898} |
|||
|
|||
p.intro a {color: #ffffff !important} |
|||
A.post_no {color:#989898} |
|||
|
|||
|
|||
p.fileinfo |
|||
{color: #989898 !important} |
|||
|
|||
p.fileinfo a:link{ |
|||
color: #989898; |
|||
} !important; |
|||
max-width: 50%; |
|||
} |
|||
|
|||
span.subject:after { content: '\A'; white-space:pre; } |
|||
SPAN.controls.op:before { content: '\A'; white-space:pre; } |
|||
|
|||
a:visited {color: #97094b} |
|||
|
|||
|
|||
p.intro {color: #989898} |
|||
|
|||
p.intro a {color: #ffffff !important} |
|||
A.post_no {color:#989898} |
|||
|
|||
|
|||
p.fileinfo |
|||
{color: #989898 !important} |
|||
|
|||
p.fileinfo a:link{ |
|||
color: #989898; |
|||
} |
|||
|
|||
DIV#thread_stats |
|||
{ |
|||
border: solid 1px #989898; |
|||
box-shadow: 3px 5px #989898; |
|||
color: #989898; |
|||
} |
|||
|
|||
DIV.file-hint |
|||
{background-color: #383838;} |
|||
div.dropzone |
|||
{background-color: #383838; |
|||
color: #ffffff} |
|||
|
|||
#options_div |
|||
{background-color: #383838; color: #61CE3C; |
|||
} |
|||
div.options_tab_icon |
|||
{color: #61CE3C;} |
|||
div.options_tab_icon.active |
|||
{color: #ffffff;} |
|||
#filter-container |
|||
{background-color: #707070; |
|||
color: #ffffff;} |
|||
#treeview |
|||
{display:none} |
|||
span.heading |
|||
{color: #FF6400} |
|||
body > footer:nth-child(19) |
|||
{color: #ffffff;} |
|||
div.boardlist a {color: #ffffff;} |
|||
|
|||
form table tr th { |
|||
color: #ffffff !important; |
|||
} |
|||
|
|||
p.intro a.email span.name{color: #c80b63} |
|||
p.intro span.capcode {color: #FBDE2D} |
|||
p.intro span.capcode:before {font-family: MS PGothic; content: "( ´∀`) 🔰"} |
|||
|
|||
|
|||
label {display:none} |
|||
|
|||
div.post-menu {color: #ffffff} |
|||
|
|||
|
|||
|
|||
@media only screen and (max-width: 480px), only screen and (max-device-width: 480px) { |
|||
|
|||
div.boardlist:not(.bottom) {position: static;} |
|||
body { min-width: 100%;} |
|||
} |
@ -0,0 +1,175 @@ |
|||
body { |
|||
background: #1D1F21; |
|||
color: #ACACAC; |
|||
font-family: Courier, monospace; |
|||
font-size: 13px; |
|||
} |
|||
|
|||
/* LINKS */ |
|||
a, a:link, a:visited, .intro a.email span.name { |
|||
color: #FFB300; |
|||
text-decoration: none; |
|||
} |
|||
a:link:hover, a:visited:hover { |
|||
color: #FFB300; |
|||
text-shadow: 0px 0px 5px #117743; |
|||
} |
|||
div.pages a.selected { |
|||
color: #FFB300; |
|||
} |
|||
|
|||
/* INTRO */ |
|||
h1, div.title, header div.subtitle { |
|||
color: #663E11; |
|||
font-family: Courier, monospace; |
|||
} |
|||
h1 { |
|||
font-size: 24pt; |
|||
font-weight: normal; |
|||
letter-spacing: 0px; |
|||
} |
|||
header div.subtitle { |
|||
font-size: 12pt; |
|||
} |
|||
|
|||
/* FORMS AND BUTTONS */ |
|||
div.banner { |
|||
background-color: inherit; |
|||
color: #ACACAC; |
|||
} |
|||
form table { |
|||
border: 1px dashed #117743; |
|||
padding-right: 1px; |
|||
} |
|||
form table tr th { |
|||
background: #282A2E; |
|||
border: 1px solid #117743; |
|||
border-radius: 5px; |
|||
} |
|||
input[type="text"], input[type="password"], textarea, select { |
|||
border: 1px double #07371F; |
|||
border-radius: 5px; |
|||
background: #282A2E; |
|||
color: #ACACAC; |
|||
font-family: Courier, monospace; |
|||
} |
|||
input[type="text"]:focus, input[type="password"]:focus, textarea:focus { |
|||
box-shadow: 0px 0px 5px 2px #117743; |
|||
} |
|||
input[type="submit"] { |
|||
border: 3px double #07371F; |
|||
border-radius: 5px; |
|||
background: #16171A; |
|||
color: #ACACAC; |
|||
font-family: Courier, monospace; |
|||
font-weight: bold; |
|||
} |
|||
.dropzone { |
|||
background: #16171A; |
|||
border: 3px double #07371F; |
|||
color: #ACACAC; |
|||
} |
|||
.dropzone .file-hint { |
|||
color: #ACACAC; |
|||
font-weight: bold; |
|||
} |
|||
#quick-reply table { |
|||
background: #1D1F21 !important; |
|||
} |
|||
fieldset { |
|||
border: 1px dashed #117743; |
|||
} |
|||
|
|||
/* POST IDENTIFIERS */ |
|||
.intro span.subject { |
|||
color: #34ED3A; |
|||
} |
|||
.intro span.name { |
|||
color: #117743; |
|||
} |
|||
.intro span.trip { |
|||
color: #117743; |
|||
} |
|||
.intro a.capcode, p.intro a.nametag { |
|||
color: #FF0000; |
|||
font-weight: bold; |
|||
} |
|||
.intro a.email, p.intro a.email span.name, p.intro a.email:hover, p.intro a.email:hover span.name { |
|||
color: #34ED97; |
|||
} |
|||
.intro time { |
|||
font-weight: bold; |
|||
} |
|||
.intro a.post_no { |
|||
color: #ACACAC; |
|||
font-weight: bold; |
|||
} |
|||
|
|||
/* POST BOXES */ |
|||
div.post.reply { |
|||
background: #282A2E; |
|||
border: 1px solid #117743; |
|||
border-radius: 5px; |
|||
} |
|||
div.post.reply.highlighted { |
|||
background: rgba(59, 22, 43, 0.4); |
|||
border: 1px solid #117743; |
|||
border-radius: 5px; |
|||
} |
|||
|
|||
/* POST CONTENT */ |
|||
div.post.reply div.body a { |
|||
color: #FFB300; |
|||
} |
|||
.quote { |
|||
color: #789922; |
|||
} |
|||
|
|||
/* BARS */ |
|||
.bar { |
|||
background-color: #151515; |
|||
} |
|||
.bar.top { |
|||
border-bottom: 1px solid #B0790A; |
|||
} |
|||
.bar.bottom { |
|||
border-top: 1px solid #B0790A; |
|||
} |
|||
div.boardlist { |
|||
color: #ACACAC; |
|||
} |
|||
hr { |
|||
border: none; |
|||
border-top: 1pt solid #117743; |
|||
} |
|||
|
|||
/* CATALOG */ |
|||
.theme-catalog h1 { |
|||
color: #ACACAC; |
|||
font-size: 18pt; |
|||
font-weight: bold; |
|||
} |
|||
.theme-catalog h1 a { |
|||
font-weight: normal; |
|||
} |
|||
.theme-catalog div.thread, .theme-catalog div.thread:hover { |
|||
background: #282A2E; |
|||
border: 1px solid #117743; |
|||
border-radius: 5px; |
|||
font-size: 10pt; |
|||
} |
|||
|
|||
/* OPTIONS */ |
|||
#options_div, #alert_div { |
|||
background: #1D1F21; |
|||
border: 1px dashed #117743; |
|||
} |
|||
#options_tablist { |
|||
border-right: 1px dashed #117743; |
|||
} |
|||
.options_tab_icon { |
|||
color: #ACACAC; |
|||
} |
|||
.options_tab_icon.active { |
|||
color: #FFB300; |
|||
} |
File diff suppressed because one or more lines are too long
@ -0,0 +1,96 @@ |
|||
/** |
|||
* volafile.css fuck you |
|||
color change by kalyx |
|||
*/ |
|||
@import url("/stylesheets/dark.css"); |
|||
@font-face |
|||
{ |
|||
font-family: "DejaVuSansMono"; |
|||
src: url("/stylesheets/fonts/DejaVuSansMono.ttf") format("truetype"); |
|||
} |
|||
@font-face |
|||
{ |
|||
font-family: 'lain'; |
|||
src: url('./fonts/lain.woff') format('woff'), |
|||
url('./fonts/lain.TTF') format('truetype'); |
|||
} |
|||
body { |
|||
background: #000000; |
|||
color: rgb(193, 180, 146); |
|||
font-family: monospace; |
|||
font-size: 11px; |
|||
} |
|||
.boardlist |
|||
{ |
|||
text-shadow: none!important; |
|||
} |
|||
header h1, header div.subtitle, form table tr th, form table tr td input |
|||
{ |
|||
color: #F12D67!important; |
|||
} |
|||
header h1 |
|||
{ |
|||
font-family: "DejaVuSansMono",sans-serif; |
|||
font-style: normal; |
|||
font-weight: 400; |
|||
|
|||
font-size: 32px; |
|||
letter-spacing: 0px; |
|||
margin-top: calc(-16px / 3 - 6.5px); |
|||
} |
|||
p.intro span.subject { |
|||
color: #32BFAB; |
|||
} |
|||
div.topbar, input[type="text"], select, form table tr th, form table tr td input[type="text"], form table tr td textarea, div.post.reply, [type="submit"], input[type="password"], div.pages |
|||
{ |
|||
background: #303030!important; |
|||
border-color: #5A5A5A!important; |
|||
color: #F12D67!important; |
|||
} |
|||
|
|||
div.post.reply.highlighted{ |
|||
background-color: #303030!important; |
|||
} |
|||
form table tr td input[type="text"]:focus, form table tr td textarea:focus |
|||
{ |
|||
border-color: #5A5A5A!important; |
|||
} |
|||
input[type="submit"][name="post"] |
|||
{ |
|||
color: #3A4040!important; |
|||
background-color: #303030!important; |
|||
border-color: #5A5A5A!important; |
|||
} |
|||
.blotter |
|||
{ |
|||
color: #303030!important; |
|||
} |
|||
hr { |
|||
border-color: #5A5A5A; |
|||
} |
|||
a |
|||
{ |
|||
color: #32BFAB!important; |
|||
} |
|||
|
|||
p.intro span.name |
|||
{ |
|||
color: #F12D67; |
|||
} |
|||
span.quote { |
|||
color: #E6E1E9; |
|||
} |
|||
span[style="color:orange;font-weight:bold"] |
|||
{ |
|||
color: #D880FC!important; |
|||
|
|||
} |
|||
a:hover, p.intro a.post_no:hover |
|||
{ |
|||
color: #EDEDED!important; |
|||
text-shadow: none!important; |
|||
} |
|||
i.fa |
|||
{ |
|||
color: #303030; |
|||
} |
@ -0,0 +1,277 @@ |
|||
/*cyberpunk mod of ferus by kalyx |
|||
|
|||
B332E6 = dark purp |
|||
33cccc = teal |
|||
00ff00 = green |
|||
FF46D2 = pink |
|||
dark blue = 00080C |
|||
*/ |
|||
|
|||
body { |
|||
background: #0C0001; |
|||
color: #FF46D2; |
|||
font-family: monospace; |
|||
font-size: 11px; |
|||
/*text-shadow: 0px 0px 3px #FF46D2;*/ |
|||
} |
|||
.bar |
|||
{ |
|||
background-color: #0C0001; |
|||
-webkit-box-shadow: none; |
|||
-moz-box-shadow: none; |
|||
box-shadow: none; |
|||
} |
|||
div.boardlist{ |
|||
background-color: #0C0001!important; |
|||
|
|||
} |
|||
.bar.top |
|||
{ |
|||
border-bottom: 2px solid #3CC!important; |
|||
background-color: #0C0001; |
|||
|
|||
} |
|||
.bar.bottom |
|||
{ |
|||
border-top: 2px solid #3CC!important; |
|||
background-color: #0C0001; |
|||
|
|||
} |
|||
@font-face |
|||
{ |
|||
font-family: 'lain'; |
|||
src: url('./fonts/lain.woff') format('woff'), |
|||
url('./fonts/lain.TTF') format('truetype'); |
|||
} |
|||
h1 { |
|||
font-family: monospace, Arial; |
|||
font-size: 18pt; |
|||
text-align: center; |
|||
letter-spacing: 0px; |
|||
} |
|||
div.title, h1 { |
|||
color: #FF46D2; |
|||
font-family: lain, Helvetica, sans-serif; |
|||
} |
|||
header div.subtitle { |
|||
color: #00ff00; |
|||
text-align: center; |
|||
text-shadow: 0px 0px 3px #00ff00; |
|||
} |
|||
div.title p { |
|||
font-size: 13px; |
|||
} |
|||
a, a:link, a:visited, p.intro a.email span.name { |
|||
color: #00ff00; |
|||
text-shadow: 0px 0px 10px #00ff00; |
|||
font-family: monospace; |
|||
} |
|||
pre.prettyprint { |
|||
background: #00080C; |
|||
|
|||
font-size: 12px; |
|||
line-height: 1.5; |
|||
border: 1px solid #33cccc; |
|||
padding: 10px; |
|||
} |
|||
|
|||
a, a:link, a:visited, p.intro a.email span.name |
|||
{ |
|||
-moz-transition: 0.15s text-shadow, 0.15s color; |
|||
-webkit-transition: 0.15s text-shadow, 0.15s color; |
|||
-khtml-transition: 0.15s text-shadow, 0.15s color; |
|||
-o-transition: 0.15s text-shadow, 0.15s color; |
|||
-ms-transition: 0.15s text-shadow, 0.15s color; |
|||
transition: 0.15s text-shadow, 0.15s color; |
|||
} |
|||
input[type="text"], textarea |
|||
{ |
|||
-moz-transition: 0.15s border-color; |
|||
-webkit-transition: 0.15s border-color; |
|||
-khtml-transition: 0.15s border-color; |
|||
-o-transition: 0.15s border-color; |
|||
-ms-transition: 0.15s border-color; |
|||
transition: 0.15s border-color; |
|||
} |
|||
input[type="submit"] |
|||
{ |
|||
-moz-transition: 0.15s border-color, 0.15s background-color, 0.15s color; |
|||
-webkit-transition: 0.15s border-color, 0.15s background-color, 0.15s color; |
|||
-khtml-transition: 0.15s border-color, 0.15s background-color, 0.15s color; |
|||
-o-transition: 0.15s border-color, 0.15s background-color, 0.15s color; |
|||
-ms-transition: 0.15s border-color, 0.15s background-color, 0.15s color; |
|||
transition: 0.15s border-color, 0.15s background-color, 0.15s color; |
|||
} |
|||
|
|||
a:hover, a:link:hover, a:visited:hover { |
|||
color: #00ff00; |
|||
font-family: monospace;; |
|||
text-shadow: 0px 0px 10px #00ff00; |
|||
} |
|||
strong { |
|||
|
|||
color: #00ff00; |
|||
} |
|||
a.post_no { |
|||
color: #33cccc; |
|||
text-decoration: none; |
|||
} |
|||
span.quote |
|||
{ |
|||
color:#00ff00; |
|||
} |
|||
a.post_no:hover { |
|||
color: maroon; |
|||
/*text-decoration: underline overline;*/ |
|||
} |
|||
div.post.reply { |
|||
background: #0C0001; |
|||
border: #33cccc 2px solid; |
|||
border-radius: 5px; |
|||
} |
|||
.de-pview { |
|||
background: rgba(14, 14, 14, 0.84) !important; |
|||
} |
|||
div.post.reply.highlighted { |
|||
background: transparent; |
|||
border: #1A6666 2px solid; |
|||
} |
|||
div.post.reply div.body a:link, div.post.reply div.body a:visited { |
|||
color: #646464; |
|||
} |
|||
div.post.reply div.body a:link:hover, div.post.reply div.body a:visited:hover { |
|||
color: #00ff00; |
|||
} |
|||
p.intro span.subject { |
|||
font-size: 12px; |
|||
font-family: monospace; |
|||
color: #00ff00; |
|||
font-weight: 800; |
|||
text-shadow: 0px 0px 3px #00ff00; |
|||
} |
|||
p.intro span.name { |
|||
color: #00ff00; |
|||
font-weight: 900; |
|||
text-shadow: 0px 0px 3px #00ff00; |
|||
} |
|||
p.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 { |
|||
color: #00ff00; |
|||
font-family: monospace; |
|||
} |
|||
input[type="text"], textarea, select { |
|||
background: #00080C; |
|||
color: #CCCCCC; |
|||
border: #33cccc 1px solid; |
|||
padding-left: 5px; |
|||
padding-right: -5px; |
|||
font-family: monospace; |
|||
font-size: 10pt; |
|||
border-radius: 5px; |
|||
} |
|||
input[type="password"] { |
|||
background: #00080C; |
|||
color: #CCCCCC; |
|||
border: #33cccc 1px solid; |
|||
border-radius: 5px; |
|||
} |
|||
form table tr th { |
|||
background: #00080C; |
|||
color: #00ff00; |
|||
border: #33cccc 1px solid; |
|||
font-weight: 800; |
|||
text-align: left; |
|||
padding: 0; |
|||
border-radius: 5px; |
|||
text-shadow: 0px 0px 3px #00ff00; |
|||
} |
|||
div.sidearrows{display:none;} |
|||
|
|||
div.banner { |
|||
background: #0C0001; |
|||
color: #00ff00; |
|||
text-align: center; |
|||
width: 250px; |
|||
padding: 4px; |
|||
padding-left: 12px; |
|||
padding-right: 12px; |
|||
margin-left: auto; |
|||
margin-right: auto; |
|||
font-size: 12px; |
|||
text-shadow: 0px 0px 3px #00ff00; |
|||
|
|||
} |
|||
input[type="submit"] { |
|||
background: #00080C; |
|||
color: #00ff00; |
|||
border: #33cccc 1px solid; |
|||
border-radius: 5px; |
|||
} |
|||
input[type="submit"]:hover { |
|||
background: #00080C; |
|||
|
|||
border: #33cccc 1px solid; |
|||
|
|||
color: #FF46D2; |
|||
border-radius: 5px; |
|||
} |
|||
p.fileinfo a:hover { |
|||
text-decoration: underline; |
|||
} |
|||
span.trip { |
|||
color: #AAAAAA; |
|||
} |
|||
.topbar { |
|||
background-color: black; |
|||
border-bottom: 1px solid #33cccc; |
|||
} |
|||
div.pages { |
|||
color: #AAAAAA; |
|||
font-family: sans-serif; |
|||
font-size: 10pt; |
|||
} |
|||
div.pages a.selected { |
|||
color: #8C8C8C; |
|||
} |
|||
hr { |
|||
height: 0px; |
|||
border: #33cccc 1px solid; |
|||
} |
|||
div.boardlist { |
|||
font-size: 9pt; |
|||
color: #999999; |
|||
} |
|||
div.ban { |
|||
background-color: transparent; |
|||
border: #33cccc 1px solid; |
|||
} |
|||
div.ban h2 { |
|||
background: transparent; |
|||
color: #00ff00; |
|||
font-size: 11px; |
|||
text-shadow: 0px 0px 3px #00ff00; |
|||
} |
|||
table.modlog tr th { |
|||
background: #FF46D2; |
|||
color: #AAAAAA; |
|||
/*text-shadow: 0px 0px 3px #00ff00;*/ |
|||
} |
|||
.options_tab_icon { |
|||
color: #FF46D2; |
|||
} |
|||
.options_tab_icon.active { |
|||
color: #00ff00; |
|||
text-shadow: 0px 0px 10px #00ff00; |
|||
} |
|||
#options_div { |
|||
background-color: #0C0001; |
|||
border: #33cccc 2px solid; |
|||
border-radius: 5px; |
|||
} |
|||
|
|||
#options_tablist { |
|||
border: #33cccc 1px solid; |
|||
} |
@ -0,0 +1,242 @@ |
|||
/** |
|||
* dark.css, red accent |
|||
*/ |
|||
|
|||
/*dark.css has been prepended (2021-11-11) instead of @import'd for performance*/ |
|||
body { |
|||
background: #1E1E1E; |
|||
color: #999999; |
|||
font-family: Verdana, sans-serif; |
|||
font-size: 14px; |
|||
} |
|||
.quote { |
|||
color:#B8D962; |
|||
} |
|||
@font-face { |
|||
font-family: 'lain'; |
|||
src: url('./fonts/lain.woff') format('woff'), |
|||
url('./fonts/lain.TTF') format('truetype'); |
|||
} |
|||
h1 |
|||
{ |
|||
letter-spacing: -2px; |
|||
font-size: 20pt; |
|||
text-align: center; |
|||
color: #32DD72; |
|||
} |
|||
div.title, h1 { |
|||
color: #32DD72; |
|||
} |
|||
div.title p { |
|||
font-size: 10px; |
|||
} |
|||
a, a:link, a:visited, .intro a.email span.name { |
|||
color: #CCCCCC; |
|||
text-decoration: none; |
|||
font-family: sans-serif; |
|||
} |
|||
a:hover, a:link:hover, a:visited:hover { |
|||
color: #fff; |
|||
font-family: sans-serif; |
|||
text-decoration: none; |
|||
} |
|||
a.post_no { |
|||
color: #AAAAAA; |
|||
text-decoration: none; |
|||
} |
|||
a.post_no:hover { |
|||
color: #32DD72 !important; |
|||
text-decoration: underline overline; |
|||
} |
|||
div.post.reply { |
|||
background: #333333; |
|||
border: #555555 1px solid; |
|||
} |
|||
div.post.reply.highlighted { |
|||
background: #555; |
|||
border: transparent 1px solid; |
|||
} |
|||
div.post.reply div.body a:link, div.post.reply div.body a:visited { |
|||
color: #CCCCCC; |
|||
} |
|||
div.post.reply div.body a:link:hover, div.post.reply div.body a:visited:hover { |
|||
color: #32DD72; |
|||
} |
|||
.intro span.subject { |
|||
font-size: 12px; |
|||
font-family: sans-serif; |
|||
color: #446655; |
|||
font-weight: 800; |
|||
} |
|||
.intro span.name { |
|||
color: #32DD72; |
|||
font-weight: 800; |
|||
} |
|||
.intro a.capcode, p.intro a.nametag { |
|||
color: magenta; |
|||
margin-left: 0; |
|||
} |
|||
.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 { |
|||
background: #333333; |
|||
color: #CCCCCC; |
|||
border: #666666 1px solid; |
|||
padding-left: 5px; |
|||
padding-right: -5px; |
|||
font-family: sans-serif; |
|||
font-size: 10pt; |
|||
} |
|||
input[type="password"] { |
|||
background: #333333; |
|||
color: #CCCCCC; |
|||
border: #666666 1px solid; |
|||
} |
|||
form table tr th { |
|||
background: #333333; |
|||
color: #AAAAAA; |
|||
font-weight: 800; |
|||
text-align: left; |
|||
padding: 0; |
|||
} |
|||
div.banner { |
|||
background: #32DD72; |
|||
color: #000; |
|||
text-align: center; |
|||
width: 250px; |
|||
padding: 4px; |
|||
padding-left: 12px; |
|||
padding-right: 12px; |
|||
margin-left: auto; |
|||
margin-right: auto; |
|||
font-size: 12px; |
|||
} |
|||
div.banner a { |
|||
color:#000; |
|||
} |
|||
input[type="submit"] { |
|||
background: #333333; |
|||
border: #888888 1px solid; |
|||
color: #CCCCCC; |
|||
} |
|||
input[type="submit"]:hover { |
|||
background: #555555; |
|||
border: #888888 1px solid; |
|||
color: #32DD72; |
|||
} |
|||
input[type="text"]:focus { |
|||
border:#aaa 1px solid; |
|||
} |
|||
p.fileinfo a:hover { |
|||
text-decoration: underline; |
|||
} |
|||
span.trip { |
|||
color: #AAAAAA; |
|||
} |
|||
div.pages { |
|||
background: #1E1E1E; |
|||
font-family: sans-serif; |
|||
} |
|||
.bar.bottom { |
|||
bottom: 0px; |
|||
border-top: 1px solid #333333; |
|||
background-color: #1E1E1E; |
|||
} |
|||
div.pages a.selected { |
|||
color: #CCCCCC; |
|||
} |
|||
hr { |
|||
height: 1px; |
|||
border: #333333 1px solid; |
|||
} |
|||
div.boardlist { |
|||
text-align: center; |
|||
color: #999999; |
|||
} |
|||
div.ban { |
|||
background-color: transparent; |
|||
border: transparent 0px solid; |
|||
} |
|||
div.ban h2 { |
|||
background: transparent; |
|||
color: lime; |
|||
font-size: 12px; |
|||
} |
|||
table.modlog tr th { |
|||
background: #333333; |
|||
color: #AAAAAA; |
|||
} |
|||
div.boardlist:not(.bottom) { |
|||
background-color: #1E1E1E; |
|||
|
|||
} |
|||
.desktop-style div.boardlist:not(.bottom) { |
|||
/* position:static; */ |
|||
text-shadow: black 1px 1px 1px, black -1px -1px 1px, black -1px 1px 1px, black 1px -1px 1px; |
|||
color: #999999; |
|||
background-color: #1E1E1E; |
|||
} |
|||
div.report { |
|||
color: #666666; |
|||
} |
|||
#options_div, #alert_div { |
|||
background: #333333; |
|||
} |
|||
.options_tab_icon { |
|||
color: #AAAAAA; |
|||
} |
|||
.options_tab_icon.active { |
|||
color: #FFFFFF; |
|||
} |
|||
#quick-reply table { |
|||
background: none repeat scroll 0% 0% #333 !important; |
|||
} |
|||
.modlog tr:nth-child(even), .modlog th { |
|||
background-color: #282A2E; |
|||
} |
|||
/* |
|||
.box { |
|||
background: #333333; |
|||
border-color: #555555; |
|||
color: #C5C8C6; |
|||
border-radius: 10px; |
|||
} |
|||
.box-title { |
|||
background: transparent; |
|||
color: #32DD72; |
|||
} |
|||
table thead th { |
|||
background: #333333; |
|||
border-color: #555555; |
|||
color: #C5C8C6; |
|||
border-radius: 4px; |
|||
} |
|||
table tbody tr:nth-of-type( even ) { |
|||
background-color: #333333; |
|||
} |
|||
table.board-list-table .board-uri .board-sfw { |
|||
color: #CCCCCC; |
|||
} |
|||
tbody.board-list-omitted td { |
|||
background: #333333; |
|||
border-color: #555555; |
|||
} |
|||
table.board-list-table .board-tags .board-cell:hover { |
|||
background: #1e1e1e; |
|||
} |
|||
table.board-list-table tr:nth-of-type( even ) .board-tags .board-cell { |
|||
background: #333333; |
|||
} |
|||
*/ |
|||
/* red accents */ |
|||
div.blotter, h1, h2, header div.subtitle, div.title, a:link:hover, a:visited:hover p.intro a.post_no:hover, |
|||
div.post.reply div.body a:link:hover, div.post.reply div.body a:visited:hover, p.intro span.name, |
|||
p.intro a.email, p.intro a.email span.name, p.intro a.email:hover, p.intro a.email:hover span.name, |
|||
input[type="submit"]:hover, div.ban h2 { |
|||
color: #DD3232; |
|||
} |
|||
|
|||
p.intro span.subject { |
|||
color: #962C22; |
|||
} |
@ -0,0 +1,398 @@ |
|||
/** |
|||
* dark.css, solar extension |
|||
* copypasta from oneechan css/Colors.css, and UbuntuSolarized colors |
|||
*/ |
|||
|
|||
@import url("/stylesheets/dark.css"); |
|||
|
|||
/* Text Colors */ |
|||
/* General */ |
|||
html, |
|||
body, |
|||
div.boardBanner, |
|||
#menu, |
|||
input:not(.jsColor), |
|||
textarea, |
|||
#qr-filename-container, |
|||
#post-preview, |
|||
.post-hover, |
|||
.post-last, |
|||
.pln, |
|||
select, |
|||
.captcha-root, |
|||
.tegaki-label, |
|||
.dd-menu ul, |
|||
.boxbar { |
|||
color: #93a1a1 !important; |
|||
} |
|||
/* Names */ |
|||
.name { |
|||
color: #586e75 !important; |
|||
} |
|||
.capcode { |
|||
color: #ca00ca !important; |
|||
} |
|||
|
|||
/* Tripcodes */ |
|||
.tripcode, |
|||
.tag { |
|||
color: #2aa198 !important; |
|||
} |
|||
/* Links */ |
|||
a, |
|||
.typ, |
|||
.atn, |
|||
body.is_catalog .button, |
|||
:root.catalog-mode .button, |
|||
.options-button, |
|||
.tegaki-tb-btn { |
|||
color: #696bba !important; |
|||
} |
|||
a.summary, |
|||
.pages strong>a { |
|||
color: #93a1a1 !important; |
|||
} |
|||
.blotter #notifications a { |
|||
color: #ffffff !important; |
|||
} |
|||
a:hover, |
|||
body.is_catalog .button:hover, |
|||
:root.catalog-mode .button:hover, |
|||
.lit, |
|||
.blotter #notifications a:hover, |
|||
.tegaki-tb-btn:hover { |
|||
color: #d33682 !important; |
|||
} |
|||
/* Header */ |
|||
.blotter, a.current { |
|||
color: #93a1a1 !important; |
|||
} |
|||
.blotter a:not(.current) { |
|||
color: #696bba !important; |
|||
} |
|||
.blotter a:hover { |
|||
color: #d33682 !important; |
|||
} |
|||
#custom-board-list .current { |
|||
border-bottom: 1px solid rgba(105,107,186,1) !important;; |
|||
} |
|||
#custom-board-list .current:hover { |
|||
border-bottom: 1px solid rgba(211,54,130,1) !important;; |
|||
} |
|||
/* Greentext */ |
|||
.postMessage>.quote, |
|||
s:hover .quote, |
|||
.str, |
|||
.atv, |
|||
.new, |
|||
.catalog-thread > .comment > .quote { |
|||
color: #859900 !important; |
|||
} |
|||
/* Headers */ |
|||
.heading { |
|||
color: #bec2c4 !important; |
|||
} |
|||
/* Subject and Option labels */ |
|||
.subject, |
|||
.replytitle, |
|||
.teaser b, |
|||
.post-subject, |
|||
.option.header .option-title, |
|||
.kwd { |
|||
color: #bec2c4 !important; |
|||
} |
|||
.option.header { |
|||
font-size: 140%; |
|||
} |
|||
/* Board Title */ |
|||
h1, h2 { |
|||
color: #93a1a1 !important; |
|||
text-shadow: none !important; |
|||
} |
|||
.subtitle { |
|||
color: #93a1a1 !important; |
|||
text-shadow: none !important; |
|||
} |
|||
/* Backlinks */ |
|||
.backlink { |
|||
color: #4f5f8f !important; |
|||
} |
|||
.quotelink { |
|||
color: #696bba !important; |
|||
} |
|||
/* Code Tags */ |
|||
.prettyprint, |
|||
.catalog-code { |
|||
background: none repeat scroll 0 0 rgba(" + $SS.theme.codeBackground + ") !important; |
|||
border: 1px solid rgba(" + $SS.theme.codeBorder + ") !important; |
|||
} |
|||
.pun { |
|||
color: rgba(147,161,161,.4) !important; |
|||
} |
|||
::-webkit-input-placeholder { |
|||
color:rgba(147,161,161,.4) !important; |
|||
} |
|||
#qr .field::-moz-placeholder, |
|||
::-moz-placeholder, |
|||
#qr-no-file { |
|||
color: rgba(147,161,161,.4) !important; |
|||
} |
|||
/* Backgrounds */ |
|||
body { |
|||
background: #073642 !important; |
|||
} |
|||
.reply, |
|||
body.is_catalog .panel, |
|||
:root.catalog-mode .panel, |
|||
.dialog, |
|||
.tab-label, |
|||
#post-preview, |
|||
#tegaki, |
|||
#options_div, |
|||
#alert_div, |
|||
.bar, |
|||
.boardlist, |
|||
.pages, |
|||
:root.op-background .postContainer.opContainer, |
|||
.flashListing tr:nth-of-type(2n+1), |
|||
.dd-menu ul, |
|||
:root.catalog-hover-expand .catalog-container:hover > .post { |
|||
background: rgba(3,43,54,1)!important; |
|||
} |
|||
:root.recolor-even .thread>.replyContainer:nth-of-type(even):not(.hidden) .post { |
|||
background: rgb(0,33,44) !important; |
|||
} |
|||
:root:not(.header-gradient) .blotter { |
|||
background: rgba(3,43,54,.9) !important; |
|||
} |
|||
:root.header-gradient .blotter { |
|||
background: linear-gradient(rgb(18,58,69),rgba(3,43,54,.9)) !important; |
|||
} |
|||
:root.header-shadow .blotter { |
|||
box-shadow: none !important; |
|||
} |
|||
:root:not(.fixed) .blotter { |
|||
background: none !important; |
|||
} |
|||
.options-button, |
|||
.qr-link, |
|||
.pages.cataloglink, |
|||
.pages strong>a { |
|||
background:linear-gradient(rgb(18,58,69),rgb(3,43,54)) !important; |
|||
} |
|||
.options-button:hover, |
|||
.import-input:hover + .options-button, |
|||
.pages strong>a:hover, |
|||
.dd-menu li:hover { |
|||
background:rgb(18,58,69); |
|||
} |
|||
.focused.entry { |
|||
background:rgb(13,53,64) !important; |
|||
} |
|||
.qr-link:hover, |
|||
:root.vertical-qr #qr .move { |
|||
background:rgb\(3,43,54); |
|||
} |
|||
input:not(.jsColor), |
|||
textarea, |
|||
.riceCheck, |
|||
#qr-filename-container, |
|||
select, |
|||
.captcha-root { |
|||
background: #073642 !important; |
|||
transition: background .2s; |
|||
} |
|||
input[type=checkbox], |
|||
.riceCheck { |
|||
background: rgb(32,79,91) !important; |
|||
} |
|||
input:not(.jsColor):hover, |
|||
.riceCheck:hover, |
|||
#qr-filename-container:hover, |
|||
textarea:hover, |
|||
select:hover, |
|||
.captcha-root:hover { |
|||
background: #0d272e !important; |
|||
transition: background .2s; |
|||
} |
|||
hr { |
|||
background-image: linear-gradient(to left, rgba(211,54,130,0), rgb(211,54,130), rgba(211,54,130,0)); |
|||
} |
|||
#unread-line { |
|||
background-image: linear-gradient(to left, rgba(105,111,192,0), rgb(105,111,192), rgba(105,111,192,0)); |
|||
} |
|||
.inline { |
|||
background:rgba(0,27,38,.8)!important; |
|||
} |
|||
:root.post-info .reply>.postInfo { |
|||
background: rgba(0,27,38,.2); |
|||
border-bottom:1px solid rgb(3,47,58); |
|||
} |
|||
form table tr th {background: #073642;} |
|||
tr, td {background: #073642;} |
|||
#quick-reply table {background: #073642 !important;} |
|||
div.banner {background-color: rgba(200, 200, 200, 0.5);} |
|||
/* Borders */ |
|||
.reply, |
|||
:root.op-background .postContainer.opContainer, |
|||
.dd-menu ul { |
|||
border-width: 0 1px 1px 0; |
|||
border-style: solid; |
|||
} |
|||
:root.borders-all .reply, |
|||
:root.borders-all.op-background .postContainer.opContainer { |
|||
border-width: 1px !important; |
|||
} |
|||
:root.borders-none .reply, |
|||
:root.borders-none.op-background .postContainer.opContainer { |
|||
border: none; |
|||
} |
|||
#menu, |
|||
.catalog-thumb { |
|||
border-radius: 0 !important; |
|||
} |
|||
:root.rounded-corners .reply, |
|||
:root.rounded-corners.op-background .postContainer.opContainer, |
|||
:root.rounded-corners .dialog:not(.blotter), |
|||
:root.rounded-corners .inline, |
|||
:root.rounded-corners #thread-stats |
|||
:root.rounded-corners #updater, |
|||
:root.rounded-corners #menu, |
|||
:root.rounded-corners .thumb, |
|||
:root.rounded-corners .fileThumb img:not(.full-image), |
|||
:root.rounded-corners .catalog-thumb, |
|||
:root.rounded-corners .dd-menu ul, |
|||
:root.rounded-corners.werkTyme .catalog-thread:not(:hover), |
|||
:root.rounded-corners.werkTyme:not(.catalog-hover-expand) .catalog-thread, |
|||
:root.rounded-corners.catalog-hover-expand .catalog-container:hover > .post, |
|||
:root.rounded-corners.catalog-hover-expand .catalog-container:hover .catalog-reply { |
|||
border-radius: 3px !important; |
|||
} |
|||
:root.post-info.rounded-corners .reply>.postInfo, |
|||
:root.rounded-corners #qr, |
|||
:root.rounded-corners:root.vertical-qr #qr > .move { |
|||
border-radius: 3px 3px 0 0 !important; |
|||
} |
|||
:root:not(.rounded-corners) #post-preview { |
|||
border-radius: 0 !important; |
|||
} |
|||
.reply, |
|||
:root.op-background .postContainer.opContainer, |
|||
.dialog, |
|||
.entry, |
|||
.inline, |
|||
fieldset, |
|||
#post-preview, |
|||
.flashListing td:not(:last-of-type):not(.postblock), |
|||
:root.vertical-qr #qr .move, |
|||
#qr select, |
|||
select { |
|||
border-color: #133942 !important; |
|||
} |
|||
.dd-menu li { |
|||
border-bottom: #133942 !important; |
|||
} |
|||
input, |
|||
textarea, |
|||
.riceCheck, |
|||
#qr-filename-container, |
|||
#search-box, |
|||
#index-search, |
|||
.captcha-img, |
|||
:root.vertical-qr #qr .move, |
|||
#qr select, |
|||
select, |
|||
#post-preview, |
|||
.captcha-root, |
|||
.dd-menu ul, |
|||
:root.werkTyme .catalog-thread:not(:hover), |
|||
:root.werkTyme:not(.catalog-hover-expand) .catalog-thread, |
|||
:root.catalog-hover-expand .catalog-container:hover > .post, |
|||
:root.catalog-hover-expand .catalog-container:hover .catalog-reply { |
|||
border: 1px solid #0d272e !important; |
|||
} |
|||
.options-button, |
|||
.qr-link, |
|||
.pages.cataloglink, |
|||
.pages strong>a { |
|||
border-style: solid; |
|||
border-width: 1px; |
|||
border-color: rgb(0,28,39) rgb(0,28,39) rgb(0,13,24) !important; |
|||
} |
|||
a.quotelink.forwardlink, a.backlink.forwardlink { |
|||
border-bottom: 1px dashed; |
|||
} |
|||
input:focus, |
|||
textarea:focus, |
|||
#qr-filename-container:focus, |
|||
#qr-filename-container.focus, |
|||
select:focus, |
|||
.captcha-root:focus { |
|||
border: 1px solid #696bba !important; |
|||
} |
|||
#search-box:hover, |
|||
#index-search:hover, |
|||
.captcha-img:hover { |
|||
border-color: #696bba !important; |
|||
} |
|||
.blotter { |
|||
border: none !important; |
|||
} |
|||
.flashListing td:not(:last-of-type):not(.postblock) { |
|||
border-width: 1px; |
|||
border-style: solid; |
|||
} |
|||
:root.header-highlight #custom-board-list .current:hover, |
|||
:root.header-highlight #custom-board-list .current { |
|||
border-bottom: none !important; |
|||
} |
|||
/* 4chan X Menu */ |
|||
.suboption-list > div:last-of-type { |
|||
background: rgba(3,43,54,1)!important; |
|||
} |
|||
.suboption-list > div::before, |
|||
.suboption-list::before { |
|||
border-color: #133942 !important; |
|||
left: 0.5em !important; |
|||
} |
|||
/* Shadows */ |
|||
#navlinks a { |
|||
text-shadow:#032b36 -1px -1px, |
|||
#032b36 1px -1px, |
|||
#032b36 -1px 1px, |
|||
#032b36 1px 1px, |
|||
#032b36 -1px 0, |
|||
#032b36 1px 0, |
|||
#032b36 0 -1px, |
|||
#032b36 0 1px, |
|||
rgba(0,0,0,.6) 0 2px 4px, |
|||
rgba(0,0,0,.6) 0 0 2px; |
|||
} |
|||
.thumb { |
|||
box-shadow: 0 0 5px rgba(0, 0, 0, 0.25); |
|||
} |
|||
#qr, |
|||
#thread-watcher { |
|||
box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.1) !important; |
|||
} |
|||
.highlighted { |
|||
border-color: #6c71c4 !important; |
|||
} |
|||
/* Thread Stats */ |
|||
:root.style-stats #thread-stats, |
|||
:root.style-stats #updater, |
|||
:root.style-stats #stats { |
|||
box-shadow: 0 1px 2px rgba(0, 0, 0, .15); |
|||
padding: 3px 6px !important; |
|||
border: 1px solid; |
|||
} |
|||
/* Mascots */ |
|||
:root.mascot-grayscale #mascot img { |
|||
filter: url('data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 height=%220%22 color-interpolation-filters=%22sRGB%22><filter id=%22grayscale%22><feColorMatrix id=%22color%22 type=%22saturate%22 values=%220%22 /></filter></svg>#grayscale'); |
|||
-webkit-filter: grayscale(100%); |
|||
} |
|||
/* Closed Threads */ |
|||
.closed { |
|||
margin-top: 10px; |
|||
color: red; |
|||
} |
@ -0,0 +1,59 @@ |
|||
/** |
|||
* dead.css, gray extension |
|||
* Clumps all rules into a few rules to determine the new accent color |
|||
*/ |
|||
|
|||
@import url("/stylesheets/dark.css"); |
|||
|
|||
div.blotter, h1, h2, header div.subtitle, div.title, a:link:hover, a:visited:hover p.intro a.post_no:hover, |
|||
div.post.reply div.body a:link:hover, div.post.reply div.body a:visited:hover, p.intro span.name, |
|||
p.intro a.email, p.intro a.email span.name, p.intro a.email:hover, p.intro a.email:hover span.name, |
|||
input[type="submit"]:hover, div.ban h2 { |
|||
font-family: 'Times'; |
|||
color: #888888; |
|||
} |
|||
|
|||
p.intro span.subject { |
|||
color: #5C5C5C; |
|||
} |
|||
|
|||
.quote, span.orangeQuote, span.heading { |
|||
color:#CDCDCD; |
|||
} |
|||
|
|||
input[type="submit"]:hover { |
|||
background: #555555; |
|||
border: #888888 1px solid; |
|||
color: #CCCCCC; |
|||
} |
|||
|
|||
div.banner { |
|||
background: #DDDDDD; |
|||
} |
|||
|
|||
a:link { |
|||
font-family: 'Times'; |
|||
} |
|||
|
|||
body, div.pages { |
|||
font-family: 'Times'; |
|||
} |
|||
|
|||
button, input, input[type="submit"], input[type="text"], textarea, select { |
|||
font-family: 'Times'; |
|||
} |
|||
|
|||
input, textarea { |
|||
-webkit-filter: grayscale(100%) contrast(1.25); /* Chrome, Safari, Opera */ |
|||
filter: grayscale(100%) contrast(1.25); |
|||
} |
|||
|
|||
img, .file-tmb { |
|||
-webkit-filter: grayscale(100%) contrast(1.25); /* Chrome, Safari, Opera */ |
|||
filter: grayscale(100%) contrast(1.25); |
|||
} |
|||
|
|||
video { |
|||
-webkit-filter: grayscale(100%) contrast(1.25); /* Chrome, Safari, Opera */ |
|||
filter: grayscale(100%) contrast(1.25); |
|||
} |
Binary file not shown.
@ -0,0 +1,212 @@ |
|||
/* Demain_light theme for leftypol.org adapted from "Tomorrow" theme for 4chan, with large font size for wide screens */ |
|||
/* Work in progress*/ |
|||
/* General */ |
|||
/* Main page */ |
|||
legend { |
|||
color: indianred |
|||
} |
|||
div.module, div.ban { |
|||
background: #1d1f21;; |
|||
border: 1px solid #373b41; |
|||
max-width: 700px; |
|||
margin: 30px auto; |
|||
} |
|||
/* Text */ |
|||
body { |
|||
background: #1d1f21; |
|||
color: #ACACAC; |
|||
font-size: 11pt; |
|||
font-family: "LiberationSansRegular"; |
|||
} |
|||
/* Link colors */ |
|||
a, a:link, a:visited, .intro a.email span.name { |
|||
color: #81a2be; |
|||
} |
|||
a:hover, |
|||
.intro a.post_no:hover { |
|||
color: #cc6666; |
|||
} |
|||
/* Board title and subtitle */ |
|||
header div.subtitle, |
|||
h1 { |
|||
color: indianred; |
|||
font-size: 20pt; |
|||
font-family: "LiberationSansRegular"; |
|||
} |
|||
header div.subtitle { |
|||
font-size: 10pt; |
|||
} |
|||
/* Post number*/ |
|||
a.post_no { |
|||
color: #c5c8c6; |
|||
} |
|||
/* Replies */ |
|||
/* Background color and border */ |
|||
div.post.reply { |
|||
background: #282A2E; |
|||
border-color: #373b41; |
|||
border-style: solid; |
|||
border-width: 0.8px; |
|||
border-radius: 5px; |
|||
} |
|||
div.post.reply.highlighted { |
|||
background: #1b1c21; |
|||
border-color: #5f89ac; |
|||
border-style: solid; |
|||
border-width: 0.8px; |
|||
border-radius: 5px; |
|||
} |
|||
div.post.reply div.body a { |
|||
color: #5f89ac; |
|||
} |
|||
.intro span.subject { |
|||
color: #b294bb; |
|||
} |
|||
/* Greentext */ |
|||
span.quote { |
|||
color: #b5bd68 |
|||
} |
|||
/* Orangetext */ |
|||
span.orangeQuote { |
|||
color: #b294bb |
|||
} |
|||
/* Catalog grids */ |
|||
/* Background color and green border */ |
|||
.thread.grid-li.grid-size-vsmall, |
|||
.thread.grid-li.grid-size-small, |
|||
.thread.grid-li.grid-size-large { |
|||
background-color: #282A2E; |
|||
border: 1px solid #373b41; |
|||
} |
|||
.thread.grid-li.grid-size-vsmall:hover, |
|||
.thread.grid-li.grid-size-small:hover, |
|||
.thread.grid-li.grid-size-large:hover { |
|||
background: #1b1c21; |
|||
border-color: #5f89ac; |
|||
border-style: solid; |
|||
border-width: 0.8px; |
|||
border-radius: 5px; |
|||
} |
|||
/* Posting form */ |
|||
/* Field names */ |
|||
form table tr th { |
|||
background: #282A2E; |
|||
color: #ACACAC; |
|||
border: 1px solid #373b41; |
|||
} |
|||
/* Input fields */ |
|||
textarea, input:not([type="file"]):not([type="checkbox"]), [type="submit"], select { |
|||
color: #ACACAC; |
|||
background: #282A2E; |
|||
border: 1px double #1d1f21; |
|||
border-radius: 5px; |
|||
} |
|||
/* Input fields, focused */ |
|||
textarea:focus, input:not([type="file"]):not([type="checkbox"]):focus, [type="submit"]:hover { |
|||
border: 1px solid #1d1f21; |
|||
-moz-box-shadow: 0 0 10px #1d1f21; |
|||
-webkit-box-shadow: 0 0 10px #1d1f21; |
|||
box-shadow: 0 0 10px #1d1f21; |
|||
} |
|||
/* Top bar */ |
|||
/* Background, border and fade */ |
|||
.bar { |
|||
background-color: #151515; |
|||
border-color: #81a2be!important;; |
|||
/* comment these out to remove the fade */ |
|||
/* |
|||
-moz-box-shadow: 0 0 40px #FFB300; |
|||
-webkit-box-shadow: 0 0 40px #FFB300; |
|||
box-shadow: 0 0 40px #FFB300; |
|||
*/ |
|||
} |
|||
/* Bottom bar, not visible in catalog mode */ |
|||
div.pages { |
|||
background: #151515; |
|||
border-color: #81a2be; |
|||
} |
|||
div.pages a.selected { |
|||
color: #cc6666; |
|||
} |
|||
hr { |
|||
border-color: #373b41; |
|||
} |
|||
div.boardlist { |
|||
color: #81a2be; |
|||
font-size: 11pt; |
|||
} |
|||
div.boardlist a { |
|||
color: #cc6666; |
|||
} |
|||
table.modlog tr th { |
|||
background: #1d1f21; |
|||
} |
|||
/* options.js */ |
|||
#options_div, #alert_div { |
|||
background: #151515; |
|||
} |
|||
.options_tab_icon { |
|||
color: gray; |
|||
} |
|||
.desktop-style div.boardlist:nth-child(1) { |
|||
background-color: #151515; |
|||
} |
|||
/* Red text */ |
|||
span.heading { |
|||
color: indianred; |
|||
font-size: 11pt; |
|||
} |
|||
/* Buggy shit */ |
|||
div.post.reply div.body a { |
|||
color: #5f89ac; |
|||
text-decoration: none; |
|||
} |
|||
/* OP */ |
|||
/* Subject */ |
|||
.intro span.subject { |
|||
color: #b294bb; |
|||
} |
|||
/* name */ |
|||
.intro span.name { |
|||
color: #5f89ac; |
|||
} |
|||
.desktop-style div.boardlist:nth-child(1) { |
|||
background-color: #151515; |
|||
} |
|||
/* Upper part of a post */ |
|||
div.post p { |
|||
display: block; |
|||
margin: 0; |
|||
line-height: 1.16em; |
|||
min-height: 1.16em; |
|||
} |
|||
/* Buggy shit */ |
|||
div.post.reply div.body a { |
|||
color: #5f89ac; |
|||
text-decoration: none; |
|||
} |
|||
/* Watchlist options */ |
|||
#watchlist-toggle, .watchThread, .watchlist-remove, #clearList, #clearGhosts { |
|||
color: indianred |
|||
} |
|||
/* Mod things */ |
|||
div.report { |
|||
color: grey; |
|||
} |
|||
.banlist-opts .checkboxes label { |
|||
display: block; |
|||
color: grey; |
|||
} |
|||
tr.tblhead > th { |
|||
color: grey; |
|||
} |
|||
.desktop-style div.boardlist:not(.bottom) { |
|||
background-color: #151515; |
|||
} |
|||
.banlist-opts .checkboxes label { |
|||
display: block; |
|||
color: grey; |
|||
} |
|||
tr.tblhead > th { |
|||
color: indianred |
|||
} |
@ -0,0 +1,213 @@ |
|||
/* Demain_light theme for leftypol.org adapted from "Tomorrow" theme for 4chan, with large font size for wide screens */ |
|||
/* Work in progress*/ |
|||
/* General */ |
|||
/* Main page */ |
|||
legend { |
|||
color: indianred |
|||
} |
|||
div.module, div.ban { |
|||
background: #1d1f21;; |
|||
border: 1px solid #373b41; |
|||
max-width: 700px; |
|||
margin: 30px auto; |
|||
} |
|||
/* Text */ |
|||
body { |
|||
background: #1d1f21; |
|||
color: #ACACAC; |
|||
font-size: 14pt; |
|||
font-family: "LiberationSansRegular"; |
|||
} |
|||
/* Link colors */ |
|||
a:link, a:visited, .intro a.email span.name { |
|||
color: #81a2be; |
|||
} |
|||
a:hover, |
|||
.intro a.post_no:hover { |
|||
color: #cc6666; |
|||
} |
|||
/* Board title and subtitle */ |
|||
header div.subtitle, |
|||
h1 { |
|||
color: indianred; |
|||
font-size: 20pt; |
|||
font-family: "LiberationSansRegular"; |
|||
} |
|||
header div.subtitle { |
|||
font-size: 10pt; |
|||
} |
|||
/* Post number*/ |
|||
a.post_no { |
|||
color: #c5c8c6; |
|||
} |
|||
/* Replies */ |
|||
/* Background color and border */ |
|||
div.post.reply { |
|||
background: #282A2E; |
|||
border-color: #373b41; |
|||
border-style: solid; |
|||
border-width: 0.8px; |
|||
border-radius: 5px; |
|||
} |
|||
div.post.reply.highlighted { |
|||
background: #1b1c21; |
|||
border-color: #5f89ac; |
|||
border-style: solid; |
|||
border-width: 0.8px; |
|||
border-radius: 5px; |
|||
} |
|||
div.post.reply div.body a { |
|||
color: #5f89ac; |
|||
} |
|||
.intro span.subject { |
|||
color: #b294bb; |
|||
} |
|||
/* Greentext */ |
|||
span.quote { |
|||
color: #b5bd68 |
|||
} |
|||
/* Orangetext */ |
|||
span.orangeQuote { |
|||
color: #b294bb |
|||
} |
|||
/* Catalog grids */ |
|||
/* Background color and green border */ |
|||
.thread.grid-li.grid-size-vsmall, |
|||
.thread.grid-li.grid-size-small, |
|||
.thread.grid-li.grid-size-large { |
|||
background-color: #282A2E; |
|||
border: 1px solid #373b41; |
|||
} |
|||
.thread.grid-li.grid-size-vsmall:hover, |
|||
.thread.grid-li.grid-size-small:hover, |
|||
.thread.grid-li.grid-size-large:hover { |
|||
background: #1b1c21; |
|||
border-color: #5f89ac; |
|||
border-style: solid; |
|||
border-width: 0.8px; |
|||
border-radius: 5px; |
|||
} |
|||
/* Posting form */ |
|||
/* Field names */ |
|||
form table tr th { |
|||
background: #282A2E; |
|||
color: #ACACAC; |
|||
border: 1px solid #373b41; |
|||
} |
|||
/* Input fields */ |
|||
textarea, input:not([type="file"]):not([type="checkbox"]), [type="submit"], select { |
|||
color: #ACACAC; |
|||
background: #282A2E; |
|||
border: 1px double #1d1f21; |
|||
border-radius: 5px; |
|||
} |
|||
/* Input fields, focused */ |
|||
textarea:focus, input:not([type="file"]):not([type="checkbox"]):focus, [type="submit"]:hover { |
|||
border: 1px solid #1d1f21; |
|||
-moz-box-shadow: 0 0 10px #1d1f21; |
|||
-webkit-box-shadow: 0 0 10px #1d1f21; |
|||
box-shadow: 0 0 10px #1d1f21; |
|||
} |
|||
/* Top bar */ |
|||
/* Background, border and fade */ |
|||
.bar { |
|||
background-color: #151515; |
|||
border-color: #81a2be!important;; |
|||
/* comment these out to remove the fade */ |
|||
/* |
|||
-moz-box-shadow: 0 0 40px #FFB300; |
|||
-webkit-box-shadow: 0 0 40px #FFB300; |
|||
box-shadow: 0 0 40px #FFB300; |
|||
*/ |
|||
} |
|||
/* Bottom bar, not visible in catalog mode */ |
|||
div.pages { |
|||
background: #151515; |
|||
border-color: #81a2be; |
|||
} |
|||
div.pages a.selected { |
|||
color: #cc6666; |
|||
} |
|||
hr { |
|||
border-color: #373b41; |
|||
} |
|||
div.boardlist { |
|||
color: #81a2be; |
|||
font-size: 14pt; |
|||
} |
|||
div.boardlist a { |
|||
color: #cc6666; |
|||
} |
|||
table.modlog tr th { |
|||
background: #1d1f21; |
|||
} |
|||
/* options.js */ |
|||
#options_div, #alert_div { |
|||
background: #151515; |
|||
} |
|||
.options_tab_icon { |
|||
color: gray; |
|||
} |
|||
.desktop-style div.boardlist:nth-child(1) { |
|||
background-color: #151515; |
|||
} |
|||
/* Red text */ |
|||
span.heading { |
|||
color: indianred; |
|||
font-size: 14pt; |
|||
} |
|||
/* Buggy shit */ |
|||
div.post.reply div.body a { |
|||
color: #5f89ac; |
|||
text-decoration: none; |
|||
} |
|||
/* OP */ |
|||
/* Subject */ |
|||
.intro span.subject { |
|||
color: #b294bb; |
|||
} |
|||
/* name */ |
|||
.intro span.name { |
|||
color: #5f89ac; |
|||
} |
|||
.desktop-style div.boardlist:nth-child(1) { |
|||
background-color: #151515; |
|||
} |
|||
/* Upper part of a post */ |
|||
div.post p { |
|||
display: block; |
|||
margin: 0; |
|||
line-height: 1.16em; |
|||
font-size: 13pt; |
|||
min-height: 1.16em; |
|||
} |
|||
/* Buggy shit */ |
|||
div.post.reply div.body a { |
|||
color: #5f89ac; |
|||
text-decoration: none; |
|||
} |
|||
/* Watchlist options */ |
|||
#watchlist-toggle, .watchThread, .watchlist-remove, #clearList, #clearGhosts { |
|||
color: indianred |
|||
} |
|||
/* Mod things */ |
|||
div.report { |
|||
color: grey; |
|||
} |
|||
.banlist-opts .checkboxes label { |
|||
display: block; |
|||
color: grey; |
|||
} |
|||
tr.tblhead > th { |
|||
color: grey; |
|||
} |
|||
.desktop-style div.boardlist:not(.bottom) { |
|||
background-color: #151515; |
|||
} |
|||
.banlist-opts .checkboxes label { |
|||
display: block; |
|||
color: grey; |
|||
} |
|||
tr.tblhead > th { |
|||
color: indianred |
|||
} |
@ -0,0 +1,226 @@ |
|||
/*fauux.neocities.org mod of ferus by kalyx |
|||
|
|||
B332E6 = dark purp#d2738a = teal #d2738a = green |
|||
|
|||
rgb(193, 180, 146) = pink |
|||
dark blue = 00080C |
|||
*/ |
|||
|
|||
body { |
|||
background: #000000; |
|||
color: rgb(193, 180, 146); |
|||
font-family: monospace; |
|||
font-size: 11px; |
|||
} |
|||
.bar |
|||
{ |
|||
background-color: #000; |
|||
border-color: #D2738A!important; |
|||
-moz-box-shadow: none; |
|||
-webkit-box-shadow: none; |
|||
box-shadow: none; |
|||
background-color: #000!important; |
|||
} |
|||
div.boardlist{ |
|||
background-color: #000!important; |
|||
|
|||
} |
|||
@font-face |
|||
{ |
|||
font-family: 'lain'; |
|||
src: url('./fonts/lain.woff') format('woff'), |
|||
url('./fonts/lain.TTF') format('truetype'); |
|||
} |
|||
h1 { |
|||
font-family: monospace, Arial; |
|||
font-size: 18pt; |
|||
text-align: center; |
|||
letter-spacing: 0px; |
|||
} |
|||
div.title, h1 { |
|||
color: rgb(193, 180, 146); |
|||
font-family: lain, Helvetica, sans-serif; |
|||
} |
|||
header div.subtitle { |
|||
color: #d2738a; |
|||
text-align: center; |
|||
} |
|||
div.title p { |
|||
font-size: 13px; |
|||
} |
|||
a, a:link, a:visited, p.intro a.email span.name { |
|||
color: #d2738a; |
|||
text-decoration: underline; |
|||
font-family: monospace; |
|||
} |
|||
pre.prettyprint { |
|||
background: #00080C; |
|||
|
|||
font-size: 12px; |
|||
line-height: 1.5; |
|||
border: 1px solid #d2738a; |
|||
padding: 10px; |
|||
} |
|||
a:hover, a:link:hover, a:visited:hover { |
|||
color: #d2738a; |
|||
font-family: monospace;; |
|||
text-decoration: underline overline; |
|||
} |
|||
strong { |
|||
|
|||
color: #d2738a; |
|||
} |
|||
a.post_no { |
|||
color: #d2738a; |
|||
text-decoration: none; |
|||
} |
|||
span.quote |
|||
{ |
|||
color:#d2738a; |
|||
} |
|||
a.post_no:hover { |
|||
color: maroon; |
|||
text-decoration: underline overline; |
|||
} |
|||
div.post.reply { |
|||
background: #000000; |
|||
border: #d2738a 1px solid; |
|||
/*border-radius: 5px;*/ |
|||
} |
|||
.de-pview { |
|||
background: rgba(14, 14, 14, 0.84) !important; |
|||
} |
|||
div.post.reply.highlighted { |
|||
background: transparent; |
|||
border: #EDC7D0 1px solid; |
|||
} |
|||
div.post.reply div.body a:link, div.post.reply div.body a:visited { |
|||
color: #646464; |
|||
} |
|||
div.post.reply div.body a:link:hover, div.post.reply div.body a:visited:hover { |
|||
color: #d2738a; |
|||
} |
|||
p.intro span.subject { |
|||
font-size: 10px; |
|||
font-family: monospace; |
|||
color: #d2738a; |
|||
font-weight: 800; |
|||
} |
|||
p.intro span.name { |
|||
color: #d2738a; |
|||
font-weight: 900; |
|||
} |
|||
p.intro a.capcode, p.intro a.nametag { |
|||
color: #d2738a; |
|||
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 { |
|||
color: #d2738a; |
|||
font-family: monospace; |
|||
} |
|||
input[type="text"], textarea, select { |
|||
background: #00080C; |
|||
color: #CCCCCC; |
|||
border: #d2738a 1px solid; |
|||
padding-left: 5px; |
|||
padding-right: -5px; |
|||
font-family: monospace; |
|||
font-size: 10pt; |
|||
/*border-radius: 5px;*/ |
|||
} |
|||
input[type="password"] { |
|||
background: #00080C; |
|||
color: #CCCCCC; |
|||
border: #d2738a 1px solid; |
|||
/*border-radius: 5px;*/ |
|||
} |
|||
form table tr th { |
|||
background: #00080C; |
|||
color: #d2738a; |
|||
border: #d2738a 1px solid; |
|||
font-weight: 800; |
|||
text-align: left; |
|||
padding: 0; |
|||
/*border-radius: 5px;*/ |
|||
} |
|||
div.sidearrows{display:none;} |
|||
|
|||
div.banner { |
|||
background: #000000; |
|||
color: #d2738a; |
|||
text-align: center; |
|||
width: 250px; |
|||
padding: 4px; |
|||
padding-left: 12px; |
|||
padding-right: 12px; |
|||
margin-left: auto; |
|||
margin-right: auto; |
|||
font-size: 12px; |
|||
|
|||
} |
|||
input[type="submit"] { |
|||
background: #00080C; |
|||
color: #d2738a; |
|||
border: #d2738a 1px solid; |
|||
/*border-radius: 5px;*/ |
|||
} |
|||
input[type="submit"]:hover { |
|||
background: #00080C; |
|||
|
|||
border: #d2738a 1px solid; |
|||
|
|||
color: rgb(193, 180, 146); |
|||
/*border-radius: 5px;*/ |
|||
} |
|||
p.fileinfo a:hover { |
|||
text-decoration: underline; |
|||
} |
|||
span.trip { |
|||
color: #AAAAAA; |
|||
} |
|||
.topbar { |
|||
background-color: black; |
|||
border-bottom: 1px solid #d2738a; |
|||
} |
|||
div.pages { |
|||
color: #AAAAAA; |
|||
/*background: #333333; |
|||
border: #d2738a 1px solid;*/ |
|||
font-family: sans-serif; |
|||
font-size: 10pt; |
|||
} |
|||
div.pages a.selected { |
|||
color: #8C8C8C; |
|||
} |
|||
hr { |
|||
height: 1px; |
|||
border: #d2738a 1px solid; |
|||
} |
|||
div.boardlist { |
|||
font-size: 10pt; |
|||
color: #999999; |
|||
} |
|||
div.ban { |
|||
background-color: transparent; |
|||
border: transparent 0px solid; |
|||
} |
|||
div.ban h2 { |
|||
background: transparent; |
|||
color: lime; |
|||
font-size: 11px; |
|||
} |
|||
table.modlog tr th { |
|||
background: rgb(193, 180, 146); |
|||
color: #AAAAAA; |
|||
} |
|||
#options_div { |
|||
background-color: #000000; |
|||
} |
|||
|
|||
.options_tab_icon { |
|||
color: #c1b492; |
|||
} |
|||
|
|||
.options_tab_icon.active { |
|||
color: #d2738a; |
|||
} |
Binary file not shown.
Binary file not shown.
Some files were not shown because too many files changed in this diff
Loading…
Reference in new issue