if ($istutor) { echo html_writer::tag("div", $turnitintooltwoview->output_lti_form_launch('peermark_manager', 'Instructor', $parts[$part]->tiiassignid), array("class" => "launch_form")); } break; case "peermarkreviews": if ($istutor || has_capability('mod/turnitintooltwo:submit', context_module::instance($cm->id))) { echo html_writer::tag("div", $turnitintooltwoview->output_lti_form_launch('peermark_reviews', $userrole, $parts[$part]->tiiassignid), array("class" => "launch_form")); } break; case "origreport": case "grademark": case "downloadoriginal": case "default": $submissionid = required_param('submissionid', PARAM_INT); $user = new turnitintooltwo_user($USER->id, $userrole); echo html_writer::tag("div", $turnitintooltwoview->output_dv_launch_form($do, $submissionid, $user->tii_user_id, $userrole), array("class" => "launch_form")); if ($do === "origreport") { $submission = new turnitintooltwo_submission($submissionid, 'turnitin'); turnitintooltwo_add_to_log($turnitintooltwoassignment->turnitintooltwo->course, "view submission", 'view.php?id=' . $cm->id, get_string('viewsubmissiondesc', 'turnitintooltwo') . " '{$submission->submission_title}'", $cm->id, $submission->userid); } break; case "submissions": // Output a link for the student to accept the turnitin licence agreement. $noscriptula = ""; $ula = ""; if (!$istutor) { $eulaaccepted = false; $user = new turnitintooltwo_user($USER->id, $userrole); $coursedata = $turnitintooltwoassignment->get_course_data($turnitintooltwoassignment->turnitintooltwo->course); $user->join_user_to_class($coursedata->turnitin_cid); $eulaaccepted = $user->user_agreement_accepted != 1 ? $user->get_accepted_user_agreement() : $user->user_agreement_accepted;
/** * Outputs the HTML for the submission form * * @global object $CFG * @global object $OUTPUT * @param object $cm The moodle course module object for this instance * @param object $turnitintooltwoassignment The turnitintooltwo object for this activity * @param int $partid The part id being submitted to * @param int $userid The user id who the submission is for * @param array $turnitintooltwofileuploadoptions upload options for the file manager * @return string returns the HTML of the form */ public function show_submission_form($cm, $turnitintooltwoassignment, $partid, $turnitintooltwofileuploadoptions, $viewcontext = "box", $userid = 0) { global $CFG, $OUTPUT, $USER, $DB; $output = ""; $config = turnitintooltwo_admin_config(); $istutor = has_capability('mod/turnitintooltwo:grade', context_module::instance($cm->id)); // Check if the submitting user has accepted the EULA $eulaaccepted = false; if ($userid == $USER->id) { $user = new turnitintooltwo_user($userid, "Learner"); $coursedata = $turnitintooltwoassignment->get_course_data($turnitintooltwoassignment->turnitintooltwo->course); $user->join_user_to_class($coursedata->turnitin_cid); $eulaaccepted = $user->user_agreement_accepted != 1 ? $user->get_accepted_user_agreement() : $user->user_agreement_accepted; } $parts = $turnitintooltwoassignment->get_parts_available_to_submit(0, $istutor); if (!empty($parts)) { $elements = array(); $elements[] = array('header', 'submitpaper', get_string('submitpaper', 'turnitintooltwo')); $elements[] = array('hidden', 'submissionassignment', $turnitintooltwoassignment->turnitintooltwo->id); $elements[] = array('hidden', 'action', 'submission'); if ($istutor || $eulaaccepted == 1) { // Upload type. switch ($turnitintooltwoassignment->turnitintooltwo->type) { case 0: $options = $this->get_filetypes(false); $elements[] = array('select', 'submissiontype', get_string('submissiontype', 'turnitintooltwo'), 'submissiontype', $options); break; case 1: case 2: $elements[] = array('hidden', 'submissiontype', $turnitintooltwoassignment->turnitintooltwo->type); break; } // User id if applicable. if ($istutor) { $elements[] = array('hidden', 'studentsname', $userid); } // Submission Title. $elements[] = array('text', 'submissiontitle', get_string('submissiontitle', 'turnitintooltwo'), 'submissiontitle', '', 'required', get_string('submissiontitleerror', 'turnitintooltwo'), PARAM_TEXT); // Submission Part(s). if ($partid == 0) { $options = array(); foreach ($parts as $part) { $options[$part->id] = $part->partname; } $elements[] = array('select', 'submissionpart', get_string('submissionpart', 'turnitintooltwo'), 'submissionpart', $options); } else { $elements[] = array('hidden', 'submissionpart', $partid); } // File input for uploads. if ($turnitintooltwoassignment->turnitintooltwo->type == 0 || $turnitintooltwoassignment->turnitintooltwo->type == 1) { $elements[] = array('filemanager', 'submissionfile', get_string('filetosubmit', 'turnitintooltwo'), 'filetosubmit', $turnitintooltwofileuploadoptions); } // Textarea. if ($turnitintooltwoassignment->turnitintooltwo->type == 0) { $elements[] = array('textarea', 'submissiontext', get_string('texttosubmit', 'turnitintooltwo'), 'texttosubmit'); } else { if ($turnitintooltwoassignment->turnitintooltwo->type == 2) { $elements[] = array('textarea', 'submissiontext', get_string('texttosubmit', 'turnitintooltwo'), 'texttosubmit', '', 'required', get_string('submissiontexterror', 'turnitintooltwo'), PARAM_TEXT); } } // Show agreement if applicable. if ($istutor || empty($config->agreement)) { $elements[] = array('hidden', 'submissionagreement', 1); $customdata["checkbox_label_after"] = false; } else { $elements[] = array('advcheckbox', 'submissionagreement', $config->agreement, '', array(0, 1), 'required', get_string('copyrightagreementerror', 'turnitintooltwo'), PARAM_INT); $customdata["checkbox_label_after"] = true; } } // Output a link for the student to accept the turnitin licence agreement. $noscriptula = ""; $ula = ""; if ($userid == $USER->id) { if ($eulaaccepted != 1) { $ula = html_writer::tag('p', get_string('turnitinula', 'turnitintooltwo'), array('class' => 'turnitin_ula_text')); $ula .= html_writer::tag('div', turnitintooltwo_view::output_dv_launch_form("useragreement", 0, $user->tii_user_id, "Learner", get_string('turnitinula_btn', 'turnitintooltwo'), false), array('class' => 'turnitin_ula', 'data-userid' => $userid)); $noscriptula = html_writer::tag('noscript', $this->output_dv_launch_form("useragreement", 0, $user->tii_user_id, "Learner", get_string('turnitinula', 'turnitintooltwo'), false) . " " . get_string('noscriptula', 'turnitintooltwo'), array('class' => 'warning turnitin_ula_noscript')); } } $customdata["elements"] = $elements; $customdata["show_cancel"] = false; // Get any previous submission to determine if this is a resubmission. $prevsubmission = $turnitintooltwoassignment->get_user_submissions($userid, $turnitintooltwoassignment->turnitintooltwo->id, $partid); $customdata["submit_label"] = count($prevsubmission) == 0 ? get_string('addsubmission', 'turnitintooltwo') : get_string('resubmission', 'turnitintooltwo'); $customdata["disable_form_change_checker"] = true; $optionsform = new turnitintooltwo_form($CFG->wwwroot . '/mod/turnitintooltwo/view.php?id=' . $cm->id . '&do=submitpaper&view_context=' . $viewcontext, $customdata); $output .= $ula . $noscriptula; $output .= $OUTPUT->box($optionsform->display(), "submission_form_container"); $turnitincomms = new turnitintooltwo_comms(); $turnitincall = $turnitincomms->initialise_api(); $customdata = array("disable_form_change_checker" => true, "elements" => array(array('html', $OUTPUT->box('', '', 'useragreement_inputs')))); $eulaform = new turnitintooltwo_form($turnitincall->getApiBaseUrl() . TiiLTI::EULAENDPOINT, $customdata, 'POST', $target = 'eulaWindow', array('id' => 'eula_launch')); $output .= $OUTPUT->box($eulaform->display(), '', 'useragreement_form'); } return $output; }
$pluginturnitin = new plagiarism_plugin_turnitin(); switch ($action) { case "get_dv_html": $submissionid = required_param('submissionid', PARAM_INT); $dvtype = optional_param('dvtype', 'default', PARAM_ALPHAEXT); $user = new turnitintooltwo_user($USER->id, $userrole); $coursedata = turnitintooltwo_assignment::get_course_data($cm->course, 'PP'); if ($userrole == 'Instructor') { $user->join_user_to_class($coursedata->turnitin_cid); } // Edit assignment in Turnitin in case any changes have been made that would affect DV. $pluginturnitin = new plagiarism_plugin_turnitin(); $syncassignment = $pluginturnitin->sync_tii_assignment($cm, $coursedata->turnitin_cid); if ($syncassignment['success']) { $turnitintooltwoview = new turnitintooltwo_view(); $return = html_writer::tag("div", $turnitintooltwoview->output_dv_launch_form($dvtype, $submissionid, $user->tii_user_id, $userrole, ''), array('style' => 'display: none')); } break; case "update_grade": if (!confirm_sesskey()) { throw new moodle_exception('invalidsesskey', 'error'); } include_once $CFG->libdir . "/gradelib.php"; $submissionid = optional_param('submission', 0, PARAM_INT); if ($userrole == 'Instructor' && $cm->modname == "assign") { $return["status"] = $pluginturnitin->update_grades_from_tii($cm); $moduleconfigvalue = new stdClass(); // If we have a turnitin timestamp stored then update it, otherwise create it. if ($timestampid = $DB->get_record('plagiarism_turnitin_config', array('cm' => $cm->id, 'name' => 'grades_last_synced'), 'id')) { $moduleconfigvalue->id = $timestampid->id; $moduleconfigvalue->value = time();
$eula_user->userid = $eula_user_id; $eula_user->user_agreement_accepted = 1; // Update the user using the above object $DB->update_record('turnitintooltwo_users', $eula_user, $bulk = false); break; case "downloadoriginal": case "origreport": case "grademark": $assignmentid = required_param('assignment', PARAM_INT); $turnitintooltwoassignment = new turnitintooltwo_assignment($assignmentid); $cm = get_coursemodule_from_instance("turnitintooltwo", $assignmentid); if (has_capability('mod/turnitintooltwo:read', context_module::instance($cm->id))) { $submissionid = required_param('submission', PARAM_INT); $userrole = has_capability('mod/turnitintooltwo:grade', context_module::instance($cm->id)) ? 'Instructor' : 'Learner'; $user = new turnitintooltwo_user($USER->id, $userrole); echo turnitintooltwo_view::output_dv_launch_form($action, $submissionid, $user->tii_user_id, $userrole); } break; case "orig_zip": case "xls_inbox": case "origchecked_zip": case "gmpdf_zip": $assignmentid = required_param('assignment', PARAM_INT); $turnitintooltwoassignment = new turnitintooltwo_assignment($assignmentid); $cm = get_coursemodule_from_instance("turnitintooltwo", $assignmentid); if (has_capability('mod/turnitintooltwo:grade', context_module::instance($cm->id))) { $partid = optional_param('part', 0, PARAM_INT); $user = new turnitintooltwo_user($USER->id, 'Instructor'); $user->edit_tii_user(); if ($action == "orig_zip") { $cm = get_coursemodule_from_instance("turnitintooltwo", $assignmentid);
$output .= turnitintooltwo_init_browser_assignment_table($tiicourseid); break; case "rubricmanager": $PAGE->set_pagelayout('embedded'); $tiicourseid = optional_param('tiicourseid', 0, PARAM_INT); echo html_writer::tag("div", $turnitintooltwoview->output_lti_form_launch('rubric_manager', 'Instructor', 0, $tiicourseid), array("class" => "launch_form")); break; case "quickmarkmanager": $PAGE->set_pagelayout('embedded'); echo html_writer::tag("div", $turnitintooltwoview->output_lti_form_launch('quickmark_manager', 'Instructor'), array("class" => "launch_form")); break; case "useragreement": $PAGE->set_pagelayout('embedded'); $user = new turnitintooltwo_user($USER->id, "Learner"); $output .= $OUTPUT->box_start('tii_eula_launch'); $output .= turnitintooltwo_view::output_dv_launch_form("useragreement", 0, $user->tii_user_id, "Learner", ''); $output .= $OUTPUT->box_end(true); echo $output; echo html_writer::script("<!--\n window.document.forms[0].submit();\n //-->"); break; } $nav = $cmd == "courses" || $cmd == "multiple_class_recreation" || $cmd == "class_recreation" ? array(array('title' => get_string('restorationheader', 'turnitintooltwo'), 'url' => '')) : array(); // Build page. $coursemodforheader = $id != 0 ? $cm : null; $courseforheader = $id != 0 ? $course : null; echo $turnitintooltwoview->output_header($coursemodforheader, $courseforheader, $url, $title, $title, $nav, "", "", true, '', ''); echo html_writer::start_tag('div', array('class' => 'mod_turnitintooltwo')); echo html_writer::tag("div", $viewcontext, array("id" => "view_context")); if ($cmd == 'courses') { echo $OUTPUT->heading(get_string('pluginname', 'turnitintooltwo'), 2, 'main'); // Show a warning if javascript is not enabled while a tutor is logged in.
/** * Print the Turnitin student disclosure inside the submission page for students to see * * @global type $DB * @global type $OUTPUT * @param type $cmid * @return type */ public function print_disclosure($cmid) { global $DB, $OUTPUT, $USER, $PAGE, $CFG; static $tiiconnection; if (empty($tiiconnection)) { $tiiconnection = $this->test_turnitin_connection(); } $config = turnitintooltwo_admin_config(); $output = ''; // Get course details $cm = get_coursemodule_from_id('', $cmid); $moduletiienabled = $this->get_config_settings('mod_' . $cm->modname); // Exit if Turnitin is not being used for this activity type. if (empty($moduletiienabled)) { return ''; } $plagiarismsettings = $this->get_settings($cmid); // Check Turnitin is enabled for this current module. if (empty($plagiarismsettings['use_turnitin'])) { return ''; } $this->load_page_components(); // Show agreement. if (!empty($config->agreement)) { $contents = format_text($config->agreement, FORMAT_MOODLE, array("noclean" => true)); $output = $OUTPUT->box($contents, 'generalbox boxaligncenter', 'intro'); } // Show EULA if necessary and we have a connection to Turnitin. if ($tiiconnection) { $coursedata = $this->get_course_data($cm->id, $cm->course); $user = new turnitintooltwo_user($USER->id, "Learner"); $user->join_user_to_class($coursedata->turnitin_cid); $eulaaccepted = $user->user_agreement_accepted == 0 ? $user->get_accepted_user_agreement() : $user->user_agreement_accepted; if ($eulaaccepted != 1) { // Moodle strips out form and script code for forum posts so we have to do the Eula Launch differently. $ula_link = html_writer::link($CFG->wwwroot . '/plagiarism/turnitin/extras.php?cmid=' . $cmid . '&cmd=useragreement&view_context=box_solid', $OUTPUT->pix_icon('tiiIcon', '', 'plagiarism_turnitin', array('class' => 'icon_size_large')) . '<br/>' . get_string('turnitinppulapre', 'plagiarism_turnitin'), array("class" => "pp_turnitin_eula_link")); $eulaignoredclass = $eulaaccepted == 0 ? ' pp_turnitin_ula_ignored' : ''; $ula = html_writer::tag('div', $ula_link, array('class' => 'pp_turnitin_ula js_required' . $eulaignoredclass, 'data-userid' => $user->id)); $noscriptula = html_writer::tag('noscript', turnitintooltwo_view::output_dv_launch_form("useragreement", 0, $user->tii_user_id, "Learner", get_string('turnitinppulapre', 'plagiarism_turnitin'), false) . " " . get_string('noscriptula', 'plagiarism_turnitin'), array('class' => 'warning turnitin_ula_noscript')); } // Show EULA launcher and form placeholder. if (!empty($ula)) { $output .= $ula . $noscriptula; $turnitincomms = new turnitin_comms(); $turnitincall = $turnitincomms->initialise_api(); $customdata = array("disable_form_change_checker" => true, "elements" => array(array('html', $OUTPUT->box('', '', 'useragreement_inputs')))); $eulaform = new turnitintooltwo_form($turnitincall->getApiBaseUrl() . TiiLTI::EULAENDPOINT, $customdata, 'POST', $target = 'eulaWindow', array('id' => 'eula_launch')); $output .= $OUTPUT->box($eulaform->display(), 'tii_useragreement_form', 'useragreement_form'); } } if ($config->usegrademark && !empty($plagiarismsettings["plagiarism_rubric"])) { // Update assignment in case rubric is not stored in Turnitin yet. $tiiassignment = $this->sync_tii_assignment($cm, $coursedata->turnitin_cid); $rubricviewlink = html_writer::tag('div', html_writer::link($CFG->wwwroot . '/plagiarism/turnitin/ajax.php?cmid=' . $cm->id . '&action=rubricview&view_context=box', get_string('launchrubricview', 'plagiarism_turnitin'), array('class' => 'rubric_view_pp_launch', 'id' => 'rubric_view_launch', 'title' => get_string('launchrubricview', 'plagiarism_turnitin'))) . html_writer::tag('span', '', array('class' => 'launch_form', 'id' => 'rubric_view_form')), array('class' => 'row_rubric_view')); $output .= html_writer::tag('div', $rubricviewlink, array('class' => 'tii_links_container tii_disclosure_links')); } return $output; }