MDL-50839 user_menu: Allow themes to set User menu avatar size.

Added an @array "options" parameter to user_get_user_navigation_info(),
for passing in avatarsize, and possibly other options in future.

Also removed an errant parameter in the /lib/outputrenderers.php
user_get_user_navigation_info() call, as there was no corresponding
parameter in the function definition.

(Test written by Jetha Chan.)
This commit is contained in:
David Balch 2015-07-15 11:48:43 +01:00
parent 9325cd963f
commit 9dcd50358a
3 changed files with 32 additions and 7 deletions

View file

@ -3182,7 +3182,7 @@ EOD;
} }
// Get some navigation opts. // Get some navigation opts.
$opts = user_get_user_navigation_info($user, $this->page, $this->page->course); $opts = user_get_user_navigation_info($user, $this->page);
$avatarclasses = "avatars"; $avatarclasses = "avatars";
$avatarcontents = html_writer::span($opts->metadata['useravatar'], 'avatar current'); $avatarcontents = html_writer::span($opts->metadata['useravatar'], 'avatar current');

View file

@ -727,6 +727,9 @@ function user_convert_text_to_menu_items($text, $page) {
* *
* @param stdclass $user user object. * @param stdclass $user user object.
* @param moodle_page $page page object. * @param moodle_page $page page object.
* @param array $options associative array.
* options are:
* - avatarsize=35 (size of avatar image)
* @return stdClass $returnobj navigation information object, where: * @return stdClass $returnobj navigation information object, where:
* *
* $returnobj->navitems array array of links where each link is a * $returnobj->navitems array array of links where each link is a
@ -769,7 +772,7 @@ function user_convert_text_to_menu_items($text, $page) {
* mnetidprovidername string name of the MNet provider * mnetidprovidername string name of the MNet provider
* mnetidproviderwwwroot string URL of the MNet provider * mnetidproviderwwwroot string URL of the MNet provider
*/ */
function user_get_user_navigation_info($user, $page) { function user_get_user_navigation_info($user, $page, $options = null) {
global $OUTPUT, $DB, $SESSION, $CFG; global $OUTPUT, $DB, $SESSION, $CFG;
$returnobject = new stdClass(); $returnobject = new stdClass();
@ -787,12 +790,13 @@ function user_get_user_navigation_info($user, $page) {
$returnobject->metadata['userprofileurl'] = new moodle_url('/user/profile.php', array( $returnobject->metadata['userprofileurl'] = new moodle_url('/user/profile.php', array(
'id' => $user->id 'id' => $user->id
)); ));
$avataroptions = array('link' => false, 'visibletoscreenreaders' => false);
if (!empty($options['avatarsize'])) {
$avataroptions['size'] = $options['avatarsize'];
}
$returnobject->metadata['useravatar'] = $OUTPUT->user_picture ( $returnobject->metadata['useravatar'] = $OUTPUT->user_picture (
$user, $user, $avataroptions
array(
'link' => false,
'visibletoscreenreaders' => false
)
); );
// Build a list of items for a regular user. // Build a list of items for a regular user.

View file

@ -377,4 +377,25 @@ class core_userliblib_testcase extends advanced_testcase {
} }
/**
* Test setting the user menu avatar size.
*/
public function test_user_menu_custom_avatar_size() {
global $PAGE;
$this->resetAfterTest(true);
$testsize = 100;
$user = $this->getDataGenerator()->create_user();
$opts = user_get_user_navigation_info($user, $PAGE, array('avatarsize' => $testsize));
$avatarhtml = $opts->metadata['useravatar'];
$matches = [];
preg_match('/(?:.*width=")(\d*)(?:" height=")(\d*)(?:".*\/>)/', $avatarhtml, $matches);
$this->assertCount(3, $matches);
$this->assertEquals(intval($matches[1]), $testsize);
$this->assertEquals(intval($matches[2]), $testsize);
}
} }