[Aimmath-commit] moodle/mod/math_assignment view.php,1.11,1.12
Brought to you by:
gustav_delius,
npstrick
|
From: <ma...@us...> - 2003-09-22 19:54:41
|
Update of /cvsroot/aimmath/moodle/mod/math_assignment
In directory sc8-pr-cvs1:/tmp/cvs-serv12121/mod/math_assignment
Modified Files:
view.php
Log Message:
Removed paging, implemented a first attempt at the UI for sorting. SQL completely reworked to work faster and nicer.
Index: view.php
===================================================================
RCS file: /cvsroot/aimmath/moodle/mod/math_assignment/view.php,v
retrieving revision 1.11
retrieving revision 1.12
diff -C2 -d -r1.11 -r1.12
*** view.php 22 Sep 2003 01:13:01 -0000 1.11
--- view.php 22 Sep 2003 19:54:35 -0000 1.12
***************
*** 11,17 ****
optional_variable($q); // assignment ID
optional_variable($download, ""); // to download data
! optional_variable($sort, "lastname ASC"); // column and direction to sort
! optional_variable($page, 1); // page to display
! optional_variable($pagerows, 100); // number of students to display per page
if (! $site = get_site()) {
--- 11,16 ----
optional_variable($q); // assignment ID
optional_variable($download, ""); // to download data
! optional_variable($sort, "lastname"); // column to sort
! optional_variable($sortdir, "asc"); // direction to sort
if (! $site = get_site()) {
***************
*** 72,119 ****
// verify that the sort string is correct
! $sort = explode(" ", $sort);
! if (count($sort) != 2) {
! $sort[0] = "lastname"; // not valid so use default instead
! $sort[1] = "ASC";
! }
! $sortgrade = 0;
! if (strcasecmp($sort[0], "lastname") != 0) { // check for field name in most likely used order
! if (strcasecmp($sort[0], "firstname") != 0) { // to improve speed
! if (strcasecmp($sort[0], "totalgrade") != 0)
! $sort[0] = "lastname"; // not valid so use default instead
! else if (strcasecmp($sort[1], "desc") == 0)
! $sortgrade = -1;
! else
! $sortgrade = 1;
}
}
! if (strcasecmp($sort[1], "asc") != 0 && strcasecmp($sort[1], "desc") != 0)
! $sort[1] = "ASC"; // not valid so use default instead
! $sort = implode(" ", $sort);
! // check page is valid
! if ($page <= 0)
! $page = 1;
! if ($pagerows < 10) { // refuse to show less than 10 rows per page
! if ($pagerows > 0)
! $page = (int) (($page - 1) * $pagerows) / 10 + 1;
! else
! $page = 1;
! $pagerows = 10;
}
!
! // Count all students (NOTE : MySQL 4 only but nice and fast)
! $numstudents = $db->Execute("SELECT count(*) FROM {$CFG->prefix}user u LEFT JOIN {$CFG->prefix}user_students s ON s.userid = u.id WHERE s.course = '$course->id' AND u.deleted = '0'");
! if ($numstudents)
! $numstudents = (int) $numstudents->fields[0];
! else
! $numstudents = 0;
!
! if (($page - 1) * $pagerows > $numstudents)
! $page = (int) ($numstudents + $pagerows - 1) / $pagerows;
!
! // Get a list of students for this page
! $page = ($page - 1) * $pagerows;
! if (!$students = get_course_students($course->id, $sortgrade ? "''" : "u.$sort" . ($pagerows ? " LIMIT $page, $pagerows" : ""))) {
print_header("$course->shortname: $math_assignment->name", "$course->fullname",
"$navigation <a href=\"index.php?id=$course->id\">$strmath_assignments</a> -> $math_assignment->name",
--- 71,132 ----
// verify that the sort string is correct
! if (strcasecmp($sort, "lastname") != 0) { // check for field name in most likely used order
! if (strcasecmp($sort, "firstname") != 0) { // to improve speed
! if (strcasecmp($sort, "totalgrade") != 0)
! $sort = "lastname"; // not valid so use default instead
}
}
! if (strcasecmp($sortdir, "asc") != 0 && strcasecmp($sortdir, "desc") != 0)
! $sortdir = "asc"; // not valid so use default instead
! // Get a list of students for this course including grades
! switch(strtolower($CFG->dbtype)) {
! case 'mysql':
! if (strcasecmp($sort, "totalgrade") == 0)
! $sortsql = "totalgrade $sortdir";
! else
! $sortsql = "u.$sort $sortdir";
! $students = get_records_sql("SELECT s.userid, u.firstname, u.lastname, u.picture, g.papergrade, g.aimgrade, g.aimoverride, g.aimcomment, least(greatest(g.papergrade,0), $math_assignment->papergrade)+least(greatest(g.aimgrade,0), $math_assignment->aimgrade) AS totalgrade FROM {$CFG->prefix}user_students s LEFT JOIN {$CFG->prefix}user u ON s.course = '$course->id' AND u.id = s.userid LEFT JOIN {$CFG->prefix}math_assignment_grades g ON g.assignment = '$math_assignment->id' AND g.userid = s.userid WHERE u.deleted = '0' ORDER BY $sortsql");
! break;
! default:
! // emulate
! $students = get_records_sql("SELECT userid,userid FROM {$CFG->prefix}user_students WHERE course = '$course->id'");
! if ($students) {
! foreach ($students as $key => $student) {
! if ($user = get_record_sql("SELECT firstname, lastname, picture FROM {$CFG->prefix}user WHERE id = '$key' AND deleted = '0'")) {
! $students[$key]->firstname = $user->firstname;
! $students[$key]->lastname = $user->lastname;
! $students[$key]->picture = $user->picture;
! $grade = get_record_sql("SELECT papergrade, aimgrade, aimoverride, aimcomment FROM {$CFG->prefix}math_assignment_grades WHERE assignment = '$math_assignment->id' and userid = '$key'");
! if ($grade) {
! $students[$key]->papergrade = $grade->papergrade;
! $students[$key]->aimgrade = $grade->aimgrade;
! $students[$key]->aimoverride = $grade->aimoverride ;
! $students[$key]->aimcomment = $grade->aimcomment;
! $students[$key]->totalgrade = math_assignment_total_grade($math_assignment, $grade);
! }
! else {
! $students[$key]->papergrade = -1;
! $students[$key]->aimgrade = -1;
! $students[$key]->aimoverride = 0 ;
! $students[$key]->aimcomment = "";
! $students[$key]->totalgrade = 0;
! }
! }
! else {
! // assume it failed because deleted was not zero
! unset($students[$key]);
! }
! }
! // sort
! if (strcasecmp($sortdir, "desc") == 0)
! $mult = -1;
! else
! $mult = 1;
! uasort($students, create_function('$a, $b', 'return (($a->' . $sort . ' > $b->' . $sort . ') ? 1 : -1) * ' . $mult . ';'));
! }
! break;
}
! if (!$students) {
print_header("$course->shortname: $math_assignment->name", "$course->fullname",
"$navigation <a href=\"index.php?id=$course->id\">$strmath_assignments</a> -> $math_assignment->name",
***************
*** 123,142 ****
exit;
}
-
- // Get grades
- foreach ($students as $student) {
- if (!$grades[$student->id] = get_record("math_assignment_grades", "assignment", $math_assignment->id, "userid", $student->id)) {
- $grades[$student->id]->quiz = $math_assignment->id;
- $grades[$student->id]->userid = $student->id;
- $grades[$student->id]->papergrade = -1;
- $grades[$student->id]->aimgrade = -1;
- $grades[$student->id]->aimoverride = 0;
- $grades[$student->id]->aimcomment = "";
- }
- }
-
- if ($sortgrade) { // we need to do the sorting ourselves
- usort($students, create_function('$a,$b','global $math_assignment, $grades; return ((math_assignment_total_grade($math_assignment, $grades[$a->id]) < math_assignment_total_grade($math_assignment, $grades[$b->id])) ? -1 : 1) * ' . $sortgrade . ';'));
- }
}
else if (isstudent($course->id)) {
--- 136,139 ----
***************
*** 181,187 ****
$i = 0;
! foreach ($grades as $studentid => $studentgrade) {
$i++;
- $student = $students[$studentid];
$myxls->ChangePos($i,0);
--- 178,183 ----
$i = 0;
! foreach ($students as $student) {
$i++;
$myxls->ChangePos($i,0);
***************
*** 189,202 ****
$myxls->InsertText($student->lastname);
if ($hasboth) {
! if ($studentgrade->papergrade >= 0)
! $myxls->InsertNumber($studentgrade->papergrade);
else
$myxls->InsertText("");
! if ($studentgrade->aimgrade >= 0)
! $myxls->InsertNumber($studentgrade->aimgrade);
else
$myxls->InsertText("");
}
! $myxls->InsertNumber(math_assignment_total_grade($math_assignment, $studentgrade));
}
--- 185,198 ----
$myxls->InsertText($student->lastname);
if ($hasboth) {
! if ($student->papergrade >= 0)
! $myxls->InsertNumber($student->papergrade);
else
$myxls->InsertText("");
! if ($student->aimgrade >= 0)
! $myxls->InsertNumber($student->aimgrade);
else
$myxls->InsertText("");
}
! $myxls->InsertNumber($student->totalgrade);
}
***************
*** 222,237 ****
/// Print all the lines of data.
! foreach ($grades as $studentid => $studentgrade) {
! $student = $students[$studentid];
echo "$student->firstname\t$student->lastname\t";
if ($hasboth) {
! if ($studentgrade->papergrade >= 0)
! echo "$studentgrade->papergrade";
echo "\t";
! if ($studentgrade->aimgrade >= 0)
! echo "$studentgrade->aimgrade";
echo "\t";
}
! echo math_assignment_total_grade($math_assignment, $studentgrade);
echo "\n";
}
--- 218,232 ----
/// Print all the lines of data.
! foreach ($students as $student) {
echo "$student->firstname\t$student->lastname\t";
if ($hasboth) {
! if ($student->papergrade >= 0)
! echo "$student->papergrade";
echo "\t";
! if ($student->aimgrade >= 0)
! echo "$student->aimgrade";
echo "\t";
}
! echo $student->totalgrade;
echo "\n";
}
***************
*** 264,278 ****
/// Print all the lines of data.
! foreach ($grades as $studentid => $studentgrade) {
! $student = $students[$studentid];
echo "<tr><td height=\"40\">$student->firstname</td><td>$student->lastname</td>";
if ($hasboth) {
echo "<td>";
! if ($studentgrade->aimgrade >= 0)
! echo $studentgrade->aimgrade;
else echo " ";
echo "</td><td>";
! if ($studentgrade->papergrade >= 0)
! echo $studentgrade->papergrade;
else echo " ";
echo "</td>";
--- 259,272 ----
/// Print all the lines of data.
! foreach ($students as $student) {
echo "<tr><td height=\"40\">$student->firstname</td><td>$student->lastname</td>";
if ($hasboth) {
echo "<td>";
! if ($student->aimgrade >= 0)
! echo $student->aimgrade;
else echo " ";
echo "</td><td>";
! if ($student->papergrade >= 0)
! echo $student->papergrade;
else echo " ";
echo "</td>";
***************
*** 280,285 ****
else {
echo "<td>";
! if (math_assignment_total_grade($math_assignment, $studentgrade) >= 0)
! echo math_assignment_total_grade($math_assignment, $studentgrade);
else echo " ";
echo "</td>";
--- 274,279 ----
else {
echo "<td>";
! if ($student->totalgrade > 0)
! echo $student->totalgrade;
else echo " ";
echo "</td>";
***************
*** 358,364 ****
echo math_assignment_get_admin_links($cm, $math_assignment, "right");
print_heading($strgrades);
if ($hasboth) {
echo "<p align=\"center\"><b>" . get_string("maximumgrade") . "</b>: $math_assignment->papergrade ($strpaper) + $math_assignment->aimgrade ($strcomputer) = $totalmax</p>";
! $table->head = array ("", get_string("firstname"), get_string("lastname"), "$strpaper $strgrade", "$strcomputer $strgrade", "$strtotal $strgrade");
$table->width = array(35, "", "", "", "", "");
$table->align = array("LEFT", "RIGHT", "LEFT", "CENTER", "CENTER", "CENTER");
--- 352,360 ----
echo math_assignment_get_admin_links($cm, $math_assignment, "right");
print_heading($strgrades);
+
+ // get sort strings
if ($hasboth) {
echo "<p align=\"center\"><b>" . get_string("maximumgrade") . "</b>: $math_assignment->papergrade ($strpaper) + $math_assignment->aimgrade ($strcomputer) = $totalmax</p>";
! $table->head = array ("", get_sortable_header($cm->id, "firstname", $sort, $sortdir), get_sortable_header($cm->id, "lastname", $sort, $sortdir), "$strpaper $strgrade", "$strcomputer $strgrade", get_sortable_header($cm->id, "totalgrade", $sort, $sortdir, "$strtotal $strgrade"));
$table->width = array(35, "", "", "", "", "");
$table->align = array("LEFT", "RIGHT", "LEFT", "CENTER", "CENTER", "CENTER");
***************
*** 366,370 ****
else {
echo "<p align=\"center\"><b>" . get_string("maximumgrade") . "</b>: $totalmax</p>";
! $table->head = array ("", get_string("firstname"), get_string("lastname"), "$strgrade");
$table->width = array(35, "", "", "");
$table->align = array("LEFT", "RIGHT", "LEFT", "CENTER");
--- 362,366 ----
else {
echo "<p align=\"center\"><b>" . get_string("maximumgrade") . "</b>: $totalmax</p>";
! $table->head = array ("", get_sortable_header($cm->id, "firstname", $sort, $sortdir), get_sortable_header($cm->id, "lastname", $sort, $sortdir), "$strgrade");
$table->width = array(35, "", "", "");
$table->align = array("LEFT", "RIGHT", "LEFT", "CENTER");
***************
*** 377,397 ****
$i = 1;
foreach ($students as $student) {
! $studentgrade = $grades[$student->id];
! $picture = print_user_picture($student->id, $course->id, $student->picture, false, true);
! if ($studentgrade->papergrade >= 0)
! $papergrade = $studentgrade->papergrade;
else
$papergrade = "";
! $papergrade = "<input type=\"text\" name=\"$student->id\" size=\"10\" maxlength=\"10\" value=\"$papergrade\" tabindex=\"$i\" />";
! if ($studentgrade->aimgrade >= 0)
! $aimgrade = $studentgrade->aimgrade;
else
$aimgrade = "";
! if ($studentgrade->aimoverride) {
$edited = "$stredited (";
$editedclose = ")";
}
! else if ($studentgrade->aimcomment) {
$edited = "$strcommented (";
$editedclose = ")";
--- 373,392 ----
$i = 1;
foreach ($students as $student) {
! $picture = print_user_picture($student->userid, $course->id, $student->picture, false, true);
! if ($student->papergrade >= 0)
! $papergrade = $student->papergrade;
else
$papergrade = "";
! $papergrade = "<input type=\"text\" name=\"$student->userid\" size=\"10\" maxlength=\"10\" value=\"$papergrade\" tabindex=\"$i\" />";
! if ($student->aimgrade >= 0)
! $aimgrade = $student->aimgrade;
else
$aimgrade = "";
! if ($student->aimoverride) {
$edited = "$stredited (";
$editedclose = ")";
}
! else if ($student->aimcomment) {
$edited = "$strcommented (";
$editedclose = ")";
***************
*** 404,430 ****
if ($hasboth)
$table->data[] = array($picture, $student->firstname, $student->lastname, $papergrade,
! "$aimgrade $edited<a href=\"editgrade.php?id=$math_assignment->id&userid=$student->id\">$stredit</a>$editedclose", math_assignment_total_grade($math_assignment, $studentgrade));
else if ($haspaper)
$table->data[] = array($picture, $student->firstname, $student->lastname, $papergrade);
else if ($hasaim)
$table->data[] = array($picture, $student->firstname, $student->lastname,
! "$aimgrade $edited<a href=\"editgrade.php?id=$math_assignment->id&userid=$student->id\">$stredit</a>$editedclose");
$i++;
}
! // print paging controls
! print_paging_form ("top", $cm->id, $sort, $numstudents, $page, $pagerows);
!
! echo "<form action=\"updatepapergrades.php?id=$math_assignment->id\" method=\"post\" name=\"papergradeform\">";
print_table($table);
! echo "<table border=\"0\" align=\"center\"><tr><td>";
! echo "<input type=\"submit\" value=\"" . get_string("savechanges") . "\" />";
! echo "</td><td>";
! echo "<input type=\"reset\" value=\"" . get_string("reset", "math_assignment") . "\" />";
! echo "</td><td>";
! helpbutton ("editpapergrades", "$strpaper $strgrades", "math_assignment");
! echo "</td></tr></table></form>";
echo "<table border=\"0\" align=\"center\"><tr><td>";
$options["q"] = $math_assignment->id;
--- 399,425 ----
if ($hasboth)
$table->data[] = array($picture, $student->firstname, $student->lastname, $papergrade,
! "$aimgrade $edited<a href=\"editgrade.php?id=$math_assignment->id&userid=$student->userid\">$stredit</a>$editedclose", $student->totalgrade);
else if ($haspaper)
$table->data[] = array($picture, $student->firstname, $student->lastname, $papergrade);
else if ($hasaim)
$table->data[] = array($picture, $student->firstname, $student->lastname,
! "$aimgrade $edited<a href=\"editgrade.php?id=$math_assignment->id&userid=$student->userid\">$stredit</a>$editedclose");
$i++;
}
! if ($haspaper)
! echo "<form action=\"updatepapergrades.php?id=$math_assignment->id\" method=\"post\" name=\"papergradeform\">";
print_table($table);
! if ($haspaper) {
! echo "<table border=\"0\" align=\"center\"><tr><td>";
! echo "<input type=\"submit\" value=\"" . get_string("savechanges") . "\" />";
! echo "</td><td>";
! echo "<input type=\"reset\" value=\"" . get_string("reset", "math_assignment") . "\" />";
! echo "</td><td>";
! helpbutton ("editpapergrades", "$strpaper $strgrades", "math_assignment");
! echo "</td></tr></table></form>";
! }
echo "<table border=\"0\" align=\"center\"><tr><td>";
$options["q"] = $math_assignment->id;
***************
*** 445,451 ****
echo "</td></tr></table>";
- // print paging controls
- print_paging_form ("bottom", $cm->id, $sort, $numstudents, $page, $pagerows);
-
if ($adminlinks = math_assignment_get_admin_links($cm, $math_assignment, "center")) {
print_heading(get_string("administration"));
--- 440,443 ----
***************
*** 468,492 ****
}
! function print_paging_form($name, $id, $sort, $count, $page, $pagerows) {
! if ($count > $pagerows) {
! echo "<form action=\"view.php?id=$id\" method=\"post\" name=\"page$name\">\n";
! echo "<input type=\"hidden\" name=\"sort\" value=\"$sort\" />\n";
! $moreinfo->start = $page + 1;
! $moreinfo->end = min($page + $pagerows, $count);
! $moreinfo->total = $count;
! echo "<p align=\"center\">" . get_string("displayingrows", "math_assignment", $moreinfo) . "</p>\n";
! echo "<p align=\"center\">" . get_string("page") . " :";
! $pages = ($count + $pagerows - 1) / $pagerows;
! $page++;
! for ($i = 1; $i <= $pages; $i++) {
! if ($i == $page)
! echo " <b>$i</b>";
! else
! echo " <input type=\"submit\" name=\"page\" value=\"$i\" />";
! }
! echo "</p>\n";
! echo "<input type=\"hidden\" name=\"pagerows\" value=\"$pagerows\" />\n";
! echo "</form>\n";
}
}
?>
--- 460,476 ----
}
! function get_sortable_header($id, $field, $sort, $sortdir, $title="") {
! if (strcasecmp($sort, $field) == 0) {
! $dir = strcasecmp($sortdir, "desc") == 0 ? "asc" : "desc";
! $img = ""; // ## need to generate image tag here ##
}
+ else {
+ $dir = "asc";
+ $img = "";
+ }
+ if (!$title)
+ $title = get_string($field);
+ return "<a href=\"view.php?id=$id&sort=$field&sortdir=$dir\">$title</a>$img";
}
+
?>
|