Browse Source

first commit

master
Sesostris Vieira 11 years ago
commit
e831ee94c5
  1. 96
      action.php
  2. 43
      db/access.php
  3. 32
      db/install.php
  4. 480
      index.php
  5. 50
      lang/en/report_ilbenrol.php
  6. 46
      lang/pt_br/report_ilbenrol.php
  7. 67
      lib.php
  8. 65
      report_form.php
  9. 16
      settings.php
  10. 7
      styles.css
  11. 94
      textrotate.js
  12. 30
      version.php

96
action.php

@ -0,0 +1,96 @@
<?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/>.
/**
* Wrapper script redirecting user operations to correct destination.
*
* @copyright 1999 Martin Dougiamas http://dougiamas.com
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
* @package user
*/
require_once("../../config.php");
require("{$CFG->dirroot}/enrol/locallib.php");
$action = required_param('formaction', PARAM_TEXT);
$id = required_param('id', PARAM_INT);
$users = optional_param_array('user', array(), PARAM_INT);
$returnto = required_param('returnto', PARAM_TEXT);
if (!confirm_sesskey()) {
print_error('confirmsesskeybad');
}
if (count($users) == 0) {
print_error('invalidformdata', '', $returnto);
}
$role_confirmed = get_config(null, 'report_ilbenrol_confirmed');
$role_revoked = get_config(null, 'report_ilbenrol_revoked');
if (!$role_confirmed or !$role_revoked) {
print_error('invalidargorconf');
}
$course = $DB->get_record('course',array('id'=>$id));
if (!$course) {
print_error('invalidcourseid');
}
require_login($course);
$context = context_course::instance($course->id);
$manager = new course_enrolment_manager($PAGE, $course);
$roles = $manager->get_all_roles();
$PAGE->set_heading($course->fullname);
$PAGE->set_url('/user/action.php', array('action'=>$action,'id'=>$id));
$PAGE->set_pagelayout('report');
$PAGE->set_title(get_string('title','report_ilbenrol'));
$PAGE->set_heading($course->fullname);
require_login($course);
require_capability('report/ilbenrol:view',$context);
if (!array_key_exists($role_confirmed, $roles) or !array_key_exists($role_revoked, $roles)) {
print_error('invalidargorconf');
}
echo $OUTPUT->header();
if ($action === 'confirmenrol') {
$from_role = $roles[$role_revoked];
$to_role = $roles[$role_confirmed];
} else if ($action === 'revokeenrol') {
$from_role = $roles[$role_confirmed];
$to_role = $roles[$role_revoked];
} else {
print_error('unknownuseraction');
}
echo "<ul>";
foreach ($users as $userid=>$nothing) {
$user = $DB->get_record('user', array('id'=>$userid), '*', MUST_EXIST);
echo '<li>' . get_string('changeduser', 'report_ilbenrol', array('user'=>fullname($user), 'from'=>$from_role->localname, 'to'=>$to_role->localname)) . '</li>';
$manager->assign_role_to_user($to_role->id, $user->id);
$manager->unassign_role_from_user($user->id, $from_role->id);
}
echo '</ul><br/>';
echo "<a href=\"{$returnto}\">".get_string('return', 'report_ilbenrol').'</a>';
echo $OUTPUT->footer();

43
db/access.php

