mirror of
https://github.com/moodle/moodle.git
synced 2025-03-14 12:40:01 +01:00
Merge branch 'MDL-30020c' of git://github.com/srynot4sale/moodle
This commit is contained in:
commit
f9e38429a8
@ -19,15 +19,14 @@
|
||||
*
|
||||
* @package block
|
||||
* @subpackage completion
|
||||
* @copyright 2009 Catalyst IT Ltd
|
||||
* @copyright 2009-2012 Catalyst IT Ltd
|
||||
* @author Aaron Barnes <aaronb@catalyst.net.nz>
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
|
||||
require_once($CFG->libdir.'/completionlib.php');
|
||||
require_once("{$CFG->libdir}/completionlib.php");
|
||||
|
||||
/**
|
||||
* Course completion status
|
||||
@ -36,25 +35,28 @@ require_once($CFG->libdir.'/completionlib.php');
|
||||
class block_completionstatus extends block_base {
|
||||
|
||||
public function init() {
|
||||
$this->title = get_string('pluginname', 'block_completionstatus');
|
||||
$this->title = get_string('pluginname', 'block_completionstatus');
|
||||
}
|
||||
|
||||
public function get_content() {
|
||||
global $USER, $CFG, $DB, $COURSE;
|
||||
global $USER;
|
||||
|
||||
// If content is cached
|
||||
if ($this->content !== NULL) {
|
||||
return $this->content;
|
||||
}
|
||||
|
||||
$course = $this->page->course;
|
||||
$context = context_course::instance($course->id);
|
||||
|
||||
// Create empty content
|
||||
$this->content = new stdClass;
|
||||
$this->content = new stdClass();
|
||||
|
||||
// Can edit settings?
|
||||
$can_edit = has_capability('moodle/course:update', context_course::instance($this->page->course->id));
|
||||
$can_edit = has_capability('moodle/course:update', $context);
|
||||
|
||||
// Get course completion data
|
||||
$info = new completion_info($this->page->course);
|
||||
$info = new completion_info($course);
|
||||
|
||||
// Don't display if completion isn't enabled!
|
||||
if (!completion_info::is_enabled_for_site()) {
|
||||
@ -84,9 +86,9 @@ class block_completionstatus extends block_base {
|
||||
// Check this user is enroled
|
||||
if (!$info->is_tracked_user($USER->id)) {
|
||||
// If not enrolled, but are can view the report:
|
||||
if (has_capability('report/completion:view', context_course::instance($COURSE->id))) {
|
||||
$this->content->text = '<a href="'.$CFG->wwwroot.'/report/completion/index.php?course='.$COURSE->id.
|
||||
'">'.get_string('viewcoursereport', 'completion').'</a>';
|
||||
if (has_capability('report/completion:view', $context)) {
|
||||
$report = new moodle_url('/report/completion/index.php', array('course' => $course->id));
|
||||
$this->content->text = '<a href="'.$report->out().'">'.get_string('viewcoursereport', 'completion').'</a>';
|
||||
return $this->content;
|
||||
}
|
||||
|
||||
@ -187,7 +189,7 @@ class block_completionstatus extends block_base {
|
||||
// Load course completion
|
||||
$params = array(
|
||||
'userid' => $USER->id,
|
||||
'course' => $COURSE->id
|
||||
'course' => $course->id
|
||||
);
|
||||
$ccompletion = new completion_completion($params);
|
||||
|
||||
@ -221,7 +223,8 @@ class block_completionstatus extends block_base {
|
||||
$this->content->text .= $shtml.'</tbody></table>';
|
||||
|
||||
// Display link to detailed view
|
||||
$this->content->footer = '<br><a href="'.$CFG->wwwroot.'/blocks/completionstatus/details.php?course='.$COURSE->id.'">'.get_string('moredetails', 'completion').'</a>';
|
||||
$details = new moodle_url('/blocks/completionstatus/details.php', array('course' => $course->id));
|
||||
$this->content->footer = '<br><a href="'.$details->out().'">'.get_string('moredetails', 'completion').'</a>';
|
||||
|
||||
return $this->content;
|
||||
}
|
||||
|
@ -19,27 +19,23 @@
|
||||
*
|
||||
* @package block
|
||||
* @subpackage completion
|
||||
* @copyright 2009 Catalyst IT Ltd
|
||||
* @copyright 2009-2012 Catalyst IT Ltd
|
||||
* @author Aaron Barnes <aaronb@catalyst.net.nz>
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
|
||||
require_once('../../config.php');
|
||||
require_once($CFG->libdir.'/completionlib.php');
|
||||
|
||||
|
||||
// TODO: Make this page Moodle 2.0 compliant
|
||||
require_once(dirname(__FILE__).'/../../config.php');
|
||||
require_once("{$CFG->libdir}/completionlib.php");
|
||||
|
||||
|
||||
///
|
||||
/// Load data
|
||||
///
|
||||
$id = required_param('course', PARAM_INT);
|
||||
// User id
|
||||
$userid = optional_param('user', 0, PARAM_INT);
|
||||
|
||||
// Load course
|
||||
$course = $DB->get_record('course', array('id' => $id));
|
||||
$course = $DB->get_record('course', array('id' => $id), '*', MUST_EXIST);
|
||||
|
||||
// Load user
|
||||
if ($userid) {
|
||||
@ -76,21 +72,13 @@ if (!$can_view) {
|
||||
// Load completion data
|
||||
$info = new completion_info($course);
|
||||
|
||||
$returnurl = "{$CFG->wwwroot}/course/view.php?id={$id}";
|
||||
$returnurl = new moodle_url('/course/view.php', array('id' => $id));
|
||||
|
||||
// Don't display if completion isn't enabled!
|
||||
if (!$info->is_enabled()) {
|
||||
print_error('completionnotenabled', 'completion', $returnurl);
|
||||
}
|
||||
|
||||
// Load criteria to display
|
||||
$completions = $info->get_completions($user->id);
|
||||
|
||||
// Check if this course has any criteria
|
||||
if (empty($completions)) {
|
||||
print_error('nocriteriaset', 'completion', $returnurl);
|
||||
}
|
||||
|
||||
// Check this user is enroled
|
||||
if (!$info->is_tracked_user($user->id)) {
|
||||
if ($USER->id == $user->id) {
|
||||
@ -104,6 +92,7 @@ if (!$info->is_tracked_user($user->id)) {
|
||||
///
|
||||
/// Display page
|
||||
///
|
||||
$PAGE->set_context(context_course::instance($course->id));
|
||||
|
||||
// Print header
|
||||
$page = get_string('completionprogressdetails', 'block_completionstatus');
|
||||
@ -111,7 +100,7 @@ $title = format_string($course->fullname) . ': ' . $page;
|
||||
|
||||
$PAGE->navbar->add($page);
|
||||
$PAGE->set_pagelayout('standard');
|
||||
$PAGE->set_url('/blocks/completionstatus/details.php', array('course' => $course->id));
|
||||
$PAGE->set_url('/blocks/completionstatus/details.php', array('course' => $course->id, 'user' => $user->id));
|
||||
$PAGE->set_title(get_string('course') . ': ' . $course->fullname);
|
||||
$PAGE->set_heading($title);
|
||||
echo $OUTPUT->header();
|
||||
@ -135,122 +124,148 @@ $coursecomplete = $info->is_course_complete($user->id);
|
||||
// Has this user completed any criteria?
|
||||
$criteriacomplete = $info->count_course_user_data($user->id);
|
||||
|
||||
// Load course completion
|
||||
$params = array(
|
||||
'userid' => $user->id,
|
||||
'course' => $course->id,
|
||||
);
|
||||
$ccompletion = new completion_completion($params);
|
||||
|
||||
if ($coursecomplete) {
|
||||
echo get_string('complete');
|
||||
} else if (!$criteriacomplete) {
|
||||
} else if (!$criteriacomplete && !$ccompletion->timestarted) {
|
||||
echo '<i>'.get_string('notyetstarted', 'completion').'</i>';
|
||||
} else {
|
||||
echo '<i>'.get_string('inprogress','completion').'</i>';
|
||||
}
|
||||
|
||||
echo '</td></tr>';
|
||||
echo '<tr><td colspan="2"><b>'.get_string('required').':</b> ';
|
||||
|
||||
// Get overall aggregation method
|
||||
$overall = $info->get_aggregation_method();
|
||||
// Load criteria to display
|
||||
$completions = $info->get_completions($user->id);
|
||||
|
||||
if ($overall == COMPLETION_AGGREGATION_ALL) {
|
||||
echo get_string('criteriarequiredall', 'completion');
|
||||
// Check if this course has any criteria
|
||||
if (empty($completions)) {
|
||||
echo '<tr><td colspan="2"><br />';
|
||||
echo $OUTPUT->box(get_string('err_nocriteria', 'completion'), 'noticebox');
|
||||
echo '</td></tr></tbody></table>';
|
||||
} else {
|
||||
echo get_string('criteriarequiredany', 'completion');
|
||||
}
|
||||
echo '<tr><td colspan="2"><b>'.get_string('required').':</b> ';
|
||||
|
||||
echo '</td></tr></tbody></table>';
|
||||
// Get overall aggregation method
|
||||
$overall = $info->get_aggregation_method();
|
||||
|
||||
// Generate markup for criteria statuses
|
||||
echo '<table class="generalbox boxaligncenter" cellpadding="3"><tbody>';
|
||||
echo '<tr class="ccheader">';
|
||||
echo '<th class="c0 header" scope="col">'.get_string('criteriagroup', 'block_completionstatus').'</th>';
|
||||
echo '<th class="c1 header" scope="col">'.get_string('criteria', 'completion').'</th>';
|
||||
echo '<th class="c2 header" scope="col">'.get_string('requirement', 'block_completionstatus').'</th>';
|
||||
echo '<th class="c3 header" scope="col">'.get_string('status').'</th>';
|
||||
echo '<th class="c4 header" scope="col">'.get_string('complete').'</th>';
|
||||
echo '<th class="c5 header" scope="col">'.get_string('completiondate', 'report_completion').'</th>';
|
||||
echo '</tr>';
|
||||
|
||||
// Save row data
|
||||
$rows = array();
|
||||
|
||||
global $COMPLETION_CRITERIA_TYPES;
|
||||
|
||||
// Loop through course criteria
|
||||
foreach ($completions as $completion) {
|
||||
$criteria = $completion->get_criteria();
|
||||
$complete = $completion->is_complete();
|
||||
|
||||
$row = array();
|
||||
$row['type'] = $criteria->criteriatype;
|
||||
$row['title'] = $criteria->get_title();
|
||||
$row['status'] = $completion->get_status();
|
||||
$row['timecompleted'] = $completion->timecompleted;
|
||||
$row['details'] = $criteria->get_details($completion);
|
||||
$rows[] = $row;
|
||||
}
|
||||
|
||||
// Print table
|
||||
$last_type = '';
|
||||
$agg_type = false;
|
||||
|
||||
foreach ($rows as $row) {
|
||||
|
||||
// Criteria group
|
||||
echo '<td class="c0">';
|
||||
if ($last_type !== $row['details']['type']) {
|
||||
$last_type = $row['details']['type'];
|
||||
echo $last_type;
|
||||
|
||||
// Reset agg type
|
||||
$agg_type = true;
|
||||
if ($overall == COMPLETION_AGGREGATION_ALL) {
|
||||
echo get_string('criteriarequiredall', 'completion');
|
||||
} else {
|
||||
// Display aggregation type
|
||||
if ($agg_type) {
|
||||
$agg = $info->get_aggregation_method($row['type']);
|
||||
|
||||
echo '(<i>';
|
||||
|
||||
if ($agg == COMPLETION_AGGREGATION_ALL) {
|
||||
echo strtolower(get_string('all', 'completion'));
|
||||
} else {
|
||||
echo strtolower(get_string('any', 'completion'));
|
||||
}
|
||||
|
||||
echo '</i> '.strtolower(get_string('required')).')';
|
||||
$agg_type = false;
|
||||
}
|
||||
echo get_string('criteriarequiredany', 'completion');
|
||||
}
|
||||
echo '</td>';
|
||||
|
||||
// Criteria title
|
||||
echo '<td class="c1">';
|
||||
echo $row['details']['criteria'];
|
||||
echo '</td>';
|
||||
echo '</td></tr></tbody></table>';
|
||||
|
||||
// Requirement
|
||||
echo '<td class="c2">';
|
||||
echo $row['details']['requirement'];
|
||||
echo '</td>';
|
||||
|
||||
// Status
|
||||
echo '<td class="c3">';
|
||||
echo $row['details']['status'];
|
||||
echo '</td>';
|
||||
|
||||
// Is complete
|
||||
echo '<td class="c4">';
|
||||
echo ($row['status'] === get_string('yes')) ? get_string('yes') : get_string('no');
|
||||
echo '</td>';
|
||||
|
||||
// Completion data
|
||||
echo '<td class="c5">';
|
||||
if ($row['timecompleted']) {
|
||||
echo userdate($row['timecompleted'], '%e %B %G');
|
||||
} else {
|
||||
echo '-';
|
||||
}
|
||||
echo '</td>';
|
||||
// Generate markup for criteria statuses
|
||||
echo '<table class="generalbox logtable boxaligncenter" id="criteriastatus" width="100%"><tbody>';
|
||||
echo '<tr class="ccheader">';
|
||||
echo '<th class="c0 header" scope="col">'.get_string('criteriagroup', 'block_completionstatus').'</th>';
|
||||
echo '<th class="c1 header" scope="col">'.get_string('criteria', 'completion').'</th>';
|
||||
echo '<th class="c2 header" scope="col">'.get_string('requirement', 'block_completionstatus').'</th>';
|
||||
echo '<th class="c3 header" scope="col">'.get_string('status').'</th>';
|
||||
echo '<th class="c4 header" scope="col">'.get_string('complete').'</th>';
|
||||
echo '<th class="c5 header" scope="col">'.get_string('completiondate', 'report_completion').'</th>';
|
||||
echo '</tr>';
|
||||
|
||||
// Save row data
|
||||
$rows = array();
|
||||
|
||||
// Loop through course criteria
|
||||
foreach ($completions as $completion) {
|
||||
$criteria = $completion->get_criteria();
|
||||
|
||||
$row = array();
|
||||
$row['type'] = $criteria->criteriatype;
|
||||
$row['title'] = $criteria->get_title();
|
||||
$row['status'] = $completion->get_status();
|
||||
$row['complete'] = $completion->is_complete();
|
||||
$row['timecompleted'] = $completion->timecompleted;
|
||||
$row['details'] = $criteria->get_details($completion);
|
||||
$rows[] = $row;
|
||||
}
|
||||
|
||||
// Print table
|
||||
$last_type = '';
|
||||
$agg_type = false;
|
||||
$oddeven = 0;
|
||||
|
||||
foreach ($rows as $row) {
|
||||
|
||||
echo '<tr class="r' . $oddeven . '">';
|
||||
|
||||
// Criteria group
|
||||
echo '<td class="cell c0">';
|
||||
if ($last_type !== $row['details']['type']) {
|
||||
$last_type = $row['details']['type'];
|
||||
echo $last_type;
|
||||
|
||||
// Reset agg type
|
||||
$agg_type = true;
|
||||
} else {
|
||||
// Display aggregation type
|
||||
if ($agg_type) {
|
||||
$agg = $info->get_aggregation_method($row['type']);
|
||||
|
||||
echo '(<i>';
|
||||
|
||||
if ($agg == COMPLETION_AGGREGATION_ALL) {
|
||||
echo strtolower(get_string('aggregateall', 'completion'));
|
||||
} else {
|
||||
echo strtolower(get_string('aggregateany', 'completion'));
|
||||
}
|
||||
|
||||
echo '</i> '.strtolower(get_string('required')).')';
|
||||
$agg_type = false;
|
||||
}
|
||||
}
|
||||
echo '</td>';
|
||||
|
||||
// Criteria title
|
||||
echo '<td class="cell c1">';
|
||||
echo $row['details']['criteria'];
|
||||
echo '</td>';
|
||||
|
||||
// Requirement
|
||||
echo '<td class="cell c2">';
|
||||
echo $row['details']['requirement'];
|
||||
echo '</td>';
|
||||
|
||||
// Status
|
||||
echo '<td class="cell c3">';
|
||||
echo $row['details']['status'];
|
||||
echo '</td>';
|
||||
|
||||
// Is complete
|
||||
echo '<td class="cell c4">';
|
||||
echo $row['complete'] ? get_string('yes') : get_string('no');
|
||||
echo '</td>';
|
||||
|
||||
// Completion data
|
||||
echo '<td class="cell c5">';
|
||||
if ($row['timecompleted']) {
|
||||
echo userdate($row['timecompleted'], get_string('strftimedate', 'langconfig'));
|
||||
} else {
|
||||
echo '-';
|
||||
}
|
||||
echo '</td>';
|
||||
echo '</tr>';
|
||||
// for row striping
|
||||
$oddeven = $oddeven ? 0 : 1;
|
||||
}
|
||||
|
||||
echo '</tbody></table>';
|
||||
}
|
||||
|
||||
echo '</tbody></table>';
|
||||
echo '<div class="buttons">';
|
||||
$courseurl = new moodle_url("/course/view.php", array('id' => $course->id));
|
||||
echo $OUTPUT->single_button($courseurl, get_string('returntocourse', 'block_completionstatus'), 'get');
|
||||
echo '</div>';
|
||||
|
||||
echo $OUTPUT->footer();
|
||||
|
@ -5,3 +5,4 @@ $string['criteriagroup'] = 'Criteria group';
|
||||
$string['firstofsecond'] = '{$a->first} of {$a->second}';
|
||||
$string['pluginname'] = 'Course completion status';
|
||||
$string['requirement'] = 'Requirement';
|
||||
$string['returntocourse'] = 'Return to course';
|
||||
|
Loading…
x
Reference in New Issue
Block a user