diff --git a/completion/classes/manager.php b/completion/classes/manager.php
index f7eca84fb5b..97f8d7d4cd1 100644
--- a/completion/classes/manager.php
+++ b/completion/classes/manager.php
@@ -27,6 +27,7 @@
namespace core_completion;
use stdClass;
+use context_course;
/**
* Bulk activity completion manager class
@@ -117,4 +118,23 @@ class manager {
return $strings;
}
+ public function get_activities_and_resources() {
+ global $DB, $OUTPUT;
+ // Get enabled activities and resources.
+ $modules = $DB->get_records('modules', ['visible' => 1], 'name ASC');
+ $data = new stdClass();
+ $data->courseid = $this->courseid;
+ $data->sesskey = sesskey();
+ $data->helpicon = $OUTPUT->help_icon('temphelp', 'moodle');
+ // Add icon information.
+ $data->modules = array_values($modules);
+ $coursecontext = context_course::instance($this->courseid);
+ foreach ($data->modules as $module) {
+ $module->icon = $OUTPUT->pix_url('icon', $module->name)->out();
+ $module->formatedname = format_string(get_string('pluginname', 'mod_' . $module->name), true, ['context' => $coursecontext]);
+ }
+
+ return $data;
+ }
+
}
\ No newline at end of file
diff --git a/course/classes/output/bulk_activity_completion_renderer.php b/course/classes/output/bulk_activity_completion_renderer.php
index 0df8ca3ac5e..4f18b8aad2b 100644
--- a/course/classes/output/bulk_activity_completion_renderer.php
+++ b/course/classes/output/bulk_activity_completion_renderer.php
@@ -44,10 +44,16 @@ class core_course_bulk_activity_completion_renderer extends plugin_renderer_base
get_string('coursecompletion', 'completion')
);
+ $tabs[] = new tabobject(
+ 'defaultcompletion',
+ new moodle_url('/course/defaultcompletion.php', ['id' => $courseid]),
+ get_string('defaultcompletion', 'completion')
+ );
+
$tabs[] = new tabobject(
'bulkcompletion',
new moodle_url('/course/bulkcompletion.php', ['id' => $courseid]),
- get_string('bulkactivitycompletion', 'completion');
+ get_string('bulkactivitycompletion', 'completion')
);
return $this->tabtree($tabs, $page);
@@ -58,4 +64,8 @@ class core_course_bulk_activity_completion_renderer extends plugin_renderer_base
return parent::render_from_template('core_course/bulkactivitycompletion', $data);
}
+ public function defaultcompletion($data) {
+ return parent::render_from_template('core_course/defaultactivitycompletion', $data);
+ }
+
}
diff --git a/course/defaultcompletion.php b/course/defaultcompletion.php
new file mode 100644
index 00000000000..99ea48afcba
--- /dev/null
+++ b/course/defaultcompletion.php
@@ -0,0 +1,75 @@
+.
+
+/**
+ * Bulk activity completion selection
+ *
+ * @package core_completion
+ * @category completion
+ * @copyright 2017 Adrian Greeve
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+
+require_once(__DIR__.'/../config.php');
+require_once($CFG->dirroot.'/course/lib.php');
+require_once($CFG->libdir.'/completionlib.php');
+
+$id = required_param('id', PARAM_INT); // course id
+// @TODO: Change this to module IDs.
+$cmids = optional_param_array('cmid', [], PARAM_INT);
+
+// Perform some basic access control checks.
+if ($id) {
+
+ if($id == SITEID){
+ // Don't allow editing of 'site course' using this form.
+ print_error('cannoteditsiteform');
+ }
+
+ if (!$course = $DB->get_record('course', array('id' => $id))) {
+ print_error('invalidcourseid');
+ }
+ require_login($course);
+ require_capability('moodle/course:update', context_course::instance($course->id));
+
+} else {
+ require_login();
+ print_error('needcourseid');
+}
+
+// Set up the page.
+$PAGE->set_course($course);
+$PAGE->set_url('/course/bulkcompletion.php', array('id' => $course->id));
+$PAGE->set_title($course->shortname);
+$PAGE->set_heading($course->fullname);
+$PAGE->set_pagelayout('admin');
+
+// Get all that stuff I need for the renderer.
+$manager = new \core_completion\manager($id);
+$activityresourcedata = $manager->get_activities_and_resources();
+
+$renderer = $PAGE->get_renderer('core_course', 'bulk_activity_completion');
+
+// Print the form.
+echo $OUTPUT->header();
+echo $OUTPUT->heading(get_string('editcoursecompletionsettings', 'core_completion'));
+
+echo $renderer->navigation($id, 'defaultcompletion');
+
+echo $renderer->defaultcompletion($activityresourcedata);
+
+echo $OUTPUT->footer();
diff --git a/course/templates/defaultactivitycompletion.mustache b/course/templates/defaultactivitycompletion.mustache
new file mode 100644
index 00000000000..f40548d77c8
--- /dev/null
+++ b/course/templates/defaultactivitycompletion.mustache
@@ -0,0 +1,94 @@
+{{!
+ This file is part of Moodle - http://moodle.org/
+
+ Moodle is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ Moodle is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Moodle. If not, see