Development:Output renderers: Difference between revisions
Line 33: | Line 33: | ||
==core_renderer== | ==core_renderer== | ||
For example user avatar rendering involves following methods and classes: | |||
{code php} | {code php} | ||
class core_renderer extends renderer_base { | class core_renderer extends renderer_base { |
Revision as of 18:08, 7 January 2010
Note: This article is a work in progress. Please use the page comments or an appropriate moodle.org forum for any recommendations/suggestions for improvement.
Template:Infobox Project
Template:Moodle 2.0
Goals
- stable API
- easy to use
- easy to customise via themes
Renderers
Output renderer is a class with collection of methods that handle rendering of visual aspects of Moodle pages, emails, html export, etc. In 1.9 general output related functions were located in weblib.php and modules stored rendering code in lib.php, locallib.php, view.php, etc.
Output renderer instances are obtained through moodle_page::get_renderer($component, $subtype = null, $target = null) method. Current core_renderer is available through the global $OUTPUT variable, please note this global should not be used in low level APIs and scripts like cron.
Renderer targets
renderer_base
Abstract class every other renderer must extend. Renderer base implements basic methods and support for renderer dispatching. The most important method is: {code} public function render(widget $widget) {} {code}
This method uses $widget class to find fine correct protected rendering method.
core_renderer
For example user avatar rendering involves following methods and classes: {code php} class core_renderer extends renderer_base {
public function render(widget $widget) { // calls $this->render_user_image($widget) when parameter with class user_image submitted } protected function (user_image $user_image) { // returns html markup for user avatar } public function user_image($userrecord, $courseid, $lin) { // helper method that constructs $user_image widget and calls $this->render }
} {code}