Merge branch '41663-28' of git://github.com/samhemelryk/moodle

This commit is contained in:
Marina Glancy 2014-07-02 11:52:12 +08:00
commit 41dcab66d1
6 changed files with 67 additions and 4 deletions

View File

@ -225,13 +225,32 @@ class plugin_renderer_base extends renderer_base {
$classname = get_class($widget);
// Strip namespaces.
$classname = preg_replace('/^.*\\\/', '', $classname);
// Keep a copy at this point, we may need to look for a deprecated method.
$deprecatedmethod = 'render_'.$classname;
// Remove _renderable suffixes
$classname = preg_replace('/_renderable/', '', $classname);
$classname = preg_replace('/_renderable$/', '', $classname);
$rendermethod = 'render_'.$classname;
if (method_exists($this, $rendermethod)) {
return $this->$rendermethod($widget);
}
if ($rendermethod !== $deprecatedmethod && method_exists($this, $deprecatedmethod)) {
// This is exactly where we don't want to be.
// If you have arrived here you have a renderable component within your plugin that has the name
// blah_renderable, and you have a render method render_blah_renderable on your plugin.
// In 2.8 we revamped output, as part of this change we changed slightly how renderables got rendered
// and the _renderable suffix now gets removed when looking for a render method.
// You need to change your renderers render_blah_renderable to render_blah.
// Until you do this it will not be possible for a theme to override the renderer to override your method.
// Please do it ASAP.
static $debugged = array();
if (!isset($debugged[$deprecatedmethod])) {
debugging(sprintf('Deprecated call. Please rename your renderables render method from %s to %s.',
$deprecatedmethod, $rendermethod), DEBUG_DEVELOPER);
$debugged[$deprecatedmethod] = true;
}
return $this->$deprecatedmethod($widget);
}
// pass to core renderer if method not found here
return $this->output->render($widget);
}

View File

@ -4,6 +4,9 @@ information provided here is intended especially for developers.
=== 2.8 ===
* lib/excelllib.class.php has been updated. The class MoodleExcelWorkbook will now only produce excel 2007 files.
* renderers: We now remove the suffix _renderable when looking for a render method for a renderable.
If you have a renderable class named like "blah_renderable" and have a method on a renderer named "render_blah_renderable"
you will need to change the name of your render method to "render_blah" instead, as renderable at the end is no longer accepted.
=== 2.6.4 / 2.7.1 ===
* setnew_password_and_mail() and update_internal_user_password() will trigger

View File

@ -32,12 +32,24 @@ defined('MOODLE_INTERNAL') || die;
*/
class report_log_renderer extends plugin_renderer_base {
/**
* This method should never be manually called, it should only be called by process.
*
* @deprecated since 2.8, to be removed in 2.9
* @param report_log_renderable $reportlog
* @return string
*/
public function render_report_log_renderable(report_log_renderable $reportlog) {
debugging('Do not call this method. Please call $renderer->render($reportlog) instead.', DEBUG_DEVELOPER);
return $this->render($reportlog);
}
/**
* Render log report page.
*
* @param report_log_renderable $reportlog object of report_log.
*/
public function render_report_log_renderable(report_log_renderable $reportlog) {
protected function render_report_log(report_log_renderable $reportlog) {
if (empty($reportlog->selectedlogreader)) {
echo $this->output->notification(get_string('nologreaderenabled', 'report_log'), 'notifyproblem');
return;

View File

@ -33,6 +33,19 @@ defined('MOODLE_INTERNAL') || die;
*/
class report_loglive_renderer extends plugin_renderer_base {
/**
* This method should never be manually called, it should only be called by process.
* Please call the render method instead.
*
* @deprecated since 2.8, to be removed in 2.9
* @param report_loglive_renderable $reportloglive
* @return string
*/
public function render_report_loglive_renderable(report_loglive_renderable $reportloglive) {
debugging('Do not call this method. Please call $renderer->render($reportloglive) instead.', DEBUG_DEVELOPER);
return $this->render($reportloglive);
}
/**
* Return html to render the loglive page..
*
@ -40,7 +53,7 @@ class report_loglive_renderer extends plugin_renderer_base {
*
* @return string html used to render the page;
*/
public function render_report_loglive_renderable(report_loglive_renderable $reportloglive) {
protected function render_report_loglive(report_loglive_renderable $reportloglive) {
if (empty($reportloglive->selectedlogreader)) {
return $this->output->notification(get_string('nologreaderenabled', 'report_loglive'), 'notifyproblem');
}

View File

@ -31,6 +31,19 @@
*/
class report_loglive_renderer_ajax extends plugin_renderer_base {
/**
* This method should never be manually called, it should only be called by process.
* Please call the render method instead.
*
* @deprecated since 2.8, to be removed in 2.9
* @param report_loglive_renderable $reportloglive
* @return string
*/
public function render_report_loglive_renderable(report_loglive_renderable $reportloglive) {
debugging('Do not call this method. Please call $renderer->render($reportloglive) instead.', DEBUG_DEVELOPER);
return $this->render($reportloglive);
}
/**
* Render logs for ajax.
*
@ -38,7 +51,7 @@ class report_loglive_renderer_ajax extends plugin_renderer_base {
*
* @return string html to be displayed to user.
*/
public function render_report_loglive_renderable(report_loglive_renderable $reportloglive) {
protected function render_report_loglive(report_loglive_renderable $reportloglive) {
if (empty($reportloglive->selectedlogreader)) {
return null;
}

View File

@ -5,6 +5,9 @@ information provided here is intended especially for theme designer.
* All mod_assign CSS selectors have been qualified with ".path-mod-assign". This means any custom CSS
rules for mod_assign in a theme may need to be updated.
* The following render methods were renamed, if you have overridden any of these you will need to update your renderer:
- report_log_renderer::render_report_log_renderable => report_log_renderer::render_report_log
- report_loglive_renderer::render_report_loglive_renderable => report_loglive_renderer::render_report_log
=== 2.7 ===