diff options
| author | www-data <www-data@lainchan.org> | 2015-10-08 02:27:10 +0100 |
|---|---|---|
| committer | www-data <www-data@lainchan.org> | 2015-10-08 02:27:10 +0100 |
| commit | a124189630b2d57c1620f3e9685ffc94a346051a (patch) | |
| tree | 08bf53c58dba941abaa776b5e9ee22e8761550c1 | |
| parent | f01e768d6e683de840b5cf420e16ee757004b13e (diff) | |
Repurpose recent theme for homepage
| -rw-r--r-- | templates/themes/categories-uboachan/info.php | 42 | ||||
| -rw-r--r-- | templates/themes/categories-uboachan/theme.php | 223 | ||||
| -rw-r--r-- | templates/themes/categories-uboachan/thumb.png | bin | 0 -> 9965 bytes | |||
| -rw-r--r-- | templates/themes/recent/recent.css | 154 | ||||
| -rw-r--r-- | templates/themes/recent/recent.html | 39 |
5 files changed, 427 insertions, 31 deletions
diff --git a/templates/themes/categories-uboachan/info.php b/templates/themes/categories-uboachan/info.php new file mode 100644 index 00000000..3ef9871f --- /dev/null +++ b/templates/themes/categories-uboachan/info.php @@ -0,0 +1,42 @@ +<?php + $theme = Array(); + + // Theme name + $theme['name'] = 'Categories-Uboachan'; + // Description (you can use Tinyboard markup here) + $theme['description'] = +'Uboachan modification of the Categories theme. + +Requires $config[\'boards\'] and $config[\'categories\'].'; + $theme['version'] = 'v0.2.1'; + + // Theme configuration + $theme['config'] = Array(); + + $theme['config'][] = Array( + 'title' => 'Title', + 'name' => 'title', + 'type' => 'text' + ); + + $theme['config'][] = Array( + 'title' => 'Slogan', + 'name' => 'subtitle', + 'type' => 'text' + ); + + // Unique function name for building everything + $theme['build_function'] = 'categories_build'; + + $theme['install_callback'] = 'categories_install'; + if(!function_exists('categories_install')) { + function categories_install($settings) { + global $config; + + if(!isset($config['boards']) || !isset($config['categories'])) { + return Array(false, '<h2>Prerequisites not met!</h2>' . + 'This theme requires $config[\'boards\'] and $config[\'categories\'] to be set.'); + } + } + } +?> diff --git a/templates/themes/categories-uboachan/theme.php b/templates/themes/categories-uboachan/theme.php new file mode 100644 index 00000000..296e0d06 --- /dev/null +++ b/templates/themes/categories-uboachan/theme.php @@ -0,0 +1,223 @@ +<?php + require 'info.php'; + + function categories_build($action, $settings) { + // Possible values for $action: + // - all (rebuild everything, initialization) + // - news (news has been updated) + // - boards (board list changed) + + Categories::build($action, $settings); + } + + // Wrap functions in a class so they don't interfere with normal Tinyboard operations + class Categories { + public static function build($action, $settings) { + global $config; + + if($action == 'all') + file_write($config['dir']['home'] . $config['file_index'], Categories::homepage($settings)); + + if($action == 'all' || $action == 'boards') + file_write($config['dir']['home'] . 'sidebar.html', Categories::sidebar($settings)); + + if($action == 'all' || $action == 'news' || $action == 'post') + file_write($config['dir']['home'] . 'news.html', Categories::news($settings)); + } + + // Build homepage + public static function homepage($settings) { + global $config; + + // HTML5 + return '<!DOCTYPE html><html>' + . '<head>' + . '<meta charset="utf-8">' + . '<link rel="stylesheet" media="screen" href="' . $config['url_stylesheet'] . '"/>' + . '<style type="text/css">' + . 'iframe{border:none;margin:0;padding:0;height:100%;position:absolute}' + . 'iframe#sidebar{left:0;top:0;width:15%}' + . 'iframe#main{left:15%;top:0;width:85%}' + . '</style>' + . '<title>' . $settings['title'] . '</title>' + . '<script type="text/javascript">' + . 'function removeFrames() {' + . 'window.location = document.getElementById("main").contentWindow.location.href;' + . '}' + . 'function globalChangeStyle(x)' + . '{' + . 'document.getElementById("main").contentWindow.changeStyle(x);' + . 'document.getElementById("sidebar").contentWindow.changeStyle(x);' + . '}' + . 'function goNews() {' + . 'window.location = \'/\';' + . '}' + . 'window.f = true;' + . '</script>' + . '<meta name="description" content="A fansite and imageboard revolving around the cult classic PC game Yume Nikki." />' + . '<meta name="keywords" content="yume nikki, imageboard, boards, forums, uboa, madotsuki, poniko, seccom masada, monoko, monoe, images, discussion, video games" />' + . '</head><body>' + // Sidebar + . '<iframe src="sidebar.html" id="sidebar" name="sidebar"></iframe>' + // Main + . '<iframe src="news.html" id="main" name="main"></iframe>' + // Finish page + . '</body></html>'; + } + + // Build news page + public static function news($settings) { + global $config, $board; + + // HTML5 + $body = '<!DOCTYPE html><html>' + . '<head>' + . '<meta charset="utf-8">' + . '<link rel="stylesheet" href="frontpage.css" />' + . '<link rel="stylesheet" media="screen" id="stylesheet" href="/stylesheets/style.css">' + . '<script type="text/javascript" src="/styleswitch-sidebar.js"></script>' + . '<title>' . $settings['title'] . ' - News</title>' + . '</head><body>'; + + $boardlist = createBoardlist(); + + $body .= $boardlist['top'] + . '<br />'; + + $boards = listBoards(); + + $body .= '<div id="maintable"><div id="logo"></div><div id="announcement">Don\'t touch the lights!</div><table style="margin-bottom: 4px; width: 100%;"><tr>'; + // Recent Posts + + $body .= '<td style="width: 100%;"><div class="post_wrap"><div class="post_header"><b>Recent Posts</b></div><div class="post_body"><div class="post_content" style="padding-bottom: 10px;">'; + + $query = ''; + foreach($boards as &$_board) { + // Block Board + if ($_board['uri'] != "aurora") { + $query .= sprintf("SELECT *, '%s' AS `board` FROM `posts_%s` UNION ALL ", $_board['uri'], $_board['uri']); + } + } + $query = preg_replace('/UNION ALL $/', 'ORDER BY `time` DESC LIMIT 15', $query); + $query = query($query) or error(db_error()); + + while($post = $query->fetch()) { + openBoard($post['board']); + + $body .= '<strong>' . $board['name'] . '</strong>: <a href="' . + $config['root'] . $board['dir'] . $config['dir']['res'] . ($post['thread']?$post['thread']:$post['id']) . '.html#' . $post['id'] . + '">'; + $snip = pm_snippet($post['body'], 95); + if($snip === "<em></em>") + { + $body .= '<empty>'; + } + else + { + $body .= $snip; + } + $body .= '</a><br />'; + } + + // News + + $body .= '</div></div></div></td></tr></table>'; + + $query = query("SELECT * FROM `news` ORDER BY `time` DESC LIMIT 5") or error(db_error()); + if($query->rowCount() == 0) { + $body .= '<p style="text-align:center" class="unimportant">(No news to show.)</p>'; + } else { + // List news + while($news = $query->fetch()) { + $body .= '<div class="post_wrap"><div class="post_header">' . + // Newer than 5 days? + (time() - $news['time'] <= 432000 ? + '<em><b><span style="color: #D03030;">*NEW*</span></b></em> ' + : + '' + ) . + ($news['subject'] ? + $news['subject'] + : + '<em>no subject</em>' + ) . + ' — by ' . + $news['name'] . + ' at ' . + strftime($config['post_date'], $news['time']) . + '</div><div class="post_body"><div class="post_content">' . + $news['body'] . + '</div></div></div>'; + } + } + + // Finish page + $body .= '<br />'; + $body .= '</div></body></html>'; + + return $body; + } + + // Build sidebar + public static function sidebar($settings) { + global $config, $board; + + $body = '<!DOCTYPE html><html>' + . '<head>' + . '<meta charset="utf-8">' + . '<link rel="stylesheet" media="screen" href="' . $config['url_stylesheet'] . '"/>' + . '<style type="text/css">' + . 'fieldset{margin:10px 0}' + . 'legend{width:100%;margin-left:-15px;border:1px solid white;color:white;font-weight:bold;padding:5px 5px}' + . 'ul{margin:0;padding:0}' + . 'li{list-style:none;padding:0 4px;margin: 0 4px}' + . 'li a.system{font-weight:bold}' + . '</style>' + . '<link rel="stylesheet" type="text/css" id="stylesheet" href="/stylesheets/uboachan.css">' + . '<script type="text/javascript" src="/styleswitch-sidebar.js"></script>' + . '<base target="main" />' + . '<title>' . $settings['title'] . '</title>' + . '</head><body>'; + + $body .= '<fieldset><legend class="category">' . $settings['title'] . '</legend><ul>' . + '<li><a class="system" href="news.html">[News]</a></li>' . + '<li><a class="system" href="rules.php">[Rules]</a></li>' . + '<li><a class="system" href="faq.php">[FAQ]</a></li>' . + '<li><a class="system" href="search.php">[Search]</a></li>' . + '<li><a class="system" href="http://archive.uboachan.net/">[Archive]</a></li>' . + '<li><a class="system" href="http://archive.uboachan.net/media/src/Yume_Nikki.rar">[Download v0.10]</a></li>' . + '<li><a class="system" href="javascript:parent.removeFrames()">[Remove Frames]</a></li>' . + '<li><a href="javascript:changeStyleForAll(\'YB\');">[YB]</a> <a href="javascript:changeStyleForAll(\'Y\');">[Y]</a> <a href="javascript:changeStyleForAll(\'U\');">[U]</a> <a href="javascript:changeStyleForAll(\'UG\');">[UG]</a> <a href="javascript:changeStyleForAll(\'RZ\');">[RZ]</a></li>'. + '</ul></fieldset>'; + + for($cat = 0; $cat < count($config['categories']); $cat++) { + $body .= '<fieldset><legend class="category">' . $config['categories'][$cat] . '</legend><ul>'; + + foreach($config['boards'][$cat] as &$board) { + $body .= '<li><a href="' . + sprintf($config['board_path'], $board) . + '">' . boardTitle($board) . '</a></li>'; + } + + $body .= '</ul></fieldset>'; + } + + foreach($config['custom_categories'] as $name => &$group) { + $body .= '<fieldset><legend class="category">' . $name . '</legend><ul>'; + + foreach($group as $title => &$url) { + $body .= '<li><a href="' . $url . + '">' . $title . '</a></li>'; + } + + $body .= '</ul></fieldset>'; + } + + // Finish page + $body .= '</body></html>'; + + return $body; + } + }; + +?> diff --git a/templates/themes/categories-uboachan/thumb.png b/templates/themes/categories-uboachan/thumb.png Binary files differnew file mode 100644 index 00000000..35d747e2 --- /dev/null +++ b/templates/themes/categories-uboachan/thumb.png diff --git a/templates/themes/recent/recent.css b/templates/themes/recent/recent.css index 7b9f2333..1ec5dc50 100644 --- a/templates/themes/recent/recent.css +++ b/templates/themes/recent/recent.css @@ -1,15 +1,35 @@ +/** + * dark.css + * Stolen from circlepuller who stole it from derpcat + */ +body +{ + background: #0b000f; + color: #7fdd57; + font-family: sans-serif; + font-size: 12px; +} + +@font-face { + font-family: 'FontAwesome'; + src: url('../fonts/fontawesome-webfont.eot?v=4.4.0'); + src: url('../fonts/fontawesome-webfont.eot?#iefix&v=4.4.0') format('embedded-opentype'), url('../fonts/fontawesome-webfont.woff2?v=4.4.0') format('woff2'), url('../fonts/fontawesome-webfont.woff?v=4.4.0') format('woff'), url('../fonts/fontawesome-webfont.ttf?v=4.4.0') format('truetype'), url('../fonts/fontawesome-webfont.svg?v=4.4.0#fontawesomeregular') format('svg'); + font-weight: normal; + font-style: normal +} + .box-wrap { max-width: 670px; - min-width: 332px; + min-width: 400px; margin: 30px auto; overflow: auto; padding: 0; } .box { - background: white; - border: 1px solid #98E; + background: #0b000f; + border: 0px solid #98E; width: 330px; - margin: 8px 0; + margin: 0px 0; padding: 0; } .box ul { @@ -20,16 +40,18 @@ margin: 0; } .box.left { - background: #efe; - color: #060; - border: 1px solid #060; + background: #0b000f; + color: #7fdd57; + border: 0px solid #060; float: left; + width: 300px; } .box.right { - background: #eef; - color: #006; - border: 1px solid #006; + background: #0b000f; + color: #7fdd57; + border: 0px solid #006; float: right; + width: 436px; } .box h2 { @@ -37,14 +59,114 @@ font-size: 12pt; } .box.left h2 { - background: #9C6; - color: #060; + background: #7fdd57; + color: #677965; } .box.right h2 { - background: #59A; - color: white; + background: #7fdd57; + color: #0b000f; } .box img { float: none; - margin: 10px auto; -}
\ No newline at end of file + margin: 0px auto; +} + +span.quote +{ + color:#677965; +} +@font-face +{ + font-family: 'lain'; + src: url('./fonts/nrdyyh.woff') format('woff'), + url('./fonts/tojcxo.TTF') format('truetype'); +} +h1 +{ + font-family: 'arial black', arial; + letter-spacing: -20px; + font-size: 116pt; + text-align: center; + color: #7fdd57; +} +header div.subtitle +{ + color: #677965; +} +div.title +{ + color: #677965; + font-family: Arial, Helvetica, sans-serif; +} +div.title p +{ + font-size: 10px; +} +a:link, a:visited, .intro a.email span.name { + color: #677965; + text-decoration: none; + font-family: sans-serif; + font-size: 11pt; +} + +div.post.reply div.body a:link:hover, div.post.reply div.body a:visited:hover +{ + color: #7fdd57; +} +p.intro span.subject { + font-size: 12px; + font-family: sans-serif; + color: #7fdd57; + font-weight: 800; +} +p.intro span.name { + color: #7fdd57; + font-weight: 800; +} + +p.intro a.email, p.intro a.email span.name, p.intro a.email:hover, p.intro a.email:hover span.name { + color: #7fdd57; +} +.bar +{ + background: #0b000f!important; + -moz-box-shadow: 0 0 40px #000; + -webkit-box-shadow: 0 0 40px #000; + box-shadow: 0 0 40px #000; +} +.bar.top +{ + border-bottom: 0px solid #0b000f; +} +.bar.bottom +{ + border-top: 1px solid #666; +} + +div.boardlist +{ + color: #0b000f; +} + +div.ban +{ + background-color: rgba(11, 0, 15, 0); + border: 0px solid #555; + -moz-border-radius: 2px; + -webkit-border-radius: 2px; + border-radius: 2px; + text-align: left!important; +} +div.ban h2 +{ + background: #0b000f; + color: #7fdd57; + padding: 5px 5px; + font-size: 16pt; + border-bottom: 0px solid #555; +} + +div.ban h2:not(:nth-child(1)) +{ + border-top: 0px solid #0b000f; +} diff --git a/templates/themes/recent/recent.html b/templates/themes/recent/recent.html index e1743ad8..290c3a23 100644 --- a/templates/themes/recent/recent.html +++ b/templates/themes/recent/recent.html @@ -5,22 +5,32 @@ <meta http-equiv="Content-type" content="text/html; charset=utf-8" /> <title>{{ settings.title }}</title> <link rel="stylesheet" media="screen" href="{{ config.root}}stylesheets/style.css"/> - <link rel="stylesheet" media="screen" href="{{ config.root}}stylesheets/dark.css"/> - <link rel="stylesheet" media="screen" href="{{ config.root}}stylesheets/dicksinmyass.css"/> + <link rel="stylesheet" media="screen" href="{{ config.root}}stylesheets/recent.css"/> + <link rel="stylesheet" media="screen" href="https://lainchan.org/stylesheets/font-awesome/css/font-awesome.min.css"/> + {% if config.url_favicon %}<link rel="shortcut icon" href="{{ config.url_favicon }}" />{% endif %} </head> <body> <div class="bar top"> {{ boardlist.top }} </div> - <img class="board_image" src="{{ config.url_banner }}"style="{% if config.banner_width %}width:{{ config.banner_width }}px{% endif %};height:{{ config.banner_height }}px;" alt="" /> - <header> -<h1>{{ settings.title }}</h1> - <div class="subtitle">PRESENT DAY. PRESENT TIME. HAHAHAHAHA</div> - </header> - - <div class="box-wrap"> + <header> + <center> + <img alt="header" src="static/lainchan_header_console.gif"/> + </center> + </header> +<br> + + <img alt="mascot" src="static/lain_banner1.png"/> + + <br> + + <div class="ban" id="global"> <h2>CYBERPUNK IS DEAD</h2> Pour out the Soykaf, lurk, and read the <a href="https://lainchan.org/rules">rules</a> before posting! </div> + + <br> + + <div class="ban" id="global"> <div class="box left"> <h2>Recent Images</h2> <ul> @@ -55,13 +65,12 @@ </ul> </div> </div> - - <hr/> + <footer> - <p class="unimportant" style="margin-top:20px;text-align:center;">- <a href="http://tinyboard.org/">Tinyboard</a> + - <a href='https://int.vichan.net/devel/'>vichan</a> {{ config.version }} - - <br><a href="http://tinyboard.org/">Tinyboard</a> Copyright © 2010-2014 Tinyboard Development Group - <br><a href="https://engine.vichan.net/">vichan</a> Copyright © 2012-2015 vichan-devel</p> + <center> + <a href="admin@lainchan.org?Subject=Hello" target="_top">admin@lainchan.org</a> + </center> + </footer> </body> </html> |
