From b16cd3486019ac96f18d45f2fcc05ba7227d3f6c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luca=20B=C3=B6sch?= Date: Mon, 20 Jan 2020 09:26:23 +0100 Subject: [PATCH] MDL-67672 user: Display name in user menu as elsewhere. --- lib/moodlelib.php | 7 +- user/lib.php | 4 +- user/tests/behat/full_name_display.feature | 82 ++++++++++++++++++++++ 3 files changed, 88 insertions(+), 5 deletions(-) create mode 100644 user/tests/behat/full_name_display.feature diff --git a/lib/moodlelib.php b/lib/moodlelib.php index e5ee465dc53..4462ed31bf5 100644 --- a/lib/moodlelib.php +++ b/lib/moodlelib.php @@ -3520,11 +3520,12 @@ function ismoving($courseid) { * Returns a persons full name * * Given an object containing all of the users name values, this function returns a string with the full name of the person. - * The result may depend on system settings or language. 'override' will force both names to be used even if system settings - * specify one. + * The result may depend on system settings or language. 'override' will force the alternativefullnameformat to be used. In + * English, fullname as well as alternativefullnameformat is set to 'firstname lastname' by default. But you could have + * fullname set to 'firstname lastname' and alternativefullnameformat set to 'firstname middlename alternatename lastname'. * * @param stdClass $user A {@link $USER} object to get full name of. - * @param bool $override If true then the name will be firstname followed by lastname rather than adhering to fullnamedisplay. + * @param bool $override If true then the alternativefullnameformat format rather than fullnamedisplay format will be used. * @return string */ function fullname($user, $override=false) { diff --git a/user/lib.php b/user/lib.php index 0c23775ea7e..1b669b641e6 100644 --- a/user/lib.php +++ b/user/lib.php @@ -853,7 +853,7 @@ function user_get_user_navigation_info($user, $page, $options = array()) { // Get basic user metadata. $returnobject->metadata['userid'] = $user->id; - $returnobject->metadata['userfullname'] = fullname($user, true); + $returnobject->metadata['userfullname'] = fullname($user); $returnobject->metadata['userprofileurl'] = new moodle_url('/user/profile.php', array( 'id' => $user->id )); @@ -925,7 +925,7 @@ function user_get_user_navigation_info($user, $page, $options = array()) { // Save values for the real user, as $user will be full of data for the // user the user is disguised as. $returnobject->metadata['realuserid'] = $realuser->id; - $returnobject->metadata['realuserfullname'] = fullname($realuser, true); + $returnobject->metadata['realuserfullname'] = fullname($realuser); $returnobject->metadata['realuserprofileurl'] = new moodle_url('/user/profile.php', array( 'id' => $realuser->id )); diff --git a/user/tests/behat/full_name_display.feature b/user/tests/behat/full_name_display.feature new file mode 100644 index 00000000000..091f016c40c --- /dev/null +++ b/user/tests/behat/full_name_display.feature @@ -0,0 +1,82 @@ +@core @core_user +Feature: Users' names are displayed across the site according to the user policy settings + In order to control the way students and teachers see users' names + As a teacher or admin + I need to be able to configure the name display formats 'fullnamedisplay' and 'alternativefullnameformat' + + Background: + Given the following "users" exist: + | username | firstname | lastname | email | middlename | alternatename | firstnamephonetic | lastnamephonetic | + | user1 | Grainne | Beauchamp | one@example.com | Ann | Jill | Gronya | Beecham | + | user2 | Niamh | Cholmondely | two@example.com | Jane | Nina | Nee | Chumlee | + | user3 | Siobhan | Desforges | three@example.com | Sarah | Sev | Shevon | De-forjay | + | teacher1 | Teacher | 1 | teacher1@example.com | | | | | + And the following "courses" exist: + | fullname | shortname | format | + | Course 1 | C1 | topics | + And the following "course enrolments" exist: + | user | course | role | + | teacher1 | C1 | editingteacher | + | user1 | C1 | student | + | user2 | C1 | student | + And the following config values are set as admin: + | fullnamedisplay | firstnamephonetic,lastnamephonetic | + | alternativefullnameformat | middlename, alternatename, firstname, lastname | + + Scenario: As a student, 'fullnamedisplay' should be used in the participants list and when viewing my own course profile + Given I log in as "user1" + And I am on "Course 1" course homepage + When I navigate to course participants + And I click on "Gronya,Beecham" "link" in the "Gronya,Beecham" "table_row" + Then I should see "Gronya,Beecham" in the "region-main" "region" + And I log out + + Scenario: As a student, 'fullnamedisplay' should be used in the participants list and when viewing another user's course profile + Given I log in as "user2" + And I am on "Course 1" course homepage + When I navigate to course participants + And I click on "Gronya,Beecham" "link" in the "Gronya,Beecham" "table_row" + Then I should see "Gronya,Beecham" in the "region-main" "region" + And I log out + + Scenario: As a teacher, 'alternativefullnameformat' should be used in the participants list but 'fullnamedisplay' used on the course profile + Given I log in as "teacher1" + And I am on "Course 1" course homepage + When I navigate to course participants + Then I should see "Ann, Jill, Grainne, Beauchamp" in the "Ann, Jill, Grainne, Beauchamp" "table_row" + And I click on "Ann, Jill, Grainne, Beauchamp" "link" in the "Ann, Jill, Grainne, Beauchamp" "table_row" + And I should see "Gronya,Beecham" in the "region-main" "region" + And I log out + + Scenario: As an authenticated user, 'fullnamedisplay' should be used in the navigation and when viewing my profile + Given I log in as "user1" + When I follow "Profile" in the user menu + Then I should see "Gronya,Beecham" in the ".usermenu" "css_element" + And I should see "Gronya,Beecham" in the ".page-context-header" "css_element" + And I log out + + Scenario: As an admin, 'fullnamedisplay' should be used when using the 'log in as' function + Given I log in as "admin" + When I navigate to "Users > Accounts > Browse list of users" in site administration + And I follow "Jane, Nina, Niamh, Cholmondely" + And I follow "Log in as" + Then I should see "You are logged in as Nee,Chumlee" + And I log out + + Scenario: As an admin, 'fullnamedisplay' should be used when viewing another user's site profile + Given I log in as "admin" + When I navigate to "Users > Accounts > Browse list of users" in site administration + And I follow "Ann, Jill, Grainne, Beauchamp" + Then I should see "Gronya,Beecham" in the ".page-header-headings" "css_element" + And I log out + + @javascript + Scenario: As a teacher, the 'alternativefullnameformat' should be used when searching for and enrolling a user + Given I log in as "teacher1" + And I am on "Course 1" course homepage + When I navigate to course participants + And I press "Enrol users" + And I set the field "Select users" to "three@example.com" + And I click on ".form-autocomplete-downarrow" "css_element" in the "Select users" "form_row" + Then I should see "Sarah, Sev, Siobhan, Desforges" +