mirror of
https://github.com/moodle/moodle.git
synced 2025-08-04 00:16:46 +02:00
MDL-65056 completion: Hide checkboxes on course page for teachers
This commit is contained in:
parent
019004dcc7
commit
d6cea5ccd9
5 changed files with 174 additions and 29 deletions
|
@ -152,4 +152,72 @@ class behat_completion extends behat_base {
|
|||
array($imgalttext, "icon", $activityxpath, "xpath_element")
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if the activity with specified name shows a information completion checkbox (i.e. showing the completion tracking
|
||||
* configuration).
|
||||
*
|
||||
* @Given /^the "(?P<activityname_string>(?:[^"]|\\")*)" "(?P<activitytype_string>(?:[^"]|\\")*)" activity with "(manual|auto)" completion shows a configuration completion checkbox/
|
||||
* @param string $activityname The activity name.
|
||||
* @param string $activitytype The activity type.
|
||||
* @param string $completiontype The completion type.
|
||||
*/
|
||||
public function activity_has_configuration_completion_checkbox($activityname, $activitytype, $completiontype) {
|
||||
if ($completiontype == "manual") {
|
||||
$imgname = 'i/completion-manual-enabled';
|
||||
} else {
|
||||
$imgname = 'i/completion-auto-enabled';
|
||||
}
|
||||
$iconxpath = "//li[contains(concat(' ', @class, ' '), ' modtype_" . strtolower($activitytype) . " ')]";
|
||||
$iconxpath .= "[descendant::*[contains(text(), '" . $activityname . "')]]";
|
||||
$iconxpath .= "/descendant::span[@class='actions']/descendant::img[contains(@src, 'i/completion-')]";
|
||||
|
||||
$this->execute("behat_general::the_attribute_of_should_contain",
|
||||
array("src", $iconxpath, "xpath_element", $imgname)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if the activity with specified name shows a tracking completion checkbox (i.e. showing my completion tracking status)
|
||||
*
|
||||
* @Given /^the "(?P<activityname_string>(?:[^"]|\\")*)" "(?P<activitytype_string>(?:[^"]|\\")*)" activity with "(manual|auto)" completion shows a status completion checkbox/
|
||||
* @param string $activityname The activity name.
|
||||
* @param string $activitytype The activity type.
|
||||
* @param string $completiontype The completion type.
|
||||
*/
|
||||
public function activity_has_status_completion_checkbox($activityname, $activitytype, $completiontype) {
|
||||
if ($completiontype == "manual") {
|
||||
$imgname = 'i/completion-manual-';
|
||||
} else {
|
||||
$imgname = 'i/completion-auto-';
|
||||
}
|
||||
$iconxpath = "//li[contains(concat(' ', @class, ' '), ' modtype_" . strtolower($activitytype) . " ')]";
|
||||
$iconxpath .= "[descendant::*[contains(text(), '" . $activityname . "')]]";
|
||||
$iconxpath .= "/descendant::span[@class='actions']/descendant::img[contains(@src, 'i/completion-')]";
|
||||
|
||||
$this->execute("behat_general::the_attribute_of_should_contain",
|
||||
array("src", $iconxpath, "xpath_element", $imgname)
|
||||
);
|
||||
|
||||
$this->execute("behat_general::the_attribute_of_should_not_contain",
|
||||
array("src", $iconxpath, "xpath_element", '-enabled')
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if the activity with specified name does not show any completion checkbox.
|
||||
*
|
||||
* @Given /^the "(?P<activityname_string>(?:[^"]|\\")*)" "(?P<activitytype_string>(?:[^"]|\\")*)" activity does not show any completion checkbox/
|
||||
* @param string $activityname The activity name.
|
||||
* @param string $activitytype The activity type.
|
||||
*/
|
||||
public function activity_has_not_any_completion_checkbox($activityname, $activitytype) {
|
||||
$iconxpath = "//li[contains(concat(' ', @class, ' '), ' modtype_" . strtolower($activitytype) . " ')]";
|
||||
$iconxpath .= "[descendant::*[contains(text(), '" . $activityname . "')]]";
|
||||
$iconxpath .= "/descendant::img[contains(@src, 'i/completion-')]";
|
||||
|
||||
$this->execute("behat_general::should_not_exist",
|
||||
array($iconxpath, "xpath_element")
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,65 @@
|
|||
@core @core_completion
|
||||
Feature: Show activity completion status or activity completion configuration on the course page
|
||||
In order to understand the configuration or status of an activity's completion
|
||||
As a user
|
||||
I want to see an appropriate checkbox icon besides the activity
|
||||
|
||||
Background:
|
||||
Given the following "courses" exist:
|
||||
| fullname | shortname | category |
|
||||
| Course 1 | C1 | 0 |
|
||||
And the following "users" exist:
|
||||
| username | firstname | lastname | email |
|
||||
| teacher1 | Teacher | First | teacher1@example.com |
|
||||
| teacher2 | Teacher | Second | teacher2@example.com |
|
||||
| student1 | Student | First | student1@example.com |
|
||||
And the following "course enrolments" exist:
|
||||
| user | course | role |
|
||||
| teacher1 | C1 | editingteacher |
|
||||
| teacher2 | C1 | teacher |
|
||||
| student1 | C1 | student |
|
||||
And I log in as "teacher1"
|
||||
And I am on "Course 1" course homepage with editing mode on
|
||||
And I navigate to "Edit settings" in current page administration
|
||||
And I set the following fields to these values:
|
||||
| Enable completion tracking | Yes |
|
||||
And I press "Save and display"
|
||||
And the following "activities" exist:
|
||||
| activity | course | idnumber | name | intro | completion | completionview | completionexpected |
|
||||
| forum | C1 | forum1 | Test forum name | Test forum description | 1 | 0 | 0 |
|
||||
And the following "activities" exist:
|
||||
| activity | course | idnumber | name | intro | completion | completionview | completionexpected |
|
||||
| assign | C1 | assign1 | Test assignment name | Test assignment description | 2 | 1 | 0 |
|
||||
And the following "activities" exist:
|
||||
| activity | course | idnumber | name | intro | completion | completionview | completionexpected |
|
||||
| quiz | C1 | quiz1 | Test quiz name | Test quiz description | 0 | 0 | 0 |
|
||||
And I log out
|
||||
|
||||
Scenario: Show completion status to students
|
||||
Given I log in as "student1"
|
||||
And I am on "Course 1" course homepage
|
||||
Then I should see "Your progress"
|
||||
And the "Test forum name" "Forum" activity with "manual" completion shows a status completion checkbox
|
||||
And the "Test assignment name" "Assign" activity with "auto" completion shows a status completion checkbox
|
||||
And the "Test quiz name" "Quiz" activity does not show any completion checkbox
|
||||
|
||||
Scenario: Show completion configuration to editing teachers
|
||||
Given I log in as "teacher1"
|
||||
And I am on "Course 1" course homepage
|
||||
Then I should not see "Your progress"
|
||||
And the "Test forum name" "Forum" activity with "manual" completion shows a configuration completion checkbox
|
||||
And the "Test assignment name" "Assign" activity with "auto" completion shows a configuration completion checkbox
|
||||
And the "Test quiz name" "Quiz" activity does not show any completion checkbox
|
||||
And I am on "Course 1" course homepage with editing mode on
|
||||
And I should not see "Your progress"
|
||||
And the "Test forum name" "Forum" activity with "manual" completion shows a configuration completion checkbox
|
||||
And the "Test assignment name" "Assign" activity with "auto" completion shows a configuration completion checkbox
|
||||
And the "Test quiz name" "Quiz" activity does not show any completion checkbox
|
||||
|
||||
Scenario: Show completion configuration to non-editing teachers
|
||||
Given I log in as "teacher2"
|
||||
And I am on "Course 1" course homepage
|
||||
Then I should not see "Your progress"
|
||||
And the "Test forum name" "Forum" activity with "manual" completion shows a configuration completion checkbox
|
||||
And the "Test assignment name" "Assign" activity with "auto" completion shows a configuration completion checkbox
|
||||
And the "Test quiz name" "Quiz" activity does not show any completion checkbox
|
|
@ -4,6 +4,10 @@ information provided here is intended especially for developers.
|
|||
=== 3.7 ===
|
||||
* External function core_completion_external::get_activities_completion_status new returns the following additional field:
|
||||
- valueused (indicates whether the completion state affects the availability of other content)
|
||||
* On the course page, only users with the capability 'moodle/course:isincompletionreports' (students, by default) can now tick the
|
||||
completion checkboxes. Teachers no longer get working checkboxes; tey see slightly different icons that indicate whether
|
||||
completion is enabled for the activity. These are the same icons which have always been shown to teachers before when the
|
||||
enabled the course editing mode.
|
||||
|
||||
=== 2.9 ===
|
||||
|
||||
|
|
|
@ -403,8 +403,12 @@ class core_course_renderer extends plugin_renderer_base {
|
|||
* @return string
|
||||
*/
|
||||
public function course_section_cm_completion($course, &$completioninfo, cm_info $mod, $displayoptions = array()) {
|
||||
global $CFG, $DB;
|
||||
global $CFG, $DB, $USER;
|
||||
$output = '';
|
||||
|
||||
$istrackeduser = $completioninfo->is_tracked_user($USER->id);
|
||||
$isediting = $this->page->user_is_editing();
|
||||
|
||||
if (!empty($displayoptions['hidecompletion']) || !isloggedin() || isguestuser() || !$mod->uservisible) {
|
||||
return $output;
|
||||
}
|
||||
|
@ -412,24 +416,26 @@ class core_course_renderer extends plugin_renderer_base {
|
|||
$completioninfo = new completion_info($course);
|
||||
}
|
||||
$completion = $completioninfo->is_enabled($mod);
|
||||
|
||||
if ($completion == COMPLETION_TRACKING_NONE) {
|
||||
if ($this->page->user_is_editing()) {
|
||||
if ($isediting) {
|
||||
$output .= html_writer::span(' ', 'filler');
|
||||
}
|
||||
return $output;
|
||||
}
|
||||
|
||||
$completiondata = $completioninfo->get_data($mod, true);
|
||||
$completionicon = '';
|
||||
|
||||
if ($this->page->user_is_editing()) {
|
||||
if ($isediting || !$istrackeduser) {
|
||||
switch ($completion) {
|
||||
case COMPLETION_TRACKING_MANUAL :
|
||||
$completionicon = 'manual-enabled'; break;
|
||||
case COMPLETION_TRACKING_AUTOMATIC :
|
||||
$completionicon = 'auto-enabled'; break;
|
||||
}
|
||||
} else if ($completion == COMPLETION_TRACKING_MANUAL) {
|
||||
} else {
|
||||
$completiondata = $completioninfo->get_data($mod, true);
|
||||
if ($completion == COMPLETION_TRACKING_MANUAL) {
|
||||
switch($completiondata->completionstate) {
|
||||
case COMPLETION_INCOMPLETE:
|
||||
$completionicon = 'manual-n' . ($completiondata->overrideby ? '-override' : '');
|
||||
|
@ -452,9 +458,10 @@ class core_course_renderer extends plugin_renderer_base {
|
|||
$completionicon = 'auto-fail'; break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if ($completionicon) {
|
||||
$formattedname = html_entity_decode($mod->get_formatted_name(), ENT_QUOTES, 'UTF-8');
|
||||
if ($completiondata->overrideby) {
|
||||
if (!$isediting && $istrackeduser && $completiondata->overrideby) {
|
||||
$args = new stdClass();
|
||||
$args->modname = $formattedname;
|
||||
$overridebyuser = \core_user::get_user($completiondata->overrideby, '*', MUST_EXIST);
|
||||
|
@ -464,7 +471,7 @@ class core_course_renderer extends plugin_renderer_base {
|
|||
$imgalt = get_string('completion-alt-' . $completionicon, 'completion', $formattedname);
|
||||
}
|
||||
|
||||
if ($this->page->user_is_editing() || !has_capability('moodle/course:togglecompletion', $mod->context)) {
|
||||
if ($isediting || !$istrackeduser || !has_capability('moodle/course:togglecompletion', $mod->context)) {
|
||||
// When editing, the icon is just an image.
|
||||
$completionpixicon = new pix_icon('i/completion-'.$completionicon, $imgalt, '',
|
||||
array('title' => $imgalt, 'class' => 'iconsmall'));
|
||||
|
|
|
@ -319,9 +319,10 @@ class completion_info {
|
|||
* @return string HTML code for help icon, or blank if not needed
|
||||
*/
|
||||
public function display_help_icon() {
|
||||
global $PAGE, $OUTPUT;
|
||||
global $PAGE, $OUTPUT, $USER;
|
||||
$result = '';
|
||||
if ($this->is_enabled() && !$PAGE->user_is_editing() && isloggedin() && !isguestuser()) {
|
||||
if ($this->is_enabled() && !$PAGE->user_is_editing() && $this->is_tracked_user($USER->id) && isloggedin() &&
|
||||
!isguestuser()) {
|
||||
$result .= html_writer::tag('div', get_string('yourprogress','completion') .
|
||||
$OUTPUT->help_icon('completionicons', 'completion'), array('id' => 'completionprogressid',
|
||||
'class' => 'completionprogress'));
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue