From d3fb010a8fd2862ed6619b9cbdefb22aa9bace9c Mon Sep 17 00:00:00 2001 From: "Michael D. Reiley" Date: Tue, 20 Sep 2011 12:49:07 -0700 Subject: [PATCH 1/4] New "Categories" theme, modifications for support. --- inc/config.php | 11 ++ inc/functions.php | 10 ++ templates/themes/categories/info.php | 30 ++++++ templates/themes/categories/theme.php | 144 ++++++++++++++++++++++++++ templates/themes/categories/thumb.png | Bin 0 -> 8442 bytes 5 files changed, 195 insertions(+) create mode 100644 templates/themes/categories/info.php create mode 100644 templates/themes/categories/theme.php create mode 100644 templates/themes/categories/thumb.png diff --git a/inc/config.php b/inc/config.php index 0a8b982d..1b36f210 100644 --- a/inc/config.php +++ b/inc/config.php @@ -710,6 +710,17 @@ // 'status' => 'http://status.example.org/' //); + // Categories + // Required for the Categories theme. Array of the names of board groups in order, from $config['boards']. + //$config['categories'] = Array('groupname', 'name', 'anothername', 'kangaroos'); + + // Custom_categories + // Optional for the Categories theme. Array of name => (title, url) groups for categories with non-board links. + //$config['custom_categories'] = Array( 'Links' => + // Array('Tinyboard' => 'http://tinyboard.org', + // 'AnotherName' => 'url') + //); + // Set custom locations for stylesheets, scripts and maybe a banner. // This can be good for load balancing across multiple servers or hostnames. // $config['url_stylesheet'] = 'http://static.example.org/style.css'; // main/base stylesheet diff --git a/inc/functions.php b/inc/functions.php index a5c8a518..7ba2278b 100644 --- a/inc/functions.php +++ b/inc/functions.php @@ -228,6 +228,16 @@ } else return false; } + function boardTitle($uri) { + $query = prepare("SELECT `title` FROM `boards` WHERE `uri` = :uri LIMIT 1"); + $query->bindValue(':uri', $uri); + $query->execute() or error(db_error($query)); + + if($title = $query->fetch()) { + return $title['title']; + } else return false; + } + function purge($uri) { global $config, $debug; if(preg_match($config['url_match'], $config['root'])) { diff --git a/templates/themes/categories/info.php b/templates/themes/categories/info.php new file mode 100644 index 00000000..d0cedb13 --- /dev/null +++ b/templates/themes/categories/info.php @@ -0,0 +1,30 @@ + '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'; +?> diff --git a/templates/themes/categories/theme.php b/templates/themes/categories/theme.php new file mode 100644 index 00000000..c126f8da --- /dev/null +++ b/templates/themes/categories/theme.php @@ -0,0 +1,144 @@ +' + . '' + . '' + . '' + . '' . $settings['title'] . '' + . '' + // Sidebar + . '' + // Main + . '' + // Finish page + . ''; + } + + // Build news page + public static function news($settings) { + global $config; + + // HTML5 + $body = '' + . '' + . '' + . 'News' + . ''; + + $body .= '

' . $settings['title'] . '

' + . '
' . ($settings['subtitle'] ? utf8tohtml($settings['subtitle']) : '') . '
'; + + $query = query("SELECT * FROM `news` ORDER BY `time` DESC") or error(db_error()); + if($query->rowCount() == 0) { + $body .= '

(No news to show.)

'; + } else { + // List news + while($news = $query->fetch()) { + $body .= '
' . + '

' . + ($news['subject'] ? + $news['subject'] + : + 'no subject' + ) . + ' — by ' . + $news['name'] . + ' at ' . + date($config['post_date'], $news['time']) . + '

' . $news['body'] . '

