diff options
| author | sinuca <55vitaminado@gmail.com> | 2014-03-18 00:39:13 -0300 |
|---|---|---|
| committer | czaks <marcin@6irc.net> | 2014-03-25 11:47:46 +0100 |
| commit | 1e78987ef638cc899be7993d3a7938e51b16ad6d (patch) | |
| tree | bd4526386319b5fb76f907d01bcf95cc6270d5d0 | |
| parent | b0c837ce9369b932cecff91966dacdaef4a96952 (diff) | |
Added ukko and favelaframes themes
| -rw-r--r-- | templates/themes/favelaframes/favelaframes.css | 84 | ||||
| -rw-r--r-- | templates/themes/favelaframes/frames.html | 102 | ||||
| -rw-r--r-- | templates/themes/favelaframes/info.php | 87 | ||||
| -rw-r--r-- | templates/themes/favelaframes/news.html | 40 | ||||
| -rw-r--r-- | templates/themes/favelaframes/sidebar.html | 38 | ||||
| -rw-r--r-- | templates/themes/favelaframes/theme.php | 74 | ||||
| -rw-r--r-- | templates/themes/favelaframes/thumb.png | bin | 0 -> 7571 bytes |
7 files changed, 425 insertions, 0 deletions
diff --git a/templates/themes/favelaframes/favelaframes.css b/templates/themes/favelaframes/favelaframes.css new file mode 100644 index 00000000..5f0f0db6 --- /dev/null +++ b/templates/themes/favelaframes/favelaframes.css @@ -0,0 +1,84 @@ +body {
+ font-family: sans-serif;
+ background: none repeat scroll 0 0 #EEFDFF;
+ font-size: 12px;
+ margin: 6px;
+ padding: 0;
+}
+
+h1.title {
+ font-family: Verdana, Tahoma, sans-serif;
+ font-size: 23px;
+ color: #333300;
+ margin-top: 1em;
+ background: none;
+ letter-spacing: normal;
+}
+
+header div.subtitle {
+ font-family: Verdana, Tahoma, sans-serif;
+ color: #333300;
+ font-weight: normal;
+ font-size: medium;
+ font-style: italic;
+}
+
+div.favelito {
+ text-align: center;
+}
+
+.favelito {
+ display: block;
+ height: auto;
+ max-width: 100%;
+ vertical-align: middle;
+}
+
+div.news-content {
+ margin-left: 1em;
+ text-align: justify;
+}
+
+h2 {
+ color: #000;
+ background: #D6F0E4;
+}
+
+div.sidebar h2 {
+ font-family: Verdana, Tahoma, sans-serif;
+ font-size: 18px;
+}
+
+div.sidebar h3 {
+ margin: 0;
+ background: #D6F0E4;
+ font-size: 100%
+}
+
+div.fav_irc h4 {
+ font-family: Verdana, Tahoma, sans-serif;
+ margin: 0;
+ font-size: 10px;
+ background: #D6F0E4;
+}
+
+div.fav_irc h4 a {
+ color: #FF7800;
+ text-decoration: none;
+ vertical-align: top;
+}
+
+ul.fav_nav {
+ margin-top: 0;
+ padding: 0;
+ list-style: none;
+}
+
+ul.fav_nav a {
+ text-decoration: none;
+ color: #555500;
+}
+
+.sidebar a:hover {
+ text-decoration: underline;
+}
\ No newline at end of file diff --git a/templates/themes/favelaframes/frames.html b/templates/themes/favelaframes/frames.html new file mode 100644 index 00000000..ccbd377e --- /dev/null +++ b/templates/themes/favelaframes/frames.html @@ -0,0 +1,102 @@ +<!doctype html> +<html> +<head> + <meta http-equiv="Content-type" content="text/html; charset=utf-8" /> + <!-- <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"> --> + <link rel="stylesheet" media="screen" href="{{ config.url_stylesheet }}"> + {% if settings.tryresponsive %} + <script type="text/javascript" src="{{ config.additional_javascript_url }}js/jquery.min.js"></script> + <script type="text/javascript"> + $().ready(function () { + $(".botao-55").click(function () { + $("iframe#sidebar").toggleClass("sidebar-vem"); + $("iframe#main").toggleClass("mainbar-pls"); + }); + }); + </script> + {% endif %} + <style type="text/css"> + iframe { + border: none; + margin: 0; + padding: 0; + height: 99%; + position: absolute + } + iframe#sidebar { + left: 0; + top: 0; + width: 15% + } + iframe#main { + left: 15%; + top: 0; + width: 85% + } + iframe.sidebar-vem { + left: 0!important; + } + iframe.mainbar-pls { + left: 15%!important; + } + .botao-55 { + position: fixed; + top: 5px; + right: 5px; + cursor: pointer; + background-color: #EEE; + opacity: 0.3; + display: none; + border-radius: 3px; + border-width: 1px; + border-style: solid; + border-color: #B7C5D9; + } + .botao-55:hover { + opacity: 1; + } + .span-55 { + font-family: Verdana, Tahoma, sans-serif; + font-size: 50px; + font-weight: bolder; + } + {% if settings.tryresponsive %} + @media screen and (max-width: 767px) { + .botao-55 { + display: block; + } + iframe#sidebar { + width: 45%; + left: -45%; + -webkit-transition: all 0.25s ease-out; + -moz-transition: all 0.25s ease-out; + -o-transition: all 0.25s ease-out; + transition: all 0.25s ease-out; + } + iframe#main { + left: 0; + width: 100%; + -webkit-transition: all 0.25s ease-out; + -moz-transition: all 0.25s ease-out; + -o-transition: all 0.25s ease-out; + transition: all 0.25s ease-out; + } + iframe.mainbar-pls { + left: 45%!important; + } + iframe.sidebar-vem { + left: 0!important; + } + } + {% endif %} + </style> + <title>{{ settings.title }}</title> +</head> +<body> + <iframe src="{{ settings.file_sidebar }}" id="sidebar" name="sidebar"></iframe> + <iframe src="{{ settings.file_news }}" id="main" name="main"></iframe> + <div class="botao-55"> + <span class="span-55">55</span> + </div> +</body> +</html> diff --git a/templates/themes/favelaframes/info.php b/templates/themes/favelaframes/info.php new file mode 100644 index 00000000..b82a2b6d --- /dev/null +++ b/templates/themes/favelaframes/info.php @@ -0,0 +1,87 @@ +<?php + $theme = Array(); + + // Theme name + $theme['name'] = 'Favelaframes'; + // Description (you can use Tinyboard markup here) + $theme['description'] = +'Use a basic frameset layout, with a list of boards and pages on a sidebar to the left of the page. + +Users never have to leave the homepage; they can do all their browsing from the one page.'; + $theme['version'] = 'v0.1'; + + // Theme configuration + $theme['config'] = Array(); + + $theme['config'][] = Array( + 'title' => 'Site title', + 'name' => 'title', + 'type' => 'text' + ); + + $theme['config'][] = Array( + 'title' => 'Slogan', + 'name' => 'subtitle', + 'type' => 'text', + 'comment' => '(optional)' + ); + + $theme['config'][] = Array( + 'title' => 'Main HTML file', + 'name' => 'file_main', + 'type' => 'text', + 'default' => $config['file_index'], + 'comment' => '(eg. "index.html")' + ); + + $theme['config'][] = Array( + 'title' => 'Sidebar file', + 'name' => 'file_sidebar', + 'type' => 'text', + 'default' => 'sidebar.html', + 'comment' => '(eg. "sidebar.html")' + ); + + $theme['config'][] = Array( + 'title' => 'News file', + 'name' => 'file_news', + 'type' => 'text', + 'default' => 'news.html', + 'comment' => '(eg. "news.html")' + ); + + $theme['config'][] = Array( + 'title' => 'IRC url', + 'name' => 'irc_url', + 'type' => 'text', + 'default' => 'http://qchat.rizon.net/?nick=Anao.&channels=55ch&uio=d4', + 'comment' => '(optional) Link to IRC channel' + ); + + $theme['config'][] = Array( + 'title' => 'IRC address', + 'name' => 'irc_address', + 'type' => 'text', + 'default' => '#55ch@rizon.net', + 'comment' => '(optional) IRC channel address to appear as a label to the url entered above' + ); + + $theme['config'][] = Array( + 'title' => 'CSS file', + 'name' => 'css', + 'type' => 'text', + 'default' => 'favelaframes.css', + 'comment' => '(eg. "favelaframes.css")' + ); + + $theme['config'][] = Array( + 'title' => 'Try the little responsive thingy thing', + 'name' => 'tryresponsive', + 'type' => 'checkbox', + 'default' => true, + 'comment' => 'With this checked, the menu frame will become collapsible when viewport width is under 767px.' + ); + + // Unique function name for building everything + $theme['build_function'] = 'favelaframes_build'; +?> diff --git a/templates/themes/favelaframes/news.html b/templates/themes/favelaframes/news.html new file mode 100644 index 00000000..2b32a78b --- /dev/null +++ b/templates/themes/favelaframes/news.html @@ -0,0 +1,40 @@ +{% filter remove_whitespace %} +<!doctype html> +<html> +<head> + <meta http-equiv="Content-type" content="text/html; charset=utf-8" /> + <title>{{ settings.title }}</title> + <link rel="stylesheet" media="screen" href="{{ config.url_stylesheet }}"/> + <link rel="stylesheet" media="screen" href="{{ config.uri_stylesheets }}{{ settings.css }}"> +</head> +<body> + <header> + <div class="favelito"> + <img src="{{ config.root }}static/favelito.png" alt="Favelito"> + </div> + <h1 class="title">{{ settings.title }}</h1> + <div class="subtitle">"{{ settings.subtitle }}"</div> + </header> + + <div class="news-content"> + {% if news|count == 0 %} + <p style="text-align:center" class="unimportant">(No news to show.)</p> + {% else %} + {% for entry in news %} + <h2 id="{{ entry.id }}"> + {% if entry.subject %} + {{ entry.subject }} + {% else %} + <em>no subject</em> + {% endif %} + <span class="unimportant"> — by {{ entry.name }} at {{ entry.time|date(config.post_date) }}</span> + </h2> + <p>{{ entry.body }}</p> + {% endfor %} + {% endif %} + </div> + + <p class="unimportant" style="margin-top:20px;text-align:center;">Powered by <a href="http://tinyboard.org/">Tinyboard</a> {{ config.version }} | <a href="http://tinyboard.org/">Tinyboard</a> Copyright © 2010-2012 Tinyboard Development Group</p> +</body> +</html> +{% endfilter %} diff --git a/templates/themes/favelaframes/sidebar.html b/templates/themes/favelaframes/sidebar.html new file mode 100644 index 00000000..5ee84d80 --- /dev/null +++ b/templates/themes/favelaframes/sidebar.html @@ -0,0 +1,38 @@ +{% filter remove_whitespace %} +<!doctype html> +<html> +<head> + <meta http-equiv="Content-type" content="text/html; charset=utf-8" /> + <title>{{ settings.title }}</title> + <link rel="stylesheet" media="screen" href="{{ config.url_stylesheet }}"/> + <link rel="stylesheet" media="screen" href="{{ config.uri_stylesheets }}{{ settings.css }}"> + + <base target="main"/> +</head> +<body> + <div class="sidebar"> + <h2>{{ settings.title }}</h2> + <div class="fav_irc"> + <h4> + <a href="{{ settings.irc_url }}" target="_blank">{{ settings.irc_address }}</a> + </h4> + </div> + + {% for category, boards in categories %} + <h3> + {{ category }} + </h3> + <div id="{{ category }}" class="fav_category_div"> + <ul class="fav_nav"> + {% for board in boards %} + <li> + <a href="{{ board.uri }}">/{{ board.uri }} - {{ board.title|e }}</a> + </li> + {% endfor %} + </ul> + </div> + {% endfor %} + </div> +</body> +</html> +{% endfilter %} diff --git a/templates/themes/favelaframes/theme.php b/templates/themes/favelaframes/theme.php new file mode 100644 index 00000000..d31a324e --- /dev/null +++ b/templates/themes/favelaframes/theme.php @@ -0,0 +1,74 @@ +<?php + require 'info.php'; + + function favelaframes_build($action, $settings, $board) { + // Possible values for $action: + // - all (rebuild everything, initialization) + // - news (news has been updated) + // - boards (board list changed) + + Favelaframes::build($action, $settings); + } + + // Wrap functions in a class so they don't interfere with normal Tinyboard operations + class Favelaframes { + public static function build($action, $settings) { + global $config; + + if ($action == 'all') { + copy('templates/themes/favelaframes/favelaframes.css', $config['dir']['home'] . 'stylesheets/' . $settings['css']); + file_write($config['dir']['home'] . $settings['file_main'], Favelaframes::homepage($settings)); + } + + if ($action == 'all' || $action == 'boards') + file_write($config['dir']['home'] . $settings['file_sidebar'], Favelaframes::sidebar($settings)); + + if ($action == 'all' || $action == 'news') + file_write($config['dir']['home'] . $settings['file_news'], Favelaframes::news($settings)); + } + + // Build homepage + public static function homepage($settings) { + global $config; + + return Element('themes/favelaframes/frames.html', Array('config' => $config, 'settings' => $settings)); + } + + // Build news page + public static function news($settings) { + global $config; + + $query = query("SELECT * FROM ``news`` ORDER BY `time` DESC") or error(db_error()); + $news = $query->fetchAll(PDO::FETCH_ASSOC); + + return Element('themes/favelaframes/news.html', Array( + 'settings' => $settings, + 'config' => $config, + 'news' => $news + )); + } + + // Build sidebar + public static function sidebar($settings) { + global $config, $board; + + $categories = $config['categories']; + + foreach ($categories as &$boards) { + foreach ($boards as &$board) { + $title = boardTitle($board); + if (!$title) + $title = $board; // board doesn't exist, but for some reason you want to display it anyway + $board = Array('title' => $title, 'uri' => sprintf($config['board_path'], $board)); + } + } + + return Element('themes/favelaframes/sidebar.html', Array( + 'settings' => $settings, + 'config' => $config, + 'categories' => $categories + )); + } + }; + +?> diff --git a/templates/themes/favelaframes/thumb.png b/templates/themes/favelaframes/thumb.png Binary files differnew file mode 100644 index 00000000..df18a8e9 --- /dev/null +++ b/templates/themes/favelaframes/thumb.png |
