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:
moodler
2005-03-17 16:23:28 +00:00
parent cd8d4471c8
commit cbff94ba90
4 changed files with 3505 additions and 0 deletions
+178
View File
@@ -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>
+191
View File
@@ -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
View File
@@ -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
View File
File diff suppressed because it is too large Load Diff