summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsinuca <55vitaminado@gmail.com>2014-03-18 00:39:13 -0300
committerczaks <marcin@6irc.net>2014-03-25 11:47:46 +0100
commit1e78987ef638cc899be7993d3a7938e51b16ad6d (patch)
treebd4526386319b5fb76f907d01bcf95cc6270d5d0
parentb0c837ce9369b932cecff91966dacdaef4a96952 (diff)
Added ukko and favelaframes themes
-rw-r--r--templates/themes/favelaframes/favelaframes.css84
-rw-r--r--templates/themes/favelaframes/frames.html102
-rw-r--r--templates/themes/favelaframes/info.php87
-rw-r--r--templates/themes/favelaframes/news.html40
-rw-r--r--templates/themes/favelaframes/sidebar.html38
-rw-r--r--templates/themes/favelaframes/theme.php74
-rw-r--r--templates/themes/favelaframes/thumb.pngbin0 -> 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"> &mdash; 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 &copy; 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
new file mode 100644
index 00000000..df18a8e9
--- /dev/null
+++ b/templates/themes/favelaframes/thumb.png
Binary files differ