MDL-70781 course: setting for displaying completion conditions
authorSimey Lameze <simey@moodle.com>
Mon, 8 Mar 2021 22:42:09 +0000 (06:42 +0800)
committerJun Pataleta <jun@moodle.com>
Fri, 2 Apr 2021 13:56:22 +0000 (21:56 +0800)
Part of MDL-70817

admin/settings/courses.php
course/edit_form.php
lang/en/completion.php
lib/completionlib.php
lib/db/install.xml
lib/db/upgrade.php
version.php

index c6fce34..4d00f5c 100644 (file)
@@ -170,6 +170,17 @@ if ($hassiteconfig or has_any_capability($capabilities, $systemcontext)) {
     $temp->add(new admin_setting_configselect('moodlecourse/enablecompletion', new lang_string('completion', 'completion'),
         new lang_string('enablecompletion_help', 'completion'), 1, array(0 => new lang_string('no'), 1 => new lang_string('yes'))));
 
+    // Display completion conditions.
+    $temp->add(new admin_setting_heading('showcompletionconditions',
+        new lang_string('showcompletionconditions', 'completion'), ''));
+    $temp->add(new admin_setting_configselect('moodlecourse/showcompletionconditions',
+        new lang_string('showcompletionconditions', 'completion'),
+        new lang_string('showcompletionconditions_help', 'completion'), 1, [
+            0 => new lang_string('no'),
+            1 => new lang_string('yes')
+        ]
+    ));
+
     // Groups.
     $temp->add(new admin_setting_heading('groups', new lang_string('groups', 'group'), ''));
     $choices = array();
index 399ea7a..3233a4d 100644 (file)
@@ -317,6 +317,12 @@ class course_edit_form extends moodleform {
             $mform->addElement('selectyesno', 'enablecompletion', get_string('enablecompletion', 'completion'));
             $mform->setDefault('enablecompletion', $courseconfig->enablecompletion);
             $mform->addHelpButton('enablecompletion', 'enablecompletion', 'completion');
+
+            $showcompletionconditions = $courseconfig->showcompletionconditions ?? COMPLETION_SHOW_CONDITIONS;
+            $mform->addElement('selectyesno', 'showcompletionconditions', get_string('showcompletionconditions', 'completion'));
+            $mform->addHelpButton('showcompletionconditions', 'showcompletionconditions', 'completion');
+            $mform->setDefault('showcompletionconditions', $showcompletionconditions);
+            $mform->hideIf('showcompletionconditions', 'enablecompletion', 'eq', COMPLETION_HIDE_CONDITIONS);
         } else {
             $mform->addElement('hidden', 'enablecompletion');
             $mform->setType('enablecompletion', PARAM_INT);
index 1d2ab75..fd35b94 100644 (file)
@@ -221,6 +221,8 @@ $string['seedetails'] = 'See details';
 $string['select'] = 'Select';
 $string['self'] = 'Self';
 $string['selfcompletion'] = 'Self completion';
+$string['showcompletionconditions'] = 'Show completion conditions';
+$string['showcompletionconditions_help'] = 'The activity completion conditions are displayed in the list of activities on the course page.';
 $string['showinguser'] = 'Showing user';
 $string['unenrolingfromcourse'] = 'Unenrolling from course';
 $string['unenrolment'] = 'Unenrolment';
index 0b920fe..e72de6e 100644 (file)
@@ -141,6 +141,15 @@ define('COMPLETION_AGGREGATION_ALL', 1);
  */
 define('COMPLETION_AGGREGATION_ANY', 2);
 
+/**
+ * Completion conditions will be displayed to user.
+ */
+define('COMPLETION_SHOW_CONDITIONS', 1);
+
+/**
+ * Completion conditions will be hidden from user.
+ */
+define('COMPLETION_HIDE_CONDITIONS', 0);
 
 /**
  * Utility function for checking if the logged in user can view
index 01a1fcd..433a5fc 100644 (file)
         <FIELD NAME="cacherev" TYPE="int" LENGTH="10" NOTNULL="true" DEFAULT="0" SEQUENCE="false" COMMENT="Incrementing revision for validating the course content cache"/>
         <FIELD NAME="originalcourseid" TYPE="int" LENGTH="10" NOTNULL="false" SEQUENCE="false" COMMENT="the id of the source course when a new course originates from a restore of another course on the same site."/>
         <FIELD NAME="showactivitydates" TYPE="int" LENGTH="4" NOTNULL="true" DEFAULT="0" SEQUENCE="false" COMMENT="Whether to display activity dates to user. 0 = do not display, 1 = display activity dates"/>
+        <FIELD NAME="showcompletionconditions" TYPE="int" LENGTH="1" NOTNULL="true" DEFAULT="1" SEQUENCE="false" COMMENT="Whether to display completion conditions to user. 0 = do not display, 1 = display conditions"/>
       </FIELDS>
       <KEYS>
         <KEY NAME="primary" TYPE="primary" FIELDS="id"/>
index 998e94e..69c232a 100644 (file)
@@ -2535,5 +2535,19 @@ function xmldb_main_upgrade($oldversion) {
         upgrade_main_savepoint(true, 2021033100.00);
     }
 
+    if ($oldversion < 2021033100.01) {
+        // Define field 'showcompletionconditions' to be added to course.
+        $table = new xmldb_table('course');
+        $field = new xmldb_field('showcompletionconditions', XMLDB_TYPE_INTEGER, '1', null,
+            XMLDB_NOTNULL, null, '1', 'completionnotify');
+
+        if (!$dbman->field_exists($table, $field)) {
+            $dbman->add_field($table, $field);
+        }
+
+        // Main savepoint reached.
+        upgrade_main_savepoint(true, 2021033100.01);
+    }
+
     return true;
 }
index 7444238..95b8cc5 100644 (file)
@@ -29,7 +29,7 @@
 
 defined('MOODLE_INTERNAL') || die();
 
-$version  = 2021033100.00;              // 20201109      = branching date YYYYMMDD - do not modify!
+$version  = 2021033100.01;              // 20201109      = branching date YYYYMMDD - do not modify!
                                         //         RR    = release increments - 00 in DEV branches.
                                         //           .XX = incremental changes.
 $release  = '3.11dev+ (Build: 20210330)';// Human-friendly version name