Skip to content
  • tjhunt's avatar
    themes: MDL-19077 change how the theme is initialised and CSS is served. · b7009474
    tjhunt authored
    This is part of http://docs.moodle.org/en/Development:Theme_engines_for_Moodle%3F
    
    $THEME is now initialised at the same time as $OUTPUT. Old functions like
    theme_setup are deprecated in favour of methods on $PAGE. There is a new
    theme_config class in outputlib.php that deals with loading the theme config.php file.
    
    CSS used to be served by themes styles.php files calling a function in weblib.php.
    Now it works by each theme's styles.php file doing
    $themename = basename(dirname(__FILE__));
    require_once(dirname(__FILE__) . '/../../theme/styles.php');
    which is less code to be copied into each theme. (Old-style styles.php files still
    work thanks to some code in deprecatedlib.php.)
    
    Admin UI for choosing a theme cleaned up.
    
    A couple of theme-specific hard-coded hacks like $THEME->cssconstants and
    $THEME->CSSEdit have been replaced by a more generic $THEME->customcssoutputfunction
    hook. See examples at the end of outputlib.php
    
    Also:
    * Fix setting the theme in the URL, which seems to have been broken since 1.9.
    * Fix up errors on a few pages caused by the new initialisation order.
    * MDL-19097 moodle_page::set_course should not set $COURSE unless it is $PAGE.
    * httpsrequired() from moodlelib.php moved to $PAGE->https_required().
    * Move has_started() method to the renderer base class.
    * Further fixes to display of early errors.
    * Remove print_header/footer_old from weblib. I did not mean to commit them before.
    b7009474