@ -0,0 +1,43 @@
<?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/>.
/**
* Capabilities
*
* @package report_progress
* @copyright 2008 Sam Marshall
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
defined('MOODLE_INTERNAL') || die();
$capabilities = array(
'report/ilbenrol:view' => array(
'riskbitmask' => RISK_PERSONAL,
'captype' => 'read',
'contextlevel' => CONTEXT_COURSE,
'archetypes' => array(
'teacher' => CAP_ALLOW,
'editingteacher' => CAP_ALLOW,
'manager' => CAP_ALLOW
),
'clonepermissionsfrom' => 'coursereport/progress:view',
)
);

32
db/install.php

@ -0,0 +1,32 @@
<?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/>.
/**
* Post installation and migration code.
*
* @package report
* @subpackage progress
* @copyright 2011 Petr Skoda {@link http://skodak.org}
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
defined('MOODLE_INTERNAL') || die;
function xmldb_report_ilbenrol_install() {
global $DB;
}

480
index.php

@ -0,0 +1,480 @@
<?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/>.
/**
* ILB Enrol Confirmation reports
*
* @package report
* @subpackage ilbenrol
* @copyright 2008 Sam Marshall
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
require('../../config.php');
require("{$CFG->dirroot}/enrol/locallib.php");
require_once('report_form.php');
require_once("$CFG->dirroot/user/profile/lib.php");
define('ILBENROL_REPORT_PAGE', 25);
// Get course
$id = required_param('course',PARAM_INT);
$course = $DB->get_record('course',array('id'=>$id));
if (!$course) {
print_error('invalidcourseid');
}
$context = context_course::instance($course->id);
// Sort (default lastname, optionally firstname)
$sort = optional_param('sort','timecreated',PARAM_ALPHA);
// CSV format
$format = optional_param('format','',PARAM_ALPHA);
$excel = $format == 'excelcsv';
$csv = $format == 'csv' || $excel;
// Paging
$start = optional_param('start', 0, PARAM_INT);
$sifirst = optional_param('sifirst', 'all', PARAM_ALPHA);
$silast = optional_param('silast', 'all', PARAM_ALPHA);
// User profile fields to filter
$filterfields = explode(',', get_config(null, 'report_ilbenrol_filterfields'));
$filterfields = $DB->get_records_list('user_info_field', 'shortname', $filterfields);
function csv_quote($value) {
global $excel;
if ($excel) {
return textlib::convert('"'.str_replace('"',"'",$value).'"','UTF-8','UTF-16LE');
} else {
return '"'.str_replace('"',"'",$value).'"';
}
}
$url = new moodle_url('/report/ilbenrol/index.php', array('course'=>$id));
if ($sort !== '') {
$url->param('sort', $sort);
}
if ($format !== '') {
$url->param('format', $format);
}
if ($start !== 0) {
$url->param('start', $start);
}
$PAGE->set_url($url);
$PAGE->set_pagelayout('report');
require_login($course);
// Check basic permission
require_capability('report/ilbenrol:view',$context);
// Get group mode
$group = groups_get_course_group($course,true); // Supposed to verify group
if ($group===0 && $course->groupmode==SEPARATEGROUPS) {
require_capability('moodle/site:accessallgroups',$context);
}
// Get data for user filtering
$manager = new course_enrolment_manager($PAGE, $course);
$roles = $manager->get_all_roles();
$mform = new filter_form($course->id, $filterfields);
$instances = $manager->get_enrolment_instances();
$contextids = $context->get_parent_context_ids(true);
// Generate where clause
$where = array();
$where_params = array();
if ($sifirst !== 'all') {
$where[] = $DB->sql_like('u.firstname', ':sifirst', false);
$where_params['sifirst'] = $sifirst.'%';
}
if ($silast !== 'all') {
$where[] = $DB->sql_like('u.lastname', ':silast', false);
$where_params['silast'] = $silast.'%';
}
$whereors = array();
if ($formdata = $mform->get_data()) {
foreach ($filterfields as $field) {
$shortname = $field->shortname;
if (array_key_exists($shortname, $formdata)) {
list($in_options, $param_options) = $DB->get_in_or_equal(array_keys($formdata->$shortname), SQL_PARAMS_NAMED);
$whereors[] = "(uid.fieldid = {$field->id} AND uid.data {$in_options})";
$where_params = $where_params + $param_options;
}
}
}
list($in_instances, $param_instances) = $DB->get_in_or_equal(array_keys($instances), SQL_PARAMS_NAMED);
list($in_contexts, $param_contexts) = $DB->get_in_or_equal($contextids, SQL_PARAMS_NAMED);
list($in_fields, $param_fields) = $DB->get_in_or_equal(array_keys($filterfields), SQL_PARAMS_NAMED);
$params = $param_instances + $param_contexts + $param_fields;
// Get data to summary table
$dados = $DB->get_records_sql_menu("SELECT uid.fieldid||'-'||ra.roleid||'-'||uid.data, count(distinct u.id)
FROM {user} u
JOIN {user_enrolments} ue ON (ue.userid = u.id AND ue.enrolid {$in_instances})
JOIN {role_assignments} ra ON (ra.userid = u.id AND ra.contextid {$in_contexts})
LEFT JOIN {user_info_data} uid ON (uid.userid = u.id AND uid.fieldid {$in_fields})
GROUP BY uid.fieldid, ra.roleid, uid.data", $params);
// Get data to User List table
$whereorstr = implode(' OR ', $whereors);
if ($whereorstr) {
$where[] = "({$whereorstr})";
}
$wherestr = implode(' AND ', $where);
$sql = "SELECT DISTINCT u.id, u.firstname, u.lastname, u.email, ue.timecreated
FROM {user} u
JOIN {user_enrolments} ue ON (ue.userid = u.id AND ue.enrolid {$in_instances})
JOIN {role_assignments} ra ON (ra.userid = u.id AND ra.contextid {$in_contexts})
LEFT JOIN {user_info_data} uid ON (uid.userid = u.id AND uid.fieldid {$in_fields})";
if ($wherestr) {
$sql .= " WHERE {$wherestr}";
}
if ($sort == 'timecreated') {
$sql .= ' ORDER BY ue.timecreated';
} else {
$sql .= " ORDER BY u.{$sort}";
}
$userlist = $DB->get_records_sql($sql, $params + $where_params);
$total = count($userlist);
if ($csv && $userlist) { // Only show CSV if there are some users
$shortname = format_string($course->shortname, true, array('context' => $context));
header('Content-Disposition: attachment; filename=ilbenrol.'.
preg_replace('/[^a-z0-9-]/','_',textlib::strtolower(strip_tags($shortname))).'.csv');
// Unicode byte-order mark for Excel
if ($excel) {
header('Content-Type: text/csv; charset=UTF-16LE');
print chr(0xFF).chr(0xFE);
$sep="\t".chr(0);
$line="\n".chr(0);
} else {
header('Content-Type: text/csv; charset=UTF-8');
$sep=",";
$line="\n";
}
} else {
// Navigation and header
$PAGE->set_title(get_string('title','report_ilbenrol'));
$PAGE->set_heading($course->fullname);
echo $OUTPUT->header();
// $PAGE->requires->js('/report/ilbenrol/textrotate.js');
// $PAGE->requires->js_function_call('textrotate_init', null, true);
// Handle groups (if enabled)
groups_print_course_menu($course,$CFG->wwwroot.'/report/ilbenrol/?course='.$course->id);
// Print filter form
$mform->display();
// Print summary table
$thead = array('');
$talign = array('left');
foreach ($roles as $role) {
$thead[] = $role->localname;
$talign[] = 'right';
}
foreach ($filterfields as $field) {
$options = explode("\n", $field->param1);
$data = array();
foreach($options as $option) {
$row = array($option);
foreach ($roles as $role) {
if (isset($dados["{$field->id}-{$role->id}-{$option}"])) {
$row[] = $dados["{$field->id}-{$role->id}-{$option}"];
} else {
$row[] = "";
}
}
$data[] = $row;
}
$thead[0] = $field->name;
$table = new html_table();
$table->align = $talign;
$table->head = $thead;
$table->data = $data;
echo html_writer::table($table);
}
}
// If no users in this filter
if (!$userlist) {
echo $OUTPUT->container(get_string('err_nousers', 'completion'), 'errorbox errorboxcontent');
echo $OUTPUT->footer();
exit;
}
// Build link for paging
$link = $CFG->wwwroot.'/report/ilbenrol/?course='.$course->id;
if (strlen($sort)) {
$link .= '&amp;sort='.$sort;
}
$link .= '&amp;start=';
// Build the the page by Initial bar
$initials = array('first', 'last');
$alphabet = explode(',', get_string('alphabet', 'langconfig'));
$pagingbar = '';
foreach ($initials as $initial) {
$var = 'si'.$initial;
$othervar = $initial == 'first' ? 'silast' : 'sifirst';
$othervar = $$othervar != 'all' ? "&amp;{$othervar}={$$othervar}" : '';
$pagingbar .= ' <div class="initialbar '.$initial.'initial">';
$pagingbar .= get_string($initial.'name').':&nbsp;';
if ($$var == 'all') {
$pagingbar .= '<strong>'.get_string('all').'</strong> ';
}
else {
$pagingbar .= "<a href=\"{$link}{$othervar}\">".get_string('all').'</a> ';
}
foreach ($alphabet as $letter) {
if ($$var === $letter) {
$pagingbar .= '<strong>'.$letter.'</strong> ';
}
else {
$pagingbar .= "<a href=\"$link&amp;$var={$letter}{$othervar}\">$letter</a> ";
}
}
$pagingbar .= '</div>';
}
// Do we need a paging bar?
if ($total > ILBENROL_REPORT_PAGE) {
// Paging bar
$pagingbar .= '<div class="paging">';
$pagingbar .= get_string('page').': ';
$sistrings = array();
if ($sifirst != 'all') {
$sistrings[] = "sifirst={$sifirst}";
}
if ($silast != 'all') {
$sistrings[] = "silast={$silast}";
}
$sistring = !empty($sistrings) ? '&amp;'.implode('&amp;', $sistrings) : '';
// Display previous link
if ($start > 0) {
$pstart = max($start - ILBENROL_REPORT_PAGE, 0);
$pagingbar .= "(<a class=\"previous\" href=\"{$link}{$pstart}{$sistring}\">".get_string('previous').'</a>)&nbsp;';
}
// Create page links
$curstart = 0;
$curpage = 0;
while ($curstart < $total) {
$curpage++;
if ($curstart == $start) {
$pagingbar .= '&nbsp;'.$curpage.'&nbsp;';
} else {
$pagingbar .= "&nbsp;<a href=\"{$link}{$curstart}{$sistring}\">$curpage</a>&nbsp;";
}
$curstart += ILBENROL_REPORT_PAGE;
}
// Display next link
$nstart = $start + ILBENROL_REPORT_PAGE;
if ($nstart < $total) {
$pagingbar .= "&nbsp;(<a class=\"next\" href=\"{$link}{$nstart}{$sistring}\">".get_string('next').'</a>)';
}
$pagingbar .= '</div>';
}
// Okay, let's draw the table of user info,
// Start of table
if (!$csv) {
print '<br class="clearer"/>'; // ugh
print $pagingbar;
if (!$total) {
echo $OUTPUT->heading(get_string('nothingtodisplay'));
echo $OUTPUT->footer();
exit;
}
print '<form action="action.php" method="post" id="participantsform">';
print '<div id="completion-progress-wrapper" class="no-overflow">';
print '<table id="completion-progress" class="generaltable flexible boxaligncenter" style="text-align:left"><thead><tr style="vertical-align:top">';
print '<th scope="col" class="completion-identifyfield">'.get_string('select').'</th>';
// User heading / sort option
print '<th scope="col" class="completion-sortchoice">';
$sistring = "&amp;silast={$silast}&amp;sifirst={$sifirst}";
if ($sort == 'firstname') {
print get_string('firstname')." / <a href=\"./?course={$course->id}&amp;sort=lastname{$sistring}\">".
get_string('lastname').'</a>';
} else if ($sort == 'lastname') {
print "<a href=\"./?course={$course->id}&amp;sort=firstname{$sistring}\">".
get_string('firstname').'</a> / '.
get_string('lastname');
} else {
print "<a href=\"./?course={$course->id}&amp;sort=firstname{$sistring}\">".
get_string('firstname')."</a> / <a href=\"./?course={$course->id}&amp;sort=lastname{$sistring}\">".
get_string('lastname').'</a>';
}
print '</th><th scope="col" class="completion-identifyfield">'.get_user_field_name('email').'</th>';
if ($sort == 'timecreated') {
print '<th scope="col" class="completion-sortchoice">'.
get_string('timecreated', 'report_ilbenrol').'</th>';
} else {
print '<th scope="col" class="completion-sortchoice">'.
"<a href=\"./?course={$course->id}&amp;sort=timecreated{$sistring}\">".
get_string('timecreated', 'report_ilbenrol').'</a></th>';
}
print '<th scope="col" class="completion-sortchoice">'.get_string('userroles', 'report_ilbenrol').'</td>';
} else {
echo csv_quote(get_user_field_name('fullname'));
echo $sep . csv_quote(get_user_field_name('email'));
echo $sep . csv_quote(get_string('timecreated', 'report_ilbenrol'));
echo $sep . csv_quote(get_string('userroles', 'report_ilbenrol'));
}
// User fields header
foreach ($filterfields as $field) {
if ($csv) {
print $sep.csv_quote(strip_tags($field->name)).$sep;
} else {
$formattedname = format_string($field->name, true, array('context' => $context));
print '<th scope="col" class="completion-identifyfield">' . $formattedname . '</th>';
}
}
if ($csv) {
print $line;
}
// Row for each user
foreach($userlist as $user) {
$profile = profile_user_record($user->id);
$user_roles = $manager->get_user_roles($user->id);
$display_roles = array();
foreach ($user_roles as $rid=>$rassignable) {
$display_roles[] = $roles[$rid]->localname;
}
$display_roles = implode(', ', $display_roles);
if ($csv) {
print csv_quote(fullname($user));
echo $sep . csv_quote($user->email);
echo $sep . csv_quote(userdate($user->timecreated));
echo $sep . csv_quote($display_roles);
foreach ($filterfields as $field) {
if (array_key_exists($field->shortname, $profile)) {
$data = $profile->{$field->shortname};
} else {
$data = '';
}
echo $sep . csv_quote($data);
}
} else {
print '<tr><th><input type="checkbox" class="usercheckbox" name="user['.$user->id.']" /></th>';
print '<th scope="row"><a href="'.$CFG->wwwroot.'/user/view.php?id='.
$user->id.'&amp;course='.$course->id.'">'.fullname($user).'</a></th>';
echo '<td>' . s($user->email) . '</td>';
echo '<td>' . s(userdate($user->timecreated)) . '</td>';
echo '<td>' . s($display_roles) . '</td>';
foreach ($filterfields as $field) {
if (array_key_exists($field->shortname, $profile)) {
$data = $profile->{$field->shortname};
} else {
$data = '';
}
echo '<td>' . s($data) . '</td>';
}
}
if ($csv) {
print $line;
} else {
print '</tr>';
}
}
if ($csv) {
exit;
}
print '</tbody></table>';
print '</div>';
print $pagingbar;
// Bulk operations
if (!$csv) {
echo '<br /><div class="buttons">';
echo '<input type="button" id="checkall" value="'.get_string('selectall').'" /> ';
echo '<input type="button" id="checknone" value="'.get_string('deselectall').'" /> ';
echo '</form>';
$module = array('name'=>'core_user', 'fullpath'=>'/user/module.js');
$PAGE->requires->js_init_call('M.core_user.init_participation', null, false, $module);
$displaylist = array();
$displaylist['confirmenrol'] = get_string('confirmenrol', 'report_ilbenrol');
$displaylist['revokeenrol'] = get_string('revokeenrol', 'report_ilbenrol');
echo $OUTPUT->help_icon('withselectedusers', 'report_ilbenrol');
echo html_writer::tag('label', get_string("withselectedusers"), array('for'=>'formactionid'));
echo html_writer::select($displaylist, 'formaction', '', array(''=>'choosedots'), array('id'=>'formactionid'));
echo '<input type="hidden" name="id" value="'.$course->id.'" />';
echo '<input type="hidden" name="sesskey" value="'.sesskey().'" />';
echo '<input type="hidden" name="returnto" value="'.s($PAGE->url->out(false)).'" />';
echo '<noscript style="display:inline">';
echo '<div><input type="submit" value="'.get_string('ok').'" /></div>';
echo '</noscript>';
}
print '<ul class="progress-actions"><li><a href="index.php?course='.$course->id.
'&amp;format=csv">'.get_string('csvdownload','completion').'</a></li>
<li><a href="index.php?course='.$course->id.'&amp;format=excelcsv">'.
get_string('excelcsvdownload','completion').'</a></li></ul>';
echo $OUTPUT->footer();

50
lang/en/report_ilbenrol.php

@ -0,0 +1,50 @@
<?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/>.
/**
* Lang strings
*
* @package report
* @subpackage progress
* @copyright 2008 Sam Marshall
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
$string['pluginname'] = 'ILB Enrol Confirmation';
$string['title'] = 'ILB Enrol Confirmation Report';
$string['filter'] = 'Filters';
$string['filterfields'] = 'Filter fields';
$string['userroles'] = 'User roles';
$string['confirmed'] = 'Role to confirmed enrollment';
$string['confirmeddescription'] = 'Role to confirmed enrollments';
$string['revoked'] = 'Role to revoked enrollment';
$string['revokeddescription'] = 'Role to revoked enrollment';
$string['changeduser'] = 'User <strong>{$a->user}</strong> changed from role <strong>{$a->from}</strong> to <strong>{$a->to}</strong>';
$string['return'] = 'Return';
$string['total'] = 'Totals';
$string['applyfilter'] = 'Apply filters';
$string['email'] = 'Email address';
$string['timecreated'] = 'Enrol date';
$string['confirmenrol'] = 'Confirm enrol';
$string['revokeenrol'] = 'Revoke enrol';
$string['withselectedusers'] = 'With selected users...';
$string['withselectedusers_help'] = '* Confirm enrol - To define users role as students<br/>
* Revoke enrol - To reset the students back to unstudent status';
$string['filterfieldsdescription'] = 'Profile fields that will be added to filter report form';
$string['page-report-progress-x'] = 'Any activity completion report';
$string['page-report-progress-index'] = 'Activity completion report';
$string['page-report-progress-user'] = 'User activity completion report';
$string['ilbenrol:view'] = 'View ILB Enrol Confirmation reports';

46
lang/pt_br/report_ilbenrol.php

@ -0,0 +1,46 @@
<?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/>.
/**
* Lang strings
*
* @package report
* @subpackage progress
* @copyright 2008 Sam Marshall
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
$string['pluginname'] = 'Confirmação de matrícula ILB';
$string['title'] = 'Relatório de confirmação de matrícula';
$string['filter'] = 'Filtros';
$string['filterfields'] = 'Campos de filtragem';
$string['userroles'] = 'Funções';
$string['confirmed'] = 'Função para matrícula confirmada';
$string['confirmeddescription'] = 'Função para matrícula confirmada';
$string['revoked'] = 'Função para matrícula revogada';
$string['revokeddescription'] = 'Função para matrícula revogada';
$string['changeduser'] = 'Usuário <strong>{$a->user}</strong> alterado da função <strong>{$a->from}</strong> para <strong>{$a->to}</strong>';
$string['return'] = 'Voltar';
$string['total'] = 'Totais';
$string['applyfilter'] = 'Aplicar filtros';
$string['timecreated'] = 'Data de inscrição';
$string['confirmenrol'] = 'Confirmar matrícula';
$string['revokeenrol'] = 'Revogar matrícula';
$string['withselectedusers'] = 'Com usuários selecionados...';
$string['withselectedusers_help'] = '* Confirmar matrícula - Para definir a função dos usuários como alunos<br/>
* Revogar matrícula - Para voltar os estudantes para o estado de pré-inscrição';
$string['filterfieldsdescription'] = 'Campos de perfil que serão adicionados ao formulário de filtro do relatório';
$string['ilbenrol:view'] = 'Ver relatórios de confirmation de matrículas do ILB';

67
lib.php

@ -0,0 +1,67 @@
<?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/>.
/**
* This file contains functions used by the progress report
*
* @package report
* @subpackage progress
* @copyright 2009 Sam Hemelryk
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
defined('MOODLE_INTERNAL') || die;
/**
* This function extends the navigation with the report items
*
* @param navigation_node $navigation The navigation node to extend
* @param stdClass $course The course to object for the report
* @param stdClass $context The context of the course
*/
function report_ilbenrol_extend_navigation_course($navigation, $course, $context) {
global $CFG, $OUTPUT;
$showonnavigation = has_capability('report/ilbenrol:view', $context);
$group = groups_get_course_group($course,true); // Supposed to verify group
if($group===0 && $course->groupmode==SEPARATEGROUPS) {
$showonnavigation = ($showonnavigation && has_capability('moodle/site:accessallgroups', $context));
}
$showonnavigation = ($showonnavigation && get_config(null, 'report_ilbenrol_filterfields') !== "");
if ($showonnavigation) {
$url = new moodle_url('/report/ilbenrol/index.php', array('course'=>$course->id));
$navigation->add(get_string('pluginname','report_ilbenrol'), $url, navigation_node::TYPE_SETTING, null, null, new pix_icon('i/report', ''));
}
}
/**
* Return a list of page types
* @param string $pagetype current page type
* @param stdClass $parentcontext Block's parent context
* @param stdClass $currentcontext Current context of block
* @return array
*/
function report_ilbenrol_page_type_list($pagetype, $parentcontext, $currentcontext) {
$array = array(
'*' => get_string('page-x', 'pagetype'),
'report-*' => get_string('page-report-x', 'pagetype'),
'report-ilbenrol-*' => get_string('page-report-ilbenrol-x', 'report_ilbenrol'),
'report-ilbenrol-index' => get_string('page-report-ilbenrol-index', 'report_ilbenrol'),
);
return $array;
}

