Merge branch 'wip-MDL-36048-master' of git://github.com/marinaglancy/moodle
authorDan Poltawski <dan@moodle.com>
Wed, 14 Nov 2012 01:58:27 +0000 (09:58 +0800)
committerDan Poltawski <dan@moodle.com>
Wed, 14 Nov 2012 01:58:27 +0000 (09:58 +0800)
26 files changed:
course/format/lib.php
lib/outputrenderers.php
theme/afterburner/config.php
theme/afterburner/layout/default.php
theme/anomaly/config.php
theme/anomaly/layout/general.php
theme/anomaly/layout/report.php
theme/arialist/config.php
theme/arialist/layout/general.php
theme/arialist/layout/report.php
theme/base/config.php
theme/base/layout/general.php
theme/base/layout/report.php
theme/base/style/core.css
theme/binarius/config.php
theme/binarius/layout/general.php
theme/binarius/layout/report.php
theme/boxxie/config.php
theme/boxxie/layout/general.php
theme/brick/config.php
theme/brick/layout/general.php
theme/canvas/config.php
theme/canvas/layout/general.php
theme/canvas/layout/report.php
theme/standard/style/core.css
theme/upgrade.txt

index 80a381b..7f6dfc9 100644 (file)
@@ -793,6 +793,73 @@ abstract class format_base {
      */
     public function page_set_cm(moodle_page $page) {
     }
+
+    /**
+     * Course-specific information to be output on any course page (usually above navigation bar)
+     *
+     * Example of usage:
+     * define
+     * class format_FORMATNAME_XXX implements renderable {}
+     *
+     * create format renderer in course/format/FORMATNAME/renderer.php, define rendering function:
+     * class format_FORMATNAME_renderer extends plugin_renderer_base {
+     *     protected function render_format_FORMATNAME_XXX(format_FORMATNAME_XXX $xxx) {
+     *         return html_writer::tag('div', 'This is my header/footer');
+     *     }
+     * }
+     *
+     * Return instance of format_FORMATNAME_XXX in this function, the appropriate method from
+     * plugin renderer will be called
+     *
+     * @return null|renderable null for no output or object with data for plugin renderer
+     */
+    public function course_header() {
+        return null;
+    }
+
+    /**
+     * Course-specific information to be output on any course page (usually in the beginning of
+     * standard footer)
+     *
+     * See {@link format_base::course_header()} for usage
+     *
+     * @return null|renderable null for no output or object with data for plugin renderer
+     */
+    public function course_footer() {
+        return null;
+    }
+
+    /**
+     * Course-specific information to be output immediately above content on any course page
+     *
+     * See {@link format_base::course_header()} for usage
+     *
+     * @return null|renderable null for no output or object with data for plugin renderer
+     */
+    public function course_content_header() {
+        return null;
+    }
+
+    /**
+     * Course-specific information to be output immediately below content on any course page
+     *
+     * See {@link format_base::course_header()} for usage
+     *
+     * @return null|renderable null for no output or object with data for plugin renderer
+     */
+    public function course_content_footer() {
+        return null;
+    }
+
+    /**
+     * Returns instance of page renderer used by this plugin
+     *
+     * @param moodle_page $page
+     * @return renderer_base
+     */
+    public function get_renderer(moodle_page $page) {
+        return $page->get_renderer('format_'. $this->get_format());
+    }
 }
 
 /**
index 6239615..c38de61 100644 (file)
@@ -759,6 +759,23 @@ class core_renderer extends renderer_base {
             $header = $this->doctype() . $header;
         }
 
+        // If this theme version is below 2.4 release and this is a course view page
+        if ((!isset($this->page->theme->settings->version) || $this->page->theme->settings->version < 2012101500) &&
+                $this->page->pagelayout === 'course' && $this->page->url->compare(new moodle_url('/course/view.php'), URL_MATCH_BASE)) {
+            // check if course content header/footer have not been output during render of theme layout
+            $coursecontentheader = $this->course_content_header(true);
+            $coursecontentfooter = $this->course_content_footer(true);
+            if (!empty($coursecontentheader)) {
+                // display debug message and add header and footer right above and below main content
+                // Please note that course header and footer (to be displayed above and below the whole page)
+                // are not displayed in this case at all.
+                // Besides the content header and footer are not displayed on any other course page
+                debugging('The current theme is not optimised for 2.4, the course-specific header and footer defined in course format will not be output', DEBUG_DEVELOPER);
+                $header .= $coursecontentheader;
+                $footer = $coursecontentfooter. $footer;
+            }
+        }
+
         send_headers($this->contenttype, $this->page->cacheable);
 
         $this->opencontainers->push('header/footer', $footer);
@@ -845,6 +862,100 @@ class core_renderer extends renderer_base {
         return $this->opencontainers->pop_all_but_last($shouldbenone);
     }
 
+    /**
+     * Returns course-specific information to be output immediately above content on any course page
+     * (for the current course)
+     *
+     * @param bool $onlyifnotcalledbefore output content only if it has not been output before
+     * @return string
+     */
+    public function course_content_header($onlyifnotcalledbefore = false) {
+        global $CFG;
+        if ($this->page->course->id == SITEID) {
+            // return immediately and do not include /course/lib.php if not necessary
+            return '';
+        }
+        static $functioncalled = false;
+        if ($functioncalled && $onlyifnotcalledbefore) {
+            // we have already output the content header
+            return '';
+        }
+        require_once($CFG->dirroot.'/course/lib.php');
+        $functioncalled = true;
+        $courseformat = course_get_format($this->page->course);
+        if (($obj = $courseformat->course_content_header()) !== null) {
+            return $courseformat->get_renderer($this->page)->render($obj);
+        }
+        return '';
+    }
+
+    /**
+     * Returns course-specific information to be output immediately below content on any course page
+     * (for the current course)
+     *
+     * @param bool $onlyifnotcalledbefore output content only if it has not been output before
+     * @return string
+     */
+    public function course_content_footer($onlyifnotcalledbefore = false) {
+        global $CFG;
+        if ($this->page->course->id == SITEID) {
+            // return immediately and do not include /course/lib.php if not necessary
+            return '';
+        }
+        static $functioncalled = false;
+        if ($functioncalled && $onlyifnotcalledbefore) {
+            // we have already output the content footer
+            return '';
+        }
+        $functioncalled = true;
+        require_once($CFG->dirroot.'/course/lib.php');
+        $courseformat = course_get_format($this->page->course);
+        if (($obj = $courseformat->course_content_footer()) !== null) {
+            return $courseformat->get_renderer($this->page)->render($obj);
+        }
+        return '';
+    }
+
+    /**
+     * Returns course-specific information to be output on any course page in the header area
+     * (for the current course)
+     *
+     * @return string
+     */
+    public function course_header() {
+        global $CFG;
+        if ($this->page->course->id == SITEID) {
+            // return immediately and do not include /course/lib.php if not necessary
+            return '';
+        }
+        require_once($CFG->dirroot.'/course/lib.php');
+        $courseformat = course_get_format($this->page->course);
+        if (($obj = $courseformat->course_header()) !== null) {
+            return $courseformat->get_renderer($this->page)->render($obj);
+        }
+        return '';
+    }
+
+    /**
+     * Returns course-specific information to be output on any course page in the footer area
+     * (for the current course)
+     *
+     * @return string
+     */
+    public function course_footer() {
+        global $CFG;
+        if ($this->page->course->id == SITEID) {
+            // return immediately and do not include /course/lib.php if not necessary
+            return '';
+        }
+        require_once($CFG->dirroot.'/course/lib.php');
+        $courseformat = course_get_format($this->page->course);
+        if (($obj = $courseformat->course_footer()) !== null) {
+            return $courseformat->get_renderer($this->page)->render($obj);
+        }
+        return '';
+    }
+
     /**
      * Returns lang menu or '', this method also checks forcing of languages in courses.
      *
index e720e8d..473cb4c 100644 (file)
@@ -91,13 +91,13 @@ $THEME->layouts = array(
     'popup' => array(
         'file' => 'default.php',
         'regions' => array(),
-        'options' => array('nofooter'=>true, 'nonavbar'=>true, 'nocustommenu'=>true, 'nologininfo'=>true),
+        'options' => array('nofooter'=>true, 'nonavbar'=>true, 'nocustommenu'=>true, 'nologininfo'=>true, 'nocourseheaderfooter'=>true),
     ),
     // No blocks and minimal footer - used for legacy frame layouts only!
     'frametop' => array(
         'file' => 'default.php',
         'regions' => array(),
-        'options' => array('nofooter'=>true),
+        'options' => array('nofooter'=>true, 'nocoursefooter'=>true),
     ),
     // Embedded pages, like iframe/object embeded in moodleform - it needs as much space as possible
     'embedded' => array(
@@ -110,13 +110,13 @@ $THEME->layouts = array(
     'maintenance' => array(
         'file' => 'default.php',
         'regions' => array(),
-        'options' => array('noblocks'=>true, 'nofooter'=>true, 'nonavbar'=>true, 'nocustommenu'=>true),
+        'options' => array('noblocks'=>true, 'nofooter'=>true, 'nonavbar'=>true, 'nocustommenu'=>true, 'nocourseheaderfooter'=>true),
     ),
     // Should display the content and basic headers only.
     'print' => array(
         'file' => 'default.php',
         'regions' => array(),
-        'options' => array('noblocks'=>true, 'nofooter'=>true, 'nonavbar'=>false, 'nocustommenu'=>true),
+        'options' => array('noblocks'=>true, 'nofooter'=>true, 'nonavbar'=>false, 'nocustommenu'=>true, 'nocourseheaderfooter'=>true),
     ),
     // The pagelayout used when a redirection is occuring.
     'redirect' => array(
@@ -134,7 +134,7 @@ $THEME->layouts = array(
         'file' => 'default.php',
         'regions' => array('side-pre', 'side-post'),
         'defaultregion' => 'side-pre',
-        'options' => array('nofooter'=>true, 'nonavbar'=>true, 'nocustommenu'=>true, 'nologinlinks'=>true),
+        'options' => array('nofooter'=>true, 'nonavbar'=>true, 'nocustommenu'=>true, 'nologinlinks'=>true, 'nocourseheaderfooter'=>true),
     ),
 );
 
index 0bc2bfa..7d28944 100644 (file)
@@ -15,6 +15,16 @@ $hascustommenu = (empty($PAGE->layout_options['nocustommenu']) && !empty($custom
 
 $hasfootnote = (!empty($PAGE->theme->settings->footnote));
 
+$courseheader = $coursecontentheader = $coursecontentfooter = $coursefooter = '';
+if (empty($PAGE->layout_options['nocourseheaderfooter'])) {
+    $courseheader = $OUTPUT->course_header();
+    $coursecontentheader = $OUTPUT->course_content_header();
+    if (empty($PAGE->layout_options['nocoursefooter'])) {
+        $coursecontentfooter = $OUTPUT->course_content_footer();
+        $coursefooter = $OUTPUT->course_footer();
+    }
+}
+
 $bodyclasses = array();
 if ($showsidepre && !$showsidepost) {
     if (!right_to_left()) {
@@ -47,9 +57,8 @@ echo $OUTPUT->doctype() ?>
 <?php echo $OUTPUT->standard_top_of_body_html() ?>
 <div id="page-wrapper">
   <div id="page">
-   <?php if ($hasheading || $hasnavbar) { ?>
-    <div id="page-header">
-        <?php if ($hasheading) { ?>
+    <?php if ($hasheading) { ?>
+        <div id="page-header">
          <a class="logo" href="<?php echo $CFG->wwwroot; ?>" title="<?php print_string('home'); ?>"></a>
          <div class="headermenu"><?php
             if ($haslogininfo) {
@@ -60,9 +69,8 @@ echo $OUTPUT->doctype() ?>
             }
             echo $PAGE->headingmenu
             ?></div>
-        <?php } ?>
-    </div>
-<?php } ?>
+        </div>
+    <?php } ?>
 <!-- END OF HEADER -->
 <!-- START CUSTOMMENU AND NAVBAR -->
     <div id="navcontainer">
@@ -72,6 +80,10 @@ echo $OUTPUT->doctype() ?>
 
     </div>
 
+        <?php if (!empty($courseheader)) { ?>
+            <div id="course-header"><?php echo $courseheader; ?></div>
+        <?php } ?>
+
         <?php if ($hasnavbar) { ?>
             <div class="navbar clearfix">
                 <div class="breadcrumb"><?php echo $OUTPUT->navbar(); ?></div>
@@ -85,7 +97,9 @@ echo $OUTPUT->doctype() ?>
            <div id="region-pre-box">
                <div id="region-main">
                    <div class="region-content">
+                       <?php echo $coursecontentheader; ?>
                        <?php echo $OUTPUT->main_content() ?>
+                       <?php echo $coursecontentfooter; ?>
                    </div>
                </div>
 
@@ -121,6 +135,9 @@ echo $OUTPUT->doctype() ?>
     </div>
 
     <!-- START OF FOOTER -->
+    <?php if (!empty($coursefooter)) { ?>
+        <div id="course-footer"><?php echo $coursefooter; ?></div>
+    <?php } ?>
     <?php if ($hasfooter) { ?>
     <div id="page-footer" class="clearfix">
 
index d435a8d..d94f108 100644 (file)
@@ -85,19 +85,19 @@ $THEME->layouts = array(
     'popup' => array(
         'file' => 'general.php',
         'regions' => array(),
-        'options' => array('nofooter'=>true, 'nonavbar'=>true, 'noblocks'=>true),
+        'options' => array('nofooter'=>true, 'nonavbar'=>true, 'noblocks'=>true, 'nocourseheaderfooter'=>true),
     ),
     // No blocks and minimal footer - used for legacy frame layouts only!
     'frametop' => array(
         'file' => 'general.php',
         'regions' => array(),
-        'options' => array('nofooter', 'noblocks'=>true),
+        'options' => array('nofooter', 'noblocks'=>true, 'nocoursefooter'=>true),
     ),
     // Embeded pages, like iframe embeded in moodleform
     'embedded' => array(
         'file' => 'general.php',
         'regions' => array(),
-        'options' => array('nofooter'=>true, 'nonavbar'=>true, 'noblocks'=>true),
+        'options' => array('nofooter'=>true, 'nonavbar'=>true, 'noblocks'=>true, 'nocourseheaderfooter'=>true),
     ),
     // Used during upgrade and install, and for the 'This site is undergoing maintenance' message.
     // This must not have any blocks, and it is good idea if it does not have links to
@@ -105,13 +105,13 @@ $THEME->layouts = array(
     'maintenance' => array(
         'file' => 'general.php',
         'regions' => array(),
-        'options' => array('nofooter'=>true, 'nonavbar'=>true, 'noblocks'=>true),
+        'options' => array('nofooter'=>true, 'nonavbar'=>true, 'noblocks'=>true, 'nocourseheaderfooter'=>true),
     ),
     // Should display the content and basic headers only.
     'print' => array(
         'file' => 'general.php',
         'regions' => array(),
-        'options' => array('nofooter'=>true, 'nonavbar'=>false, 'noblocks'=>true),
+        'options' => array('nofooter'=>true, 'nonavbar'=>false, 'noblocks'=>true, 'nocourseheaderfooter'=>true),
     ),
     'report' => array(
         'file' => 'report.php',
index 253541e..4037cce 100644 (file)
@@ -25,6 +25,16 @@ if ($hasnavbar) {
     $bodyclasses[] = 'hasnavbar';
 }
 
+$courseheader = $coursecontentheader = $coursecontentfooter = $coursefooter = '';
+if (empty($PAGE->layout_options['nocourseheaderfooter'])) {
+    $courseheader = $OUTPUT->course_header();
+    $coursecontentheader = $OUTPUT->course_content_header();
+    if (empty($PAGE->layout_options['nocoursefooter'])) {
+        $coursecontentfooter = $OUTPUT->course_content_footer();
+        $coursefooter = $OUTPUT->course_footer();
+    }
+}
+
 echo $OUTPUT->doctype() ?>
 <html <?php echo $OUTPUT->htmlattributes() ?>>
 <head>
@@ -36,7 +46,7 @@ echo $OUTPUT->doctype() ?>
 <?php echo $OUTPUT->standard_top_of_body_html() ?>
 
 <div id="page">
-<?php if ($hasheading || $hasnavbar) { ?>
+<?php if ($hasheading || $hasnavbar || !empty($courseheader)) { ?>
     <div id="page-header">
         <div class="rounded-corner top-left"></div>
         <div class="rounded-corner top-right"></div>
@@ -50,8 +60,11 @@ echo $OUTPUT->doctype() ?>
             echo $PAGE->headingmenu
         ?></div><?php } ?>
 
+        <?php if (!empty($courseheader)) { ?>
+            <div id="course-header"><?php echo $courseheader; ?></div>
+        <?php } ?>
         <?php if ($hascustommenu) { ?>
-       <div id="custommenu"><?php echo $custommenu; ?></div>
+            <div id="custommenu"><?php echo $custommenu; ?></div>
                <?php } ?>
 
         <?php if ($hasnavbar) { ?>
@@ -71,7 +84,9 @@ echo $OUTPUT->doctype() ?>
                 <div id="region-main-wrap">
                     <div id="region-main">
                         <div class="region-content">
+                            <?php echo $coursecontentheader; ?>
                             <?php echo $OUTPUT->main_content() ?>
+                            <?php echo $coursecontentfooter; ?>
                         </div>
                     </div>
                 </div>
@@ -97,6 +112,9 @@ echo $OUTPUT->doctype() ?>
     </div>
 
 <!-- START OF FOOTER -->
+    <?php if (!empty($coursefooter)) { ?>
+        <div id="course-footer"><?php echo $coursefooter; ?></div>
+    <?php } ?>
     <?php if ($hasfooter) { ?>
     <div id="page-footer" class="clearfix">
         <p class="helplink"><?php echo page_doc_link(get_string('moodledocslink')) ?></p>
index 91b9049..ffb240d 100644 (file)
@@ -19,6 +19,16 @@ if ($hasnavbar) {
     $bodyclasses[] = 'hasnavbar';
 }
 
+$courseheader = $coursecontentheader = $coursecontentfooter = $coursefooter = '';
+if (empty($PAGE->layout_options['nocourseheaderfooter'])) {
+    $courseheader = $OUTPUT->course_header();
+    $coursecontentheader = $OUTPUT->course_content_header();
+    if (empty($PAGE->layout_options['nocoursefooter'])) {
+        $coursecontentfooter = $OUTPUT->course_content_footer();
+        $coursefooter = $OUTPUT->course_footer();
+    }
+}
+
 echo $OUTPUT->doctype() ?>
 <html <?php echo $OUTPUT->htmlattributes() ?>>
 <head>
@@ -44,6 +54,9 @@ echo $OUTPUT->doctype() ?>
             echo $PAGE->headingmenu
         ?></div><?php } ?>
 
+        <?php if (!empty($courseheader)) { ?>
+            <div id="course-header"><?php echo $courseheader; ?></div>
+        <?php } ?>
         <?php if ($hascustommenu) { ?>
        <div id="custommenu"><?php echo $custommenu; ?></div>
                <?php } ?>
@@ -61,7 +74,9 @@ echo $OUTPUT->doctype() ?>
     <div id="page-content" class="clearfix">
         <div id="report-main-content">
             <div class="region-content">
+                <?php echo $coursecontentheader; ?>
                 <?php echo $OUTPUT->main_content() ?>
+                <?php echo $coursecontentfooter; ?>
             </div>
         </div>
         <?php if ($hassidepre) { ?>
@@ -76,6 +91,9 @@ echo $OUTPUT->doctype() ?>
     </div>
 
 <!-- START OF FOOTER -->
+    <?php if (!empty($coursefooter)) { ?>
+        <div id="course-footer"><?php echo $coursefooter; ?></div>
+    <?php } ?>
     <?php if ($hasfooter) { ?>
     <div id="page-footer" class="clearfix">
         <p class="helplink"><?php echo page_doc_link(get_string('moodledocslink')) ?></p>
index 4de9416..f9283a7 100644 (file)
@@ -143,29 +143,29 @@ $THEME->layouts = array(
     'popup' => array(
         'file' => 'general.php',
         'regions' => array(),
-        'options' => array('nofooter'=>true, 'noblocks'=>true, 'nonavbar'=>true, 'nocustommenu'=>true),
+        'options' => array('nofooter'=>true, 'noblocks'=>true, 'nonavbar'=>true, 'nocustommenu'=>true, 'nocourseheaderfooter'=>true),
     ),
     'frametop' => array(
         'file' => 'general.php',
         'regions' => array(),
-        'options' => array('nofooter'=>true),
+        'options' => array('nofooter'=>true, 'nocoursefooter'=>true),
     ),
     'maintenance' => array(
         'file' => 'general.php',
         'regions' => array(),
-        'options' => array('nofooter'=>true, 'nonavbar'=>true, 'nocustommenu'=>true),
+        'options' => array('nofooter'=>true, 'nonavbar'=>true, 'nocustommenu'=>true, 'nocourseheaderfooter'=>true),
     ),
     'embedded' => array(
         'theme' => 'canvas',
         'file' => 'embedded.php',
         'regions' => array(),
-        'options' => array('nofooter'=>true, 'nonavbar'=>true, 'nocustommenu'=>true),
+        'options' => array('nofooter'=>true, 'nonavbar'=>true, 'nocustommenu'=>true, 'nocourseheaderfooter'=>true),
     ),
     // Should display the content and basic headers only.
     'print' => array(
         'file' => 'general.php',
         'regions' => array(),
-        'options' => array('nofooter'=>true, 'noblocks'=>true, 'nonavbar'=>false, 'nocustommenu'=>true),
+        'options' => array('nofooter'=>true, 'noblocks'=>true, 'nonavbar'=>false, 'nocustommenu'=>true, 'nocourseheaderfooter'=>true),
     ),
     'report' => array(
         'file' => 'report.php',
index 7090f17..965902b 100644 (file)
@@ -19,6 +19,16 @@ if ($hascustommenu) {
     $bodyclasses[] = 'has-custom-menu';
 }
 
+$courseheader = $coursecontentheader = $coursecontentfooter = $coursefooter = '';
+if (empty($PAGE->layout_options['nocourseheaderfooter'])) {
+    $courseheader = $OUTPUT->course_header();
+    $coursecontentheader = $OUTPUT->course_content_header();
+    if (empty($PAGE->layout_options['nocoursefooter'])) {
+        $coursecontentfooter = $OUTPUT->course_content_footer();
+        $coursefooter = $OUTPUT->course_footer();
+    }
+}
+
 echo $OUTPUT->doctype() ?>
 <html <?php echo $OUTPUT->htmlattributes() ?>>
 <head>
@@ -36,7 +46,7 @@ echo $OUTPUT->doctype() ?>
 
 <div id="page">
 
-    <?php if ($hasheading || $hasnavbar) { ?>
+    <?php if ($hasheading || $hasnavbar || !empty($courseheader) || !empty($coursefooter)) { ?>
        <div id="wrapper" class="clearfix">
 
 <!-- START OF HEADER -->
@@ -57,6 +67,9 @@ echo $OUTPUT->doctype() ?>
                     <?php } ?>
                 </div>
             </div>
+            <?php if (!empty($courseheader)) { ?>
+                <div id="course-header"><?php echo $courseheader; ?></div>
+            <?php } ?>
             <?php if ($hasnavbar) { ?>
                 <div class="navbar">
                     <div class="wrapper clearfix">
@@ -81,7 +94,9 @@ echo $OUTPUT->doctype() ?>
                         <div id="region-main-wrap">
                             <div id="region-main">
                                 <div class="region-content">
+                                    <?php echo $coursecontentheader; ?>
                                     <?php echo $OUTPUT->main_content() ?>
+                                    <?php echo $coursecontentfooter; ?>
                                 </div>
                             </div>
                         </div>
@@ -101,7 +116,11 @@ echo $OUTPUT->doctype() ?>
 
 <!-- END OF CONTENT -->
 
-    <?php if ($hasheading || $hasnavbar) { ?>
+        <?php if (!empty($coursefooter)) { ?>
+            <div id="course-footer"><?php echo $coursefooter; ?></div>
+        <?php } ?>
+
+    <?php if ($hasheading || $hasnavbar || !empty($courseheader) || !empty($coursefooter)) { ?>
         </div>
     <?php } ?>
 
index a23d0d8..4a44880 100644 (file)
@@ -19,6 +19,16 @@ if ($hascustommenu) {
     $bodyclasses[] = 'has-custom-menu';
 }
 
+$courseheader = $coursecontentheader = $coursecontentfooter = $coursefooter = '';
+if (empty($PAGE->layout_options['nocourseheaderfooter'])) {
+    $courseheader = $OUTPUT->course_header();
+    $coursecontentheader = $OUTPUT->course_content_header();
+    if (empty($PAGE->layout_options['nocoursefooter'])) {
+        $coursecontentfooter = $OUTPUT->course_content_footer();
+        $coursefooter = $OUTPUT->course_footer();
+    }
+}
+
 echo $OUTPUT->doctype() ?>
 <html <?php echo $OUTPUT->htmlattributes() ?>>
 <head>
@@ -36,7 +46,7 @@ echo $OUTPUT->doctype() ?>
 
 <div id="page">
 
-    <?php if ($hasheading || $hasnavbar) { ?>
+    <?php if ($hasheading || $hasnavbar || !empty($courseheader) || !empty($coursefooter)) { ?>
        <div id="wrapper" class="clearfix">
 
 <!-- START OF HEADER -->
@@ -57,6 +67,9 @@ echo $OUTPUT->doctype() ?>
                     <?php } ?>
                 </div>
             </div>
+            <?php if (!empty($courseheader)) { ?>
+                <div id="course-header"><?php echo $courseheader; ?></div>
+            <?php } ?>
             <?php if ($hasnavbar) { ?>
                 <div class="navbar">
                     <div class="wrapper clearfix">
@@ -77,7 +90,9 @@ echo $OUTPUT->doctype() ?>
                 <div id="page-content" class="clearfix">
                     <div id="report-main-content">
                         <div class="region-content">
+                            <?php echo $coursecontentheader; ?>
                             <?php echo $OUTPUT->main_content() ?>
+                            <?php echo $coursecontentfooter; ?>
                         </div>
                     </div>
                     <?php if ($hassidepost) { ?>
@@ -92,11 +107,13 @@ echo $OUTPUT->doctype() ?>
                 </div>
             </div>
 
-        </div>
-
 <!-- END OF CONTENT -->
 
-    <?php if ($hasheading || $hasnavbar) { ?>
+        <?php if (!empty($coursefooter)) { ?>
+            <div id="course-footer"><?php echo $coursefooter; ?></div>
+        <?php } ?>
+
+    <?php if ($hasheading || $hasnavbar || !empty($courseheader) || !empty($coursefooter)) { ?>
         </div>
     <?php } ?>
 
index cd85c66..d75cfc5 100644 (file)
@@ -119,19 +119,19 @@ $THEME->layouts = array(
     'popup' => array(
         'file' => 'general.php',
         'regions' => array(),
-        'options' => array('nofooter'=>true, 'nonavbar'=>true, 'nocustommenu'=>true, 'nologininfo'=>true),
+        'options' => array('nofooter'=>true, 'nonavbar'=>true, 'nocustommenu'=>true, 'nologininfo'=>true, 'nocourseheaderfooter'=>true),
     ),
     // No blocks and minimal footer - used for legacy frame layouts only!
     'frametop' => array(
         'file' => 'general.php',
         'regions' => array(),
-        'options' => array('nofooter'=>true),
+        'options' => array('nofooter'=>true, 'nocoursefooter'=>true),
     ),
     // Embeded pages, like iframe/object embeded in moodleform - it needs as much space as possible
     'embedded' => array(
         'file' => 'embedded.php',
         'regions' => array(),
-        'options' => array('nofooter'=>true, 'nonavbar'=>true, 'nocustommenu'=>true),
+        'options' => array('nofooter'=>true, 'nonavbar'=>true, 'nocustommenu'=>true, 'nocourseheaderfooter'=>true),
     ),
     // Used during upgrade and install, and for the 'This site is undergoing maintenance' message.
     // This must not have any blocks, and it is good idea if it does not have links to
@@ -139,19 +139,19 @@ $THEME->layouts = array(
     'maintenance' => array(
         'file' => 'general.php',
         'regions' => array(),
-        'options' => array('noblocks'=>true, 'nofooter'=>true, 'nonavbar'=>true, 'nocustommenu'=>true),
+        'options' => array('noblocks'=>true, 'nofooter'=>true, 'nonavbar'=>true, 'nocustommenu'=>true, 'nocourseheaderfooter'=>true),
     ),
     // Should display the content and basic headers only.
     'print' => array(
         'file' => 'general.php',
         'regions' => array(),
-        'options' => array('noblocks'=>true, 'nofooter'=>true, 'nonavbar'=>false, 'nocustommenu'=>true),
+        'options' => array('noblocks'=>true, 'nofooter'=>true, 'nonavbar'=>false, 'nocustommenu'=>true, 'nocourseheaderfooter'=>true),
     ),
     // The pagelayout used when a redirection is occuring.
     'redirect' => array(
         'file' => 'embedded.php',
         'regions' => array(),
-        'options' => array('nofooter'=>true, 'nonavbar'=>true, 'nocustommenu'=>true),
+        'options' => array('nofooter'=>true, 'nonavbar'=>true, 'nocustommenu'=>true, 'nocourseheaderfooter'=>true),
     ),
     // The pagelayout used for reports.
     'report' => array(
@@ -164,7 +164,7 @@ $THEME->layouts = array(
         'file' => 'general.php',
         'regions' => array('side-pre', 'side-post'),
         'defaultregion' => 'side-pre',
-        'options' => array('nofooter'=>true, 'nonavbar'=>true, 'nocustommenu'=>true, 'nologinlinks'=>true),
+        'options' => array('nofooter'=>true, 'nonavbar'=>true, 'nocustommenu'=>true, 'nologinlinks'=>true, 'nocourseheaderfooter'=>true),
     ),
 );
 
index 9618515..1a0f9e4 100644 (file)
@@ -13,6 +13,16 @@ $showsidepost = ($hassidepost && !$PAGE->blocks->region_completely_docked('side-
 $custommenu = $OUTPUT->custom_menu();
 $hascustommenu = (empty($PAGE->layout_options['nocustommenu']) && !empty($custommenu));
 
+$courseheader = $coursecontentheader = $coursecontentfooter = $coursefooter = '';
+if (empty($PAGE->layout_options['nocourseheaderfooter'])) {
+    $courseheader = $OUTPUT->course_header();
+    $coursecontentheader = $OUTPUT->course_content_header();
+    if (empty($PAGE->layout_options['nocoursefooter'])) {
+        $coursecontentfooter = $OUTPUT->course_content_footer();
+        $coursefooter = $OUTPUT->course_footer();
+    }
+}
+
 $bodyclasses = array();
 if ($showsidepre && !$showsidepost) {
     if (!right_to_left()) {
@@ -43,7 +53,7 @@ echo $OUTPUT->doctype() ?>
 <body id="<?php p($PAGE->bodyid) ?>" class="<?php p($PAGE->bodyclasses.' '.join(' ', $bodyclasses)) ?>">
 <?php echo $OUTPUT->standard_top_of_body_html() ?>
 <div id="page">
-<?php if ($hasheading || $hasnavbar) { ?>
+<?php if ($hasheading || $hasnavbar || !empty($courseheader)) { ?>
     <div id="page-header">
         <?php if ($hasheading) { ?>
         <h1 class="headermain"><?php echo $PAGE->heading ?></h1>
@@ -56,6 +66,9 @@ echo $OUTPUT->doctype() ?>
             }
             echo $PAGE->headingmenu
         ?></div><?php } ?>
+        <?php if (!empty($courseheader)) { ?>
+            <div id="course-header"><?php echo $courseheader; ?></div>
+        <?php } ?>
         <?php if ($hascustommenu) { ?>
         <div id="custommenu"><?php echo $custommenu; ?></div>
         <?php } ?>
@@ -76,7 +89,9 @@ echo $OUTPUT->doctype() ?>
                 <div id="region-main-wrap">
                     <div id="region-main">
                         <div class="region-content">
+                            <?php echo $coursecontentheader; ?>
                             <?php echo $OUTPUT->main_content() ?>
+                            <?php echo $coursecontentfooter; ?>
                         </div>
                     </div>
                 </div>
@@ -113,6 +128,9 @@ echo $OUTPUT->doctype() ?>
     </div>
 
 <!-- START OF FOOTER -->
+    <?php if (!empty($coursefooter)) { ?>
+        <div id="course-footer"><?php echo $coursefooter; ?></div>
+    <?php } ?>
     <?php if ($hasfooter) { ?>
     <div id="page-footer" class="clearfix">
         <p class="helplink"><?php echo page_doc_link(get_string('moodledocslink')) ?></p>
index 4692917..5717fc3 100644 (file)
@@ -18,6 +18,15 @@ if (!$showsidepre) {
 if ($hascustommenu) {
     $bodyclasses[] = 'has_custom_menu';
 }
+$courseheader = $coursecontentheader = $coursecontentfooter = $coursefooter = '';
+if (empty($PAGE->layout_options['nocourseheaderfooter'])) {
+    $courseheader = $OUTPUT->course_header();
+    $coursecontentheader = $OUTPUT->course_content_header();
+    if (empty($PAGE->layout_options['nocoursefooter'])) {
+        $coursecontentfooter = $OUTPUT->course_content_footer();
+        $coursefooter = $OUTPUT->course_footer();
+    }
+}
 
 echo $OUTPUT->doctype() ?>
 <html <?php echo $OUTPUT->htmlattributes() ?>>
@@ -29,7 +38,7 @@ echo $OUTPUT->doctype() ?>
 <body id="<?php p($PAGE->bodyid) ?>" class="<?php p($PAGE->bodyclasses.' '.join(' ', $bodyclasses)) ?>">
 <?php echo $OUTPUT->standard_top_of_body_html() ?>
 <div id="page">
-<?php if ($hasheading || $hasnavbar) { ?>
+<?php if ($hasheading || $hasnavbar || !empty($courseheader)) { ?>
     <div id="page-header">
         <?php if ($hasheading) { ?>
         <h1 class="headermain"><?php echo $PAGE->heading ?></h1>
@@ -42,6 +51,9 @@ echo $OUTPUT->doctype() ?>
             }
             echo $PAGE->headingmenu
         ?></div><?php } ?>
+        <?php if (!empty($courseheader)) { ?>
+            <div id="course-header"><?php echo $courseheader; ?></div>
+        <?php } ?>
         <?php if ($hascustommenu) { ?>
         <div id="custommenu"><?php echo $custommenu; ?></div>
         <?php } ?>
@@ -58,7 +70,9 @@ echo $OUTPUT->doctype() ?>
     <div id="page-content" class="clearfix">
         <div id="report-main-content">
             <div class="region-content">
+                <?php echo $coursecontentheader; ?>
                 <?php echo $OUTPUT->main_content() ?>
+                <?php echo $coursecontentfooter; ?>
             </div>
         </div>
         <?php if ($hassidepre) { ?>
@@ -73,6 +87,9 @@ echo $OUTPUT->doctype() ?>
     </div>
 
 <!-- START OF FOOTER -->
+    <?php if (!empty($coursefooter)) { ?>
+        <div id="course-footer"><?php echo $coursefooter; ?></div>
+    <?php } ?>
     <?php if ($hasfooter) { ?>
     <div id="page-footer" class="clearfix">
         <p class="helplink"><?php echo page_doc_link(get_string('moodledocslink')) ?></p>
@@ -87,4 +104,4 @@ echo $OUTPUT->doctype() ?>
 </div>
 <?php echo $OUTPUT->standard_end_of_body_html() ?>
 </body>
-</html>
\ No newline at end of file
+</html>
index 9a54dfc..731b6c3 100644 (file)
@@ -154,6 +154,7 @@ a.skip:active {position: static;display: block;}
  */
 .headermain {float:left;margin:15px;font-size:2.3em;}
 .headermenu {float:right;margin:10px;font-size:0.8em;text-align:right;}
