From d3fb010a8fd2862ed6619b9cbdefb22aa9bace9c Mon Sep 17 00:00:00 2001 From: "Michael D. Reiley" Date: Tue, 20 Sep 2011 12:49:07 -0700 Subject: [PATCH] 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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 literal 0 HcmV?d00001