65
report_form.php

@ -0,0 +1,65 @@
<?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/>.
/**
* This file defines the user filter form
*
* @package report-ilbenrol
* @copyrigth 2014 Interlegis (http://www.interlegis.leg.br)
*
* @author Sesostris Vieira
*
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.0.html
*/
if (!defined('MOODLE_INTERNAL')) {
die('Direct access to this script is forbidden.');
}
require_once("$CFG->libdir/formslib.php");
class filter_form extends moodleform {
protected $_courseid;
protected $_filterfields;
function filter_form($courseid, $filterfields, $action=null, $customdata=null, $method='post', $target='', $attributes=null, $editable=true) {
$this->_filterfields = $filterfields;
$this->_courseid = $courseid;
parent::moodleform($action, $customdata, $method, $target, $attributes, $editable);
}
public function definition() {
global $CFG;
$mform = $this->_form; // Don't forget the underscore!
$courseid = $this->_courseid;
$filterfields = $this->_filterfields;
$mform->addElement('header', 'filter', get_string('filter', 'report_ilbenrol'));
foreach ($filterfields as $field) {
$mform->addElement('static', $field->shortname, $field->name, '');
$options = explode("\n", $field->param1);
foreach ($options as $option) {
$mform->addElement('checkbox', "{$field->shortname}[$option]", $option);
}
}
$mform->addElement('submit', 'filterbutton', get_string('applyfilter', 'report_ilbenrol'));
$mform->addElement('hidden', 'course', $courseid);
}
}