+#course-header {clear:both;}
 
 /**
  * Navbar
@@ -189,6 +190,8 @@ a.skip:active {position: static;display: block;}
 .performanceinfo .cachesused .cache-store-stats {text-indent: 1em;}
 .performanceinfo .cachesused .cache-total-stats {font-weight:bold;margin-top:0.3em;}
 
+#course-footer {clear:both;}
+
 /**
  * Tabs
  */
index 2084061..1ee5987 100644 (file)
@@ -142,29 +142,29 @@ $THEME->layouts = array(
     'popup' => array(
         'file' => 'general.php',
         'regions' => array(),
-        'options' => array('nofooter'=>true, 'noblocks'=>true, 'nonavbar'=>true, 'nocustommenu'=>true),
+        'options' => array('nofooter'=>true, 'noblocks'=>true, 'nonavbar'=>true, 'nocustommenu'=>true, 'nocourseheaderfooter'=>true),
     ),
     'frametop' => array(
         'file' => 'general.php',
         'regions' => array(),
-        'options' => array('nofooter'=>true),
+        'options' => array('nofooter'=>true, 'nocoursefooter'=>true),
     ),
     'maintenance' => array(
         'file' => 'general.php',
         'regions' => array(),
-        'options' => array('nofooter'=>true, 'nonavbar'=>true, 'nocustommenu'=>true),
+        'options' => array('nofooter'=>true, 'nonavbar'=>true, 'nocustommenu'=>true, 'nocourseheaderfooter'=>true),
     ),
     'embedded' => array(
         'theme' => 'canvas',
         'file' => 'embedded.php',
         'regions' => array(),
-        'options' => array('nofooter'=>true, 'nonavbar'=>true, 'nocustommenu'=>true),
+        'options' => array('nofooter'=>true, 'nonavbar'=>true, 'nocustommenu'=>true, 'nocourseheaderfooter'=>true),
     ),
     // Should display the content and basic headers only.
     'print' => array(
         'file' => 'general.php',
         'regions' => array(),
-        'options' => array('nofooter'=>true, 'noblocks'=>true, 'nonavbar'=>false, 'nocustommenu'=>true),
+        'options' => array('nofooter'=>true, 'noblocks'=>true, 'nonavbar'=>false, 'nocustommenu'=>true, 'nocourseheaderfooter'=>true),
     ),
     'report' => array(
         'file' => 'report.php',
index 8718236..4897f21 100644 (file)
@@ -20,6 +20,16 @@ if ($hascustommenu) {
     $bodyclasses[] = 'has-custom-menu';
 }
 
+$courseheader = $coursecontentheader = $coursecontentfooter = $coursefooter = '';
+if (empty($PAGE->layout_options['nocourseheaderfooter'])) {
+    $courseheader = $OUTPUT->course_header();
+    $coursecontentheader = $OUTPUT->course_content_header();
+    if (empty($PAGE->layout_options['nocoursefooter'])) {
+        $coursecontentfooter = $OUTPUT->course_content_footer();
+        $coursefooter = $OUTPUT->course_footer();
+    }
+}
+
 echo $OUTPUT->doctype() ?>
 <html <?php echo $OUTPUT->htmlattributes() ?>>
 <head>
@@ -33,7 +43,7 @@ echo $OUTPUT->doctype() ?>
 
 <div id="page">
 
-    <?php if ($hasheading || $hasnavbar) { ?>
+    <?php if ($hasheading || $hasnavbar || !empty($courseheader) || !empty($coursefooter)) { ?>
            <div id="wrapper" class="clearfix">
 
 <!-- START OF HEADER -->
@@ -56,7 +66,9 @@ echo $OUTPUT->doctype() ?>
                     <?php } ?>
                 </div>
             </div>
-
+            <?php if (!empty($courseheader)) { ?>
+                <div id="course-header"><?php echo $courseheader; ?></div>
+            <?php } ?>
             <?php if ($hasnavbar) { ?>
                 <div class="navbar">
                     <div class="wrapper clearfix">
@@ -81,7 +93,9 @@ echo $OUTPUT->doctype() ?>
                         <div id="region-main-wrap">
                             <div id="region-main">
                                 <div class="region-content">
+                                    <?php echo $coursecontentheader; ?>
                                     <?php echo $OUTPUT->main_content() ?>
+                                    <?php echo $coursecontentfooter; ?>
                                 </div>
                             </div>
                         </div>
@@ -101,7 +115,11 @@ echo $OUTPUT->doctype() ?>
 
 <!-- END OF CONTENT -->
 
-    <?php if ($hasheading || $hasnavbar) { ?>
+        <?php if (!empty($coursefooter)) { ?>
+            <div id="course-footer"><?php echo $coursefooter; ?></div>
+        <?php } ?>
+
+    <?php if ($hasheading || $hasnavbar || !empty($courseheader) || !empty($coursefooter)) { ?>
     <div class="myclear"></div>
         </div>
     <?php } ?>
index a6df3b1..a4177a6 100644 (file)
@@ -20,6 +20,16 @@ if ($hascustommenu) {
     $bodyclasses[] = 'has-custom-menu';
 }
 
+$courseheader = $coursecontentheader = $coursecontentfooter = $coursefooter = '';
+if (empty($PAGE->layout_options['nocourseheaderfooter'])) {
+    $courseheader = $OUTPUT->course_header();
+    $coursecontentheader = $OUTPUT->course_content_header();
+    if (empty($PAGE->layout_options['nocoursefooter'])) {
+        $coursecontentfooter = $OUTPUT->course_content_footer();
+        $coursefooter = $OUTPUT->course_footer();
+    }
+}
+
 echo $OUTPUT->doctype() ?>
 <html <?php echo $OUTPUT->htmlattributes() ?>>
 <head>
@@ -33,7 +43,7 @@ echo $OUTPUT->doctype() ?>
 
 <div id="page">
 
-    <?php if ($hasheading || $hasnavbar) { ?>
+    <?php if ($hasheading || $hasnavbar || !empty($courseheader) || !empty($coursefooter)) { ?>
            <div id="wrapper" class="clearfix">
 
 <!-- START OF HEADER -->
@@ -56,6 +66,9 @@ echo $OUTPUT->doctype() ?>
                     <?php } ?>
                 </div>
             </div>
+            <?php if (!empty($courseheader)) { ?>
+                <div id="course-header"><?php echo $courseheader; ?></div>
+            <?php } ?>
 
             <?php if ($hasnavbar) { ?>
                 <div class="navbar">
@@ -77,7 +90,9 @@ echo $OUTPUT->doctype() ?>
             <div id="page-content" class="clearfix">
                 <div id="report-main-content">
                     <div class="region-content">
+                        <?php echo $coursecontentheader; ?>
                         <?php echo $OUTPUT->main_content() ?>
+                        <?php echo $coursecontentfooter; ?>
                     </div>
                 </div>
                 <?php if ($hassidepost) { ?>
@@ -94,7 +109,11 @@ echo $OUTPUT->doctype() ?>
 
 <!-- END OF CONTENT -->
 
-    <?php if ($hasheading || $hasnavbar) { ?>
+        <?php if (!empty($coursefooter)) { ?>
+            <div id="course-footer"><?php echo $coursefooter; ?></div>
+        <?php } ?>
+
+    <?php if ($hasheading || $hasnavbar || !empty($courseheader) || !empty($coursefooter)) { ?>
     <div class="myclear"></div>
         </div>
     <?php } ?>
index 8c91ce3..7e05b41 100644 (file)
@@ -120,29 +120,29 @@ $THEME->layouts = array(
     'popup' => array(
         'file' => 'general.php',
         'regions' => array(),
-        'options' => array('nofooter'=>true),
+        'options' => array('nofooter'=>true, 'nocourseheaderfooter'=>true),
     ),
     'frametop' => array(
         'file' => 'general.php',
         'regions' => array(),
-        'options' => array('nofooter'=>true),
+        'options' => array('nofooter'=>true, 'nocoursefooter'=>true),
     ),
     'maintenance' => array(
         'theme' => 'boxxie',
         'file' => 'general.php',
         'regions' => array(),
-        'options' => array('nofooter'=>true, 'nonavbar'=>true, 'noblocks'=>false, 'nocustommenu'=>true),
+        'options' => array('nofooter'=>true, 'nonavbar'=>true, 'noblocks'=>false, 'nocustommenu'=>true, 'nocourseheaderfooter'=>true),
     ),
     'embedded' => array(
         'file' => 'embedded.php',
         'regions' => array(),
-        'options' => array('nofooter'=>true, 'nonavbar'=>true, 'noblocks'=>false, 'nocustommenu'=>true),
+        'options' => array('nofooter'=>true, 'nonavbar'=>true, 'noblocks'=>false, 'nocustommenu'=>true, 'nocourseheaderfooter'=>true),
     ),
     // Should display the content and basic headers only.
     'print' => array(
         'file' => 'general.php',
         'regions' => array(),
-        'options' => array('nofooter'=>true, 'nonavbar'=>true, 'noblocks'=>false, 'nocustommenu'=>true),
+        'options' => array('nofooter'=>true, 'nonavbar'=>true, 'noblocks'=>false, 'nocustommenu'=>true, 'nocourseheaderfooter'=>true),
     ),
 
 );
index 7d63694..3a48cd5 100644 (file)
@@ -22,6 +22,16 @@ if ($hascustommenu) {
     $bodyclasses[] = 'has-custom-menu';
 }
 
+$courseheader = $coursecontentheader = $coursecontentfooter = $coursefooter = '';
+if (empty($PAGE->layout_options['nocourseheaderfooter'])) {
+    $courseheader = $OUTPUT->course_header();
+    $coursecontentheader = $OUTPUT->course_content_header();
+    if (empty($PAGE->layout_options['nocoursefooter'])) {
+        $coursecontentfooter = $OUTPUT->course_content_footer();
+        $coursefooter = $OUTPUT->course_footer();
+    }
+}
+
 echo $OUTPUT->doctype() ?>
 <html <?php echo $OUTPUT->htmlattributes() ?>>
 <head>
@@ -34,7 +44,7 @@ echo $OUTPUT->doctype() ?>
 
 <?php echo $OUTPUT->standard_top_of_body_html() ?>
 
-<?php if ($hasheading || $hasnavbar) { ?>
+<?php if ($hasheading || $hasnavbar || !empty($courseheader) || !empty($coursefooter)) { ?>
 
 <div id="page-wrapper">
   <div id="page" class="clearfix">
@@ -57,6 +67,10 @@ echo $OUTPUT->doctype() ?>
 
  <div class="myclear"></div>
 
+      <?php if (!empty($courseheader)) { ?>
+        <div id="course-header"><?php echo $courseheader; ?></div>
+      <?php } ?>
+
       <?php if ($hasnavbar) { ?>
         <div class="navbar clearfix">
           <div class="breadcrumb"><?php echo $OUTPUT->navbar(); ?></div>
@@ -73,7 +87,9 @@ echo $OUTPUT->doctype() ?>
                 <div id="region-main-wrap">
                     <div id="region-main">
                         <div class="region-content">
+                            <?php echo $coursecontentheader; ?>
                             <?php echo $OUTPUT->main_content() ?>
+                            <?php echo $coursecontentfooter; ?>
                         </div>
                     </div>
                 </div>
@@ -99,6 +115,9 @@ echo $OUTPUT->doctype() ?>
     </div>
 
     <div class="myclear"></div>
+    <?php if (!empty($coursefooter)) { ?>
+        <div id="course-footer"><?php echo $coursefooter; ?></div>
+    <?php } ?>
 <?php if ($hasfooter) { ?>
 
     <div id="page-footer" class="clearfix">
@@ -108,7 +127,7 @@ echo $OUTPUT->doctype() ?>
 
 <?php }
 
-if ($hasheading || $hasnavbar) { ?>
+if ($hasheading || $hasnavbar || !empty($courseheader) || !empty($coursefooter)) { ?>
    <div class="myclear"></div>
   </div> <!-- END #page -->
 
index 3729356..f6db986 100644 (file)
@@ -144,23 +144,23 @@ $THEME->layouts = array(
     'popup' => array(
         'file' => 'general.php',
         'regions' => array(),
-        'options' => array('nofooter'=>true, 'noblocks'=>true, 'nonavbar'=>true),
+        'options' => array('nofooter'=>true, 'noblocks'=>true, 'nonavbar'=>true, 'nocourseheaderfooter'=>true),
     ),
     'frametop' => array(
         'file' => 'general.php',
         'regions' => array(),
-        'options' => array('nofooter'=>true),
+        'options' => array('nofooter'=>true, 'nocoursefooter'=>true),
     ),
     'maintenance' => array(
         'file' => 'general.php',
         'regions' => array(),
-        'options' => array('nofooter'=>true, 'nonavbar'=>true),
+        'options' => array('nofooter'=>true, 'nonavbar'=>true, 'nocourseheaderfooter'=>true),
     ),
     'embedded' => array(
         'theme' => 'canvas',
         'file' => 'embedded.php',
         'regions' => array(),
-        'options' => array('nofooter'=>true, 'nonavbar'=>true),
+        'options' => array('nofooter'=>true, 'nonavbar'=>true, 'nocourseheaderfooter'=>true),
     ),
     'report' => array(
         'file' => 'general.php',
index cf460fe..c4d34cc 100644 (file)
@@ -18,6 +18,16 @@ if ($showsidepost) {
     $bodyclasses[] = 'content-only';
 }
 
+$courseheader = $coursecontentheader = $coursecontentfooter = $coursefooter = '';
+if (empty($PAGE->layout_options['nocourseheaderfooter'])) {
+    $courseheader = $OUTPUT->course_header();
+    $coursecontentheader = $OUTPUT->course_content_header();
+    if (empty($PAGE->layout_options['nocoursefooter'])) {
+        $coursecontentfooter = $OUTPUT->course_content_footer();
+        $coursefooter = $OUTPUT->course_footer();
+    }
+}
+
 echo $OUTPUT->doctype() ?>
 <html <?php echo $OUTPUT->htmlattributes() ?>>
 <head>
@@ -81,6 +91,9 @@ echo $OUTPUT->doctype() ?>
        <div id="page">
                <div id="wrapper" class="clearfix">
 
+          <?php if (!empty($courseheader)) { ?>
+            <div id="course-header"><?php echo $courseheader; ?></div>
+          <?php } ?>
 <!-- START OF CONTENT -->
 
                        <div id="page-content-wrapper" class="wrapper clearfix">
@@ -100,7 +113,9 @@ echo $OUTPUT->doctype() ?>
                                                                        </div>
                                                                        <?php } ?>
 
+                                        <?php echo $coursecontentheader; ?>
                                        <?php echo $OUTPUT->main_content() ?>
+                                        <?php echo $coursecontentfooter; ?>
 
                                                </div>
                                        </div>
@@ -128,6 +143,9 @@ echo $OUTPUT->doctype() ?>
                </div>
 
 <!-- END OF CONTENT -->
+            <?php if (!empty($coursefooter)) { ?>
+                <div id="course-footer"><?php echo $coursefooter; ?></div>
+            <?php } ?>
 
 
                </div>
index 4f4b7e8..9dfd737 100644 (file)
@@ -133,34 +133,34 @@ $THEME->layouts = array(
     'popup' => array(
         'file' => 'general.php',
         'regions' => array(),
-        'options' => array('nofooter'=>true, 'noblocks'=>true, 'nonavbar'=>true),
+        'options' => array('nofooter'=>true, 'noblocks'=>true, 'nonavbar'=>true, 'nocourseheaderfooter'=>true),
     ),
     'frametop' => array(
         'file' => 'general.php',
         'regions' => array(),
-        'options' => array('nofooter'=>true),
+        'options' => array('nofooter'=>true, 'nocoursefooter'=>true),
     ),
     'maintenance' => array(
         'file' => 'general.php',
         'regions' => array(),
-        'options' => array('nofooter'=>true, 'nonavbar'=>true),
+        'options' => array('nofooter'=>true, 'nonavbar'=>true, 'nocourseheaderfooter'=>true),
     ),
     'embedded' => array(
         'file' => 'embedded.php',
         'regions' => array(),
-        'options' => array('nofooter'=>true, 'nonavbar'=>true),
+        'options' => array('nofooter'=>true, 'nonavbar'=>true, 'nocourseheaderfooter'=>true),
     ),
     // Should display the content and basic headers only.
     'print' => array(
         'file' => 'general.php',
         'regions' => array(),
-        'options' => array('nofooter'=>true, 'nonavbar'=>false, 'noblocks'=>true),
+        'options' => array('nofooter'=>true, 'nonavbar'=>false, 'noblocks'=>true, 'nocourseheaderfooter'=>true),
     ),
     // The pagelayout used when a redirection is occuring.
     'redirect' => array(
         'file' => 'embedded.php',
         'regions' => array(),
-        'options' => array('nofooter'=>true, 'nonavbar'=>true),
+        'options' => array('nofooter'=>true, 'nonavbar'=>true, 'nocourseheaderfooter'=>true),
     ),
     'report' => array(
         'file' => 'report.php',
@@ -172,7 +172,7 @@ $THEME->layouts = array(
         'file' => 'general.php',
         'regions' => array('side-pre', 'side-post'),
         'defaultregion' => 'side-pre',
-        'options' => array('nofooter'=>true, 'nonavbar'=>true, 'nocustommenu'=>true, 'nologinlinks'=>true),
+        'options' => array('nofooter'=>true, 'nonavbar'=>true, 'nocustommenu'=>true, 'nologinlinks'=>true, 'nocourseheaderfooter'=>true),
     ),
 );
 
index 09261f0..37f5ef3 100644 (file)
@@ -25,6 +25,16 @@ if ($hascustommenu) {
     $bodyclasses[] = 'has_custom_menu';
 }
 
+$courseheader = $coursecontentheader = $coursecontentfooter = $coursefooter = '';
+if (empty($PAGE->layout_options['nocourseheaderfooter'])) {
+    $courseheader = $OUTPUT->course_header();
+    $coursecontentheader = $OUTPUT->course_content_header();
+    if (empty($PAGE->layout_options['nocoursefooter'])) {
+        $coursecontentfooter = $OUTPUT->course_content_footer();
+        $coursefooter = $OUTPUT->course_footer();
+    }
+}
+
 echo $OUTPUT->doctype() ?>
 <html <?php echo $OUTPUT->htmlattributes() ?>>
 <head>
@@ -39,12 +49,13 @@ echo $OUTPUT->doctype() ?>
 
 <!-- START OF HEADER -->
 
-    <?php if ($hasheading || $hasnavbar) { ?>
-    <div id="wrapper" class="clearfix">
+    <?php if ($hasheading || $hasnavbar || !empty($courseheader) || !empty($coursefooter)) { ?>
+        <div id="wrapper" class="clearfix">
+    <?php } ?>
 
+        <?php if ($hasheading) { ?>
         <div id="page-header">
             <div id="page-header-wrapper" class="clearfix">
-                   <?php if ($hasheading) { ?>
                 <h1 class="headermain"><?php echo $PAGE->heading ?></h1>
                 <div class="headermenu">
                     <?php
@@ -55,14 +66,18 @@ echo $OUTPUT->doctype() ?>
                            echo $PAGE->headingmenu;
                     ?>
                 </div>
-                <?php } ?>
             </div>
         </div>
+        <?php } ?>
 
         <?php if ($hascustommenu) { ?>
             <div id="custommenu"><?php echo $custommenu; ?></div>
         <?php } ?>
 
+        <?php if (!empty($courseheader)) { ?>
+            <div id="course-header"><?php echo $courseheader; ?></div>
+        <?php } ?>
+
         <?php if ($hasnavbar) { ?>
             <div class="navbar clearfix">
                 <div class="breadcrumb"><?php echo $OUTPUT->navbar(); ?></div>
@@ -70,8 +85,6 @@ echo $OUTPUT->doctype() ?>
             </div>
         <?php } ?>
 
-<?php } ?>
-
 <!-- END OF HEADER -->
 
 <!-- START OF CONTENT -->
@@ -84,7 +97,9 @@ echo $OUTPUT->doctype() ?>
                         <div id="region-main-wrap">
                             <div id="region-main">
                                 <div class="region-content">
+                                    <?php echo $coursecontentheader; ?>
                                     <?php echo $OUTPUT->main_content() ?>
+                                    <?php echo $coursecontentfooter; ?>
                                 </div>
                             </div>
                         </div>
@@ -114,6 +129,9 @@ echo $OUTPUT->doctype() ?>
 
 <!-- START OF FOOTER -->
 
+        <?php if (!empty($coursefooter)) { ?>
+            <div id="course-footer"><?php echo $coursefooter; ?></div>
+        <?php } ?>
         <?php if ($hasfooter) { ?>
         <div id="page-footer" class="clearfix">
             <p class="helplink"><?php echo page_doc_link(get_string('moodledocslink')) ?></p>
@@ -125,7 +143,7 @@ echo $OUTPUT->doctype() ?>
         </div>
         <?php } ?>
 
-    <?php if ($hasheading || $hasnavbar) { ?>
+    <?php if ($hasheading || $hasnavbar || !empty($courseheader) || !empty($coursefooter)) { ?>
         </div> <!-- END #wrapper -->
     <?php } ?>
 
index 9141174..5de787e 100644 (file)
@@ -21,6 +21,16 @@ if ($hascustommenu) {
     $bodyclasses[] = 'has_custom_menu';
 }
 
+$courseheader = $coursecontentheader = $coursecontentfooter = $coursefooter = '';
+if (empty($PAGE->layout_options['nocourseheaderfooter'])) {
+    $courseheader = $OUTPUT->course_header();
+    $coursecontentheader = $OUTPUT->course_content_header();
+    if (empty($PAGE->layout_options['nocoursefooter'])) {
+        $coursecontentfooter = $OUTPUT->course_content_footer();
+        $coursefooter = $OUTPUT->course_footer();
+    }
+}
+
 echo $OUTPUT->doctype() ?>
 <html <?php echo $OUTPUT->htmlattributes() ?>>
 <head>
@@ -35,12 +45,13 @@ echo $OUTPUT->doctype() ?>
 
 <!-- START OF HEADER -->
 
-    <?php if ($hasheading || $hasnavbar) { ?>
+<?php if ($hasheading || $hasnavbar || !empty($courseheader) || !empty($coursefooter)) { ?>
     <div id="wrapper" class="clearfix">
+<?php } ?>
 
+        <?php if ($hasheading) { ?>
         <div id="page-header">
             <div id="page-header-wrapper" class="clearfix">
-                   <?php if ($hasheading) { ?>
                 <h1 class="headermain"><?php echo $PAGE->heading ?></h1>
                 <div class="headermenu">
                     <?php
@@ -51,14 +62,18 @@ echo $OUTPUT->doctype() ?>
                            echo $PAGE->headingmenu;
                     ?>
                 </div>
-                <?php } ?>
             </div>
         </div>
+        <?php } ?>
 
         <?php if ($hascustommenu) { ?>
             <div id="custommenu"><?php echo $custommenu; ?></div>
         <?php } ?>
 
+        <?php if (!empty($courseheader)) { ?>
+            <div id="course-header"><?php echo $courseheader; ?></div>
+        <?php } ?>
+
         <?php if ($hasnavbar) { ?>
             <div class="navbar clearfix">
                 <div class="breadcrumb"><?php echo $OUTPUT->navbar(); ?></div>
@@ -66,8 +81,6 @@ echo $OUTPUT->doctype() ?>
             </div>
         <?php } ?>
 
-<?php } ?>
-
 <!-- END OF HEADER -->
 
 <!-- START OF CONTENT -->
@@ -77,7 +90,9 @@ echo $OUTPUT->doctype() ?>
                 <div id="page-content">
                     <div id="report-main-content">
                         <div class="region-content">
+                            <?php echo $coursecontentheader; ?>
                             <?php echo $OUTPUT->main_content() ?>
+                            <?php echo $coursecontentfooter; ?>
                         </div>
                     </div>
                     <?php if ($hassidepre) { ?>
@@ -91,12 +106,14 @@ echo $OUTPUT->doctype() ?>
                     <?php } ?>
                 </div>
             </div>
-        </div>
 
 <!-- END OF CONTENT -->
 
 <!-- START OF FOOTER -->
 
+        <?php if (!empty($coursefooter)) { ?>
+            <div id="course-footer"><?php echo $coursefooter; ?></div>
+        <?php } ?>
         <?php if ($hasfooter) { ?>
         <div id="page-footer" class="clearfix">
             <p class="helplink"><?php echo page_doc_link(get_string('moodledocslink')) ?></p>
@@ -108,7 +125,7 @@ echo $OUTPUT->doctype() ?>
         </div>
         <?php } ?>
 
-    <?php if ($hasheading || $hasnavbar) { ?>
+    <?php if ($hasheading || $hasnavbar || !empty($courseheader) || !empty($coursefooter)) { ?>
         </div> <!-- END #wrapper -->
     <?php } ?>
 
index 7e24f07..7da1eda 100644 (file)
@@ -292,6 +292,7 @@ table#tag-management-list {margin: 10px auto;width: 80%;}
 .navbar .navbutton {margin:5px;}
 .mform fieldset {border-color:#DDD;}
 
+#course-footer, #course-header {margin:0px 10px;}
 /**
  * Tabs
  */
index 4158d23..da07064 100644 (file)
@@ -3,6 +3,9 @@ information provided here is intended especially for theme designer.
 
 === 2.4 ===
 
+required changes:
+* output course and course content header/footer that may be returned by course format (see MDL-36048)
+
 optional changes:
 * new optional boolean parameter $withlinks for public function login_info() in lib/outputrenderers.php (MDL-31365)
 * new layout option "nologinlinks" and new page layout "secure" e.g. for safebrowser and securewindow (MDL-31365)