|
@@ -628,9 +628,13 @@ class iassign {
|
|
|
|
|
|
$atual_submission = $DB->get_record('iassign_allsubmissions', array('id' => $submissionid));
|
|
$atual_submission = $DB->get_record('iassign_allsubmissions', array('id' => $submissionid));
|
|
|
|
|
|
|
|
+ $atual_statement = $DB->get_record("iassign_statement", array("id" => $atual_submission->iassign_statementid));
|
|
|
|
+
|
|
$all_submissions = $DB->get_records('iassign_allsubmissions',
|
|
$all_submissions = $DB->get_records('iassign_allsubmissions',
|
|
array('iassign_statementid' => $atual_submission->iassign_statementid, 'userid' => $atual_submission->userid));
|
|
array('iassign_statementid' => $atual_submission->iassign_statementid, 'userid' => $atual_submission->userid));
|
|
|
|
|
|
|
|
+ $user = $DB->get_record('user', array('id' => $atual_submission->userid));
|
|
|
|
+
|
|
$previous = null;
|
|
$previous = null;
|
|
$next = null;
|
|
$next = null;
|
|
$i = 0;
|
|
$i = 0;
|
|
@@ -648,8 +652,13 @@ class iassign {
|
|
}
|
|
}
|
|
$i ++;
|
|
$i ++;
|
|
}
|
|
}
|
|
|
|
+ print '<center>';
|
|
|
|
+ print '<table cellpading=5 cellspacing=5 style="padding-bottom: 2rem;font-size: 1.1em;"><tr><td>' . get_string('exercise', 'iassign') . ':</td><td>' . $atual_statement->name . '</td></tr>';
|
|
|
|
+ print '<tr><td>' . get_string('student', 'iassign') . '</td><td>' . $user->firstname . ' ' . $user->lastname . '</td></tr>';
|
|
|
|
+ print '<tr><td>' . get_string('grade_student', 'iassign') . ':</td><td>' . $atual_submission->grade . '</td></tr>';
|
|
|
|
+ print '<tr><td>' . get_string('all_submissions_manager_date', 'iassign') . ':</td><td>' . userdate($atual_submission->timecreated) . '</td></tr>';
|
|
|
|
|
|
- print '<center style="padding-top: 2rem;">';
|
|
|
|
|
|
+ print '</table>';
|
|
|
|
|
|
if ($previous) {
|
|
if ($previous) {
|
|
$url_prev = "" . $CFG->wwwroot . "/mod/iassign/view.php?action=open_individual_submission&" . $param_aux . "&item=" . $previous->id;
|
|
$url_prev = "" . $CFG->wwwroot . "/mod/iassign/view.php?action=open_individual_submission&" . $param_aux . "&item=" . $previous->id;
|
|
@@ -1448,7 +1457,174 @@ var exercises = [ '; // '
|
|
$id_submission = $iassign_submission->id;
|
|
$id_submission = $iassign_submission->id;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ $content = $this->search_comment_submission($id_submission);
|
|
|
|
+ ob_end_clean();
|
|
|
|
+ header("Connection: close\r\n");
|
|
|
|
+ header("Content-Encoding: none\r\n");
|
|
|
|
+ header('Content-Type: text/html');
|
|
|
|
+ ob_start();
|
|
echo $this->search_comment_submission($id_submission);
|
|
echo $this->search_comment_submission($id_submission);
|
|
|
|
+
|
|
|
|
+ $size = ob_get_length();
|
|
|
|
+ header("Content-Length: $size");
|
|
|
|
+ ob_end_flush();
|
|
|
|
+ flush();
|
|
|
|
+ ob_end_clean();
|
|
|
|
+
|
|
|
|
+ // Send email to users:
|
|
|
|
+ $iassign_submission =
|
|
|
|
+ $DB->get_record("iassign_submission",
|
|
|
|
+ array(
|
|
|
|
+ "id" => $id_submission
|
|
|
|
+ )
|
|
|
|
+ );
|
|
|
|
+
|
|
|
|
+ $this->send_alert_new_comment($submission_comment, $iassign_submission->userid);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /// This method alerts envolved to new comment sent
|
|
|
|
+ function send_alert_new_comment ($comment, $student_id = -1) {
|
|
|
|
+ global $USER, $DB, $COURSE, $SITE;
|
|
|
|
+
|
|
|
|
+ $subject = $COURSE->shortname . ": " . get_string('new_comment_mail_subject', 'iassign');
|
|
|
|
+
|
|
|
|
+ $url_curso;
|
|
|
|
+ $url_submissao;
|
|
|
|
+
|
|
|
|
+ $text = "<p style='margin-top: 1rem;'>";
|
|
|
|
+
|
|
|
|
+ $text .= "<a href=\""
|
|
|
|
+ . new moodle_url('/course/view.php', array('id' => $COURSE->id))
|
|
|
|
+ . "\">" . $COURSE->shortname . "</a> "
|
|
|
|
+ . " ≫ ";
|
|
|
|
+
|
|
|
|
+ $modinfo = get_fast_modinfo($COURSE);
|
|
|
|
+
|
|
|
|
+ for ($i = 0; $i < count($modinfo->sections); $i++) {
|
|
|
|
+ if ($modinfo->get_section_info($i)
|
|
|
|
+ && $modinfo->get_section_info($i)->id == $this->cm->section) {
|
|
|
|
+
|
|
|
|
+ $url_curso = new moodle_url('/course/view.php', array('id' => $COURSE->id));
|
|
|
|
+
|
|
|
|
+ $text .= "<a href=\""
|
|
|
|
+ . $url_curso . "#section-" . $modinfo->get_section_info($i)->section . "\">" . get_section_name($COURSE, $modinfo->get_section_info($i)->section)
|
|
|
|
+ . "</a> ≫ ";
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ $iassign = $DB->get_record('iassign', array('id' => $this->activity->get_activity()->iassignid));
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ $text .= "<a href=\""
|
|
|
|
+ . new moodle_url('/mod/iassign/view.php', array('id' => $this->cm->id))
|
|
|
|
+ . "\">"
|
|
|
|
+ . $iassign->name
|
|
|
|
+ . "</a>";
|
|
|
|
+
|
|
|
|
+ $text .= " ≫ ";
|
|
|
|
+
|
|
|
|
+ $url_submissao = new moodle_url('/mod/iassign/view.php',
|
|
|
|
+ array(
|
|
|
|
+ 'id' => $this->cm->id,
|
|
|
|
+ 'action' => 'viewsubmission',
|
|
|
|
+ 'iassign_current' => $this->activity->get_activity()->id,
|
|
|
|
+ 'userid_iassign' => $USER->id));
|
|
|
|
+
|
|
|
|
+ $text .= "<a href=\""
|
|
|
|
+ . $url_submissao
|
|
|
|
+ . "\">"
|
|
|
|
+ . $this->activity->get_activity()->name
|
|
|
|
+ . "</a>";
|
|
|
|
+
|
|
|
|
+ $text .= "</p>";
|
|
|
|
+
|
|
|
|
+ $text .= "<div style='margin-left: .5rem;'>";
|
|
|
|
+
|
|
|
|
+ $text .= get_string('new_comment_mail_course', 'iassign') . ": <a href=\"" . $url_curso . "\">" . $COURSE->fullname . "</a>";
|
|
|
|
+
|
|
|
|
+ $text .= "</div><div style='margin-top: .3rem; margin-left: .5rem;'>";
|
|
|
|
+
|
|
|
|
+ $text .= get_string('exercise', 'iassign') . ": <a href=\"" . $url_submissao . "\">" . $this->activity->get_activity()->name . "</a>";
|
|
|
|
+
|
|
|
|
+ $text .= "</div><div style='margin-top: .3rem; margin-left: .5rem;'>";
|
|
|
|
+
|
|
|
|
+ $text .= get_string('new_comment_mail_sent_by', 'iassign') . ': '
|
|
|
|
+ . "<a href=\"" . new moodle_url('/user/view.php', array('id' => $USER->id, 'course' => $COURSE->id)) . "\">"
|
|
|
|
+ . $USER->firstname . " " . $USER->lastname
|
|
|
|
+ . "</a>";
|
|
|
|
+
|
|
|
|
+ $text .= " - " . userdate(time());
|
|
|
|
+
|
|
|
|
+ $text .= "</div><div style='margin: 2rem;'>";
|
|
|
|
+
|
|
|
|
+ $text .= $comment;
|
|
|
|
+
|
|
|
|
+ $text .= "</div><div>";
|
|
|
|
+
|
|
|
|
+ $text .= "<a href=\"" . $url_submissao . "#comments\">" . get_string('new_comment_mail_open_exercise', 'iassign') . "</a> | ";
|
|
|
|
+
|
|
|
|
+ $text .= "<a href=\"" . $url_submissao . "#comments\">" . get_string('new_comment_mail_answer', 'iassign') . "</a>";
|
|
|
|
+
|
|
|
|
+ $text .= "</div>";
|
|
|
|
+
|
|
|
|
+ // Who has to receive?
|
|
|
|
+ $teachers = get_users_by_capability($this->context, 'mod/iassign:evaluateiassign');
|
|
|
|
+ $userfrom = \core_user::get_noreply_user();
|
|
|
|
+
|
|
|
|
+ if (has_capability('mod/iassign:evaluateiassign', $this->context, $USER->id)) { // a teacher has sent the comment:
|
|
|
|
+
|
|
|
|
+ // other teachers receive also: (excepts the sender)
|
|
|
|
+ foreach ($teachers as $teacher) {
|
|
|
|
+ if ($teacher->id != $USER->id)
|
|
|
|
+ email_to_user(
|
|
|
|
+ $teacher,
|
|
|
|
+ $USER->firstname . " " . $USER->lastname . " (via " . $SITE->shortname . ")",
|
|
|
|
+ $subject,
|
|
|
|
+ "",
|
|
|
|
+ $text,
|
|
|
|
+ '',
|
|
|
|
+ '',
|
|
|
|
+ false,
|
|
|
|
+ $userfrom->email,
|
|
|
|
+ 'Não responda a esta mensagem'
|
|
|
|
+ );
|
|
|
|
+ }
|
|
|
|
+ // and student:
|
|
|
|
+ $student = $DB->get_record('user', array('id' => $student_id));
|
|
|
|
+ email_to_user(
|
|
|
|
+ $student,
|
|
|
|
+ $USER->firstname . " " . $USER->lastname . " (via " . $SITE->shortname . ")",
|
|
|
|
+ $subject,
|
|
|
|
+ "",
|
|
|
|
+ str_replace("viewsubmission", "view", $text),
|
|
|
|
+ '',
|
|
|
|
+ '',
|
|
|
|
+ false,
|
|
|
|
+ $userfrom->email,
|
|
|
|
+ 'Não responda a esta mensagem'
|
|
|
|
+ );
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ } else { // a student has sent the comment:
|
|
|
|
+
|
|
|
|
+ foreach ($teachers as $teacher) {
|
|
|
|
+ email_to_user(
|
|
|
|
+ $teacher,
|
|
|
|
+ $USER->firstname . " " . $USER->lastname . " (via " . $SITE->shortname . ")",
|
|
|
|
+ $subject,
|
|
|
|
+ "",
|
|
|
|
+ $text,
|
|
|
|
+ '',
|
|
|
|
+ '',
|
|
|
|
+ false,
|
|
|
|
+ $userfrom->email,
|
|
|
|
+ 'Não responda a esta mensagem'
|
|
|
|
+ );
|
|
|
|
+ }
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
/// This method gets the content from the iLM and register it
|
|
/// This method gets the content from the iLM and register it
|
|
@@ -2593,8 +2769,8 @@ $param->special_param1 = 0; // 'special_param1 == 1' => script of iGeom
|
|
|
|
|
|
print '<table width=100% border=0 valign="top"><tr>' . "\n";
|
|
print '<table width=100% border=0 valign="top"><tr>' . "\n";
|
|
print '<td width=60% valign="top">' . "\n";
|
|
print '<td width=60% valign="top">' . "\n";
|
|
- print '<strong>' . get_string('proposition', 'iassign') . '</strong>' . "\n";
|
|
|
|
- print '<p>' . $iassign_statement_activity_item->proposition . '</p>' . "\n";
|
|
|
|
|
|
+ print '<p><strong>' . get_string('proposition', 'iassign') . ':</strong></p>' . "\n";
|
|
|
|
+ print '<div class="proposition">' . $iassign_statement_activity_item->proposition . '</div>' . "\n";
|
|
|
|
|
|
if ($iassign_statement_activity_item->automatic_evaluate == 1)
|
|
if ($iassign_statement_activity_item->automatic_evaluate == 1)
|
|
$resp = get_string('yes');
|
|
$resp = get_string('yes');
|
|
@@ -2699,6 +2875,8 @@ $param->special_param1 = 0; // 'special_param1 == 1' => script of iGeom
|
|
|
|
|
|
$USER->iassignEdit = $this->bottonPost;
|
|
$USER->iassignEdit = $this->bottonPost;
|
|
|
|
|
|
|
|
+ print activity::toggle_columns_script();
|
|
|
|
+
|
|
if ($iassign_submission && $allow_resubmission) {
|
|
if ($iassign_submission && $allow_resubmission) {
|
|
|
|
|
|
// Put the iLM to
|
|
// Put the iLM to
|
|
@@ -2727,6 +2905,7 @@ $param->special_param1 = 0; // 'special_param1 == 1' => script of iGeom
|
|
print $OUTPUT->box('<p><strong>' . $last_iassign . '</strong></p>' . "\n");
|
|
print $OUTPUT->box('<p><strong>' . $last_iassign . '</strong></p>' . "\n");
|
|
|
|
|
|
if (!isset($enderecoPOST)) $enderecoPOST = "";
|
|
if (!isset($enderecoPOST)) $enderecoPOST = "";
|
|
|
|
+ print activity::toggle_columns_script();
|
|
// Prepare tags to present the iLM
|
|
// Prepare tags to present the iLM
|
|
print $OUTPUT->box($ilm->view_iLM($iassign_statement_activity_item, $student_answer, $enderecoPOST, $loadTeacherActivity));
|
|
print $OUTPUT->box($ilm->view_iLM($iassign_statement_activity_item, $student_answer, $enderecoPOST, $loadTeacherActivity));
|
|
|
|
|
|
@@ -2736,7 +2915,6 @@ $param->special_param1 = 0; // 'special_param1 == 1' => script of iGeom
|
|
//2020 Estava subordinado ao: elseif (($this->action == 'viewsubmission') && has_capability('mod/iassign:evaluateiassign', $USER->context, $USER->id))
|
|
//2020 Estava subordinado ao: elseif (($this->action == 'viewsubmission') && has_capability('mod/iassign:evaluateiassign', $USER->context, $USER->id))
|
|
//2020 e com isso NAO permitia aluno ter o quadro para envio!
|
|
//2020 e com isso NAO permitia aluno ter o quadro para envio!
|
|
//2020 Foi para final dessa funcao 'view_iassign_current()'
|
|
//2020 Foi para final dessa funcao 'view_iassign_current()'
|
|
-
|
|
|
|
} // elseif (($this->action == 'viewsubmission') && has_capability('mod/iassign:evaluateiassign', $USER->context, $USER->id))
|
|
} // elseif (($this->action == 'viewsubmission') && has_capability('mod/iassign:evaluateiassign', $USER->context, $USER->id))
|
|
// *** (end) Teacher access (view learner's submission to the activity)
|
|
// *** (end) Teacher access (view learner's submission to the activity)
|
|
|
|
|
|
@@ -2838,8 +3016,7 @@ $param->special_param1 = 0; // 'special_param1 == 1' => script of iGeom
|
|
|
|
|
|
print '<table width=100% border=0 valign="top">' . "\n";
|
|
print '<table width=100% border=0 valign="top">' . "\n";
|
|
print '<tr><td width=60% valign="top">' . "\n";
|
|
print '<tr><td width=60% valign="top">' . "\n";
|
|
- print '<strong>' . get_string('proposition', 'iassign') . '</strong>' . "\n";
|
|
|
|
- print '<p>' . $iassign_statement_activity_item->proposition . '</p>' . "\n";
|
|
|
|
|
|
+
|
|
$flag_dependency = true;
|
|
$flag_dependency = true;
|
|
|
|
|
|
if ($iassign_statement_activity_item->type_iassign == 3) {
|
|
if ($iassign_statement_activity_item->type_iassign == 3) {
|
|
@@ -2975,6 +3152,11 @@ $param->special_param1 = 0; // 'special_param1 == 1' => script of iGeom
|
|
print '</td></tr></table>' . "\n";
|
|
print '</td></tr></table>' . "\n";
|
|
//2019 print $OUTPUT->box_end(); // closing Box 5 but sometimes it does reach this point - see it at the end of 'if ($this->view_iassign)'
|
|
//2019 print $OUTPUT->box_end(); // closing Box 5 but sometimes it does reach this point - see it at the end of 'if ($this->view_iassign)'
|
|
|
|
|
|
|
|
+ print activity::toggle_columns_script();
|
|
|
|
+
|
|
|
|
+ print '<p class="mt-5"><strong>' . get_string('proposition', 'iassign') . '</strong></p>' . "\n";
|
|
|
|
+ print '<div class="proposition">' . $iassign_statement_activity_item->proposition . '</div>' . "\n";
|
|
|
|
+
|
|
$output = '';
|
|
$output = '';
|
|
|
|
|
|
if (!$iassign_ilm) {
|
|
if (!$iassign_ilm) {
|
|
@@ -2994,7 +3176,7 @@ $param->special_param1 = 0; // 'special_param1 == 1' => script of iGeom
|
|
$output .= $ilm->view_iLM($iassign_statement_activity_item, $student_answer, $enderecoPOST, true); // presents iLM and true => see the teacher file
|
|
$output .= $ilm->view_iLM($iassign_statement_activity_item, $student_answer, $enderecoPOST, true); // presents iLM and true => see the teacher file
|
|
} elseif ($iassign_submission && $iassign_submission->answer == '0') {
|
|
} elseif ($iassign_submission && $iassign_submission->answer == '0') {
|
|
$student_answer = "";
|
|
$student_answer = "";
|
|
- $output .= $ilm->view_iLM($iassign_statement_activity_item, $student_answer, $enderecoPOST, true); // presents iLM
|
|
|
|
|
|
+ $output .= $ilm->view_iLM($iassign_statement_activity_item, $student_answer, $enderecoPOST, true); // presents iLM
|
|
} else {
|
|
} else {
|
|
// When student is redoing his activity
|
|
// When student is redoing his activity
|
|
|
|
|
|
@@ -3074,6 +3256,7 @@ $param->special_param1 = 0; // 'special_param1 == 1' => script of iGeom
|
|
|
|
|
|
|
|
|
|
//if (!empty($history_comment)) {
|
|
//if (!empty($history_comment)) {
|
|
|
|
+ $output .= "<a id='comments'></a>";
|
|
$output .= " <table id='outlinetable' class='generaltable boxaligncenter' cellpadding='5' width='100%'> \n";
|
|
$output .= " <table id='outlinetable' class='generaltable boxaligncenter' cellpadding='5' width='100%'> \n";
|
|
$output .= " <tr><th><i style='font-size: 20px' class='icon fa fa-comments-o'></i>" . get_string('history_comments', 'iassign') . "</th></tr>";
|
|
$output .= " <tr><th><i style='font-size: 20px' class='icon fa fa-comments-o'></i>" . get_string('history_comments', 'iassign') . "</th></tr>";
|
|
$output .= "</table>";
|
|
$output .= "</table>";
|
|
@@ -5124,6 +5307,16 @@ class activity {
|
|
$output .= '<strong style="margin-left: 3rem;">' . get_string('grade_iassign', 'iassign') . ':</strong> ' . $this->activity->grade . '</p>' . "\n";
|
|
$output .= '<strong style="margin-left: 3rem;">' . get_string('grade_iassign', 'iassign') . ':</strong> ' . $this->activity->grade . '</p>' . "\n";
|
|
} // if ($iassign_statement_activity_item->type_iassign == 3)
|
|
} // if ($iassign_statement_activity_item->type_iassign == 3)
|
|
|
|
|
|
|
|
+ $output .= $this->toggle_columns_script();
|
|
|
|
+
|
|
|
|
+ $output .= '<p><strong>' . get_string('proposition', 'iassign') . ':</strong></p> <div class="proposition">' . $this->activity->proposition . '</div>' . "\n";
|
|
|
|
+
|
|
|
|
+ print $OUTPUT->box($output);
|
|
|
|
+ } // function show_info_iassign()
|
|
|
|
+
|
|
|
|
+ /// Provide script to toggle columns
|
|
|
|
+ static function toggle_columns_script () {
|
|
|
|
+ $output = "";
|
|
$output .= '<script>
|
|
$output .= '<script>
|
|
function toLeft () {
|
|
function toLeft () {
|
|
|
|
|
|
@@ -5154,11 +5347,8 @@ class activity {
|
|
|
|
|
|
$output .= '<span style="float: right"> <i id="columnsbutton" onclick="toggleColumns()" class="fa fa-columns" style="font-size: 1.5rem;" aria-hidden="true" role="button"></i></span>';
|
|
$output .= '<span style="float: right"> <i id="columnsbutton" onclick="toggleColumns()" class="fa fa-columns" style="font-size: 1.5rem;" aria-hidden="true" role="button"></i></span>';
|
|
|
|
|
|
- $output .= '<p><strong>' . get_string('proposition', 'iassign') . ':</p> <div class="proposition">' . $this->activity->proposition . '</div>' . "\n";
|
|
|
|
-
|
|
|
|
- print $OUTPUT->box($output);
|
|
|
|
- } // function show_info_iassign()
|
|
|
|
-
|
|
|
|
|
|
+ return $output;
|
|
|
|
+ }
|
|
|
|
|
|
/// Shows date of opening and closing activities
|
|
/// Shows date of opening and closing activities
|
|
function view_dates () {
|
|
function view_dates () {
|