mirror of
https://github.com/moodle/moodle.git
synced 2025-04-14 04:52:36 +02:00
MDL-58140 completion: Default completion page.
Part of MDL-58138 epic
This commit is contained in:
parent
0b6208018f
commit
e8a71f8509
@ -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;
|
||||
}
|
||||
|
||||
}
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
75
course/defaultcompletion.php
Normal file
75
course/defaultcompletion.php
Normal file
@ -0,0 +1,75 @@
|
||||
<?php
|
||||
|
||||
// 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 <http://www.gnu.org/licenses/>.
|
||||
|
||||
/**
|
||||
* 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();
|
94
course/templates/defaultactivitycompletion.mustache
Normal file
94
course/templates/defaultactivitycompletion.mustache
Normal file
@ -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 <http://www.gnu.org/licenses/>.
|
||||
}}
|
||||
{{!
|
||||
@template core_course/defaultactivitycompletion
|
||||
|
||||
Activity completion selector.
|
||||
|
||||
Example context (json):
|
||||
{
|
||||
"courseid": "2",
|
||||
"sesskey": "AAAAAA",
|
||||
"modules": [{
|
||||
"id": "10",
|
||||
"formatedname": "Assignment",
|
||||
"icon": {
|
||||
"attributes": [
|
||||
{"name": "src", "value": "https://raw.githubusercontent.com/moodle/moodle/master/pix/t/check.png"},
|
||||
{"name": "alt", "value": "Assignment icon"}
|
||||
]
|
||||
}
|
||||
}]
|
||||
}
|
||||
}}
|
||||
<div class="container-fluid">
|
||||
<div class="row m-b-2">
|
||||
<div class="col">{{#str}}bulkactivitydetail, moodle{{/str}}</div>
|
||||
</div>
|
||||
<form method="post" action="defaultcompletion.php" class="mform">
|
||||
<div class="row m-b-2">
|
||||
<div class="col">
|
||||
<input type="submit" value="{{#str}}edit{{/str}}" class="btn btn-primary" name="submitbutton" aria-label="{{#str}}updateactivities, completion{{/str}}" />
|
||||
<input type="reset" value="{{#str}}cancel{{/str}}" class="btn btn-secondary" aria-label="{{#str}}resetactivities, completion{{/str}}" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="top-section row m-b-1">
|
||||
<div class="col-sm-6">
|
||||
<input type="checkbox" class="mastercheck m-r-1" aria-label="{{#str}}checkall, completion{{/str}}">
|
||||
<label class="font-weight-bold">{{#str}}activitieslabel, moodle{{/str}}</label>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<label class="font-weight-bold">{{#str}}completiontracking, moodle{{/str}}</label>
|
||||
<span>{{{helpicon}}}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modules">
|
||||
{{#modules}}
|
||||
<div class="module-section m-b-1">
|
||||
<div class="row m-b-1">
|
||||
<div class="col-sm-12">
|
||||
<input type="checkbox" class="m-r-1" name="modids[]" value="{{id}}" aria-label="{{#str}}checkactivity, completion, {{formatedname}}{{/str}}">
|
||||
<img src={{icon}} />
|
||||
<span>{{formatedname}}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{/modules}}
|
||||
</div>
|
||||
<input type="hidden" name="id" value="{{courseid}}" />
|
||||
<input type="hidden" name="sesskey" value="{{sesskey}}" />
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<input type="submit" value="{{#str}}edit{{/str}}" class="btn btn-primary" name="submitbutton" />
|
||||
<input type="reset" value="{{#str}}cancel{{/str}}" class="btn btn-secondary" />
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
{{#js}}
|
||||
require([
|
||||
'jquery',
|
||||
], function($) {
|
||||
$('.mastercheck').click(function() {
|
||||
var checked = $('.mastercheck').is(':checked');
|
||||
$('input[type=checkbox]').each(function() {
|
||||
$(this).prop('checked', checked);
|
||||
});
|
||||
});
|
||||
});
|
||||
{{/js}}
|
@ -115,6 +115,7 @@ $string['csvdownload'] = 'Download in spreadsheet format (UTF-8 .csv)';
|
||||
$string['datepassed'] = 'Date passed';
|
||||
$string['days'] = 'Days';
|
||||
$string['daysoftotal'] = '{$a->days} of {$a->total}';
|
||||
$string['defaultcompletion'] = 'Default activity completion';
|
||||
$string['deletecompletiondata'] = 'Delete completion data';
|
||||
$string['dependencies'] = 'Dependencies';
|
||||
$string['dependenciescompleted'] = 'Completion of other courses';
|
||||
|
@ -1157,6 +1157,10 @@ span.editinstructions {
|
||||
border-bottom: 1px solid #ccc;
|
||||
}
|
||||
|
||||
.module-section {
|
||||
border-bottom: 1px solid #ccc;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Display sizes:
|
||||
|
@ -1144,6 +1144,9 @@ span.editinstructions {
|
||||
}
|
||||
}
|
||||
|
||||
.module-section {
|
||||
border-bottom: 1px solid #ccc;
|
||||
}
|
||||
|
||||
/**
|
||||
* Display sizes:
|
||||
|
@ -6884,6 +6884,9 @@ span.editinstructions {
|
||||
.top-section label {
|
||||
font-weight: bold;
|
||||
}
|
||||
.module-section {
|
||||
border-bottom: 1px solid #ccc;
|
||||
}
|
||||
/**
|
||||
* Display sizes:
|
||||
* Large displays 1200 +
|
||||
|
Loading…
x
Reference in New Issue
Block a user