From 2d0e682d8bd71ec954c4b765a2b2a76c3b59f6fa Mon Sep 17 00:00:00 2001 From: =?utf8?q?Martin=20V=C3=B6geli?= Date: Mon, 3 Sep 2012 07:25:30 +0200 Subject: [PATCH] MDL-31365 Fix for safebrowser and securewindow --- lib/outputrenderers.php | 45 +++++++++++++++++------ mod/quiz/accessrule/safebrowser/rule.php | 3 ++ mod/quiz/accessrule/securewindow/rule.php | 2 +- theme/base/config.php | 8 +++- theme/upgrade.txt | 7 +++- 5 files changed, 50 insertions(+), 15 deletions(-) diff --git a/lib/outputrenderers.php b/lib/outputrenderers.php index 17cd590268a..28b8490a571 100644 --- a/lib/outputrenderers.php +++ b/lib/outputrenderers.php @@ -508,23 +508,32 @@ class core_renderer extends renderer_base { /** * Return the standard string that says whether you are logged in (and switched * roles/logged in as another user). - * + * @param bool $withlinks if false, then don't include any links in the HTML produced. + * If not set, the default is the nologinlinks option from the theme config.php file, + * and if that is not set, then links are included. * @return string HTML fragment. */ - public function login_info() { + public function login_info($withlinks = null) { global $USER, $CFG, $DB, $SESSION; if (during_initial_install()) { return ''; } + if (is_null($withlinks)) { + $withlinks = empty($this->page->layout_options['nologinlinks']); + } + $loginpage = ((string)$this->page->url === get_login_url()); $course = $this->page->course; - if (session_is_loggedinas()) { $realuser = session_get_realuser(); $fullname = fullname($realuser, true); - $realuserinfo = " [wwwroot/course/loginas.php?id=$course->id&sesskey=".sesskey()."\">$fullname] "; + if ($withlinks) { + $realuserinfo = " [wwwroot/course/loginas.php?id=$course->id&sesskey=".sesskey()."\">$fullname] "; + } else { + $realuserinfo = " [$fullname] "; + } } else { $realuserinfo = ''; } @@ -539,13 +548,21 @@ class core_renderer extends renderer_base { $fullname = fullname($USER, true); // Since Moodle 2.0 this link always goes to the public profile page (not the course profile page) - $username = "wwwroot/user/profile.php?id=$USER->id\">$fullname"; + if ($withlinks) { + $username = "wwwroot/user/profile.php?id=$USER->id\">$fullname"; + } else { + $username = $fullname; + } if (is_mnet_remote_user($USER) and $idprovider = $DB->get_record('mnet_host', array('id'=>$USER->mnethostid))) { - $username .= " from wwwroot}\">{$idprovider->name}"; + if ($withlinks) { + $username .= " from wwwroot}\">{$idprovider->name}"; + } else { + $username .= " from {$idprovider->name}"; + } } if (isguestuser()) { $loggedinas = $realuserinfo.get_string('loggedinasguest'); - if (!$loginpage) { + if (!$loginpage && $withlinks) { $loggedinas .= " (".get_string('login').')'; } } else if (is_role_switched($course->id)) { // Has switched roles @@ -553,15 +570,19 @@ class core_renderer extends renderer_base { if ($role = $DB->get_record('role', array('id'=>$USER->access['rsw'][$context->path]))) { $rolename = ': '.format_string($role->name); } - $loggedinas = get_string('loggedinas', 'moodle', $username).$rolename. - " (wwwroot/course/view.php?id=$course->id&switchrole=0&sesskey=".sesskey()."\">".get_string('switchrolereturn').')'; + $loggedinas = get_string('loggedinas', 'moodle', $username).$rolename; + if ($withlinks) { + $loggedinas .= " (wwwroot/course/view.php?id=$course->id&switchrole=0&sesskey=".sesskey()."\">".get_string('switchrolereturn').')'; + } } else { - $loggedinas = $realuserinfo.get_string('loggedinas', 'moodle', $username).' '. - " (wwwroot/login/logout.php?sesskey=".sesskey()."\">".get_string('logout').')'; + $loggedinas = $realuserinfo.get_string('loggedinas', 'moodle', $username); + if ($withlinks) { + $loggedinas .= " (wwwroot/login/logout.php?sesskey=".sesskey()."\">".get_string('logout').')'; + } } } else { $loggedinas = get_string('loggedinnot', 'moodle'); - if (!$loginpage) { + if (!$loginpage && $withlinks) { $loggedinas .= " (".get_string('login').')'; } } diff --git a/mod/quiz/accessrule/safebrowser/rule.php b/mod/quiz/accessrule/safebrowser/rule.php index e73c5b83412..763acdc0286 100644 --- a/mod/quiz/accessrule/safebrowser/rule.php +++ b/mod/quiz/accessrule/safebrowser/rule.php @@ -61,6 +61,9 @@ class quizaccess_safebrowser extends quiz_access_rule_base { public function setup_attempt_page($page) { $page->set_title($this->quizobj->get_course()->shortname . ': ' . $page->title); $page->set_cacheable(false); + $page->set_popup_notification_allowed(false); // Prevent message notifications. + $page->set_heading($page->title); + $page->set_pagelayout('secure'); } /** diff --git a/mod/quiz/accessrule/securewindow/rule.php b/mod/quiz/accessrule/securewindow/rule.php index ede3f934de2..bbeda5449c9 100644 --- a/mod/quiz/accessrule/securewindow/rule.php +++ b/mod/quiz/accessrule/securewindow/rule.php @@ -73,7 +73,7 @@ class quizaccess_securewindow extends quiz_access_rule_base { $page->set_popup_notification_allowed(false); // Prevent message notifications. $page->set_title($this->quizobj->get_course()->shortname . ': ' . $page->title); $page->set_cacheable(false); - $page->set_pagelayout('popup'); + $page->set_pagelayout('secure'); if ($this->quizobj->is_preview_user()) { return; diff --git a/theme/base/config.php b/theme/base/config.php index 7c9aa2d3799..1316822f7ca 100644 --- a/theme/base/config.php +++ b/theme/base/config.php @@ -153,12 +153,18 @@ $THEME->layouts = array( 'regions' => array(), 'options' => array('nofooter'=>true, 'nonavbar'=>true, 'nocustommenu'=>true), ), - // The pagelayout used for reports + // The pagelayout used for reports. 'report' => array( 'file' => 'report.php', 'regions' => array('side-pre'), 'defaultregion' => 'side-pre', ), + // The pagelayout used for safebrowser and securewindow. + 'secure' => array( + 'file' => 'general.php', + 'regions' => array(), + 'options' => array('nofooter'=>true, 'nonavbar'=>true, 'nocustommenu'=>true, 'nologinlinks'=>true), + ), ); // We don't want the base theme to be shown on the theme selection screen, by setting diff --git a/theme/upgrade.txt b/theme/upgrade.txt index 4d18a33411a..4158d23f2e3 100644 --- a/theme/upgrade.txt +++ b/theme/upgrade.txt @@ -1,6 +1,11 @@ This files describes API changes in /theme/* themes, information provided here is intended especially for theme designer. +=== 2.4 === + +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) === 2.3 === @@ -12,4 +17,4 @@ optional changes: required changes: * use new page content placeholder "echo $OUTPUT->main_content()" instead of "echo core_renderer::MAIN_CONTENT_TOKEN" see git commit: 3b3f302855d7621405a8b93e49bd399d67a998d7 -* upgrade report selectors: search for "-course-report-" and replace with "-report-" \ No newline at end of file +* upgrade report selectors: search for "-course-report-" and replace with "-report-" -- 2.43.0