$aggregation_methods = $completion->get_aggregation_methods();
// Overall criteria aggregation.
- $mform->addElement('header', 'overallcriteria', get_string('overallcriteriaaggregation', 'completion'));
- $mform->addElement('select', 'overall_aggregation', get_string('aggregationmethod', 'completion'), $aggregation_methods);
+ $mform->addElement('header', 'overallcriteria', get_string('general', 'core_form'));
+ // Map aggregation methods to context-sensitive human readable dropdown menu.
+ $overallaggregationmenu = array();
+ foreach ($aggregation_methods as $methodcode => $methodname) {
+ if ($methodcode === COMPLETION_AGGREGATION_ALL) {
+ $overallaggregationmenu[COMPLETION_AGGREGATION_ALL] = get_string('overallaggregation_all', 'core_completion');
+ } else if ($methodcode === COMPLETION_AGGREGATION_ANY) {
+ $overallaggregationmenu[COMPLETION_AGGREGATION_ANY] = get_string('overallaggregation_any', 'core_completion');
+ } else {
+ $overallaggregationmenu[$methodcode] = $methodname;
+ }
+ }
+ $mform->addElement('select', 'overall_aggregation', get_string('overallaggregation', 'core_completion'), $overallaggregationmenu);
$mform->setDefault('overall_aggregation', $completion->get_aggregation_method());
+ // Activity completion criteria
+ $label = get_string('coursecompletioncondition', 'core_completion', get_string('activitiescompleted', 'core_completion'));
+ $mform->addElement('header', 'activitiescompleted', $label);
+ // Get the list of currently specified conditions and expand the section if some are found.
+ $current = $completion->get_criteria(COMPLETION_CRITERIA_TYPE_ACTIVITY);
+ if (!empty($current)) {
+ $mform->setExpanded('activitiescompleted');
+ }
+
+ $activities = $completion->get_activities();
+ if (!empty($activities)) {
+
+ foreach ($activities as $activity) {
+ $params_a = array('moduleinstance' => $activity->id);
+ $criteria = new completion_criteria_activity(array_merge($params, $params_a));
+ $criteria->config_form_display($mform, $activity);
+ }
+ $mform->addElement('static', 'criteria_role_note', '', get_string('activitiescompletednote', 'core_completion'));
+
+ if (count($activities) > 1) {
+ // Map aggregation methods to context-sensitive human readable dropdown menu.
+ $activityaggregationmenu = array();
+ foreach ($aggregation_methods as $methodcode => $methodname) {
+ if ($methodcode === COMPLETION_AGGREGATION_ALL) {
+ $activityaggregationmenu[COMPLETION_AGGREGATION_ALL] = get_string('activityaggregation_all', 'core_completion');
+ } else if ($methodcode === COMPLETION_AGGREGATION_ANY) {
+ $activityaggregationmenu[COMPLETION_AGGREGATION_ANY] = get_string('activityaggregation_any', 'core_completion');
+ } else {
+ $activityaggregationmenu[$methodcode] = $methodname;
+ }
+ }
+ $mform->addElement('select', 'activity_aggregation', get_string('activityaggregation', 'core_completion'), $activityaggregationmenu);
+ $mform->setDefault('activity_aggregation', $completion->get_aggregation_method(COMPLETION_CRITERIA_TYPE_ACTIVITY));
+ }
+
+ } else {
+ $mform->addElement('static', 'noactivities', '', get_string('err_noactivities', 'completion'));
+ }
+
// Course prerequisite completion criteria.
- $mform->addElement('header', 'courseprerequisites', get_string('completiondependencies', 'completion'));
+ $label = get_string('coursecompletioncondition', 'core_completion', get_string('dependenciescompleted', 'core_completion'));
+ $mform->addElement('header', 'courseprerequisites', $label);
+ // Get the list of currently specified conditions and expand the section if some are found.
+ $current = $completion->get_criteria(COMPLETION_CRITERIA_TYPE_COURSE);
+ if (!empty($current)) {
+ $mform->setExpanded('courseprerequisites');
+ }
// Get applicable courses (prerequisites).
$courses = $DB->get_records_sql("
AND c.id <> {$course->id}");
if (!empty($courses)) {
- if (count($courses) > 1) {
- $mform->addElement('select', 'course_aggregation', get_string('aggregationmethod', 'completion'), $aggregation_methods);
- $mform->setDefault('course_aggregation', $completion->get_aggregation_method(COMPLETION_CRITERIA_TYPE_COURSE));
- }
-
// Get category list.
require_once($CFG->libdir. '/coursecatlib.php');
$list = coursecat::make_categories_list();
// Explain list.
$mform->addElement('static', 'criteria_courses_explaination', '', get_string('coursesavailableexplaination', 'completion'));
- } else {
- $mform->addElement('static', 'nocourses', '', get_string('err_nocourses', 'completion'));
- }
-
- // Manual self completion
- $mform->addElement('header', 'manualselfcompletion', get_string('manualselfcompletion', 'completion'));
- $criteria = new completion_criteria_self($params);
- $criteria->config_form_display($mform);
-
- // Role completion criteria
- $mform->addElement('header', 'roles', get_string('manualcompletionby', 'completion'));
-
- $roles = get_roles_with_capability('moodle/course:markcomplete', CAP_ALLOW, context_course::instance($course->id, IGNORE_MISSING));
-
- if (!empty($roles)) {
- $mform->addElement('select', 'role_aggregation', get_string('aggregationmethod', 'completion'), $aggregation_methods);
- $mform->setDefault('role_aggregation', $completion->get_aggregation_method(COMPLETION_CRITERIA_TYPE_ROLE));
-
- foreach ($roles as $role) {
- $params_a = array('role' => $role->id);
- $criteria = new completion_criteria_role(array_merge($params, $params_a));
- $criteria->config_form_display($mform, $role);
- }
- } else {
- $mform->addElement('static', 'noroles', '', get_string('err_noroles', 'completion'));
- }
-
- // Activity completion criteria
- $mform->addElement('header', 'activitiescompleted', get_string('activitiescompleted', 'completion'));
-
- $activities = $completion->get_activities();
- if (!empty($activities)) {
- if (count($activities) > 1) {
- $mform->addElement('select', 'activity_aggregation', get_string('aggregationmethod', 'completion'), $aggregation_methods);
- $mform->setDefault('activity_aggregation', $completion->get_aggregation_method(COMPLETION_CRITERIA_TYPE_ACTIVITY));
+ if (count($courses) > 1) {
+ // Map aggregation methods to context-sensitive human readable dropdown menu.
+ $courseaggregationmenu = array();
+ foreach ($aggregation_methods as $methodcode => $methodname) {
+ if ($methodcode === COMPLETION_AGGREGATION_ALL) {
+ $courseaggregationmenu[COMPLETION_AGGREGATION_ALL] = get_string('courseaggregation_all', 'core_completion');
+ } else if ($methodcode === COMPLETION_AGGREGATION_ANY) {
+ $courseaggregationmenu[COMPLETION_AGGREGATION_ANY] = get_string('courseaggregation_any', 'core_completion');
+ } else {
+ $courseaggregationmenu[$methodcode] = $methodname;
+ }
+ }
+ $mform->addElement('select', 'course_aggregation', get_string('courseaggregation', 'core_completion'), $courseaggregationmenu);
+ $mform->setDefault('course_aggregation', $completion->get_aggregation_method(COMPLETION_CRITERIA_TYPE_COURSE));
}
- foreach ($activities as $activity) {
- $params_a = array('moduleinstance' => $activity->id);
- $criteria = new completion_criteria_activity(array_merge($params, $params_a));
- $criteria->config_form_display($mform, $activity);
- }
} else {
- $mform->addElement('static', 'noactivities', '', get_string('err_noactivities', 'completion'));
+ $mform->addElement('static', 'nocourses', '', get_string('err_nocourses', 'completion'));
}
// Completion on date
- $mform->addElement('header', 'date', get_string('date'));
+ $label = get_string('coursecompletioncondition', 'core_completion', get_string('completionondate', 'core_completion'));
+ $mform->addElement('header', 'date', $label);
+ // Expand the condition section if it is currently enabled.
+ $current = $completion->get_criteria(COMPLETION_CRITERIA_TYPE_DATE);
+ if (!empty($current)) {
+ $mform->setExpanded('date');
+ }
$criteria = new completion_criteria_date($params);
$criteria->config_form_display($mform);
// Completion after enrolment duration
- $mform->addElement('header', 'duration', get_string('durationafterenrolment', 'completion'));
+ $label = get_string('coursecompletioncondition', 'core_completion', get_string('enrolmentduration', 'core_completion'));
+ $mform->addElement('header', 'duration', $label);
+ // Expand the condition section if it is currently enabled.
+ $current = $completion->get_criteria(COMPLETION_CRITERIA_TYPE_DURATION);
+ if (!empty($current)) {
+ $mform->setExpanded('duration');
+ }
$criteria = new completion_criteria_duration($params);
$criteria->config_form_display($mform);
- // Completion on course grade
- $mform->addElement('header', 'grade', get_string('coursegrade', 'completion'));
+ // Completion on unenrolment
+ $label = get_string('coursecompletioncondition', 'core_completion', get_string('unenrolment', 'core_completion'));
+ $mform->addElement('header', 'unenrolment', $label);
+ // Expand the condition section if it is currently enabled.
+ $current = $completion->get_criteria(COMPLETION_CRITERIA_TYPE_UNENROL);
+ if (!empty($current)) {
+ $mform->setExpanded('unenrolment');
+ }
+ $criteria = new completion_criteria_unenrol($params);
+ $criteria->config_form_display($mform);
- // Grade enable and passing grade
+ // Completion on course grade
+ $label = get_string('coursecompletioncondition', 'core_completion', get_string('coursegrade', 'core_completion'));
+ $mform->addElement('header', 'grade', $label);
+ // Expand the condition section if it is currently enabled.
+ $current = $completion->get_criteria(COMPLETION_CRITERIA_TYPE_GRADE);
+ if (!empty($current)) {
+ $mform->setExpanded('grade');
+ }
$course_grade = $DB->get_field('grade_items', 'gradepass', array('courseid' => $course->id, 'itemtype' => 'course'));
if (!$course_grade) {
$course_grade = '0.00000';
$criteria = new completion_criteria_grade($params);
$criteria->config_form_display($mform, $course_grade);
- // Completion on unenrolment
- $mform->addElement('header', 'unenrolment', get_string('unenrolment', 'completion'));
- $criteria = new completion_criteria_unenrol($params);
+ // Manual self completion
+ $label = get_string('coursecompletioncondition', 'core_completion', get_string('manualselfcompletion', 'core_completion'));
+ $mform->addElement('header', 'manualselfcompletion', $label);
+ // Expand the condition section if it is currently enabled.
+ $current = $completion->get_criteria(COMPLETION_CRITERIA_TYPE_SELF);
+ if (!empty($current)) {
+ $mform->setExpanded('manualselfcompletion');
+ }
+ $criteria = new completion_criteria_self($params);
$criteria->config_form_display($mform);
+ $mform->addElement('static', 'criteria_self_note', '', get_string('manualselfcompletionnote', 'core_completion'));
+
+ // Role completion criteria
+ $label = get_string('coursecompletioncondition', 'core_completion', get_string('manualcompletionby', 'core_completion'));
+ $mform->addElement('header', 'roles', $label);
+ // Expand the condition section if it is currently enabled.
+ $current = $completion->get_criteria(COMPLETION_CRITERIA_TYPE_ROLE);
+ if (!empty($current)) {
+ $mform->setExpanded('roles');
+ }
+ $roles = get_roles_with_capability('moodle/course:markcomplete', CAP_ALLOW, context_course::instance($course->id, IGNORE_MISSING));
+
+ if (!empty($roles)) {
+ foreach ($roles as $role) {
+ $params_a = array('role' => $role->id);
+ $criteria = new completion_criteria_role(array_merge($params, $params_a));
+ $criteria->config_form_display($mform, $role);
+ }
+ $mform->addElement('static', 'criteria_role_note', '', get_string('manualcompletionbynote', 'core_completion'));
+ // Map aggregation methods to context-sensitive human readable dropdown menu.
+ $roleaggregationmenu = array();
+ foreach ($aggregation_methods as $methodcode => $methodname) {
+ if ($methodcode === COMPLETION_AGGREGATION_ALL) {
+ $roleaggregationmenu[COMPLETION_AGGREGATION_ALL] = get_string('roleaggregation_all', 'core_completion');
+ } else if ($methodcode === COMPLETION_AGGREGATION_ANY) {
+ $roleaggregationmenu[COMPLETION_AGGREGATION_ANY] = get_string('roleaggregation_any', 'core_completion');
+ } else {
+ $roleaggregationmenu[$methodcode] = $methodname;
+ }
+ }
+ $mform->addElement('select', 'role_aggregation', get_string('roleaggregation', 'core_completion'), $roleaggregationmenu);
+ $mform->setDefault('role_aggregation', $completion->get_aggregation_method(COMPLETION_CRITERIA_TYPE_ROLE));
+
+ } else {
+ $mform->addElement('static', 'noroles', '', get_string('err_noroles', 'completion'));
+ }
// Add common action buttons.
$this->add_action_buttons();
$string['achievinggrade'] = 'Achieving grade';
$string['activities'] = 'Activities';
-$string['activitiescompleted'] = 'Activities completed';
+$string['activityaggregation'] = 'Condition requires';
+$string['activityaggregation_all'] = 'ALL selected activities to be completed';
+$string['activityaggregation_any'] = 'ANY selected activities to be completed';
+$string['activitiescompleted'] = 'Activity completion';
+$string['activitiescompletednote'] = 'Note: Activity completion must be set for an activity to appear in the above list.';
$string['activitycompletion'] = 'Activity completion';
-$string['afterspecifieddate'] = 'After specified date';
$string['aggregationmethod'] = 'Aggregation method';
$string['all'] = 'All';
$string['any'] = 'Any';
$string['completion_link'] = 'activity/completion';
$string['completion_manual'] = 'Students can manually mark the activity as completed';
$string['completion_none'] = 'Do not indicate activity completion';
-$string['completiondependencies'] = 'Completion dependencies';
$string['completiondisabled'] = 'Disabled, not shown in activity settings';
$string['completionenabled'] = 'Enabled, control via completion and activity settings';
$string['completionexpected'] = 'Expect completed on';
$string['completionnotenabled'] = 'Completion is not enabled';
$string['completionnotenabledforcourse'] = 'Completion is not enabled for this course';
$string['completionnotenabledforsite'] = 'Completion is not enabled for this site';
-$string['completiononunenrolment'] = 'Completion on unenrolment';
+$string['completionondate'] = 'Date';
+$string['completionondatevalue'] = 'User must remain enrolled until';
+$string['completionduration'] = 'Enrolment';
$string['completionsettingslocked'] = 'Completion settings locked';
$string['completionusegrade'] = 'Require grade';
$string['completionusegrade_desc'] = 'Student must receive a grade to complete this activity';
$string['completionview_desc'] = 'Student must view this activity to complete it';
$string['configenablecompletion'] = 'When enabled, this lets you turn on completion tracking (progress) features at course level.';
$string['confirmselfcompletion'] = 'Confirm self completion';
+$string['courseaggregation'] = 'Condition requires';
+$string['courseaggregation_all'] = 'ALL selected courses to be completed';
+$string['courseaggregation_any'] = 'ANY selected courses to be completed';
$string['coursealreadycompleted'] = 'You have already completed this course';
$string['coursecomplete'] = 'Course complete';
$string['coursecompleted'] = 'Course completed';
+$string['coursecompletion'] = 'Course completion';
+$string['coursecompletioncondition'] = 'Condition: {$a}';
$string['coursegrade'] = 'Course grade';
$string['coursesavailable'] = 'Courses available';
-$string['coursesavailableexplaination'] = '<i>Course completion criteria must be set for a course to appear in this list</i>';
+$string['coursesavailableexplaination'] = 'Note: Course completion conditions must be set for a course to appear in the above list.';
$string['criteria'] = 'Criteria';
-$string['criteriagradenote'] = 'Please note that updating the required grade here will not update the current course pass grade.';
$string['criteriagroup'] = 'Criteria group';
$string['criteriarequiredall'] = 'All criteria below are required';
$string['criteriarequiredany'] = 'Any criteria below are required';
$string['csvdownload'] = 'Download in spreadsheet format (UTF-8 .csv)';
$string['datepassed'] = 'Date passed';
$string['days'] = 'Days';
-$string['daysafterenrolment'] = 'Days after enrolment';
$string['deletecompletiondata'] = 'Delete completion data';
$string['dependencies'] = 'Dependencies';
-$string['dependenciescompleted'] = 'Dependencies completed';
-$string['durationafterenrolment'] = 'Duration after enrolment';
+$string['dependenciescompleted'] = 'Completion of other courses';
$string['editcoursecompletionsettings'] = 'Edit course completion settings';
$string['enablecompletion'] = 'Enable completion tracking';
$string['enablecompletion_help'] = 'Once enabled, the completion tracking settings are displayed in the completion tracking page, and in the activity settings.';
-$string['enrolmentduration'] = 'Days left';
+$string['enrolmentduration'] = 'Enrolment duration';
+$string['enrolmentdurationlength'] = 'User must remain enrolled for';
$string['err_noactivities'] = 'Completion information is not enabled for any activity, so none can be displayed. You can enable completion information by editing the settings for an activity.';
$string['err_nocourses'] = 'Course completion is not enabled for any other courses, so none can be displayed. You can enable course completion in the course settings.';
$string['err_nograde'] = 'A course pass grade has not been set for this course. To enable this criteria type you must create a pass grade for this course.';
-$string['err_noroles'] = 'There are no roles with the capability \'moodle/course:markcomplete\' in this course. You can enable this criteria type by adding this capability to role(s).';
+$string['err_noroles'] = 'There are no roles with the capability moodle/course:markcomplete in this course.';
$string['err_nousers'] = 'There are no students on this course or group for whom completion information is displayed. (By default, completion information is displayed only for students, so if there are no students, you will see this error. Administrators can alter this option via the admin screens.)';
$string['err_settingslocked'] = 'One or more students have already completed a criteria so the settings have been locked. Unlocking the completion criteria settings will delete any existing user data and may cause confusion.';
$string['err_system'] = 'An internal error occurred in the completion system. (System administrators can enable debugging information to see more detail.)';
$string['excelcsvdownload'] = 'Download in Excel-compatible format (.csv)';
$string['fraction'] = 'Fraction';
-$string['graderequired'] = 'Grade required';
+$string['graderequired'] = 'Required course grade';
$string['gradexrequired'] = '{$a} required';
$string['inprogress'] = 'In progress';
-$string['manualcompletionby'] = 'Manual completion by';
+$string['manualcompletionby'] = 'Manual completion by others';
+$string['manualcompletionbynote'] = 'Note: The capability moodle/course:markcomplete must be allowed for a role to appear in the list.';
$string['manualselfcompletion'] = 'Manual self completion';
+$string['manualselfcompletionnote'] = 'Note: The self completion block should be added to the course if manual self completion is enabled.';
$string['markcomplete'] = 'Mark complete';
$string['markedcompleteby'] = 'Marked complete by {$a}';
$string['markingyourselfcomplete'] = 'Marking yourself complete';
$string['notenroled'] = 'You are not enrolled in this course';
$string['nottracked'] = 'You are currently not being tracked by completion in this course';
$string['notyetstarted'] = 'Not yet started';
-$string['overallcriteriaaggregation'] = 'Overall criteria type aggregation';
+$string['overallaggregation'] = 'Completion requirements';
+$string['overallaggregation_all'] = 'Course is complete when ALL conditions are met';
+$string['overallaggregation_any'] = 'Course is complete when ANY of the conditions are met';
$string['pending'] = 'Pending';
$string['periodpostenrolment'] = 'Period post enrolment';
$string['progress'] = 'Student progress';
$string['reportpage'] = 'Showing users {$a->from} to {$a->to} of {$a->total}.';
$string['requiredcriteria'] = 'Required criteria';
$string['restoringcompletiondata'] = 'Writing completion data';
+$string['roleaggregation'] = 'Condition requires';
+$string['roleaggregation_all'] = 'ALL selected roles to mark when the condition is met';
+$string['roleaggregation_any'] = 'ANY selected roles to mark when the condition is met';
$string['saved'] = 'Saved';
$string['seedetails'] = 'See details';
$string['self'] = 'Self';
$string['selfcompletion'] = 'Self completion';
$string['showinguser'] = 'Showing user';
-$string['unenrolingfromcourse'] = 'Unenroling from course';
+$string['unenrolingfromcourse'] = 'Unenrolling from course';
$string['unenrolment'] = 'Unenrolment';
$string['unit'] = 'Unit';
$string['unlockcompletion'] = 'Unlock completion options';