id, $course->id)) { error("Course Module ID was incorrect"); } if (!isteacher($course->id)) { error("Only teachers can look at this page"); } $strassignments = get_string("modulenameplural", "newassignment"); $strassignment = get_string("modulename", "newassignment"); $strsubmissions = get_string("submissions", "newassignment"); $strsaveallfeedback = get_string("saveallfeedback", "newassignment"); $strsendreminder = get_string('sendreminder', 'block_marking'); $strnumreminderssent = get_string('numreminderssent', 'block_marking'); $strlastremindersent = get_string('lastremindersent', 'block_marking'); /// Check to see if groups are being used in this assignment if ($groupmode = groupmode($course, $cm)) { // Groups are being used if (empty($currentgroup)) { $currentgroup = setup_and_print_groups($course, $groupmode, "marking.php?id=$id&mid=$mid&sort=$sort&dir=$dir"); } else { setup_and_print_groups($course, $groupmode, "marking.php?id=$id&mid=$mid&sort=$sort&dir=$dir"); } } else { $currentgroup = false; } /// Get all teachers and students $teachers = get_course_teachers($course->id); /// Show any specific group of users requested. if ($currentgroup) { $users = get_group_students($currentgroup); } else { $users = get_course_students($course->id); } if (!$users) { print_heading(get_string("nostudentsyet")); exit; } /// create empty entries in in db (neccessary) newassignment_create_empty_db_entries($assignment); /// Make some easy ways to reference submissions if ($submissions = newassignment_get_all_submissions($assignment, $sort, $dir)) { foreach ($submissions as $submission) { if (($submission->timemodified <= 0) || $submission->latest) { $submissionbyuser[$submission->userid] = $submission; } } } /// If data is being submitted, then process it if ($data = data_submitted($CFG->wwwroot.'/blocks/marking/marking.php')) { if (isset($data->sendreminders)) { mb_send_all_reminders($data, $users, $course, $cm); $message = get_string('sentreminders', 'block_marking'); redirect('marking.php?id='.$id.'&mid='.$mid, $message, 3); } /// If we're only submitting a single feedback, set the submittal array to just that one. if (isset($data->submitsub)) { $data->sub_id = array(key($data->submitsub)); } foreach ($data->sub_id as $sub_id) { $submission = $submissions[$sub_id]; $reqresubmit = isset($data->reqresubmit[$sub_id]) ? 1 : 0; // Only update entries where feedback has actually changed. if (($data->grade[$sub_id] <> $submission->grade) || ($data->comment[$sub_id] <> addslashes($submission->comment)) || $reqresubmit) { unset($newsubmission); $newsubmission->grade = $data->grade[$sub_id]; $newsubmission->comment = $data->comment[$sub_id]; $newsubmission->teacher = $USER->id; $newsubmission->timemarked = $timenow; $newsubmission->mailed = 0; // Make sure mail goes out (again, even) $newsubmission->id = $sub_id; if ($reqresubmit) { $newsubmission->comment .= "\n\n".'

'. get_string('resubmitmessage', 'block_marking').'