'; + } + } + + // Finish page + $body .= ''; + + return $body; + } + + // Build sidebar + public static function sidebar($settings) { + global $config, $board; + + $body = '' + . '' + . '' + . '' + . '' + . '' . $settings['title'] . '' + . ''; + + $body .= '
' . $settings['title'] . '
'; + + for($cat = 0; $cat < count($config['categories']); $cat++) { + $body .= '
' . $config['categories'][$cat] . '
'; + } + + foreach($config['custom_categories'] as $name => &$group) { + $body .= '
' . $name . '
'; + } + + // Finish page + $body .= ''; + + return $body; + } + }; + +?> diff --git a/templates/themes/categories/thumb.png b/templates/themes/categories/thumb.png new file mode 100644 index 0000000000000000000000000000000000000000..4326ee35b6487df7a7b4da57bfc1c01b6620eec8 GIT binary patch literal 8442 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 u0MoVWVJ}PUe$2~r;+S Date: Thu, 22 Sep 2011 00:10:06 -0700 Subject: [PATCH 2/4] Small fix for unicode oops in two themes. --- templates/themes/categories/theme.php | 2 +- templates/themes/frameset/theme.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/templates/themes/categories/theme.php b/templates/themes/categories/theme.php index c126f8da..f625fe79 100644 --- a/templates/themes/categories/theme.php +++ b/templates/themes/categories/theme.php @@ -75,7 +75,7 @@ : 'no subject' ) . - ' — by ' . + ' — by ' . $news['name'] . ' at ' . date($config['post_date'], $news['time']) . diff --git a/templates/themes/frameset/theme.php b/templates/themes/frameset/theme.php index 3724e02e..d626103a 100644 --- a/templates/themes/frameset/theme.php +++ b/templates/themes/frameset/theme.php @@ -75,7 +75,7 @@ : 'no subject' ) . - ' — by ' . + ' — by ' . $news['name'] . ' at ' . date($config['post_date'], $news['time']) . From c210cdbfea79834873a78f114f5c33e161cfe140 Mon Sep 17 00:00:00 2001 From: "Michael D. Reiley" Date: Thu, 22 Sep 2011 14:47:19 -0700 Subject: [PATCH 3/4] Categories theme v0.2 --- templates/themes/categories/info.php | 4 ++-- templates/themes/categories/theme.php | 12 +++++++++++- templates/themes/categories/thumb.png | Bin 8442 -> 9965 bytes 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/templates/themes/categories/info.php b/templates/themes/categories/info.php index d0cedb13..3718344c 100644 --- a/templates/themes/categories/info.php +++ b/templates/themes/categories/info.php @@ -5,10 +5,10 @@ $theme['name'] = 'Categories'; // Description (you can use Tinyboard markup here) $theme['description'] = -'Group-ordered, category-aware modification of the Frameset theme. +'Group-ordered, category-aware modification of the Frameset theme, with removable sidebar frame. Requires $config[\'boards\'] and $config[\'categories\'].'; - $theme['version'] = 'v0.1'; + $theme['version'] = 'v0.2'; // Theme configuration $theme['config'] = Array(); diff --git a/templates/themes/categories/theme.php b/templates/themes/categories/theme.php index f625fe79..393ad5bd 100644 --- a/templates/themes/categories/theme.php +++ b/templates/themes/categories/theme.php @@ -59,7 +59,11 @@ . 'News' . ''; - $body .= '

' . $settings['title'] . '

' + $boardlist = createBoardlist(); + + $body .= $boardlist['top'] + + . '

' . $settings['title'] . '

' . '
' . ($settings['subtitle'] ? utf8tohtml($settings['subtitle']) : '') . '
'; $query = query("SELECT * FROM `news` ORDER BY `time` DESC") or error(db_error()); @@ -105,10 +109,16 @@ . '' . '' . '' . $settings['title'] . '' + . '' . ''; $body .= '
' . $settings['title'] . '
'; for($cat = 0; $cat < count($config['categories']); $cat++) { diff --git a/templates/themes/categories/thumb.png b/templates/themes/categories/thumb.png index 4326ee35b6487df7a7b4da57bfc1c01b6620eec8..35d747e2a138d7e0bf999ef0de942c94586be2b2 100644 GIT binary patch delta 9908 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 delta 8373 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 From a59b915b0a94fe621503deeeca5eef17c5fababc Mon Sep 17 00:00:00 2001 From: "Michael D. Reiley" Date: Thu, 22 Sep 2011 15:07:25 -0700 Subject: [PATCH 4/4] Categories theme v0.2.1 (Frame removal works correctly.) --- templates/themes/categories/info.php | 2 +- templates/themes/categories/theme.php | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/templates/themes/categories/info.php b/templates/themes/categories/info.php index 3718344c..0090f39d 100644 --- a/templates/themes/categories/info.php +++ b/templates/themes/categories/info.php @@ -8,7 +8,7 @@ 'Group-ordered, category-aware modification of the Frameset theme, with removable sidebar frame. Requires $config[\'boards\'] and $config[\'categories\'].'; - $theme['version'] = 'v0.2'; + $theme['version'] = 'v0.2.1'; // Theme configuration $theme['config'] = Array(); diff --git a/templates/themes/categories/theme.php b/templates/themes/categories/theme.php index 393ad5bd..de1b4a5b 100644 --- a/templates/themes/categories/theme.php +++ b/templates/themes/categories/theme.php @@ -39,6 +39,11 @@ . 'iframe#main{border-left:1px solid black;left:15%;top:0;width:85%}' . '' . '' . $settings['title'] . '' + . '' . '' // Sidebar . '' @@ -109,16 +114,11 @@ . '' . '' . '' . $settings['title'] . '' - . '' . ''; $body .= '
' . $settings['title'] . '
'; for($cat = 0; $cat < count($config['categories']); $cat++) {