MDL-26047 - added new theme called Nimble
authorptrkmkl <patrick@newschoollearning.com>
Tue, 18 Jan 2011 13:42:48 +0000 (08:42 -0500)
committerptrkmkl <patrick@newschoollearning.com>
Tue, 18 Jan 2011 13:42:48 +0000 (08:42 -0500)
theme/nimble/config.php [new file with mode: 0644]
theme/nimble/lang/en/theme_nimble.php [new file with mode: 0644]
theme/nimble/layout/frontpage.php [new file with mode: 0644]
theme/nimble/layout/general.php [new file with mode: 0644]
theme/nimble/lib.php [new file with mode: 0644]
theme/nimble/pix/screenshot.png [new file with mode: 0644]
theme/nimble/settings.php [new file with mode: 0644]
theme/nimble/style/colors.css [new file with mode: 0644]
theme/nimble/style/core.css [new file with mode: 0644]
theme/nimble/style/menu.css [new file with mode: 0644]
theme/nimble/style/pagelayout.css [new file with mode: 0644]

diff --git a/theme/nimble/config.php b/theme/nimble/config.php
new file mode 100644 (file)
index 0000000..a48466a
--- /dev/null
@@ -0,0 +1,268 @@
+<?php
+
+// This file is part of Moodle - http://moodle.org/
+//
+// Moodle 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 3 of the License, or
+// (at your option) any later version.
+//
+// Moodle 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 Moodle.  If not, see <http://www.gnu.org/licenses/>.
+
+/**
+ * Configuration for Moodle's fusion theme.
+ *
+ * DO NOT MODIFY THIS THEME!
+ * COPY IT FIRST, THEN RENAME THE COPY AND MODIFY IT INSTEAD.
+ *
+ * For full information about creating Moodle themes, see:
+ *  http://docs.moodle.org/en/Development:Themes_2.0
+ *
+ * @package   moodlecore
+ * @copyright 2010 Patrick Malley (http://newschoollearning.com/)
+ * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+
+$THEME->name = 'nimble';
+
+////////////////////////////////////////////////////
+// Name of the theme. Most likely the name of
+// the directory in which this file resides.
+////////////////////////////////////////////////////
+
+
+$THEME->parents = array(
+    'canvas',
+    'base',
+);
+
+/////////////////////////////////////////////////////
+// Which existing theme(s) in the /theme/ directory
+// do you want this theme to extend. A theme can
+// extend any number of themes. Rather than
+// creating an entirely new theme and copying all
+// of the CSS, you can simply create a new theme,
+// extend the theme you like and just add the
+// changes you want to your theme.
+////////////////////////////////////////////////////
+
+
+$THEME->sheets = array(
+    'core',
+    'pagelayout',
+    'colors',
+    'menu',    
+);
+
+////////////////////////////////////////////////////
+// Name of the stylesheet(s) you've including in
+// this theme's /styles/ directory.
+////////////////////////////////////////////////////
+
+$THEME->parents_exclude_sheets = array(
+    'base'=>array(
+        'pagelayout',
+    ),
+    'canvas'=>array(
+        'pagelayout',
+    ),
+);
+
+
+$THEME->enable_dock = true;
+
+////////////////////////////////////////////////////
+// Do you want to use the new navigation dock?
+////////////////////////////////////////////////////
+
+
+$THEME->editor_sheets = array('editor');
+
+////////////////////////////////////////////////////
+// An array of stylesheets to include within the
+// body of the editor.
+////////////////////////////////////////////////////
+
+$THEME->layouts = array(
+    'base' => array(
+        'file' => 'general.php',
+        'regions' => array(),
+    ),
+    'standard' => array(
+        'file' => 'general.php',
+        'regions' => array('side-post'),
+        'defaultregion' => 'side-post',
+    ),
+    'course' => array(
+        'file' => 'general.php',
+        'regions' => array('side-post'),
+        'defaultregion' => 'side-post'
+    ),
+    'coursecategory' => array(
+        'file' => 'general.php',
+        'regions' => array('side-post'),
+        'defaultregion' => 'side-post',
+    ),
+    'incourse' => array(
+        'file' => 'general.php',
+        'regions' => array('side-post'),
+        'defaultregion' => 'side-post',
+    ),
+    'frontpage' => array(
+        'file' => 'frontpage.php',
+        'regions' => array('side-post'),
+        'defaultregion' => 'side-post',
+    ),
+    'admin' => array(
+        'file' => 'general.php',
+        'regions' => array('side-post'),
+        'defaultregion' => 'side-post',
+    ),
+    'mydashboard' => array(
+        'file' => 'general.php',
+        'regions' => array('side-post'),
+        'defaultregion' => 'side-post',
+        'options' => array('langmenu'=>true),
+    ),
+    'mypublic' => array(
+        'file' => 'general.php',
+        'regions' => array('side-post'),
+        'defaultregion' => 'side-post',
+    ),
+    'login' => array(
+        'file' => 'general.php',
+        'regions' => array(),
+        'options' => array('langmenu'=>true),
+    ),
+    'popup' => array(
+        'file' => 'general.php',
+        'regions' => array(),
+        'options' => array('nofooter'=>true, 'noblocks'=>true, 'nonavbar'=>true),
+    ),
+    'frametop' => array(
+        'file' => 'general.php',
+        'regions' => array(),
+        'options' => array('nofooter'=>true),
+    ),
+    'maintenance' => array(
+        'file' => 'general.php',
+        'regions' => array(),
+        'options' => array('nofooter'=>true, 'nonavbar'=>true),
+    ),
+    'embedded' => array(
+        'theme' => 'canvas',
+        'file' => 'embedded.php',
+        'regions' => array(),
+        'options' => array('nofooter'=>true, 'nonavbar'=>true),
+    ),
+    // Should display the content and basic headers only.
+    'print' => array(
+        'file' => 'general.php',
+        'regions' => array(),
+        'options' => array('nofooter'=>true, 'nonavbar'=>false, 'noblocks'=>true),
+    ),
+    'report' => array(
+        'file' => 'general.php',
+        'regions' => array('side-post'),
+        'defaultregion' => 'side-post',
+    ),
+);
+
+///////////////////////////////////////////////////////////////
+// These are all of the possible layouts in Moodle. The
+// simplest way to do this is to keep the theme and file
+// variables the same for every layout. Including them
+// all in this way allows some flexibility down the road
+// if you want to add a different layout template to a
+// specific page.
+///////////////////////////////////////////////////////////////
+
+// $THEME->csspostprocess = 'fusion_process_css';
+
+////////////////////////////////////////////////////
+// Allows the user to provide the name of a function
+// that all CSS should be passed to before being
+// delivered.
+////////////////////////////////////////////////////
+
+// $THEME->filter_mediaplugin_colors
+
+////////////////////////////////////////////////////
+// Used to control the colours used in the small
+// media player for the filters
+////////////////////////////////////////////////////
+
+// $THEME->javascripts
+
+////////////////////////////////////////////////////
+// An array containing the names of JavaScript files
+// located in /javascript/ to include in the theme.
+// (gets included in the head)
+////////////////////////////////////////////////////
+
+// $THEME->javascripts_footer
+
+////////////////////////////////////////////////////
+// As above but will be included in the page footer.
+////////////////////////////////////////////////////
+
+$THEME->larrow    = '&lang;';
+
+////////////////////////////////////////////////////
+// Overrides the left arrow image used throughout
+// Moodle
+////////////////////////////////////////////////////
+
+$THEME->rarrow    = '&rang;';
+
+////////////////////////////////////////////////////
+// Overrides the right arrow image used throughout Moodle
+////////////////////////////////////////////////////
+
+// $THEME->layouts
+
+////////////////////////////////////////////////////
+// An array setting the layouts for the theme
+////////////////////////////////////////////////////
+
+// $THEME->parents_exclude_javascripts
+
+////////////////////////////////////////////////////
+// An array of JavaScript files NOT to inherit from
+// the themes parents
+////////////////////////////////////////////////////
+
+// $THEME->parents_exclude_sheets
+
+////////////////////////////////////////////////////
+// An array of stylesheets not to inherit from the
+// themes parents
+////////////////////////////////////////////////////
+
+// $THEME->plugins_exclude_sheets
+
+////////////////////////////////////////////////////
+// An array of plugin sheets to ignore and not
+// include.
+////////////////////////////////////////////////////
+
+// $THEME->renderfactory
+
+////////////////////////////////////////////////////
+// Sets a custom render factory to use with the
+// theme, used when working with custom renderers.
+////////////////////////////////////////////////////
+
+// $THEME->resource_mp3player_colors
+
+////////////////////////////////////////////////////
+// Controls the colours for the MP3 player
+////////////////////////////////////////////////////
+
+$THEME->csspostprocess = 'nimble_process_css';
\ No newline at end of file
diff --git a/theme/nimble/lang/en/theme_nimble.php b/theme/nimble/lang/en/theme_nimble.php
new file mode 100644 (file)
index 0000000..643a084
--- /dev/null
@@ -0,0 +1,75 @@
+<?php
+
+// This file is part of Moodle - http://moodle.org/
+//
+// Moodle 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 3 of the License, or
+// (at your option) any later version.
+//
+// Moodle 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 Moodle.  If not, see <http://www.gnu.org/licenses/>.
+
+/**
+ * Strings for component 'theme_nimble', language 'en', branch 'MOODLE_20_STABLE'
+ *
+ * @package   moodlecore
+ * @copyright 2010 Patrick Malley
+ * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+
+$string['pluginname'] = 'Nimble';
+$string['region-side-post'] = 'Right';
+$string['region-side-pre'] = 'Left';
+$string['choosereadme'] = '
+<div class="clearfix">
+       <div class="theme_screenshot">
+               
+               <h2>Nimble</h2>
+               <img src="nimble/pix/screenshot.png" />
+               
+               <h3>Theme Discussion Forum:</h3>
+               <p><a href="http://moodle.org/mod/forum/view.php?id=46">http://moodle.org/mod/forum/view.php?id=46</a></p>
+               
+               <h3>Theme Credits</h3>
+               <p><a href="http://docs.moodle.org/en/Theme_credits">http://docs.moodle.org/en/Theme_credits</a></p>
+               
+               <h3>Theme Documentation:</h3>
+               <p><a href="http://docs.moodle.org/en/Themes">http://docs.moodle.org/en/Themes</a></p><h3>Report a bug:</h3><p><a href="http://tracker.moodle.org">http://tracker.moodle.org</a></p>
+       </div>
+
+       <div class="theme_description">
+               
+               <h2>About</h2>
+               <p>Nimble is a two-column, fluid-width theme coded for Moodle 2.0. It makes use of custom menus that appear above the site title on every page. It also includes a basic settings page allowing you to change link color, add a tagline next the site name on the front page, and add text to the footer.</p>
+               
+               <h2>Parents</h2>
+               <p>This theme is built upon both Base and Canvas, two parent themes included in the Moodle core. If you wish to modify aspects of this theme beyond the settings offered, we advise creating a new  theme using this theme, Base and Canvas all as parents so updates to any of those themes in the core will find their way into your new theme.</p>
+               
+               <h2>Credits</h2>
+               <p>This design was created for Moodle by Patrick Malley (patrick@newschoollearning.com) with help from John Stabinger (john@newschoollearning.com).
+               <h2>License</h2>
+               <p>This, and all other themes included in the Moodle core, are licensed under the <a href="http://www.gnu.org/licenses/gpl.html">GNU General Public License</a>.
+       </div>
+</div>';
+
+$string['tagline'] = 'Tagline';
+$string['taglinedesc'] = 'Set a tagline to appear under the site name on the front page.';
+
+$string['footerline'] = 'footerline';
+$string['footerlinedesc'] = 'Add some text (copyright info, etc.) to the footer.';
+
+$string['backgroundcolor'] = 'Header Background';
+$string['backgroundcolordesc'] = 'Change the background color of the header.';
+
+$string['linkcolor'] = 'Link Color';
+$string['linkcolordesc'] = 'Set the color of links in the theme, use html hex code.';
+
+$string['linkhover'] = 'Menu Hover Color';
+$string['linkhoverdesc'] = 'Set the color of the menu on hover in the theme, use html hex code.';
+
diff --git a/theme/nimble/layout/frontpage.php b/theme/nimble/layout/frontpage.php
new file mode 100644 (file)
index 0000000..ca987b1
--- /dev/null
@@ -0,0 +1,146 @@
+<?php
+
+$hasheading = ($PAGE->heading);
+$hasnavbar = (empty($PAGE->layout_options['nonavbar']) && $PAGE->has_navbar());
+$hasfooter = (empty($PAGE->layout_options['nofooter']));
+$hassidepost = $PAGE->blocks->region_has_content('side-post', $OUTPUT);
+$showsidepost = ($hassidepost && !$PAGE->blocks->region_completely_docked('side-post', $OUTPUT));
+
+$custommenu = $OUTPUT->custom_menu();
+$hascustommenu = (empty($PAGE->layout_options['nocustommenu']) && !empty($custommenu));
+
+$bodyclasses = array();
+if ($showsidepost) {
+    $bodyclasses[] = 'side-post-only';
+} else if (!$showsidepost) {
+    $bodyclasses[] = 'content-only';
+}
+if ($hascustommenu) {
+    $bodyclasses[] = 'has_custom_menu';
+}
+
+
+if (!empty($PAGE->theme->settings->tagline)) {
+    $tagline = $PAGE->theme->settings->tagline;
+} else {
+    $tagline = "Another Moodle Theme";
+}
+
+if (!empty($PAGE->theme->settings->footerline)) {
+    $footnote = $PAGE->theme->settings->footerline;
+} else {
+    $footnote = '<!-- There was no custom footnote set -->';
+}
+
+echo $OUTPUT->doctype() ?>
+<html <?php echo $OUTPUT->htmlattributes() ?>>
+<head>
+    <title><?php echo $PAGE->title ?></title>
+    <link rel="shortcut icon" href="<?php echo $OUTPUT->pix_url('favicon', 'theme')?>" />
+    <meta name="description" content="<?php echo strip_tags(format_text($SITE->summary, FORMAT_HTML)) ?>" />
+    <?php echo $OUTPUT->standard_head_html() ?>
+</head>
+
+<body id="<?php echo $PAGE->bodyid ?>" class="<?php echo $PAGE->bodyclasses.' '.join(' ', $bodyclasses) ?>">
+<?php echo $OUTPUT->standard_top_of_body_html() ?>
+
+<div id="page">
+
+  <div id="page-wrap1">
+    <div id="page-wrap2">
+
+       <div id="wrapper" class="clearfix">
+
+<!-- START OF HEADER -->
+
+           <div id="page-header">
+                       <div id="page-header-wrapper" class="wrapper clearfix">
+
+                   <div id="headermenus" class="shrinkwrapper clearfix">
+
+                           <?php if ($hascustommenu) { ?>
+                                               <div id="custommenu"><?php echo $custommenu; ?></div>
+                                       <?php } else { ?>
+                                               <div id="custommenu" style="line-height:1em;">&nbsp;</div> <!-- temporary until I find a better fix -->
+                                       <?php } ?>
+
+                       <div class="headermenu">
+                                       <?php
+                                       echo $OUTPUT->login_info();
+                                   echo $PAGE->headingmenu;
+                                       echo $OUTPUT->lang_menu();
+                                   ?>
+                               </div>
+                               
+                       </div>
+
+               </div>
+           </div>
+        
+<!-- END OF HEADER -->
+
+<!-- START OF CONTENT -->
+
+               <div id="page-content-wrapper" class="shrinkwrapper clearfix">
+                   <div id="page-content">
+                   <div id="region-main-box">
+                           <div id="region-post-box">
+            
+                           <div id="region-main-wrap">
+                                   <div id="region-main">
+                                   <div class="region-content">
+                                                                       
+                                                                       <div id="region-header" class="clearfix">
+                                                                   <h1 class="headermain"><?php echo $PAGE->heading ?></h1>
+                                                                   <p class="tagline"><?php echo $tagline ?></p>
+                                                               </div>
+                                                           
+                                           <?php echo core_renderer::MAIN_CONTENT_TOKEN ?>
+                                      
+                                       </div>
+                               </div>
+                               </div>
+                
+                       <?php if ($hassidepost) { ?>
+                           <div id="region-post" class="block-region">
+                               <div id="region-post-wrap-1">
+                                       <div id="region-post-wrap-2">
+                                           <div class="region-content">
+                                                   <?php echo $OUTPUT->blocks_for_region('side-post') ?>
+                                               </div>
+                                               </div>
+                                       </div>
+                               </div>
+                           <?php } ?>
+                           
+                       </div>    
+                   </div>
+               </div>
+       </div>
+
+<!-- END OF CONTENT -->
+
+       </div> <!-- END #wrapper -->
+
+               </div>
+       </div>
+
+<!-- START OF FOOTER -->
+    <div id="page-footer" class="wrapper clearfix">
+    <?php echo $footnote ?>
+           <p class="helplink"><?php echo page_doc_link(get_string('moodledocslink')) ?></p>
+        <?php
+                   echo $OUTPUT->login_info();
+                       echo $OUTPUT->home_link();
+               echo $OUTPUT->standard_footer_html();
+           ?>
+       </div>
+
+<!-- END OF FOOTER -->
+               
+       
+</div> <!-- END #page -->
+
+<?php echo $OUTPUT->standard_end_of_body_html() ?>
+</body>
+</html>
\ No newline at end of file
diff --git a/theme/nimble/layout/general.php b/theme/nimble/layout/general.php
new file mode 100644 (file)
index 0000000..7cb973b
--- /dev/null
@@ -0,0 +1,160 @@
+<?php
+
+$hasheading = ($PAGE->heading);
+$hasnavbar = (empty($PAGE->layout_options['nonavbar']) && $PAGE->has_navbar());
+$hasfooter = (empty($PAGE->layout_options['nofooter']));
+$hassidepost = (empty($PAGE->layout_options['noblocks']) && $PAGE->blocks->region_has_content('side-post', $OUTPUT));
+
+$showsidepost = ($hassidepost && !$PAGE->blocks->region_completely_docked('side-post', $OUTPUT));
+
+$custommenu = $OUTPUT->custom_menu();
+$hascustommenu = (empty($PAGE->layout_options['nocustommenu']) && !empty($custommenu));
+
+$bodyclasses = array();
+  if ($showsidepost) {
+    $bodyclasses[] = 'side-post-only';
+} else if (!$showsidepost) {
+    $bodyclasses[] = 'content-only';
+}
+if ($hascustommenu) {
+    $bodyclasses[] = 'has_custom_menu';
+}
+
+if (!empty($PAGE->theme->settings->footertext)) {
+    $footnote = $PAGE->theme->settings->footertext;
+} else {
+    $footnote = '<!-- There was no custom footnote set -->';
+}
+
+
+echo $OUTPUT->doctype() ?>
+<html <?php echo $OUTPUT->htmlattributes() ?>>
+<head>
+    <title><?php echo $PAGE->title ?></title>
+    <link rel="shortcut icon" href="<?php echo $OUTPUT->pix_url('favicon', 'theme')?>" />
+    <?php echo $OUTPUT->standard_head_html() ?>
+</head>
+
+<body id="<?php echo $PAGE->bodyid ?>" class="<?php echo $PAGE->bodyclasses.' '.join(' ', $bodyclasses) ?>">
+<?php echo $OUTPUT->standard_top_of_body_html() ?>
+
+<div id="page">
+
+       <?php if ($hasheading || $hasnavbar) { ?>
+
+       <div id="page-wrap1">
+               <div id="page-wrap2">
+
+                       <div id="wrapper" class="clearfix">
+
+<!-- START OF HEADER -->
+
+                       <div id="page-header" class="inside">
+                                       <div id="page-header-wrapper" class="wrapper clearfix">
+                       
+                                       <?php if ($hasheading) { ?>
+                                           <div id="headermenus" class="shrinkwrapper clearfix">
+                                                   <?php if ($hascustommenu) { ?>
+                                                                       <div id="custommenu"><?php echo $custommenu; ?></div>
+                                                               <?php } else { ?>
+                                                                       <div id="custommenu" style="line-height:1em;">&nbsp;</div> <!-- temporary until I find a better fix -->
+                                                               <?php } ?>
+
+                                                               <div class="headermenu">
+                                                               <?php if (!empty($PAGE->layout_options['langmenu'])) {
+                                                               echo $OUTPUT->lang_menu();
+                                                       }
+                                                       echo $OUTPUT->login_info();     
+                                                       echo $PAGE->headingmenu 
+                                                           ?>
+                                                       </div>
+                                           </div>
+                                   <?php } ?>
+                   
+                               </div>
+                               </div>
+
+<!-- END OF HEADER -->
+
+       <?php } ?>
+
+
+<!-- START OF CONTENT -->
+
+               <div id="page-content-wrapper" class="shrinkwrapper clearfix">
+                   <div id="page-content">
+                   <div id="region-main-box">
+                           <div id="region-post-box">
+            
+                           <div id="region-main-wrap">
+                           <div id="region-main">
+                                   <div class="region-content">
+
+                                                                       <div id="region-header" class="inside clearfix">
+                                                                   <h1 class="headermain"><?php echo $PAGE->heading ?></h1>
+                                                               </div>
+
+                                                           <?php if ($hasnavbar) { ?>
+                                                                   <div class="navbar">
+                                                                       <div class="wrapper clearfix">
+                                                                           <div class="breadcrumb">
+                                                                               <?php echo $OUTPUT->navbar(); ?>
+                                                                           </div>
+                                                                           <div class="navbutton">
+                                                                               <?php echo $PAGE->button; ?>
+                                                                           </div>
+                                                                           </div>
+                                                                   </div>
+                                                               <?php } ?>
+                                   
+                                   <?php echo core_renderer::MAIN_CONTENT_TOKEN ?>
+                                       </div>
+                               </div>
+                           </div>
+                
+                               <?php if ($hassidepost) { ?>
+                           <div id="region-post" class="block-region">
+                               <div id="region-post-wrap-1">
+                                       <div id="region-post-wrap-2">
+                                                   <div class="region-content">
+                                                   <?php echo $OUTPUT->blocks_for_region('side-post') ?>
+                                                   </div>
+                                               </div>
+                                       </div>
+                               </div>
+                           <?php } ?>
+                
+                   </div>
+                   </div>
+               </div>
+       </div>
+
+<!-- END OF CONTENT -->
+
+       <?php if ($hasheading || $hasnavbar) { ?>
+               </div>
+
+               </div>
+       </div>
+
+               
+       <?php } ?>
+       
+<!-- START OF FOOTER -->
+
+       <?php if ($hasfooter) { ?>
+                   <div id="page-footer" class="wrapper">
+                        <?php echo $footnote ?>
+                       <p class="helplink"><?php echo page_doc_link(get_string('moodledocslink')) ?></p>
+                       <?php
+                               echo $OUTPUT->login_info();
+                           echo $OUTPUT->home_link();
+                               echo $OUTPUT->standard_footer_html();
+                       ?>
+                   </div>
+           <?php } ?>
+           
+</div>
+<?php echo $OUTPUT->standard_end_of_body_html() ?>
+</body>
+</html>
\ No newline at end of file
diff --git a/theme/nimble/lib.php b/theme/nimble/lib.php
new file mode 100644 (file)
index 0000000..bcbbda8
--- /dev/null
@@ -0,0 +1,78 @@
+<?php
+
+/**
+ * Makes our changes to the CSS
+ *
+ * @param string $css
+ * @param theme_config $theme
+ * @return string 
+ */
+function nimble_process_css($css, $theme) {
+
+    // Set the link color
+    if (!empty($theme->settings->linkcolor)) {
+        $linkcolor = $theme->settings->linkcolor;
+    } else {
+        $linkcolor = null;
+    }
+    $css = nimble_set_linkcolor($css, $linkcolor);
+
+       // Set the link hover color
+    if (!empty($theme->settings->linkhover)) {
+        $linkhover = $theme->settings->linkhover;
+    } else {
+        $linkhover = null;
+    }
+    $css = nimble_set_linkhover($css, $linkhover);
+    
+    
+    // Set the background color
+    if (!empty($theme->settings->backgroundcolor)) {
+        $backgroundcolor = $theme->settings->backgroundcolor;
+    } else {
+        $backgroundcolor = null;
+    }
+    $css = nimble_set_backgroundcolor($css, $backgroundcolor);
+    
+    
+    
+
+    // Return the CSS
+    return $css;
+}
+
+/**
+ * Sets the link color variable in CSS
+ *
+ */
+function nimble_set_linkcolor($css, $linkcolor) {
+    $tag = '[[setting:linkcolor]]';
+    $replacement = $linkcolor;
+    if (is_null($replacement)) {
+        $replacement = '#2a65b1';
+    }
+    $css = str_replace($tag, $replacement, $css);
+    return $css;
+}
+
+function nimble_set_linkhover($css, $linkhover) {
+    $tag = '[[setting:linkhover]]';
+    $replacement = $linkhover;
+    if (is_null($replacement)) {
+        $replacement = '#222222';
+    }
+    $css = str_replace($tag, $replacement, $css);
+    return $css;
+}
+
+
+function nimble_set_backgroundcolor($css, $backgroundcolor) {
+    $tag = '[[setting:backgroundcolor]]';
+    $replacement = $backgroundcolor;
+    if (is_null($replacement)) {
+        $replacement = '#454545';
+    }
+    $css = str_replace($tag, $replacement, $css);
+    return $css;
+}
+
diff --git a/theme/nimble/pix/screenshot.png b/theme/nimble/pix/screenshot.png
new file mode 100644 (file)
index 0000000..36e6d94
Binary files /dev/null and b/theme/nimble/pix/screenshot.png differ
diff --git a/theme/nimble/settings.php b/theme/nimble/settings.php
new file mode 100644 (file)
index 0000000..d6f2186
--- /dev/null
@@ -0,0 +1,52 @@
+<?php
+
+defined('MOODLE_INTERNAL') || die;
+
+if ($ADMIN->fulltree) {
+
+
+// Tagline setting
+    $name = 'theme_nimble/tagline';
+    $title = get_string('tagline','theme_nimble');
+    $description = get_string('taglinedesc', 'theme_nimble');
+    $setting = new admin_setting_configtext($name, $title, $description, '');
+    $settings->add($setting);
+    
+    // footerline setting
+    $name = 'theme_nimble/footerline';
+    $title = get_string('footerline','theme_nimble');
+    $description = get_string('footerlinedesc', 'theme_nimble');
+    $setting = new admin_setting_configtext($name, $title, $description, '');
+    $settings->add($setting);
+
+
+       // Background color setting
+       $name = 'theme_nimble/backgroundcolor';
+       $title = get_string('backgroundcolor','theme_nimble');
+       $description = get_string('backgroundcolordesc', 'theme_nimble');
+       $default = '#454545';
+       $previewconfig = NULL;
+       $setting = new admin_setting_configcolourpicker($name, $title, $description, $default, $previewconfig);
+       $settings->add($setting);
+
+       // link color setting
+       $name = 'theme_nimble/linkcolor';
+       $title = get_string('linkcolor','theme_nimble');
+       $description = get_string('linkcolordesc', 'theme_nimble');
+       $default = '#2a65b1';
+       $previewconfig = NULL;
+       $setting = new admin_setting_configcolourpicker($name, $title, $description, $default, $previewconfig);
+       $settings->add($setting);
+
+       // link hover color setting
+       $name = 'theme_nimble/linkhover';
+       $title = get_string('linkhover','theme_nimble');
+       $description = get_string('linkhoverdesc', 'theme_nimble');
+       $default = '#222222';
+       $previewconfig = NULL;
+       $setting = new admin_setting_configcolourpicker($name, $title, $description, $default, $previewconfig);
+       $settings->add($setting);
+
+
+
+}
\ No newline at end of file
diff --git a/theme/nimble/style/colors.css b/theme/nimble/style/colors.css
new file mode 100644 (file)
index 0000000..34029f1
--- /dev/null
@@ -0,0 +1,40 @@
+#page-header-wrapper {
+       background: [[setting:backgroundcolor]];
+}
+
+a {
+       color: [[setting:linkcolor]];
+}
+
+a:hover {
+       color: #000;
+}
+
+.yui3-skin-sam .yui3-menu-label-active,
+.yui3-skin-sam .yui3-menu-label-menuvisible {
+       color: #fff;
+       background: [[setting:linkhover]] !important;
+}
+
+.yui3-skin-sam .yui3-menu .yui3-menu {
+       padding-top: 5px;
+       background: [[setting:linkhover]];
+       
+}
+
+
+
+.yui3-skin-sam .yui3-menu .yui3-menu .yui3-menu .yui3-menu-label-active,
+.yui3-skin-sam .yui3-menu .yui3-menu .yui3-menu .yui3-menu-label-menuvisible {
+ color: #fff;
+       background-color: [[setting:linkhover]] !important;
+}
+
+
+.yui3-skin-sam .yui3-menu .yui3-menu .yui3-menu-content {
+       background: [[setting:linkhover]];
+}
+
+.yui3-skin-sam .yui3-menu .yui3-menu .yui3-menu .yui3-menu-content {
+       background: [[setting:linkhover]];
+}
\ No newline at end of file
diff --git a/theme/nimble/style/core.css b/theme/nimble/style/core.css
new file mode 100644 (file)
index 0000000..2d35e88
--- /dev/null
@@ -0,0 +1,226 @@
+/* Core */
+
+html,body {
+       background: #f7f7f7;    
+}
+html,body {
+       font-family: Tahoma,Arial,Helvetica,sans-serif;
+}
+
+h1,h2,h3,h4,h5,h6 {
+  font-family: Georgia, Times, "Times New Roman", serif;
+       color: #333;
+}
+
+.shrinkwrapper {
+       width: 90%;
+       margin: 0 auto;
+}
+
+
+/* Header */
+
+
+
+.headermenu {
+       float: right;
+       color: #ddd;
+}
+
+.headermenu a {
+       color: #aaa;
+}
+
+.headermenu a:hover {
+       color: #fff;
+}
+
+#custommenu {
+       float: left;
+       margin-top: 40px;
+}
+
+h1.headermain {
+       margin: 0 20px 25px 0;
+       font-size: 2.5em;
+       text-shadow: 0.03em 0.03em 0.05em #333; 
+       color: #222;
+}
+
+.inside h1.headermain {
+       font-size: 2.25em;
+       margin-bottom: 15px;
+}
+
+.tagline {
+       float: left;
+       margin:13px 0 0 0;
+       font-size: 1em;
+       color: #333;
+       font-family: Georgia, Times, "Times New Roman", serif;
+       text-shadow: 0.1em 0.1em 0 #fff;                
+}
+
+.navbar {
+       margin-bottom: 15px;
+       border: 1px solid #e3e3e3;
+       border-radius: 10px;
+       -moz-border-radius: 10px;
+       -webkit-border-radius: 10px;    
+}
+
+.navbar .wrapper {
+       border: 1px solid #fff;
+       padding: 5px;
+       border-radius: 10px;
+       -moz-border-radius: 10px;
+       -webkit-border-radius: 10px;    
+}
+
+/* Content */
+
+h2.headingblock {
+       text-shadow: 1px 1px 3px #aaa;
+       color: #445566;
+}
+
+/* Region Post */
+
+#region-post-wrap-1 {
+       border: 1px solid #ccc;
+       border-radius: 10px;
+       -moz-border-radius: 10px;
+       -webkit-border-radius: 10px;    
+       margin-top: 25px;
+}
+#region-post-wrap-2 {
+       border: 1px solid #fff;
+       border-radius: 10px;
+       -moz-border-radius: 10px;
+       -webkit-border-radius: 10px;    
+       padding: 10px;
+}
+
+/* Blocks */
+
+.block {
+       border: none;
+}
+
+.block .title {
+       border-bottom: 1px solid #eee;
+}
+.block .title h2 {
+       text-shadow: 1px 1px 3px #aaa;
+       color: #333;
+       font-size: 1.25em;
+       border-bottom: 1px solid #fff;
+       margin: 0;
+}
+
+/* Calendar */
+
+.minicalendar td,
+.minicalendar th {
+       font-size: 0.85em;
+       padding: 0 2px;
+       border-width: 2px 0;
+       border-color: #f7f7f7;
+}
+
+.minicalendar .calendar_event_user,
+.minicalendar .duration_user {
+       border-color: #dce7ec;
+}
+
+.minicalendar .calendar_event_course,
+.minicalendar .duration_course {
+       border-color: #ffd3bd;
+}
+
+.minicalendar .calendar_event_global,
+.minicalendar .duration_global {
+       border-color: #d6f8cd;
+}
+
+.minicalendar .calendar_event_group,
+.minicalendar .duration_group {
+       border-color: #fee7ae;
+}
+
+/* Forums */
+
+.forumpost .topic {
+       border: 1px solid #ddd;
+       border-radius: 10px 10px 0 0;
+       -moz-border-radius: 10px 10px 0 0;
+       -webkit-border-radius: 10px 10px 0 0;
+       border-bottom: 0;       
+       padding: 5px 10px;
+       background: #eee;
+}
+
+.forumpost .topic .subject {
+       font-weight: bold;
+       font-size: 1.2em;
+       color: #444;
+}
+
+.forumpost .content {
+       border-width: 0 1px 0;
+       border-color: #ddd;
+       border-style: solid;
+       padding: 5px 10px;
+}
+
+.forumpost .options {
+       border-width: 0 1px 1px;
+       border-color: #ddd;
+       border-style: solid;
+       border-radius: 0 0 10px 10px;
+       -moz-border-radius: 0 0 10px 10px;
+       -webkit-border-radius: 0 0 10px 10px;
+       font-size: 0.9em;
+       color: #333;
+       padding: 5px 10px;
+       background: #eee;       
+}
+
+/* Course */
+
+.path-course-view .course-content li.section {
+       border-bottom: 1px solid #ddd;
+       border-top: 1px solid #fff;
+       margin-top: 0 !important;
+}
+
+.path-course-view .course-content #section-0 {
+       border-top: 0;
+}
+
+#page-course-view-weeks .course-content .section .content {
+       margin-left: 0;
+}
+
+#page-course-view-weeks .course-content .left {
+       display: none;
+}
+
+.path-course-view .course-content .current {
+       background: #fcfde0;
+}
+
+#page-course-view-topics .course-content .section .left {
+       font-family: Georgia, Times, "Times New Roman", serif;
+       font-size: 1.5em;
+       text-shadow: 2px 2px 5px #fff;
+       font-weight: bold;
+       color: #445566;
+}
+
+
+/* Footer */
+
+#page-footer {
+       margin-bottom: 25px;
+}
\ No newline at end of file
diff --git a/theme/nimble/style/menu.css b/theme/nimble/style/menu.css
new file mode 100644 (file)
index 0000000..76ea418
--- /dev/null
@@ -0,0 +1,208 @@
+#custommenu {
+       font-size: 1.2em;
+       line-height: 1.2;
+       float: left;
+       width:60%;
+}
+
+.yui3-skin-sam .yui3-menu-content, 
+.yui3-skin-sam .yui3-menu .yui3-menu .yui3-menu-content {
+       border: none;
+       padding: 0 !important;
+}
+
+.yui3-skin-sam .yui3-menu .yui3-menu .yui3-menu-content {
+       
+    padding: 5px 0;
+    color: #fff;
+}
+
+
+/* Horizontal menus */
+
+.yui3-skin-sam .yui3-menu-horizontal .yui3-menu-content {
+
+
+}
+
+
+.yui3-skin-sam .yui3-menu ul,
+.yui3-skin-sam .yui3-menu ul ul {
+
+}
+
+.yui3-skin-sam .yui3-menu ul.first-of-type {
+}
+
+.yui3-skin-sam .yui3-menu-horizontal ul {
+}
+
+
+.yui3-skin-sam .yui3-menu li,
+.yui3-skin-sam .yui3-menu .yui3-menu li {
+
+}
+
+.yui3-skin-sam .yui3-menu-horizontal li {
+
+}
+
+.yui3-skin-sam .yui3-menubuttonnav li {
+
+}
+
+.yui3-skin-sam .yui3-splitbuttonnav li {
+
+}
+
+.yui3-skin-sam .yui3-menubuttonnav li li,
+.yui3-skin-sam .yui3-splitbuttonnav li li {
+
+}
+
+
+/* Menuitems and menu labels */
+
+
+.yui3-skin-sam .yui3-menu .yui3-menu .yui3-menu {
+       background: #333 !important;
+}
+.custom_menu_submenu .custom_menu_submenu {
+       
+}
+
+
+.yui3-skin-sam .yui3-menu .yui3-menu .yui3-menu {
+       padding-top: 0;
+       background: none;
+}
+
+.yui3-skin-sam .yui3-menuitem-content,
+.yui3-skin-sam .yui3-menu-label {
+       color: #fff !important;
+}
+
+.yui3-skin-sam .yui3-menuitem-content,
+.yui3-skin-sam .yui3-menu .yui3-menu .yui3-menuitem-content {
+       padding-top: 3px;
+       padding-bottom: 4px;
+       color: #fff !important;
+
+}
+
+.yui3-skin-sam .yui3-menu-horizontal .yui3-menu-label,
+.yui3-skin-sam .yui3-menu-horizontal .yui3-menuitem-content {
+       color: #fff !important;
+}
+
+.yui3-skin-sam .yui3-menu .yui3-menu .yui3-menu .yui3-menuitem-active .yui3-menuitem-content {
+       color: #fff;
+       background-color: #333;
+
+}
+
+.yui3-skin-sam .yui3-menu-label,
+.yui3-skin-sam .yui3-menu .yui3-menu .yui3-menu-label {
+       padding-top: 3px;
+       padding-bottom: 4px;
+       border-radius:0;
+       -moz-border-radius: 0;
+       -webkit-border-radius: 0;
+       color: #fff !important;
+
+}
+
+.yui3-skin-sam .yui3-menu-horizontal .yui3-menu-label {
+       border: solid #555;
+       border-width: 1px 1px 0 1px;
+       padding: 0 20px 0 20px;
+       margin: 0 10px 0 0;
+       background: #333;
+       border-radius: 10px 10px 0 0;
+       -moz-border-radius: 10px 10px 0 0;
+       -webkit-border-radius: 10px 10px 0 0;   
+
+}
+
+.yui3-skin-sam .yui3-menubuttonnav .yui3-menu-label,
+.yui3-skin-sam .yui3-splitbuttonnav .yui3-menu-label {
+
+
+}
+
+.yui3-skin-sam .yui3-menubuttonnav .yui3-menu-label {
+
+
+}
+
+.yui3-skin-sam .yui3-menubuttonnav .yui3-menu-label em {
+
+
+}
+
+
+.yui3-skin-sam .yui3-splitbuttonnav .yui3-menu-label {
+
+
+}
+
+.yui3-skin-sam .yui3-splitbuttonnav .yui3-menu-label a {
+
+
+}
+
+.yui3-skin-sam .yui3-splitbuttonnav .yui3-menu-label .yui3-menu-toggle {
+       
+       
+}
+
+
+/* Selected menuitem */
+
+
+
+.yui3-skin-sam .yui3-menu .yui3-menu .yui3-menu-label-active,
+.yui3-skin-sam .yui3-menu .yui3-menu .yui3-menu-label-menuvisible {
+ color: #fff;
+       background-color: #333 !important;
+}
+
+.yui3-skin-sam .yui3-menuitem-active .yui3-menuitem-content,
+.yui3-skin-sam .yui3-menu .yui3-menu .yui3-menuitem-active .yui3-menuitem-content {
+       color: #fff;
+       background-color: #333;
+
+}
+
+
+
+
+
+.yui3-skin-sam .yui3-menu-horizontal .yui3-menu-label-active,
+.yui3-skin-sam .yui3-menu-horizontal .yui3-menuitem-active .yui3-menuitem-content,
+.yui3-skin-sam .yui3-menu-horizontal .yui3-menu-label-menuvisible {
+}
+
+.yui3-skin-sam .yui3-menubuttonnav .yui3-menu-label-active,
+.yui3-skin-sam .yui3-menubuttonnav .yui3-menuitem-active .yui3-menuitem-content,
+.yui3-skin-sam .yui3-menubuttonnav .yui3-menu-label-menuvisible,
+.yui3-skin-sam .yui3-splitbuttonnav .yui3-menu-label-active,
+.yui3-skin-sam .yui3-splitbuttonnav .yui3-menuitem-active .yui3-menuitem-content,
+.yui3-skin-sam .yui3-splitbuttonnav .yui3-menu-label-menuvisible {
+
+
+}
+
+.yui3-skin-sam .yui3-splitbuttonnav .yui3-menu-label-menuvisible {
+
+
+}
+
+.yui3-skin-sam .yui3-splitbuttonnav .yui3-menu-label-menuvisible .yui3-menu-toggle {
+
+
+}
+
+#custommenu .yui3-menu-horizontal.javascript-disabled .yui3-menu-content,
+#custommenu .yui3-menu-horizontal.javascript-disabled .yui3-menu-content .ul {border:none !important;}
+#custommenu .yui3-menu-horizontal.javascript-disabled li a {padding:0 20px 0 0;}
diff --git a/theme/nimble/style/pagelayout.css b/theme/nimble/style/pagelayout.css
new file mode 100644 (file)
index 0000000..9d69b95
--- /dev/null
@@ -0,0 +1,105 @@
+/** Path: theme pagelayout **/
+
+/*********************************************************************************************
+
+       right column: 28%
+       padding left/right column: 10px
+       padding center column: 20px
+
+**********************************************************************************************/
+
+body {
+       margin: auto 0px;
+       width: auto;
+}
+
+#page {
+       width: 100%;
+       overflow: hidden;
+}
+
+#page-header {
+       float: left;
+       width: 100%;
+}
+
+#page-content {
+       clear: both;
+       float: left;
+       overflow: hidden;
+       position: relative;
+       width: 100%;
+}
+
+#page-content #region-main-box {
+       float: left;
+       right: 28%;
+       position: relative;
+       width: 100%;
+}
+
+#page-content #region-post-box {
+       float: left;
+       right: 72%;
+       position: relative;
+       width: 100%;
+}
+
+#page-content #region-main {
+       float: left;
+       overflow: hidden;
+       position: relative;
+       margin-right: 0px;
+       left: 100%;
+       width: 72%;
+}
+
+#page-content #region-post {
+       float: left;
+       overflow: hidden;
+       position: relative;
+       left: 100%;
+       width: 28%;
+}
+
+#page-content #region-main .region-content {
+       overflow: hidden;
+       padding: 20px 25px 20px 0;
+}
+
+#page-content #region-post .region-content {
+       overflow: hidden;
+       padding: 0 0 0 0;
+}
+
+#page-footer {
+       clear: both;
+       float: left;
+       width: 100%;
+}
+
+/** No blocks whatsoever **/
+
+.content-only #page-content #region-main-box {
+       right: 0%;
+}
+
+.content-only #page-content #region-post-box {
+       right: 100%;
+}
+
+.content-only #page-content #region-main {
+       left: 100%;
+       width: 100%;
+}
+
+.content-only #page-content #region-pre {
+       width: 0%;
+}
+
+.content-only #page-content #region-post {
+       width: 0%;
+}
+
+.pagelayout-report #page-content #region-main {overflow:auto;}
+.pagelayout-report #page-content #region-main .region-content {overflow:visible;}
\ No newline at end of file