16
settings.php

@ -0,0 +1,16 @@
<?php
defined('MOODLE_INTERNAL') || die;
if ($ADMIN->fulltree) {
$choices = $DB->get_records_menu('user_info_field', array('datatype'=>'menu'), 'name', 'shortname, name');
$roles = role_fix_names(get_all_roles(), context_system::instance(), ROLENAME_ORIGINAL);
$rolechoices = array();
foreach ($roles as $role) {
$rolechoices[$role->id] = $role->localname;
}
$settings->add(new admin_setting_configmulticheckbox('report_ilbenrol_filterfields', get_string('filterfields', 'report_ilbenrol'), get_string('filterfieldsdescription', 'report_ilbenrol'), '', $choices));
$settings->add(new admin_setting_configselect('report_ilbenrol_confirmed', get_string('confirmed', 'report_ilbenrol'), get_string('confirmeddescription', 'report_ilbenrol'), '', $rolechoices));
$settings->add(new admin_setting_configselect('report_ilbenrol_revoked', get_string('revoked', 'report_ilbenrol'), get_string('revokeddescription', 'report_ilbenrol'), '', $rolechoices));
}

7
styles.css

@ -0,0 +1,7 @@
#page-report-progress-index #completion-progress th,
#page-report-progress-index #completion-progress td {padding:2px 4px;font-weight:normal;border-right: 1px solid #EEE;}
#page-report-progress-index .progress-actions {text-align:center;}
#page-report-progress-index .completion_pagingbar {margin:1em 0;text-align:center;}
#page-report-progress-index .completion_prev {display:inline;margin-right:2em;}
#page-report-progress-index .completion_pagingbar p {display:inline;margin:0;}
#page-report-progress-index .completion_next {display:inline;margin-left:2em;}

