Add new directory structure. Tags will contain current and past releases, and stable will contain any bug fixes to the current stable release so users won't have to get the potentially broken trunk build to fix a screwup in stable.

Trunk updated to 0.9

git-svn-id: http://kusabax.cultnet.net/svn/repo/stable@176 73d99b7e-4f53-4972-b7b7-2ecd3c4d89ee
This commit is contained in:
Sazpaimon committed 2009-05-27 06:37:50 +00:00
commit 88bacfad9c
316 files changed
+79806

No files matched your search

+22
View File
@@ -0,0 +1,22 @@
DirectoryIndex kusaba.php
AddCharset UTF-8 .html
AddCharset UTF-8 .php
FileETag None
<IfModule mod_headers.c>
<Files *.html>
Header add Expires "Mon, 26 Jul 1997 05:00:00 GMT"
Header add Pragma "no-cache"
Header add Cache-Control "max-age=0; must-revalidate; no-cache"
Header set Expires "0"
Header unset Vary
</Files>
</IfModule>
<Files spam.txt>
order allow,deny
deny from all
</Files>
# Warning: Contents below this line may be erased, please place all .htaccess rules above this line
## !KU_BANS:
+14
View File
@@ -0,0 +1,14 @@
===== Serissa to Kusaba X 0.8 Conversion Script =====
=== How to use ===
1. Copy s2xk.php and s2kx.sql to the folder containing config.php on your server.
2. Run s2kx.php.
3. Download the full version Kusaba X from http://kusabax.org
4. Make a backup of your current config.php
5. Extract the files that you downloaded where you want them installed. Overwrite everything.
6. If everything went right, congratulations! You are now running Kusaba X 0.8!
== When upgrading to Kusaba X 0.9 ==
7. Once converted, you will need to run the upgrade scripts to upgrade from Kusaba X 0.8 to Kusabax 0.9. These scripts are located in the OTHER directory.
+146
View File
@@ -0,0 +1,146 @@
<?php
/**
* @ignore
*/
################################################################################
# kusaba MySQL Importing Script v1.0 is © 2007 David Steven-Jennings (relixx@gmail.com)
#
# This work is licensed under the Creative Commons Attribution-ShareAlike 2.5 License.
# To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/2.5/
# or send a letter to Creative Commons, 543 Howard Street, 5th Floor, San Francisco,
# California, 94105, USA.
#
# You can modify this script as you wish just as long as this box stays intact. If
# you do modify this script please state that you have done so and give me credit
# as the author of the original script (with my email address intact).
################################################################################
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>MySQL Batch File Importing Script</title>
<style type="text/css">
body { font-family: sans-serif; font-size: 75%; background: #ffe }
a { text-decoration: none; color: #550 }
h1,h2 { margin: 0px; background: #fca }
h1 { font-size: 150% }
h2 { font-size: 100%; margin-top: 1em }
.hl { font-style: italic }
.plus { float: right; font-size: 8px; font-weight: normal; padding: 1px 4px 2px 4px; margin: 0px 0px; background: #eb9; color: #000; border: 1px solid #da8; cursor: hand; cursor: pointer }
.plus:hover { background: #da8; border: 1px solid #c97 }
ul { list-style: none; padding-left: 0px; margin: 0px }
li { margin: 0px }
li:hover { background: #fec; }
li a { display: block; width: 100%; }
</style>
<link rel="shortcut icon" href="/favicon.ico" />
</head>
<body>
<div style="text-align:center;"><h1>MySQL Batch File Importing Script</h1></div>
<?php
if (!isset($_POST["confirm"])) {
?>
<br /><br />
<font color="#FF0000"><strong>WARNING!</strong></font><br /><br />
The purpose of this script is to quickly and easily run the commands contained within the kusaba SQL file, and is
to be used if you are installing the script for the first time or want to recreate the tables, for whatever reason.<br />
Running this script will delete any related tables and their data (including the admin files). I offer this script as-is and cannot be held
responsible for any damages caused or accidental loss of data incurred as a result of running this script.<br />
Before running this script, make sure that:<br />
<ul>
<li>-&gt; You have set up the database connection and that it is working</li>
<li>-&gt; You have created the database</li>
<li>-&gt; You have created the database user and set up the config file appropriately</li>
</ul>
<form action="install-mysql.php" method="post">
<br />
<input type="checkbox" name="confirm"> By clicking this check box I agree that the author of this script cannot be held responsible for my own stupidity if something goes wrong.<br /><br /><br />
<input type="submit" value="Import the MySQL batch file">
</form>
<?php
} else {
require('config.php');
$reqiredtables = array("ads","announcements","banlist","bannedhashes","blotter","boards","board_filetypes","embeds","events","filetypes","front","loginattempts","modlog","module_settings","posts","reports","sections","staff","watchedthreads","wordfilter");
foreach ($reqiredtables as $tablename) {
if (mysql_table_exists(KU_DBDATABASE,KU_DBPREFIX.$tablename)) {
die("Table <strong>".KU_DBPREFIX.$tablename."</strong> already exists in the database! Drop it, and re run this script.");
}
}
// Lets open the file for reading! :)
echo '<h2>SQL Batch File Processing</h2>';
echo 'Locating \'kusaba_freshinstall.mysql.sql\'... ';
if (file_exists('kusaba_freshinstall.mysql.sql') && (filesize('kusaba_freshinstall.mysql.sql') > 0)) {
echo 'found.<br />';
$sqlfile = fopen('kusaba_freshinstall.mysql.sql', 'r');
echo 'File opened.<br />';
$readdata = fread($sqlfile, filesize('kusaba_freshinstall.mysql.sql'));
$readdata = str_replace('PREFIX_',KU_DBPREFIX,$readdata);
fclose($sqlfile);
echo 'Contents read.<br />';
}else{
echo '<font color=red>error.</font> ';
die('An error occured. kusaba_freshinstall.mysql.sql does not exist in this directory or it is 0 bytes big :( Barring that, do you have read permissions for the directory?');
}
$tc_db->Execute("ALTER DATABASE `" . KU_DBDATABASE . "` CHARACTER SET utf8 COLLATE utf8_general_ci");
// Explodes the array
$sqlarray = explode("\n", $readdata);
// Loops through the array and deletes the non-SQL bits in the file, which is basically the '--' lines and the lines with no content
foreach ($sqlarray as $key => $sqldata) {
if (strstr($sqldata, '--') || strlen($sqldata) == 0){
unset($sqlarray[$key]);
}
}
// Here we are imploding everything together again...
$readdata = implode('',$sqlarray);
// ...then exploding it again. At this point we will have an array where each key's value is a one of the CREATE statements
$sqlarray = explode(';',$readdata);
echo 'File contents have been formatted for use with mysql_query.<br />';
// Lets drop any existing tables in the database
$listoftables = $tc_db->GetAll("show tables from ".KU_DBDATABASE."");
echo '<h2>Table Creation</h2>';
// Lets now loop through the array and create each table
foreach ($sqlarray as $sqldata) {
if (strlen($sqldata) !== 0) { // As the array was exploded on ';', the last ';' caused a blank element to be created as there was no data after it :p
// The following three lines retrieve the table name of the table from the sql command. It's dynamic so it doesn't matter how many tables need to be created
// As long as each CREATE TABLE statement stays in the format CREATE TABLE `table` then this part will work.
$pos1 = strpos($sqldata, '`');
$pos2 = strpos($sqldata, '`', $pos1 + 1);
$tablename = substr($sqldata, $pos1+1, ($pos2-$pos1)-1);
echo "Attempting to create table '$tablename'... ";
if($tc_db->Execute($sqldata)) {
echo "success.<br />";
} else {
echo "<font color='red'>failed</font>. Enable debugging by setting KU_DEBUG to true to see this error.<br />";
die ("Table creation failed. Please rerun this script again or attempt to fix the problem if you know how to solve it.");
}
}
}
// All done :)
echo '<br />SQL commands have finished. If all is well, proceed to the <a href="install.php"><strong><u>installation file</u></strong></a> but don\'t forget to delete this file!';
}
function mysql_table_exists($database, $tableName)
{
global $tc_db;
$tables = array();
$tablesResults = $tc_db->GetAll("SHOW TABLES FROM `$database`;");
foreach ($tablesResults AS $row) $tables[] = $row[0];
return(in_array($tableName, $tables));
}
?>
</body>
</html>
+147
View File
@@ -0,0 +1,147 @@
<?php
/**
* @ignore
*/
################################################################################
# kusaba PostgreSQL Importing Script v1.0 is © 2007 David Steven-Jennings (relixx@gmail.com)
#
# This work is licensed under the Creative Commons Attribution-ShareAlike 2.5 License.
# To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/2.5/
# or send a letter to Creative Commons, 543 Howard Street, 5th Floor, San Francisco,
# California, 94105, USA.
#
# You can modify this script as you wish just as long as this box stays intact. If
# you do modify this script please state that you have done so and give me credit
# as the author of the original script (with my email address intact).
################################################################################
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>PostgreSQL Batch File Importing Script</title>
<style type="text/css">
body { font-family: sans-serif; font-size: 75%; background: #ffe }
a { text-decoration: none; color: #550 }
h1,h2 { margin: 0px; background: #fca }
h1 { font-size: 150% }
h2 { font-size: 100%; margin-top: 1em }
.hl { font-style: italic }
.plus { float: right; font-size: 8px; font-weight: normal; padding: 1px 4px 2px 4px; margin: 0px 0px; background: #eb9; color: #000; border: 1px solid #da8; cursor: hand; cursor: pointer }
.plus:hover { background: #da8; border: 1px solid #c97 }
ul { list-style: none; padding-left: 0px; margin: 0px }
li { margin: 0px }
li:hover { background: #fec; }
li a { display: block; width: 100%; }
</style>
<link rel="shortcut icon" href="/favicon.ico" />
</head>
<body>
<div style="text-align:center;"><h1>PostgreSQL Batch File Importing Script</h1></div>
<?php
if (!isset($_POST["confirm"])) {
?>
<br /><br />
<font color="#FF0000"><strong>WARNING!</strong></font><br /><br />
The purpose of this script is to quickly and easily run the commands contained within the kusaba SQL file, and is
to be used if you are installing the script for the first time or want to recreate the tables, for whatever reason.<br />
Running this script will delete any related tables and their data (including the admin files). I offer this script as-is and cannot be held
responsible for any damages caused or accidental loss of data incurred as a result of running this script.<br />
Before running this script, make sure that:<br />
<ul>
<li>-&gt; You have set up the database connection and that it is working</li>
<li>-&gt; You have created the database</li>
<li>-&gt; You have created the database user and set up the config file appropriately</li>
</ul>
<form action="install-pgsql.php" method="post">
<br />
<input type="checkbox" name="confirm"> By clicking this check box I agree that the author of this script cannot be held responsible for my own stupidity if something goes wrong.<br /><br /><br />
<input type="submit" value="Import the PostgreSQL batch file">
</form>
<?php
} else {
require('config.php');
$reqiredtables = array("ads","announcements","banlist","bannedhashes","blotter","boards","board_filetypes","embeds","events","filetypes","front","loginattempts","modlog","module_settings","posts","reports","sections","staff","watchedthreads","wordfilter");
foreach ($reqiredtables as $tablename) {
if (pgsql_table_exists(KU_DBDATABASE,KU_DBPREFIX.$tablename)) {
die("Table <strong>".KU_DBPREFIX.$tablename."</strong> already exists in the database! Drop it, and re run this script.");
}
}
// Lets open the file for reading! :)
echo '<h2>SQL Batch File Processing</h2>';
echo 'Locating \'kusaba_freshinstall.postgres.sql\'... ';
if (file_exists('kusaba_freshinstall.postgres.sql') && (filesize('kusaba_freshinstall.postgres.sql') > 0)) {
echo 'found.<br />';
$sqlfile = fopen('kusaba_freshinstall.postgres.sql', 'r');
echo 'File opened.<br />';
$readdata = fread($sqlfile, filesize('kusaba_freshinstall.postgres.sql'));
$readdata = str_replace('PREFIX_',KU_DBPREFIX,$readdata);
fclose($sqlfile);
echo 'Contents read.<br />';
}else{
echo '<font color=red>error.</font> ';
die('An error occured. kusaba_freshinstall.postgres.sql does not exist in this directory or it is 0 bytes big :( Barring that, do you have read permissions for the directory?');
}
// Explodes the array
$sqlarray = explode("\n", $readdata);
// Loops through the array and deletes the non-SQL bits in the file, which is basically the '--' lines and the lines with no content
foreach ($sqlarray as $key => $sqldata) {
if (strstr($sqldata, '--') || strlen($sqldata) == 0){
unset($sqlarray[$key]);
}
}
// Here we are imploding everything together again...
$readdata = implode('',$sqlarray);
// ...then exploding it again. At this point we will have an array where each key's value is a one of the CREATE statements
$sqlarray = explode(';',$readdata);
echo 'File contents have been formatted for use with pg_query.<br />';
// Lets drop any existing tables in the database
$listoftables = $tc_db->GetAll("SELECT table_name FROM information_schema.tables WHERE table_schema='public' AND table_type='BASE TABLE'");
echo '<h2>Table Creation</h2>';
// Lets now loop through the array and create each table
foreach ($sqlarray as $sqldata) {
if (strlen($sqldata) !== 0) { // As the array was exploded on ';', the last ';' caused a blank element to be created as there was no data after it :p
// The following three lines retrieve the table name of the table from the sql command. It's dynamic so it doesn't matter how many tables need to be created
// As long as each CREATE TABLE statement stays in the format CREATE TABLE `table` then this part will work.
$sqldata = str_replace(":semicolon:", ";", $sqldata);
if (strpos($sqldata, "CREATE TABLE") !== false) {
preg_match("/CREATE TABLE (.*?) \(/", $sqldata, $tablename);
echo "Attempting to create table '{$tablename[1]}'... ";
}
else {
echo "Attempting to run query '".$sqldata."'... ";
}
if($tc_db->Execute($sqldata)) {
echo "success.<br />";
} else {
echo "<font color='red'>failed</font>. Enable debugging by setting KU_DEBUG to true to see this error.<br />";
die ("Table creation failed. Please rerun this script again or attempt to fix the problem if you know how to solve it.");
}
}
}
// All done :)
echo '<br />SQL commands have finished. If all is well, proceed to the <a href="install.php"><strong><u>installation file</u></strong></a> but don\'t forget to delete this file!';
}
function pgsql_table_exists($database, $tableName) {
global $tc_db;
$tables = array();
$tablesResults = $tc_db->GetAll("SELECT table_name FROM information_schema.tables WHERE table_schema='public' AND table_type='BASE TABLE'");
foreach ($tablesResults AS $row) $tables[] = $row[0];
return(in_array($tableName, $tables));
}
?>
</body>
</html>
+150
View File
@@ -0,0 +1,150 @@
<?php
/**
* @ignore
*/
################################################################################
# kusaba SQLite Importing Script v1.0 is © 2007 David Steven-Jennings (relixx@gmail.com)
#
# This work is licensed under the Creative Commons Attribution-ShareAlike 2.5 License.
# To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/2.5/
# or send a letter to Creative Commons, 543 Howard Street, 5th Floor, San Francisco,
# California, 94105, USA.
#
# You can modify this script as you wish just as long as this box stays intact. If
# you do modify this script please state that you have done so and give me credit
# as the author of the original script (with my email address intact).
################################################################################
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>SQLite Batch File Importing Script</title>
<style type="text/css">
body { font-family: sans-serif; font-size: 75%; background: #ffe }
a { text-decoration: none; color: #550 }
h1,h2 { margin: 0px; background: #fca }
h1 { font-size: 150% }
h2 { font-size: 100%; margin-top: 1em }
.hl { font-style: italic }
.plus { float: right; font-size: 8px; font-weight: normal; padding: 1px 4px 2px 4px; margin: 0px 0px; background: #eb9; color: #000; border: 1px solid #da8; cursor: hand; cursor: pointer }
.plus:hover { background: #da8; border: 1px solid #c97 }
ul { list-style: none; padding-left: 0px; margin: 0px }
li { margin: 0px }
li:hover { background: #fec; }
li a { display: block; width: 100%; }
</style>
<link rel="shortcut icon" href="/favicon.ico" />
</head>
<body>
<div style="text-align:center;"><h1>SQLite Batch File Importing Script</h1></div>
<?php
if (!isset($_POST["confirm"])) {
?>
<br /><br />
<font color="#FF0000"><strong>WARNING!</strong></font><br /><br />
The purpose of this script is to quickly and easily run the commands contained within the kusaba SQL file, and is
to be used if you are installing the script for the first time or want to recreate the tables, for whatever reason.<br />
Running this script will delete any related tables and their data (including the admin files). I offer this script as-is and cannot be held
responsible for any damages caused or accidental loss of data incurred as a result of running this script.<br />
Before running this script, make sure that:<br />
<ul>
<li>-&gt; You have set up the database connection and that it is working</li>
<li>-&gt; You have created the database</li>
<li>-&gt; You have created the database user and set up the config file appropriately</li>
</ul>
<form action="install-sqlite.php" method="post">
<br />
<input type="checkbox" name="confirm"> By clicking this check box I agree that the author of this script cannot be held responsible for my own stupidity if something goes wrong.<br /><br /><br />
<input type="submit" value="Import the SQLite batch file">
</form>
<?php
} else {
require('config.php');
$reqiredtables = array("ads","announcements","banlist","bannedhashes","blotter","boards","board_filetypes","embeds","events","filetypes","front","loginattempts","modlog","module_settings","posts","reports","sections","staff","watchedthreads","wordfilter");
foreach ($reqiredtables as $tablename) {
if (sqlite_table_exists(KU_DBDATABASE,KU_DBPREFIX.$tablename)) {
die("Table <strong>".KU_DBPREFIX.$tablename."</strong> already exists in the database! Drop it, and re run this script.");
}
}
// Lets open the file for reading! :)
echo '<h2>SQL Batch File Processing</h2>';
echo 'Locating \'kusaba_freshinstall.sqlite.sql\'... ';
if (file_exists('kusaba_freshinstall.sqlite.sql') && (filesize('kusaba_freshinstall.sqlite.sql') > 0)) {
echo 'found.<br />';
$sqlfile = fopen('kusaba_freshinstall.sqlite.sql', 'r');
echo 'File opened.<br />';
$readdata = fread($sqlfile, filesize('kusaba_freshinstall.sqlite.sql'));
$readdata = str_replace('PREFIX_',KU_DBPREFIX,$readdata);
fclose($sqlfile);
echo 'Contents read.<br />';
}else{
echo '<font color=red>error.</font> ';
die('An error occured. kusaba_freshinstall.sqlite.sql does not exist in this directory or it is 0 bytes big :( Barring that, do you have read permissions for the directory?');
}
// Explodes the array
$sqlarray = explode("\n", $readdata);
// Loops through the array and deletes the non-SQL bits in the file, which is basically the '--' lines and the lines with no content
foreach ($sqlarray as $key => $sqldata) {
if (strstr($sqldata, '--') || strlen($sqldata) == 0){
unset($sqlarray[$key]);
}
}
// Here we are imploding everything together again...
$readdata = implode('',$sqlarray);
// ...then exploding it again. At this point we will have an array where each key's value is a one of the CREATE statements
$sqlarray = explode(';',$readdata);
echo 'File contents have been formatted for use with sqlite_query.<br />';
// Lets drop any existing tables in the database
$listoftables = $tc_db->GetAll("SELECT name FROM sqlite_master WHERE type = 'table'");
echo '<h2>Table Creation</h2>';
// Lets now loop through the array and create each table
foreach ($sqlarray as $sqldata) {
if (strlen($sqldata) !== 0) { // As the array was exploded on ';', the last ';' caused a blank element to be created as there was no data after it :p
// The following three lines retrieve the table name of the table from the sql command. It's dynamic so it doesn't matter how many tables need to be created
// As long as each CREATE TABLE statement stays in the format CREATE TABLE `table` then this part will work.
$sqldata = str_replace(":semicolon:", ";", $sqldata);
if (strpos($sqldata, "CREATE TABLE") !== false) {
preg_match("/CREATE TABLE (.*?) \(/", $sqldata, $tablename);
echo "Attempting to create table '{$tablename[1]}'... ";
}
else {
echo "Attempting to run query '".$sqldata."'... ";
}
if($tc_db->Execute($sqldata)) {
echo "success.<br />";
} else {
echo "<font color='red'>failed</font>. Enable debugging by setting KU_DEBUG to true to see this error.<br />";
die ("Table creation failed. Please rerun this script again or attempt to fix the problem if you know how to solve it.");
}
}
}
// All done :)
echo '<br />SQL commands have finished. If all is well, proceed to the <a href="install.php"><strong><u>installation file</u></strong></a> but don\'t forget to delete this file!';
}
function sqlite_table_exists($database, $tableName) {
global $tc_db;
$tables = array();
$tablesResults = $tc_db->GetAll("SELECT name FROM sqlite_master WHERE type = 'table'" );
foreach ($tablesResults AS $row) $tables[] = $row[0];
return(in_array($tableName, $tables));
}
?>
</body>
</html>
+120
View File
@@ -0,0 +1,120 @@
<?php
/**
* @ignore
*/
function mysql_table_exists($database, $tableName) {
global $tc_db;
$tables = array();
$tablesResults = $tc_db->GetAll("SHOW TABLES FROM `$database`;");
foreach ($tablesResults AS $row) $tables[] = $row[0];
return(in_array($tableName, $tables));
}
function pgsql_table_exists($database, $tableName) {
global $tc_db;
$tables = array();
$tablesResults = $tc_db->GetAll(" select table_name from information_schema.tables where table_schema='public' and table_type='BASE TABLE'");
foreach ($tablesResults AS $row) $tables[] = $row[0];
return(in_array($tableName, $tables));
}
function sqlite_table_exists($database, $tableName) {
global $tc_db;
$tables = array();
$tablesResults = $tc_db->GetAll("SELECT name FROM sqlite_master WHERE type = 'table'" );
foreach ($tablesResults AS $row) $tables[] = $row[0];
return(in_array($tableName, $tables));
}
function CreateSalt() {
$chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
$salt = '';
for ($i = 0; $i < 3; ++$i) {
$salt .= $chars[mt_rand(0, strlen($chars) - 1)];
}
return $salt;
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Kusaba X Installation</title>
<style type="text/css">
body { font-family: sans-serif; font-size: 75%; background: #ffe }
a { text-decoration: none; color: #550 }
h1,h2 { margin: 0px; background: #fca }
h1 { font-size: 150% }
h2 { font-size: 100%; margin-top: 1em }
.hl { font-style: italic }
.plus { float: right; font-size: 8px; font-weight: normal; padding: 1px 4px 2px 4px; margin: 0px 0px; background: #eb9; color: #000; border: 1px solid #da8; cursor: hand; cursor: pointer }
.plus:hover { background: #da8; border: 1px solid #c97 }
ul { list-style: none; padding-left: 0px; margin: 0px }
li { margin: 0px }
li:hover { background: #fec; }
li a { display: block; width: 100%; }
</style>
<link rel="shortcut icon" href="/favicon.ico" />
</head>
<body>
<div style="text-align:center;"><h1>Kusaba X Installation</h1></div>
<?php
echo '<h2>Checking configuration file...</h2>';
if (file_exists('config.php')) {
require 'config.php';
require KU_ROOTDIR . 'inc/functions.php';
if (KU_RANDOMSEED!="ENTER RANDOM LETTERS/NUMBERS HERE"&&KU_RANDOMSEED!="") {
echo 'Configuration appears correct.';
echo '<h2>Checking database...</h2>';
$reqiredtables = array("ads","announcements","banlist","bannedhashes","blotter","boards","board_filetypes","embeds","events","filetypes","front","loginattempts","modlog","module_settings","posts","reports","sections","staff","watchedthreads","wordfilter");
foreach ($reqiredtables as $tablename) {
if (KU_DBTYPE == 'mysql' || KU_DBTYPE == 'mysqli') {
if (!mysql_table_exists(KU_DBDATABASE,KU_DBPREFIX.$tablename)) {
die("Couldn't find the table <strong>".KU_DBPREFIX.$tablename."</strong> in the database. Please <a href=\"install-mysql.php\"><strong><u>insert the mySQL dump</u></strong></a>.");
}
}
if (KU_DBTYPE == 'postgres7' || KU_DBTYPE == 'postgres8' || KU_DBTYPE == 'postgres') {
if (!pgsql_table_exists(KU_DBDATABASE,KU_DBPREFIX.$tablename)) {
die("Couldn't find the table <strong>".KU_DBPREFIX.$tablename."</strong> in the database. Please <a href=\"install-pgsql.php\"><strong><u>insert the PostgreSQL dump</u></strong></a>.");
}
}
if (KU_DBTYPE == 'sqlite') {
if (!sqlite_table_exists(KU_DBDATABASE,KU_DBPREFIX.$tablename)) {
die("Couldn't find the table <strong>".KU_DBPREFIX.$tablename."</strong> in the database. Please <a href=\"install-sqlite.php\"><strong><u>insert the SQLite dump</u></strong></a>.");
}
}
}
echo 'Database appears correct.';
echo '<h2>Inserting default administrator account...</h2>';
$result_exists = $tc_db->GetOne("SELECT COUNT(*) FROM `".KU_DBPREFIX."staff` WHERE `username` = 'admin'");
if ($result_exists==0) {
$salt = CreateSalt();
$result = $tc_db->Execute("INSERT INTO `".KU_DBPREFIX."staff` ( `username` , `salt`, `password` , `type` , `addedon` ) VALUES ( 'admin' , '".$salt."', '".md5("admin".$salt)."' , '1' , '".time()."' )");
echo 'Account inserted.';
$result = true;
} else {
echo 'There is already an administrator account inserted.';
$result = true;
}
if ($result) {
require_once KU_ROOTDIR . 'inc/classes/menu.class.php';
$menu_class = new Menu();
$menu_class->Generate();
echo '<h2>Done!</h2>Installation has finished! The default administrator account is <strong>admin</strong> with the password of <strong>admin</strong>.<br /><br />Delete this and the install-mysql.php file from the server, then <a href="manage.php">add some boards</a>!';
echo '<br /><br /><br /><h1><font color="red">DELETE THIS AND install-mysql.php RIGHT NOW!</font></h1>';
} else {
echo 'Error inserting SQL. Please add <strong>$tc_db->debug = true;</strong> just before ?&gt; in config.php to turn on debugging, and check the error message.';
}
} else {
echo 'Please enter a random string into the <strong>KU_RANDOMSEED</strong> value.';
}
} else {
echo 'Unable to locate config.php';
}
?>
</body>
</html>
+371
View File
@@ -0,0 +1,371 @@
-- --------------------------------------------------------
--
-- Table structure for table `ads`
--
CREATE TABLE `PREFIX_ads` (
`id` smallint(1) unsigned NOT NULL,
`position` varchar(3) NOT NULL,
`disp` tinyint(1) NOT NULL,
`boards` varchar(255) NOT NULL,
`code` text NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-- --------------------------------------------------------
--
-- Table structure for table `announcements`
--
CREATE TABLE `PREFIX_announcements` (
`id` int(10) unsigned NOT NULL auto_increment,
`parentid` int(10) unsigned NOT NULL default '0',
`subject` varchar(255) NOT NULL,
`postedat` int(20) NOT NULL,
`postedby` varchar(75) NOT NULL,
`message` text NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-- --------------------------------------------------------
--
-- Table structure for table `banlist`
--
CREATE TABLE `PREFIX_banlist` (
`id` mediumint(8) unsigned NOT NULL auto_increment,
`type` tinyint(1) NOT NULL default '0',
`expired` tinyint(1) NOT NULL default '0',
`allowread` tinyint(1) NOT NULL default '1',
`ip` varchar(50) NOT NULL,
`ipmd5` char(32) NOT NULL,
`globalban` tinyint(1) NOT NULL default '0',
`boards` varchar(255) NOT NULL,
`by` varchar(75) NOT NULL,
`at` int(20) NOT NULL,
`until` int(20) NOT NULL,
`reason` text NOT NULL,
`staffnote` text NOT NULL,
`appeal` text NOT NULL default '',
`appealat` int(20) NOT NULL default '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-- --------------------------------------------------------
--
-- Table structure for table `bannedhashes`
--
CREATE TABLE `PREFIX_bannedhashes` (
`id` int(10) NOT NULL auto_increment,
`md5` varchar(255) NOT NULL,
`bantime` int(10) NOT NULL default '0',
`description` text NOT NULL,
UNIQUE KEY `id` (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-- --------------------------------------------------------
--
-- Table structure for table `blotter`
--
CREATE TABLE `PREFIX_blotter` (
`id` smallint(5) unsigned NOT NULL auto_increment,
`important` tinyint(1) NOT NULL,
`at` int(20) NOT NULL,
`message` text NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-- --------------------------------------------------------
--
-- Table structure for table `boards`
--
CREATE TABLE `PREFIX_boards` (
`id` smallint(5) unsigned NOT NULL auto_increment,
`order` tinyint(5) NOT NULL default '0',
`name` varchar(75) collate utf8_unicode_ci NOT NULL default '',
`type` tinyint(1) NOT NULL default '0',
`start` int(10) UNSIGNED NOT NULL ,
`uploadtype` tinyint(1) NOT NULL default '0',
`desc` varchar(75) collate utf8_unicode_ci NOT NULL default '',
`image` varchar(255) collate utf8_unicode_ci NOT NULL,
`section` tinyint(2) NOT NULL default '0',
`maximagesize` int(20) NOT NULL default '1024000',
`maxpages` int(20) NOT NULL default '11',
`maxage` int(20) NOT NULL default '0',
`markpage` tinyint(4) NOT NULL default '9',
`maxreplies` int(5) NOT NULL default '200',
`messagelength` int(10) NOT NULL default '8192',
`createdon` int(20) NOT NULL,
`locked` tinyint(1) NOT NULL default '0',
`includeheader` text collate utf8_unicode_ci NOT NULL default '',
`redirecttothread` tinyint(1) NOT NULL default '0',
`anonymous` varchar(255) collate utf8_unicode_ci NOT NULL default 'Anonymous',
`forcedanon` tinyint(1) NOT NULL default '0',
`embeds_allowed` varchar(255) NOT NULL default '',
`trial` tinyint(1) NOT NULL default '0',
`popular` tinyint(1) NOT NULL default '0',
`defaultstyle` varchar(50) character set latin1 NOT NULL default '',
`locale` varchar(30) character set latin1 NOT NULL default '',
`showid` tinyint(1) NOT NULL default '0',
`compactlist` tinyint(1) NOT NULL default '0',
`enablereporting` tinyint(1) NOT NULL default '1',
`enablecaptcha` tinyint(1) NOT NULL default '0',
`enablenofile` tinyint(1) NOT NULL default '0',
`enablearchiving` tinyint(1) NOT NULL default '0',
`enablecatalog` tinyint(1) NOT NULL default '1',
`loadbalanceurl` varchar(255) character set latin1 NOT NULL default '',
`loadbalancepassword` varchar(255) character set latin1 NOT NULL default '',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
-- --------------------------------------------------------
--
-- Table structure for table `board_filetypes`
--
CREATE TABLE `PREFIX_board_filetypes` (
`boardid` tinyint(5) NOT NULL default '0',
`typeid` mediumint(5) NOT NULL default '0'
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-- --------------------------------------------------------
--
-- Table structure for table `embeds`
--
CREATE TABLE `PREFIX_embeds` (
`id` tinyint(5) unsigned NOT NULL auto_increment,
`filetype` varchar(3) NOT NULL,
`name` varchar(255) NOT NULL,
`videourl` varchar(510) NOT NULL,
`width` tinyint(3) unsigned NOT NULL,
`height` tinyint(3) unsigned NOT NULL,
`code` text NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-- --------------------------------------------------------
--
-- Table structure for table `events`
--
CREATE TABLE `PREFIX_events` (
`name` varchar(255) NOT NULL,
`at` int(20) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-- --------------------------------------------------------
--
-- Table structure for table `filetypes`
--
CREATE TABLE `PREFIX_filetypes` (
`id` smallint(5) unsigned NOT NULL auto_increment,
`filetype` varchar(255) NOT NULL,
`mime` varchar(255) NOT NULL default '',
`image` varchar(255) NOT NULL default '',
`image_w` int(7) NOT NULL default '0',
`image_h` int(7) NOT NULL default '0',
`force_thumb` int(1) NOT NULL default '1',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-- --------------------------------------------------------
--
-- Table structure for table `front`
--
CREATE TABLE `PREFIX_front` (
`id` smallint(5) unsigned NOT NULL auto_increment,
`page` smallint(1) unsigned NOT NULL default '0',
`order` smallint(5) unsigned NOT NULL default '0',
`subject` varchar(255) NOT NULL,
`message` text NOT NULL,
`timestamp` int(20) NOT NULL default '0',
`poster` varchar(75) NOT NULL,
`email` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-- --------------------------------------------------------
--
-- Table structure for table `loginattempts`
--
CREATE TABLE `PREFIX_loginattempts` (
`username` varchar(255) NOT NULL,
`ip` varchar(20) NOT NULL,
`timestamp` int(20) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-- --------------------------------------------------------
--
-- Table structure for table `modlog`
--
CREATE TABLE `PREFIX_modlog` (
`entry` text NOT NULL,
`user` varchar(255) NOT NULL,
`category` tinyint(2) NOT NULL default '0',
`timestamp` int(20) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-- --------------------------------------------------------
--
-- Table structure for table `module_settings`
--
CREATE TABLE `PREFIX_module_settings` (
`module` varchar(255) NOT NULL,
`key` varchar(255) NOT NULL,
`value` text character set utf8 collate utf8_unicode_ci NOT NULL,
`type` varchar(255) NOT NULL default 'string'
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-- --------------------------------------------------------
--
-- Table structure for table `posts`
--
CREATE TABLE `PREFIX_posts` (
`id` int(10) unsigned NOT NULL auto_increment,
`boardid` smallint(5) unsigned NOT NULL,
`parentid` int(10) unsigned NOT NULL default '0',
`name` varchar(255) NOT NULL,
`tripcode` varchar(30) NOT NULL,
`email` varchar(255) NOT NULL,
`subject` varchar(255) NOT NULL,
`message` text NOT NULL,
`password` varchar(255) NOT NULL,
`file` varchar(50) NOT NULL,
`file_md5` char(32) NOT NULL,
`file_type` varchar(20) NOT NULL,
`file_original` varchar(255) NOT NULL,
`file_size` int(20) NOT NULL default '0',
`file_size_formatted` varchar(75) NOT NULL,
`image_w` smallint(5) NOT NULL default '0',
`image_h` smallint(5) NOT NULL default '0',
`thumb_w` smallint(5) unsigned NOT NULL default '0',
`thumb_h` smallint(5) unsigned NOT NULL default '0',
`ip` varchar(75) NOT NULL,
`ipmd5` char(32) NOT NULL,
`tag` varchar(5) NOT NULL,
`timestamp` int(20) unsigned NOT NULL,
`stickied` tinyint(1) NOT NULL default '0',
`locked` tinyint(1) NOT NULL default '0',
`posterauthority` tinyint(1) NOT NULL default '0',
`reviewed` tinyint(1) unsigned NOT NULL default '0',
`deleted_timestamp` int(20) NOT NULL default '0',
`IS_DELETED` tinyint(1) NOT NULL default '0',
`bumped` int(20) unsigned NOT NULL default '0',
PRIMARY KEY (`boardid`,`id`),
KEY `parentid` (`parentid`),
KEY `bumped` (`bumped`),
KEY `file_md5` (`file_md5`),
KEY `stickied` (`stickied`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
-- --------------------------------------------------------
--
-- Table structure for table `reports`
--
CREATE TABLE `PREFIX_reports` (
`id` smallint(5) unsigned NOT NULL auto_increment,
`cleared` tinyint(1) NOT NULL default '0',
`board` varchar(255) NOT NULL,
`postid` int(20) NOT NULL,
`when` int(20) NOT NULL,
`ip` varchar(75) NOT NULL,
`reason` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-- --------------------------------------------------------
--
-- Table structure for table `sections`
--
CREATE TABLE `PREFIX_sections` (
`id` smallint(5) unsigned NOT NULL auto_increment,
`order` tinyint(3) NOT NULL default '0',
`hidden` tinyint(1) NOT NULL default '0',
`name` varchar(255) NOT NULL default '0',
`abbreviation` varchar(10) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-- --------------------------------------------------------
--
-- Table structure for table `staff`
--
CREATE TABLE `PREFIX_staff` (
`id` smallint(5) unsigned NOT NULL auto_increment,
`username` varchar(255) NOT NULL,
`password` varchar(255) NOT NULL,
`salt` varchar(3) NOT NULL,
`type` tinyint(1) NOT NULL default '0',
`boards` text,
`addedon` int(20) NOT NULL,
`lastactive` int(20) NOT NULL default '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-- --------------------------------------------------------
--
-- Table structure for table `watchedthreads`
--
CREATE TABLE `PREFIX_watchedthreads` (
`id` mediumint(8) unsigned NOT NULL auto_increment,
`threadid` int(20) NOT NULL,
`board` varchar(255) NOT NULL,
`ip` char(15) NOT NULL,
`lastsawreplyid` int(20) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-- --------------------------------------------------------
--
-- Table structure for table `wordfilter`
--
CREATE TABLE `PREFIX_wordfilter` (
`id` smallint(5) unsigned NOT NULL auto_increment,
`word` varchar(75) NOT NULL,
`replacedby` varchar(75) NOT NULL,
`boards` text NOT NULL,
`time` int(20) NOT NULL,
`regex` tinyint(1) NOT NULL default '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
INSERT INTO `PREFIX_ads` (`id`, `position`, `disp`, `boards`, `code`) VALUES (1, 'top', 0, '', 'Right Frame Top'), (2, 'bot', 0, '', 'Right Frame Bottom');
INSERT INTO `PREFIX_filetypes` (`filetype`, `force_thumb`) VALUES ('jpg', 0), ('gif', 0), ('png', 0) ;
INSERT INTO `PREFIX_events` (`name`, `at`) VALUES ('pingback', 0), ('sitemap', 0);
INSERT INTO `PREFIX_embeds` (`filetype`, `name`, `videourl`, `width`, `height`, `code`) VALUES ('you', 'Youtube', 'http://www.youtube.com/watch?v=', 200, 164, '<object type="application/x-shockwave-flash" width="SET_WIDTH" height="SET_HEIGHT" data="http://www.youtube.com/v/EMBED_ID"> <param name="movie" value="http://www.youtube.com/v/EMBED_ID" /> </object>'), ('goo', 'Google', 'http://video.google.com/videoplay?docid=', 200, 164, '<embed width="SET_WIDTH" height="SET_HEIGHT" id="VideoPlayback" type="application/x-shockwave-flash" src="http://video.google.com/googleplayer.swf?docId=EMBED_ID"></embed>') ;
+386
View File
@@ -0,0 +1,386 @@
-- --------------------------------------------------------
--
-- Table structure for table ads
--
CREATE TABLE PREFIX_ads (
id smallint NOT NULL,
position varchar(3) NOT NULL,
disp smallint NOT NULL,
boards varchar(255) NOT NULL,
code text NOT NULL
);
-- --------------------------------------------------------
--
-- Table structure for table announcements
--
CREATE TABLE PREFIX_announcements (
id serial,
parentid int NOT NULL default '0',
subject varchar(255) NOT NULL,
postedat int NOT NULL,
postedby varchar(75) NOT NULL,
message text NOT NULL,
PRIMARY KEY (id)
);
-- --------------------------------------------------------
--
-- Table structure for table banlist
--
CREATE TABLE PREFIX_banlist (
id serial,
type smallint NOT NULL default '0',
expired smallint NOT NULL default '0',
allowread smallint NOT NULL default '1',
ip varchar(50) NOT NULL,
ipmd5 char(32) NOT NULL,
globalban smallint NOT NULL default '0',
boards varchar(255) NOT NULL,
by varchar(75) NOT NULL,
at int NOT NULL,
until int NOT NULL,
reason text NOT NULL,
staffnote text NOT NULL,
appeal text NOT NULL default '',
appealat int NOT NULL default'0',
PRIMARY KEY (id)
);
-- --------------------------------------------------------
--
-- Table structure for table bannedhashes
--
CREATE TABLE PREFIX_bannedhashes (
id serial,
md5 varchar(255) NOT NULL,
bantime int,
description text NOT NULL,
UNIQUE (id)
);
-- --------------------------------------------------------
--
-- Table structure for table blotter
--
CREATE TABLE PREFIX_blotter (
id serial,
important smallint NOT NULL,
at int NOT NULL,
message text NOT NULL,
PRIMARY KEY (id)
);
-- --------------------------------------------------------
--
-- Table structure for table boards
--
CREATE TABLE PREFIX_boards (
id serial,
`order` smallint,
name varchar(75) NOT NULL default '',
type smallint NOT NULL default '0',
start int NOT NULL,
uploadtype smallint,
`desc` varchar(75) NOT NULL default '',
image varchar(255) NOT NULL,
section smallint NOT NULL default '0',
maximagesize int NOT NULL default '1024000',
maxpages int NOT NULL default '11',
maxage int NOT NULL default '0',
markpage smallint NOT NULL default '9',
maxreplies int NOT NULL default '200',
messagelength int NOT NULL default '8192',
createdon int NOT NULL,
locked smallint NOT NULL default '0',
includeheader text NOT NULL default '',
redirecttothread smallint NOT NULL default '0',
anonymous varchar(255) NOT NULL default 'Anonymous',
forcedanon smallint NOT NULL default '0',
embeds_allowed varchar(255) NOT NULL default '',
trial smallint NOT NULL default '0',
popular smallint NOT NULL default '0',
defaultstyle varchar(50) NOT NULL default '',
locale varchar(30) NOT NULL default '',
showid smallint NOT NULL default '0',
compactlist smallint NOT NULL default '0',
enablereporting smallint NOT NULL default '1',
enablecaptcha smallint NOT NULL default '0',
enablenofile smallint NOT NULL default '0',
enablearchiving smallint NOT NULL default '0',
enablecatalog smallint NOT NULL default '1',
loadbalanceurl varchar(255) NOT NULL default '',
loadbalancepassword varchar(255) NOT NULL default '',
PRIMARY KEY (id)
);
--
-- Table structure for table board_filetypes
--
CREATE TABLE PREFIX_board_filetypes (
boardid smallint NOT NULL default '0',
typeid int NOT NULL default '0'
);
-- --------------------------------------------------------
--
-- Table structure for table embeds
--
CREATE TABLE PREFIX_embeds (
id serial,
filetype varchar(3) NOT NULL,
name varchar(255) NOT NULL,
videourl varchar(510) NOT NULL,
width smallint NOT NULL,
height smallint NOT NULL,
code text NOT NULL,
PRIMARY KEY (id)
);
-- --------------------------------------------------------
--
-- Table structure for table events
--
CREATE TABLE PREFIX_events (
name varchar(255) NOT NULL,
at int NOT NULL
);
-- --------------------------------------------------------
--
-- Table structure for table filetypes
--
CREATE TABLE PREFIX_filetypes (
id serial,
filetype varchar(255) NOT NULL,
mime varchar(255) NOT NULL default '',
image varchar(255) NOT NULL default '',
image_w int NOT NULL default '0',
image_h int NOT NULL default '0',
force_thumb int NOT NULL default '1',
PRIMARY KEY (id)
);
-- --------------------------------------------------------
--
-- Table structure for table front
--
CREATE TABLE PREFIX_front (
id serial,
page smallint NOT NULL default '0',
`order` smallint NOT NULL default '0',
subject varchar(255) NOT NULL,
message text NOT NULL,
timestamp int NOT NULL default '0',
poster varchar(75) NOT NULL,
email varchar(255) NOT NULL,
PRIMARY KEY (id)
);
-- --------------------------------------------------------
--
-- Table structure for table loginattempts
--
CREATE TABLE PREFIX_loginattempts (
username varchar(255) NOT NULL,
ip varchar(20) NOT NULL,
timestamp int NOT NULL
);
-- --------------------------------------------------------
--
-- Table structure for table modlog
--
CREATE TABLE PREFIX_modlog (
entry text NOT NULL,
`user` varchar(255) NOT NULL,
category smallint NOT NULL default '0',
timestamp int NOT NULL
);
-- --------------------------------------------------------
--
-- Table structure for table module_settings
--
CREATE TABLE PREFIX_module_settings (
module varchar(255) NOT NULL,
key varchar(255) NOT NULL,
value text NOT NULL,
type varchar(255) NOT NULL default 'string'
);
-- --------------------------------------------------------
--
-- Table structure for table posts
--
CREATE TABLE PREFIX_posts (
id int NOT NULL,
boardid smallint NOT NULL,
parentid int NOT NULL default '0',
name varchar(255) NOT NULL,
tripcode varchar(30) NOT NULL,
email varchar(255) NOT NULL,
subject varchar(255) NOT NULL,
message text NOT NULL,
password varchar(255) NOT NULL,
file varchar(50) NOT NULL,
file_md5 char(32) NOT NULL,
file_type varchar(20) NOT NULL,
file_original varchar(255) NOT NULL,
file_size int NOT NULL default '0',
file_size_formatted varchar(75) NOT NULL,
image_w smallint NOT NULL default '0',
image_h smallint NOT NULL default '0',
thumb_w smallint NOT NULL default '0',
thumb_h smallint NOT NULL default '0',
ip varchar(75) NOT NULL,
ipmd5 char(32) NOT NULL,
tag varchar(5) NOT NULL,
timestamp int NOT NULL,
stickied smallint NOT NULL default '0',
locked smallint NOT NULL default '0',
posterauthority smallint NOT NULL default '0',
reviewed smallint NOT NULL default '0',
deleted_timestamp int NOT NULL default '0',
IS_DELETED smallint NOT NULL default '0',
bumped int NOT NULL default '0',
PRIMARY KEY (boardid, id)
);
CREATE OR REPLACE FUNCTION posts_update()
RETURNS "trigger" AS
'
BEGIN
PERFORM id FROM PREFIX_boards WHERE id = NEW.boardid FOR UPDATE:semicolon:
SELECT COALESCE(MAX(id),0) + 1 INTO NEW.id FROM PREFIX_posts WHERE boardid = NEW.boardid:semicolon: RETURN NEW:semicolon:
END
'
LANGUAGE 'plpgsql';
CREATE TRIGGER posts_trigger BEFORE INSERT on PREFIX_posts FOR EACH ROW EXECUTE PROCEDURE posts_update();
CREATE INDEX parentid ON PREFIX_posts (parentid);
CREATE INDEX bumped ON PREFIX_posts (bumped);
CREATE INDEX file_md5 On PREFIX_posts (file_md5);
CREATE INDEX stickied ON PREFIX_posts (stickied);
-- --------------------------------------------------------
--
-- Table structure for table reports
--
CREATE TABLE PREFIX_reports (
id serial,
cleared smallint NOT NULL default '0',
board varchar(255) NOT NULL,
postid int NOT NULL,
`when` int NOT NULL,
ip varchar(75) NOT NULL,
reason varchar(255) NOT NULL,
PRIMARY KEY (id)
);
-- --------------------------------------------------------
--
-- Table structure for table sections
--
CREATE TABLE PREFIX_sections (
id serial,
`order` smallint,
hidden smallint NOT NULL default '0',
name varchar(255) NOT NULL NOT NULL default '0',
abbreviation varchar(10) NOT NULL,
PRIMARY KEY (id)
);
-- --------------------------------------------------------
--
-- Table structure for table staff
--
CREATE TABLE PREFIX_staff (
id serial,
username varchar(255) NOT NULL,
password varchar(255) NOT NULL,
salt varchar(3) NOT NULL,
type smallint NOT NULL default '0',
boards text,
addedon int NOT NULL,
lastactive int NOT NULL default '0',
PRIMARY KEY (id)
);
-- --------------------------------------------------------
--
-- Table structure for table watchedthreads
--
CREATE TABLE PREFIX_watchedthreads (
id serial,
threadid int NOT NULL,
board varchar(255) NOT NULL,
ip char(15) NOT NULL,
lastsawreplyid int NOT NULL,
PRIMARY KEY (id)
);
-- --------------------------------------------------------
--
-- Table structure for table wordfilter
--
CREATE TABLE PREFIX_wordfilter (
id serial,
word varchar(75) NOT NULL,
replacedby varchar(75) NOT NULL,
boards text NOT NULL,
time int NOT NULL,
regex smallint NOT NULL default '0',
PRIMARY KEY (id)
);
CREATE OR REPLACE FUNCTION "if"(boolean, integer, integer) RETURNS integer AS
'SELECT CASE WHEN $1 THEN $2 ELSE $3 END:semicolon:'
LANGUAGE 'sql';
INSERT INTO `PREFIX_ads` (`id`, `position`, `disp`, `boards`, `code`) VALUES (1, 'top', 0, '', 'Right Frame Top');
INSERT INTO `PREFIX_ads` (`id`, `position`, `disp`, `boards`, `code`) VALUES (2, 'bot', 0, '', 'Right Frame Bottom');
INSERT INTO `PREFIX_filetypes` (`filetype`, `force_thumb`) VALUES ('jpg', 0);
INSERT INTO `PREFIX_filetypes` (`filetype`, `force_thumb`) VALUES ('gif', 0);
INSERT INTO `PREFIX_filetypes` (`filetype`, `force_thumb`) VALUES ('png', 0) ;
INSERT INTO `PREFIX_events` (`name`, `at`) VALUES ('pingback', 0);
INSERT INTO `PREFIX_events` (`name`, `at`) VALUES ('sitemap', 0);
INSERT INTO `PREFIX_embeds` (`filetype`, `name`, `videourl`, `width`, `height`, `code`) VALUES ('you', 'Youtube', 'http://www.youtube.com/watch?v=', 200, 164, '<object type="application/x-shockwave-flash" width="SET_WIDTH" height="SET_HEIGHT" data="http://www.youtube.com/v/EMBED_ID"> <param name="movie" value="http://www.youtube.com/v/EMBED_ID" /> </object>');
INSERT INTO `PREFIX_embeds` (`filetype`, `name`, `videourl`, `width`, `height`, `code`) VALUES ('goo', 'Google', 'http://video.google.com/videoplay?docid=', 200, 164, '<embed width="SET_WIDTH" height="SET_HEIGHT" id="VideoPlayback" type="application/x-shockwave-flash" src="http://video.google.com/googleplayer.swf?docId=EMBED_ID"></embed>');
+376
View File
@@ -0,0 +1,376 @@
-- --------------------------------------------------------
--
-- Table structure for table ads
--
CREATE TABLE PREFIX_ads (
id smallint NOT NULL,
position varchar(3) NOT NULL,
disp smallint NOT NULL,
boards varchar(255) NOT NULL,
code text NOT NULL
);
-- --------------------------------------------------------
--
-- Table structure for table announcements
--
CREATE TABLE PREFIX_announcements (
id INTEGER PRIMARY KEY,
parentid int NOT NULL default '0',
subject varchar(255) NOT NULL,
postedat int NOT NULL,
postedby varchar(75) NOT NULL,
message text NOT NULL
);
-- --------------------------------------------------------
--
-- Table structure for table banlist
--
CREATE TABLE PREFIX_banlist (
id INTEGER PRIMARY KEY,
type smallint NOT NULL default '0',
expired smallint NOT NULL default '0',
allowread smallint NOT NULL default '1',
ip varchar(50) NOT NULL,
ipmd5 char(32) NOT NULL,
globalban smallint NOT NULL default '0',
boards varchar(255) NOT NULL,
`by` varchar(75) NOT NULL,
at int NOT NULL,
until int NOT NULL,
reason text NOT NULL,
staffnote text NOT NULL,
appeal text NOT NULL default '',
appealat int NOT NULL default '0'
);
-- --------------------------------------------------------
--
-- Table structure for table bannedhashes
--
CREATE TABLE PREFIX_bannedhashes (
id INTEGER PRIMARY KEY,
md5 varchar(255) NOT NULL,
bantime int,
description text NOT NULL,
UNIQUE (id)
);
-- --------------------------------------------------------
--
-- Table structure for table blotter
--
CREATE TABLE PREFIX_blotter (
id INTEGER PRIMARY KEY,
important smallint NOT NULL,
at int NOT NULL,
message text NOT NULL
);
-- --------------------------------------------------------
--
-- Table structure for table boards
--
CREATE TABLE PREFIX_boards (
id INTEGER PRIMARY KEY,
`order` smallint,
name varchar(75) NOT NULL default '',
type smallint NOT NULL default '0',
start int NOT NULL,
uploadtype smallint,
`desc` varchar(75) NOT NULL default '',
image varchar(255) NOT NULL,
section smallint NOT NULL default '0',
maximagesize int NOT NULL default '1024000',
maxpages int NOT NULL default '11',
maxage int NOT NULL default '0',
markpage smallint NOT NULL default '9',
maxreplies int NOT NULL default '200',
messagelength int NOT NULL default '8192',
createdon int NOT NULL,
locked smallint NOT NULL default '0',
includeheader text NOT NULL default '',
redirecttothread smallint NOT NULL default '0',
anonymous varchar(255) NOT NULL default 'Anonymous',
forcedanon smallint NOT NULL default '0',
embeds_allowed varchar(255) NOT NULL default '',
trial smallint NOT NULL default '0',
popular smallint NOT NULL default '0',
defaultstyle varchar(50) NOT NULL default '',
locale varchar(30) NOT NULL default '',
showid smallint NOT NULL default '0',
compactlist smallint NOT NULL default '0',
enablereporting smallint NOT NULL default '1',
enablecaptcha smallint NOT NULL default '0',
enablenofile smallint NOT NULL default '0',
enablearchiving smallint NOT NULL default '0',
enablecatalog smallint NOT NULL default '1',
loadbalanceurl varchar(255) NOT NULL default '',
loadbalancepassword varchar(255) NOT NULL default ''
);
--
-- Table structure for table board_filetypes
--
CREATE TABLE PREFIX_board_filetypes (
boardid smallint NOT NULL default '0',
typeid int NOT NULL default '0'
);
-- --------------------------------------------------------
--
-- Table structure for table embeds
--
CREATE TABLE PREFIX_embeds (
id INTEGER PRIMARY KEY,
filetype varchar(3) NOT NULL,
name varchar(255) NOT NULL,
videourl varchar(510) NOT NULL,
width smallint NOT NULL,
height smallint NOT NULL,
code text NOT NULL
);
-- --------------------------------------------------------
--
-- Table structure for table events
--
CREATE TABLE PREFIX_events (
name varchar(255) NOT NULL,
at int NOT NULL
);
-- --------------------------------------------------------
--
-- Table structure for table filetypes
--
CREATE TABLE PREFIX_filetypes (
id INTEGER PRIMARY KEY,
filetype varchar(255) NOT NULL,
mime varchar(255) NOT NULL default '',
image varchar(255) NOT NULL default '',
image_w int NOT NULL default '0',
image_h int NOT NULL default '0',
force_thumb int NOT NULL default '1'
);
-- --------------------------------------------------------
--
-- Table structure for table front
--
CREATE TABLE PREFIX_front (
id INTEGER PRIMARY KEY,
page smallint NOT NULL default '0',
`order` smallint NOT NULL default '0',
subject varchar(255) NOT NULL,
message text NOT NULL,
timestamp int NOT NULL DEFAULT '0',
poster varchar(75) NOT NULL DEFAULT '',
email varchar(255) NOT NULL DEFAULT ''
);
-- --------------------------------------------------------
--
-- Table structure for table loginattempts
--
CREATE TABLE PREFIX_loginattempts (
username varchar(255) NOT NULL,
ip varchar(20) NOT NULL,
timestamp int NOT NULL
);
-- --------------------------------------------------------
--
-- Table structure for table modlog
--
CREATE TABLE PREFIX_modlog (
entry text NOT NULL,
`user` varchar(255) NOT NULL,
category smallint NOT NULL default '0',
timestamp int NOT NULL
);
-- --------------------------------------------------------
--
-- Table structure for table module_settings
--
CREATE TABLE PREFIX_module_settings (
module varchar(255) NOT NULL,
key varchar(255) NOT NULL,
value text NOT NULL,
type varchar(255) NOT NULL default 'string'
);
-- --------------------------------------------------------
--
-- Table structure for table posts
--
CREATE TABLE PREFIX_posts (
id int default '0' ,
boardid smallint NOT NULL,
parentid int NOT NULL default '0',
name varchar(255) NOT NULL,
tripcode varchar(30) NOT NULL,
email varchar(255) NOT NULL,
subject varchar(255) NOT NULL,
message text NOT NULL,
password varchar(255) NOT NULL,
file varchar(50) NOT NULL,
file_md5 char(32) NOT NULL,
file_type varchar(20) NOT NULL,
file_original varchar(255) NOT NULL,
file_size int NOT NULL default '0',
file_size_formatted varchar(75) NOT NULL,
image_w smallint NOT NULL default '0',
image_h smallint NOT NULL default '0',
thumb_w smallint NOT NULL default '0',
thumb_h smallint NOT NULL default '0',
ip varchar(75) NOT NULL,
ipmd5 char(32) NOT NULL,
tag varchar(5) NOT NULL,
timestamp int NOT NULL,
stickied smallint NOT NULL default '0',
locked smallint NOT NULL default '0',
posterauthority smallint NOT NULL default '0',
reviewed smallint NOT NULL default '0',
deleted_timestamp int NOT NULL default '0',
IS_DELETED smallint NOT NULL default '0',
bumped int NOT NULL default '0',
PRIMARY KEY (boardid, id)
);
CREATE TRIGGER posts_trigger AFTER INSERT on PREFIX_posts
BEGIN
UPDATE PREFIX_posts SET id = (SELECT COALESCE(MAX(id),0) + 1 FROM PREFIX_posts WHERE boardid = NEW.boardid) WHERE rowid = last_insert_rowid():semicolon:
END;
CREATE INDEX parentid ON PREFIX_posts (parentid);
CREATE INDEX bumped ON PREFIX_posts (bumped);
CREATE INDEX file_md5 On PREFIX_posts (file_md5);
CREATE INDEX stickied ON PREFIX_posts (stickied);
-- --------------------------------------------------------
--
-- Table structure for table reports
--
CREATE TABLE PREFIX_reports (
id INTEGER PRIMARY KEY,
cleared smallint NOT NULL default '0',
board varchar(255) NOT NULL,
postid int NOT NULL,
`when` int NOT NULL,
ip varchar(75) NOT NULL,
reason varchar(255) NOT NULL
);
-- --------------------------------------------------------
--
-- Table structure for table sections
--
CREATE TABLE PREFIX_sections (
id INTEGER PRIMARY KEY,
`order` smallint,
hidden smallint NOT NULL default '0',
name varchar(255) NOT NULL NOT NULL default '0',
abbreviation varchar(10) NOT NULL
);
-- --------------------------------------------------------
--
-- Table structure for table staff
--
CREATE TABLE PREFIX_staff (
id INTEGER PRIMARY KEY,
username varchar(255) NOT NULL,
password varchar(255) NOT NULL,
salt varchar(3) NOT NULL,
type smallint NOT NULL default '0',
boards text,
addedon int NOT NULL,
lastactive int NOT NULL default '0'
);
-- --------------------------------------------------------
--
-- Table structure for table watchedthreads
--
CREATE TABLE PREFIX_watchedthreads (
id INTEGER PRIMARY KEY,
threadid int NOT NULL,
board varchar(255) NOT NULL,
ip char(15) NOT NULL,
lastsawreplyid int NOT NULL
);
-- --------------------------------------------------------
--
-- Table structure for table wordfilter
--
CREATE TABLE PREFIX_wordfilter (
id INTEGER PRIMARY KEY,
word varchar(75) NOT NULL,
replacedby varchar(75) NOT NULL,
boards text NOT NULL,
time int NOT NULL,
regex smallint NOT NULL default '0'
);
INSERT INTO `PREFIX_ads` (`id`, `position`, `disp`, `boards`, `code`) VALUES (1, 'top', 0, '', 'Right Frame Top');
INSERT INTO `PREFIX_ads` (`id`, `position`, `disp`, `boards`, `code`) VALUES (2, 'bot', 0, '', 'Right Frame Bottom');
INSERT INTO `PREFIX_filetypes` (`filetype`, `force_thumb`) VALUES ('jpg', 0);
INSERT INTO `PREFIX_filetypes` (`filetype`, `force_thumb`) VALUES ('gif', 0);
INSERT INTO `PREFIX_filetypes` (`filetype`, `force_thumb`) VALUES ('png', 0) ;
INSERT INTO `PREFIX_events` (`name`, `at`) VALUES ('pingback', 0);
INSERT INTO `PREFIX_events` (`name`, `at`) VALUES ('sitemap', 0);
INSERT INTO `PREFIX_embeds` (`filetype`, `name`, `videourl`, `width`, `height`, `code`) VALUES ('you', 'Youtube', 'http://www.youtube.com/watch?v=', 200, 164, '<object type="application/x-shockwave-flash" width="SET_WIDTH" height="SET_HEIGHT" data="http://www.youtube.com/v/EMBED_ID"> <param name="movie" value="http://www.youtube.com/v/EMBED_ID" /> </object>');
INSERT INTO `PREFIX_embeds` (`filetype`, `name`, `videourl`, `width`, `height`, `code`) VALUES ('goo', 'Google', 'http://video.google.com/videoplay?docid=', 200, 164, '<embed width="SET_WIDTH" height="SET_HEIGHT" id="VideoPlayback" type="application/x-shockwave-flash" src="http://video.google.com/googleplayer.swf?docId=EMBED_ID"></embed>');
+50
View File
@@ -0,0 +1,50 @@
CREATE TABLE IF NOT EXISTS `PREFIX_front` (
`id` smallint(5) unsigned NOT NULL auto_increment,
`page` smallint(1) unsigned NOT NULL default '0',
`order` smallint(5) unsigned NOT NULL default '0',
`subject` varchar(255) NOT NULL,
`message` text NOT NULL,
`timestamp` int(20) NOT NULL,
`poster` varchar(75) NOT NULL,
`email` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `PREFIX_posts` (
`id` int(10) unsigned NOT NULL auto_increment,
`boardid` smallint(5) unsigned NOT NULL,
`parentid` int(10) unsigned NOT NULL default '0',
`name` varchar(255) NOT NULL,
`tripcode` varchar(30) NOT NULL,
`email` varchar(255) NOT NULL,
`subject` varchar(255) NOT NULL,
`message` text NOT NULL,
`password` varchar(255) NOT NULL,
`file` varchar(50) NOT NULL,
`file_md5` char(32) NOT NULL,
`file_type` varchar(20) NOT NULL,
`file_original` varchar(255) NOT NULL,
`file_size` int(20) NOT NULL default '0',
`file_size_formatted` varchar(75) NOT NULL,
`image_w` smallint(5) NOT NULL default '0',
`image_h` smallint(5) NOT NULL default '0',
`thumb_w` smallint(5) unsigned NOT NULL default '0',
`thumb_h` smallint(5) unsigned NOT NULL default '0',
`ip` varchar(75) NOT NULL,
`ipmd5` char(32) NOT NULL,
`tag` varchar(5) NOT NULL,
`timestamp_formatted` varchar(50) NOT NULL,
`timestamp` int(20) unsigned NOT NULL,
`stickied` tinyint(1) NOT NULL default '0',
`locked` tinyint(1) NOT NULL default '0',
`posterauthority` tinyint(1) NOT NULL default '0',
`reviewed` tinyint(1) unsigned NOT NULL default '0',
`deleted_timestamp` int(20) NOT NULL default '0',
`IS_DELETED` tinyint(1) NOT NULL default '0',
`bumped` int(20) unsigned NOT NULL default '0',
PRIMARY KEY (`boardid`,`id`),
KEY `parentid` (`parentid`),
KEY `bumped` (`bumped`),
KEY `file_md5` (`file_md5`),
KEY `stickied` (`stickied`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
+192
View File
@@ -0,0 +1,192 @@
<?php
/* Config */
define('KU_FULLDIR', 'change this to the same value as your KU_ROOTDIR');
define('KU_PASSWORD', 'changeme');
define('KU_THUMBWIDTH', 200);
define('KU_THUMBHEIGHT', 200);
define('KU_REPLYTHUMBWIDTH', 125);
define('KU_REPLYTHUMBHEIGHT', 125);
define('KU_CATTHUMBWIDTH', 50);
define('KU_CATTHUMBHEIGHT', 50);
if (KU_FULLDIR == 'change this to the same value as your KU_ROOTDIR' || KU_FULLDIR == '') die('You must set KU_FULLDIR!');
if (KU_PASSWORD == 'changeme' || KU_FULLDIR == '') die('You must set KU_PASSWORD!');
if ($_POST['password'] != KU_PASSWORD) die('bad password');
if (!isset($_POST['type'])) die('failure');
if ($_POST['type'] == 'thumbnail' || $_POST['type'] == 'direct') {
if (isset($_POST['file']) && isset($_POST['targetname'])) {
$target_file = KU_FULLDIR . $_POST['targetname'];
if (is_file($target_file)) die('file already exists');
if (!$handle = fopen($target_file, 'w+')) {
die('unable to copy');
}
if (fwrite($handle, base64_decode($_POST['file'])) === false) {
die('unable to copy');
}
fclose($handle);
if ($_POST['type'] == 'thumbnail') {
if ($_POST['targetthumb'] == '' || $_POST['targetthumb_c'] == '') {
@unlink($_POST['targetname']);
die('failure');
}
$target_thumb = KU_FULLDIR . $_POST['targetthumb'];
$target_thumb_catalog = KU_FULLDIR . $_POST['targetthumb_c'];
$imageDim = getimagesize($target_file);
$imgw = $imageDim[0];
$imgh = $imageDim[1];
if (($_POST['isreply'] == '0' && ($imgw > KU_THUMBWIDTH || $imgh > KU_THUMBHEIGHT)) || ($_POST['isreply'] == '1' && ($imgw > KU_REPLYTHUMBWIDTH || $imgh > KU_REPLYTHUMBHEIGHT))) {
if ($_POST['isreply'] == '0') {
if (!@createThumbnail($target_file, $target_thumb, KU_THUMBWIDTH, KU_THUMBHEIGHT)) {
@unlink($target_file);
die('unable to thumbnail');
}
} else {
if (!@createThumbnail($target_file, $target_thumb, KU_REPLYTHUMBWIDTH, KU_REPLYTHUMBHEIGHT)) {
@unlink($target_file);
die('unable to thumbnail');
}
}
} else {
if (!@createThumbnail($target_file, $target_thumb, $imgw, $imgh)) {
@unlink($target_file);
die('unable to thumbnail');
}
}
if (!@createThumbnail($target_file, $target_thumb_catalog, KU_CATTHUMBWIDTH, KU_CATTHUMBHEIGHT)) {
@unlink($target_file);
die('unable to thumbnail');
}
$imageDim_thumb = getimagesize($target_thumb);
$imgw_thumb = $imageDim_thumb[0];
$imgh_thumb = $imageDim_thumb[1];
die(serialize(array('imgw_thumb' => $imgw_thumb, 'imgh_thumb' => $imgh_thumb)));
}
die('success');
}
} elseif ($_POST['type'] == 'delete') {
unlink('src/' . $_POST['filename'] . '.' . $_POST['filetype']);
unlink('thumb/' . $_POST['filename'] . 's.' . $_POST['filetype']);
unlink('thumb/' . $_POST['filename'] . 'c.' . $_POST['filetype']);
die("\n" . 'finished');
}
/**
* @ignore
*/
function createThumbnail($name, $filename, $new_w, $new_h) {
$system=explode(".", $filename);
$system = array_reverse($system);
if (preg_match("/jpg|jpeg/", $system[0])) {
$src_img=imagecreatefromjpeg($name);
} else if (preg_match("/png/", $system[0])) {
$src_img=imagecreatefrompng($name);
} else if (preg_match("/gif/", $system[0])) {
$src_img=imagecreatefromgif($name);
} else {
return false;
}
if (!$src_img) {
echo '<br />Unable to open the uploaded image for thumbnailing. Maybe its a different filetype, and has the wrong extension?';
return false;
}
$old_x=imageSX($src_img);
$old_y=imageSY($src_img);
if ($old_x > $old_y) {
$percent = $new_w / $old_x;
} else {
$percent = $new_h / $old_y;
}
$thumb_w = round($old_x * $percent);
$thumb_h = round($old_y * $percent);
$dst_img=ImageCreateTrueColor($thumb_w, $thumb_h);
fastimagecopyresampled($dst_img, $src_img, 0, 0, 0, 0, $thumb_w, $thumb_h, $old_x, $old_y);
if (preg_match("/png/", $system[0])) {
if (!imagepng($dst_img, $filename)) {
echo 'unable to imagepng.';
return false;
}
} else if (preg_match("/jpg|jpeg/", $system[0])) {
if (!imagejpeg($dst_img, $filename, 70)) {
echo 'unable to imagejpg.';
return false;
}
} else if (preg_match("/gif/", $system[0])) {
if (!imagegif($dst_img, $filename)) {
echo 'unable to imagegif.';
return false;
}
}
imagedestroy($dst_img);
imagedestroy($src_img);
return true;
}
/* Author: Tim Eckel - Date: 12/17/04 - Project: FreeRingers.net - Freely distributable. */
/**
* @ignore
*/
function fastimagecopyresampled(&$dst_image, &$src_image, $dst_x, $dst_y, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h, $quality = 3) {
/*
Optional "quality" parameter (defaults is 3). Fractional values are allowed, for example 1.5.
1 = Up to 600 times faster. Poor results, just uses imagecopyresized but removes black edges.
2 = Up to 95 times faster. Images may appear too sharp, some people may prefer it.
3 = Up to 60 times faster. Will give high quality smooth results very close to imagecopyresampled.
4 = Up to 25 times faster. Almost identical to imagecopyresampled for most images.
5 = No speedup. Just uses imagecopyresampled, highest quality but no advantage over imagecopyresampled.
*/
if (empty($src_image) || empty($dst_image)) { return false; }
if ($quality <= 1) {
$temp = imagecreatetruecolor ($dst_w + 1, $dst_h + 1);
imagecopyresized ($temp, $src_image, $dst_x, $dst_y, $src_x, $src_y, $dst_w + 1, $dst_h + 1, $src_w, $src_h);
imagecopyresized ($dst_image, $temp, 0, 0, 0, 0, $dst_w, $dst_h, $dst_w, $dst_h);
imagedestroy ($temp);
} elseif ($quality < 5 && (($dst_w * $quality) < $src_w || ($dst_h * $quality) < $src_h)) {
$tmp_w = $dst_w * $quality;
$tmp_h = $dst_h * $quality;
$temp = imagecreatetruecolor ($tmp_w + 1, $tmp_h + 1);
imagecopyresized ($temp, $src_image, $dst_x * $quality, $dst_y * $quality, $src_x, $src_y, $tmp_w + 1, $tmp_h + 1, $src_w, $src_h);
imagecopyresampled ($dst_image, $temp, 0, 0, 0, 0, $dst_w, $dst_h, $tmp_w, $tmp_h);
imagedestroy ($temp);
} else {
imagecopyresampled ($dst_image, $src_image, $dst_x, $dst_y, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h);
}
return true;
}
/**
* @ignore
*/
function mime_content_type_custom($f) {
return trim(exec('file -bi ' . escapeshellarg ($f )));
}
?>
+144
View File
@@ -0,0 +1,144 @@
<?php
/**
* @ignore
*/
################################################################################
# kusaba MySQL Importing Script v1.0 is © 2007 David Steven-Jennings (relixx@gmail.com)
#
# This work is licensed under the Creative Commons Attribution-ShareAlike 2.5 License.
# To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/2.5/
# or send a letter to Creative Commons, 543 Howard Street, 5th Floor, San Francisco,
# California, 94105, USA.
#
# You can modify this script as you wish just as long as this box stays intact. If
# you do modify this script please state that you have done so and give me credit
# as the author of the original script (with my email address intact).
################################################################################
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>MySQL Batch File Importing Script</title>
<style type="text/css">
body { font-family: sans-serif; font-size: 75%; background: #ffe }
a { text-decoration: none; color: #550 }
h1,h2 { margin: 0px; background: #fca }
h1 { font-size: 150% }
h2 { font-size: 100%; margin-top: 1em }
.hl { font-style: italic }
.plus { float: right; font-size: 8px; font-weight: normal; padding: 1px 4px 2px 4px; margin: 0px 0px; background: #eb9; color: #000; border: 1px solid #da8; cursor: hand; cursor: pointer }
.plus:hover { background: #da8; border: 1px solid #c97 }
ul { list-style: none; padding-left: 0px; margin: 0px }
li { margin: 0px }
li:hover { background: #fec; }
li a { display: block; width: 100%; }
</style>
<link rel="shortcut icon" href="/favicon.ico" />
</head>
<body>
<div style="text-align:center;"><h1>MySQL Batch File Importing Script</h1></div>
<?php
if (!isset($_POST["confirm"])) {
?>
<br /><br />
<font color="#FF0000"><strong>WARNING!</strong></font><br /><br />
The purpose of this script is to quickly and easily run the commands contained within the kusaba SQL file, and is
to be used if you are installing the script for the first time or want to recreate the tables, for whatever reason.<br />
Running this script will delete any related tables and their data (including the admin files). I offer this script as-is and cannot be held
responsible for any damages caused or accidental loss of data incurred as a result of running this script.<br />
Before running this script, make sure that:<br />
<ul>
<li>-&gt; You have set up the database connection and that it is working</li>
<li>-&gt; You have created the database</li>
<li>-&gt; You have created the database user and set up the config file appropriately</li>
</ul>
<form action="s2kx.php" method="post">
<br />
<input type="checkbox" name="confirm" /> By clicking this check box I agree that the author of this script cannot be held responsible for my own stupidity if something goes wrong.<br /><br /><br />
<input type="submit" value="Import the MySQL batch file" />
</form>
<?php
} else {
require('config.php');
//$reqiredtables = array("ads","announcements","embeds","faq","rules");
//foreach ($reqiredtables as $tablename) {
// if (mysql_table_exists(KU_DBDATABASE,KU_DBPREFIX.$tablename)) {
// die("Table <strong>".KU_DBPREFIX.$tablename."</strong> already exists in the database! Drop it, and re run this script.");
// }
//}
// Lets open the file for reading! :)
echo '<h2>SQL Batch File Processing</h2>';
echo 'Locating \'s2kx.sql\'... ';
if (file_exists('s2kx.sql') && (filesize('s2kx.sql') > 0)) {
echo 'found.<br />';
$sqlfile = fopen('s2kx.sql', 'r');
echo 'File opened.<br />';
$readdata = fread($sqlfile, filesize('s2kx.sql'));
$readdata = str_replace('PREFIX_',KU_DBPREFIX,$readdata);
fclose($sqlfile);
echo 'Contents read.<br />';
}else{
echo '<font color=red>Error.</font> ';
die('An error occured. s2kx.sql does not exist in this directory or it is 0 bytes big :( Barring that, do you have read permissions for the directory?');
}
$tc_db->Execute("ALTER DATABASE `" . KU_DBDATABASE . "` CHARACTER SET utf8 COLLATE utf8_general_ci");
// Explodes the array
$sqlarray = explode("\n", $readdata);
// Loops through the array and deletes the non-SQL bits in the file, which is basically the '--' lines and the lines with no content
foreach ($sqlarray as $key => $sqldata) {
if (strstr($sqldata, '--') || strlen($sqldata) == 0){
unset($sqlarray[$key]);
}
}
// Here we are imploding everything together again...
$readdata = implode('',$sqlarray);
// ...then exploding it again. At this point we will have an array where each key's value is a one of the CREATE statements
$sqlarray = explode(';',$readdata);
echo 'File contents have been formatted for use with mysql_query.<br />';
// Lets drop any existing tables in the database
$listoftables = $tc_db->GetAll("show tables from ".KU_DBDATABASE."");
echo '<h2>Table Creation</h2>';
// Lets now loop through the array and create each table
foreach ($sqlarray as $sqldata) {
if (strlen($sqldata) !== 0) { // As the array was exploded on ';', the last ';' caused a blank element to be created as there was no data after it :p
// The following three lines retrieve the table name of the table from the sql command. It's dynamic so it doesn't matter how many tables need to be created
// As long as each CREATE TABLE statement stays in the format CREATE TABLE `table` then this part will work.
$pos1 = strpos($sqldata, '`');
$pos2 = strpos($sqldata, '`', $pos1 + 1);
$tablename = substr($sqldata, $pos1+1, ($pos2-$pos1)-1);
echo "Attempting to create table '$tablename'... ";
if($tc_db->Execute($sqldata)) {
echo "success.<br />";
} else {
echo "<font color='red'>failed</font>. Enable debugging by setting KU_DEBUG to true to see this error.<br />";
die ("Table creation failed. Please rerun this script again or attempt to fix the problem if you know how to solve it.");
}
}
}
// All done :)
echo '<br />SQL commands have finished. If all is well, proceed to the <a href="install.php"><strong><u>installation file</u></strong></a> but don\'t forget to delete this file!';
}
function mysql_table_exists($database, $tableName)
{
global $tc_db;
$tables = array();
$tablesResults = $tc_db->GetAll("SHOW TABLES FROM `$database`;");
foreach ($tablesResults AS $row) $tables[] = $row[0];
return(in_array($tableName, $tables));
}
?>
</body>
</html>
+99
View File
@@ -0,0 +1,99 @@
-- --------------------------------------------------------
--
-- Drop tables not used in Kusaba X.
--
DROP TABLE `PREFIX_announcements`;
DROP TABLE `PREFIX_faptcha_attempts`;
DROP TABLE `PREFIX_spamfilter`;
DROP TABLE `PREFIX_menu`;
ALTER TABLE `PREFIX_boards` DROP enablefaptcha;
ALTER TABLE `PREFIX_boards` DROP enableporn;
ALTER TABLE `PREFIX_staff` DROP suspended;
ALTER TABLE `PREFIX_staff` DROP access;
ALTER TABLE `PREFIX_banlist` CHANGE `note` `staffnote` TEXT;
-- --------------------------------------------------------
--
-- Table structure for table `ads`
--
CREATE TABLE `PREFIX_ads` (
`id` smallint(1) unsigned NOT NULL,
`position` varchar(3) NOT NULL,
`disp` tinyint(1) NOT NULL,
`boards` varchar(255) NOT NULL,
`code` text NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- --------------------------------------------------------
--
-- Table structure for table `announcements`
--
CREATE TABLE `PREFIX_announcements` (
`id` int(10) unsigned NOT NULL auto_increment,
`parentid` int(10) unsigned NOT NULL default '0',
`subject` varchar(255) NOT NULL,
`postedat` int(20) NOT NULL,
`postedby` varchar(75) NOT NULL,
`message` text NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- --------------------------------------------------------
--
-- Table structure for table `embeds`
--
CREATE TABLE `PREFIX_embeds` (
`id` tinyint(5) unsigned NOT NULL auto_increment,
`filetype` varchar(3) NOT NULL,
`name` varchar(255) NOT NULL,
`videourl` varchar(510) NOT NULL,
`width` tinyint(3) unsigned NOT NULL,
`height` tinyint(3) unsigned NOT NULL,
`code` text NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- --------------------------------------------------------
--
-- Table structure for table `faq`
--
CREATE TABLE `PREFIX_faq` (
`id` smallint(5) unsigned NOT NULL auto_increment,
`order` smallint(5) unsigned NOT NULL,
`heading` varchar(255) NOT NULL,
`message` text NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-- --------------------------------------------------------
--
-- Table structure for table `rules`
--
CREATE TABLE `PREFIX_rules` (
`id` smallint(5) unsigned NOT NULL auto_increment,
`order` smallint(5) unsigned NOT NULL,
`heading` varchar(255) NOT NULL,
`message` text NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-- --------------------------------------------------------
ALTER TABLE `PREFIX_boards` CHANGE `maxpages` `maxpages` INT( 20 ) NOT NULL DEFAULT '11';
ALTER TABLE `PREFIX_boards` CHANGE `maxpages` `maxpages` INT( 20 ) NOT NULL DEFAULT '11';
INSERT INTO `PREFIX_ads` (`id`, `position`, `disp`, `boards`, `code`) VALUES (1, 'top', 0, '', 'Right Frame Top'), (2, 'bot', 0, '', 'Right Frame Bottom');
INSERT INTO `PREFIX_embeds` (`filetype`, `name`, `videourl`, `width`, `height`, `code`) VALUES ('you', 'Youtube', 'http://www.youtube.com/watch?v=', 200, 164, '<object type="application/x-shockwave-flash" width="SET_WIDTH" height="SET_HEIGHT" data="http://www.youtube.com/v/EMBED_ID"> <param name="movie" value="http://www.youtube.com/v/EMBED_ID" /> </object>'), ('goo', 'Google', 'http://video.google.com/videoplay?docid=', 200, 164, '<embed width="SET_WIDTH" height="SET_HEIGHT" id="VideoPlayback" type="application/x-shockwave-flash" src="http://video.google.com/googleplayer.swf?docId=EMBED_ID"></embed>') ;
+251
View File
@@ -0,0 +1,251 @@
<?php
/**
* @ignore
*/
################################################################################
# kusaba MySQL Importing Script v1.0 is © 2007 David Steven-Jennings (relixx@gmail.com)
#
# This work is licensed under the Creative Commons Attribution-ShareAlike 2.5 License.
# To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/2.5/
# or send a letter to Creative Commons, 543 Howard Street, 5th Floor, San Francisco,
# California, 94105, USA.
#
# You can modify this script as you wish just as long as this box stays intact. If
# you do modify this script please state that you have done so and give me credit
# as the author of the original script (with my email address intact).
################################################################################
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>MySQL Batch File Importing Script</title>
<style type="text/css">
body { font-family: sans-serif; font-size: 75%; background: #ffe }
a { text-decoration: none; color: #550 }
h1,h2 { margin: 0px; background: #fca }
h1 { font-size: 150% }
h2 { font-size: 100%; margin-top: 1em }
.hl { font-style: italic }
.plus { float: right; font-size: 8px; font-weight: normal; padding: 1px 4px 2px 4px; margin: 0px 0px; background: #eb9; color: #000; border: 1px solid #da8; cursor: hand; cursor: pointer }
.plus:hover { background: #da8; border: 1px solid #c97 }
ul { list-style: none; padding-left: 0px; margin: 0px }
li { margin: 0px }
li:hover { background: #fec; }
li a { display: block; width: 100%; }
</style>
<link rel="shortcut icon" href="/favicon.ico" />
</head>
<body>
<div style="text-align:center;"><h1>MySQL Batch File Importing Script</h1></div>
<?php
if (!isset($_POST["confirm"])) {
?>
<br /><br />
<font color="#FF0000"><strong>WARNING!</strong></font><br /><br />
The purpose of this script is to quickly and easily run the commands contained within the kusaba SQL file, and is
to be used if you are installing the script for the first time or want to recreate the tables, for whatever reason.<br />
Running this script will delete any related tables and their data (including the admin files). I offer this script as-is and cannot be held
responsible for any damages caused or accidental loss of data incurred as a result of running this script.<br />
Before running this script, make sure that:<br />
<ul>
<li>-&gt; You have set up the database connection and that it is working</li>
<li>-&gt; You have created the database</li>
<li>-&gt; You have created the database user and set up the config file appropriately</li>
</ul>
<form action="update-mysql.php" method="post">
<br />
<input type="checkbox" checked="checked" name="removeposts" />Uncheck this box to convert posts to a single table without deleting the old tables. The old tables will not be deleted after being converted, but will remain completely unused.<br /><br /><br />
<input type="checkbox" checked="checked" name="removefront" />Uncheck this box to convert FAQ, Rules, and News to a single table without deleting the old tables. The old tables will not be deleted after being converted, but will remain completely unused.<br /><br /><br />
<br />
<input type="checkbox" name="confirm" /> By clicking this check box I agree that the author of this script cannot be held responsible for my own stupidity if something goes wrong.<br /><br /><br />
<input type="submit" value="Import the MySQL batch file" />
</form>
<?php
} else {
require('config.php');
/*$reqiredtables = array("ads","announcements","embeds","faq","rules");
foreach ($reqiredtables as $tablename) {
if (mysql_table_exists(KU_DBDATABASE,KU_DBPREFIX.$tablename)) {
die("Table <strong>".KU_DBPREFIX.$tablename."</strong> already exists in the database! Drop it, and re run this script.");
}
}*/
// Lets open the file for reading! :)
echo '<h2>SQL Batch File Processing</h2>';
echo 'Locating \'kusabax_updatemysql.sql\'... ';
if (file_exists('kusabax_updatemysql.sql') && (filesize('kusabax_updatemysql.sql') > 0)) {
echo 'found.<br />';
$sqlfile = fopen('kusabax_updatemysql.sql', 'r');
echo 'File opened.<br />';
$readdata = fread($sqlfile, filesize('kusabax_updatemysql.sql'));
$readdata = str_replace('PREFIX_',KU_DBPREFIX,$readdata);
fclose($sqlfile);
echo 'Contents read.<br />';
}else{
echo '<font color=red>Error.</font> ';
die('An error occured. kusabax_updatemysql.sql does not exist in this directory or it is 0 bytes big :( Barring that, do you have read permissions for the directory?');
}
$tc_db->Execute("ALTER DATABASE `" . KU_DBDATABASE . "` CHARACTER SET utf8 COLLATE utf8_general_ci");
// Explodes the array
$sqlarray = explode("\n", $readdata);
// Loops through the array and deletes the non-SQL bits in the file, which is basically the '--' lines and the lines with no content
foreach ($sqlarray as $key => $sqldata) {
if (strstr($sqldata, '--') || strlen($sqldata) == 0){
unset($sqlarray[$key]);
}
}
// Here we are imploding everything together again...
$readdata = implode('',$sqlarray);
// ...then exploding it again. At this point we will have an array where each key's value is a one of the CREATE statements
$sqlarray = explode(';',$readdata);
echo 'File contents have been formatted for use with mysql_query.<br />';
// Lets drop any existing tables in the database
$listoftables = $tc_db->GetAll("show tables from ".KU_DBDATABASE."");
echo '<h2>Table Creation</h2>';
// Lets now loop through the array and create each table
foreach ($sqlarray as $sqldata) {
if (strlen($sqldata) !== 0) { // As the array was exploded on ';', the last ';' caused a blank element to be created as there was no data after it :p
// The following three lines retrieve the table name of the table from the sql command. It's dynamic so it doesn't matter how many tables need to be created
// As long as each CREATE TABLE statement stays in the format CREATE TABLE `table` then this part will work.
$pos1 = strpos($sqldata, '`');
$pos2 = strpos($sqldata, '`', $pos1 + 1);
$tablename = substr($sqldata, $pos1+1, ($pos2-$pos1)-1);
echo "Attempting to create table '$tablename'... ";
if($tc_db->Execute($sqldata)) {
echo "success.<br />";
} else {
echo "<font color='red'>failed</font>. Enable debugging by setting KU_DEBUG to true to see this error.<br />";
die ("Table creation failed. Please rerun this script again or attempt to fix the problem if you know how to solve it.");
}
}
}
add_column_if_not_exist("boards", "start", "int(10) UNSIGNED AFTER `type`");
add_column_if_not_exist("reports", "reason", "VARCHAR(255)");
add_column_if_not_exist("staff", "salt", "VARCHAR(3) AFTER `password`");
add_column_if_not_exist("banlist", "appeal", "TEXT");
add_column_if_not_exist("banlist", "staffnote", "text NOT NULL");
add_column_if_not_exist("banlist", "expired", "tinyint(1) NOT NULL default '0'");
add_column_if_not_exist("boards", "embeds_allowed", "VARCHAR(255) NOT NULL DEFAULT '' AFTER `forcedanon`");
echo "Attempting to convert posts...";
db_conversion();
echo "done<br />";
front_db_conversion();
// All done :)
echo '<br />SQL commands have finished. If all is well, proceed to the <a href="install.php"><strong><u>installation file</u></strong></a> but don\'t forget to delete this file!';
}
function mysql_table_exists($database, $tableName)
{
global $tc_db;
$tables = array();
$tablesResults = $tc_db->GetAll("SHOW TABLES FROM `$database`;");
foreach ($tablesResults AS $row) $tables[] = $row[0];
return(in_array($tableName, $tables));
}
function add_column_if_not_exist($tableName, $columnName, $column_attr = "VARCHAR( 255 ) NULL" ){
global $tc_db;
$exists = false;
$columns = $tc_db->GetAll("SHOW COLUMNS FROM `".KU_DBPREFIX."$tableName");
foreach ($columns as $column) {
if($column['Field'] == $columnName){
$exists = true;
break;
}
}
if(!$exists){
$tc_db->Execute("ALTER TABLE `".KU_DBPREFIX."$tableName` ADD `$columnName` $column_attr");
}
}
function db_conversion()
{
global $tc_db;
$resultsboard = $tc_db->GetAll("SELECT HIGH_PRIORITY `id`, `name` FROM `" . KU_DBPREFIX . "boards` ORDER BY `name` ASC");
foreach ($resultsboard as $lineboard) {
echo "Converting board /".$lineboard['name']."/...";
$posts_table = KU_DBPREFIX.'posts_'.$lineboard['name'];
$posts = $tc_db->GetOne('SELECT COUNT(*) FROM `' . $posts_table.'`');
$i=0;
while ($i <= $posts+1500) {
$boardid = $lineboard['id'];
$results = $tc_db->GetAssoc('SELECT * FROM `' . $posts_table.'` LIMIT '.$i.',1500');
foreach($results AS $line) {
$query = 'INSERT INTO `'.KU_DBPREFIX.'posts` (`id`, `boardid`, `parentid`, `name`, `tripcode`, `email`, `subject`, `message`, `password`, `file`, `file_md5`, `file_type`, `file_original`, `file_size`, `file_size_formatted`, `image_w`, `image_h`, `thumb_w`, `thumb_h`, `ip`, `ipmd5`, `tag`, `timestamp_formatted`, `timestamp`, `stickied`, `locked`, `posterauthority`, `reviewed`, `deleted_timestamp`, `IS_DELETED`, `bumped`) VALUES
( ' . $tc_db->qstr($line['id']) . ', \'' . $boardid . '\' ,' . $tc_db->qstr($line['parentid']) . ', ' . $tc_db->qstr($line['name']) . ', ' . $tc_db->qstr($line['tripcode']) . ', ' . $tc_db->qstr($line['email']) . ', ' . $tc_db->qstr($line['subject']) . ', ' . $tc_db->qstr($line['message']) . ', ' . $tc_db->qstr($line['password']) . ', ' . $tc_db->qstr($line['filename']) . ', ' . $tc_db->qstr($line['filemd5']) . ', ' .$tc_db->qstr($line['filetype']) . ', ' . $tc_db->qstr($line['filename_original']) . ', ' . $tc_db->qstr($line['filesize']) . ', ' . $tc_db->qstr($line['filesize_formatted']) . ', ' . $tc_db->qstr($line['image_w']) . ', ' . $tc_db->qstr($line['image_h']) . ', ' . $tc_db->qstr($line['thumb_w']) . ', ' . $tc_db->qstr($line['thumb_h']) . ', ' . $tc_db->qstr($line['ip']) . ', ' . $tc_db->qstr($line['ipmd5']) . ', ' . $tc_db->qstr($line['tag']) . ', '. $tc_db->qstr(date('y/m/d(D)H:i', $line['postedat'])) . ', ' . $tc_db->qstr($line['postedat']) . ', ' . $tc_db->qstr($line['stickied']) . ', ' . $tc_db->qstr($line['locked']) . ', ' . $tc_db->qstr($line['posterauthority']) . ', ' . $tc_db->qstr($line['reviewed']) . ', ' . $tc_db->qstr($line['deletedat']) . ', ' . $tc_db->qstr($line['IS_DELETED']) . ', ' . $tc_db->qstr($line['lastbumped']) . ')';
$tc_db->Execute($query);
if (!mysql_error()) {
} else {
$error = mysql_error();
$tc_db->Execute('TRUNCATE TABLE `'.KU_DBPREFIX.'posts`');
die ("Conversion failed. Please rerun this script again or attempt to fix the problem if you know how to solve it.<br />
Debugging info:<br />
Query: ".$query."<br />
Error: ".$error."");
}
}
$i = $i+1500;
}
echo "done<br />";
}
if (isset($_POST["removeposts"])) {
echo "Removing old posts tables...";
foreach ($resultsboard as $lineboard) {
$posts_table = 'posts_'.$lineboard['name'];
$tc_db->Execute('DROP TABLE `' . $posts_table.'`');
}
echo "done<br />";
}
}
function front_db_conversion() {
global $tc_db;
echo 'Updating News, FAQ, and Rules tables...<br />';
$news = $tc_db->GetAll("SELECT * FROM `" . KU_DBPREFIX . "news`");
$faq = $tc_db->GetAll("SELECT * FROM `" . KU_DBPREFIX . "faq` ORDER BY `order`");
$rules = $tc_db->GetAll("SELECT * FROM `" . KU_DBPREFIX . "rules` ORDER BY `order`");
foreach ($news as $newspost) {
$tc_db->Execute("INSERT HIGH_PRIORITY INTO `" . KU_DBPREFIX . "front` ( `page`, `subject` , `message` , `timestamp` , `poster` , `email` ) VALUES ( '0', '" . $newspost['subject'] . "' , '" . $newspost['message'] . "' , '" . $newspost['postedat'] . "' , '" . $newspost['postedby'] . "' , '" . $newspost['postedemail'] . "' )");
}
echo 'Updated news table.<br />';
foreach ($faq as $faqpost) {
$tc_db->Execute("INSERT HIGH_PRIORITY INTO `" . KU_DBPREFIX . "front` ( `page`, `order`, `subject` , `message` ) VALUES ( '1', '" . $faqpost['order'] . "' , '" . $faqpost['heading'] . "' , '" . $faqpost['message'] . "' )");
}
echo 'Updated FAQ table.<br />';
foreach ($rules as $rulespost) {
$tc_db->Execute("INSERT HIGH_PRIORITY INTO `" . KU_DBPREFIX . "front` ( `page`, `order`, `subject` , `message` ) VALUES ( '2', '" . $rulespost['order'] . "' , '" . $rulespost['heading'] . "' , '" . $rulespost['message'] . "' )");
}
echo 'Updated rules table.<br />';
if (isset($_POST['removefront'])) {
echo 'Deleting unused front page tables...';
$tc_db->Execute("DROP TABLE `" . KU_DBPREFIX . "news`");
$tc_db->Execute("DROP TABLE `" . KU_DBPREFIX . "faq`");
$tc_db->Execute("DROP TABLE `" . KU_DBPREFIX . "rules`");
echo ' done<br />';
}
echo 'Finished updating front tables.<br />';
}
?>
</body>
</html>
BIN
View File
Binary file not shown.
+8
View File
@@ -0,0 +1,8 @@
Installation Guide
http://kusabax.org/wiki/installation_guide
Other Info (Including Upgrading)
http://kusabax.org/wiki/basics
Support Board
http://kusabax.org/sup/
+76
View File
@@ -0,0 +1,76 @@
<?php
/*
* This file is part of kusaba.
*
* kusaba is free software; you can redistribute it and/or modify it under the
* terms of the GNU General Public License as published by the Free Software
* Foundation; either version 2 of the License, or (at your option) any later
* version.
*
* kusaba is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
* A PARTICULAR PURPOSE. See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along with
* kusaba; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
/**
* Oekaki animation viewer
*
* Plays back an animation of an oekaki drawing as it is being drawn
*
* @package kusaba
*/
if (!isset($_GET['board']) || !isset($_GET['id'])) {
die();
}
/**
* Require the configuration file
*/
require 'config.php';
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
<html>
<head>
<title>View Animation</title>
</head>
<body>
<applet name="pch" code="pch2.PCHViewer.class" archive="<?php echo KU_CGIPATH; ?>/PCHViewer123.jar" width="400" height="426" alt="Applet requires Java 1.1 or later to run!" mayscript">
<param name="archive" value="PCHViewer123.jar">
<param name="image_width" value="400">
<param name="image_height" value="400">
<param name="pch_file" value="<?php echo KU_BOARDSPATH . '/' . $_GET['board'] . '/src/' . $_GET['id'] . '.pch'; ?>">
<param name="run" value="true">
<param name="buffer_progress" value="false">
<param name="buffer_canvas" value="false">
<param name="dir_resource" value="./kusabaoek/res/">
<param name="res.zip" value="./kusabaoek/res/res.zip">
<param name="tt.zip" value="./kusabaoek/res/tt.zip">
<param name="tt_size" value="31">
<param name="color_text" value="#000000">
<param name="color_bk" value="#EEEEFF">
<param name="color_bk2" value="#CCCCFF">
<param name="color_icon" value="#CCCCFF">
<param name="color_iconselect" value="#AAAAFF">
<param name="tool_color_button" value="#CCCCFF">
<param name="tool_color_button2" value="#CCCCFF">
<param name="tool_color_text" value="#000000">
<param name="tool_color_frame" value="#CCCCFF">
<param name="color_bar" value="#AAAAFF">
<param name="color_bar_hl" value="#CCCCFF">
<param name="color_bar_frame_hl" value="#CCCCFF">
<param name="color_bar_frame_shadow" value="#CCCCFF">
<div align="center">Java must be installed and enabled to use this applet. Please refer to our Java setup tutorial for more information.</div>
</applet>
</body>
</html>
<?php
?>
+55
View File
@@ -0,0 +1,55 @@
<?php
/*
* This file is part of kusaba.
*
* kusaba is free software; you can redistribute it and/or modify it under the
* terms of the GNU General Public License as published by the Free Software
* Foundation; either version 2 of the License, or (at your option) any later
* version.
*
* kusaba is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
* A PARTICULAR PURPOSE. See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along with
* kusaba; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
/**
* "You are banned" page
*
* Users will be redirected to this page when they are banned from posting to or
* viewing the boards.
*
* @package kusaba
*/
/**
* Require the configuration file, functions file, and bans class
*/
require 'config.php';
require KU_ROOTDIR . 'inc/functions.php';
require KU_ROOTDIR . 'inc/classes/bans.class.php';
$bans_class = new Bans();
if (isset($_POST['appealmessage']) && KU_APPEAL != '') {
$results = $tc_db->GetAll("SELECT * FROM `".KU_DBPREFIX."banlist` WHERE `type` = '0' AND `ipmd5` = '" . md5($_SERVER['REMOTE_ADDR']) . "' AND `id` = " . $tc_db->qstr($_POST['banid']) . "LIMIT 1");
if (count($results)>0) {
foreach($results AS $line) {
if ($line['appealat'] > 0 && $line['appealat'] < time()) {
$tc_db->Execute("UPDATE `".KU_DBPREFIX."banlist` SET `appealat` = '-1' , appeal = ".$tc_db->qstr($_POST['appealmessage'])." WHERE `id` = '" . $line['id'] . "'");
echo 'Your appeal has been sent and is pending review.';
} else {
echo 'You may not appeal that ban at this time.';
}
die();
}
}
}
$bans_class->BanCheck($_SERVER['REMOTE_ADDR'], '', true);
?>
+6
View File
@@ -0,0 +1,6 @@
<?php
require 'config.php';
require KU_ROOTDIR . 'inc/functions.php';
echo getBlotter(true);
?>
+473
View File
@@ -0,0 +1,473 @@
<?php
/*
* This file is part of kusaba.
*
* kusaba is free software; you can redistribute it and/or modify it under the
* terms of the GNU General Public License as published by the Free Software
* Foundation; either version 2 of the License, or (at your option) any later
* version.
*
* kusaba is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
* A PARTICULAR PURPOSE. See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along with
* kusaba; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
* +------------------------------------------------------------------------------+
* kusaba - http://www.kusaba.org/
* Written by Trevor "tj9991" Slocum
* http://www.tj9991.com/
* tslocum@gmail.com
* +------------------------------------------------------------------------------+
*/
/**
* Board operations which available to all users
*
* This file serves the purpose of providing functionality for all users of the
* boards. This includes: posting, reporting posts, and deleting posts.
*
* @package kusaba
*/
// }}}
// {{{ Fake email field check
if (isset($_POST['email']) && !empty($_POST['email'])) {
exitWithErrorPage('Spam bot detected');
}
// Start the session
session_start();
// Require the configuration file, functions file, board and post class, bans class, and posting class
require 'config.php';
require KU_ROOTDIR . 'inc/functions.php';
require KU_ROOTDIR . 'inc/classes/board-post.class.php';
require KU_ROOTDIR . 'inc/classes/bans.class.php';
require KU_ROOTDIR . 'inc/classes/posting.class.php';
require KU_ROOTDIR . 'inc/classes/parse.class.php';
$bans_class = new Bans();
$parse_class = new Parse();
$posting_class = new Posting();
// {{{ Module loading
modules_load_all();
// }}}
// {{{ GET/POST board send check
// In some cases, the board value is sent through post, others get
if (isset($_POST['board']) || isset($_GET['board'])) $_POST['board'] = (isset($_GET['board'])) ? $_GET['board'] : $_POST['board'];
// }}}
// If the script was called using a board name:
if (isset($_POST['board'])) {
$board_name = $tc_db->GetOne("SELECT `name` FROM `" . KU_DBPREFIX . "boards` WHERE `name` = " . $tc_db->qstr($_POST['board']) . "");
if (!empty($board_name)) {
$board_class = new Board($board_name);
if (!empty($board_class->board['locale'])) {
changeLocale($board_class->board['locale']);
}
} else {
do_redirect(KU_WEBPATH);
}
} else {
// A board being supplied is required for this script to function
do_redirect(KU_WEBPATH);
}
// {{{ Expired ban removal, and then existing ban check on the current user
$bans_class->BanCheck($_SERVER['REMOTE_ADDR'], $board_class->board['name']);
// }}}
$oekaki = $posting_class->CheckOekaki();
$is_oekaki = empty($oekaki) ? false : true;
/* Ensure that UTF-8 is used on some of the post variables */
$posting_class->UTF8Strings();
/* Check if the user sent a valid post (image for thread, image/message for reply, etc) */
if ($posting_class->CheckValidPost($is_oekaki)) {
$tc_db->Execute("START TRANSACTION");
$posting_class->CheckReplyTime();
$posting_class->CheckNewThreadTime();
$posting_class->CheckMessageLength();
$posting_class->CheckCaptcha();
$posting_class->CheckBannedHash();
$posting_class->CheckBlacklistedText();
$post_isreply = $posting_class->CheckIsReply();
$imagefile_name = isset($_FILES['imagefile']) ? $_FILES['imagefile']['name'] : '';
if ($post_isreply) {
list($thread_replies, $thread_locked, $thread_replyto) = $posting_class->GetThreadInfo($_POST['replythread']);
} else {
if ($board_class->board['type'] != 1 && (($board_class->board['uploadtype'] == '1' || $board_class->board['uploadtype'] == '2') && $board_class->board['embeds_allowed'] != '')) {
if (isset($_POST['embed'])) {
if ($_POST['embed'] == '') {
if (($board_class->board['uploadtype'] == '1' && $imagefile_name == '') || $board_class->board['uploadtype'] == '2') {
exitWithErrorPage('Please enter an embed ID.');
}
}
} else {
exitWithErrorPage('Please enter an embed ID.');
}
}
$thread_replies = 0;
$thread_locked = 0;
$thread_replyto = 0;
}
list($post_name, $post_email, $post_subject) = $posting_class->GetFields();
$post_password = isset($_POST['postpassword']) ? $_POST['postpassword'] : '';
if ($board_class->board['type'] == 1) {
if ($post_isreply) {
$post_subject = '';
} else {
$posting_class->CheckNotDuplicateSubject($post_subject);
}
}
list($user_authority, $flags) = $posting_class->GetUserAuthority();
$post_fileused = false;
$post_autosticky = false;
$post_autolock = false;
$post_displaystaffstatus = false;
$file_is_special = false;
if (isset($_POST['formatting'])) {
if ($_POST['formatting'] == 'aa') {
$_POST['message'] = '[aa]' . $_POST['message'] . '[/aa]';
}
if (isset($_POST['rememberformatting'])) {
setcookie('kuformatting', urldecode($_POST['formatting']), time() + 31556926, '/', KU_DOMAIN);
}
}
$results = $tc_db->GetAll("SELECT id FROM `" . KU_DBPREFIX . "posts` WHERE `boardid` = " . $board_class->board['id'] . " ORDER BY id DESC LIMIT 1");
if (count($results) > 0)
$nextid = $results[0]['id'] + 1;
else
$nextid = 1;
$parse_class->id = $nextid;
// If they are just a normal user, or vip...
if (isNormalUser($user_authority)) {
// If the thread is locked
if ($thread_locked == 1) {
// Don't let the user post
exitWithErrorPage(_gettext('Sorry, this thread is locked and can not be replied to.'));
}
$post_message = $parse_class->ParsePost($_POST['message'], $board_class->board['name'], $board_class->board['type'], $thread_replyto, $board_class->board['id']);
// Or, if they are a moderator/administrator...
} else {
// If they checked the D checkbox, set the variable to tell the script to display their staff status (Admin/Mod) on the post during insertion
if (isset($_POST['displaystaffstatus'])) {
$post_displaystaffstatus = true;
}
// If they checked the RH checkbox, set the variable to tell the script to insert the post as-is...
if (isset($_POST['rawhtml'])) {
$post_message = $_POST['message'];
// Otherwise, parse it as usual...
} else {
$post_message = $parse_class->ParsePost($_POST['message'], $board_class->board['name'], $board_class->board['type'], $thread_replyto, $board_class->board['id']);
}
// If they checked the L checkbox, set the variable to tell the script to lock the post after insertion
if (isset($_POST['lockonpost'])) {
$post_autolock = true;
}
// If they checked the S checkbox, set the variable to tell the script to sticky the post after insertion
if (isset($_POST['stickyonpost'])) {
$post_autosticky = true;
}
if (isset($_POST['usestaffname'])) {
$_POST['name'] = md5_decrypt($_POST['modpassword'], KU_RANDOMSEED);
$post_name = md5_decrypt($_POST['modpassword'], KU_RANDOMSEED);
}
}
$posting_class->CheckBadUnicode($post_name, $post_email, $post_subject, $post_message);
$post_tag = $posting_class->GetPostTag();
if ($post_isreply) {
if ($imagefile_name == '' && !$is_oekaki && $post_message == '') {
exitWithErrorPage(_gettext('An image, or message, is required for a reply.'));
}
} else {
if ($imagefile_name == '' && !$is_oekaki && ((!isset($_POST['nofile'])&&$board_class->board['enablenofile']==1) || $board_class->board['enablenofile']==0) && ($board_class->board['type'] == 0 || $board_class->board['type'] == 2 || $board_class->board['type'] == 3)) {
if (!isset($_POST['embed']) && $board_class->board['uploadtype'] != 1) {
exitWithErrorPage(_gettext('A file is required for a new thread. If embedding is allowed, either a file or embed ID is required.'));
}
}
}
if (isset($_POST['nofile'])&&$board_class->board['enablenofile']==1) {
if ($post_message == '') {
exitWithErrorPage('A message is required to post without a file.');
}
}
if ($board_class->board['type'] == 1 && !$post_isreply && $post_subject == '') {
exitWithErrorPage('A subject is required to make a new thread.');
}
if ($board_class->board['locked'] == 0 || ($user_authority > 0 && $user_authority != 3)) {
require_once KU_ROOTDIR . 'inc/classes/upload.class.php';
$upload_class = new Upload();
if ($post_isreply) {
$upload_class->isreply = true;
}
if ((!isset($_POST['nofile']) && $board_class->board['enablenofile'] == 1) || $board_class->board['enablenofile'] == 0) {
$upload_class->HandleUpload();
}
if ($board_class->board['forcedanon'] == '1') {
if ($user_authority == 0 || $user_authority == 3) {
$post_name = '';
$post_subject = '';
}
}
$nameandtripcode = calculateNameAndTripcode($post_name);
if (is_array($nameandtripcode)) {
$name = $nameandtripcode[0];
$tripcode = $nameandtripcode[1];
} else {
$name = $post_name;
$tripcode = '';
}
$filetype_withoutdot = substr($upload_class->file_type, 1);
$post_passwordmd5 = ($post_password == '') ? '' : md5($post_password);
if ($post_autosticky == true) {
if ($thread_replyto == 0) {
$sticky = 1;
} else {
$result = $tc_db->Execute("UPDATE `" . KU_DBPREFIX . "posts` SET `stickied` = '1' WHERE `boardid` = " . $board_class->board['id'] . " AND `id` = '" . $thread_replyto . "'");
$sticky = 0;
}
} else {
$sticky = 0;
}
if ($post_autolock == true) {
if ($thread_replyto == 0) {
$lock = 1;
} else {
$tc_db->Execute("UPDATE `" . KU_DBPREFIX . "posts` SET `locked` = '1' WHERE `boardid` = " . $board_class->board['id'] . " AND `id` = '" . $thread_replyto . "'");
$lock = 0;
}
} else {
$lock = 0;
}
if (!$post_displaystaffstatus && $user_authority > 0 && $user_authority != 3) {
$user_authority_display = 0;
} elseif ($user_authority > 0) {
$user_authority_display = $user_authority;
} else {
$user_authority_display = 0;
}
if ((file_exists(KU_BOARDSDIR . $board_class->board['name'] . '/src/' . $upload_class->file_name . $upload_class->file_type) && file_exists(KU_BOARDSDIR . $board_class->board['name'] . '/thumb/' . $upload_class->file_name . 's' . $upload_class->file_type)) || ($file_is_special && file_exists(KU_BOARDSDIR . $board_class->board['name'] . '/src/' . $upload_class->file_name . $upload_class->file_type)) || $post_fileused == false) {
$post = array();
$post['board'] = $board_class->board['name'];
$post['name'] = substr($name, 0, 74);
$post['name_save'] = true;
$post['tripcode'] = $tripcode;
$post['email'] = substr($post_email, 0, 74);
// First array is the converted form of the japanese characters meaning sage, second meaning age
$ords_email = unistr_to_ords($post_email);
if (strtolower($_POST['em']) != 'sage' && $ords_email != array(19979, 12370) && strtolower($_POST['em']) != 'age' && $ords_email != array(19978, 12370) && $_POST['em'] != 'return' && $_POST['em'] != 'noko') {
$post['email_save'] = true;
} else {
$post['email_save'] = false;
}
$post['subject'] = substr($post_subject, 0, 74);
$post['message'] = $post_message;
$post['tag'] = $post_tag;
$post = hook_process('posting', $post);
if ($is_oekaki) {
if (file_exists(KU_BOARDSDIR . $board_class->board['name'] . '/src/' . $upload_class->file_name . '.pch')) {
$post['message'] .= '<br /><small><a href="' . KU_CGIPATH . '/animation.php?board=' . $board_class->board['name'] . '&amp;id=' . $upload_class->file_name . '">' . _gettext('View animation') . '</a></small>';
}
}
if ($thread_replyto != '0') {
if ($post['message'] == '' && KU_NOMESSAGEREPLY != '') {
$post['message'] = KU_NOMESSAGEREPLY;
}
} else {
if ($post['message'] == '' && KU_NOMESSAGETHREAD != '') {
$post['message'] = KU_NOMESSAGETHREAD;
}
}
$post_class = new Post(0, $board_class->board['name'], $board_class->board['id'], true);
$post_id = $post_class->Insert($thread_replyto, $post['name'], $post['tripcode'], $post['email'], $post['subject'], addslashes($post['message']), $upload_class->file_name, $upload_class->original_file_name, $filetype_withoutdot, $upload_class->file_md5, $upload_class->imgWidth, $upload_class->imgHeight, $upload_class->file_size, $upload_class->imgWidth_thumb, $upload_class->imgHeight_thumb, $post_passwordmd5, time(), time(), $_SERVER['REMOTE_ADDR'], $user_authority_display, $post['tag'], $sticky, $lock, $board_class->board['id']);
if ($user_authority > 0 && $user_authority != 3) {
$modpost_message = 'Modposted #<a href="' . KU_BOARDSFOLDER . $board_class->board['name'] . '/res/';
if ($post_isreply) {
$modpost_message .= $thread_replyto;
} else {
$modpost_message .= $post_id;
}
$modpost_message .= '.html#' . $post_id . '">' . $post_id . '</a> in /'.$_POST['board'].'/ with flags: ' . $flags . '.';
management_addlogentry($modpost_message, 1, md5_decrypt($_POST['modpassword'], KU_RANDOMSEED));
}
if ($post['name_save'] && isset($_POST['name'])) {
setcookie('name', urldecode($_POST['name']), time() + 31556926, '/', KU_DOMAIN);
}
if ($post['email_save']) {
setcookie('email', urldecode($post['email']), time() + 31556926, '/', KU_DOMAIN);
}
setcookie('postpassword', urldecode($_POST['postpassword']), time() + 31556926, '/');
} else {
exitWithErrorPage(_gettext('Could not copy uploaded image.'));
}
// If the user replied to a thread, and they weren't sage-ing it...
if ($thread_replyto != '0' && strtolower($_POST['em']) != 'sage' && unistr_to_ords($_POST['em']) != array(19979, 12370)) {
// And if the number of replies already in the thread are less than the maximum thread replies before perma-sage...
if ($thread_replies <= $board_class->board['maxreplies']) {
// Bump the thread
$tc_db->Execute("UPDATE `" . KU_DBPREFIX . "posts` SET `bumped` = '" . time() . "' WHERE `boardid` = " . $board_class->board['id'] . " AND `id` = '" . $thread_replyto . "'");
}
}
// If the user replied to a thread he is watching, update it so it doesn't count his reply as unread
if (KU_WATCHTHREADS && $thread_replyto != '0') {
$viewing_thread_is_watched = $tc_db->GetOne("SELECT COUNT(*) FROM `" . KU_DBPREFIX . "watchedthreads` WHERE `ip` = '" . $_SERVER['REMOTE_ADDR'] . "' AND `board` = '" . $board_class->board['name'] . "' AND `threadid` = '" . $thread_replyto . "'");
if ($viewing_thread_is_watched > 0) {
$newestreplyid = $tc_db->GetOne('SELECT `id` FROM `'.KU_DBPREFIX.'posts` WHERE `boardid` = ' . $board_class->board['id'] . ' AND `IS_DELETED` = 0 AND `parentid` = '.$thread_replyto.' ORDER BY `id` DESC LIMIT 1');
$tc_db->Execute("UPDATE `" . KU_DBPREFIX . "watchedthreads` SET `lastsawreplyid` = " . $newestreplyid . " WHERE `ip` = '" . $_SERVER['REMOTE_ADDR'] . "' AND `board` = '" . $board_class->board['name'] . "' AND `threadid` = '" . $thread_replyto . "'");
}
}
$tc_db->Execute("COMMIT");
// Trim any threads which have been pushed past the limit, or exceed the maximum age limit
TrimToPageLimit($board_class->board);
// Regenerate board pages
$board_class->RegeneratePages();
if ($thread_replyto == '0') {
// Regenerate the thread
$board_class->RegenerateThreads($post_id);
} else {
// Regenerate the thread
$board_class->RegenerateThreads($thread_replyto);
}
} else {
exitWithErrorPage(_gettext('Sorry, this board is locked and can not be posted in.'));
}
} elseif ((isset($_POST['deletepost']) || isset($_POST['reportpost']) || isset($_POST['moddelete'])) && isset($_POST['post'])) {
$ismod = false;
// Initialize the post class
foreach ($_POST['post'] as $val) {
$post_class = new Post($val, $board_class->board['name'], $board_class->board['id']);
if (isset($_POST['reportpost'])) {
// They clicked the Report button
if ($board_class->board['enablereporting'] == 1) {
$post_reported = $post_class->post['isreported'];
if ($post_reported === 'cleared') {
echo _gettext('That post has been cleared as not requiring any deletion.') . '<br />';
} elseif ($post_reported) {
echo _gettext('That post is already in the report list.') . '<br />';
} else {
if ($post_class->Report()) {
echo _gettext('Post successfully reported.') . '<br />';
} else {
echo _gettext('Unable to report post. Please go back and try again.') . '<br />';
}
}
} else {
echo _gettext('This board does not allow post reporting.') . '<br />';
}
} elseif (isset($_POST['postpassword']) || ( isset($_POST['moddelete']) && (require_once KU_ROOTDIR . 'inc/classes/manage.class.php') && Manage::CurrentUserIsModeratorOfBoard($board_class->board['name'], $_SESSION['manageusername']) && $ismod = true)) {
// They clicked the Delete button
if ($_POST['postpassword'] != '' || $ismod) {
if (md5($_POST['postpassword']) == $post_class->post['password'] || $ismod) {
if (isset($_POST['fileonly'])) {
if ($post_class->post['file'] != '' && $post_class->post['file'] != 'removed') {
$post_class->DeleteFile();
$board_class->RegeneratePages();
if ($post_class->post['parentid'] != 0) {
$board_class->RegenerateThreads($post_class->post['parentid']);
}
echo _gettext('Image successfully deleted from your post.') . '<br />';
} else {
echo _gettext('Your post already doesn\'t have an image!') . '<br />';
}
} else {
if ($post_class->Delete()) {
if ($post_class->post_parentid != '0') {
$board_class->RegenerateThreads($post_class->post['parentid']);
}
$board_class->RegeneratePages();
echo _gettext('Post successfully deleted.') . '<br />';
} else {
echo _gettext('There was an error in trying to delete your post') . '<br />';
}
}
} else {
echo _gettext('Incorrect password.') . '<br />';
}
} else {
do_redirect(KU_BOARDSPATH . '/' . $board_class->board['name'] . '/');
}
}
}
do_redirect(KU_BOARDSPATH . '/' . $board_class->board['name'] . '/');
die();
} elseif (isset($_GET['postoek'])) {
$board_class->OekakiHeader($_GET['replyto'], $_GET['postoek']);
die();
} else {
do_redirect(KU_BOARDSPATH . '/' . $board_class->board['name'] . '/');
}
if (KU_RSS) {
require_once KU_ROOTDIR . 'inc/classes/rss.class.php';
$rss_class = new RSS();
print_page(KU_BOARDSDIR.$_POST['board'].'/rss.xml',$rss_class->GenerateRSS($_POST['board'], $board_class->board['id']),$_POST['board']);
}
if ($board_class->board['redirecttothread'] == 1 || $_POST['em'] == 'return' || $_POST['em'] == 'noko') {
if ($thread_replyto == "0") {
do_redirect(KU_BOARDSPATH . '/' . $board_class->board['name'] . '/res/' . $post_id . '.html', true, $imagefile_name);
} else {
do_redirect(KU_BOARDSPATH . '/' . $board_class->board['name'] . '/res/' . $thread_replyto . '.html', true, $imagefile_name);
}
} else {
do_redirect(KU_BOARDSPATH . '/' . $board_class->board['name'] . '/', true, $imagefile_name);
}
?>
+1
View File
@@ -0,0 +1 @@
[ edit this ]
+133
View File
@@ -0,0 +1,133 @@
<?php
/*
* This file is part of kusaba.
*
* kusaba is free software; you can redistribute it and/or modify it under the
* terms of the GNU General Public License as published by the Free Software
* Foundation; either version 2 of the License, or (at your option) any later
* version.
*
* kusaba is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
* A PARTICULAR PURPOSE. See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along with
* kusaba; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
/**
* Captcha display
*
* Generates a random word and stores it in a session variable, which is later used as a verification that the poster is in fact a human
*
* @package kusaba
*/
/**
* Start the session
*/
session_start();
$preconfig_db_unnecessary = true;
/**
* Require the configuration file
*/
require 'config.php';
/*
* File: CaptchaSecurityImages.php
* Author: Simon Jarvis
* Copyright: 2006 Simon Jarvis
* Date: 03/08/06
* Updated: 07/02/07
* Requirements: PHP 4/5 with GD and FreeType libraries
* Link: http://www.white-hat-web-design.co.uk/articles/php-captcha.php
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details:
* http://www.gnu.org/licenses/gpl.html
*
*/
/**
* Captcha image class
*
* @package kusaba
*/
class CaptchaSecurityImages {
function CaptchaSecurityImages($width='120',$height='40',$characters='6',$font) {
global $font,$font_ballback;
require_once KU_ROOTDIR . 'inc/classes/randword.class.php';
$randword_class = new Rand_Word;
$code = $randword_class->rand_word($characters);
/* font size will be 75% of the image height */
$font_size = $height * 0.85;
$image = @imagecreate($width, $height) or die('Cannot initialize new GD image stream');
/* set the colours */
$background_color = imagecolorallocate($image, 255, 255, 255);
$text_color = imagecolorallocate($image, 35, 45, 100);
$noise_color = imagecolorallocate($image, 100, 120, 180);
/* generate random dots in background */
if (@imagettfbbox($font_size, 0, $font, $code)) {
$ttf_supported = true;
for( $i=0; $i<($width*$height)/3; $i++ ) {
imagefilledellipse($image, mt_rand(0,$width), mt_rand(0,$height), 1, 1, $noise_color);
}
} else {
$ttf_supported = false;
for( $i=0; $i<($width*$height)/12; $i++ ) {
imagefilledellipse($image, mt_rand(0,$width), mt_rand(0,$height), 1, 1, $noise_color);
}
}
/* generate random lines in background */
if ($ttf_supported) {
for( $i=0; $i<($width*$height)/150; $i++ ) {
imageline($image, mt_rand(0,$width), mt_rand(0,$height), mt_rand(0,$width), mt_rand(0,$height), $noise_color);
}
}
if ($ttf_supported) {
$textbox = imagettfbbox($font_size, 0, $font, $code);
$x = ($width - $textbox[4])/2;
$y = ($height - $textbox[5])/2;
imagettftext($image, $font_size, 0, $x, $y, $text_color, $font, $code);
} else {
$x = 4;
$y = 5;
imagestring($image, $font_ballback, $x, $y, $code, $text_color);
}
/* create textbox and add text*/
$textbox = imagettfbbox($font_size, 0, $font, $code) or die('Error in imagettfbbox function');
$x = ($width - $textbox[4])/2;
$y = ($height - $textbox[5])/2;
imagettftext($image, $font_size, 0, $x, $y, $text_color, $font, $code) or die('Error in imagettftext function');
/*output captcha image to browser */
header('Content-Type: image/jpeg');
imagejpeg($image);
imagedestroy($image);
$_SESSION['security_code'] = $code;
}
}
$width = 90;
$height = 30;
$characters = 6;
$font = KU_ROOTDIR . 'lib/fonts/monofont.ttf';
$font_fallback = imageloadfont(KU_ROOTDIR . 'lib/fonts/captchafont.gdf');
$captcha = new CaptchaSecurityImages($width,$height,$characters,$font);
?>
BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 49 B

+311
View File
@@ -0,0 +1,311 @@
<?php
/*
* This file is part of kusaba.
*
* kusaba is free software; you can redistribute it and/or modify it under the
* terms of the GNU General Public License as published by the Free Software
* Foundation; either version 2 of the License, or (at your option) any later
* version.
*
* kusaba is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
* A PARTICULAR PURPOSE. See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along with
* kusaba; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
/**
* Script configuration
*
* Tells the script what to call itself, where the database and other things are
* located, along with define what features to enable.
*
* @package kusaba
*/
/*
To enable a feature, change the value to true:
define('KU_INSTANTREDIRECT', true);
To disable a feature, change the value to false:
define('KU_INSTANTREDIRECT', false;
To change the text value of a configuration, edit the text in the single quotes:
define('KU_NAME', 'kusaba');
Becomes:
define('KU_NAME', 'Mychan');
Warning: Do not insert single quotes in the value yourself, or else you will cause problems. To overcome this, you use what is called escaping, which is the process of adding a backslash before the single quote, to show it is part of the string:
define('KU_NAME', 'Jason\'s chan');
*/
// Sets error reporting to hide notices.
error_reporting(E_ALL ^ E_NOTICE);
if (!headers_sent()) {
header('Content-Type: text/html; charset=utf-8');
}
$cf = array();
// Caching (this needs to be set at the start because if enabled, it skips the rest of the configuration process)
$cf['KU_APC'] = false;
$cache_loaded = false;
if ($cf['KU_APC']) {
if (apc_load_constants('config')) {
$cache_loaded = true;
}
}
if (!$cache_loaded) {
// Database
$cf['KU_DBTYPE'] = 'mysqli'; // Database type. Valid values are mysql and mysqli (reccomended for mysql).
// PostgreSQL is also supported. Supported values are postgres64, postgres7 and postgres8. Only postgres8 is tested.
// SQLite is also supported. Set to sqlite to use. SQLite will not use any database software, only a single file.
$cf['KU_DBHOST'] = 'localhost'; // Database hostname. On SQLite this has no effect.
$cf['KU_DBDATABASE'] = 'kusaba'; // Database... database. On SQLite this will be the path to your database file. Secure this file.
$cf['KU_DBUSERNAME'] = 'root'; // Database username. On SQLite this has no effect.
$cf['KU_DBPASSWORD'] = ''; // Database password. On SQLite this has no effect.
$cf['KU_DBPREFIX'] = ''; // Database table prefix
$cf['KU_DBUSEPERSISTENT'] = false; // Use persistent connection to database
// Imageboard info
$cf['KU_NAME'] = 'kusaba x'; // The name of your site
$cf['KU_SLOGAN'] = '<em>"slogan!"</em>'; // Site slogan, set to nothing to disable its display
$cf['KU_HEADERURL'] = ''; // Full URL to the header image (or rotation script) to be displayed, can be left blank for no image
$cf['KU_IRC'] = ''; // IRC info, which will be displayed in the menu. Leave blank to remove it
$cf['KU_BANREASON'] = ''; // This is the default ban reason that will automatically fill in the ban reason box
// Paths and URLs
// Main installation directory
$cf['KU_ROOTDIR'] = realpath(dirname(__FILE__))."/"; // Full system path of the folder containing kusaba.php, with trailing slash. The default value set here should be OK.. If you need to change it, you should already know what the full path is anyway.
$cf['KU_WEBFOLDER'] = 'CHANGEME'; // The path from the domain of the board to the folder which kusaba is in, including the trailing slash. Example: "http://www.yoursite.com/misc/kusaba/" would have a $cf['KU_WEBFOLDER'] of "/misc/kusaba/"
$cf['KU_WEBPATH'] = 'CHANGEME'; // The path to the index folder of kusaba, without trailing slash. Example: http://www.yoursite.com
$cf['KU_DOMAIN'] = 'CHANGEME'; // Used in cookies for the domain parameter. Should be a period and then the top level domain, which will allow the cookies to be set for all subdomains. For http://www.randomchan.org, the domain would be .randomchan.org; http://zachchan.freehost.com would be zach.freehost.com
// Board subdomain/alternate directory (optional, change to enable)
// DO NOT CHANGE THESE IF YOU DO NOT KNOW WHAT YOU ARE DOING!!
$cf['KU_BOARDSDIR'] = $cf['KU_ROOTDIR'];
$cf['KU_BOARDSFOLDER'] = $cf['KU_WEBFOLDER'];
$cf['KU_BOARDSPATH'] = $cf['KU_WEBPATH'];
// CGI subdomain/alternate directory (optional, change to enable)
// DO NOT CHANGE THESE IF YOU DO NOT KNOW WHAT YOU ARE DOING!!
$cf['KU_CGIDIR'] = $cf['KU_BOARDSDIR'];
$cf['KU_CGIFOLDER'] = $cf['KU_BOARDSFOLDER'];
$cf['KU_CGIPATH'] = $cf['KU_BOARDSPATH'];
// Coralized URLs (optional, change to enable)
$cf['KU_WEBCORAL'] = ''; // Set to the coralized version of your webpath to enable. If not set to '', URLs which can safely be cached will be coralized, and will use the Coral Content Distribution Network. Example: http://www.kusaba.org becomes http://www.kusaba.org.nyud.net, http://www.crapchan.org/kusaba becomes http://www.crapchan.org.nyud.net/kusaba
$cf['KU_BOARDSCORAL'] = '';
// Templates
$cf['KU_TEMPLATEDIR'] = $cf['KU_ROOTDIR'] . 'dwoo/templates'; // Dwoo templates directory
$cf['KU_CACHEDTEMPLATEDIR'] = $cf['KU_ROOTDIR'] . 'dwoo/templates_c'; // Dwoo compiled templates directory. This folder MUST be writable (you may need to chmod it to 755). Set to '' to disable template caching
// CSS styles
$cf['KU_STYLES'] = 'burichan:futaba'; // Styles which are available to be used for the boards, separated by colons, in lower case. These will be displayed next to [Home] [Manage] if KU_STYLESWIKUHER is set to true
$cf['KU_DEFAULTSTYLE'] = 'futaba'; // If Default is selected in the style list in board options, it will use this style. Should be lower case
$cf['KU_STYLESWITCHER'] = true; // Whether or not to display the different styles in a clickable switcher at the top of the board
$cf['KU_DROPSWITCHER'] = false; // Whether or not to use a dropdown style switcher. False is use plaintext switcher, true is dropdown.
$cf['KU_TXTSTYLES'] = 'futatxt:buritxt'; // Styles which are available to be used for the boards, separated by colons, in lower case
$cf['KU_DEFAULTTXTSTYLE'] = 'futatxt'; // If Default is selected in the style list in board options, it will use this style. Should be lower case
$cf['KU_TXTSTYLESWITCHER'] = true; // Whether or not to display the different styles in a clickable switcher at the top of the board
$cf['KU_MENUTYPE'] = 'normal'; // Type of display for the menu. normal will add the menu styles and such as it normally would, plain will not use the styles, and will look rather boring
$cf['KU_MENUSTYLES'] = 'futaba:burichan'; // Menu styles
$cf['KU_DEFAULTMENUSTYLE'] = 'futaba'; // Default menu style
$cf['KU_MENUSTYLESWITCHER'] = true; // Whether or not to display the different styles in a clickable switcher in the menu
// Limitations
$cf['KU_NEWTHREADDELAY'] = 30; // Minimum time in seconds a user must wait before posting a new thread again
$cf['KU_REPLYDELAY'] = 7; // Minimum time in seconds a user must wait before posting a reply again
$cf['KU_LINELENGTH'] = 150; // Used when cutting long post messages on pages and placing the message too long notification
// Image handling
$cf['KU_THUMBWIDTH'] = 200; // Maximum thumbnail width
$cf['KU_THUMBHEIGHT'] = 200; // Maximum thumbnail height
$cf['KU_REPLYTHUMBWIDTH'] = 125; // Maximum thumbnail width (reply)
$cf['KU_REPLYTHUMBHEIGHT'] = 125; // Maximum thumbnail height (reply)
$cf['KU_CATTHUMBWIDTH'] = 50; // Maximum thumbnail width (catalog)
$cf['KU_CATTHUMBHEIGHT'] = 50; // Maximum thumbnail height (catalog)
$cf['KU_THUMBMETHOD'] = 'gd'; // Method to use when thumbnailing images in jpg, gif, or png format. Options available: gd, imagemagick
$cf['KU_ANIMATEDTHUMBS'] = false; // Whether or not to allow animated thumbnails (only applies if using imagemagick)
// Post handling
$cf['KU_NEWWINDOW'] = true; // When a user clicks a thumbnail, whether to open the link in a new window or not
$cf['KU_MAKELINKS'] = true; // Whether or not to turn http:// links into clickable links
$cf['KU_NOMESSAGETHREAD'] = ''; // Text to set a message to if a thread is made with no text
$cf['KU_NOMESSAGEREPLY'] = ''; // Text to set a message to if a reply is made with no text
// Post display
$cf['KU_THREADS'] = 10; // Number of threads to display on a board page
$cf['KU_THREADSTXT'] = 15; // Number of threads to display on a text board front page
$cf['KU_REPLIES'] = 3; // Number of replies to display on a board page
$cf['KU_REPLIESSTICKY'] = 1; // Number of replies to display on a board page when a thread is stickied
$cf['KU_THUMBMSG'] = false; // Whether or not to display the "Thumbnail displayed, click image for full size." message on posts with images
$cf['KU_BANMSG'] = '<br /><font color="#FF0000"><b>(USER WAS BANNED FOR THIS POST)</b></font>'; // The text to add at the end of a post if a ban is placed and "Add ban message" is checked
$cf['KU_TRADITIONALREAD'] = false; // Whether or not to use the traditional style for multi-quote urls. Traditional: read.php/board/thread/posts, Non-traditional: read.php?b=board&t=thread&p=posts
$cf['KU_YOUTUBEWIDTH'] = 200; // Width to display embedded YouTube videos
$cf['KU_YOUTUBEHEIGHT'] = 164; // Height to display embedded YouTube videos
// Pages
$cf['KU_FIRSTPAGE'] = 'board.html'; // Filename of the first page of a board. Only change this if you are willing to maintain the .htaccess files for each board directory (they are created with a DirectoryIndex board.html, change them if you change this)
$cf['KU_DIRTITLE'] = false; // Whether or not to place the board directory in the board's title and at the top of the page. true would render as "/b/ - Random", false would render as "Random"
// File tagging
$cf['KU_TAGS'] = array('Japanese' => 'J',
'Anime' => 'A',
'Game' => 'G',
'Loop' => 'L',
'Other' => '*'); // Used only in Upload imageboards. These are the tags which a user may choose to use as they are posting a file. If you wish to disable tagging on Upload imageboards, set this to ''
// Special Tripcodes
$cf['KU_TRIPS'] = array('#changeme' => 'changeme',
'#changeme2' => 'changeme2'); // Special tripcodes which can have a predefined output. Do not include the initial ! in the output. Maximum length for the output is 30 characters. Set to array(); to disable
// Extra features
$cf['KU_RSS'] = true; // Whether or not to enable the generation of rss for each board and modlog
$cf['KU_EXPAND'] = true; // Whether or not to add the expand button to threads viewed on board pages
$cf['KU_QUICKREPLY'] = true; // Whether or not to add quick reply links on posts
$cf['KU_WATCHTHREADS'] = true; // Whether or not to add thread watching capabilities
$cf['KU_FIRSTLAST'] = true; // Whether or not to generate extra files for the first 100 posts/last 50 posts
$cf['KU_BLOTTER'] = true; // Whether or not to enable the blotter feature
$cf['KU_SITEMAP'] = false; // Whether or not to enable automatic sitemap generation (you will still need to link the search engine sites to the sitemap.xml file)
$cf['KU_APPEAL'] = false; // Whether or not to enable the appeals system
// Misc config
$cf['KU_MODLOGDAYS'] = 7; // Days to keep modlog entries before removing them
$cf['KU_RANDOMSEED'] = 'ENTER RANDOM LETTERS/NUMBERS HERE'; // Type a bunch of random letters/numbers here, any large amount (35+ characters) will do
$cf['KU_STATICMENU'] = false; // Whether or not to generate the menu files as static files, instead of linking to menu.php. Enabling this will reduce load, however some users have had trouble with getting the files to generate
$cf['KU_GENERATEBOARDLIST'] = true; // Set to true to automatically make the board list which is displayed ad the top and bottom of the board pages, or false to use the boards.html file
// Language / timezone / encoding
$cf['KU_LOCALE'] = 'en'; // The locale of kusaba you would like to use. Locales available: en, de, et, es, fi, pl, nl, nb, ro, ru, it, ja
$cf['KU_CHARSET'] = 'UTF-8'; // The character encoding to mark the pages as. This must be the same in the .htaccess file (AddCharset charsethere .html and AddCharset charsethere .php) to function properly. Only UTF-8 and Shift_JIS have been tested
putenv('TZ=US/Pacific'); // The time zone which the server resides in
$cf['KU_DATEFORMAT'] = 'd/m/y(D)H:i';
// Debug
$cf['KU_DEBUG'] = false; // When enabled, debug information will be printed (Warning: all queries will be shown publicly)
// Post-configuration actions, don't modify these
$cf['KU_VERSION'] = '0.9';
$cf['KU_TAGS'] = serialize($cf['KU_TAGS']);
$cf['KU_TRIPS'] = serialize($cf['KU_TRIPS']);
$cf['KU_LINELENGTH'] = $cf['KU_LINELENGTH'] * 15;
if (substr($cf['KU_WEBFOLDER'], -2) == '//') { $cf['KU_WEBFOLDER'] = substr($cf['KU_WEBFOLDER'], 0, -1); }
if (substr($cf['KU_BOARDSFOLDER'], -2) == '//') { $cf['KU_BOARDSFOLDER'] = substr($cf['KU_BOARDSFOLDER'], 0, -1); }
if (substr($cf['KU_CGIFOLDER'], -2) == '//') { $cf['KU_CGIFOLDER'] = substr($cf['KU_CGIFOLDER'], 0, -1); }
$cf['KU_WEBPATH'] = trim($cf['KU_WEBPATH'], '/');
$cf['KU_BOARDSPATH'] = trim($cf['KU_BOARDSPATH'], '/');
$cf['KU_CGIPATH'] = trim($cf['KU_CGIPATH'], '/');
if ($cf['KU_APC']) {
apc_define_constants('config', $cf);
}
while (list($key, $value) = each($cf)) {
define($key, $value);
}
unset($cf);
}
// DO NOT MODIFY BELOW THIS LINE UNLESS YOU KNOW WHAT YOU ARE DOING OR ELSE BAD THINGS MAY HAPPEN
$modules_loaded = array();
$required = array(KU_ROOTDIR, KU_WEBFOLDER, KU_WEBPATH);
if (in_array('CHANGEME', $required) || in_array('', $required)){
echo 'You must set KU_ROOTDIR, KU_WEBFOLDER, and KU_WEBPATH before installation will finish!';
die();
}
require KU_ROOTDIR . 'lib/gettext/gettext.inc.php';
require KU_ROOTDIR . 'lib/adodb/adodb.inc.php';
// Gettext
_textdomain('kusaba');
_setlocale(LC_ALL, KU_LOCALE);
_bindtextdomain('kusaba', KU_ROOTDIR . 'inc/lang');
_bind_textdomain_codeset('kusaba', KU_CHARSET);
// SQL database
if (!isset($tc_db) && !isset($preconfig_db_unnecessary)) {
$tc_db = &NewADOConnection(KU_DBTYPE);
if (KU_DBUSEPERSISTENT) {
$tc_db->PConnect(KU_DBHOST, KU_DBUSERNAME, KU_DBPASSWORD, KU_DBDATABASE) or die('SQL database connection error: ' . $tc_db->ErrorMsg());
} else {
$tc_db->Connect(KU_DBHOST, KU_DBUSERNAME, KU_DBPASSWORD, KU_DBDATABASE) or die('SQL database connection error: ' . $tc_db->ErrorMsg());
}
// SQL debug
if (KU_DEBUG) {
$tc_db->debug = true;
}
$results_events = $tc_db->GetAll("SELECT * FROM `" . KU_DBPREFIX . "events` WHERE `at` <= " . time());
if (count($results_events) > 0) {
if ($tc_db->ErrorMsg() == '') {
foreach($results_events AS $line_events) {
if ($line_events['name'] == 'sitemap') {
$tc_db->Execute("UPDATE `" . KU_DBPREFIX . "events` SET `at` = " . (time() + 21600) . " WHERE `name` = 'sitemap'");
if (KU_SITEMAP) {
$sitemap = '<?xml version="1.0" encoding="UTF-8"?' . '>' . "\n" .
'<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">' . "\n" . "\n";
$results = $tc_db->GetAll("SELECT `name`, `id` FROM `" . KU_DBPREFIX . "boards` ORDER BY `name` ASC");
if (count($results) > 0) {
foreach($results AS $line) {
$sitemap .= ' <url>' . "\n" .
' <loc>' . KU_BOARDSPATH . '/' . $line['name'] . '/</loc>' . "\n" .
' <lastmod>' . date('Y-m-d') . '</lastmod>' . "\n" .
' <changefreq>hourly</changefreq>' . "\n" .
' </url>' . "\n";
$results2 = $tc_db->GetAll("SELECT `id`, `bumped` FROM `" . KU_DBPREFIX . "posts` WHERE `boardid` = " . $line['id'] . " AND `parentid` = 0 AND `IS_DELETED` = 0 ORDER BY `bumped` DESC");
if (count($results2) > 0) {
foreach($results2 AS $line2) {
$sitemap .= ' <url>' . "\n" .
' <loc>' . KU_BOARDSPATH . '/' . $line['name'] . '/res/' . $line2['id'] . '.html</loc>' . "\n" .
' <lastmod>' . date('Y-m-d', $line2['bumped']) . '</lastmod>' . "\n" .
' <changefreq>hourly</changefreq>' . "\n" .
' </url>' . "\n";
}
}
}
}
$sitemap .= '</urlset>';
$fp = fopen(KU_BOARDSDIR . 'sitemap.xml', 'w');
fwrite($fp, $sitemap);
fclose($fp);
unset($sitemap, $fp);
}
}
}
}
unset($results_events, $line_events);
}
}
function stripslashes_deep($value)
{
$value = is_array($value) ?
array_map('stripslashes_deep', $value) :
stripslashes($value);
return $value;
}
// Thanks Z
if (get_magic_quotes_gpc()) {
$_POST = array_map('stripslashes_deep', $_POST);
$_GET = array_map('stripslashes_deep', $_GET);
$_COOKIE = array_map('stripslashes_deep', $_COOKIE);
}
if (get_magic_quotes_runtime()) {
set_magic_quotes_runtime(0);
}
?>
BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 856 B

+196
View File
@@ -0,0 +1,196 @@
html, body {
font-size:12pt;
background:#EEF2FF;
color:#000000;
}
a {
background:inherit;
color:#34345C;
text-decoration:none;
font-family:sans-serif;
}
a:visited {
background:inherit;
color:#34345C;
text-decoration:none;
font-family:sans-serif;
}
a:hover {
color:#DD0000;
background:inherit;
font-family:sans-serif;
}
.filesize a {
text-decoration:underline;
}
.filesize a:visited {
text-decoration:underline;
}
.adminbar {
text-align:right;
background:inherit;
clear:both;
float:right;
}
.logo {
clear:both;
text-align:center;
background:inherit;
font-size:24pt;
color:#AF0A0F;
width:100%;
}
.replymode {
background:#0010E0;
color:#FFFFFF;
width:100%;
}
.catalogmode {
background:#0040E0;
color:#FFFFFF;
width:100%;
}
.postarea {
background:inherit;
}
.rules {
/*font-size:0.7em;*/
width: 468px;
font-size: 10px;
font-family: sans-serif;
}
.rules li {
margin-left: 1em;
/*text-indent: 0em;*/
}
.postblock {
background:#9988EE;
color:#000000;
font-weight:800;
}
.footer {
text-align:center;
font-size:10px;
font-family:sans-serif;
}
.passvalid {
background:#9988EE;
text-align:center;
width:100%;
color:#ffffff;
}
.dellist {
background:inherit;
text-align:center;
}
.delbuttons {
background:inherit;
text-align:center;
padding-bottom:4px;
}
.managehead {
background:#0F8FE1;
color:#000000;
font-family:sans-serif;
font-size:14px;
padding:0px;
}
.postlists {
background:#FFFFFF;
width:100%;
padding:0px;
color:#000000;
}
.row1 {
background:#9AD2F6;
font-family:sans-serif;
font-size:12px;
color:#000000;
}
.row2 {
background:#FFFFFF;
font-family:sans-serif;
font-size:12px;
color:#000000;
}
.unkfunc {
color:#789922;
}
.filesize {
font-size:12px;
font-family:sans-serif;
text-decoration:underline;
padding-left:3em;
}
.filetitle {
background:inherit;
font-size:18px;
font-family:serif;
color:#0F0C5D;
font-weight:800;
}
.postername {
background:inherit;
font-size:12px;
font-family:serif;
color:#117743;
font-weight:800;
}
.oldpost {
background:inherit;
font-size:18px;
font-family:serif;
color:#0F0C5D;
font-weight:800;
}
.omittedposts {
background:inherit;
font-size:18px;
font-family:serif;
color:#070707;
font-weight:800;
}
.reply {
background:#D6DAF0;
color:#000000;
font-family:serif;
}
.replyhl {
background: #D6BAD0;
color: #000000;
}
.doubledash {
vertical-align:top;
clear:both;
float:left;
}
.replytitle {
background:inherit;
font-size:18px;
font-family:serif;
color:#0F0C5D;
font-weight:800;
}
.commentpostername {
background:inherit;
font-size:12px;
font-family:serif;
color:#117743;
font-weight:800;
}
.thumbnailmsg {
background:inherit;
font-size:9px;
font-family:sans-serif;
color:#000000;
}
.watchedthreads {
background-color: #D6DAF0 !important;
border: 1px dotted #D6DAF0 !important;
border-top: 0px none !important;
}
.reflinkpreview {
background-color: #D6DAF0 !important;
}
+135
View File
@@ -0,0 +1,135 @@
html, body {
font-size:10pt;
background:#FFFFFF;
color:#000000;
}
* {
font-family: "Trebuchet MS", Tahoma, Verdana, Arial, sans-serif;
font-size: 10pt;
}
input, textarea {
background-color: #DCDDDE;
border: 1px solid #919191;
}
a {
background:inherit;
color:#000000;
}
a:visited {
background:inherit;
color:#212121;
}
a:hover {
color:#212121;
background:inherit;
}
a.quotelink {
background:inherit;
color:#404040;
}
.logo {
clear:both;
text-align:center;
background:inherit;
font-size:24pt;
color:#000000;
width:100%;
}
.postarea {
background:inherit;
}
.postblock {
background: #919191;
border: 1px solid #000000;
color: black;
font-weight: bold;
padding: 2px 5px 2px 5px;
}
.footer {
text-align:center;
font-size:12px;
}
.unkfunc {
background:inherit;
color:#BFBFBF;
}
.filesize {
text-decoration:none;
}
.filetitle {
background:inherit;
color:#404040;
font-weight:800;
}
.postername {
background:inherit;
font-size:11pt;
color:#737373;
font-weight: bold;
}
.postertrip {
background:inherit;
color:#000000;
}
.oldpost {
background:inherit;
color:#404040;
font-weight:800;
}
.omittedposts {
background:inherit;
color:#070707;
}
.reply {
background:#DCDDDC;
color:#000000;
border:1px solid #919191;
}
.replyhl {
background:#BFBFBF;
color:#000000;
}
.doubledash {
vertical-align:top;
clear:both;
float:left;
}
.replytitle {
background:inherit;
font-size:18px;
color:#FFFFFF;
font-weight:800;
}
.commentpostername {
background:inherit;
font-size:11pt;
color:#737373;
font-weight: bold;
}
a.quotejs {
color:#000000;
text-decoration: none;
}
a.quotejs:hover {
font-weight:bold;
}
.adminbar {
text-align: left;
}
hr {
border-style: solid none none none;
border-width: 1px;
border-color: #000000;
}
#watchedthreads {
background-color: #DCDDDC !important;
border: 1px solid #919191 !important;
border-top: 0px none !important;
}
.reflinkpreview {
background-color: #DCDDDC !important;
}
+129
View File
@@ -0,0 +1,129 @@
html, body {
font-size:10pt;
background:#EDDAD2;
color:#000000;
}
* {
font-family: "Trebuchet MS", Tahoma, Verdana, Arial, sans-serif;
font-size: 10pt;
}
input, textarea {
background-color: #E6CBC0;
border: 1px solid #CA927B;
}
a {
background:inherit;
color:#34345C;
}
a:visited {
background:inherit;
color:#34345C;
}
a:hover {
color:#DD0000;
background:inherit;
}
a.quotelink {
background:inherit;
color:#DD0000;
}
.logo {
clear:both;
text-align:center;
background:inherit;
font-size:24pt;
color:#AF0A0F;
width:100%;
}
.postarea {
background:inherit;
}
.postblock {
background: #D9AF9E;
border: 1px solid #CA927B;
color: black;
font-weight: bold;
padding: 2px 5px 2px 5px;
}
.footer {
text-align:center;
font-size:12px;
}
.unkfunc {
background:inherit;
color:#789922;
}
.filesize {
text-decoration:none;
}
.filetitle {
background:inherit;
color:#0F0C5D;
font-weight:800;
}
.postername {
background:inherit;
font-size:11pt;
color:#117743;
font-weight: bold;
}
.postertrip {
background:inherit;
color:#228854;
}
.oldpost {
background:inherit;
color:#0F0C5D;
font-weight:800;
}
.omittedposts {
background:inherit;
color:#070707;
}
.reply {
background:#D9AF9E;
color:#000000;
border:1px solid #CA927B;
}
.replyhl {
background: #D6BAD0;
color: #000000;
}
.doubledash {
vertical-align:top;
clear:both;
float:left;
}
.replytitle {
background:inherit;
font-size:18px;
color:#0F0C5D;
font-weight:800;
}
.commentpostername {
background:inherit;
font-size:11pt;
color:#117743;
font-weight: bold;
}
a.quotejs {
color:#000000;
text-decoration: none;
}
a.quotejs:hover {
font-weight:bold;
}
.adminbar {
text-align: center;
}
#watchedthreads {
background-color: #D9AF9E !important;
border: 1px solid #CA927B !important;
border-top: 0px none !important;
}
.reflinkpreview {
background-color: #D9AF9E !important;
}
+188
View File
@@ -0,0 +1,188 @@
/*
This css file was created by Harrison for 24chan.org. Use anywhere else without permission is prohibited.
Contact: HarrisonHopkins@Gmail.com
*/
html, body {
background:#000;
color:#FFF;
}
a {
color:#888;
text-decoration: none;
}
a:hover {
color:#888;
}
.reflink a:hover{
font-weight: bold;
}
input, textarea {
background-color: #000;
color: #fff;
border: 1px solid #CCC;
}
input:focus, textarea:focus
{
background-color: #444;
}
.adminbar {
text-align:right;
clear:both;
float:right;
font-size: 13px;
}
.navbar {
font-size: 13px;
}
.logo {
clear:both;
text-align:center;
font-size:2em;
color:#FFF;
width:100%;
}
.replymode {
background:#AAA;
text-align:center;
padding:2px;
color:#000;
width:100%;
}
.catalogmode {
background:#0040E0;
text-align:center;
padding:2px;
color:#FFFFFF;
width:100%;
}
.postarea {
}
.rules {
/*font-size:0.7em;*/
width: 468px;
font-size: 10px;
font-family: sans-serif;
}
.rules li {
margin-left: 1em;
/*text-indent: 0em;*/
}
.postblock {
background:#444;
color:#CCC;
font-weight:800;
text-align: left;
padding-left: 3px;
padding-right: 3px;
border: 1px solid #666;
}
.footer {
text-align:center;
font-size:12px;
font-family:serif;
}
.passvalid {
background:#444;
text-align:center;
width:100%;
color:#ffffff;
}
.dellist {
font-weight: bold;
text-align:center;
}
.delbuttons {
text-align:center;
padding-bottom:4px;
}
.managehead {
background:#AAAA66;
color:#400000;
padding:0px;
}
.postlists {
background:#FFFFFF;
width:100%;
padding:0px;
color:#FFF;
}
.row1 {
background:#EEEECC;
color:#FFF;
}
.row2 {
background:#DDDDAA;
color:#FFF;
}
.unkfunc {
background:inherit;
color:#789922;
}
.filesize {
text-decoration:none;
}
.filetitle {
background:inherit;
font-size:1.2em;
color:#CC1105;
font-weight:800;
}
.postername {
color:#CCC;
font-weight:bold;
}
.postertrip {
color:#CCC;
}
.oldpost {
color:#CC1105;
font-weight:800;
}
.omittedposts {
color:#707070;
}
.reply {
background: #444;
color: #FFF;
-moz-border-radius: 5px;
-webkit-border-radius: 5px;
padding: 5px;
}
.replyhl {
background: #F0C0B0;
color: #FFF;
}
.doubledash {
vertical-align:top;
clear:both;
float:left;
}
.replytitle {
font-size: 1.2em;
color:#CC1105;
font-weight:800;
}
.commentpostername {
color:#117743;
font-weight:800;
}
.thumbnailmsg {
font-size: small;
color:#FFF;
}
.abbrev {
color:#707070;
}
.highlight {
background:#444;
color:#FFF;
border: 2px dashed #FFF;
}
#watchedthreads {
background-color: #444 !important;
}
.reflinkpreview {
background-color: #444 !important;
}
+232
View File
@@ -0,0 +1,232 @@
html, body {
font-size:12pt;
background:#EEFFEE;
color:#000000;
}
a {
background:inherit;
color:#345C34;
text-decoration:none;
font-family:sans-serif;
}
a:visited {
background:inherit;
color:#345C34;
text-decoration:none;
font-family:sans-serif;
}
a:hover {
color:#117743;
background:inherit;
text-decoration:underline;
font-family:sans-serif;
}
.adminbar {
text-align:right;
background:inherit;
clear:both;
float:right;
}
.logo {
clear:both;
text-align:center;
background:inherit;
font-size:24pt;
color:#117743;
width:100%;
}
.theader {
background:#00E010;
color:#FFFFFF;
width:100%;
}
.postarea {
background:inherit;
}
.rules {
font-size:10px;
font-family:sans-serif;
}
.postblock {
background:#88DD88;
color:#000000;
font-weight:800;
}
.footer {
text-align:center;
font-size:10px;
font-family:sans-serif;
}
.passvalid {
background:#99EE88;
text-align:center;
width:100%;
color:#ffffff;
}
.dellist {
background:inherit;
text-align:center;
}
.delbuttons {
background:inherit;
text-align:center;
padding-bottom:4px;
}
.managehead {
background:#0FE18F;
color:#000000;
font-family:sans-serif;
font-size:14px;
padding:0px;
}
.postlists {
background:#FFFFFF;
width:100%;
padding:0px;
color:#000000;
}
.row1 {
background:#9AF6D2;
font-family:sans-serif;
font-size:12px;
color:#000000;
}
.row2 {
background:#FFFFFF;
font-family:sans-serif;
font-size:12px;
color:#000000;
}
.unkfunc {
color:#117743;
}
.filesize {
font-size:12px;
font-family:sans-serif;
text-decoration:underline;
padding-left:3em;
}
.filetitle {
background:inherit;
font-size:18px;
font-family:serif;
color:#0F5D0C;
font-weight:800;
}
.postername {
background:inherit;
font-family:serif;
color:#117743;
font-weight:bold;
}
.postername a {
font-family:inherit;
}
.oldpost {
background:inherit;
font-size:18px;
font-family:serif;
color:#0F5D0C;
font-weight:800;
}
.omittedposts {
background:inherit;
font-size:18px;
font-family:serif;
color:#070707;
font-weight:800;
}
.reply {
background:#DAF0D6;
color:#000000;
font-family:serif;
}
.doubledash {
vertical-align:top;
clear:both;
float:left;
}
.replytitle {
background:inherit;
font-size:18px;
font-family:serif;
color:#0F5D0C;
font-weight:800;
}
.commentpostername {
background:inherit;
font-size:12px;
font-family:serif;
color:#117743;
font-weight:800;
}
.thumbnailmsg {
background:inherit;
font-size:9px;
font-family:sans-serif;
color:#000000;
}
.highlight {
background: #88DD88;
border: 2px dashed #117743;
}
#watchedthreads {
background-color: #DAF0D6 !important;
border: 1px solid #88DD88 !important;
}
.replymode {
background:#DAF0D6;
text-align:center;
padding:2px;
color:#000000;
width:100%;
font-weight: bold;
}
.catalogmode {
background:#88DD88;
text-align:center;
padding:2px;
color:#000000;
width:100%;
font-weight: bold;
}
.hidethread {
background: transparent url('./icons/green/icons.gif') -32px -16px no-repeat;
}
.unhidethread {
background: transparent url('./icons/green/icons.gif') -48px 0px no-repeat;
}
.watchthread {
background: transparent url('./icons/green/icons.gif') -32px 0px no-repeat;
}
.expandthread {
background: transparent url('./icons/green/icons.gif') 0px -16px no-repeat;
}
.quickreply {
background: transparent url('./icons/green/icons.gif') 0px 0px no-repeat;
}
.hidewatchedthreads {
background: transparent url('./icons/green/icons.gif') -48px -16px no-repeat;
}
.refreshwatchedthreads {
background: transparent url('./icons/green/icons.gif') -16px -16px no-repeat;
}
.restorewatchedthreads {
background: transparent url('./icons/green/icons.gif') -16px 0px no-repeat;
}
.reflinkpreview {
background-color: #DAF0D6 !important;
}
+171
View File
@@ -0,0 +1,171 @@
html, body {
background-color: #EEEEEE;
color: #333333;
font-family: "Trebuchet MS",Trebuchet,serif;
}
a {
color: #FF6600;
}
a:hover {
color: #0066FF;
}
.adminbar {
clear:both;
float:right;
font-size: .8em;
}
.adminbar a {
font-weight: bold;
}
.logo {
clear:both;
text-align:left;
font-size:2em;
font-weight: bold;
color:#FF6600;
}
.theader, .passvalid, .replymode {
background:#DDDDDD;
text-align:center;
padding:2px;
color:#2266AA;
clear: both;
font-weight: bold;
margin-bottom: .5em;
border: solid 1px #CCCCCC;
-moz-border-radius: 5px;
}
.rules {
font-size:0.7em;
}
.postblock {
background:transparent;
color:#002244;
font-weight:bold;
}
.footer {
text-align:center;
font-size:12px;
font-family:serif;
margin: 2em 0 0 0;
}
.dellist {
font-weight: bold;
text-align:center;
}
.delbuttons {
text-align:center;
padding-bottom:4px;
}
.managehead {
background:#DDDDDD;
color:#002244;
padding:0px;
}
.postlists {
background:#FFFFFF;
width:100%;
padding:0px;
color:#800000;
}
.row1 {
background:#DDDDDD;
color:#002244;
}
.row2 {
background:#CCCCCC;
color:#002244;
}
.unkfunc {
background:inherit;
color:#789922;
}
.reflink {
font-size: .8em;
font-weight: bold;
}
.filesize {
text-decoration:none;
color: #666666;
font-size: .8em;
}
.filetitle {
background:inherit;
font-size:1.2em;
color:#002244;
font-weight:bold;
}
.postername {
color:#004A99;
font-weight:bold;
}
.postertrip {
color:#FF3300;
}
.oldpost {
color:#CC1105;
font-weight:bold;
}
.omittedposts {
color:#666666;
}
.reply {
background:#DDDDDD;
border: solid 1px #CCCCCC;
padding: 0;
margin: 0;
-moz-border-radius: 5px;
}
blockquote {
margin: .5em .5em .5em 1em;
}
blockquote p {
margin: 0;
padding: 0;
}
.reply blockquote {
margin: .5em;
}
.doubledash {
display: none;
vertical-align:top;
clear:both;
float:left;
}
.replytitle {
font-size: 1.2em;
color:#002244;
font-weight:bold;
}
.commentpostername {
color:#004A99;
font-weight:800;
}
.thumbnailmsg {
font-size: .8em;
color:#666666;
}
hr {
border-style: solid none none none;
border-width: 1px;
border-color: #BBBBBB;
}
table {
border-style: none;
}
table td {
border-style: none;
}
.nothumb {
background-color: #FFFFFF;
border-style: dotted;
margin: .3em .5em;
}
.abbrev {
color:#666666;
}
.highlight {
background:#EEDACB;
color:#333333;
border: 2px dashed #EE6600;
}
+142
View File
@@ -0,0 +1,142 @@
/*
This css file was created by Harrison for 24chan.org. Use anywhere else without permission is prohibited.
Contact: HarrisonHopkins@Gmail.com
*/
body {
font-family: sans-serif;
background: #000;
color: #FFF;
margin: 0;
font-size: 75%;
width: 90%;
}
#topmenu li {
display: block;
float: left;
border: 1px solid #888;
padding-top: 3px;
padding-bottom: 2px;
padding-left: 10px;
padding-right: 10px;
border-left: none;
margin-top: -7px;
background-color: #666;
}
#topmenu li.first {
border-left: 1px solid #888;
}
#topmenu li.current {
margin-top: -8px;
padding-top: 5px;
border-bottom: none;
background-color: #444;
background-image: url('/css/images/grad-bg.png');
background-repeat: repeat-x;
}
a {
color: #CCC;
text-decoration: none;
}
h2 {
margin-top: 0px;
background: #444;
font-size: 100%;
padding: 1px 5px 1px 5px;
-moz-border-radius: 2px;
-webkit-border-radius: 2px;
-moz-border-radius-topleft: 0px;
}
h2 a {
text-decoration: none;
color: #CCC;
}
h1, h3, .menu {
font-family: Verdana,Tahoma,sans-serif;
}
h1 {
margin: 0;
color: #FFF;
text-align: center;
margin-top: 1em;
}
h3 {
margin: 0;
color: #FFF;
text-align: center;
font-weight: normal;
font-size: medium;
}
.menu {
margin-top: 1em;
text-align: center;
}
.content {
margin-left: 3em;
text-align: justify;
padding-left: 4px;
}
.newssub {
position: absolute;
}
.permalink {
text-align: right;
display: block;
}
.permalink a {
color: #CCC;
text-decoration: underline;
}
#boards .column {
float: left;
width: 33%;
height: 200px;
padding-bottom: 10px;
border-left: 1px solid #444;
border-right: 1px solid #444;
border-bottom: 1px solid #444;
}
ul {list-style: none;}
h4 {
text-align: center;
}
#boards a:hover {
text-decoration: underline;
}
#boardhead {
text-align: center;
background-color: #444;
height: 20px;
margin-top: 15px;
padding-top: 0px;
padding-bottom: 3px;
font-size: 150%;
background-image: url('/css/images/grad-bg.png');
background-repeat: repeat-x;
-moz-border-radius-topleft: 2px;
-moz-border-radius-topright: 2px;
}
h4 {
font-size: 100%;
font-weight: bold;
margin-top: 16px;
}
+73
View File
@@ -0,0 +1,73 @@
body {␍
font-family: sans-serif;␍
font-size: 75%;␍
background: #EEFFEE;␍
color: #000000;␍
margin: 0;␍
width: 90%;␍
}␍
␍
h2 {␍
margin: 0px;␍
background: #DAF0D6;␍
color: #117743;␍
font-size: 100%;␍
}␍
␍
h2 a {␍
text-decoration: none;␍
color:#345C34;␍
}␍
␍
h1, h3, .menu {␍
font-family: Verdana,Tahoma,sans-serif;␍
}␍
␍
h1 {␍
margin: 0;␍
/*color: #800;*/␍
text-align: center;␍
margin-top: 1em;␍
}␍
␍
h3 {␍
margin: 0;␍
/*color: #800;*/␍
text-align: center;␍
font-weight: normal;␍
font-size: medium;␍
}␍
␍
.menu {␍
margin-top: 1em;␍
text-align: center;␍
}␍
␍
.content {␍
margin-left: 3em;␍
}␍
␍
.newssub {␍
position: absolute;␍
}␍
␍
.permalink {␍
text-align: right;␍
display: block;␍
}␍
␍
.permalink a {␍
color: blue;␍
text-decoration: none;␍
}␍
/*h1 { font-size: 150% }*/␍
/*h2 { font-size: 100%; margin-top: 1em }␍
.hl {␍
font-style: italic;␍
}␍
.plus { float: right; font-size: 8px; font-weight: normal; padding: 1px 4px 2px 4px; margin: 0px 0px; background: #eb9; color: #000; border: 1px solid #da8; cursor: hand; cursor: pointer }␍
.plus:hover { background: #da8; border: 1px solid #c97 }␍
ul { list-style: none; padding-left: 0px; margin: 0px }␍
li { margin: 0px }␍
li:hover { background: #fec; }␍
li a { display: block; width: 100%; }/*
+83
View File
@@ -0,0 +1,83 @@
body {
background-color: #EEEEEE;
color: #333333;
font-family: "Trebuchet MS",Trebuchet,serif;
margin: 0;
width: 90%;
}
a {
color: #FF6600;
}
a:hover {
color: #0066FF;
}
.menu {
margin-top: 1em;
text-align: center;
}
.content {
margin-left: 2.5em;
text-align: justify;
padding-left: 4px;
background-color: #DDDDDD;
border: 1px solid #888;
}
.newssub {
position: absolute;
}
.permalink {
text-align: right;
display: block;
}
#topmenu li {
display: block;
float: left;
border: 1px solid #888;
padding-top: 3px;
padding-bottom: 2px;
padding-left: 10px;
padding-right: 10px;
border-left: none;
margin-top: -7px;
background-color: #CCCCCC;
-moz-border-radius-topright: 5px;
-moz-border-radius-topleft: 5px;
}
#topmenu li.first {
border-left: 1px solid #888;
padding-bottom: 3px;
}
#topmenu li.current {
margin-top: -8px;
padding-top: 5px;
border-bottom: none;
background-color: #DDDDDD;
}
h2 {
background:#CDCDCD;
border: solid 1px #888;
-moz-border-radius: 5px;
margin-top: 1em;
padding-left: .5em;
margin-right: .3em;
cursor: pointer;
font-size: 1.1em;
margin-bottom: 0em;
padding-bottom: 0em;
}
h3 {
font-size: 1.1em;
text-align: right;
font-style: Arial;
}
+77
View File
@@ -0,0 +1,77 @@
/*
This css file was created by Harrison for 24chan.org. Use anywhere else without permission is prohibited.
Contact: HarrisonHopkins@Gmail.com
*/
body {
font-size: 70%;
margin: 8px;
font-family: sans-serif;
width: 90% !important;
}
a {
text-decoration: none;
color: #CCC;
}
h1, h2 {
background: #444;
text-align: left;
-moz-border-radius: 2px;
-webkit-border-radius: 2px;
padding: 0px;
margin: 0;
}
h1 {
margin-top: 0px;
font-size: 150%;
color: #FFF;
padding-left: 5px;
}
h2 {
font-size: 100%;
margin-top: 1em;
}
.plus {
float: right;
font-size: 8px;
font-weight: normal;
padding: 1px 4px 2px 4px;
margin: 0px 0px;
background: #444;
color: #FFF;
cursor: hand;
cursor: pointer;
-moz-border-radius: 2px;
-webkit-border-radius: 2px;
}
.plus:hover {
background: #444;
}
ul {
list-style: none;
padding-left: 0px;
margin: 0px;
}
li {
margin: 0px;
padding-left: 5px;
}
li:hover {
background: #333;
-moz-border-radius: 2px;
-webkit-border-radius: 2px;
}
li a {
display: block;
width: 99%;
}
+61
View File
@@ -0,0 +1,61 @@
body {␍
margin: 8px;␍
}␍
␍
a {␍
text-decoration: none;␍
color: #550;␍
}␍
␍
h1, h2 {␍
background: #DAF0D6;␍
text-align: left;␍
}␍
␍
h1 {␍
margin-top: 0px;␍
font-size: 150%;␍
color: #000;␍
}␍
␍
h2 {␍
font-size: 100%;␍
margin-top: 1em;␍
}␍
␍
.plus {␍
float: right;␍
font-size: 8px;␍
font-weight: normal;␍
padding: 1px 4px 2px 4px;␍
margin: 0px 0px;␍
background: #88DD88;␍
color: #000;␍
border: 1px solid #117743;␍
cursor: hand;␍
cursor: pointer;␍
}␍
␍
.plus:hover {␍
background: #da8;␍
border: 1px solid #c97;␍
}␍
␍
ul {␍
list-style: none; ␍
padding-left: 0px;␍
margin: 0px;␍
}␍
␍
li {␍
margin: 0px;␍
}␍
␍
li:hover {␍
background: #DAF0D6;␍
}␍
␍
li a {␍
display: block;␍
width: 100%;␍
}
+46
View File
@@ -0,0 +1,46 @@
body {
margin-top: 0;
margin-left: .1em;
margin-right: 1.em;
}
a {
color: #FF6600;
}
a:hover {
color: #0066FF;
}
h1 {
margin-top: .1em;
margin-left: .5em;
}
h2 {
background:#DDDDDD;
border: solid 1px #CCCCCC;
margin-top: 1em;
padding-left: .5em;
cursor: pointer;
font-size: 1.1em;
margin-bottom: 0em;
padding-bottom: 0em;
-moz-border-radius: 5px;
}
li {
margin-left: .5em;
padding-left: .5em;
border-left: solid 1px #CCCCCC;
list-style: none;
margin-top: 0em;
padding-top: 0em;
}
ol, ul {
list-style-position: inside;
padding-left: 0em;
margin-top: 0em;
padding-top: 0em;
}
+262
View File
@@ -0,0 +1,262 @@
body
{
background: #000;
font-family: sans-serif;
margin: 0;
color: #FFF;
}
a
{
color: #888;
text-decoration: none;
}
a:hover
{
text-decoration: underline;
}
h1
{
color: #000;
padding: .5em;
}
.head
{
background: #444;
}
.threadldiv, body.board .thread, .midhead, .newthread, .head
{
margin: 1em;
margin-left: 2.5%;
margin-right: 2.5%;
-moz-border-radius: 5px;
-webkit-border-radius: 5px;
}
.threadldiv, .thread, .midhead, .newthread
{
background: #444;
padding: 1px;
-moz-border-radius: 5px;
-webkit-border-radius: 5px;
margin-top: 5px;
margin-bottom: 5px;
}
.midhead
{
padding: .5em;
}
.threadlink, .boldthreadlink
{
display: block;
text-align: center;
}
.boldthreadlink
{
font-weight: bold;
}
.tolder
{
display: none;
}
h2
{
margin: .1em;
padding-left: .3em;
padding-top: .1em;
}
h2 a
{
background: #444;
text-decoration: underline;
}
.replies
{
font-size: x-large;
font-weight: bolder;
padding-right: .5em;
font-family: serif;
}
.topbar a
{
color: #888;
font-family: IPAMonaPGothic,Mona,'MS PGothic',YOzFontAA97;
}
.threadlistflat
{
margin-bottom:0;
}
.postheader *
{
clear: none;
margin: 0;
margin-bottom: .1em;
}
.post, form
{
width: 90%;
margin-left: 9%;
margin-top: 1em;
}
.hidden
{
margin-left: .5em;
}
form
{
margin-left: 2.9em;
}
.post
{
background: #000;
/*border: 1px solid #888;*/
padding-bottom: .1em;
-moz-border-radius: 2px;
-webkit-border-radius: 2px;
}
h3
{
font-weight: normal;
font-size: x-small;
/* color: grey;*/
margin: 0;
margin-right: .1em;
text-align: right;
clear: none;
height: 0;
}
h3 a
{
/* color: grey;*/
font-weight: bold;
}
h3 .postnum a, form .postnum
{
text-decoration: none;
font-size: xx-large;
color: black;
font-style: italic;
font-family: serif;
font-weight: bolder;
float: left;
clear: none;
width: 1.5em;
text-align: right;
vertical-align: middle;
}
.namelabel
{
display: none;
}
form .postnum
{
padding-right: .3em;
}
h3 .postnum a, blockquote
{
position: relative;
left: -2em;
}
h3 .postnum a
{
height: 0;
}
blockquote
{
clear: left;
}
blockquote p
{
margin: 0;
}
table .submit
{
width: 100%;
}
td.label
{
text-align: right;
}
table .mail
{
width: auto;
float: right;
}
.legal
{
text-align: center;
font-size: small;
}
.manage
{
text-align: center;
font-size: x-small;
}
.stylelist
{
display: inline-block;
float: right;
}
body.read h2
{
color: #888;
font-size: larger;
}
.read
{
background: #444;
}
.pages
{
font-size: smaller;
}
.bottomnav
{
text-align: center;
}
.topbar
{
margin-bottom: .5em;
width: 100%;
text-align: left;
}
.threads
{
background: #000;
}
.threads th
{
padding: 0px;
margin: 0px;
}
.threads thead
{
background: #444;
}
.threads a
{
/*display: block;
*/}
.threads a:hover
{
text-decoration: none;
}
.threads tr:hover
{
/* background: #dfe3f9;*/
}
.threads th
{
background: #444 !important;
}
.threads a
{
display: block;
}
.quote:hover
{
background: #444 !important;
}
.thread
{
margin-left: 2px;
margin-right: 2px;
}
+170
View File
@@ -0,0 +1,170 @@
body {␍
padding: 0px 8px 8px 8px;␍
margin: 0px;␍
background: #FFFFFF;␍
color: #000000;␍
}␍
␍
a {␍
color: #DD6600;␍
}␍
␍
a:visited {␍
color: #DD6600;␍
}␍
␍
a:hover {␍
color:#FFAA44;␍
}␍
␍
form {␍
clear: both;␍
background: #EEEEEE;␍
color: #000000;␍
border-bottom: 2px solid #BBBBBB;␍
font-family: sans-serif;␍
margin: 3px;␍
padding: 3px;␍
}␍
␍
input, textarea {␍
border: 1px solid #000000;␍
}␍
␍
input[type="file"] > input[type="text"] {␍
border: 1px solid #000000;␍
}␍
␍
ol ul, ul ol, ul ul, ol ol {␍
margin-top: 0;␍
margin-bottom: 0;␍
}␍
␍
ol p:first-child, ul p:first-child {␍
margin-top: 0;␍
}␍
␍
ol p:last-child, ul p:last-child {␍
margin-bottom: 0;␍
}␍
␍
.topbar {␍
width: 100%;␍
text-align: right;␍
}␍
␍
.head {␍
background: #EEEEEE;␍
color: #000000;␍
font-family: sans-serif;␍
clear: both;␍
margin-bottom: 0.5em;␍
padding-bottom: 0;␍
}␍
␍
.hborder .head {␍
border-bottom: 2px solid #BBBBBB;␍
}␍
␍
h1 {␍
font-size: 2em;␍
font-weight: bold;␍
text-align: center;␍
border-bottom: 2px solid #FF7700;␍
padding: 4px 4px 0px 4px;␍
}␍
␍
h2 {␍
float: left;␍
background: #EEEEEE;␍
border-bottom: 2px solid #FF7700;␍
font-size: 1.2em;␍
font-family: sans-serif;␍
font-weight: bold;␍
margin: 0px 0px 0.7em 0px;␍
padding: 0px 0.2em 0px 0px;␍
}␍
␍
h2 a {␍
color: #000000;␍
text-decoration: none;␍
}␍
␍
h2 a:hover {␍
color:#FFAA44;␍
}␍
␍
h2 small {␍
font-size: 1em;␍
font-weight: normal;␍
margin-left: 0.5em;␍
}␍
␍
.midhead {␍
padding: 1em 0.5em 0.2em 0.5em;␍
}␍
␍
.navlinks {␍
font-size: 1.5em;␍
}␍
␍
.threadlinks {␍
font-weight: bold;␍
}␍
␍
.postnum {␍
width: 1.5em;␍
font-family: sans-serif;␍
text-align: right;␍
font-weight: bold;␍
margin-right: 0.5em;␍
float: left;␍
}␍
␍
␍
.postnum a {␍
color: #000000;␍
text-decoration: none;␍
}␍
␍
.postnum a:hover {␍
color:#FFAA44;␍
}␍
␍
.replies {␍
clear: both;␍
margin-bottom: 1.2em;␍
padding: 4px;␍
font-size: 1em;␍
font-weight: normal;␍
}␍
␍
h3 {␍
font-size: 1em;␍
font-family: sans-serif;␍
font-weight: normal;␍
margin: 0px 0px 0px 0px;␍
clear: both;␍
}␍
␍
h3 a {␍
color: #000000;␍
}␍
␍
h3 a:hover {␍
color:#FFAA44;␍
}␍
␍
.postername {␍
color: #000000;␍
font-weight: bold;␍
}␍
␍
.postertrip {␍
color: #000000;␍
}␍
␍
.legal {␍
text-align: center;␍
font-size: small;␍
}
+55
View File
@@ -0,0 +1,55 @@
a:link, a:visited {color: blue}␍
a:hover, a:active {color: red}␍
␍
body.board, body.list {margin: 0}␍
body.board {background-image: url(ba.gif);}␍
body.read {background-color: #efefef;}␍
.head, body.board .thread { border: 1px inset gray; padding: 6px;}␍
table.postform td {text-align: left;}␍
table.postform td input {width: auto;}␍
table.newthreadform .submit {width: 100%;}␍
table.postform td textarea {width: auto;}␍
table.postform td.label {text-align: right;}␍
table.postform .mail {width: auto; float: right;}␍
.legal {text-align: center; font-size: small;}␍
.manage {text-align: center; font-size: x-small;}␍
.postnum {font-weight: bold; margin-right: .1em;}␍
.postername,.postertrip {color: green;}␍
.postername {font-weight: bold;}␍
blockquote {text-align: left; font-family: serif; margin-top: 0.5em;}␍
blockquote p {margin-top: 0;}␍
.border, .hborder {border: 1px outset gray; margin-left: 2.5%; margin-right: 2.5%; width: 95%; padding: 6px; margin-bottom: 1em; background-color: #efefef}␍
.hborder {background-color: #cfc}␍
h2 {margin-top: 0px; clear: both;}␍
/*.threadldiv {margin-right: 2.5%; margin-left: 2.5%; margin-bottom: 1em; background-color: #cfc; width: 95%;}*/␍
.threads {font-size: small; text-align: left;}␍
table.threads th {text-align: center;}␍
.topbar {margin: -2px; margin-bottom: .5em; background: white; border: 1px inset black; width: 100%; text-align: right}␍
.styles {border: 2px outset black; margin: 2px; background: white; float: left; margin-top: 0; margin-left: 0}␍
.threads th a, .threads td a, .postfieldleft a, .postnum a {color: black;}␍
.postfieldleft a, .postnum a, h2 a {text-decoration: none}␍
.postfieldleft {vertical-align: top;}␍
.replies {font-size: 70%; font-weight: bolder;}␍
h2 a:link, h2 a:visited, h2 a:active, h2 a:hover {color: red;}␍
h2 a:hover, h2 a:active {text-decoration: underline}␍
h2, .navlinks {clear: none; margin-bottom: .1em;}␍
.pages {font-size: smaller}␍
.bottomnav {text-align: center;}␍
.newthread h2 {color: black;}␍
.postinfo {margin-left: .3em;}␍
.navlinks a {font-family: IPAMonaPGothic,Mona,'MS PGothic',YOzFontAA97}␍
h3 {font-weight: normal; font-size: 100%; margin-top: 0; margin-bottom: 0}␍
.tolder {font-size: smaller}␍
␍
body.read h2 {color: red; font-size: larger}␍
␍
.threadlistflat {display: inline; padding: 0; margin: 0}␍
.threadlink {display: inline; text-align: justify;}␍
.pages {text-align: center; font-size: small;}␍
␍
.navlinks {float: right;}␍
.navlinks a {text-decoration: none}␍
.threadlink {padding-right: .55em;}␍
.boldthreadlink {padding-right: .55em; font-weight: bold;}␍
␍
.stylelist {display: inline-block; float: right}
+121
View File
@@ -0,0 +1,121 @@
body {background: #ffe; font-family: sans-serif; margin: 0}
a { color: #550 }
h1 {color: #800; padding: .5em}
.head {background: #fca;}
.threadldiv, body.board .thread, .midhead, .newthread, .head {
margin: 1em;
margin-left: 2.5%;
margin-right: 2.5%;
}
.threadldiv, .thread, .midhead, .newthread {
background: #f9e9dd; padding: 1px;
}
.midhead {padding: .5em}
.threadlink, .boldthreadlink {
display: block;
text-align: center
}
.boldthreadlink {font-weight: bold}
.tolder {display: none}
h2 {margin: .1em; padding-left: .3em; padding-top: .1em}
h2 a {color: #cc1105; text-decoration: none}
.replies {
font-size: x-large;
font-weight: bolder;
padding-right: .5em;
font-family: serif
}
.topbar a {
color: #cc1105;
font-family: IPAMonaPGothic,Mona,'MS PGothic',YOzFontAA97
}
.threadlistflat {margin-bottom:0}
.postheader * {clear: none; margin: 0; margin-bottom: .1em;}
.post, form {
width: 90%;
margin-left: 9%;
margin-top: 1em;
}
.hidden {margin-left: .5em;}
form {margin-left: 2.9em}
.post {
background: #ffe;
/*border: 1px solid #fca;*/
padding-bottom: .1em;
}
h3 {
font-weight: normal;
font-size: x-small;
color: grey;
margin: 0;
margin-right: .1em;
text-align: right;
clear: none;
height: 0;
}
h3 a {color: grey; font-weight: bold}
h3 .postnum a, form .postnum {
text-decoration: none;
font-size: xx-large;
color: black;
font-style: italic;
font-family: serif;
font-weight: bolder;
float: left;
clear: none;
width: 1.5em;
text-align: right;
vertical-align: middle
}
.namelabel {display: none}
form .postnum {padding-right: .3em}
h3 .postnum a, blockquote {
position: relative;
left: -2em;
}
h3 .postnum a {height: 0}
blockquote {
clear: left;
}
blockquote p {margin: 0}
table .submit {width: 100%;}
td.label {text-align: right;}
table .mail {width: auto; float: right;}
.legal {text-align: center; font-size: small;}
.manage {text-align: center; font-size: x-small;}
.stylelist {display: inline-block; float: right}
body.read, body.read .thread {background: #f9e9dd}
body.read h2 {color: red; font-size: larger}
.pages {font-size: smaller}
.bottomnav {text-align: center;}
.topbar {margin: -2px; margin-bottom: .5em; background: #f9e9dd; border: 1px inset #cc1105; width: 100%; text-align: right}
+165
View File
@@ -0,0 +1,165 @@
html, body {
background:#FFFFEE;
color:#800000;
}
a {
color:#0000EE;
}
a:hover {
color:#DD0000;
}
.reflink a:hover{
font-weight: bold;
}
.adminbar {
text-align:right;
clear:both;
float:right;
}
.logo {
clear:both;
text-align:center;
font-size:2em;
color:#800000;
width:100%;
}
.replymode {
background:#E04000;
text-align:center;
padding:2px;
color:#FFFFFF;
width:100%;
}
.catalogmode {
background:#0040E0;
text-align:center;
padding:2px;
color:#FFFFFF;
width:100%;
}
.postarea {
}
.rules {
/*font-size:0.7em;*/
width: 468px;
font-size: 10px;
font-family: sans-serif;
}
.rules li {
margin-left: 1em;
/*text-indent: 0em;*/
}
.postblock {
background:#EEAA88;
color:#800000;
font-weight:800;
}
.footer {
text-align:center;
font-size:12px;
font-family:serif;
}
.passvalid {
background:#EEAA88;
text-align:center;
width:100%;
color:#ffffff;
}
.dellist {
font-weight: bold;
text-align:center;
}
.delbuttons {
text-align:center;
padding-bottom:4px;
}
.managehead {
background:#AAAA66;
color:#400000;
padding:0px;
}
.postlists {
background:#FFFFFF;
width:100%;
padding:0px;
color:#800000;
}
.row1 {
background:#EEEECC;
color:#800000;
}
.row2 {
background:#DDDDAA;
color:#800000;
}
.unkfunc {
background:inherit;
color:#789922;
}
.filesize {
text-decoration:none;
}
.filetitle {
background:inherit;
font-size:1.2em;
color:#CC1105;
font-weight:800;
}
.postername {
color:#117743;
font-weight:bold;
}
.postertrip {
color:#228854;
}
.oldpost {
color:#CC1105;
font-weight:800;
}
.omittedposts {
color:#707070;
}
.reply {
background: #F0E0D6;
color: #800000;
}
.replyhl {
background: #F0C0B0;
color: #800000;
}
.doubledash {
vertical-align:top;
clear:both;
float:left;
}
.replytitle {
font-size: 1.2em;
color:#CC1105;
font-weight:800;
}
.commentpostername {
color:#117743;
font-weight:800;
}
.thumbnailmsg {
font-size: small;
color:#800000;
}
.abbrev {
color:#707070;
}
.highlight {
background:#F0E0D6;
color:#800000;
border: 2px dashed #EEAA88;
}
#watchedthreads {
background-color: #F0E0D6 !important;
}
.reflinkpreview {
background-color: #F0E0D6 !important;
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 80 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 885 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 870 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 859 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 896 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 881 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

+160
View File
@@ -0,0 +1,160 @@
body {
margin: 0;
padding: 8px;
margin-bottom: auto;
}
blockquote blockquote {
margin-left: 0em;
}
form {
margin-bottom: 0px;
}
form .trap {
display:none;
}
.postarea {
text-align: center;
}
.postarea table {
margin: 0px auto;
text-align: left;
}
.thumb {
border: none;
float: left;
margin: 2px 20px;
}
.nothumb {
float: left;
background: inherit;
border: 2px dashed #aaa;
text-align: center;
margin: 2px 20px;
padding: 1em 0.5em 1em 0.5em;
font-family: none;
}
.reply blockquote, blockquote :last-child {
margin-bottom: 0em;
}
.reflink a {
color: inherit;
text-decoration: none;
}
.reflink a:hover{
color: #800000;
}
.reply .filesize {
margin-left: 20px;
}
.userdelete {
float: right;
text-align: center;
white-space: nowrap;
}
.replypage .replylink {
display: none;
}
.pagelist {
max-width: 600px;
}
.admin {
color: #800080;
font-weight: normal;
}
.mod {
color: #FF0000;
font-weight: normal;
}
.vip {
color: #336600;
font-weight: normal;
}
#watchedthreads {
position: absolute;
background-color: #F0E0D6;
border: 1px dotted #EEAA88;
border-top: 0px none;
}
#watchedthreadsdraghandle {
text-align: center;
font-family: Trebuchet MS;
cursor: move;
}
#watchedthreadlist {
padding: 3px;
font-size: 0.8em;
}
#watchedthreadsbuttons {
position: absolute;
bottom: 3px;
left: 3px;
}
.spoiler {
color: black;
background-color: black;
}
.extrabtns {
vertical-align: middle;
}
.hidethread {
background: transparent url('./icons/blue/icons.gif') -32px -16px no-repeat;
}
.unhidethread {
background: transparent url('./icons/blue/icons.gif') -48px 0px no-repeat;
}
.watchthread {
background: transparent url('./icons/blue/icons.gif') -32px 0px no-repeat;
}
.expandthread {
background: transparent url('./icons/blue/icons.gif') 0px -16px no-repeat;
}
.quickreply {
background: transparent url('./icons/blue/icons.gif') 0px 0px no-repeat;
}
.hidewatchedthreads {
background: transparent url('./icons/blue/icons.gif') -48px -16px no-repeat;
}
.refreshwatchedthreads {
background: transparent url('./icons/blue/icons.gif') -16px -16px no-repeat;
}
.restorewatchedthreads {
background: transparent url('./icons/blue/icons.gif') -16px 0px no-repeat;
}
.reflinkpreview {
position: absolute;
padding: 5px;
background-color: #F0E0D6;
border: 1px dotted #000000;
}
+206
View File
@@ -0,0 +1,206 @@
html, body {
font-size:12pt;
background:#E6E6D1;
color:#000000;
}
input, textarea {
background-color: #AEB08D;
color: #000;
border: 1px solid #000;
}
a {
background:inherit;
color:#6E735E;
text-decoration:none;
}
a:visited {
background:inherit;
color:#6E735E;
text-decoration:none;
}
a:hover {
color:#000;
background:inherit;
}
.filesize a {
text-decoration:underline;
}
.filesize a:visited {
text-decoration:underline;
}
.adminbar {
text-align:right;
background:inherit;
clear:both;
float:right;
}
.logo {
clear:both;
text-align:center;
background:inherit;
font-size:24pt;
color:#AF0A0F;
width:100%;
}
.replymode {
background:#6E735E;
color:#FFFFFF;
width:100%;
text-align: center;
font-weight: 800;
}
.catalogmode {
background:#6E735E;
color:#FFFFFF;
width:100%;
text-align: center;
font-weight: 800;
}
.postarea {
background:inherit;
}
.rules {
/*font-size:0.7em;*/
width: 468px;
font-size: 10px;
font-family: sans-serif;
}
.rules li {
margin-left: 1em;
/*text-indent: 0em;*/
}
.postblock {
background:#6E735E;
font-family: sans-serif;
color:#000000;
font-weight:800;
font-size: 80%;
padding: 0px 5px;
border: 1px solid;
}
.footer {
text-align:center;
font-size:10px;
font-family:sans-serif;
}
.passvalid {
background:#9988EE;
text-align:center;
width:100%;
color:#ffffff;
}
.dellist {
background:inherit;
text-align:center;
}
.delbuttons {
background:inherit;
text-align:center;
padding-bottom:4px;
}
.managehead {
background:#0F8FE1;
color:#000000;
font-family:sans-serif;
font-size:14px;
padding:0px;
}
.postlists {
background:#FFFFFF;
width:100%;
padding:0px;
color:#000000;
}
.row1 {
background:#9AD2F6;
font-family:sans-serif;
font-size:12px;
color:#000000;
}
.row2 {
background:#FFFFFF;
font-family:sans-serif;
font-size:12px;
color:#000000;
}
.unkfunc {
color:#789922;
}
.filesize {
font-size:12px;
font-family:sans-serif;
text-decoration:underline;
padding-left:3em;
}
.filetitle {
background:inherit;
font-size:18px;
font-family:serif;
color:#0F0C5D;
font-weight:800;
}
.postername {
background:inherit;
font-size:12px;
font-family:serif;
color:#117743;
font-weight:800;
}
.oldpost {
background:inherit;
font-size:18px;
font-family:serif;
color:#0F0C5D;
font-weight:800;
}
.omittedposts {
background:inherit;
font-size:18px;
font-family:serif;
color:#070707;
font-weight:800;
}
.reply {
background:#AEB08D;
color:#000000;
font-family:serif;
}
.replyhl {
background: #AEB08D;
color: #000000;
}
.doubledash {
vertical-align:top;
clear:both;
float:left;
}
.replytitle {
background:inherit;
font-size:18px;
font-family:serif;
color:#0F0C5D;
font-weight:800;
}
.commentpostername {
background:inherit;
font-size:12px;
font-family:serif;
color:#117743;
font-weight:800;
}
.thumbnailmsg {
background:inherit;
font-size:9px;
font-family:sans-serif;
color:#000000;
}
.watchedthreads {
background-color: #AEB08D!important;
border: 1px dotted!important;
border-top: 0px none !important;
}
.reflinkpreview {
background-color: #AEB08D!important;
}
BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 109 B

+157
View File
@@ -0,0 +1,157 @@
html { min-width: 600px; }␍
␍
body, div, td, th, h2, h3, h4 { /* redundant rules for bad browsers */ ␍
font-family: verdana,sans-serif;␍
font-size: x-small;␍
voice-family: "\"}\"";␍
voice-family: inherit;␍
font-size: small;␍
color: #333;␍
} ␍
.clearhack { display: inline; } /*Clears Box Model Hack in IE5*/␍
␍
body {␍
background: #EDEBE3;␍
color: #333;␍
padding: 1em 20px 3em 20px;␍
margin: 0;␍
}␍
␍
a { color: #06C; }␍
a:hover { color: #333; }␍
a:active { color: #000; }␍
␍
p { line-height: 140%; }␍
␍
h1,h2 {␍
font-family: trebuchet ms;␍
font-weight: bold;␍
color: #333;␍
}␍
␍
h1 {␍
font-size: 180%;␍
margin: 0;␍
}␍
␍
h1 a { text-decoration: none; color: #333; }␍
h1 a:hover { border-bottom: 1px dotted #666; color: #000; }␍
␍
h2 {␍
font-size: 140%;␍
padding-bottom: 2px;␍
border-bottom: 1px solid #CCC;␍
margin: 0;␍
}␍
␍
p.note {␍
background: #EEE;␍
padding: 4px;␍
font-family: tahoma;␍
font-size: 85%;␍
line-height: 130%;␍
margin-top: 0;␍
}␍
␍
br {␍
clear: left;␍
}␍
␍
label,input {␍
display: block;␍
width: auto;␍
float: left;␍
margin-bottom: 10px;␍
}␍
␍
label {␍
font-size: 12px;␍
text-align: right;␍
width: 175px;␍
padding-right: 20px;␍
}␍
␍
.desc {␍
text-indent: 5px;␍
font-size : 80%;␍
/*white-space: nowrap;*/␍
}␍
␍
.footer {␍
text-align:center;␍
font-size:10px;␍
font-family:sans-serif;␍
}␍
␍
th,td {␍
font-size:10px;␍
font-family:verdana;␍
}␍
␍
.unkfunc {␍
color:#789922;␍
}␍
.filesize {␍
font-size:12px;␍
font-family:sans-serif;␍
text-decoration:underline;␍
padding-left:3em;␍
}␍
.filetitle {␍
background:inherit;␍
font-size:18px;␍
font-family:serif;␍
color:#0F0C5D;␍
font-weight:800;␍
}␍
.postername {␍
background:inherit;␍
font-size:12px;␍
font-family:serif;␍
color:#117743;␍
font-weight:800;␍
}␍
.oldpost {␍
background:inherit;␍
font-size:18px;␍
font-family:serif;␍
color:#0F0C5D;␍
font-weight:800;␍
}␍
.omittedposts {␍
background:inherit;␍
font-size:18px;␍
font-family:serif;␍
color:#070707;␍
font-weight:800;␍
}␍
.reply {␍
background:#D6DAF0;␍
color:#000000;␍
font-family:serif;␍
}␍
.doubledash {␍
vertical-align:top;␍
clear:both;␍
float:left;␍
}␍
.replytitle {␍
background:inherit;␍
font-size:18px;␍
font-family:serif;␍
color:#0F0C5D;␍
font-weight:800;␍
}␍
.commentpostername {␍
background:inherit;␍
font-size:12px;␍
font-family:serif;␍
color:#117743;␍
font-weight:800;␍
}␍
.thumbnailmsg {␍
background:inherit;␍
font-size:9px;␍
font-family:sans-serif;␍
color:#000000;␍
}
+108
View File
@@ -0,0 +1,108 @@
#main {
border: 1px solid #666;
clear: both;
background: #FFF3B3;
padding-top: 2em;
}
#contents {
padding: 1.5em;
background: #FFFDF3;
min-height: 300px;
}
#header {
position: relative;
width: 100%;
height: 3em;
width: 45em; /* a width is required for Opera, older Mozilla browsers, and Konqueror browsers */
}
#header ul#primary {
margin: 0;
padding: 0;
position: absolute;
bottom: -1px;
width: 45em; /* a width is required for Opera, older Mozilla browsers, and Konqueror browsers */
}
#header ul#primary li {
display: inline;
list-style: none;
}
#header ul#primary a,#header ul#primary span,#header ul#primary a.current {
width: 8em;
display: block;
float: left;
padding: 4px 0;
margin: 1px 2px 0 0;
text-align: center;
font-family: tahoma, verdana, sans-serif;
font-size: 85%;
text-decoration: none;
color: #333;
}
#header ul#primary span,#header ul#primary a.current,#header ul#primary a.current:hover {
border: 1px solid #666;
border-bottom: none;
background: #FFF3B3;
padding-bottom: 6px;
margin-top: 0;
}
#header ul#primary a {
background: #FFFAE1;
border: 1px solid #AAA;
border-bottom: none;
}
#header ul#primary a:hover {
margin-top: 0;
border-color: #666;
background: #FFF7CD;
padding-bottom: 5px;
}
#header ul#secondary {
position: absolute;
margin: 0;
padding: 0;
bottom: -1.4em;
left: 1px;
width: 50em; /* a width is required for Opera, older Mozilla browsers, and Konqueror browsers */
}
#header ul#secondary li a,#header ul#secondary li span {
width: auto;
display: block;
float: left;
padding: 0 10px;
margin: 0;
text-align: auto;
border: none;
border-right: 1px dotted #AAA;
background: none;
}
#header ul#secondary li a {
color: #06C;
text-decoration: underline;
}
#header ul#secondary li a:hover {
color: #333;
background: transparent;
padding: 0 10px;
border: none;
border-right: 1px dotted #AAA;
}
#header ul#secondary li a:active {
color: #000;
background: transparent;
}
#header ul#secondary li:last-child a { border: none; }
+9
View File
@@ -0,0 +1,9 @@
img {
border: none;
}
.pop {
font-weight: bold;
}
.trial {
font-style: italic;
}
+87
View File
@@ -0,0 +1,87 @@
body {
font-family: sans-serif;
font-size: 75%;
background: #EEF2FF;
color: #000;
margin: 0;
width: 90%;
}
#topmenu li {
display: block;
float: left;
border: 1px solid #9295a4;
padding-top: 3px;
padding-bottom: 2px;
padding-left: 10px;
padding-right: 10px;
border-left: none;
margin-top: -7px;
background-color: #DFDFFE;
}
#topmenu li.first {
border-left: 1px solid #9295a4;
}
#topmenu li.current {
margin-top: -8px;
padding-top: 5px;
border-bottom: none;
background-color: #D6DAF0;
}
h2 {
margin-top: 0px;
margin-left: 0px;
background: #D6DAF0;
font-size: 100%;
}
h2 a {
text-decoration: none;
color: #550;
}
h1, h3, .menu {
font-family: Verdana,Tahoma,sans-serif;
}
h1 {
margin: 0px;
color: #800;
text-align: center;
margin-top: 1em;
}
h3 {
margin: 0px;
color: #800;
text-align: center;
font-weight: normal;
font-size: medium;
}
.menu {
margin-top: 1em;
text-align: center;
}
.content {
margin-left: 3em;
text-align: justify;
padding-left: 4px;
}
.newssub {
position: absolute;
}
.permalink {
text-align: right;
display: block;
}
.permalink a {
color: blue;
text-decoration: none;
}
+88
View File
@@ -0,0 +1,88 @@
body {
font-family: sans-serif;
font-size: 75%;
background: #ffe;
color: #000;
margin: 0;
width: 90%;
}
#topmenu li {
display: block;
float: left;
border: 1px solid #888;
padding-top: 3px;
padding-bottom: 2px;
padding-left: 10px;
padding-right: 10px;
border-left: none;
margin-top: -7px;
background-color: #FDB;
}
#topmenu li.first {
border-left: 1px solid #888;
}
#topmenu li.current {
margin-top: -8px;
padding-top: 5px;
border-bottom: none;
background-color: #fca;
}
h2 {
margin-top: 0px;
background: #fca;
font-size: 100%;
padding: 1px 5px 1px 5px;
}
h2 a {
text-decoration: none;
color: #550;
}
h1, h3, .menu {
font-family: Verdana,Tahoma,sans-serif;
}
h1 {
margin: 0;
color: #800;
text-align: center;
margin-top: 1em;
}
h3 {
margin: 0;
color: #800;
text-align: center;
font-weight: normal;
font-size: medium;
}
.menu {
margin-top: 1em;
text-align: center;
}
.content {
margin-left: 3em;
text-align: justify;
padding-left: 4px;
}
.newssub {
position: absolute;
}
.permalink {
text-align: right;
display: block;
}
.permalink a {
color: blue;
text-decoration: none;
}
+91
View File
@@ -0,0 +1,91 @@
body {
font-family: sans-serif;
font-size: 75%;
background: #E6E6D1;
color: #000;
margin: 0;
width: 90%;
}
#topmenu li {
display: block;
float: left;
border: 1px solid #9295a4;
padding-top: 3px;
padding-bottom: 2px;
padding-left: 10px;
padding-right: 10px;
border-left: none;
margin-top: -7px;
background-color: #CFCBA3;
}
#topmenu li.first {
border-left: 1px solid #9295a4;
}
#topmenu li.current {
margin-top: -8px;
padding-top: 5px;
border-bottom: none;
background-color: #AEB08D;
}
h2 {
margin-top: 0px;
margin-left: 0px;
background: #AEB08D;
font-size: 100%;
padding: 1px 5px 1px 5px;
-moz-border-radius: 2px;
-webkit-border-radius: 2px;
-moz-border-radius-topleft: 0px;
}
h2 a {
text-decoration: none;
color: #6E735E;
}
h1, h3, .menu {
font-family: Verdana,Tahoma,sans-serif;
}
h1 {
margin: 0px;
color: #800;
text-align: center;
margin-top: 1em;
}
h3 {
margin: 0px;
color: #800;
text-align: center;
font-weight: normal;
font-size: medium;
}
.menu {
margin-top: 1em;
text-align: center;
}
.content {
margin-left: 3em;
text-align: justify;
padding-left: 4px;
}
.newssub {
position: absolute;
}
.permalink {
text-align: right;
display: block;
}
.permalink a {
color: #6E735E;
text-decoration: none;
}
+61
View File
@@ -0,0 +1,61 @@
body {
margin: 8px;
}
a {
text-decoration: none;
color: #34345C;
}
h1, h2 {
background: #D6DAF0;
text-align: left;
}
h1 {
margin-top: 0px;
font-size: 150%;
color: #000;
}
h2 {
margin: 0;
font-size: 100%;
margin-top: 1em;
}
.plus {
float: right;
font-size: 8px;
font-weight: normal;
padding: 1px 4px 2px 4px;
margin: 0px 0px;
background: #c5c9e0;
color: #000;
border: 1px solid #b4b8d0;
cursor: pointer;
}
.plus:hover {
background: #c5c9e0;
border: 1px solid #c97;
}
ul {
list-style: none;
padding-left: 0px;
margin: 0px;
}
li {
margin: 0px;
}
li:hover {
background: #C6DAF0;
}
li a {
display: block;
width: 100%;
}
+61
View File
@@ -0,0 +1,61 @@
body {
margin: 8px;
}
a {
text-decoration: none;
color: #550;
}
h1, h2 {
background: #fca;
text-align: left;
}
h1 {
margin-top: 0px;
font-size: 150%;
color: #000;
}
h2 {
margin: 0;
font-size: 100%;
margin-top: 1em;
}
.plus {
float: right;
font-size: 8px;
font-weight: normal;
padding: 1px 4px 2px 4px;
margin: 0px 0px;
background: #eb9;
color: #000;
border: 1px solid #da8;
cursor: pointer;
}
.plus:hover {
background: #da8;
border: 1px solid #c97;
}
ul {
list-style: none;
padding-left: 0px;
margin: 0px;
}
li {
margin: 0px;
}
li:hover {
background: #fec;
}
li a {
display: block;
width: 100%;
}
+58
View File
@@ -0,0 +1,58 @@
body {
font-size: 70%;
margin: 8px;
font-family: sans-serif;
width: 90%;
}
a {
text-decoration: none;
color: #6E735E;
}
h1, h2 {
background: #AEB08D;
text-align: left;
-moz-border-radius: 2px;
-webkit-border-radius: 2px;
padding: 0px;
margin: 0;
}
h1 {
margin-top: 0px;
font-size: 150%;
color: #000;
padding-left: 5px;
}
h2 {
font-size: 100%;
margin-top: 1em;
}
.plus {
float: right;
font-size: 8px;
font-weight: normal;
padding: 1px 4px 2px 4px;
margin: 0px 0px;
background: #AEB08D;
color: #000;
cursor: pointer;
-moz-border-radius: 2px;
-webkit-border-radius: 2px;
}
ul {
list-style: none;
padding-left: 0px;
margin: 0px;
}
li {
margin: 0px;
padding-left: 5px;
}
li:hover {
background: #AEB08D;
-moz-border-radius: 2px;
-webkit-border-radius: 2px;
}
li a {
display: block;
width: 100%;
}
BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 961 B

+188
View File
@@ -0,0 +1,188 @@
body, html {
margin: 0px;
padding: 0px 8px 8px 8px;
background: #6B7B8D;
color: #FFFFFF;
}
a {
color: #AFB9C5;
}
a:visited {
color: #9DA6B0;
}
a:hover {
color:#EEEEEE;
}
h1 {
color: #EEEEEE;
text-align: center;
font-size: 2em;
font-weight: bold;
padding: 0px;
margin: 0px;
}
h2 {
float: left;
color: #eeeeee;
font-size: 1.2em;
font-weight: bold;
margin: 0px 0px 0px 1em;
padding: 0px;
}
h2 a {
color: #eeeeee !important;
text-decoration: none;
margin-right: -0.25em;
}
h2 a:hover {
text-decoration: underline;
}
h3 {
font-size: 1em;
font-weight: normal;
margin: -3px;
padding: 0px;
padding-top: 3px;
background-color: #DDD;
}
.replies {
clear: both;
margin: 3px;
padding: 3px;
font-weight: normal;
}
form {
clear: both;
background: #99a9ba;
color: #49525d;
font-family: serif;
margin: 3px;
padding: 3px;
-moz-border-radius: 4px;
}
label {
font-weight: bold !important;
}
input, textarea {
border: 1px solid #49525d;
}
input[type=submit], input[type=button] {
color: #400000;
}
textarea {
-moz-border-radius: 4px;
}
.hborder {
background: #49525D;
color: #EEE;
padding: 4px;
clear: both;
-moz-border-radius: 4px;
}
.topbar {
width: 100%;
text-align: right
}
.fullhead {
background: #49525D;
-moz-border-radius: 6px;
padding: 0.25em;
}
.head {
-moz-border-radius: 6px;
}
.hborder .head {
-moz-border-radius: 6px;
}
.midhead {
margin-left: 1em;
}
.newthread {
margin-top: 2em;
margin-bottom: 2em;
}
.newthread h2 {
color: #EEE;
font-weight: normal;
}
.thread {
background-color: #49525D;
padding: 4px;
margin-bottom: 2em;
clear: both;
-moz-border-radius: 6px;
}
.post {
background-color: #FFF;
color: #000080;
/*font-family: serif;*/
font-size: .8em;
margin: 3px;
padding: 3px;
-moz-border-radius: 4px;
border: 6px solid #DDD;
}
.postnum {
font-weight: bold;
margin-left: 0.3em;
margin-right: 0.3em;
color: #49525d;
}
.postnum a {
color: #49525d;
text-decoration: none;
}
.postnum a:hover {
color:#DD0000;
}
.threadldiv {
background: #49525D;
/*margin-bottom: 1em;*/
-moz-border-radius: 6px;
}
.hidden {
clear: both;
background: #EEAA88;
margin: -0.3em 1em 0.5em 1em;
-moz-border-radius: 4px;
}
.postername {
color: #2B3037;
font-weight: bold;
font-size: 1.2em;
}
.postertrip {
color: #49525D;
font-style: italic;
font-size: 1.2em;
}
.legal {
text-align: center;
font-size: 0.8em;
}
+220
View File
@@ -0,0 +1,220 @@
/* Thanks meltingwax */
body {
background: #eef2ff;
font-family: sans-serif;
margin: 0
}
a {
color: #34345c;
text-decoration: none;
}
a:hover {
text-decoration: underline
}
h1 {
/*color: black;*/
color: #800; /* i prefer black but 7chan has #800 headers */
padding: .5em
}
.head {
background: #d6daf0;
}
.threadldiv, body.board .thread, .midhead, .newthread, .head {
margin: 1em;
margin-left: 2.5%;
margin-right: 2.5%;
}
.threadldiv, .thread, .midhead, .newthread {
background: #d6daf0;
padding: 1px;
}
.midhead {
padding: .5em
}
.threadlink, .boldthreadlink {
display: block;
text-align: center
}
.boldthreadlink { font-weight: bold }
.tolder { display: none }
h2 {
margin: .1em;
padding-left: .3em;
padding-top: .1em
}
h2 a {
background: #d6daf0;
text-decoration: underline;
}
.replies {
font-size: x-large;
font-weight: bolder;
padding-right: .5em;
font-family: serif
}
.topbar a {
color: #cc1105;
font-family: IPAMonaPGothic,Mona,'MS PGothic',YOzFontAA97
}
.threadlistflat {
margin-bottom:0
}
.postheader * {
clear: none;
margin: 0;
margin-bottom: .1em;
}
.post, form {
width: 90%;
margin-left: 9%;
margin-top: 1em;
}
.hidden {
margin-left: .5em;
}
form {
margin-left: 2.9em;
}
.post {
background: #eef2ff;
/*border: 1px solid #34345c;*/
padding-bottom: .1em;
}
h3 {
font-weight: normal;
font-size: x-small;
color: grey;
margin: 0;
margin-right: .1em;
text-align: right;
clear: none;
height: 0;
}
h3 a {
color: grey;
font-weight: bold
}
h3 .postnum a, form .postnum {
text-decoration: none;
font-size: xx-large;
color: black;
font-style: italic;
font-family: serif;
font-weight: bolder;
float: left;
clear: none;
width: 1.5em;
text-align: right;
vertical-align: middle
}
.namelabel {
display: none
}
form .postnum {
padding-right: .3em
}
h3 .postnum a, blockquote {
position: relative;
left: -2em;
}
h3 .postnum a {height: 0}
blockquote {
clear: left;
}
blockquote p {
margin: 0
}
table .submit {
width: 100%;
}
td.label {
text-align: right;
}
table .mail {width: auto; float: right;}
.legal {
text-align: center;
font-size: small;
}
.manage {
text-align: center;
font-size: x-small;
}
.stylelist {
display: inline-block;
float: right
}
body.read h2 {
color: #34345c;
font-size: larger
}
.read {
background: #d6daf0;
}
.pages {
font-size: smaller
}
.bottomnav {
text-align: center;
}
.topbar {
margin: -2px;
margin-bottom: .5em;
width: 100%;
text-align: right
}
.threads {
background: #eef2ff;
}
.threads th {
padding: 0px;
margin: 0px;
}
.threads thead {
background: #d6daf0;
}
.threads a {
/*display: block;*/
}
.threads a:hover {
text-decoration: none;
}
.threads tr:hover {
background: #dfe3f9;
}
.threads th {
background: #d6daf0 !important
}
.threads a {
display: block;
}
.quote:hover {
background: #d6daf0; !important
}
+176
View File
@@ -0,0 +1,176 @@
body {
margin: 0px;
padding: 0px 8px 8px 8px;
background: #FFFFEE;
color: #800000;
}
a {
color: #0000EE;
}
a:visited {
color: #0000DD;
}
a:hover {
color:#DD0000;
}
h1 {
background: #EEAA88;
font-size: 2em;
font-weight: normal;
text-align: center;
padding: 0px;
margin: 0px;
}
h2 {
float: left;
color: #CC1105;
font-size: 1.2em;
font-weight: bold;
margin: 0px 0px 0px 1em;
padding: 0px;
}
h2 a {
color: #CC1105 !important;
text-decoration: none;
margin-right: -0.25em;
}
h2 a:hover {
text-decoration: underline;
}
h3 {
font-size: 1em;
font-weight: normal;
margin: 0px;
padding: 0px;
}
.replies {
clear: both;
margin: 3px;
padding: 3px;
font-weight: normal;
}
form {
clear: both;
background: #F0E0D6;
color: #800000;
font-family: serif;
margin: 3px;
padding: 3px;
-moz-border-radius: 4px;
}
label {
font-weight: bold !important;
}
input, textarea {
border: 1px solid #800000;
}
input[type=submit], input[type=button] {
color: #400000;
}
textarea {
-moz-border-radius: 4px;
}
.hborder {
background: #EEAA88;
color: #800000;
padding: 4px;
clear: both;
-moz-border-radius: 4px;
}
.topbar {
width: 100%;
text-align: right
}
.fullhead {
background: #EEAA88;
-moz-border-radius: 6px;
padding: 0.25em;
}
.head {
-moz-border-radius: 6px;
}
.hborder .head {
-moz-border-radius: 6px;
}
.midhead {
margin-left: 1em;
}
.newthread {
margin-top: 2em;
margin-bottom: 2em;
}
.newthread h2 {
color: #800000;
font-weight: normal;
}
.thread {
background: #F0E0D6;
padding: 4px;
margin-bottom: 2em;
-moz-border-radius: 6px;
clear: both;
}
.post {
clear: both;
margin: 0px 0px 0.5em 0px;
}
.postnum {
font-weight: bold;
margin-left: 0.3em;
margin-right: 0.3em;
}
.postnum a {
color: #800000;
text-decoration: none;
}
.postnum a:hover {
color:#DD0000;
}
.threadldiv {
background: #F0E0D6;
/*margin-bottom: 1em;*/
-moz-border-radius: 6px;
}
.hidden {
clear: both;
background: #EEAA88;
margin: -0.3em 1em 0.5em 1em;
-moz-border-radius: 4px;
}
.postername {
color: #117743;
font-weight: bold;
}
.postertrip {
color: #228854;
}
.legal {
text-align: center;
font-size: 0.8em;
}
+62
View File
@@ -0,0 +1,62 @@
.quote {
border-left: solid 2px #666;
padding: 0px 0px 0px 10px;
margin: 3px 0px;
display: block;
}
.quote .quote {
border-left: solid 2px #888;
}
.quote .quote .quote {
border-left: solid 2px #aaa;
}
.quote:hover {
background: #f0f0e0;
}
.spoiler {
color: black;
background-color: black;
}
.aa {
text-align: left;
font: 100% Mona, IPAMonaPGothic, 'MS PGothic' !important;
}
.o {
text-decoration: overline;
}
tt {
font-size: smaller;
}
.navlinks {
float: right;
}
.navlinks a {
text-decoration: none;
}
.threadlinks {
text-align: right;
}
.threadlinks a {
font-weight: bold;
}
.userdelete {
float: right;
text-align: center;
white-space: nowrap;
}
.abbrev {
color: #707070;
}
+70
View File
@@ -0,0 +1,70 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>{t}YOU ARE BANNED{/t}!</title>
<link rel="stylesheet" type="text/css" href="{%KU_BOARDSPATH}/css/site_futaba.css" title="Futaba">
<link rel="shortcut icon" href="{%KU_WEBPATH}/favicon.ico">
</head>
<h1>{%KU_NAME}</h1>
<h3>{%KU_SLOGAN}</h3>
<div style="margin: 3em;">
<h2>&nbsp;{t}YOU ARE BANNED{/t}! :\</h2>
<img src="{%KU_BOARDSPATH}/youarebanned.jpg" style="float: right;" alt=":'(">
{foreach name=bans item=ban from=$bans}
{if not $.foreach.bans.first}
{t}Additionally{/t},
{/if}
{if $ban.expired eq 1}
{t}You were banned from posting on{/t}
{else}
{t}You have been banned from posting on{/t}
{/if}
<strong>{if $ban.globalban eq 1}{t}All boards{/t}{else}/{implode('/</strong>, <strong>/', explode('|', $ban.boards))}/{/if}</strong> {t}for the following reason{/t}:<br /><br />
<strong>{$ban.reason}</strong><br /><br />
{t}Your ban was placed on{/t} <strong>{$ban.at|date_format:"%B %e, %Y, %I:%M %P %Z"}</strong>, {t}and{/t}
{if $ban.expired eq 1}
{t}expired on{/t} <strong>{$ban.until|date_format:"%B %e, %Y, %I:%M %P"}</strong><br />
<strong>{t}This ban has already expired, this message is for your information only and will not be displayed again{/t}</strong>
{else}
{if $ban.until > 0}{t}will expire on{/t} <strong>{$ban.until|date_format:"%B %e, %Y, %I:%M %P"}</strong>{else}{t}will not expire{/t}</strong>{/if}
{/if}
<br /><br />
{if %KU_APPEAL neq '' && $ban.expired eq 0}
{if $ban.appealat eq 0}
{t}You may <strong>not</strong> appeal this ban.{/t}
{elseif $ban.appealat eq -1}
{t}Your appeal is currently pending review.{/t}
{t}For reference, your appeal message is{/t}:<br />
<strong>{$ban.appeal}</strong>
{elseif $ban.appealat eq -2}
{t}Your appeal was reviewed and denied. You may <strong>not</strong> appeal this ban again.{/t}
{t}For reference, your appeal message was{/t}:<br />
<strong>{$ban.appeal}</strong>
{else}
{if $ban.appealat < $.now}
{t}You may now appeal this ban.{/t}
<br /><br />
<form action="{%KU_BOARDSPATH}/banned.php" method="post">
<input type="hidden" name="banid" value="{$ban.id}" />
<label for="appealmessage">{t}Appeal Message{/t}:</label>
<br />
<textarea name="appealmessage" rows="10" cols="50"></textarea>
<br /><input type="submit" value="{t}Send Appeal{/t}" />
</form>
{else}
{t}You may appeal this ban in{/t} <strong>{$ban.appealin}</strong>.
{/if}
{/if}
<br />
{/if}
{if $.foreach.bans.last}
<br />{t}Your IP address is{/t} <strong>{$.server.REMOTE_ADDR}</strong>.<br /><br />
{/if}
{if count($bans) > 1 && not $.foreach.bans.last}
<hr />
{/if}
{/foreach}
</div>
</body>
</html>
+33
View File
@@ -0,0 +1,33 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>{%KU_NAME}</title>
<link rel="shortcut icon" href="{%KU_WEBPATH}/favicon.ico" />
<link rel="stylesheet" type="text/css" href="{%KU_BOARDSPATH}/css/menu_global.css" />
{loop $styles}
<link rel="{if $ neq %KU_DEFAULTMENUSTYLE}alternate {/if}stylesheet" type="text/css" href="{%KU_WEBFOLDER}css/site_{$}.css" title="{$|capitalize}" />
<link rel="{if $ neq %KU_DEFAULTMENUSTYLE}alternate {/if}stylesheet" type="text/css" href="{%KU_WEBFOLDER}css/sitemenu_{$}.css" title="{$|capitalize}" />
{/loop}
<style type="text/css">{literal}
body {
width: 100% !important;
}
{/literal}</style>
</head>
<body>
<h1 style="font-size: 3em;">{t}Error{/t}</h1>
<br />
<h2 style="font-size: 2em;font-weight: bold;text-align: center;">
{$errormsg}
</h2>
{$errormsgext}
<div style="text-align: center;width: 100%;position: absolute;bottom: 10px;">
<br />
<div class="footer" style="clear: both;">
{* I'd really appreciate it if you left the link to kusabax.org in the footer, if you decide to modify this. That being said, you are not bound by license or any other terms to keep it there *}
<div class="legal"> - <a href="http://www.kusabax.org/" target="_top">kusaba x {%KU_VERSION}</a> -
</div>
</div>
</body>
</html>
+3
View File
@@ -0,0 +1,3 @@
<a name="bottom"></a>
</body>
</html>
+13
View File
@@ -0,0 +1,13 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html{$htmloptions} xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>{$title}</title>
<link rel="shortcut icon" href="{$cwebpath}/favicon.ico" />
{if $locale != 'en'}
<link rel="gettext" type="application/x-po" href="{$cwebpath}/inc/lang/{$locale}/LC_MESSAGES/kusaba.po" />
{/if}
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="cache-control" content="no-cache" />
<meta http-equiv="expires" content="Sat, 17 Mar 1990 00:00:01 GMT" />
<meta http-equiv="Content-Type" content="text/html;charset={%KU_CHARSET}" />
<script type="text/javascript" src="{$cwebpath}/lib/javascript/gettext.js"></script>
+428
View File
@@ -0,0 +1,428 @@
<form id="delform" action="{%KU_CGIPATH}/board.php" method="post">
<input type="hidden" name="board" value="{$board.name}" />
{foreach name=thread item=postsa from=$posts}
{foreach key=postkey item=post from=$postsa}
{if $post.parentid eq 0}
<span id="unhidethread{$post.id}{$board.name}" style="display: none;">
{t}Thread{/t} <a href="{%KU_BOARDSFOLDER}{$board.name}/res/{$post.id}.html">{$post.id}</a> {t}hidden.{/t}
<a href="#" onclick="javascript:togglethread('{$post.id}{$board.name}');return false;" title="{t}Un-Hide Thread{/t}">
<img src="{$cwebpath}css/icons/blank.gif" border="0" class="unhidethread" alt="{t}Un-Hide Thread{/t}" />
</a>
</span>
<div id="thread{$post.id}{$board.name}">
<script type="text/javascript"><!--
if (hiddenthreads.toString().indexOf('{$post.id}{$board.name}')!==-1) {
document.getElementById('unhidethread{$post.id}{$board.name}').style.display = 'block';
document.getElementById('thread{$post.id}{$board.name}').style.display = 'none';
}
//--></script>
<a name="s{$.foreach.thread.iteration}"></a>
{if ($post.file neq '' || $post.file_type neq '' ) && (($post.videobox eq '' && $post.file neq '') && $post.file neq 'removed')}
<span class="filesize">
{if $post.file_type eq 'mp3'}
{t}Audio{/t}
{else}
{t}File{/t}
{/if}
{if $post.file_type neq 'jpg' && $post.file_type neq 'gif' && $post.file_type neq 'png' && $post.videobox eq ''}
<a
{if %KU_NEWWINDOW}
target="_blank"
{/if}
href="{$file_path}/src/{$post.file}.{$post.file_type}">
{else}
<a href="{$file_path}/src/{$post.file}.{$post.file_type}" onclick="javascript:expandimg('{$post.id}', '{$file_path}/src/{$post.file}.{$post.file_type}', '{$file_path}/thumb/{$post.file}s.{$post.file_type}', '{$post.image_w}', '{$post.image_h}', '{$post.thumb_w}', '{$post.thumb_h}');return false;">
{/if}
{if isset($post.id3.comments_html)}
{if $post.id3.comments_html.artist.0 neq ''}
{$post.id3.comments_html.artist.0}
{if $post.id3.comments_html.title.0 neq ''}
-
{/if}
{/if}
{if $post.id3.comments_html.title.0 neq ''}
{$post.id3.comments_html.title.0}
{/if}
</a>
{else}
{$post.file}.{$post.file_type}</a>
{/if}
- ({$post.file_size_formatted}
{if $post.id3.comments_html.bitrate neq 0 || $post.id3.audio.sample_rate neq 0}
{if $post.id3.audio.bitrate neq 0}
- {round($post.id3.audio.bitrate / 1000)} kbps
{if $post.id3.audio.sample_rate neq 0}
-
{/if}
{/if}
{if $post.id3.audio.sample_rate neq 0}
{$post.id3.audio.sample_rate / 1000} kHz
{/if}
{/if}
{if $post.image_w > 0 && $post.image_h > 0}
, {$post.image_w}x{$post.image_h}
{/if}
{if $post.file_original neq '' && $post.file_original neq $post.file}
, {$post.file_original}.{$post.file_type}
{/if}
)
{if $post.id3.playtime_string neq ''}
{t}Length{/t}: {$post.id3.playtime_string}
{/if}
</span>
{if %KU_THUMBMSG}
<span class="thumbnailmsg">
{if $post.file_type neq 'jpg' && $post.file_type neq 'gif' && $post.file_type neq 'png' && $post.videobox eq ''}
{t}Extension icon displayed, click image to open file.{/t}
{else}
{t}Thumbnail displayed, click image for full size.{/t}
{/if}
</span>
{/if}
<br />
{/if}
{if $post.videobox eq '' && $post.file neq '' && ( $post.file_type eq 'jpg' || $post.file_type eq 'gif' || $post.file_type eq 'png')}
{if $post.file eq 'removed'}
<div class="nothumb">
{t}File<br />Removed{/t}
</div>
{else}
<a
{if %KU_NEWWINDOW}
target="_blank"
{/if}
href="{$file_path}/src/{$post.file}.{$post.file_type}">
<span id="thumb{$post.id}"><img src="{$file_path}/thumb/{$post.file}s.{$post.file_type}" alt="{$post.id}" class="thumb" height="{$post.thumb_h}" width="{$post.thumb_w}" /></span>
</a>
{/if}
{elseif $post.nonstandard_file neq ''}
{if $post.file eq 'removed'}
<div class="nothumb">
{t}File<br />Removed{/t}
</div>
{else}
<a
{if %KU_NEWWINDOW}
target="_blank"
{/if}
href="{$file_path}/src/{$post.file}.{$post.file_type}">
<span id="thumb{$post.id}"><img src="{$post.nonstandard_file}" alt="{$post.id}" class="thumb" height="{$post.thumb_h}" width="{$post.thumb_w}" /></span>
</a>
{/if}
{/if}
<a name="{$post.id}"></a>
<label>
<input type="checkbox" name="post[]" value="{$post.id}" />
{if $post.subject neq ''}
<span class="filetitle">
{$post.subject}
</span>
{/if}
{strip}
<span class="postername">
{if $post.email && $board.anonymous}
<a href="mailto:{$post.email}">
{/if}
{if $post.name eq '' && $post.tripcode eq ''}
{$board.anonymous}
{elseif $post.name eq '' && $post.tripcode neq ''}
{else}
{$post.name}
{/if}
{if $post.email neq '' && $board.anonymous neq ''}
</a>
{/if}
</span>
{if $post.tripcode neq ''}
<span class="postertrip">!{$post.tripcode}</span>
{/if}
{/strip}
{if $post.posterauthority eq 1}
<span class="admin">
&#35;&#35;&nbsp;{t}Admin{/t}&nbsp;&#35;&#35;
</span>
{elseif $post.posterauthority eq 4}
<span class="mod">
&#35;&#35;&nbsp;{t}Super Mod{/t}&nbsp;&#35;&#35;
</span>
{elseif $post.posterauthority eq 2}
<span class="mod">
&#35;&#35;&nbsp;{t}Mod{/t}&nbsp;&#35;&#35;
</span>
{/if}
{$post.timestamp_formatted}
</label>
<span class="reflink">
{$post.reflink}
</span>
{if $board.showid}
ID: {$post.ipmd5|substr:0:6}
{/if}
<span class="extrabtns">
{if $post.locked eq 1}
<img style="border: 0;" src="{$boardpath}css/locked.gif" alt="{t}Locked{/t}" />
{/if}
{if $post.stickied eq 1}
<img style="border: 0;" src="{$boardpath}css/sticky.gif" alt="{t}Stickied{/t}" />
{/if}
<span id="hide{$post.id}"><a href="#" onclick="javascript:togglethread('{if $post.parentid eq 0}{$post.id}{else}{$post.parentid}{/if}{$board.name}');return false;" title="Hide Thread"><img src="{$boardpath}css/icons/blank.gif" border="0" class="hidethread" alt="hide" /></a></span>
{if %KU_WATCHTHREADS}
<a href="#" onclick="javascript:addtowatchedthreads('{if $post.parentid eq 0}{$post.id}{else}{$post.parentid}{/if}','{$board.name}');return false;" title="Watch Thread"><img src="{$boardpath}css/icons/blank.gif" border="0" class="watchthread" alt="watch" /></a>
{/if}
{if %KU_EXPAND && $post.replies && ($post.replies + %KU_REPLIES) < 300}
<a href="#" onclick="javascript:expandthread('{if $post.parentid eq 0}{$post.id}{else}{$post.parentid}{/if}','{$board.name}');return false;" title="Expand Thread"><img src="{$boardpath}css/icons/blank.gif" border="0" class="expandthread" alt="expand" /></a>
{/if}
{if %KU_QUICKREPLY}
<a href="#postbox" onclick="javascript:quickreply('{if $post.parentid eq 0}{$post.id}{else}{$post.parentid}{/if}');" title="{t}Quick Reply{/t}"><img src="{$boardpath}css/icons/blank.gif" border="0" class="quickreply" alt="quickreply" /></a>
{/if}
</span>
<span id="dnb-{$board.name}-{$post.id}-y"></span>
[<a href="{%KU_BOARDSFOLDER}{$board.name}/res/{if $post.parentid eq 0}{$post.id}{else}{$post.parentid}{/if}.html">{t}Reply{/t}</a>]
{if %KU_FIRSTLAST && (($post.stickied eq 1 && $post.replies + %KU_REPLIESSTICKY > 50) || ($post.stickied eq 0 && $post.replies + %KU_REPLIES > 50))}
{if (($post.stickied eq 1 && $post.replies + %KU_REPLIESSTICKY > 100) || ($post.stickied eq 0 && $post.replies + %KU_REPLIES > 100))}
[<a href="{%KU_BOARDSFOLDER}{$board.name}/res/{if $post.parentid eq 0}{$post.id}{else}{$post.parentid}{/if}-100.html">{t}First 100 posts{/t}</a>]
{/if}
[<a href="{%KU_BOARDSFOLDER}{$board.name}/res/{$post.id}+50.html">{t}Last 50 posts{/t}</a>]
{/if}
<br />
{else}
<table>
<tbody>
<tr>
<td class="doubledash">
&gt;&gt;
</td>
<td class="reply" id="reply{$post.id}">
<a name="{$post.id}"></a>
<label>
<input type="checkbox" name="post[]" value="{$post.id}" />
{if $post.subject neq ''}
<span class="filetitle">
{$post.subject}
</span>
{/if}
{strip}
<span class="postername">
{if $post.email && $board.anonymous}
<a href="mailto:{$post.email}">
{/if}
{if $post.name eq '' && $post.tripcode eq ''}
{$board.anonymous}
{elseif $post.name eq '' && $post.tripcode neq ''}
{else}
{$post.name}
{/if}
{if $post.email neq '' && $board.anonymous neq ''}
</a>
{/if}
</span>
{if $post.tripcode neq ''}
<span class="postertrip">!{$post.tripcode}</span>
{/if}
{/strip}
{if $post.posterauthority eq 1}
<span class="admin">
&#35;&#35;&nbsp;{t}Admin{/t}&nbsp;&#35;&#35;
</span>
{elseif $post.posterauthority eq 4}
<span class="mod">
&#35;&#35;&nbsp;{t}Super Mod{/t}&nbsp;&#35;&#35;
</span>
{elseif $post.posterauthority eq 2}
<span class="mod">
&#35;&#35;&nbsp;{t}Mod{/t}&nbsp;&#35;&#35;
</span>
{/if}
{$post.timestamp_formatted}
</label>
<span class="reflink">
{$post.reflink}
</span>
{if $board.showid}
ID: {$post.ipmd5|substr:0:6}
{/if}
<span class="extrabtns">
{if $post.locked eq 1}
<img style="border: 0;" src="{$boardpath}css/locked.gif" alt="{t}Locked{/t}" />
{/if}
{if $post.stickied eq 1}
<img style="border: 0;" src="{$boardpath}css/sticky.gif" alt="{t}Stickied{/t}" />
{/if}
</span>
<span id="dnb-{$board.name}-{$post.id}-n"></span>
{if ($post.file neq '' || $post.file_type neq '' ) && (( $post.videobox eq '' && $post.file neq '') && $post.file neq 'removed')}
<br /><span class="filesize">
{if $post.file_type eq 'mp3'}
{t}Audio{/t}
{else}
{t}File{/t}
{/if}
{if $post.file_type neq 'jpg' && $post.file_type neq 'gif' && $post.file_type neq 'png' && $post.videobox eq ''}
<a
{if %KU_NEWWINDOW}
target="_blank"
{/if}
href="{$file_path}/src/{$post.file}.{$post.file_type}">
{else}
<a href="{$file_path}/src/{$post.file}.{$post.file_type}" onclick="javascript:expandimg('{$post.id}', '{$file_path}/src/{$post.file}.{$post.file_type}', '{$file_path}/thumb/{$post.file}s.{$post.file_type}', '{$post.image_w}', '{$post.image_h}', '{$post.thumb_w}', '{$post.thumb_h}');return false;">
{/if}
{if isset($post.id3.comments_html)}
{if $post.id3.comments_html.artist.0 neq ''}
{$post.id3.comments_html.artist.0}
{if $post.id3.comments_html.title.0 neq ''}
-
{/if}
{/if}
{if $post.id3.comments_html.title.0 neq ''}
{$post.id3.comments_html.title.0}
{/if}
</a>
{else}
{$post.file}.{$post.file_type}</a>
{/if}
- ({$post.file_size_formatted}
{if $post.id3.comments_html.bitrate neq 0 || $post.id3.audio.sample_rate neq 0}
{if $post.id3.audio.bitrate neq 0}
- {round($post.id3.audio.bitrate / 1000)} kbps
{if $post.id3.audio.sample_rate neq 0}
-
{/if}
{/if}
{if $post.id3.audio.sample_rate neq 0}
{$post.id3.audio.sample_rate / 1000} kHz
{/if}
{/if}
{if $post.image_w > 0 && $post.image_h > 0}
, {$post.image_w}x{$post.image_h}
{/if}
{if $post.file_original neq '' && $post.file_original neq $post.file}
, {$post.file_original}.{$post.file_type}
{/if}
)
{if $post.id3.playtime_string neq ''}
{t}Length{/t}: {$post.id3.playtime_string}
{/if}
</span>
{if %KU_THUMBMSG}
<span class="thumbnailmsg">
{if $post.file_type neq 'jpg' && $post.file_type neq 'gif' && $post.file_type neq 'png' && $post.videobox eq ''}
{t}Extension icon displayed, click image to open file.{/t}
{else}
{t}Thumbnail displayed, click image for full size.{/t}
{/if}
</span>
{/if}
{/if}
{if $post.videobox eq '' && $post.file neq '' && ( $post.file_type eq 'jpg' || $post.file_type eq 'gif' || $post.file_type eq 'png')}
<br />
{if $post.file eq 'removed'}
<div class="nothumb">
{t}File<br />Removed{/t}
</div>
{else}
<a
{if %KU_NEWWINDOW}
target="_blank"
{/if}
href="{$file_path}/src/{$post.file}.{$post.file_type}">
<span id="thumb{$post.id}"><img src="{$file_path}/thumb/{$post.file}s.{$post.file_type}" alt="{$post.id}" class="thumb" height="{$post.thumb_h}" width="{$post.thumb_w}" /></span>
</a>
{/if}
{elseif $post.nonstandard_file neq ''}
<br />
{if $post.file eq 'removed'}
<div class="nothumb">
{t}File<br />Removed{/t}
</div>
{else}
<a
{if %KU_NEWWINDOW}
target="_blank"
{/if}
href="{$file_path}/src/{$post.file}.{$post.file_type}">
<span id="thumb{$post.id}"><img src="{$post.nonstandard_file}" alt="{$post.id}" class="thumb" height="{$post.thumb_h}" width="{$post.thumb_w}" /></span>
</a>
{/if}
{/if}
{/if}
{if $post.file_type eq 'mp3'}
<!--[if !IE]> -->
<object type="application/x-shockwave-flash" data="{%KU_WEBPATH}/inc/player/player.swf?playerID={$post.id}&amp;soundFile={$file_path}/src/{$post.file|utf8_encode|urlencode}.mp3{if $post.id3.comments_html.artist.0 neq ''}&amp;artists={$post.id3.comments_html.artist.0}{/if}{if $post.id3.comments_html.title.0 neq ''}&amp;titles={$post.id3.comments_html.title.0|html_entity_decode|utf8_encode|urlencode}{/if}&amp;wmode=transparent" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=10,0,22,87" width="290" height="24">
<param name="wmode" value="transparent" />
<!-- <![endif]-->
<!--[if IE]>
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=10,0,22,87" width="290" height="24">
<param name="movie" value="{%KU_WEBPATH}/inc/player/player.swf?playerID={$post.id}&amp;soundFile={$file_path}/src/{$post.file|utf8_encode|urlencode}.mp3{if $post.id3.comments_html.artist.0 neq ''}&amp;artists={$post.id3.comments_html.artist.0}{/if}{if $post.id3.comments_html.title.0 neq ''}&amp;titles={$post.id3.comments_html.title.0|html_entity_decode|utf8_encode|urlencode}{/if}&amp;wmode=transparent" />
<param name="wmode" value="transparent" />
<!-->
</object>
<!-- <![endif]-->
{/if}
<blockquote>
{if $post.videobox}
{$post.videobox}
{/if}
{$post.message}
</blockquote>
{if not $post.stickied && $post.parentid eq 0 && (($board.maxage > 0 && ($post.timestamp + ($board.maxage * 3600)) < (time() + 7200 ) ) || ($post.deleted_timestamp > 0 && $post.deleted_timestamp <= (time() + 7200)))}
<span class="oldpost">
{t}Marked for deletion (old){/t}
</span>
<br />
{/if}
{if $post.parentid eq 0}
<div id="replies{$post.id}{$board.name}">
{if $post.replies}
<span class="omittedposts">
{if $post.stickied eq 0}
{$post.replies}
{if $post.replies eq 1}
{t lower="yes"}Post{/t}
{else}
{t lower="yes"}Posts{/t}
{/if}
{else}
{$post.replies}
{if $post.replies eq 1}
{t lower="yes"}Post{/t}
{else}
{t lower="yes"}Posts{/t}
{/if}
{/if}
{if $post.images > 0}
{t}and{/t} {$post.images}
{if $post.images eq 1}
{t lower="yes"}Image{/t}
{else}
{t lower="yes"}Images{/t}
{/if}
{/if}
{t}omitted{/t}. {t}Click Reply to view.{/t}
</span>
{/if}
{else}
</td>
</tr>
</tbody>
</table>
{/if}
{/foreach}
</div>
</div>
<br clear="left" />
<hr />
{/foreach}
+101
View File
@@ -0,0 +1,101 @@
{if not $isread}
<table class="userdelete">
<tbody>
<tr>
<td>
{t}Delete post{/t}
[<input type="checkbox" name="fileonly" id="fileonly" value="on" /><label for="fileonly">{t}File Only{/t}</label>]<br />{t}Password{/t}
<input type="password" name="postpassword" size="8" />&nbsp;<input name="deletepost" value="{t}Delete{/t}" type="submit" />
{if $board.enablereporting eq 1}
</td>
</tr>
<tr>
<td>
{t}Report post{t}<br />
{t}Reason{/t}
<input type="text" name="reportreason" size="10" />&nbsp;<input name="reportpost" value="{t}Report{/t}" type="submit" />
{/if}
</td>
</tr>
</tbody>
</table>
</form>
<script type="text/javascript"><!--
set_delpass("delform");
//--></script>
{/if}
{if $replythread eq 0}
<table border="1">
<tbody>
<tr>
<td>
{if $thispage eq 0}
{t}Previous{/t}
{else}
<form method="get" action="{%KU_BOARDSFOLDER}{$board.name}/{if ($thispage-1) neq 0}{$thispage-1}.html{/if}">
<input value="{t}Previous{/t}" type="submit" /></form>
{/if}
</td>
<td>
&#91;{if $thispage neq 0}<a href="{%KU_BOARDSPATH}/{$board.name}/">{/if}0{if $thispage neq 0}</a>{/if}&#93;
{section name=pages loop=$numpages}
{strip}
&#91;
{if $.section.pages.iteration neq $thispage}<a href="{%KU_BOARDSFOLDER}{$board.name}/{$.section.pages.iteration}.html">
{/if}
{$.section.pages.iteration}
{if $.section.pages.iteration neq $thispage}
</a>
{/if}
&#93;
{/strip}
{/section}
</td>
<td>
{if $thispage eq $numpages}
{t}Next{/t}
{else}
<form method="get" action="{%KU_BOARDSPATH}/{$board.name}/{$thispage+1}.html"><input value="{t}Next{/t}" type="submit" /></form>
{/if}
</td>
</tr>
</tbody>
</table>
{/if}
<br />
{if $boardlist}
<div class="navbar">
{if %KU_GENERATEBOARDLIST}
{foreach name=sections item=sect from=$boardlist}
[
{foreach name=brds item=brd from=$sect}
<a title="{$brd.desc}" href="{%KU_BOARDSFOLDER}{$brd.name}/">{$brd.name}</a>{if $.foreach.brds.last}{else} / {/if}
{/foreach}
]
{/foreach}
{else}
{if is_file($boardlist)}
{include $boardlist}
{/if}
{/if}
</div>
{/if}
<br />
<div class="footer" style="clear: both;">
{* I'd really appreciate it if you left the link to kusabax.org in the footer, if you decide to modify this. That being said, you are not bound by license or any other terms to keep it there *}
- <a href="http://www.kusabax.org/" target="_top">kusaba x {%KU_VERSION}</a>
{if $executiontime neq ''} + {t}Took{/t} {$executiontime}s -{/if}
{if $botads neq ''}
<div class="content ads">
<center>
{$botads}
</center>
</div>
{/if}
</div>
+98
View File
@@ -0,0 +1,98 @@
<script type="text/javascript" src="{$cwebpath}lib/javascript/protoaculous-compressed.js"></script>
<link rel="stylesheet" type="text/css" href="{$cwebpath}css/img_global.css" />
{loop $ku_styles}
<link rel="{if $ neq $__.ku_defaultstyle}alternate {/if}stylesheet" type="text/css" href="{$__.cwebpath}css/{$}.css" title="{$|capitalize}" />
{/loop}
{if $locale eq 'ja'}
{literal}
<style type="text/css">
*{
font-family: IPAMonaPGothic, Mona, 'MS PGothic', YOzFontAA97 !important;
font-size: 1em;
}
</style>
{/literal}
{/if}
{if %KU_RSS neq ''}
<link rel="alternate" type="application/rss+xml" title="RSS" href="{%KU_BOARDSPATH}/{$board.name}/rss.xml" />
{/if}
<script type="text/javascript"><!--
var ku_boardspath = '{%KU_BOARDSPATH}';
var ku_cgipath = '{%KU_CGIPATH}';
var style_cookie = "kustyle";
{if $replythread > 0}
var ispage = false;
{else}
var ispage = true;
{/if}
//--></script>
<script type="text/javascript" src="{%KU_WEBPATH}/lib/javascript/kusaba.js"></script>
<script type="text/javascript"><!--
var hiddenthreads = getCookie('hiddenthreads').split('!');
//--></script>
</head>
<body>
<div class="adminbar">
{if %KU_STYLESWITCHER}
{if %KU_DROPSWITCHER}
<select onchange="javascript:if(selectedIndex != 0)set_stylesheet(options[selectedIndex].value);return false;">
<option>Styles</option>
{loop $ku_styles}
<option value="{$|capitalize}">{$|capitalize}</option>;
{/loop}
</select>
{else}
{loop $ku_styles}
[<a href="#" onclick="javascript:set_stylesheet('{$|capitalize}');return false;">{$|capitalize}</a>]&nbsp;
{/loop}
{/if}
{if count($ku_styles) > 0}
-&nbsp;
{/if}
{/if}
{if %KU_WATCHTHREADS}
[<a href="#" onclick="javascript:showwatchedthreads();return false" title="{t}Watched Threads{/t}">WT</a>]&nbsp;
{/if}
[<a href="{%KU_WEBPATH}" target="_top">{t}Home{/t}</a>]&nbsp;[<a href="{%KU_CGIPATH}/manage.php" target="_top">{t}Manage{/t}</a>]
</div>
<div class="navbar">
{if %KU_GENERATEBOARDLIST}
{foreach name=sections item=sect from=$boardlist}
[
{foreach name=brds item=brd from=$sect}
<a title="{$brd.desc}" href="{%KU_BOARDSFOLDER}{$brd.name}/">{$brd.name}</a>{if $.foreach.brds.last}{else} / {/if}
{/foreach}
]
{/foreach}
{else}
{if is_file($boardlist)}
{include $boardlist}
{/if}
{/if}
</div>
{if %KU_WATCHTHREADS && not $isoekaki && not $hidewatchedthreads}
<script type="text/javascript"><!--
if (getCookie('showwatchedthreads') == '1') {
document.write('<div id="watchedthreads" style="top: {$ad_top}px; left: 25px;" class="watchedthreads"><div class="postblock" id="watchedthreadsdraghandle" style="width: 100%;">{t}Watched Threads{/t}<\/div><span id="watchedthreadlist"><\/span><div id="watchedthreadsbuttons"><a href="#" onclick="javascript:hidewatchedthreads();return false;" title="{t}Hide the watched threads box{/t}"><img src="{$cwebpath}css/icons/blank.gif" border="0" class="hidewatchedthreads" alt="hide" /><\/a>&nbsp;<a href="#" onclick="javascript:getwatchedthreads(\'0\', \'{$board.name}\');return false;" title="{t}Refresh watched threads{/t}"><img src="{$cwebpath}css/icons/blank.gif" border="0" class="refreshwatchedthreads" alt="refresh" /><\/a><\/div><\/div>');
watchedthreadselement = document.getElementById('watchedthreads');
watchedthreadselement.style.top = getCookie('watchedthreadstop');
watchedthreadselement.style.left = getCookie('watchedthreadsleft');
watchedthreadselement.style.width = Math.max(250,getCookie('watchedthreadswidth')) + 'px';
watchedthreadselement.style.height = Math.max(75,getCookie('watchedthreadsheight')) + 'px';
getwatchedthreads('<!sm_threadid>', '{$board.name}');
}
//--></script>
{/if}
<div class="logo">
{if %KU_HEADERURL neq '' && $board.image eq ''}
<img src="{%KU_HEADERURL}" alt="{t}Logo{/t}" /><br />
{elseif $board.image neq '' && $board.image neq "none"}
<img src="{$board.image}" alt="{t}Logo{/t}" /><br />
{/if}
{if %KU_DIRTITLE}
/{$board.name}/ -
{/if}
{$board.desc}</div>
{$board.includeheader}
<hr />
+160
View File
@@ -0,0 +1,160 @@
<div class="postarea">
<a id="postbox"></a>
<form name="postform" id="postform" action="{%KU_CGIPATH}/board.php" method="post" enctype="multipart/form-data"
{if $board.enablecaptcha eq 1}
onsubmit="return checkcaptcha('postform');"
{/if}
>
<input type="hidden" name="board" value="{$board.name}" />
<input type="hidden" name="replythread" value="<!sm_threadid>" />
{if $board.maximagesize > 0}
<input type="hidden" name="MAX_FILE_SIZE" value="{$board.maximagesize}" />
{/if}
<input type="text" name="email" size="28" maxlength="75" value="" style="display: none;" />
<table class="postform">
<tbody>
{if $board.forcedanon neq 1}
<tr>
<td class="postblock">
{t}Name{/t}</td>
<td>
<input type="text" name="name" size="28" maxlength="75" accesskey="n" />
</td>
</tr>
{/if}
<tr>
<td class="postblock">
{t}Email{/t}</td>
<td>
<input type="text" name="em" size="28" maxlength="75" accesskey="e" />
</td>
</tr>
{if $board.enablecaptcha eq 1}
<tr>
<td class="postblock'">
<a href="#" onclick="javascript:document.getElementById('captchaimage').src = '{%KU_CGIPATH}/captcha.php?' + Math.random();return false;"><img id="captchaimage" src="{%KU_CGIPATH}/captcha.php" border="0" width="90" height="25" alt="Captcha image"></a>
</td>
<td>
<input type="text" name="captcha" size="28" maxlength="10" accesskey="c" />
</td>
</tr>
{/if}
<tr>
<td class="postblock">
{t}Subject{/t}</td>
<td>
{strip}<input type="text" name="subject" size="35" maxlength="75" accesskey="s" />&nbsp;<input type="submit" value="
{if %KU_QUICKREPLY && $replythread eq 0}
{t}Submit{/t}" accesskey="z" />&nbsp;(<span id="posttypeindicator">{t}new thread{/t}</span>)
{elseif %KU_QUICKREPLY && $replythread neq 0}
{t}Reply{/t}" accesskey="z" />&nbsp;(<span id="posttypeindicator">{t}reply to{/t} <!sm_threadid></span>)
{else}
{t}Submit{/t}" accesskey="z" />
{/if}{/strip}
</td>
</tr>
<tr>
<td class="postblock">
{t}Message{/t}
</td>
<td>
<textarea name="message" cols="48" rows="4" accesskey="m"></textarea>
</td>
</tr>
{if $board.uploadtype eq 0 || $board.uploadtype eq 1}
<tr>
<td class="postblock">
{t}File{/t}
</td>
<td>
<input type="file" name="imagefile" size="35" accesskey="f" />
{if $replythread eq 0 && $board.enablenofile eq 1 }
[<input type="checkbox" name="nofile" id="nofile" accesskey="q" /><label for="nofile"> {t}No File{/t}</label>]
{/if}
</td>
</tr>
{/if}
{if ($board.uploadtype eq 1 || $board.uploadtype eq 2) && $board.embeds_allowed neq ''}
<tr>
<td class="postblock">
{t}Embed{/t}
</td>
<td>
<input type="text" name="embed" size="28" maxlength="75" accesskey="e" />&nbsp;<select name="embedtype">
{foreach name=embed from=$embeds item=embed}
{if in_array($embed.filetype,explode(',' $board.embeds_allowed))}
<option value="{$embed.name|lower}">{$embed.name}</option>
{/if}
{/foreach}
</select>
<a class="rules" href="#postbox" onclick="window.open('{%KU_WEBPATH}/embedhelp.php','embedhelp','toolbar=0,location=0,status=0,menubar=0,scrollbars=0,resizable=0,width=300,height=210');return false;">Help</a>
</td>
</tr>
{/if}
<tr>
<td class="postblock">
{t}Password{/t}
</td>
<td>
<input type="password" name="postpassword" size="8" accesskey="p" />&nbsp;{t}(for post and file deletion){/t}
</td>
</tr>
<tr id="passwordbox"><td></td><td></td></tr>
<tr>
<td colspan="2" class="rules">
<ul style="margin-left: 0; margin-top: 0; margin-bottom: 0; padding-left: 0;">
<li>{t}Supported file types are{/t}:
{if $board.filetypes_allowed neq ''}
{foreach name=files item=filetype from=$board.filetypes_allowed}
{$filetype.0|upper}{if $.foreach.files.last}{else}, {/if}
{/foreach}
{else}
{t}None{/t}
{/if}
</li>
<li>{t}Maximum file size allowed is{/t} {math "round(x/1024)" x=$board.maximagesize} KB.</li>
<li>{t 1=%KU_THUMBWIDTH 2=%KU_THUMBHEIGHT}Images greater than %1x%2 pixels will be thumbnailed.{/t}</li>
<li>{t 1=$board.uniqueposts}Currently %1 unique user posts.{/t}
{if $board.enablecatalog eq 1}
<a href="{%KU_BOARDSFOLDER}{$board.name}/catalog.html">{t}View catalog{/t}</a>
{/if}
</li>
</ul>
{if %KU_BLOTTER && $blotter}
<br />
<ul style="margin-left: 0; margin-top: 0; margin-bottom: 0; padding-left: 0;">
<li style="position: relative;">
<span style="color: red;">
{t}Blotter updated{/t}: {$blotter_updated|date_format:"%Y-%m-%d"}
</span>
<span style="color: red;text-align: right;position: absolute;right: 0px;">
<a href="#" onclick="javascript:toggleblotter(true);return false;">{t}Show/Hide{/t}</a> <a href="{%KU_WEBPATH}/blotter.php">{t}Show All{/t}</a>
</span>
</li>
{$blotter}
</ul>
<script type="text/javascript"><!--
if (getCookie('ku_showblotter') == '1') {
toggleblotter(false);
}
--></script>
{/if}
</td>
</tr>
</tbody>
</table>
</form>
<hr />
{if $topads neq ''}
<div class="content ads">
<center>
{$topads}
</center>
</div>
<hr />
{/if}
</div>
<script type="text/javascript"><!--
set_inputs("postform");
//--></script>
+19
View File
@@ -0,0 +1,19 @@
&#91;<a href="{%KU_WEBFOLDER}{$board.name}/">{t}Return{/t}</a>&#93;
{if %KU_FIRSTLAST && ( count($posts) > 50 || $replycount > 50)}
&#91;<a href="{%KU_WEBFOLDER}{$board.name}/res/{$posts.0.id}.html">{t}Entire Thread{/t}</a>&#93;
&#91;<a href="{%KU_WEBFOLDER}{$board.name}/res/{$posts.0.id}+50.html">{t}Last 50 posts{/t}</a>&#93;
{if ( count($posts) > 100 || $replycount > 100) }
&#91;<a href="{%KU_WEBFOLDER}{$board.name}/res/{$posts.0.id}-100.html">{t}First 100 posts{/t}</a>&#93;
{/if}
{/if}
{if not $isread}
<div class="replymode">{t}Posting mode: Reply{/t}
{if $modifier eq 'first100'}
[{t}First 100 posts{/t}]
{elseif $modifier eq 'last50'}
[{t}Last 50 posts{/t}]
{/if}
{else}
&#91;<a href="{%KU_WEBFOLDER}{$board.name}/res/{$posts.0.id}.html">{t}Entire Thread{/t}</a>&#93;
{/if}
</div>
+419
View File
@@ -0,0 +1,419 @@
{if not $isexpand and not $isread}
<form id="delform" action="{%KU_CGIPATH}/board.php" method="post">
<input type="hidden" name="board" value="{$board.name}" />
{/if}
{foreach key=postkey item=post from=$posts name=postsloop}
{if $post.parentid eq 0}
<a name="s{$.foreach.thread.iteration}"></a>
{if ($post.file neq '' || $post.file_type neq '' ) && (( $post.videobox eq '' && $post.file neq '') && $post.file neq 'removed')}
<span class="filesize">
{if $post.file_type eq 'mp3'}
{t}Audio{/t}
{else}
{t}File{/t}
{/if}
{if $post.file_type neq 'jpg' && $post.file_type neq 'gif' && $post.file_type neq 'png' && $post.videobox eq ''}
<a
{if %KU_NEWWINDOW}
target="_blank"
{/if}
href="{$file_path}/src/{$post.file}.{$post.file_type}">
{else}
<a href="{$file_path}/src/{$post.file}.{$post.file_type}" onclick="javascript:expandimg('{$post.id}', '{$file_path}/src/{$post.file}.{$post.file_type}', '{$file_path}/thumb/{$post.file}s.{$post.file_type}', '{$post.image_w}', '{$post.image_h}', '{$post.thumb_w}', '{$post.thumb_h}');return false;">
{/if}
{if isset($post.id3.comments_html)}
{if $post.id3.comments_html.artist.0 neq ''}
{$post.id3.comments_html.artist.0}
{if $post.id3.comments_html.title.0 neq ''}
-
{/if}
{/if}
{if $post.id3.comments_html.title.0 neq ''}
{$post.id3.comments_html.title.0}
{/if}
</a>
{else}
{$post.file}.{$post.file_type}</a>
{/if}
- ({$post.file_size_formatted}
{if $post.id3.comments_html.bitrate neq 0 || $post.id3.audio.sample_rate neq 0}
{if $post.id3.audio.bitrate neq 0}
- {round($post.id3.audio.bitrate / 1000)} kbps
{if $post.id3.audio.sample_rate neq 0}
-
{/if}
{/if}
{if $post.id3.audio.sample_rate neq 0}
{$post.id3.audio.sample_rate / 1000} kHz
{/if}
{/if}
{if $post.image_w > 0 && $post.image_h > 0}
, {$post.image_w}x{$post.image_h}
{/if}
{if $post.file_original neq '' && $post.file_original neq $post.file}
, {$post.file_original}.{$post.file_type}
{/if}
)
{if $post.id3.playtime_string neq ''}
{t}Length{/t}: {$post.id3.playtime_string}
{/if}
</span>
{if %KU_THUMBMSG}
<span class="thumbnailmsg">
{if $post.file_type neq 'jpg' && $post.file_type neq 'gif' && $post.file_type neq 'png' && $post.videobox eq ''}
{t}Extension icon displayed, click image to open file.{/t}
{else}
{t}Thumbnail displayed, click image for full size.{/t}
{/if}
</span>
{/if}
<br />
{/if}
{if $post.videobox eq '' && $post.file neq '' && ( $post.file_type eq 'jpg' || $post.file_type eq 'gif' || $post.file_type eq 'png')}
{if $post.file eq 'removed'}
<div class="nothumb">
{t}File<br />Removed{/t}
</div>
{else}
<a
{if %KU_NEWWINDOW}
target="_blank"
{/if}
href="{$file_path}/src/{$post.file}.{$post.file_type}">
<span id="thumb{$post.id}"><img src="{$file_path}/thumb/{$post.file}s.{$post.file_type}" alt="{$post.id}" class="thumb" height="{$post.thumb_h}" width="{$post.thumb_w}" /></span>
</a>
{/if}
{elseif $post.nonstandard_file neq ''}
{if $post.file eq 'removed'}
<div class="nothumb">
{t}File<br />Removed{/t}
</div>
{else}
<a
{if %KU_NEWWINDOW}
target="_blank"
{/if}
href="{$file_path}/src/{$post.file}.{$post.file_type}">
<span id="thumb{$post.id}"><img src="{$post.nonstandard_file}" alt="{$post.id}" class="thumb" height="{$post.thumb_h}" width="{$post.thumb_w}" /></span>
</a>
{/if}
{/if}
<a name="{$post.id}"></a>
<label>
<input type="checkbox" name="post[]" value="{$post.id}" />
{if $post.subject neq ''}
<span class="filetitle">
{$post.subject}
</span>
{/if}
{strip}
<span class="postername">
{if $post.email && $board.anonymous}
<a href="mailto:{$post.email}">
{/if}
{if $post.name eq '' && $post.tripcode eq ''}
{$board.anonymous}
{elseif $post.name eq '' && $post.tripcode neq ''}
{else}
{$post.name}
{/if}
{if $post.email neq '' && $board.anonymous neq ''}
</a>
{/if}
</span>
{if $post.tripcode neq ''}
<span class="postertrip">!{$post.tripcode}</span>
{/if}
{/strip}
{if $post.posterauthority eq 1}
<span class="admin">
&#35;&#35;&nbsp;{t}Admin{/t}&nbsp;&#35;&#35;
</span>
{elseif $post.posterauthority eq 4}
<span class="mod">
&#35;&#35;&nbsp;{t}Super Mod{/t}&nbsp;&#35;&#35;
</span>
{elseif $post.posterauthority eq 2}
<span class="mod">
&#35;&#35;&nbsp;{t}Mod{/t}&nbsp;&#35;&#35;
</span>
{/if}
{$post.timestamp_formatted}
</label>
<span class="reflink">
{$post.reflink}
</span>
{if $board.showid}
ID: {$post.ipmd5|substr:0:6}
{/if}
<span id="dnb-{$board.name}-{$post.id}-y"></span>
<br />
{else}
{if $numimages > 0 && $isexpand && $.foreach.postsloop.first}
<a href="#top" onclick="javascript:
{foreach key=postkey2 item=post2 from=$posts}
{if $post2.parentid neq 0}
{if $post2.file_type eq 'jpg' || $post2.file_type eq 'gif' || $post2.file_type eq 'png'}
expandimg('{$post2.id}', '{$file_path}/src/{$post2.file}.{$post2.file_type}', '{$file_path}/thumb/{$post2.file}s.{$post2.file_type}', '{$post2.image_w}', '{$post2.image_h}', '{$post2.thumb_w}', '{$post2.thumb_h}');
{/if}
{/if}
{/foreach}
return false;">{t}Expand all images{/t}</a>
{/if}
<table>
<tbody>
<tr>
<td class="doubledash">
&gt;&gt;
</td>
<td class="reply" id="reply{$post.id}">
<a name="{$post.id}"></a>
<label>
<input type="checkbox" name="post[]" value="{$post.id}" />
{if $post.subject neq ''}
<span class="filetitle">
{$post.subject}
</span>
{/if}
{strip}
<span class="postername">
{if $post.email && $board.anonymous}
<a href="mailto:{$post.email}">
{/if}
{if $post.name eq '' && $post.tripcode eq ''}
{$board.anonymous}
{elseif $post.name eq '' && $post.tripcode neq ''}
{else}
{$post.name}
{/if}
{if $post.email neq '' && $board.anonymous neq ''}
</a>
{/if}
</span>
{if $post.tripcode neq ''}
<span class="postertrip">!{$post.tripcode}</span>
{/if}
{/strip}
{if $post.posterauthority eq 1}
<span class="admin">
&#35;&#35;&nbsp;{t}Admin{/t}&nbsp;&#35;&#35;
</span>
{elseif $post.posterauthority eq 4}
<span class="mod">
&#35;&#35;&nbsp;{t}Super Mod{/t}&nbsp;&#35;&#35;
</span>
{elseif $post.posterauthority eq 2}
<span class="mod">
&#35;&#35;&nbsp;{t}Mod{/t}&nbsp;&#35;&#35;
</span>
{/if}
{$post.timestamp_formatted}
</label>
<span class="reflink">
{$post.reflink}
</span>
{if $board.showid}
ID: {$post.ipmd5|substr:0:6}
{/if}
<span class="extrabtns">
{if $post.locked eq 1}
<img style="border: 0;" src="{$boardpath}css/locked.gif" alt="{t}Locked{/t}" />
{/if}
{if $post.stickied eq 1}
<img style="border: 0;" src="{$boardpath}css/sticky.gif" alt="{t}Stickied{/t}" />
{/if}
</span>
<span id="dnb-{$board.name}-{$post.id}-n"></span>
{if ($post.file neq '' || $post.file_type neq '' ) && (( $post.videobox eq '' && $post.file neq '') && $post.file neq 'removed')}
<br /><span class="filesize">
{if $post.file_type eq 'mp3'}
{t}Audio{/t}
{else}
{t}File{/t}
{/if}
{if $post.file_type neq 'jpg' && $post.file_type neq 'gif' && $post.file_type neq 'png' && $post.videobox eq ''}
<a
{if %KU_NEWWINDOW}
target="_blank"
{/if}
href="{$file_path}/src/{$post.file}.{$post.file_type}">
{else}
<a href="{$file_path}/src/{$post.file}.{$post.file_type}" onclick="javascript:expandimg('{$post.id}', '{$file_path}/src/{$post.file}.{$post.file_type}', '{$file_path}/thumb/{$post.file}s.{$post.file_type}', '{$post.image_w}', '{$post.image_h}', '{$post.thumb_w}', '{$post.thumb_h}');return false;">
{/if}
{if isset($post.id3.comments_html)}
{if $post.id3.comments_html.artist.0 neq ''}
{$post.id3.comments_html.artist.0}
{if $post.id3.comments_html.title.0 neq ''}
-
{/if}
{/if}
{if $post.id3.comments_html.title.0 neq ''}
{$post.id3.comments_html.title.0}
{/if}
</a>
{else}
{$post.file}.{$post.file_type}</a>
{/if}
- ({$post.file_size_formatted}
{if $post.id3.comments_html.bitrate neq 0 || $post.id3.audio.sample_rate neq 0}
{if $post.id3.audio.bitrate neq 0}
- {round($post.id3.audio.bitrate / 1000)} kbps
{if $post.id3.audio.sample_rate neq 0}
-
{/if}
{/if}
{if $post.id3.audio.sample_rate neq 0}
{$post.id3.audio.sample_rate / 1000} kHz
{/if}
{/if}
{if $post.image_w > 0 && $post.image_h > 0}
, {$post.image_w}x{$post.image_h}
{/if}
{if $post.file_original neq '' && $post.file_original neq $post.file}
, {$post.file_original}.{$post.file_type}
{/if}
)
{if $post.id3.playtime_string neq ''}
{t}Length{/t}: {$post.id3.playtime_string}
{/if}
</span>
{if %KU_THUMBMSG}
<span class="thumbnailmsg">
{if $post.file_type neq 'jpg' && $post.file_type neq 'gif' && $post.file_type neq 'png' && $post.videobox eq ''}
{t}Extension icon displayed, click image to open file.{/t}
{else}
{t}Thumbnail displayed, click image for full size.{/t}
{/if}
</span>
{/if}
{/if}
{if $post.videobox eq '' && $post.file neq '' && ( $post.file_type eq 'jpg' || $post.file_type eq 'gif' || $post.file_type eq 'png')}
<br />
{if $post.file eq 'removed'}
<div class="nothumb">
{t}File<br />Removed{/t}
</div>
{else}
<a
{if %KU_NEWWINDOW}
target="_blank"
{/if}
href="{$file_path}/src/{$post.file}.{$post.file_type}">
<span id="thumb{$post.id}"><img src="{$file_path}/thumb/{$post.file}s.{$post.file_type}" alt="{$post.id}" class="thumb" height="{$post.thumb_h}" width="{$post.thumb_w}" /></span>
</a>
{/if}
{elseif $post.nonstandard_file neq ''}
<br />
{if $post.file eq 'removed'}
<div class="nothumb">
{t}File<br />Removed{/t}
</div>
{else}
<a
{if %KU_NEWWINDOW}
target="_blank"
{/if}
href="{$file_path}/src/{$post.file}.{$post.file_type}">
<span id="thumb{$post.id}"><img src="{$post.nonstandard_file}" alt="{$post.id}" class="thumb" height="{$post.thumb_h}" width="{$post.thumb_w}" /></span>
</a>
{/if}
{/if}
{/if}
{if $post.file_type eq 'mp3'}
<!--[if !IE]> -->
<object type="application/x-shockwave-flash" data="{%KU_WEBPATH}/inc/player/player.swf?playerID={$post.id}&amp;soundFile={$file_path}/src/{$post.file|utf8_encode|urlencode}.mp3{if $post.id3.comments_html.artist.0 neq ''}&amp;artists={$post.id3.comments_html.artist.0}{/if}{if $post.id3.comments_html.title.0 neq ''}&amp;titles={$post.id3.comments_html.title.0|html_entity_decode|utf8_encode|urlencode}{/if}&amp;wmode=transparent" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=10,0,22,87" width="290" height="24">
<param name="wmode" value="transparent" />
<!-- <![endif]-->
<!--[if IE]>
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=10,0,22,87" width="290" height="24">
<param name="movie" value="{%KU_WEBPATH}/inc/player/player.swf?playerID={$post.id}&amp;soundFile={$file_path}/src/{$post.file|utf8_encode|urlencode}.mp3{if $post.id3.comments_html.artist.0 neq ''}&amp;artists={$post.id3.comments_html.artist.0}{/if}{if $post.id3.comments_html.title.0 neq ''}&amp;titles={$post.id3.comments_html.title.0|html_entity_decode|utf8_encode|urlencode}{/if}&amp;wmode=transparent" />
<param name="wmode" value="transparent" />
<!-->
</object>
<!-- <![endif]-->
{/if}
<blockquote>
{if $post.videobox}
{$post.videobox}
{/if}
{$post.message}
</blockquote>
{if not $post.stickied && $post.parentid eq 0 && (($board.maxage > 0 && ($post.timestamp + ($board.maxage * 3600)) < (time() + 7200 ) ) || ($post.deleted_timestamp > 0 && $post.deleted_timestamp <= (time() + 7200)))}
<span class="oldpost">
{t}Marked for deletion (old){/t}
</span>
<br />
{/if}
{if $post.parentid eq 0}
{if $modifier eq 'last50'}
<span class="omittedposts">
{$replycount-50}
{if $replycount-50 eq 1}
{t lower="yes"}Post{/t}
{else}
{t lower="yes"}Posts{/t}
{/if}
{t}omitted{/t}. {t}Last 50 shown{/t}.
</span>
{/if}
{if $numimages > 0}
<a href="#top" onclick="javascript:
{foreach key=postkey2 item=post2 from=$posts}
{if $post2.parentid neq 0}
{if $post2.file_type eq 'jpg' || $post2.file_type eq 'gif' || $post2.file_type eq 'png'}
expandimg('{$post2.id}', '{$file_path}/src/{$post2.file}.{$post2.file_type}', '{$file_path}/thumb/{$post2.file}s.{$post2.file_type}', '{$post2.image_w}', '{$post2.image_h}', '{$post2.thumb_w}', '{$post2.thumb_h}');
{/if}
{/if}
{/foreach}
return false;">{t}Expand all images{/t}</a>
{/if}
{else}
</td>
</tr>
</tbody>
</table>
{/if}
{/foreach}
{if $modifier eq 'first100'}
<span class="omittedposts" style="float: left">
{$replycount-100}
{if $replycount-100 eq 1}
{t lower="yes"}Post{/t}
{else}
{t lower="yes"}Posts{/t}
{/if}
{t}omitted{/t}. {t}First 100 shown{/t}.
</span>
{/if}
{if not $isread}
{if $replycount > 2}
<span style="float:right">
&#91;<a href="/{$board.name}/">{t}Return{/t}</a>&#93;
{if %KU_FIRSTLAST && ( count($posts) > 50 || $replycount > 50)}
&#91;<a href="/{$board.name}/res/{$posts.0.id}.html">{t}Entire Thread{/t}</a>&#93;
&#91;<a href="/{$board.name}/res/{$posts.0.id}+50.html">{t}Last 50 posts{/t}</a>&#93;
{if ( count($posts) > 100 || $replycount > 100) }
&#91;<a href="/{$board.name}/res/{$posts.0.id}-100.html">{t}First 100 posts{/t}</a>&#93;
{/if}
{/if}
</span>
{/if}
</div>
{if not $isexpand}
<br clear="left" />
<hr />
{/if}
{/if}
+69
View File
@@ -0,0 +1,69 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>{t}Manage Boards{/t}</title>
<!--<link rel="stylesheet" type="text/css" href="{$ku_boardspath}/css/manage.css" title="Manage">-->
{loop $styles}
<link rel="{if $ neq %KU_DEFAULTSTYLE}alternate {/if}stylesheet" type="text/css" href="{%KU_WEBPATH}/css/site_{$}.css" />
{/loop}
{literal}<style type="text/css">
body, div, td, th, h2, h3, h4 { /* redundant rules for bad browsers */
font-family: verdana,sans-serif;
font-size: x-small;
voice-family: "\"}\"";
voice-family: inherit;
font-size: small;
}
h1,h2 {
font-family: trebuchet ms;
font-weight: bold;
color: #333;
}
h1 {
font-size: 180%;
margin: 0;
}
h2 {
font-size: 140%;
padding-bottom: 2px;
border-bottom: 1px solid #CCC;
margin: 0;
}
br {
clear: left;
}
label,input {
display: block;
width: auto;
float: left;
margin-bottom: 10px;
}
label {
font-size: 12px;
text-align: right;
width: 175px;
padding-right: 20px;
}
.desc {
text-indent: 5px;
font-size : 80%;
/*white-space: nowrap;*/
}
</style>{/literal}
<link rel="shortcut icon" href="{%KU_WEBPATH}/favicon.ico" />
</head>
<body style="min-width: 600px; padding: 1em 20px 3em 20px;">
{$includeheader}
<div id="main">
<div id="contents">
{$page}
</div>
</div>
{$footer}
</body>
</html>
+33
View File
@@ -0,0 +1,33 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>{t}Manage Boards{/t}</title>
{loop $styles}
<link rel="{if $ neq %KU_DEFAULTSTYLE}alternate {/if}stylesheet" type="text/css" href="{%KU_WEBPATH}/css/site_{$}.css" />
<link rel="{if $ neq %KU_DEFAULTSTYLE}alternate {/if}stylesheet" type="text/css" href="{%KU_WEBPATH}/css/sitemenu_{$}.css" />
{/loop}
<link rel="shortcut icon" href="{%KU_WEBPATH}/favicon.ico" />
{literal}
<script type="text/javascript">
function toggle(button, area) {
var tog=document.getElementById(area);
if(tog.style.display) {
tog.style.display="";
} else {
tog.style.display="none";
}
button.innerHTML=(tog.style.display)?'+':'&minus;';
createCookie('nav_show_'+area, tog.style.display?'0':'1', 365);
}
</script>
{/literal}
<base target="manage_main" />
</head>
<body>
<h1>{t}Manage Boards{/t}</h1>
<ul>
{$links}
</ul>
</body>
</html>
+160
View File
@@ -0,0 +1,160 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>{%KU_NAME} Navigation</title>
{if %KU_MENUTYPE eq 'normal'}
<link rel="stylesheet" type="text/css" href="{$boardpath}css/menu_global.css" />
{loop $styles}
<link rel="{if $ neq %KU_DEFAULTMENUSTYLE}alternate {/if}stylesheet" type="text/css" href="{%KU_WEBFOLDER}css/site_{$}.css" title="{$|capitalize}" />
<link rel="{if $ neq %KU_DEFAULTMENUSTYLE}alternate {/if}stylesheet" type="text/css" href="{%KU_WEBFOLDER}css/sitemenu_{$}.css" title="{$|capitalize}" />
{/loop}
{else}
{literal}<style type="text/css">body { margin: 0px; } h1 { font-size: 1.25em; } h2 { font-size: 0.8em; font-weight: bold; color: #CC3300; } ul { list-style-type: none; padding: 0px; margin: 0px; } li { font-size: 0.8em; padding: 0px; margin: 0px; }</style>{/literal}
{/if}
<script type="text/javascript"><!--
var style_cookie_site = "kustyle_site";
//--></script>
<link rel="shortcut icon" href="{%KU_WEBFOLDER}favicon.ico" />
<script type="text/javascript" src="{%KU_WEBFOLDER}lib/javascript/gettext.js"></script>
<script type="text/javascript" src="{%KU_WEBFOLDER}lib/javascript/menu.js"></script>
<script type="text/javascript" src="{%KU_WEBFOLDER}lib/javascript/kusaba.js"></script>
<script type="text/javascript"><!--
{if $showdirs eq 0 && $files.0 neq $files.1 }
if (getCookie(tcshowdirs) == yes) {
window.location = '{%KU_BOARDSPATH}/{$files.1}';
}
{/if}
function showstyleswitcher() {
var switcher = document.getElementById('sitestyles');
switcher.innerHTML = '{strip}
{if %KU_MENUSTYLESWITCHER && %KU_MENUTYPE eq 'normal'}
{t}Styles{/t}:
{loop $styles}
[<a href="#" onclick="javascript:set_stylesheet(\'{$|capitalize}\', false, true);reloadmain();" style="display: inline;" target="_self">{$|substr:0:1|upper}</a>]{if !$dwoo.loop.default.last} {/if}
{/loop}
{/if}
{/strip}';
}
{literal}
function toggle(button, area) {
var tog=document.getElementById(area);
if(tog.style.display) {
tog.style.display="";
} else {
tog.style.display="none";
}
button.innerHTML=(tog.style.display)?'+':'&minus;';
set_cookie('nav_show_'+area, tog.style.display?'0':'1', 30);
}
function removeframes() {
var boardlinks = document.getElementsByTagName("a");
for(var i=0;i<boardlinks.length;i++) if(boardlinks[i].className == "boardlink") boardlinks[i].target = "_top";
document.getElementById("removeframes").innerHTML = '{/literal}{t}Frames removed{/t}{literal}.';
return false;
}
function reloadmain() {
if (parent.main) {
parent.main.location.reload();
}
}
{/literal}
function hidedirs() {
set_cookie('tcshowdirs', '', 30);
{if $files.0 eq $files.1}
location.reload(true)
{else}
window.location = '{%KU_WEBFOLDER}{$files.0}';
{/if}
}
function showdirs() {
set_cookie('tcshowdirs', 'yes', 30);
{if $files.0 eq $files.1}
location.reload(true)
{else}
window.location = '{%KU_WEBFOLDER}{$files.1}';
{/if}
}
//--></script>
<base target="main" />
</head>
<body>
<h1>{%KU_NAME}</h1>
<ul>
<li><a href="{%KU_WEBFOLDER}" target="_top">{t}Front Page{/t}</a></li>
{if %KU_MENUSTYLESWITCHER && %KU_MENUTYPE eq 'normal'}
<li id="sitestyles"><a onclick="javascript:showstyleswitcher();" href="#" target="_self">[{t}Site Styles{/t}]</a></li>
{/if}
{if $showdirs eq 0}
<li><a onclick="javascript:showdirs();" href="{$files.1}" target="_self">[{t}Show Directories{/t}]</a></li>
{else}
<li><a onclick="javascript:hidedirs();" href="{$files.0}" target="_self">[{t}Hide Directories{/t}]</a></li>
{/if}
{if %KU_MENUTYPE eq 'normal'}
<li id="removeframes"><a href="#" onclick="javascript:return removeframes();" target="_self">[{t}Remove Frames{/t}]</a></li>
{/if}
</ul>
{if empty($boards)}
<ul>
<li>{t}No visible boards{/t}</li>
</ul>
{else}
{foreach name=sections item=sect from=$boards}
{if %KU_MENUTYPE eq 'normal'}
<h2>
{else}
<h2 style="display: inline;"><br />
{/if}
{if %KU_MENUTYPE eq 'normal'}
<span class="plus" onclick="toggle(this, '{$sect.abbreviation}');" title="{t}Click to show/hide{/t}">{if $sect.hidden eq 1}+{else}&minus;{/if}</span>&nbsp;
{/if}
{$sect.name}</h2>
{if %KU_MENUTYPE eq 'normal'}
<div id="{$sect.abbreviation}"{if $sect.hidden eq 1} style="display: none;"{/if}>
{/if}
<ul>
{if count($sect.boards) > 0}
{foreach name=brds item=brd from=$sect.boards}
<li><a href="{%KU_BOARDSPATH}/{$brd.name}/" class="boardlink{if $brd.trial eq 1} trial{/if}{if $brd.popular eq 1} pop{/if}">
{if $showdirs eq 1}
/{$brd.name}/ -
{/if}
{$brd.desc}
{if $brd.locked eq 1}
<img src="{%KU_BOARDSPATH}/css/locked.gif" border="0" alt="{t}Locked{/t}">
{/if}
</a></li>
{/foreach}
{else}
<li>{t}No visible boards{/t}</li>
{/if}
</ul>
{if %KU_MENUTYPE eq 'normal'}
</div>
{/if}
{/foreach}
{/if}
{if %KU_IRC}
{if %KU_MENUTYPE eq 'normal'}
<h2>
{else}
<h2 style="display: inline;"><br />
{/if}
&nbsp;IRC</h2>
<ul>
<li>{%KU_IRC}</li>
</ul>
{/if}
</body>
</html>
+38
View File
@@ -0,0 +1,38 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>{$dwoo.const.KU_NAME}</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
{for style $styles}
<link rel="{if $styles[$style] neq $dwoo.const.KU_DEFAULTMENUSTYLE}alternate {/if}stylesheet" type="text/css" href="{$dwoo.const.KU_WEBFOLDER}css/site_{$styles[$style]}.css" title="{$styles[$style]|capitalize}" />
{/for}
<script type="text/javascript"><!--
var style_cookie_site = "kustyle_site";
//--></script>
<link rel="shortcut icon" href="{$dwoo.const.KU_WEBFOLDER}favicon.ico" />
<script type="text/javascript" src="{%KU_WEBFOLDER}lib/javascript/gettext.js"></script>
<script type="text/javascript" src="{$dwoo.const.KU_WEBFOLDER}lib/javascript/kusaba.js"></script></head>
<body>
<h1>{$dwoo.const.KU_NAME}</h1>
{if $dwoo.const.KU_SLOGAN neq ''}<h3>{$dwoo.const.KU_SLOGAN}</h3>{/if}
<div class="menu" id="topmenu">
{$topads}
{strip}<ul>
<li class="{if $dwoo.get.p eq ''}current {else}tab {/if}first">{if $dwoo.get.p neq ''}<a href="{$ku_webpath}news.php">{/if}{t}News{/t}{if $dwoo.get.p neq ''}</a>{/if}</li>
<li class="{if $dwoo.get.p eq 'faq'}current{else}tab{/if}">{if $dwoo.get.p neq 'faq'}<a href="{$ku_webpath}news.php?p=faq">{/if}{t}FAQ{/t}{if $dwoo.get.p neq 'faq'}</a>{/if}</li>
<li class="{if $dwoo.get.p eq 'rules'}current{else}tab{/if}">{if $dwoo.get.p neq 'rules'}<a href="{$ku_webpath}news.php?p=rules">{/if}{t}Rules{/t}{if $dwoo.get.p neq 'rules'}</a>{/if}</li>
</ul>{/strip}
<br />
</div>
{foreach item=entry from=$entries}
<div class="content">
<h2><span class="newssub">{$entry.subject|stripslashes}{if $dwoo.get.p eq ''} by {if $entry.email neq ''}<a href="mailto:{$entry.email|stripslashes}">{/if}{$entry.poster|stripslashes}{if $entry.email neq ''}</a>{/if} - {$entry.timestamp|date_format:"%D @ %I:%M %p %Z"}{/if}</span>
<span class="permalink"><a href="#{$entry.id}">#</a></span></h2>
{$entry.message|stripslashes}
</div><br />
{/foreach}
{$botads}
</body>
</html>
+428
View File
@@ -0,0 +1,428 @@
<form id="delform" action="{%KU_CGIPATH}/board.php" method="post">
<input type="hidden" name="board" value="{$board.name}" />
{foreach name=thread item=postsa from=$posts}
{foreach key=postkey item=post from=$postsa}
{if $post.parentid eq 0}
<span id="unhidethread{$post.id}{$board.name}" style="display: none;">
{t}Thread{/t} <a href="{%KU_BOARDSFOLDER}{$board.name}/res/{$post.id}.html">{$post.id}</a> {t}hidden.{/t}
<a href="#" onclick="javascript:togglethread('{$post.id}{$board.name}');return false;" title="{t}Un-Hide Thread{/t}">
<img src="{$cwebpath}css/icons/blank.gif" border="0" class="unhidethread" alt="{t}Un-Hide Thread{/t}" />
</a>
</span>
<div id="thread{$post.id}{$board.name}">
<script type="text/javascript"><!--
if (hiddenthreads.toString().indexOf('{$post.id}{$board.name}')!==-1) {
document.getElementById('unhidethread{$post.id}{$board.name}').style.display = 'block';
document.getElementById('thread{$post.id}{$board.name}').style.display = 'none';
}
//--></script>
<a name="s{$.foreach.thread.iteration}"></a>
{if ($post.file neq '' || $post.file_type neq '' ) && (($post.videobox eq '' && $post.file neq '') && $post.file neq 'removed')}
<span class="filesize">
{if $post.file_type eq 'mp3'}
{t}Audio{/t}
{else}
{t}File{/t}
{/if}
{if $post.file_type neq 'jpg' && $post.file_type neq 'gif' && $post.file_type neq 'png' && $post.videobox eq ''}
<a
{if %KU_NEWWINDOW}
target="_blank"
{/if}
href="{$file_path}/src/{$post.file}.{$post.file_type}">
{else}
<a href="{$file_path}/src/{$post.file}.{$post.file_type}" onclick="javascript:expandimg('{$post.id}', '{$file_path}/src/{$post.file}.{$post.file_type}', '{$file_path}/thumb/{$post.file}s.{$post.file_type}', '{$post.image_w}', '{$post.image_h}', '{$post.thumb_w}', '{$post.thumb_h}');return false;">
{/if}
{if isset($post.id3.comments_html)}
{if $post.id3.comments_html.artist.0 neq ''}
{$post.id3.comments_html.artist.0}
{if $post.id3.comments_html.title.0 neq ''}
-
{/if}
{/if}
{if $post.id3.comments_html.title.0 neq ''}
{$post.id3.comments_html.title.0}
{/if}
</a>
{else}
{$post.file}.{$post.file_type}</a>
{/if}
- ({$post.file_size_formatted}
{if $post.id3.comments_html.bitrate neq 0 || $post.id3.audio.sample_rate neq 0}
{if $post.id3.audio.bitrate neq 0}
- {round($post.id3.audio.bitrate / 1000)} kbps
{if $post.id3.audio.sample_rate neq 0}
-
{/if}
{/if}
{if $post.id3.audio.sample_rate neq 0}
{$post.id3.audio.sample_rate / 1000} kHz
{/if}
{/if}
{if $post.image_w > 0 && $post.image_h > 0}
, {$post.image_w}x{$post.image_h}
{/if}
{if $post.file_original neq '' && $post.file_original neq $post.file}
, {$post.file_original}.{$post.file_type}
{/if}
)
{if $post.id3.playtime_string neq ''}
{t}Length{/t}: {$post.id3.playtime_string}
{/if}
</span>
{if %KU_THUMBMSG}
<span class="thumbnailmsg">
{if $post.file_type neq 'jpg' && $post.file_type neq 'gif' && $post.file_type neq 'png' && $post.videobox eq ''}
{t}Extension icon displayed, click image to open file.{/t}
{else}
{t}Thumbnail displayed, click image for full size.{/t}
{/if}
</span>
{/if}
<br />
{/if}
{if $post.videobox eq '' && $post.file neq '' && ( $post.file_type eq 'jpg' || $post.file_type eq 'gif' || $post.file_type eq 'png')}
{if $post.file eq 'removed'}
<div class="nothumb">
{t}File<br />Removed{/t}
</div>
{else}
<a
{if %KU_NEWWINDOW}
target="_blank"
{/if}
href="{$file_path}/src/{$post.file}.{$post.file_type}">
<span id="thumb{$post.id}"><img src="{$file_path}/thumb/{$post.file}s.{$post.file_type}" alt="{$post.id}" class="thumb" height="{$post.thumb_h}" width="{$post.thumb_w}" /></span>
</a>
{/if}
{elseif $post.nonstandard_file neq ''}
{if $post.file eq 'removed'}
<div class="nothumb">
{t}File<br />Removed{/t}
</div>
{else}
<a
{if %KU_NEWWINDOW}
target="_blank"
{/if}
href="{$file_path}/src/{$post.file}.{$post.file_type}">
<span id="thumb{$post.id}"><img src="{$post.nonstandard_file}" alt="{$post.id}" class="thumb" height="{$post.thumb_h}" width="{$post.thumb_w}" /></span>
</a>
{/if}
{/if}
<a name="{$post.id}"></a>
<label>
<input type="checkbox" name="post[]" value="{$post.id}" />
{if $post.subject neq ''}
<span class="filetitle">
{$post.subject}
</span>
{/if}
{strip}
<span class="postername">
{if $post.email && $board.anonymous}
<a href="mailto:{$post.email}">
{/if}
{if $post.name eq '' && $post.tripcode eq ''}
{$board.anonymous}
{elseif $post.name eq '' && $post.tripcode neq ''}
{else}
{$post.name}
{/if}
{if $post.email neq '' && $board.anonymous neq ''}
</a>
{/if}
</span>
{if $post.tripcode neq ''}
<span class="postertrip">!{$post.tripcode}</span>
{/if}
{/strip}
{if $post.posterauthority eq 1}
<span class="admin">
&#35;&#35;&nbsp;{t}Admin{/t}&nbsp;&#35;&#35;
</span>
{elseif $post.posterauthority eq 4}
<span class="mod">
&#35;&#35;&nbsp;{t}Super Mod{/t}&nbsp;&#35;&#35;
</span>
{elseif $post.posterauthority eq 2}
<span class="mod">
&#35;&#35;&nbsp;{t}Mod{/t}&nbsp;&#35;&#35;
</span>
{/if}
{$post.timestamp_formatted}
</label>
<span class="reflink">
{$post.reflink}
</span>
{if $board.showid}
ID: {$post.ipmd5|substr:0:6}
{/if}
<span class="extrabtns">
{if $post.locked eq 1}
<img style="border: 0;" src="{$boardpath}css/locked.gif" alt="{t}Locked{/t}" />
{/if}
{if $post.stickied eq 1}
<img style="border: 0;" src="{$boardpath}css/sticky.gif" alt="{t}Stickied{/t}" />
{/if}
<span id="hide{$post.id}"><a href="#" onclick="javascript:togglethread('{if $post.parentid eq 0}{$post.id}{else}{$post.parentid}{/if}{$board.name}');return false;" title="Hide Thread"><img src="{$boardpath}css/icons/blank.gif" border="0" class="hidethread" alt="hide" /></a></span>
{if %KU_WATCHTHREADS}
<a href="#" onclick="javascript:addtowatchedthreads('{if $post.parentid eq 0}{$post.id}{else}{$post.parentid}{/if}','{$board.name}');return false;" title="Watch Thread"><img src="{$boardpath}css/icons/blank.gif" border="0" class="watchthread" alt="watch" /></a>
{/if}
{if %KU_EXPAND && $post.replies && ($post.replies + %KU_REPLIES) < 300}
<a href="#" onclick="javascript:expandthread('{if $post.parentid eq 0}{$post.id}{else}{$post.parentid}{/if}','{$board.name}');return false;" title="Expand Thread"><img src="{$boardpath}css/icons/blank.gif" border="0" class="expandthread" alt="expand" /></a>
{/if}
{if %KU_QUICKREPLY}
<a href="#postbox" onclick="javascript:quickreply('{if $post.parentid eq 0}{$post.id}{else}{$post.parentid}{/if}');" title="{t}Quick Reply{/t}"><img src="{$boardpath}css/icons/blank.gif" border="0" class="quickreply" alt="quickreply" /></a>
{/if}
</span>
<span id="dnb-{$board.name}-{$post.id}-y"></span>
[<a href="{%KU_BOARDSFOLDER}{$board.name}/res/{if $post.parentid eq 0}{$post.id}{else}{$post.parentid}{/if}.html">{t}Reply{/t}</a>]
{if %KU_FIRSTLAST && (($post.stickied eq 1 && $post.replies + %KU_REPLIESSTICKY > 50) || ($post.stickied eq 0 && $post.replies + %KU_REPLIES > 50))}
{if (($post.stickied eq 1 && $post.replies + %KU_REPLIESSTICKY > 100) || ($post.stickied eq 0 && $post.replies + %KU_REPLIES > 100))}
[<a href="{%KU_BOARDSFOLDER}{$board.name}/res/{if $post.parentid eq 0}{$post.id}{else}{$post.parentid}{/if}-100.html">{t}First 100 posts{/t}</a>]
{/if}
[<a href="{%KU_BOARDSFOLDER}{$board.name}/res/{$post.id}+50.html">{t}Last 50 posts{/t}</a>]
{/if}
<br />
{else}
<table>
<tbody>
<tr>
<td class="doubledash">
&gt;&gt;
</td>
<td class="reply" id="reply{$post.id}">
<a name="{$post.id}"></a>
<label>
<input type="checkbox" name="post[]" value="{$post.id}" />
{if $post.subject neq ''}
<span class="filetitle">
{$post.subject}
</span>
{/if}
{strip}
<span class="postername">
{if $post.email && $board.anonymous}
<a href="mailto:{$post.email}">
{/if}
{if $post.name eq '' && $post.tripcode eq ''}
{$board.anonymous}
{elseif $post.name eq '' && $post.tripcode neq ''}
{else}
{$post.name}
{/if}
{if $post.email neq '' && $board.anonymous neq ''}
</a>
{/if}
</span>
{if $post.tripcode neq ''}
<span class="postertrip">!{$post.tripcode}</span>
{/if}
{/strip}
{if $post.posterauthority eq 1}
<span class="admin">
&#35;&#35;&nbsp;{t}Admin{/t}&nbsp;&#35;&#35;
</span>
{elseif $post.posterauthority eq 4}
<span class="mod">
&#35;&#35;&nbsp;{t}Super Mod{/t}&nbsp;&#35;&#35;
</span>
{elseif $post.posterauthority eq 2}
<span class="mod">
&#35;&#35;&nbsp;{t}Mod{/t}&nbsp;&#35;&#35;
</span>
{/if}
{$post.timestamp_formatted}
</label>
<span class="reflink">
{$post.reflink}
</span>
{if $board.showid}
ID: {$post.ipmd5|substr:0:6}
{/if}
<span class="extrabtns">
{if $post.locked eq 1}
<img style="border: 0;" src="{$boardpath}css/locked.gif" alt="{t}Locked{/t}" />
{/if}
{if $post.stickied eq 1}
<img style="border: 0;" src="{$boardpath}css/sticky.gif" alt="{t}Stickied{/t}" />
{/if}
</span>
<span id="dnb-{$board.name}-{$post.id}-n"></span>
{if ($post.file neq '' || $post.file_type neq '' ) && (( $post.videobox eq '' && $post.file neq '') && $post.file neq 'removed')}
<br /><span class="filesize">
{if $post.file_type eq 'mp3'}
{t}Audio{/t}
{else}
{t}File{/t}
{/if}
{if $post.file_type neq 'jpg' && $post.file_type neq 'gif' && $post.file_type neq 'png' && $post.videobox eq ''}
<a
{if %KU_NEWWINDOW}
target="_blank"
{/if}
href="{$file_path}/src/{$post.file}.{$post.file_type}">
{else}
<a href="{$file_path}/src/{$post.file}.{$post.file_type}" onclick="javascript:expandimg('{$post.id}', '{$file_path}/src/{$post.file}.{$post.file_type}', '{$file_path}/thumb/{$post.file}s.{$post.file_type}', '{$post.image_w}', '{$post.image_h}', '{$post.thumb_w}', '{$post.thumb_h}');return false;">
{/if}
{if isset($post.id3.comments_html)}
{if $post.id3.comments_html.artist.0 neq ''}
{$post.id3.comments_html.artist.0}
{if $post.id3.comments_html.title.0 neq ''}
-
{/if}
{/if}
{if $post.id3.comments_html.title.0 neq ''}
{$post.id3.comments_html.title.0}
{/if}
</a>
{else}
{$post.file}.{$post.file_type}</a>
{/if}
- ({$post.file_size_formatted}
{if $post.id3.comments_html.bitrate neq 0 || $post.id3.audio.sample_rate neq 0}
{if $post.id3.audio.bitrate neq 0}
- {round($post.id3.audio.bitrate / 1000)} kbps
{if $post.id3.audio.sample_rate neq 0}
-
{/if}
{/if}
{if $post.id3.audio.sample_rate neq 0}
{$post.id3.audio.sample_rate / 1000} kHz
{/if}
{/if}
{if $post.image_w > 0 && $post.image_h > 0}
, {$post.image_w}x{$post.image_h}
{/if}
{if $post.file_original neq '' && $post.file_original neq $post.file}
, {$post.file_original}.{$post.file_type}
{/if}
)
{if $post.id3.playtime_string neq ''}
{t}Length{/t}: {$post.id3.playtime_string}
{/if}
</span>
{if %KU_THUMBMSG}
<span class="thumbnailmsg">
{if $post.file_type neq 'jpg' && $post.file_type neq 'gif' && $post.file_type neq 'png' && $post.videobox eq ''}
{t}Extension icon displayed, click image to open file.{/t}
{else}
{t}Thumbnail displayed, click image for full size.{/t}
{/if}
</span>
{/if}
{/if}
{if $post.videobox eq '' && $post.file neq '' && ( $post.file_type eq 'jpg' || $post.file_type eq 'gif' || $post.file_type eq 'png')}
<br />
{if $post.file eq 'removed'}
<div class="nothumb">
{t}File<br />Removed{/t}
</div>
{else}
<a
{if %KU_NEWWINDOW}
target="_blank"
{/if}
href="{$file_path}/src/{$post.file}.{$post.file_type}">
<span id="thumb{$post.id}"><img src="{$file_path}/thumb/{$post.file}s.{$post.file_type}" alt="{$post.id}" class="thumb" height="{$post.thumb_h}" width="{$post.thumb_w}" /></span>
</a>
{/if}
{elseif $post.nonstandard_file neq ''}
<br />
{if $post.file eq 'removed'}
<div class="nothumb">
{t}File<br />Removed{/t}
</div>
{else}
<a
{if %KU_NEWWINDOW}
target="_blank"
{/if}
href="{$file_path}/src/{$post.file}.{$post.file_type}">
<span id="thumb{$post.id}"><img src="{$post.nonstandard_file}" alt="{$post.id}" class="thumb" height="{$post.thumb_h}" width="{$post.thumb_w}" /></span>
</a>
{/if}
{/if}
{/if}
{if $post.file_type eq 'mp3'}
<!--[if !IE]> -->
<object type="application/x-shockwave-flash" data="{%KU_WEBPATH}/inc/player/player.swf?playerID={$post.id}&amp;soundFile={$file_path}/src/{$post.file|utf8_encode|urlencode}.mp3{if $post.id3.comments_html.artist.0 neq ''}&amp;artists={$post.id3.comments_html.artist.0}{/if}{if $post.id3.comments_html.title.0 neq ''}&amp;titles={$post.id3.comments_html.title.0|html_entity_decode|utf8_encode|urlencode}{/if}&amp;wmode=transparent" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=10,0,22,87" width="290" height="24">
<param name="wmode" value="transparent" />
<!-- <![endif]-->
<!--[if IE]>
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=10,0,22,87" width="290" height="24">
<param name="movie" value="{%KU_WEBPATH}/inc/player/player.swf?playerID={$post.id}&amp;soundFile={$file_path}/src/{$post.file|utf8_encode|urlencode}.mp3{if $post.id3.comments_html.artist.0 neq ''}&amp;artists={$post.id3.comments_html.artist.0}{/if}{if $post.id3.comments_html.title.0 neq ''}&amp;titles={$post.id3.comments_html.title.0|html_entity_decode|utf8_encode|urlencode}{/if}&amp;wmode=transparent" />
<param name="wmode" value="transparent" />
<!-->
</object>
<!-- <![endif]-->
{/if}
<blockquote>
{if $post.videobox}
{$post.videobox}
{/if}
{$post.message}
</blockquote>
{if not $post.stickied && $post.parentid eq 0 && (($board.maxage > 0 && ($post.timestamp + ($board.maxage * 3600)) < (time() + 7200 ) ) || ($post.deleted_timestamp > 0 && $post.deleted_timestamp <= (time() + 7200)))}
<span class="oldpost">
{t}Marked for deletion (old){/t}
</span>
<br />
{/if}
{if $post.parentid eq 0}
<div id="replies{$post.id}{$board.name}">
{if $post.replies}
<span class="omittedposts">
{if $post.stickied eq 0}
{$post.replies}
{if $post.replies eq 1}
{t lower="yes"}Post{/t}
{else}
{t lower="yes"}Posts{/t}
{/if}
{else}
{$post.replies}
{if $post.replies eq 1}
{t lower="yes"}Post{/t}
{else}
{t lower="yes"}Posts{/t}
{/if}
{/if}
{if $post.images > 0}
{t}and{/t} {$post.images}
{if $post.images eq 1}
{t lower="yes"}Image{/t}
{else}
{t lower="yes"}Images{/t}
{/if}
{/if}
{t}omitted{/t}. {t}Click Reply to view.{/t}
</span>
{/if}
{else}
</td>
</tr>
</tbody>
</table>
{/if}
{/foreach}
</div>
</div>
<br clear="left" />
<hr />
{/foreach}
+101
View File
@@ -0,0 +1,101 @@
{if not $isread}
<table class="userdelete">
<tbody>
<tr>
<td>
{t}Delete post{/t}
[<input type="checkbox" name="fileonly" id="fileonly" value="on" /><label for="fileonly">{t}File Only{/t}</label>]<br />{t}Password{/t}
<input type="password" name="postpassword" size="8" />&nbsp;<input name="deletepost" value="{t}Delete{/t}" type="submit" />
{if $board.enablereporting eq 1}
</td>
</tr>
<tr>
<td>
{t}Report post{t}<br />
{t}Reason{/t}
<input type="text" name="reportreason" size="10" />&nbsp;<input name="reportpost" value="{t}Report{/t}" type="submit" />
{/if}
</td>
</tr>
</tbody>
</table>
</form>
<script type="text/javascript"><!--
set_delpass("delform");
//--></script>
{/if}
{if $replythread eq 0}
<table border="1">
<tbody>
<tr>
<td>
{if $thispage eq 0}
{t}Previous{/t}
{else}
<form method="get" action="{%KU_BOARDSFOLDER}{$board.name}/{if ($thispage-1) neq 0}{$thispage-1}.html{/if}">
<input value="{t}Previous{/t}" type="submit" /></form>
{/if}
</td>
<td>
&#91;{if $thispage neq 0}<a href="{%KU_BOARDSPATH}/{$board.name}/">{/if}0{if $thispage neq 0}</a>{/if}&#93;
{section name=pages loop=$numpages}
{strip}
&#91;
{if $.section.pages.iteration neq $thispage}<a href="{%KU_BOARDSFOLDER}{$board.name}/{$.section.pages.iteration}.html">
{/if}
{$.section.pages.iteration}
{if $.section.pages.iteration neq $thispage}
</a>
{/if}
&#93;
{/strip}
{/section}
</td>
<td>
{if $thispage eq $numpages}
{t}Next{/t}
{else}
<form method="get" action="{%KU_BOARDSPATH}/{$board.name}/{$thispage+1}.html"><input value="{t}Next{/t}" type="submit" /></form>
{/if}
</td>
</tr>
</tbody>
</table>
{/if}
<br />
{if $boardlist}
<div class="navbar">
{if %KU_GENERATEBOARDLIST}
{foreach name=sections item=sect from=$boardlist}
[
{foreach name=brds item=brd from=$sect}
<a title="{$brd.desc}" href="{%KU_BOARDSFOLDER}{$brd.name}/">{$brd.name}</a>{if $.foreach.brds.last}{else} / {/if}
{/foreach}
]
{/foreach}
{else}
{if is_file($boardlist)}
{include $boardlist}
{/if}
{/if}
</div>
{/if}
<br />
<div class="footer" style="clear: both;">
{* I'd really appreciate it if you left the link to kusabax.org in the footer, if you decide to modify this. That being said, you are not bound by license or any other terms to keep it there *}
- <a href="http://www.kusabax.org/" target="_top">kusaba x {%KU_VERSION}</a>
{if $executiontime neq ''} + {t}Took{/t} {$executiontime}s -{/if}
{if $botads neq ''}
<div class="content ads">
<center>
{$botads}
</center>
</div>
{/if}
</div>
+98
View File
@@ -0,0 +1,98 @@
<script type="text/javascript" src="{$cwebpath}lib/javascript/protoaculous-compressed.js"></script>
<link rel="stylesheet" type="text/css" href="{$cwebpath}css/img_global.css" />
{loop $ku_styles}
<link rel="{if $ neq $__.ku_defaultstyle}alternate {/if}stylesheet" type="text/css" href="{$__.cwebpath}css/{$}.css" title="{$|capitalize}" />
{/loop}
{if $locale eq 'ja'}
{literal}
<style type="text/css">
*{
font-family: IPAMonaPGothic, Mona, 'MS PGothic', YOzFontAA97 !important;
font-size: 1em;
}
</style>
{/literal}
{/if}
{if %KU_RSS neq ''}
<link rel="alternate" type="application/rss+xml" title="RSS" href="{%KU_BOARDSPATH}/{$board.name}/rss.xml" />
{/if}
<script type="text/javascript"><!--
var ku_boardspath = '{%KU_BOARDSPATH}';
var ku_cgipath = '{%KU_CGIPATH}';
var style_cookie = "kustyle";
{if $replythread > 0}
var ispage = false;
{else}
var ispage = true;
{/if}
//--></script>
<script type="text/javascript" src="{%KU_WEBPATH}/lib/javascript/kusaba.js"></script>
<script type="text/javascript"><!--
var hiddenthreads = getCookie('hiddenthreads').split('!');
//--></script>
</head>
<body>
<div class="adminbar">
{if %KU_STYLESWITCHER}
{if %KU_DROPSWITCHER}
<select onchange="javascript:if(selectedIndex != 0)set_stylesheet(options[selectedIndex].value);return false;">
<option>Styles</option>
{loop $ku_styles}
<option value="{$|capitalize}">{$|capitalize}</option>;
{/loop}
</select>
{else}
{loop $ku_styles}
[<a href="#" onclick="javascript:set_stylesheet('{$|capitalize}');return false;">{$|capitalize}</a>]&nbsp;
{/loop}
{/if}
{if count($ku_styles) > 0}
-&nbsp;
{/if}
{/if}
{if %KU_WATCHTHREADS}
[<a href="#" onclick="javascript:showwatchedthreads();return false" title="{t}Watched Threads{/t}">WT</a>]&nbsp;
{/if}
[<a href="{%KU_WEBPATH}" target="_top">{t}Home{/t}</a>]&nbsp;[<a href="{%KU_CGIPATH}/manage.php" target="_top">{t}Manage{/t}</a>]
</div>
<div class="navbar">
{if %KU_GENERATEBOARDLIST}
{foreach name=sections item=sect from=$boardlist}
[
{foreach name=brds item=brd from=$sect}
<a title="{$brd.desc}" href="{%KU_BOARDSFOLDER}{$brd.name}/">{$brd.name}</a>{if $.foreach.brds.last}{else} / {/if}
{/foreach}
]
{/foreach}
{else}
{if is_file($boardlist)}
{include $boardlist}
{/if}
{/if}
</div>
{if %KU_WATCHTHREADS && not $isoekaki && not $hidewatchedthreads}
<script type="text/javascript"><!--
if (getCookie('showwatchedthreads') == '1') {
document.write('<div id="watchedthreads" style="top: {$ad_top}px; left: 25px;" class="watchedthreads"><div class="postblock" id="watchedthreadsdraghandle" style="width: 100%;">{t}Watched Threads{/t}<\/div><span id="watchedthreadlist"><\/span><div id="watchedthreadsbuttons"><a href="#" onclick="javascript:hidewatchedthreads();return false;" title="{t}Hide the watched threads box{/t}"><img src="{$cwebpath}css/icons/blank.gif" border="0" class="hidewatchedthreads" alt="hide" /><\/a>&nbsp;<a href="#" onclick="javascript:getwatchedthreads(\'0\', \'{$board.name}\');return false;" title="{t}Refresh watched threads{/t}"><img src="{$cwebpath}css/icons/blank.gif" border="0" class="refreshwatchedthreads" alt="refresh" /><\/a><\/div><\/div>');
watchedthreadselement = document.getElementById('watchedthreads');
watchedthreadselement.style.top = getCookie('watchedthreadstop');
watchedthreadselement.style.left = getCookie('watchedthreadsleft');
watchedthreadselement.style.width = Math.max(250,getCookie('watchedthreadswidth')) + 'px';
watchedthreadselement.style.height = Math.max(75,getCookie('watchedthreadsheight')) + 'px';
getwatchedthreads('<!sm_threadid>', '{$board.name}');
}
//--></script>
{/if}
<div class="logo">
{if %KU_HEADERURL neq '' && $board.image eq ''}
<img src="{%KU_HEADERURL}" alt="{t}Logo{/t}" /><br />
{elseif $board.image neq '' && $board.image neq "none"}
<img src="{$board.image}" alt="{t}Logo{/t}" /><br />
{/if}
{if %KU_DIRTITLE}
/{$board.name}/ -
{/if}
{$board.desc}</div>
{$board.includeheader}
<hr />
+177
View File
@@ -0,0 +1,177 @@
<div class="postarea">
<a id="postbox"></a>
{if $.get.postoek eq ''}
<form action="{%KU_CGIPATH}/paint.php" method="post">
<input type="hidden" name="board" value="{$board.name}" />
<input type="hidden" name="replyto" value="{$replythread}" />
<label for="applet">{t}Paint with{/t}:&nbsp;</label>
<select name="applet" id="applet">
<option value="shipainter">Shi-Painter</option>
<option value="shipainterpro">Shi-Painter Pro</option>
<option value="shipainter_selfy">Shi-Painter+Selfy</option>
<option value="shipainterpro_selfy">Shi-Painter Pro+Selfy</option>
</select>&nbsp;
<label for="width">{t}Width{/t}:&nbsp;</label><input type="text" name="width" id="width" size="3" value="300" />&nbsp;
<label for="height">{t}Height{/t}:&nbsp;</label><input type="text" name="height" id="height" size="3" value="300" />&nbsp;
<label for="useanim">{t}Use animation?{/t}&nbsp;</label><input type="checkbox" name="useanim" id="useanim" checked="checked" />&nbsp;
{if $replythread neq 0}
<label for="replyimage">{t}Source{/t}:&nbsp;</label><select name="replyimage" id="replyimage">
<option value="0">{t}New image{/t}</option>
{foreach name=oekpost item=post from=$oekposts}
<option value="{$post.id}">{t}Modify{/t} {t}No.{/t}{$post.id}</option>
{/foreach}
</select>&nbsp;
{/if}
<input type="submit" value="{t}Paint!{/t}" /></form>
<hr />
{/if}
{if $replythread neq 0 || $.get.postoek neq ''}
<form name="postform" id="postform" action="{%KU_CGIPATH}/board.php" method="post" enctype="multipart/form-data"
{if $board.enablecaptcha eq 1}
onsubmit="return checkcaptcha('postform');"
{/if}
>
<input type="hidden" name="board" value="{$board.name}" />
<input type="hidden" name="replythread" value="{$replythread}" />
{if $board.maximagesize > 0}
<input type="hidden" name="MAX_FILE_SIZE" value="{$board.maximagesize}" />
{/if}
<input type="text" name="email" size="28" maxlength="75" value="" style="display: none;" />
<table class="postform">
<tbody>
{if $board.forcedanon neq 1}
<tr>
<td class="postblock">
{t}Name{/t}</td>
<td>
<input type="text" name="name" size="28" maxlength="75" accesskey="n" />
</td>
</tr>
{/if}
<tr>
<td class="postblock">
{t}Email{/t}</td>
<td>
<input type="text" name="em" size="28" maxlength="75" accesskey="e" />
</td>
</tr>
{if $board.enablecaptcha eq 1}
<tr>
<td class="postblock'">
<a href="#" onclick="javascript:document.getElementById('captchaimage').src = '{%KU_CGIPATH}/captcha.php?' + Math.random();return false;"><img id="captchaimage" src="{%KU_CGIPATH}/captcha.php" border="0" width="90" height="25" alt="Captcha image"></a>
</td>
<td>
<input type="text" name="captcha" size="28" maxlength="10" accesskey="c" />
</td>
</tr>
{/if}
<tr>
<td class="postblock">
{t}Subject{/t}</td>
<td>
{strip}<input type="text" name="subject" size="35" maxlength="75" accesskey="s" />&nbsp;<input type="submit" value="
{if %KU_QUICKREPLY && $replythread eq 0}
{t}Submit{/t}" accesskey="z" />&nbsp;(<span id="posttypeindicator">{t}new thread{/t}</span>)
{elseif %KU_QUICKREPLY && $replythread neq 0}
{t}Reply{/t}" accesskey="z" />&nbsp;(<span id="posttypeindicator">{t}reply to{/t} {$replythread}</span>)
{else}
{t}Submit{/t}" accesskey="z" />
{/if}{/strip}
</td>
</tr>
<tr>
<td class="postblock">
{t}Message{/t}
</td>
<td>
<textarea name="message" cols="48" rows="4" accesskey="m"></textarea>
</td>
</tr>
{if $board.uploadtype eq 0 || $board.uploadtype eq 1}
<tr>
<td class="postblock">
{t}File{/t}
</td>
<td>
{if $.get.postoek eq ''}
<input type="file" name="imagefile" size="35" accesskey="f" />
{else}
{t}Shown Below{/t}<input type="hidden" name="oekaki" value="{$.get.postoek}" />
{/if}
</td>
</tr>
{/if}
<tr>
<td class="postblock">
{t}Password{/t}
</td>
<td>
<input type="password" name="postpassword" size="8" accesskey="p" />&nbsp;{t}(for post and file deletion){/t}
</td>
</tr>
<tr id="passwordbox"><td></td><td></td></tr>
<tr>
<td colspan="2" class="rules">
<ul style="margin-left: 0; margin-top: 0; margin-bottom: 0; padding-left: 0;">
<li>{t}Supported file types are{/t}:
{if $board.filetypes_allowed neq ''}
{foreach name=files item=filetype from=$board.filetypes_allowed}
{$filetype.0|upper}{if $.foreach.files.last}{else}, {/if}
{/foreach}
{else}
{t}None{/t}
{/if}
</li>
<li>{t}Maximum file size allowed is{/t} {math "round(x/1024)" x=$board.maximagesize} KB.</li>
<li>{t 1=%KU_THUMBWIDTH 2=%KU_THUMBHEIGHT}Images greater than %1x%2 pixels will be thumbnailed.{/t}</li>
<li>{t 1=$board.uniqueposts}Currently %1 unique user posts.{/t}
{if $board.enablecatalog eq 1}
<a href="{%KU_BOARDSFOLDER}{$board.name}/catalog.html">{t}View catalog{/t}</a>
{/if}
</li>
</ul>
{if %KU_BLOTTER && $blotter}
<br />
<ul style="margin-left: 0; margin-top: 0; margin-bottom: 0; padding-left: 0;">
<li style="position: relative;">
<span style="color: red;">
{t}Blotter updated{/t}: {$blotter_updated|date_format:"%Y-%m-%d"}
</span>
<span style="color: red;text-align: right;position: absolute;right: 0px;">
<a href="#" onclick="javascript:toggleblotter(true);return false;">{t}Show/Hide{/t}</a> <a href="%KU_WEBPATH/blotter.php">{t}Show All{/t}</a>
</span>
</li>
{$blotter}
</ul>
<script type="text/javascript"><!--
if (getCookie('ku_showblotter') == '1') {
toggleblotter(false);
}
--></script>
{/if}
</td>
</tr>
</tbody>
</table>
</form>
<hr />
{/if}
{if $topads neq ''}
<div class="content ads">
<center>
{$topads}
</center>
</div>
<hr />
{/if}
</div>
<script type="text/javascript"><!--
set_inputs("postform");
//--></script>
{if $.get.postoek}
<div style="text-align: center;">
{t}Your image{/t}:<br />
<img src="{%KU_CGIFOLDER}kusabaoek/{$.get.postoek}.png" />
</div>
{/if}
+19
View File
@@ -0,0 +1,19 @@
&#91;<a href="{%KU_WEBFOLDER}{$board.name}/">{t}Return{/t}</a>&#93;
{if %KU_FIRSTLAST && ( count($posts) > 50 || $replycount > 50)}
&#91;<a href="{%KU_WEBFOLDER}{$board.name}/res/{$posts.0.id}.html">{t}Entire Thread{/t}</a>&#93;
&#91;<a href="{%KU_WEBFOLDER}{$board.name}/res/{$posts.0.id}+50.html">{t}Last 50 posts{/t}</a>&#93;
{if ( count($posts) > 100 || $replycount > 100) }
&#91;<a href="{%KU_WEBFOLDER}{$board.name}/res/{$posts.0.id}-100.html">{t}First 100 posts{/t}</a>&#93;
{/if}
{/if}
{if not $isread}
<div class="replymode">{t}Posting mode: Reply{/t}
{if $modifier eq 'first100'}
[{t}First 100 posts{/t}]
{elseif $modifier eq 'last50'}
[{t}Last 50 posts{/t}]
{/if}
{else}
&#91;<a href="{%KU_WEBFOLDER}{$board.name}/res/{$posts.0.id}.html">{t}Entire Thread{/t}</a>&#93;
{/if}
</div>
+419
View File
@@ -0,0 +1,419 @@
{if not $isexpand and not $isread}
<form id="delform" action="{%KU_CGIPATH}/board.php" method="post">
<input type="hidden" name="board" value="{$board.name}" />
{/if}
{foreach key=postkey item=post from=$posts name=postsloop}
{if $post.parentid eq 0}
<a name="s{$.foreach.thread.iteration}"></a>
{if ($post.file neq '' || $post.file_type neq '' ) && (( $post.videobox eq '' && $post.file neq '') && $post.file neq 'removed')}
<span class="filesize">
{if $post.file_type eq 'mp3'}
{t}Audio{/t}
{else}
{t}File{/t}
{/if}
{if $post.file_type neq 'jpg' && $post.file_type neq 'gif' && $post.file_type neq 'png' && $post.videobox eq ''}
<a
{if %KU_NEWWINDOW}
target="_blank"
{/if}
href="{$file_path}/src/{$post.file}.{$post.file_type}">
{else}
<a href="{$file_path}/src/{$post.file}.{$post.file_type}" onclick="javascript:expandimg('{$post.id}', '{$file_path}/src/{$post.file}.{$post.file_type}', '{$file_path}/thumb/{$post.file}s.{$post.file_type}', '{$post.image_w}', '{$post.image_h}', '{$post.thumb_w}', '{$post.thumb_h}');return false;">
{/if}
{if isset($post.id3.comments_html)}
{if $post.id3.comments_html.artist.0 neq ''}
{$post.id3.comments_html.artist.0}
{if $post.id3.comments_html.title.0 neq ''}
-
{/if}
{/if}
{if $post.id3.comments_html.title.0 neq ''}
{$post.id3.comments_html.title.0}
{/if}
</a>
{else}
{$post.file}.{$post.file_type}</a>
{/if}
- ({$post.file_size_formatted}
{if $post.id3.comments_html.bitrate neq 0 || $post.id3.audio.sample_rate neq 0}
{if $post.id3.audio.bitrate neq 0}
- {round($post.id3.audio.bitrate / 1000)} kbps
{if $post.id3.audio.sample_rate neq 0}
-
{/if}
{/if}
{if $post.id3.audio.sample_rate neq 0}
{$post.id3.audio.sample_rate / 1000} kHz
{/if}
{/if}
{if $post.image_w > 0 && $post.image_h > 0}
, {$post.image_w}x{$post.image_h}
{/if}
{if $post.file_original neq '' && $post.file_original neq $post.file}
, {$post.file_original}.{$post.file_type}
{/if}
)
{if $post.id3.playtime_string neq ''}
{t}Length{/t}: {$post.id3.playtime_string}
{/if}
</span>
{if %KU_THUMBMSG}
<span class="thumbnailmsg">
{if $post.file_type neq 'jpg' && $post.file_type neq 'gif' && $post.file_type neq 'png' && $post.videobox eq ''}
{t}Extension icon displayed, click image to open file.{/t}
{else}
{t}Thumbnail displayed, click image for full size.{/t}
{/if}
</span>
{/if}
<br />
{/if}
{if $post.videobox eq '' && $post.file neq '' && ( $post.file_type eq 'jpg' || $post.file_type eq 'gif' || $post.file_type eq 'png')}
{if $post.file eq 'removed'}
<div class="nothumb">
{t}File<br />Removed{/t}
</div>
{else}
<a
{if %KU_NEWWINDOW}
target="_blank"
{/if}
href="{$file_path}/src/{$post.file}.{$post.file_type}">
<span id="thumb{$post.id}"><img src="{$file_path}/thumb/{$post.file}s.{$post.file_type}" alt="{$post.id}" class="thumb" height="{$post.thumb_h}" width="{$post.thumb_w}" /></span>
</a>
{/if}
{elseif $post.nonstandard_file neq ''}
{if $post.file eq 'removed'}
<div class="nothumb">
{t}File<br />Removed{/t}
</div>
{else}
<a
{if %KU_NEWWINDOW}
target="_blank"
{/if}
href="{$file_path}/src/{$post.file}.{$post.file_type}">
<span id="thumb{$post.id}"><img src="{$post.nonstandard_file}" alt="{$post.id}" class="thumb" height="{$post.thumb_h}" width="{$post.thumb_w}" /></span>
</a>
{/if}
{/if}
<a name="{$post.id}"></a>
<label>
<input type="checkbox" name="post[]" value="{$post.id}" />
{if $post.subject neq ''}
<span class="filetitle">
{$post.subject}
</span>
{/if}
{strip}
<span class="postername">
{if $post.email && $board.anonymous}
<a href="mailto:{$post.email}">
{/if}
{if $post.name eq '' && $post.tripcode eq ''}
{$board.anonymous}
{elseif $post.name eq '' && $post.tripcode neq ''}
{else}
{$post.name}
{/if}
{if $post.email neq '' && $board.anonymous neq ''}
</a>
{/if}
</span>
{if $post.tripcode neq ''}
<span class="postertrip">!{$post.tripcode}</span>
{/if}
{/strip}
{if $post.posterauthority eq 1}
<span class="admin">
&#35;&#35;&nbsp;{t}Admin{/t}&nbsp;&#35;&#35;
</span>
{elseif $post.posterauthority eq 4}
<span class="mod">
&#35;&#35;&nbsp;{t}Super Mod{/t}&nbsp;&#35;&#35;
</span>
{elseif $post.posterauthority eq 2}
<span class="mod">
&#35;&#35;&nbsp;{t}Mod{/t}&nbsp;&#35;&#35;
</span>
{/if}
{$post.timestamp_formatted}
</label>
<span class="reflink">
{$post.reflink}
</span>
{if $board.showid}
ID: {$post.ipmd5|substr:0:6}
{/if}
<span id="dnb-{$board.name}-{$post.id}-y"></span>
<br />
{else}
{if $numimages > 0 && $isexpand && $.foreach.postsloop.first}
<a href="#top" onclick="javascript:
{foreach key=postkey2 item=post2 from=$posts}
{if $post2.parentid neq 0}
{if $post2.file_type eq 'jpg' || $post2.file_type eq 'gif' || $post2.file_type eq 'png'}
expandimg('{$post2.id}', '{$file_path}/src/{$post2.file}.{$post2.file_type}', '{$file_path}/thumb/{$post2.file}s.{$post2.file_type}', '{$post2.image_w}', '{$post2.image_h}', '{$post2.thumb_w}', '{$post2.thumb_h}');
{/if}
{/if}
{/foreach}
return false;">{t}Expand all images{/t}</a>
{/if}
<table>
<tbody>
<tr>
<td class="doubledash">
&gt;&gt;
</td>
<td class="reply" id="reply{$post.id}">
<a name="{$post.id}"></a>
<label>
<input type="checkbox" name="post[]" value="{$post.id}" />
{if $post.subject neq ''}
<span class="filetitle">
{$post.subject}
</span>
{/if}
{strip}
<span class="postername">
{if $post.email && $board.anonymous}
<a href="mailto:{$post.email}">
{/if}
{if $post.name eq '' && $post.tripcode eq ''}
{$board.anonymous}
{elseif $post.name eq '' && $post.tripcode neq ''}
{else}
{$post.name}
{/if}
{if $post.email neq '' && $board.anonymous neq ''}
</a>
{/if}
</span>
{if $post.tripcode neq ''}
<span class="postertrip">!{$post.tripcode}</span>
{/if}
{/strip}
{if $post.posterauthority eq 1}
<span class="admin">
&#35;&#35;&nbsp;{t}Admin{/t}&nbsp;&#35;&#35;
</span>
{elseif $post.posterauthority eq 4}
<span class="mod">
&#35;&#35;&nbsp;{t}Super Mod{/t}&nbsp;&#35;&#35;
</span>
{elseif $post.posterauthority eq 2}
<span class="mod">
&#35;&#35;&nbsp;{t}Mod{/t}&nbsp;&#35;&#35;
</span>
{/if}
{$post.timestamp_formatted}
</label>
<span class="reflink">
{$post.reflink}
</span>
{if $board.showid}
ID: {$post.ipmd5|substr:0:6}
{/if}
<span class="extrabtns">
{if $post.locked eq 1}
<img style="border: 0;" src="{$boardpath}css/locked.gif" alt="{t}Locked{/t}" />
{/if}
{if $post.stickied eq 1}
<img style="border: 0;" src="{$boardpath}css/sticky.gif" alt="{t}Stickied{/t}" />
{/if}
</span>
<span id="dnb-{$board.name}-{$post.id}-n"></span>
{if ($post.file neq '' || $post.file_type neq '' ) && (( $post.videobox eq '' && $post.file neq '') && $post.file neq 'removed')}
<br /><span class="filesize">
{if $post.file_type eq 'mp3'}
{t}Audio{/t}
{else}
{t}File{/t}
{/if}
{if $post.file_type neq 'jpg' && $post.file_type neq 'gif' && $post.file_type neq 'png' && $post.videobox eq ''}
<a
{if %KU_NEWWINDOW}
target="_blank"
{/if}
href="{$file_path}/src/{$post.file}.{$post.file_type}">
{else}
<a href="{$file_path}/src/{$post.file}.{$post.file_type}" onclick="javascript:expandimg('{$post.id}', '{$file_path}/src/{$post.file}.{$post.file_type}', '{$file_path}/thumb/{$post.file}s.{$post.file_type}', '{$post.image_w}', '{$post.image_h}', '{$post.thumb_w}', '{$post.thumb_h}');return false;">
{/if}
{if isset($post.id3.comments_html)}
{if $post.id3.comments_html.artist.0 neq ''}
{$post.id3.comments_html.artist.0}
{if $post.id3.comments_html.title.0 neq ''}
-
{/if}
{/if}
{if $post.id3.comments_html.title.0 neq ''}
{$post.id3.comments_html.title.0}
{/if}
</a>
{else}
{$post.file}.{$post.file_type}</a>
{/if}
- ({$post.file_size_formatted}
{if $post.id3.comments_html.bitrate neq 0 || $post.id3.audio.sample_rate neq 0}
{if $post.id3.audio.bitrate neq 0}
- {round($post.id3.audio.bitrate / 1000)} kbps
{if $post.id3.audio.sample_rate neq 0}
-
{/if}
{/if}
{if $post.id3.audio.sample_rate neq 0}
{$post.id3.audio.sample_rate / 1000} kHz
{/if}
{/if}
{if $post.image_w > 0 && $post.image_h > 0}
, {$post.image_w}x{$post.image_h}
{/if}
{if $post.file_original neq '' && $post.file_original neq $post.file}
, {$post.file_original}.{$post.file_type}
{/if}
)
{if $post.id3.playtime_string neq ''}
{t}Length{/t}: {$post.id3.playtime_string}
{/if}
</span>
{if %KU_THUMBMSG}
<span class="thumbnailmsg">
{if $post.file_type neq 'jpg' && $post.file_type neq 'gif' && $post.file_type neq 'png' && $post.videobox eq ''}
{t}Extension icon displayed, click image to open file.{/t}
{else}
{t}Thumbnail displayed, click image for full size.{/t}
{/if}
</span>
{/if}
{/if}
{if $post.videobox eq '' && $post.file neq '' && ( $post.file_type eq 'jpg' || $post.file_type eq 'gif' || $post.file_type eq 'png')}
<br />
{if $post.file eq 'removed'}
<div class="nothumb">
{t}File<br />Removed{/t}
</div>
{else}
<a
{if %KU_NEWWINDOW}
target="_blank"
{/if}
href="{$file_path}/src/{$post.file}.{$post.file_type}">
<span id="thumb{$post.id}"><img src="{$file_path}/thumb/{$post.file}s.{$post.file_type}" alt="{$post.id}" class="thumb" height="{$post.thumb_h}" width="{$post.thumb_w}" /></span>
</a>
{/if}
{elseif $post.nonstandard_file neq ''}
<br />
{if $post.file eq 'removed'}
<div class="nothumb">
{t}File<br />Removed{/t}
</div>
{else}
<a
{if %KU_NEWWINDOW}
target="_blank"
{/if}
href="{$file_path}/src/{$post.file}.{$post.file_type}">
<span id="thumb{$post.id}"><img src="{$post.nonstandard_file}" alt="{$post.id}" class="thumb" height="{$post.thumb_h}" width="{$post.thumb_w}" /></span>
</a>
{/if}
{/if}
{/if}
{if $post.file_type eq 'mp3'}
<!--[if !IE]> -->
<object type="application/x-shockwave-flash" data="{%KU_WEBPATH}/inc/player/player.swf?playerID={$post.id}&amp;soundFile={$file_path}/src/{$post.file|utf8_encode|urlencode}.mp3{if $post.id3.comments_html.artist.0 neq ''}&amp;artists={$post.id3.comments_html.artist.0}{/if}{if $post.id3.comments_html.title.0 neq ''}&amp;titles={$post.id3.comments_html.title.0|html_entity_decode|utf8_encode|urlencode}{/if}&amp;wmode=transparent" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=10,0,22,87" width="290" height="24">
<param name="wmode" value="transparent" />
<!-- <![endif]-->
<!--[if IE]>
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=10,0,22,87" width="290" height="24">
<param name="movie" value="{%KU_WEBPATH}/inc/player/player.swf?playerID={$post.id}&amp;soundFile={$file_path}/src/{$post.file|utf8_encode|urlencode}.mp3{if $post.id3.comments_html.artist.0 neq ''}&amp;artists={$post.id3.comments_html.artist.0}{/if}{if $post.id3.comments_html.title.0 neq ''}&amp;titles={$post.id3.comments_html.title.0|html_entity_decode|utf8_encode|urlencode}{/if}&amp;wmode=transparent" />
<param name="wmode" value="transparent" />
<!-->
</object>
<!-- <![endif]-->
{/if}
<blockquote>
{if $post.videobox}
{$post.videobox}
{/if}
{$post.message}
</blockquote>
{if not $post.stickied && $post.parentid eq 0 && (($board.maxage > 0 && ($post.timestamp + ($board.maxage * 3600)) < (time() + 7200 ) ) || ($post.deleted_timestamp > 0 && $post.deleted_timestamp <= (time() + 7200)))}
<span class="oldpost">
{t}Marked for deletion (old){/t}
</span>
<br />
{/if}
{if $post.parentid eq 0}
{if $modifier eq 'last50'}
<span class="omittedposts">
{$replycount-50}
{if $replycount-50 eq 1}
{t lower="yes"}Post{/t}
{else}
{t lower="yes"}Posts{/t}
{/if}
{t}omitted{/t}. {t}Last 50 shown{/t}.
</span>
{/if}
{if $numimages > 0}
<a href="#top" onclick="javascript:
{foreach key=postkey2 item=post2 from=$posts}
{if $post2.parentid neq 0}
{if $post2.file_type eq 'jpg' || $post2.file_type eq 'gif' || $post2.file_type eq 'png'}
expandimg('{$post2.id}', '{$file_path}/src/{$post2.file}.{$post2.file_type}', '{$file_path}/thumb/{$post2.file}s.{$post2.file_type}', '{$post2.image_w}', '{$post2.image_h}', '{$post2.thumb_w}', '{$post2.thumb_h}');
{/if}
{/if}
{/foreach}
return false;">{t}Expand all images{/t}</a>
{/if}
{else}
</td>
</tr>
</tbody>
</table>
{/if}
{/foreach}
{if $modifier eq 'first100'}
<span class="omittedposts" style="float: left">
{$replycount-100}
{if $replycount-100 eq 1}
{t lower="yes"}Post{/t}
{else}
{t lower="yes"}Posts{/t}
{/if}
{t}omitted{/t}. {t}First 100 shown{/t}.
</span>
{/if}
{if not $isread}
{if $replycount > 2}
<span style="float:right">
&#91;<a href="/{$board.name}/">{t}Return{/t}</a>&#93;
{if %KU_FIRSTLAST && ( count($posts) > 50 || $replycount > 50)}
&#91;<a href="/{$board.name}/res/{$posts.0.id}.html">{t}Entire Thread{/t}</a>&#93;
&#91;<a href="/{$board.name}/res/{$posts.0.id}+50.html">{t}Last 50 posts{/t}</a>&#93;
{if ( count($posts) > 100 || $replycount > 100) }
&#91;<a href="/{$board.name}/res/{$posts.0.id}-100.html">{t}First 100 posts{/t}</a>&#93;
{/if}
{/if}
</span>
{/if}
</div>
{if not $isexpand}
<br clear="left" />
<hr />
{/if}
{/if}
+32
View File
@@ -0,0 +1,32 @@
<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title>{%KU_NAME} - {$boardname}</title>
<link>{%KU_BOARDSPATH}/{$boardname}</link>
<description>Live RSS feed for {%KU_BOARDSPATH}/{$boardname}</description>
<language>{%KU_LOCALE}</language>';
{foreach name=rss from=$posts item=item}
<item>
<title>{$item.id}</title>
<link>
{if $item.parentid neq 0}
{%KU_BOARDSPATH}/{$boardname}/res/{$item.parentid}.html#{$item.id}</link>
{else}
{%KU_BOARDSPATH}/{$boardname}/res/{$item.id}.html</link>
{/if}
<description><![CDATA[
{if $item.file neq ''}
{if $item.file_type eq 'jpg' || $item.file_type eq 'png' || $item.file_type eq 'gif'}
<a href="{%KU_BOARDSPATH}/{$boardname}/src/{$item.file}.{$item.file_type}"><img src="{%KU_BOARDSPATH}/{$boardname}/thumb/{$item.file}s.{$item.file_type}" /></a><br /><br />
{else}
[{%KU_BOARDSPATH}/{$boardname}/src/{$item.file}.{$item.file_type}] <br /><br />
{/if}
{/if}
{if trim($item.message) neq ''}
{$item.message|stripslashes}<br />
{/if}
]]></description>
</item>
{/foreach}
</channel>
</rss>
+15
View File
@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title>{%KU_NAME} - Modlog</title>
<link>{%KU_WEBPATH}</link>
<description>Live view of all moderative actions on {%KU_WEBPATH}</description>
<language>{%KU_LOCALE}</language>
{foreach from=$entries item=item}
<item>
<title>{$item.timestamp|date_format:"%a %m/%d %H:%M"}</title>
<description><![CDATA[{$item.user} - {$item.entry}]]></description>
</item>
{/foreach}
</channel>
</rss>
+164
View File
@@ -0,0 +1,164 @@
{foreach name=thread item=postsa from=$posts}
{foreach name=pst key=postkey item=post from=$postsa}
{if $post.parentid eq 0}
<div class="border">
<div class="thread">
<a name="{$.foreach.thread.iteration-1}"></a>
{/if}
{if $post.parentid eq 0}
{if $.foreach.thread.last}
<span class="navlinks">
<a href="#{$posts|count - 1}">&uarr;</a>&nbsp;
<a href="#0">&darr;</a>&nbsp;
<a href="#menu">&#9632;</a>
</span>
{else}
<span class="navlinks">
<a href="#{$posts|count - 1}">&uarr;</a>&nbsp;
<a href="#{$.foreach.thread.iteration}">&darr;</a>&nbsp;
<a href="#menu">&#9632;</a>
</span>
{/if}
{/if}
{if $post.parentid eq 0}
<h2>
<a href="res/{$post.id}.html">{$post.subject}</a>
<span class="replies">({$postsa.0.replies})</span></h2>
{/if}
{if $.foreach.thread.iteration % 2 eq 0}
<div class="post even">
{else}
<div class="post odd">
{/if}
<h3>
<span class="postnum">
{if $post.parentid eq 0}
<a href="javascript:quote(1, 'post{$post.id}');">1</a>
<a href="{%KU_BOARDSPATH}/{$board.name}/res/{$post.id}.html#1">.</a>
{else}
<a href="javascript:quote({math "replies-postcount+iteration+x" replies=$postsa.0.replies postcount=$postsa|count iteration=$.foreach.pst.iteration x=1}, 'post{$post.id}');">{math "replies-postcount+iteration+x" replies=$postsa.0.replies postcount=$postsa|count iteration=$.foreach.pst.iteration x=1}</a>
<a href="{%KU_BOARDSPATH}/{$board.name}/res/{$post.parentid}.html#{math "replies-postcount+iteration+x" replies=$postsa.0.replies postcount=$postsa|count iteration=$.foreach.pst.iteration x=1}">.</a>
{/if}
</span>
<span class="postinfo">
{t}Name{/t}:
<span class="postername">
{if $post.email neq '' && $board.anonymous neq ''}
<a href="mailto:{$post.email}">
{/if}
{if $post.name eq '' && $post.tripcode eq ''}
{$board.anonymous}
{elseif $post.name eq '' && $post.tripcode neq ''}
{else}
{$post.name}
{/if}
{if $post.email neq '' && $board.anonymous neq ''}
</a>
{/if}
</span>
{if $post.tripcode neq ''}
<span class="postertrip">!{$post.tripcode}</span>
{/if}
@ {$post.timestamp|date_format:"%Y-%m-%d %H:%M"}
{if $board.showid}
{t}ID{/t}: {$post.ipmd5|substr:0:6}
{/if}
<span id="dnb-{$board.name}-{$post.id}-{if $post.parentid eq 0}y{else}n{/if}"></span>
<span class="id"></span>
</span>
</h3>
<blockquote>
{$post.message}
</blockquote>
</div>
{if $.foreach.pst.last}
<form name="post{if $post.parentid eq 0}{$post.id}{else}{$post.parentid}{/if}" id="post{if $post.parentid eq 0}{$post.id}{else}{$post.parentid}{/if}" action="{%KU_CGIPATH}/board.php" method="post" {if $board.enablecaptcha eq 1}onsubmit="return checkcaptcha('post{if $post.parentid eq 0}{$post.id}{else}{$post.parentid}{/if}');"{/if}>
<input type="hidden" name="board" value="{$board.name}" />
<input type="hidden" name="replythread" value="{if $post.parentid eq 0}{$post.id}{else}{$post.parentid}{/if}" />
<input name="email" size="25" value="" style="display: none;" />
<table class="postform">
<tr>
{if $board.forcedanon neq 1}
<td class="label">
<label>{t}Name{/t}:</label>
</td>
<td>
<input name="name" size="25" maxlength="75" />
</td>
{/if}
<td class="label">
<label>{t}Email{/t}:</label>
</td>
<td>
<input name="em" size="25" maxlength="75" />
</td>
{if $board.forcedanon neq 1}
<td>
<input type="submit" name="submit" value="{t}Reply{/t}" class="submit" />
<a href="#" onclick="toggleOptions('{if $post.parentid eq 0}{$post.id}{else}{$post.parentid}{/if}', 'post{if $post.parentid eq 0}{$post.id}{else}{$post.parentid}{/if}', '{$board.name}');return false;">{t}More{/t}...</a>
</td>
</tr>
<tr>
{/if}
{if $board.enablecaptcha eq 1}
<td class="label"><label for="captcha">{t}Captcha{/t}:</label></td>
<td>
<a href="#" onclick="javascript:document.getElementById('captchaimage').src = '{%KU_CGIPATH}/captcha.php?' + Math.random();return false;">
<img id="captchaimage" src="{%KU_CGIPATH}/captcha.php" border="0" width="90" height="30" alt="Captcha image" />
</a>&nbsp;
<input type="text" id="captcha" name="captcha" size="8" maxlength="6" />
</td>
{/if}
{if ($board.forcedanon eq 1 && $board.enablecaptcha neq 1) || $board.forcedanon neq 1}
<td class="label">
<label>{t}Password{/t}:</label>
</td>
<td>
<input type="password" name="postpassword" size="8" accesskey="p" maxlength="75" />
</td>
{/if}
{if $board.forcedanon eq 1}
<td>
<input type="submit" name="submit" value="{t}Reply{/t}" class="submit" />
<a href="#" onclick="toggleOptions('{if $post.parentid eq 0}{$post.id}{else}{$post.parentid}{/if}', 'post{if $post.parentid eq 0}{$post.id}{else}{$post.parentid}{/if}', '{$board.name}');return false;">{t}More{/t}...</a>
</td>
{if $board.enablecaptcha eq 1}
</tr>
<tr>
<td class="label">
<label>{t}Password{/t}:</label>
</td>
<td>
<input type="password" name="postpassword" size="8" accesskey="p" maxlength="75" />
</td>
{/if}
{/if}
</tr>
<tr style="display: none;" id="opt{if $post.parentid eq 0}{$post.id}{else}{$post.parentid}{/if}"><td></td></tr>
<tr>
<td class="postfieldleft">
<span class="postnum">
{$postsa.0.replies+2}
</span>
</td>
<td colspan="4">
<textarea name="message" rows="8" cols="64"></textarea>
</td>
</tr>
</table>
<div id="preview{if $post.parentid eq 0}{$post.id}{else}{$post.parentid}{/if}"></div>
</form>
<script type="text/javascript"><!--
set_inputs('post{if $post.parentid eq 0}{$post.id}{else}{$post.parentid}{/if}');
//--></script>
</div></div>
{/if}
{/foreach}
{/foreach}
+8
View File
@@ -0,0 +1,8 @@
<br />
<div class="footer" style="clear: both;">
{* I'd really appreciate it if you left the link to kusabax.org in the footer, if you decide to modify this. That being said, you are not bound by license or any other terms to keep it there *}
<div class="legal"> - <a href="http://www.kusabax.org/" target="_top">kusaba x {%KU_VERSION}</a>
{if $executiontime neq ''} + {t}Took{/t} {$executiontime}s -{/if}<br />
- <a href="{%KU_CGIPATH}/manage.php" target="_top">{t}Manage boards{/t}</a> -</div>
{* botads go here *}
</div>
+98
View File
@@ -0,0 +1,98 @@
<script type="text/javascript" src="{$cwebpath}lib/javascript/protoaculous-compressed.js"></script>
<link rel="stylesheet" type="text/css" href="{$cwebpath}css/txt_global.css" />
{loop $ku_styles}
<link rel="{if $ neq $__.ku_defaultstyle}alternate {/if}stylesheet" type="text/css" href="{$__.cwebpath}css/txt_{$}.css" title="{$|capitalize}" />
{/loop}
{if $locale eq 'ja'}
{literal}
<style type="text/css">
*{
font-family: IPAMonaPGothic, Mona, 'MS PGothic', YOzFontAA97 !important;
font-size: 1em;
}
</style>
{/literal}
{/if}
{if %KU_RSS neq ''}
<link rel="alternate" type="application/rss+xml" title="RSS" href="{%KU_BOARDSPATH}/{$board.name}/rss.xml" />
{/if}
<script type="text/javascript"><!--
var ku_boardspath = '{%KU_BOARDSPATH}';
var ku_cgipath = '{%KU_CGIPATH}';
var style_cookie_txt = "kustyle_txt";
{if $replythread > 0}
var ispage = false;
{else}
var ispage = true;
{/if}
//--></script>
<script type="text/javascript" src="{%KU_WEBPATH}/lib/javascript/kusaba.js"></script>
<script type="text/javascript"><!--
var hiddenthreads = getCookie('hiddenthreads').split('!');
//--></script>
</head>
{if $replythread eq 0}
<body class="board">
{else}
<body class="read">
{/if}
<div class="topbar">
{if %KU_GENERATEBOARDLIST}
{foreach name=sections item=sect from=$boardlist}
[
{foreach name=brds item=brd from=$sect}
<a title="{$brd.desc}" href="{%KU_BOARDSFOLDER}{$brd.name}/">{$brd.name}</a>{if $.foreach.brds.last}{else} / {/if}
{/foreach}
]
{/foreach}
{else}
{if is_file($boardlist)}
{include $boardlist}
{/if}
{/if}
</div>
{if not $isthread}
<div class="fullhead">
<div class="hborder">
<div class="head">
<a name="menu" rev="contents"></a>
{if $isindex eq 1}
<span class="navlinks"><a href="#0">&darr;</a>&nbsp;<a href="#menu">&#9632;</a></span>
{/if}
<h1 align="center">{$board.desc}</h1>
{$board.includeheader}
</div>
</div>
{if %KU_TXTSTYLESWITCHER && $isindex}
<div class="hborder">
<div class="head midhead">
<strong>{t}Styles{/t}:</strong>
{loop $ku_styles}
<a href="#" onclick="javascript:set_stylesheet('{$|capitalize:true}',true);return false;">
{strip}{if $ eq 'futatxt'}
FutaTXT
{elseif $ eq 'buritxt'}
BuriTXT
{else}
{$|capitalize:true}
{/if}
{/strip}</a>
{/loop}
</div>
</div>
{/if}
{if $isindex eq 0}
{t}Pages{/t}:&nbsp;<a href="{%KU_BOARDSPATH}/{$board.name}/">{t}Front{/t}</a>
{section name=pages loop=$numpages}
&nbsp;
{if $.section.pages.iteration neq $thispage}
<a href="list{if $.section.pages.iteration neq 1}{$.section.pages.iteration}{/if}.html">
{/if}
{$.section.pages.iteration}
{if $.section.pages.iteration neq $thispage}
</a>
{/if}
{/section}
<br />
{/if}
{/if}
+96
View File
@@ -0,0 +1,96 @@
<div class="hborder head newthread">
<a id="newthread"></a><h2>{t}New Thread{/t}</h2>
<a id="postbox"></a>
<form name="postform" id="postform" action="{%KU_CGIPATH}/board.php" method="post" enctype="multipart/form-data"{if $board.enablecaptcha eq 1} onsubmit="return checkcaptcha('postform');"{/if}>
<input type="hidden" name="board" value="{$board.name}" />
<input type="hidden" name="replythread" value="<!sm_threadid>" />
{if $board.maximagesize > 0}
<input type="hidden" name="MAX_FILE_SIZE" value="{$board.maximagesize}" />
{/if}
<input type="text" name="email" size="28" maxlength="75" value="" style="display: none;" />
<table class="postform">
<tr>
<td class="label">
<label>{t}Subject{/t}:</label>
</td>
<td colspan="4">
<input name="subject" maxlength="75" size="50" style="width: 70%;" />
</td>
</tr>
<tr>
{if $board.forcedanon neq 1}
<td class="label">
<label>{t}Name{/t}:</label>
</td>
<td>
<input name="name" size="25" maxlength="75" />
</td>
{/if}
<td class="label">
<label>{t}Email{/t}:</label>
</td>
<td>
<input name="em" size="25" maxlength="75" />
</td>
{if $board.forcedanon neq 1}
<td>
<input type="submit" name="submit" value="{t}Submit{/t}" class="submit" />
<a href="#" onclick="toggleOptions('0', 'postform', '{$board.name}');return false;">{t}More{/t}...</a>
</td>
</tr>
<tr>
{/if}
{if $board.enablecaptcha eq 1}
<td class="label"><label for="captcha">{t}Captcha{/t}:</label></td>
<td>
<a href="#" onclick="javascript:document.getElementById('captchaimage').src = '{%KU_CGIPATH}/captcha.php?' + Math.random();return false;">
<img id="captchaimage" src="{%KU_CGIPATH}/captcha.php" border="0" width="90" height="30" alt="Captcha image" />
</a>&nbsp;
<input type="text" id="captcha" name="captcha" size="8" maxlength="6" />
</td>
{/if}
{if ($board.forcedanon eq 1 && $board.enablecaptcha neq 1) || $board.forcedanon neq 1}
<td class="label">
<label>{t}Password{/t}:</label>
</td>
<td>
<input type="password" name="postpassword" size="8" accesskey="p" maxlength="75" />
</td>
{/if}
{if $board.forcedanon eq 1}
<td>
<input type="submit" name="submit" value="{t}Submit{/t}" class="submit" />
<a href="#" onclick="toggleOptions('0', 'postform', '{$board.name}');return false;">{t}More{/t}...</a>
</td>
{if $board.enablecaptcha eq 1}
</tr>
<tr>
<td class="label">
<label>{t}Password{/t}:</label>
</td>
<td>
<input type="password" name="postpassword" size="8" accesskey="p" maxlength="75" />
</td>
{/if}
{/if}
</tr>
<tr style="display: none;" id="opt0"><td></td></tr>
<tr>
<td class="postfieldleft">
<span class="postnum">
1
</span>
</td>
<td colspan="4">
<textarea name="message" rows="8" cols="64"></textarea>
</td>
</tr>
</table>
<div id="preview0"></div>
</form>
</div>
<script type="text/javascript"><!--
set_inputs("postform");
//--></script>
+12
View File
@@ -0,0 +1,12 @@
<a href="{%KU_WEBFOLDER}{$board.name}/">{t}Return{/t}</a>
{if $replythread}
<a href="{%KU_WEBFOLDER}{$board.name}/res/{$replythread}.html">{t}Entire Thread{/t}</a>
{/if}
{if %KU_FIRSTLAST && ( count($posts) > 50 || $replycount > 50)}
<a href="{%KU_WEBFOLDER}{$board.name}/res/{$posts.0.id}+50.html">{t}Last 50 posts{/t}</a>
{if ( count($posts) > 100 || $replycount > 100) }
<a href="{%KU_WEBFOLDER}{$board.name}/res/{$posts.0.id}-100.html">{t}First 100 posts{/t}</a>
{/if}
{/if}
<br />
<br />
+189
View File
@@ -0,0 +1,189 @@
{foreach name=pst key=postkey item=post from=$posts}
{if $post.parentid eq 0 || isread}
<form id="delform" action="{%KU_CGIPATH}/board.php" method="post">
<input type="hidden" name="board" value="{$board.name}" />
{if $post.parentid eq 0 }
<h2>
{$post.subject}
<span class="replies">({$posts|count - 1})</span></h2>
{/if}
{/if}
<div class="post even">
<h3>
<span class="postnum">
{if $post.parentid eq 0}
<a href="javascript:quote(1, 'post{$post.id}');">1</a>
<a href="{%KU_BOARDSPATH}/{$board.name}/res/{$post.id}.html#1">.</a>
{else}
<a href="javascript:quote({if not $postnum}{$.foreach.pst.iteration}{else}{$postnum}{/if}, 'post{$post.id}');">{if not $postnum}{$.foreach.pst.iteration}{else}{$postnum}{/if}</a>
<a href="{%KU_BOARDSPATH}/{$board.name}/res/{$post.parentid}.html#{if not $postnum}{$.foreach.pst.iteration}{else}{$postnum}{/if}">.</a>
{/if}
</span>
<span class="postinfo">
{t}Name{/t}:
<span class="postername">
{if $post.email neq '' && $board.anonymous neq ''}
<a href="mailto:{$post.email}">
{/if}
{if $post.name eq '' && $post.tripcode eq ''}
{$board.anonymous}
{elseif $post.name eq '' && $post.tripcode neq ''}
{else}
{$post.name}
{/if}
{if $post.email neq '' && $board.anonymous neq ''}
</a>
{/if}
</span>
{if $post.tripcode neq ''}
<span class="postertrip">!{$post.tripcode}</span>
{/if}
@ {$post.timestamp|date_format:"%Y-%m-%d %H:%M"}
{if $board.showid}
{t}ID{/t}: {$post.ipmd5|substr:0:6}
{/if}
<input type="checkbox" name="post[]" value="{$post.id}" />
<span id="dnb-{$board.name}-{$post_id}-{if $post.parentid eq 0}y{else}n{/if}"></span>
<span class="id"></span>
</span>
</h3>
<blockquote>
{$post.message}
</blockquote>
</div>
{if not $post.stickied && $post.parentid eq 0 && (($board.maxage > 0 && ($post + ($board.maxage * 3600)) < (time() + 7200 ) ) || ($post.deleted_timestamp > 0 && $post.deleted_timestamp <= (time() + 7200)))}
<span class="oldpost">
{t}Marked for deletion (old){/t}
</span>
<br />
{/if}
{if $post.parentid eq 0}
<div id="replies{$post.id}{$board.name}">
{if $modifier}
<span class="abbrev">
{if $modifier eq 'last50'}
{$replycount-50}
{if $replycount-50 eq 1}
{t lower="yes"}Post{/t}
{else}
{t lower="yes"}Posts{/t}
{/if}
{t}omitted{/t}. {t}Last 50 posts shown{/t}.
{elseif $modifier eq 'first100'}
{$replycount-100}
{if $replycount-100 eq 1}
{t lower="yes"}Post{/t}
{else}
{t lower="yes"}Posts{/t}
{/if}
{t}omitted{/t}. {t}First 100 posts shown{/t}.
{/if}
</span>
{/if}
{/if}
{if $.foreach.pst.last && not $isread}
<table class="hborder">
<tbody>
<tr>
<td>
{t}Delete Post{/t}: <input type="password" name="postpassword" size="8" />&nbsp;<input name="deletepost" value="{t}Delete{/t}" type="submit" />
</td>
</tr>
</tbody>
</table>
</form>
<script type="text/javascript"><!--
set_delpass("delform");
//--></script>
{if !$posts.0.locked}
<form name="post{$posts.0.id}" id="post{$posts.0.id}" action="{%KU_CGIPATH}/board.php" method="post" {if $board.enablecaptcha eq 1}onsubmit="return checkcaptcha('post{$posts.parentid}');"{/if}>
<input type="hidden" name="board" value="{$board.name}" />
<input type="hidden" name="replythread" value="{$posts.0.id}" />
<input name="email" size="25" value="" style="display: none;" />
<table class="postform">
<tr>
{if $board.forcedanon neq 1}
<td class="label">
<label>{t}Name{/t}:</label>
</td>
<td>
<input name="name" size="25" maxlength="75" />
</td>
{/if}
<td class="label">
<label>{t}Email{/t}:</label>
</td>
<td>
<input name="em" size="25" maxlength="75" />
</td>
{if $board.forcedanon neq 1}
<td>
<input type="submit" name="submit" value="{t}Reply{/t}" class="submit" />
<a href="#" onclick="toggleOptions('{$threadid}', 'post{$threadid}', '{$board.name}');return false;">{t}More{/t}...</a>
</td>
</tr>
<tr>
{/if}
{if $board.enablecaptcha eq 1}
<td class="label"><label for="captcha">{t}Captcha{/t}:</label></td>
<td>
<a href="#" onclick="javascript:document.getElementById('captchaimage').src = '{%KU_CGIPATH}/captcha.php?' + Math.random();return false;">
<img id="captchaimage" src="{%KU_CGIPATH}/captcha.php" border="0" width="90" height="30" alt="Captcha image" />
</a>&nbsp;
<input type="text" id="captcha" name="captcha" size="8" maxlength="6" />
</td>
{/if}
{if ($board.forcedanon eq 1 && $board.enablecaptcha neq 1) || $board.forcedanon neq 1}
<td class="label">
<label>{t}Password{/t}:</label>
</td>
<td>
<input type="password" name="postpassword" size="8" accesskey="p" maxlength="75" />
</td>
{/if}
{if $board.forcedanon eq 1}
<td>
<input type="submit" name="submit" value="{t}Reply{/t}" class="submit" />
<a href="#" onclick="toggleOptions('{$threadid}', 'post{$threadid}', '{$board.name}');return false;">{t}More{/t}...</a>
</td>
{if $board.enablecaptcha eq 1}
</tr>
<tr>
<td class="label">
<label>{t}Password{/t}:</label>
</td>
<td>
<input type="password" name="postpassword" size="8" accesskey="p" maxlength="75" />
</td>
{/if}
{/if}
</tr>
<tr style="display: none;" id="opt{$threadid}"><td></td></tr>
<tr>
<td class="postfieldleft">
<span class="postnum">
{$posts|count+1}
</span>
</td>
<td colspan="4">
<textarea name="message" rows="8" cols="64"></textarea>
</td>
</tr>
</table>
<div id="preview{$threadid}"></div>
</form>
<script type="text/javascript"><!--
set_inputs('post{$posts.parentid}');
//--></script>
{elseif $isread}
</form>
{/if}
{/if}
{/foreach}
+54
View File
@@ -0,0 +1,54 @@
<div class="hborder">
<div class="head threadldiv"{if $board.compactlist} style="padding: 4px;"{/if}>
<a name="menu"></a>
{if not $board.compactlist || not $isindex}
<table class="threads">
<thead>
<tr>
<th width="10%">#</th>
<th nowrap="nowrap" width="100%">{t}Subject{/t}</th>
<th>{t}Posts{/t}</th>
<th>{t}Last Post{/t}</th>
</tr>
</thead>
<tbody>
{/if}
{if count($threads) > 0}
{foreach key=threadkey name=list item=thread from=$threads}
{if $board.compactlist && $isindex}
<a href="{if $.foreach.list.iteration < %KU_THREADSTXT}#{$.foreach.list.iteration}">{$.foreach.list.iteration}: </a><a href="res/{$thread.id}.html">{else}res/{$thread.id}.html">{$.foreach.list.iteration}: {/if}{$thread.subject} ({$thread.replies + 1})</a>{if $.foreach.thread.last}{else} &nbsp;{/if}
{else}
<tr><td><a href="res/{$thread.id}.html">{$.foreach.list.iteration}</a></td><td><a href="{if $.foreach.list.iteration < %KU_THREADSTXT}#{$.foreach.list.iteration-1}{else}res/{$thread.id}.html{/if}">{$thread.subject}</a></td><td>{$thread.replies + 1}</td><td nowrap="nowrap"><small>{$thread.bumped|date_format:"%e %B %Y %H:%M"}</small></td></tr>
{/if}
{/foreach}
{else}
{if $board.compactlist && $isindex}
{t}There are currently no threads to display.{/t}
{else}
<tr><td>N/A</td><td>{t}There are currently no threads to display.{/t}</td><td>N/A</td><td>N/A</td></tr>
{/if}
{/if}
{if $isindex}
{if $board.compactlist}
<br /><div class="threadlinks">
{else}
<tr><td colspan="4" class="threadlinks">
{/if}
<a href="#newthread" style="display: inline;">{t}New Thread{/t}</a> | <a href="list.html" style="display: inline;">{t}All Threads{/t}</a>
{if $board.compactlist}
</div>
{else}
</td></tr>
{/if}
{/if}
{if not $board.compactlist || not $isindex}
</tbody>
</table>
{/if}
</div>
</div>
</div>
</div>
+97
View File
@@ -0,0 +1,97 @@
{if count($posts) > 0}
<center>
<table width="98%">
<tr>
<td class="postblock" align="center" width="1%">
No.
</td>
<td class="postblock" style="text-align:center;width:25%;">
{t}Name{/t}
</td>
<td class="postblock" align="center" width="1%">
{t}File{/t}
</td>
<td class="postblock" align="center" width="1%">
{t}Tag{/t}
</td>
<td class="postblock" style="text-align:center;width:40%;">
{t}Subject{/t}
</td>
<td class="postblock" align="center" width="1%">
{t}Size{/t}
</td>
<td class="postblock" align="center" width="1%">
{t}Date{/t}
</td>
<td class="postblock" style="text-align:center;width:1px;">
Rep.
</td>
<td class="postblock" style="width:1px;">
&nbsp;
</td>
</tr>
{foreach key=postkey item=post from=$posts}
<tr>
<td align="center">
{$post.id}
</td>
<td>
<span class="postername">
{if $post.email neq '' && $board.anonymous neq ''}
<a href="mailto:{$post.email}">
{/if}
{if $post.name eq '' && $post.tripcode eq ''}
{$board.anonymous}
{elseif $post.name eq '' && $post.tripcode neq ''}
{else}
{$post.name}
{/if}
{if $post.email neq '' && $board.anonymous neq ''}
</a>
{/if}
</span>
{if $post.tripcode neq ''}
<span class="postertrip">!{$post.tripcode}</span>
{/if}
{if $post.posterauthority eq 1}
<span class="admin">
&#35;&#35;&nbsp;{t}Admin{/t}&nbsp;&#35;&#35;
</span>
{elseif $post.posterauthority eq 4}
<span class="mod">
&#35;&#35;&nbsp;{t}Super Mod{/t}&nbsp;&#35;&#35;
</span>
{elseif $post.posterauthority eq 2}
<span class="mod">
&#35;&#35;&nbsp;{t}Mod{/t}&nbsp;&#35;&#35;
</span>
{/if}
</td>
<td align="center">
[<a href="{%KU_BOARDSFOLDER}{$board.name}/src/{$post.file}.{$post.file_type}" target="_blank">{$post.file}.{$post.file_type}</a>]
</td>
<td align="center">
[{$post.tag}]
</td>
<td>
{$post.subject}
</td>
<td align="center">
{$post.file_size_formatted}
</td>
<td>
<span style="white-space: nowrap;">{$post.timestamp|date_format:"%y/%m/%d(%a)%H:%M"}</span>
</td>
<td align="center">
{$post.replies}
</td>
<td align="center">
[<a href="{%KU_BOARDSFOLDER}{$board.name}/res/{$post.id}.html">Reply</a>]
</td>
</tr>
{/foreach}
</table></center><br /><hr />
{/if}
+100
View File
@@ -0,0 +1,100 @@
{if $replythread > 0 && not $isread}
<table class="userdelete">
<tbody>
<tr>
<td>
{t}Delete post{/t}
[<input type="checkbox" name="fileonly" id="fileonly" value="on" /><label for="fileonly">{t}File Only{/t}</label>]<br />{t}Password{/t}
<input type="password" name="postpassword" size="8" />&nbsp;<input name="deletepost" value="{t}Delete{/t}" type="submit" />
{if $board.enablereporting eq 1}
</td>
</tr>
<tr>
<td>
{t}Report post{t}<br />
{t}Reason{/t}
<input type="text" name="reportreason" size="10" />&nbsp;<input name="reportpost" value="{t}Report{/t}" type="submit" />
{/if}
</td>
</tr>
</tbody>
</table>
</form>
{/if}
<script type="text/javascript"><!--
set_delpass("delform");
//--></script>
{if $replythread eq 0}
<table border="1">
<tbody>
<tr>
<td>
{if $thispage eq 0}
{t}Previous{/t}
{else}
<form method="get" action="{%KU_BOARDSFOLDER}{$board.name}/{if ($thispage-1) neq 0}{$thispage-1}.html{/if}">
<input value="{t}Previous{/t}" type="submit" /></form>
{/if}
</td>
<td>
&#91;{if $thispage neq 0}<a href="{%KU_BOARDSPATH}/{$board.name}/">{/if}0{if $thispage neq 0}</a>{/if}&#93;
{section name=pages loop=$numpages}
{strip}
&#91;
{if $.section.pages.iteration neq $thispage}<a href="{%KU_BOARDSFOLDER}{$board.name}/{$.section.pages.iteration}.html">
{/if}
{$.section.pages.iteration}
{if $.section.pages.iteration neq $thispage}
</a>
{/if}
&#93;
{/strip}
{/section}
</td>
<td>
{if $thispage eq $numpages}
{t}Next{/t}
{else}
<form method="get" action="{%KU_BOARDSPATH}/{$board.name}/{$thispage+1}.html"><input value="{t}Next{/t}" type="submit" /></form>
{/if}
</td>
</tr>
</tbody>
</table>
{/if}
<br />
{if $boardlist}
<div class="navbar">
{if %KU_GENERATEBOARDLIST}
{foreach name=sections item=sect from=$boardlist}
[
{foreach name=brds item=brd from=$sect}
<a title="{$brd.desc}" href="{%KU_BOARDSFOLDER}{$brd.name}/">{$brd.name}</a>{if $.foreach.brds.last}{else} / {/if}
{/foreach}
]
{/foreach}
{else}
{if is_file($boardlist)}
{include $boardlist}
{/if}
{/if}
</div>
{/if}
<br />
<div class="footer" style="clear: both;">
{* I'd really appreciate it if you left the link to kusabax.org in the footer, if you decide to modify this. That being said, you are not bound by license or any other terms to keep it there *}
- <a href="http://www.kusabax.org/" target="_top">kusaba x {%KU_VERSION}</a>
{if $executiontime neq ''} + {t}Took{/t} {$executiontime}s -{/if}
{if $botads neq ''}
<div class="content ads">
<center>
{$botads}
</center>
</div>
{/if}
</div>
+98
View File
@@ -0,0 +1,98 @@
<script type="text/javascript" src="{$cwebpath}lib/javascript/protoaculous-compressed.js"></script>
<link rel="stylesheet" type="text/css" href="{$cwebpath}css/img_global.css" />
{loop $ku_styles}
<link rel="{if $ neq $__.ku_defaultstyle}alternate {/if}stylesheet" type="text/css" href="{$__.cwebpath}css/{$}.css" title="{$|capitalize}" />
{/loop}
{if $locale eq 'ja'}
{literal}
<style type="text/css">
*{
font-family: IPAMonaPGothic, Mona, 'MS PGothic', YOzFontAA97 !important;
font-size: 1em;
}
</style>
{/literal}
{/if}
{if %KU_RSS neq ''}
<link rel="alternate" type="application/rss+xml" title="RSS" href="{%KU_BOARDSPATH}/{$board.name}/rss.xml" />
{/if}
<script type="text/javascript"><!--
var ku_boardspath = '{%KU_BOARDSPATH}';
var ku_cgipath = '{%KU_CGIPATH}';
var style_cookie = "kustyle";
{if $replythread > 0}
var ispage = false;
{else}
var ispage = true;
{/if}
//--></script>
<script type="text/javascript" src="{%KU_WEBPATH}/lib/javascript/kusaba.js"></script>
<script type="text/javascript"><!--
var hiddenthreads = getCookie('hiddenthreads').split('!');
//--></script>
</head>
<body>
<div class="adminbar">
{if %KU_STYLESWITCHER}
{if %KU_DROPSWITCHER}
<select onchange="javascript:if(selectedIndex != 0)set_stylesheet(options[selectedIndex].value);return false;">
<option>Styles</option>
{loop $ku_styles}
<option value="{$|capitalize}">{$|capitalize}</option>;
{/loop}
</select>
{else}
{loop $ku_styles}
[<a href="#" onclick="javascript:set_stylesheet('{$|capitalize}');return false;">{$|capitalize}</a>]&nbsp;
{/loop}
{/if}
{if count($ku_styles) > 0}
-&nbsp;
{/if}
{/if}
{if %KU_WATCHTHREADS}
[<a href="#" onclick="javascript:showwatchedthreads();return false" title="{t}Watched Threads{/t}">WT</a>]&nbsp;
{/if}
[<a href="{%KU_WEBPATH}" target="_top">{t}Home{/t}</a>]&nbsp;[<a href="{%KU_CGIPATH}/manage.php" target="_top">{t}Manage{/t}</a>]
</div>
<div class="navbar">
{if %KU_GENERATEBOARDLIST}
{foreach name=sections item=sect from=$boardlist}
[
{foreach name=brds item=brd from=$sect}
<a title="{$brd.desc}" href="{%KU_BOARDSFOLDER}{$brd.name}/">{$brd.name}</a>{if $.foreach.brds.last}{else} / {/if}
{/foreach}
]
{/foreach}
{else}
{if is_file($boardlist)}
{include $boardlist}
{/if}
{/if}
</div>
{if %KU_WATCHTHREADS && not $isoekaki && not $hidewatchedthreads}
<script type="text/javascript"><!--
if (getCookie('showwatchedthreads') == '1') {
document.write('<div id="watchedthreads" style="top: {$ad_top}px; left: 25px;" class="watchedthreads"><div class="postblock" id="watchedthreadsdraghandle" style="width: 100%;">{t}Watched Threads{/t}<\/div><span id="watchedthreadlist"><\/span><div id="watchedthreadsbuttons"><a href="#" onclick="javascript:hidewatchedthreads();return false;" title="{t}Hide the watched threads box{/t}"><img src="{$cwebpath}css/icons/blank.gif" border="0" class="hidewatchedthreads" alt="hide" /><\/a>&nbsp;<a href="#" onclick="javascript:getwatchedthreads(\'0\', \'{$board.name}\');return false;" title="{t}Refresh watched threads{/t}"><img src="{$cwebpath}css/icons/blank.gif" border="0" class="refreshwatchedthreads" alt="refresh" /><\/a><\/div><\/div>');
watchedthreadselement = document.getElementById('watchedthreads');
watchedthreadselement.style.top = getCookie('watchedthreadstop');
watchedthreadselement.style.left = getCookie('watchedthreadsleft');
watchedthreadselement.style.width = Math.max(250,getCookie('watchedthreadswidth')) + 'px';
watchedthreadselement.style.height = Math.max(75,getCookie('watchedthreadsheight')) + 'px';
getwatchedthreads('<!sm_threadid>', '{$board.name}');
}
//--></script>
{/if}
<div class="logo">
{if %KU_HEADERURL neq '' && $board.image eq ''}
<img src="{%KU_HEADERURL}" alt="{t}Logo{/t}" /><br />
{elseif $board.image neq '' && $board.image neq "none"}
<img src="{$board.image}" alt="{t}Logo{/t}" /><br />
{/if}
{if %KU_DIRTITLE}
/{$board.name}/ -
{/if}
{$board.desc}</div>
{$board.includeheader}
<hr />
Loaded 100 of 316 files, more files were not shown because too many files have changed in this diff. Show more