[geeklog-cvs] geeklog: Denim: implemented a minimal theme API

geeklog-cvs at lists.geeklog.net geeklog-cvs at lists.geeklog.net
Mon Apr 23 19:08:21 EDT 2012


changeset 8613:a35f0865cec2
url:  http://project.geeklog.net/cgi-bin/hgwebdir.cgi/geeklog/rev/a35f0865cec2
user: dengen
date: Tue Apr 24 01:07:11 2012 +0900
description:
Denim: implemented a minimal theme API

diffstat:

 public_html/layout/denim/functions.php |  132 +++++++++++++++++++++++++-------
 1 files changed, 103 insertions(+), 29 deletions(-)

diffs (157 lines):

diff -r afe822b520b0 -r a35f0865cec2 public_html/layout/denim/functions.php
--- a/public_html/layout/denim/functions.php	Mon Apr 23 01:28:46 2012 +0900
+++ b/public_html/layout/denim/functions.php	Tue Apr 24 01:07:11 2012 +0900
@@ -1,5 +1,39 @@
 <?php
 
+/* Reminder: always indent with 4 spaces (no tabs). */
+// +---------------------------------------------------------------------------+
+// | Geeklog 2.0                                                               |
+// +---------------------------------------------------------------------------+
+// | functions.php                                                             |
+// |                                                                           |
+// | Functions implementing the theme API                                      |
+// +---------------------------------------------------------------------------+
+// | Copyright (C) 2000-2012 by the following authors:                         |
+// |                                                                           |
+// | Authors: Tony Bibbs        - tony AT tonybibbs DOT com                    |
+// |          Mark Limburg      - mlimburg AT users DOT sourceforge DOT net    |
+// |          Jason Whittenburg - jwhitten AT securitygeeks DOT com            |
+// |          Dirk Haun         - dirk AT haun-online DOT de                   |
+// |          Vincent Furia     - vinny01 AT users DOT sourceforge DOT net     |
+// |          Rouslan Placella  - rouslan AT placella DOT com                  |
+// +---------------------------------------------------------------------------+
+// |                                                                           |
+// | This program is free software; you can redistribute it and/or             |
+// | modify it under the terms of the GNU General Public License               |
+// | as published by the Free Software Foundation; either version 2            |
+// | of the License, or (at your option) any later version.                    |
+// |                                                                           |
+// | This program is distributed in the hope that it will be useful,           |
+// | but WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the             |
+// | GNU General Public License for more details.                              |
+// |                                                                           |
+// | You should have received a copy of the GNU General Public License         |
+// | along with this program; if not, write to the Free Software Foundation,   |
+// | Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.           |
+// |                                                                           |
+// +---------------------------------------------------------------------------+
+
 // this file can't be used on its own
 if (strpos(strtolower($_SERVER['PHP_SELF']), 'functions.php') !== false) {
     die('This file can not be used on its own!');
@@ -7,44 +41,84 @@
 
 $_CONF['support_theme_2.0'] = true; // support new theme format for the later Geeklog2.0
 
-$_IMAGE_TYPE = 'png';
-
 $_CONF['left_blocks_in_footer'] = 1;
 
-// Add Theme CSS File to scripts class
-$cssfile = ($LANG_DIRECTION == 'rtl') ? '/style_rtl.css' : '/style.css';
-$_SCRIPTS->setCSSFile('theme', '/layout/' . $_CONF['theme'] . $cssfile);
 
-// Load jQuery
-$_SCRIPTS->setJavaScriptLibrary('jquery');
+/**
+ * Return the configuration values for the theme
+ */
+function theme_config_denim()
+{
+    return array(
+        'image_type' => 'png',
+        'doctype'    => 'html401strict'
+    );
+}
 
-//$_SCRIPTS->setJavaScriptFile('theme.tabs', '/layout/' . $_CONF['theme'] . '/javascript/tabs.js');
-$_SCRIPTS->setJavaScriptFile('theme.tabs', '/layout/' . $_CONF['theme'] . '/javascript/app.js');
-$_SCRIPTS->setJavaScriptFile('theme.tinynav', '/layout/' . $_CONF['theme'] . '/javascript/tinynav.min.js');
-$_SCRIPTS->setJavaScriptFile('theme.script', '/layout/' . $_CONF['theme'] . '/javascript/script.js');
+/**
+ * Return an array of CSS files to be loaded
+ */
+function theme_css_denim()
+{
+    global $_CONF, $LANG_DIRECTION;
 
-/*
- * For left/right block support there is no longer any need for the theme to
- * put code into functions.php to set specific templates for the left/right
- * versions of blocks. Instead, Geeklog will automagically look for
- * blocktemplate-left.thtml and blocktemplate-right.thtml if given
- * blocktemplate.thtml from $_BLOCK_TEMPLATE. So, if you want different left
- * and right templates from admin_block, just create blockheader-list-left.thtml
- * etc.
+    $cssfile = ($LANG_DIRECTION == 'rtl') ? '/style_rtl.css' : '/style.css';
+    return array('/layout/' . $_CONF['theme'] . $cssfile);
+}
+
+/**
+ * Return an array of JS libraries to be loaded
  */
+function theme_js_libs_denim()
+{
+    return array('jquery');
+}
 
-$_BLOCK_TEMPLATE['_msg_block'] = 'blockheader-message.thtml,blockfooter-message.thtml';
-$_BLOCK_TEMPLATE['configmanager_block'] = 'blockheader-config.thtml,blockfooter-config.thtml';
-$_BLOCK_TEMPLATE['configmanager_subblock'] = 'blockheader-config.thtml,blockfooter-config.thtml';
-$_BLOCK_TEMPLATE['whats_related_block'] = 'blockheader-related.thtml,blockfooter-related.thtml';
-$_BLOCK_TEMPLATE['story_options_block'] = 'blockheader-related.thtml,blockfooter-related.thtml';
+/**
+ * Return an array of JS files to be loaded
+ */
+function theme_js_files_denim()
+{
+    global $_CONF;
 
-// Define the blocks that are a list of links styled as an unordered list - using class="blocklist"
-$_BLOCK_TEMPLATE['admin_block'] = 'blockheader-list.thtml,blockfooter-list.thtml';
-$_BLOCK_TEMPLATE['section_block'] = 'blockheader-list.thtml,blockfooter-list.thtml';
+    return array(
+        //'/layout/' . $_CONF['theme'] . '/javascript/tabs.js',
+        '/layout/' . $_CONF['theme'] . '/javascript/app.js',
+        '/layout/' . $_CONF['theme'] . '/javascript/tinynav.min.js',
+        '/layout/' . $_CONF['theme'] . '/javascript/script.js'
+    );
+}
 
-if (!COM_isAnonUser()) {
-    $_BLOCK_TEMPLATE['user_block'] = 'blockheader-list.thtml,blockfooter-list.thtml';
+/**
+ * Do any other initialisation here
+ */
+function theme_init_denim()
+{
+    global $_BLOCK_TEMPLATE;
+
+    /*
+     * For left/right block support there is no longer any need for the theme to
+     * put code into functions.php to set specific templates for the left/right
+     * versions of blocks. Instead, Geeklog will automagically look for
+     * blocktemplate-left.thtml and blocktemplate-right.thtml if given
+     * blocktemplate.thtml from $_BLOCK_TEMPLATE. So, if you want different left
+     * and right templates from admin_block, just create blockheader-list-left.thtml
+     * etc.
+     */
+
+    $_BLOCK_TEMPLATE['_msg_block'] = 'blockheader-message.thtml,blockfooter-message.thtml';
+    $_BLOCK_TEMPLATE['configmanager_block'] = 'blockheader-config.thtml,blockfooter-config.thtml';
+    $_BLOCK_TEMPLATE['configmanager_subblock'] = 'blockheader-config.thtml,blockfooter-config.thtml';
+    $_BLOCK_TEMPLATE['whats_related_block'] = 'blockheader-related.thtml,blockfooter-related.thtml';
+    $_BLOCK_TEMPLATE['story_options_block'] = 'blockheader-related.thtml,blockfooter-related.thtml';
+
+    // Define the blocks that are a list of links styled as an unordered list - using class="blocklist"
+    $_BLOCK_TEMPLATE['admin_block'] = 'blockheader-list.thtml,blockfooter-list.thtml';
+    $_BLOCK_TEMPLATE['section_block'] = 'blockheader-list.thtml,blockfooter-list.thtml';
+
+    if (!COM_isAnonUser()) {
+        $_BLOCK_TEMPLATE['user_block'] = 'blockheader-list.thtml,blockfooter-list.thtml';
+    }
 }
 
 ?>



More information about the geeklog-cvs mailing list