94
textrotate.js

@ -0,0 +1,94 @@
var SVGNS='http://www.w3.org/2000/svg',XLINKNS='http://www.w3.org/1999/xlink';
function textrotate_make_svg(el)
{
var string=el.firstChild.nodeValue;
// Add absolute-positioned string (to measure length)
var abs=document.createElement('div');
abs.appendChild(document.createTextNode(string));
abs.style.position='absolute';
el.parentNode.insertBefore(abs,el);
var textWidth=abs.offsetWidth,textHeight=abs.offsetHeight;
el.parentNode.removeChild(abs);
// Create SVG
var svg=document.createElementNS(SVGNS,'svg');
svg.setAttribute('version','1.1');
var width=(textHeight*9)/8;
svg.setAttribute('width',width);
svg.setAttribute('height',textWidth+20);
// Add text
var text=document.createElementNS(SVGNS,'text');
svg.appendChild(text);
text.setAttribute('x',textWidth);
text.setAttribute('y',-textHeight/4);
text.setAttribute('text-anchor','end');
text.setAttribute('transform','rotate(90)');
text.appendChild(document.createTextNode(string));
// Is there an icon near the text?
var icon=el.parentNode.firstChild;
if(icon.nodeName.toLowerCase()=='img') {
el.parentNode.removeChild(icon);
var image=document.createElementNS(SVGNS,'image');
var iconx=el.offsetHeight/4;
if(iconx>width-16) iconx=width-16;
image.setAttribute('x',iconx);
image.setAttribute('y',textWidth+4);
image.setAttribute('width',16);
image.setAttribute('height',16);
image.setAttributeNS(XLINKNS,'href',icon.src);
svg.appendChild(image);
}
// Replace original content with this new SVG
el.parentNode.insertBefore(svg,el);
el.parentNode.removeChild(el);
}
function browser_supports_svg() {
return document.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure", "1.1");
}
function textrotate_init() {
if (!browser_supports_svg()) {
// Feature detect, else bail.
return;
}
YUI().use('yui2-dom', function(Y) {
var elements= Y.YUI2.util.Dom.getElementsByClassName('completion-activityname', 'span');
for(var i=0;i<elements.length;i++)
{
var el=elements[i];
el.parentNode.parentNode.parentNode.style.verticalAlign='bottom';
textrotate_make_svg(el);
}
elements= Y.YUI2.util.Dom.getElementsByClassName('completion-expected', 'div');
for(var i=0;i<elements.length;i++)
{
var el=elements[i];
el.style.display='inline';
var parent=el.parentNode;
parent.removeChild(el);
parent.insertBefore(el,parent.firstChild);
textrotate_make_svg(el.firstChild);
}
elements= Y.YUI2.util.Dom.getElementsByClassName('rotateheaders', 'table');
for(var i=0;i<elements.length;i++)
{
var table=elements[i];
var headercells = Y.YUI2.util.Dom.getElementsByClassName('header', 'th', table);
for(var j=0;j<headercells.length;j++)
{
var el=headercells[j];
textrotate_make_svg(el.firstChild);
}
}
});
}

30
version.php

@ -0,0 +1,30 @@
<?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/>.
/**
* Version details
*
* @package report
* @subpackage progress
* @copyright 2008 Sam Marshall
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
defined('MOODLE_INTERNAL') || die;
$plugin->version = 2013050100; // The current plugin version (Date: YYYYMMDDXX)
$plugin->requires = 2013050100; // Requires this Moodle version
$plugin->component = 'report_ilbenrol'; // Full name of the plugin (used for diagnostics)
Loading…
Cancel
Save