First cut of cleaned-up CDC gradebook. I've renamed some database fields,
moved things around, tried to make it more moodly. Still needs plenty of work!
This commit is contained in:
@@ -0,0 +1,178 @@
|
||||
<script language="JavaScript" type="text/javascript">
|
||||
<!-- Begin
|
||||
|
||||
<?php
|
||||
// javascript objects for excluded students
|
||||
foreach ($listmembers as $grade_itemid => $listmember) {
|
||||
echo "grade_item$grade_itemid = new Object();\n";
|
||||
$useridstring = "grade_item$grade_itemid.userid = new Array(";
|
||||
$usernamestring = "grade_item$grade_itemid.username = new Array(";
|
||||
$max = count($listmember);
|
||||
$count = 0;
|
||||
foreach ($listmember as $userid => $username) {
|
||||
$count++;
|
||||
$useridstring .= "\"$userid\"";
|
||||
$usernamestring .= "\"$username\"";
|
||||
if ($count < $max) {
|
||||
$useridstring .= ', ';
|
||||
$usernamestring .= ', ';
|
||||
}
|
||||
}
|
||||
$useridstring .= ");\n";
|
||||
$usernamestring .= ");\n";
|
||||
|
||||
echo $useridstring;
|
||||
echo $usernamestring;
|
||||
}
|
||||
|
||||
// javascript objects for included students
|
||||
foreach ($nonmembers as $grade_itemid => $listmember) {
|
||||
echo "grade_item_inc$grade_itemid = new Object();\n";
|
||||
$useridstring = "grade_item_inc$grade_itemid.userid = new Array(";
|
||||
$usernamestring = "grade_item_inc$grade_itemid.username = new Array(";
|
||||
$max = count($listmember);
|
||||
$count = 0;
|
||||
foreach ($listmember as $userid => $username) {
|
||||
$count++;
|
||||
$useridstring .= "\"$userid\"";
|
||||
$usernamestring .= "\"$username\"";
|
||||
if ($count < $max) {
|
||||
$useridstring .= ', ';
|
||||
$usernamestring .= ', ';
|
||||
}
|
||||
}
|
||||
$useridstring .= ");\n";
|
||||
$usernamestring .= ");\n";
|
||||
|
||||
echo $useridstring;
|
||||
echo $usernamestring;
|
||||
}
|
||||
?>
|
||||
|
||||
function updategrade_item() {
|
||||
document.form1.grade_itemid.value = document.form2.grade_items.value;
|
||||
document.form3.grade_itemid.value = document.form2.grade_items.value;
|
||||
}
|
||||
|
||||
|
||||
function updateMembers(selectgrade_item) {
|
||||
eval('grade_item=grade_item'+selectgrade_item.value);
|
||||
|
||||
username = grade_item.username;
|
||||
userid = grade_item.userid;
|
||||
|
||||
document.form3['members[]'].length = username.length;
|
||||
|
||||
for (i=0;i<username.length;i++) {
|
||||
document.form3['members[]'].options[i].value = userid[i];
|
||||
document.form3['members[]'].options[i].text = username[i];
|
||||
}
|
||||
|
||||
eval('grade_item_inc=grade_item_inc'+selectgrade_item.value);
|
||||
|
||||
username = grade_item_inc.username;
|
||||
userid = grade_item_inc.userid;
|
||||
|
||||
document.form1['nonmembers[]'].length = username.length;
|
||||
|
||||
for (i=0;i<username.length;i++) {
|
||||
document.form1['nonmembers[]'].options[i].value = userid[i];
|
||||
document.form1['nonmembers[]'].options[i].text = username[i];
|
||||
}
|
||||
|
||||
updategrade_item();
|
||||
}
|
||||
|
||||
// end hiding script -->
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
<table border="0" cellspacing="2" cellpadding="5" align="center" class="generalbox">
|
||||
<tr>
|
||||
<th colspan=3>
|
||||
<?php
|
||||
print get_string('gradeexceptions','grades');
|
||||
helpbutton('coursegradeexceptions',get_string('gradeexceptionshelp','grades'), 'gradebook');
|
||||
?>
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="33%" align="center" class="generaltableheader"><?php p($strgrade_itemnonmembers) ?></td>
|
||||
<td width="33%" align="center" class="generaltableheader"><?php p($strgrade_items) ?></td>
|
||||
<td width="33%" align="center" class="generaltableheader"><?php p($strgrade_itemmembersselected) ?></td>
|
||||
</tr>
|
||||
<tr align="center" valign="top">
|
||||
<td class="generalboxcontent">
|
||||
<form name="form1" id="form1" method="post" action="exceptions.php">
|
||||
<input type="hidden" name="id" value="<?php p($course->id) ?>" />
|
||||
<input type="hidden" name="grade_itemid" value="<?php p($selectedgrade_item) ?>" />
|
||||
<input type="hidden" name="action" value="excepts" />
|
||||
<input type="hidden" name="sesskey" value="<?php p($USER->sesskey) ?>"/>
|
||||
<select name="nonmembers[]" size="15" multiple="multiple">
|
||||
<?php
|
||||
if (!empty($nonmembers[$selectedgrade_item])) {
|
||||
foreach ($nonmembers[$selectedgrade_item] as $id => $nonmembername) {
|
||||
echo "<option value=\"$id\">$nonmembername</option>";
|
||||
}
|
||||
}
|
||||
?>
|
||||
</select>
|
||||
<p>
|
||||
<input type="submit" name="nonmembersadd" value="<?php p($strgrade_itemaddusers) ?>"
|
||||
onclick="updategrade_item()" />
|
||||
</p>
|
||||
</form>
|
||||
</td>
|
||||
<td class="generalboxcontent">
|
||||
<form name="form2" id="form2" method="post" action="grade_items.php">
|
||||
<input type="hidden" name="id" value="<?php p($course->id) ?>" />
|
||||
<input type="hidden" name="action" value="excepts" />
|
||||
<input type="hidden" name="sesskey" value="<?php p($USER->sesskey) ?>"/>
|
||||
<select name="grade_items" size="15" onchange="updateMembers(this)">
|
||||
<?php
|
||||
if (!empty($listgrade_items)) {
|
||||
foreach ($listgrade_items as $id => $listgrade_item) {
|
||||
$selected = '';
|
||||
if ($id == $selectedgrade_item) {
|
||||
$selected = 'selected="selected"';
|
||||
}
|
||||
echo "<option $selected value=\"$id\">$listgrade_item</option>";
|
||||
}
|
||||
}
|
||||
?>
|
||||
</select>
|
||||
</form>
|
||||
</td>
|
||||
|
||||
|
||||
<td class="generalboxcontent">
|
||||
<form name="form3" id="form3" method="post" action="exceptions.php">
|
||||
<input type="hidden" name="id" value="<?php p($course->id) ?>" />
|
||||
<input type="hidden" name="grade_itemid" value="<?php p($selectedgrade_item) ?>" />
|
||||
<input type="hidden" name="sesskey" value="<?php p($USER->sesskey) ?>"/>
|
||||
<input type="hidden" name="action" value="excepts" />
|
||||
<select name="members[]" size="15" multiple="multiple">
|
||||
<?php
|
||||
if (!empty($listmembers[$selectedgrade_item])) {
|
||||
foreach ($listmembers[$selectedgrade_item] as $id => $membername) {
|
||||
echo "<option value=\"$id\">$membername</option>";
|
||||
}
|
||||
}
|
||||
?>
|
||||
</select>
|
||||
<p>
|
||||
<input type="submit" name="membersremove" value="<?php p($strgrade_itemremovemembers) ?>"
|
||||
onclick="updategrade_item()" />
|
||||
</p>
|
||||
</form>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<script language="JavaScript">
|
||||
<!-- Begin
|
||||
<?php
|
||||
echo 'updateMembers('.$selectedgrade_item.');';
|
||||
?>
|
||||
// end hiding script -->
|
||||
</script>
|
||||
@@ -0,0 +1,191 @@
|
||||
<?php
|
||||
|
||||
require_once("../config.php");
|
||||
require_once("lib.php");
|
||||
|
||||
if (isset($_REQUEST['action']) && !$action) {
|
||||
$action = $_REQUEST['action'];
|
||||
}
|
||||
|
||||
require_variable($id); // course id
|
||||
optional_variable($download);
|
||||
if (! $course = get_record("course", "id", $id)) {
|
||||
error(get_string('errornocourse','grades'));
|
||||
}
|
||||
|
||||
require_login($course->id);
|
||||
|
||||
if (! $course = get_record("course", "id", $id)) {
|
||||
error(get_string('incorrectcourseid', 'grades'));
|
||||
}
|
||||
|
||||
if (!isset($USER->editing)) {
|
||||
$USER->editing = false;
|
||||
}
|
||||
|
||||
$editing = false;
|
||||
|
||||
if (isteacheredit($course->id)) {
|
||||
if (isset($edit)) {
|
||||
if ($edit == "on") {
|
||||
$USER->editing = true;
|
||||
} else if ($edit == "off") {
|
||||
$USER->editing = false;
|
||||
}
|
||||
}
|
||||
|
||||
$editing = $USER->editing;
|
||||
}
|
||||
|
||||
require_variable($id); // course id
|
||||
|
||||
require_login($course->id);
|
||||
|
||||
if (!$course = get_record("course", "id", $id)) {
|
||||
error(get_string('incorrectcourseid', 'grades'));
|
||||
}
|
||||
|
||||
$preferences = grade_get_preferences();
|
||||
|
||||
$loggedinas = "<p class=\"logininfo\">".user_login_string($course, $USER)."</p>";
|
||||
|
||||
if (isteacher()) {
|
||||
if (isset($_REQUEST['student'])) {
|
||||
$student = $_REQUEST['student'];
|
||||
}
|
||||
if (!isset($student)) {
|
||||
$student = -1;
|
||||
}
|
||||
}
|
||||
else {
|
||||
$student = $USER->id;
|
||||
}
|
||||
|
||||
$grade_menu = grade_get_grades_menu();
|
||||
|
||||
print_header("$course->shortname", "$course->fullname", $grade_menu,"", "", true, grade_preferences_button(), $loggedinas);
|
||||
grade_preferences_menu();
|
||||
grade_set_uncategorized();
|
||||
|
||||
|
||||
/// We are in editing mode. First, process any inputs there may be.
|
||||
|
||||
if ($data = data_submitted()) {
|
||||
// make sure it is safe to process data
|
||||
if (!empty($USER->id)) {
|
||||
if (!confirm_sesskey()) {
|
||||
error(get_string('confirmsesskeybad', 'error'));
|
||||
}
|
||||
}
|
||||
|
||||
if (!empty($data->nonmembersadd)) { /// Add people to a grade_item
|
||||
if (!empty($data->nonmembers) and !empty($data->grade_itemid)) {
|
||||
$grade_itemmodified = false;
|
||||
foreach ($data->nonmembers as $userid) {
|
||||
$record->courseid = $course->id;
|
||||
$record->grade_itemid = $data->grade_itemid;
|
||||
$record->userid = $userid;
|
||||
if (!record_exists('grade_exceptions','courseid',$course->id,'grade_itemid',$data->grade_itemid,'userid',$userid)) {
|
||||
if (!insert_record('grade_exceptions', $record)) {
|
||||
notify(get_string('addexceptionerror','grades').$userid.':'.$data->grade_itemid);
|
||||
}
|
||||
}
|
||||
$grade_itemmodified = true;
|
||||
}
|
||||
}
|
||||
$selectedgrade_item = $data->grade_itemid;
|
||||
|
||||
} else if (!empty($data->membersremove)) { /// Remove selected people from a particular grade_item
|
||||
|
||||
if (!empty($data->members) and !empty($data->grade_itemid)) {
|
||||
foreach ($data->members as $userid) {
|
||||
delete_records('grade_exceptions', 'userid', $userid, "grade_itemid", $data->grade_itemid, 'course', $course->id);
|
||||
}
|
||||
}
|
||||
$selectedgrade_item = $data->grade_itemid;
|
||||
}
|
||||
}
|
||||
if (isset($selectedgrade_item)) {
|
||||
clean_param($selectedgrade_item, PARAM_CLEAN);
|
||||
}
|
||||
|
||||
/// Calculate data ready to create the editing interface
|
||||
|
||||
$strgrade_itemnonmembers = get_string('grade_itemnonmembers','grades');
|
||||
$strgrade_itemmembersselected = get_string('grade_itemmembersselected','grades');
|
||||
$strgrade_itemremovemembers = get_string('grade_itemremovemembers','grades');
|
||||
$strgrade_iteminfomembers = get_string('grade_iteminfomembers','grades');
|
||||
$strgrade_itemadd = get_string('grade_itemadd','grades');
|
||||
$strgrade_itemremove = get_string('grade_itemremove','grades');
|
||||
$strgrade_iteminfo = get_string('grade_iteminfo','grades');
|
||||
$strgrade_iteminfopeople = get_string('grade_iteminfopeople','grades');
|
||||
$strgrade_itemrandomassign = get_string('grade_itemrandomassign','grades');
|
||||
$strgrade_itemaddusers = get_string('grade_itemaddusers','grades');
|
||||
$strgrade_items = get_string('grade_items','grades');
|
||||
$courseid = $course->id;
|
||||
$listgrade_items = array();
|
||||
$listmembers = array();
|
||||
$nonmembers = array();
|
||||
$grade_items = array();
|
||||
$grade_items = get_records('grade_item', 'courseid', $course->id);
|
||||
$grade_itemcount = count($grade_items);
|
||||
|
||||
// we need to create a multidimensional array keyed by grade_itemid with all_students at each level
|
||||
if (isset($grade_items)) {
|
||||
foreach($grade_items as $grade_item) {
|
||||
$nonmembers[$grade_item->id] = array();
|
||||
if ($students = get_course_students($course->id)) {
|
||||
foreach ($students as $student) {
|
||||
$nonmembers[$grade_item->id][$student->id] = fullname($student, true);
|
||||
}
|
||||
unset($students);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if ($grade_items) {
|
||||
foreach ($grade_items as $grade_item) {
|
||||
$modname = get_record('modules', 'id', $grade_item->modid);
|
||||
$itemname = get_record($modname->name, 'id', $grade_item->cminstance, 'course', $course->id);
|
||||
$grade_item->name = $itemname->name;
|
||||
$countusers = 0;
|
||||
$listmembers[$grade_item->id] = array();
|
||||
if ($grade_itemexceptions = grade_get_grade_item_exceptions($grade_item->id)) {
|
||||
foreach ($grade_itemexceptions as $grade_itemexception) {
|
||||
$listmembers[$grade_item->id][$grade_itemexception->userid] = $nonmembers[$grade_item->id][$grade_itemexception->userid];
|
||||
unset($nonmembers[$grade_item->id][$grade_itemexception->userid]);
|
||||
$countusers++;
|
||||
}
|
||||
}
|
||||
$listgrade_items[$grade_item->id] = $grade_item->name." ($countusers)";
|
||||
if (!isset($grade_item->name)) {
|
||||
// these were items that have since been deleted
|
||||
unset($listgrade_items[$grade_item->id]);
|
||||
delete_records('grade_item', 'id', $grade_item->id);
|
||||
}
|
||||
natcasesort($listmembers[$grade_item->id]);
|
||||
natcasesort($nonmembers[$grade_item->id]);
|
||||
}
|
||||
natcasesort($listgrade_items);
|
||||
}
|
||||
|
||||
if (empty($selectedgrade_item)) { // Choose the first group by default
|
||||
$selectedgrade_item = array_shift(array_keys($listgrade_items));
|
||||
}
|
||||
|
||||
include('exceptions.html');
|
||||
|
||||
print_footer($course);
|
||||
exit;
|
||||
|
||||
function grade_get_grade_item_exceptions($id) {
|
||||
global $CFG;
|
||||
global $course;
|
||||
|
||||
$sql = "SELECT ge.id, ge.userid FROM {$CFG->prefix}grade_exceptions ge, {$CFG->prefix}user_students us WHERE us.course=$course->id AND grade_itemid=$id AND ge.userid = us.userid AND us.course=ge.courseid";
|
||||
$grade_exceptions = get_records_sql($sql);
|
||||
return $grade_exceptions;
|
||||
}
|
||||
|
||||
?>
|
||||
+192
@@ -0,0 +1,192 @@
|
||||
<?PHP
|
||||
require_once("../config.php");
|
||||
require_once("lib.php");
|
||||
|
||||
$action = optional_param('action');
|
||||
if (!isset($action)) {
|
||||
$action = 'grades';
|
||||
}
|
||||
|
||||
require_variable($id); // course id
|
||||
optional_variable($download);
|
||||
if (! $course = get_record("course", "id", $id)) {
|
||||
error(get_string('errornocourse','grades'));
|
||||
}
|
||||
|
||||
if (isset($_REQUEST['group'])) {
|
||||
$group = clean_param($_REQUEST['group'], PARAM_INT);
|
||||
}
|
||||
else {
|
||||
$group = NULL;
|
||||
}
|
||||
|
||||
require_login($course->id);
|
||||
|
||||
if (! $course = get_record("course", "id", $id)) {
|
||||
error(get_string('incorrectcourseid', 'grades'));
|
||||
}
|
||||
|
||||
if (!isset($USER->editing)) {
|
||||
$USER->editing = false;
|
||||
}
|
||||
|
||||
$editing = false;
|
||||
|
||||
if (isteacheredit($course->id)) {
|
||||
if (isset($edit)) {
|
||||
if ($edit == "on") {
|
||||
$USER->editing = true;
|
||||
} else if ($edit == "off") {
|
||||
$USER->editing = false;
|
||||
}
|
||||
}
|
||||
|
||||
$editing = $USER->editing;
|
||||
}
|
||||
|
||||
// if the user set new prefs make sure they happen now
|
||||
if ($action == 'set_grade_preferences') {
|
||||
grade_set_grade_preferences();
|
||||
}
|
||||
|
||||
$preferences = grade_get_preferences();
|
||||
|
||||
// we want this in it's own window
|
||||
if ($action == 'stats') {
|
||||
grade_stats();
|
||||
exit();
|
||||
}
|
||||
elseif ($action == 'excel') {
|
||||
grade_download_excel();
|
||||
exit();
|
||||
}
|
||||
elseif ($action == 'text') {
|
||||
grade_download_text();
|
||||
exit();
|
||||
}
|
||||
|
||||
$loggedinas = user_login_string($course, $USER);
|
||||
|
||||
if (isteacher($course->id)) {
|
||||
if (isset($_REQUEST['student'])) {
|
||||
$student = clean_param($_REQUEST['student'], PARAM_CLEAN);
|
||||
}
|
||||
else if (!isset($student)) {
|
||||
$student = -1;
|
||||
}
|
||||
}
|
||||
else {
|
||||
$student = $USER->id;
|
||||
}
|
||||
|
||||
$grade_menu = grade_get_grades_menu();
|
||||
|
||||
print_header($course->shortname, $course->fullname, $grade_menu,"", "", true, grade_preferences_button(), $loggedinas);
|
||||
grade_preferences_menu();
|
||||
grade_set_uncategorized();
|
||||
|
||||
if (isteacher($course->id)) {
|
||||
switch ($action) {
|
||||
case "cats":
|
||||
grade_set_categories();
|
||||
break;
|
||||
case "insert_category":
|
||||
grade_insert_category();
|
||||
grade_set_categories();
|
||||
break;
|
||||
case "assign_categories":
|
||||
grade_assign_categories();
|
||||
grade_set_categories();
|
||||
break;
|
||||
case "set_grade_weights":
|
||||
grade_set_grade_weights();
|
||||
grade_display_grade_weights();
|
||||
break;
|
||||
case "weights":
|
||||
grade_display_grade_weights();
|
||||
break;
|
||||
case "grades":
|
||||
if ($preferences->use_advanced == 1) {
|
||||
grade_view_all_grades($student);
|
||||
}
|
||||
else {
|
||||
// all the grades will be in the 'uncategorized' category
|
||||
grade_view_category_grades($student);
|
||||
}
|
||||
break;
|
||||
case "vcats":
|
||||
grade_view_category_grades($student);
|
||||
break;
|
||||
case "prefs":
|
||||
grade_display_grade_preferences();
|
||||
break;
|
||||
case "set_grade_preferences":
|
||||
grade_display_grade_preferences();
|
||||
break;
|
||||
case "letters":
|
||||
grade_display_letter_grades();
|
||||
break;
|
||||
case "set_letter_grades":
|
||||
grade_set_letter_grades();
|
||||
grade_display_letter_grades();
|
||||
break;
|
||||
case "delete_category":
|
||||
grade_delete_category();
|
||||
// re-run set_uncategorized as they may have deleted a category that had items in it
|
||||
grade_set_uncategorized();
|
||||
grade_set_categories();
|
||||
break;
|
||||
case "view_student_grades":
|
||||
grade_view_student_grades();
|
||||
break;
|
||||
case "view_student_category_grades":
|
||||
grade_view_student_category_grades();
|
||||
break;
|
||||
default:
|
||||
if ($preferences->use_advanced == 1) {
|
||||
grade_view_all_grades($student);
|
||||
}
|
||||
else {
|
||||
grade_view_category_grades($student);
|
||||
}
|
||||
} // end switch
|
||||
} // end if isTeacher
|
||||
else {
|
||||
if ($preferences->show_weighted || $preferences->show_points || $preferences->show_points)
|
||||
{
|
||||
// teacher has set to show student something
|
||||
$student = $USER->id;
|
||||
switch ($action) {
|
||||
case "view_student_category_grades":
|
||||
grade_view_student_category_grades();
|
||||
break;
|
||||
case "view_student_grades":
|
||||
if ($preferences->use_advanced == 1) {
|
||||
grade_view_student_grades();
|
||||
}
|
||||
else {
|
||||
grade_view_student_category_grades();
|
||||
}
|
||||
break;
|
||||
case "vcats":
|
||||
grade_view_category_grades($student);
|
||||
break;
|
||||
default:
|
||||
if ($preferences->use_advanced == 1) {
|
||||
grade_view_student_grades($student);
|
||||
}
|
||||
else {
|
||||
grade_view_student_category_grades();
|
||||
}
|
||||
break;
|
||||
} // end switch
|
||||
} // end if display something
|
||||
else {
|
||||
error(get_string('gradebookhiddenerror','grades'));
|
||||
}
|
||||
} // end else (!teacher)
|
||||
|
||||
print_footer($course);
|
||||
|
||||
|
||||
?>
|
||||
+2944
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user