'; } // Make sure that we aren't overwriting any recent feedback from other teachers. (see bug #324) if ($timewas < $submission->timemarked && (!empty($submission->grade)) && (!empty($submission->comment))) { notify(get_string("failedupdatefeedback", "assignment", fullname($users[$submission->userid])) . "
" . get_string("grade") . ": $newsubmission->grade" . "
" . get_string("feedback", "assignment") . ": $newsubmission->comment\n"); } else { //print out old feedback and grade if (empty($submission->timemodified)) { // eg for offline assignments $newsubmission->timemodified = $timenow; } if (! update_record("newassignment_submissions", $newsubmission)) { notify(get_string("failedupdatefeedback", "newassignment", $submission->userid)); } else { $count++; } } } } $submissions = newassignment_get_latest_submissions($assignment,$sort, $dir); add_to_log($course->id, "newassignment", "update grades", "submissions.php?id=$assignment->id", "$count users", $cm->id); notify('Submissions feedback updated for '.fullname($users[$submission->userid]).'.'); redirect('marking.php?id='.$id.'&mid='.$mid); } else { add_to_log($course->id, "newassignment", "view submission", "submissions.php?id=$assignment->id", "$assignment->id", $cm->id); } $allowedtograde = ($groupmode != VISIBLEGROUPS or isteacheredit($course->id) or ismember($currentgroup)); $grades = make_grades_menu($assignment->grade); /// Rebuild submissions array, ordered by unmarked status. $marked = array(); $unsubmitted = array(); if (is_array($submissionbyuser)) { foreach ($submissionbyuser as $submission) { if ($submission->timemodified <= 0) { $unsubmitted[] = $submission; } else if ($submission->timemarked <= 0) { $unmarked_first[] = $submission; } else if ($submission->timemarked < $submission->timemodified) { $unmarked_resub[] = $submission; } else { $marked[] = $submission; } } } unset($submissions); $timedifference = $assignment->timedue - time(); if ($timedifference < 31536000) { // Don't bother showing dates over a year in the future $strdifference = format_time($timedifference); if ($timedifference < 0) { $strdifference = "$strdifference"; } $strduedate = userdate($assignment->timedue)." ($strdifference)"; } if ($assignment->grade < 0) { $scaleid = - ($assignment->grade); if ($scale = get_record("scale", "id", $scaleid)) { $scalegrades = make_menu_from_list($scale->scale); $gradetext = "".get_string("grade").": $scale->name "; } } else if ($assignment->grade > 0) { $gradetext = "".get_string("maximumgrade").": $assignment->grade"; } echo '

'.get_string("duedate", "assignment").':'.$strduedate. '
'.$gradetext.'
'.get_string('markingcriteria', 'block_marking').': '. format_text($assignment->description, $assignment->format); if ($averageturnaround) { echo '
'.get_string('averageturnaround', 'block_marking', (int)$averageturnaround); } else { echo '
'.get_string('noaverageturnaround', 'block_marking'); } echo '

'; $marking = false; echo '
'; echo ""; if (is_array($unmarked_first) && !empty($unmarked_first)) { $marking = true; echo '

'.get_string('unmarkedfirstsubmissions', 'block_marking').':

'; foreach ($unmarked_first as $submission) { if (isset($users[$submission->userid])) { $user = $users[$submission->userid]; local_newassignment_print_submission($assignment, $user, $submission, $teachers, $grades, $id, $mid, $timenow, $allowedtograde); } } } if (is_array($unmarked_resub) && !empty($unmarked_resub)) { $marking = true; echo '

'.get_string('unmarkedresubmissions', 'block_marking').':

'; foreach ($unmarked_resub as $submission) { if (isset($users[$submission->userid])) { $user = $users[$submission->userid]; local_newassignment_print_submission($assignment, $user, $submission, $teachers, $grades, $id, $mid, $timenow, $allowedtograde); } } } if (is_array($marked) && !empty($marked)) { $marking = true; echo '

'.get_string('markedsubmissions', 'block_marking').':

'; foreach ($marked as $submission) { if (isset($users[$submission->userid])) { $user = $users[$submission->userid]; local_newassignment_print_submission($assignment, $user, $submission, $teachers, $grades, $id, $mid, $timenow, $allowedtograde); } } } if ($marking) { echo '
'; } echo '
'; if (is_array($unsubmitted) && !empty($unsubmitted)) { echo '

'.get_string('studentsnotsubmitted', 'block_marking').':

'; foreach ($unsubmitted as $submission) { if (isset($users[$submission->userid])) { $user = $users[$submission->userid]; echo "\n".''; echo "\n"; echo "\n"; echo "\n"; echo ''."\n"; echo "
"; print_user_picture($user->id, $assignment->course, $user->picture); echo "".fullname($user, true)."'; echo ''; $reminfo = mb_get_reminder_info($USER, $user, $course->id, $cm->id); echo $reminfo->numrems.' '.$strnumreminderssent.'.
'; if ($reminfo->numrems > 0) { echo $strlastremindersent.' '.userdate($reminfo->lastrem).'.
'; } echo ' '.$strsendreminder; echo '
'; echo '
\n"; } } echo '
'; echo ''; } function local_newassignment_print_submission($assignment, $user, $submission, $teachers, $grades, $id, $mid, $timenow, $allowedtograde=false) { global $THEME, $USER, $CFG; static $strsavefeedback; if (empty($strsavefeedback)) { $strsavefeedback = get_string('savefeedback', 'block_marking'); } $latest_submission = $submission; // for later use echo "\n"; echo "\n"; if ($assignment->type == NEW_OFFLINE) { echo "\n"; echo ""; if ($assignment->type != NEW_OFFLINE) { echo "\n"; } $submission = $latest_submission; if (!$submission->teacher) { $submission->teacher = $USER->id; } newassignment_verify_teachers($assignment,$submission,$teachers); //Print row with feedback file echo "\n"; echo ""; //Print row with rating and/or comment echo "\n"; echo ""; echo "
"; } else { echo "\n"; } print_user_picture($user->id, $assignment->course, $user->picture); echo ""; echo ''; echo ''; if ($assignment->type != NEW_OFFLINE and $submission->timemodified) { if ($submission->timemarked < $submission->timecreated) { $span_open_css = ''; $span_close_css = ''; } else { $span_open_css = ''; $span_close_css = ''; } echo '"; } echo '
'.fullname($user, true).''.$span_open_css. 'Originally submitted: '.userdate($submission->timecreated).$span_close_css; if ($submission->timemodified != $submission->timecreated) { if ($submission->timemarked < $submission->timemodified) { $span_open_css = ''; $span_close_css = ''; } else { $span_open_css = ''; $span_close_css = ''; } echo '
'.$span_open_css.get_string("lastmodified").': '. userdate($submission->timemodified).$span_close_css; } echo "
'; echo "
"; if ($submission->timemodified) { newassignment_print_latest_user_file($assignment, $user); if ($submission->filenum>1) { // ELF -js- echo "[ "; link_to_popup_window("/mod/newassignment/user_detail.php?id={$assignment->id}&sid={$submission->userid}", "user_submissions_details", get_string('totalfiles','newassignment',$submission->filenum), 500, 800); echo " ]"; } // ELF -js- } else { print_string("notsubmittedyet", "newassignment"); } echo "
"; if ($submission->feedbackfile) { print_user_picture($submission->feedbackfileteacher, $assignment->course, $teachers[$submission->feedbackfileteacher]->picture); } else { print_user_picture($USER->id, $assignment->course, $USER->picture); } if ($submission->timemodified > $submission->feedbacktimeuploaded or (!$submission->timemodified and !$submission->feedbacktimeuploaded)) { echo ""; } else { echo ""; } echo get_string("feedbackfile", "newassignment").": "; if ($submission->feedbacktimeuploaded) { echo "
"; newassignment_print_feedback_files($assignment, $user, $teachers, $submission, 1, 1); } else { print_string("notsubmittedfeedbackyet", "newassignment"); } echo " [ "; link_to_popup_window("/mod/newassignment/feedbackupl.php?id=". "$assignment->id&studentid=$user->id&filenum=$submission->filenum", "feedback", get_string("uploadfeedbackfile", "newassignment"), 150, 600); echo "]
\n
"; print_user_picture($submission->teacher, $assignment->course, $teachers[$submission->teacher]->picture); if ($submission->timemodified > $submission->timemarked or (!$submission->timemodified and !$submission->timemarked)) { echo ""; } else { echo ""; } echo ''; echo '
'; echo get_string("feedback", "newassignment").":"; choose_from_menu($grades, "grade[{$submission->id}]", $submission->grade, get_string("nograde")); if ($submission->timemarked) { echo "".userdate($submission->timemarked); $markturnaround = (int)(($submission->timemarked - $submission->timemodified) / (60*60)); echo '
'.get_string('markingturnaround', 'block_marking').' '.$markturnaround.' hours.
'; } else { echo '
'; print_string('notmarkedyet', 'block_marking'); echo ''; } echo ''; echo ' '; echo '
'; echo '

"; echo "

\n"; } ?>