public function execute() { global $CFG, $DB; require_once $CFG->dirroot . "/mod/turnitintooltwo/lib.php"; require_once $CFG->dirroot . "/mod/turnitintooltwo/turnitintooltwo_view.class.php"; $data = (array) $this->get_custom_data(); // Make sure we are still wanted. $submission = $DB->get_record('turnitintooltwo_submissions', array('id' => $data['submissionid'])); if (!$submission) { return true; } cli_writeln("Processing Turnitintooltwo submission: " . $data['submissionid']); $user = $DB->get_record('user', array('id' => $data['userid'])); \core\session\manager::set_user($user); $turnitintooltwo = $DB->get_record('turnitintooltwo', array('id' => $data['tiiid'])); list($course, $cm) = get_course_and_cm_from_instance($turnitintooltwo, 'turnitintooltwo'); try { $turnitintooltwoassignment = new \turnitintooltwo_assignment($turnitintooltwo->id, $turnitintooltwo); $turnitintooltwosubmission = new \turnitintooltwo_submission($data['submissionid'], "moodle", $turnitintooltwoassignment); $parts = $turnitintooltwoassignment->get_parts(); $tiisubmission = $turnitintooltwosubmission->do_tii_submission($cm, $turnitintooltwoassignment); // Update submission. $DB->update_record('turnitintooltwo_submissions', array('id' => $data['submissionid'], 'submission_modified' => $data['subtime'])); } catch (\Exception $e) { $tiisubmission = array('success' => false, 'message' => $e->getMessage()); cli_writeln($e->getMessage()); } $digitalreceipt = $tiisubmission; $digitalreceipt['is_manual'] = 0; $digitalreceipt = json_encode($digitalreceipt); $this->update_sub_status($data['submissionid'], $tiisubmission['success'], $digitalreceipt); if ($tiisubmission['success'] === true) { $lockedassignment = new \stdClass(); $lockedassignment->id = $turnitintooltwoassignment->turnitintooltwo->id; $lockedassignment->submitted = 1; $DB->update_record('turnitintooltwo', $lockedassignment); $lockedpart = new \stdClass(); $lockedpart->id = $data['submissionpart']; $lockedpart->submitted = 1; // Disable anonymous marking if post date has passed. if ($parts[$data['submissionpart']]->dtpost <= time()) { $lockedpart->unanon = 1; } $DB->update_record('turnitintooltwo_parts', $lockedpart); cli_writeln("Finished processing successful submission: " . $data['submissionid']); } else { turnitintooltwo_add_to_log($course->id, "errored submission", 'view.php?id=' . $cm->id, "Failed to submit '" . $turnitintooltwosubmission->submission_title . "'", $cm->id, $user->id, array('submissionid' => $data['submissionid'])); cli_writeln("Finished processing unsuccessful submission: " . $data['submissionid']); } \core\session\manager::set_user(get_admin()); return $tiisubmission['success']; }
if (in_array($do, $forbiddenmsgscreens)) { $PAGE->set_popup_notification_allowed(false); } // Configure URL correctly. $urlparams = array('id' => $id, 'a' => $a, 'part' => $part, 'user' => $user, 'do' => $do, 'action' => $action, 'view_context' => $viewcontext); $url = new moodle_url('/mod/turnitintooltwo/view.php', $urlparams); // Load Javascript and CSS. $turnitintooltwoview->load_page_components(); $turnitintooltwoassignment = new turnitintooltwo_assignment($turnitintooltwo->id, $turnitintooltwo); // Define file upload options. $maxbytessite = $CFG->maxbytes == 0 || $CFG->maxbytes > TURNITINTOOLTWO_MAX_FILE_UPLOAD_SIZE ? TURNITINTOOLTWO_MAX_FILE_UPLOAD_SIZE : $CFG->maxbytes; $maxbytescourse = $COURSE->maxbytes == 0 || $COURSE->maxbytes > TURNITINTOOLTWO_MAX_FILE_UPLOAD_SIZE ? TURNITINTOOLTWO_MAX_FILE_UPLOAD_SIZE : $COURSE->maxbytes; $maxfilesize = get_user_max_upload_file_size(context_module::instance($cm->id), $maxbytessite, $maxbytescourse, $turnitintooltwoassignment->turnitintooltwo->maxfilesize); $maxfilesize = $maxfilesize <= 0 ? TURNITINTOOLTWO_MAX_FILE_UPLOAD_SIZE : $maxfilesize; $turnitintooltwofileuploadoptions = array('maxbytes' => $maxfilesize, 'subdirs' => false, 'maxfiles' => 1, 'accepted_types' => '*'); if (!($parts = $turnitintooltwoassignment->get_parts())) { turnitintooltwo_print_error('partgeterror', 'turnitintooltwo', null, null, __FILE__, __LINE__); } // Get whether user is a tutor/student. $istutor = has_capability('mod/turnitintooltwo:grade', context_module::instance($cm->id)); $userrole = $istutor ? 'Instructor' : 'Learner'; // Deal with actions here. if (!empty($action)) { turnitintooltwo_activitylog("Action: " . $action . " | Id: " . $turnitintooltwo->id . " | Part: " . $part, "REQUEST"); switch ($action) { case "delpart": if (!confirm_sesskey()) { throw new moodle_exception('invalidsesskey', 'error'); } if ($turnitintooltwoassignment->delete_moodle_assignment_part($turnitintooltwoassignment->turnitintooltwo->id, $part)) { $_SESSION["notice"]['message'] = get_string('partdeleted', 'turnitintooltwo');
/** * Return a table containing all the assignments in the relevant course * * @global type $CFG * @global type $OUTPUT * @param obj $course the moodle course data * @return output */ public function show_assignments($course) { global $CFG, $OUTPUT, $USER; $turnitintooltwos = turnitintooltwo_assignment::get_all_assignments_in_course($course); $table = new html_table(); $table->id = "dataTable"; $rows = array(); // Do the table headers. $cells = array(); if ($course->format == "weeks") { $cells["weeks"] = new html_table_cell(get_string("week")); } else { if ($course->format == "topics") { $cells["topics"] = new html_table_cell(get_string("topic")); } } $cells["name"] = new html_table_cell(get_string("name")); $cells["start_date"] = new html_table_cell(get_string("dtstart", "turnitintooltwo")); $cells["number_of_parts"] = new html_table_cell(get_string("numberofparts", "turnitintooltwo")); $cells["submissions"] = new html_table_cell(get_string("submissions", "turnitintooltwo")); $table->head = $cells; $i = 1; foreach ($turnitintooltwos as $turnitintooltwo) { $cm = get_coursemodule_from_id('turnitintooltwo', $turnitintooltwo->coursemodule, $course->id); $turnitintooltwoassignment = new turnitintooltwo_assignment($turnitintooltwo->id, $turnitintooltwo); if ($course->format == "weeks" || $course->format == "topics") { $cells[$course->format] = new html_table_cell($turnitintooltwoassignment->turnitintooltwo->section); $cells[$course->format]->attributes["class"] = "centered_cell"; } // Show links dimmed if the mod is hidden. $attributes["class"] = !$turnitintooltwo->visible ? 'dimmed' : ''; $linkurl = $CFG->wwwroot . '/mod/turnitintooltwo/view.php?id=' . $turnitintooltwoassignment->turnitintooltwo->coursemodule . '&do=submissions'; $cells["name"] = new html_table_cell(html_writer::link($linkurl, $turnitintooltwo->name, $attributes)); $cells["start_date"] = new html_table_cell(userdate($turnitintooltwoassignment->get_start_date(), get_string('strftimedatetimeshort', 'langconfig'))); $cells["start_date"]->attributes["class"] = "centered_cell"; $cells["number_of_parts"] = new html_table_cell(count($turnitintooltwoassignment->get_parts())); $cells["number_of_parts"]->attributes["class"] = "centered_cell"; if (has_capability('mod/turnitintooltwo:grade', context_module::instance($cm->id))) { $noofsubmissions = $turnitintooltwoassignment->count_submissions($cm, 0); } else { $noofsubmissions = count($turnitintooltwoassignment->get_user_submissions($USER->id, $turnitintooltwoassignment->turnitintooltwo->id)); } $cells["submissions"] = new html_table_cell(html_writer::link($linkurl, $noofsubmissions, $attributes)); $cells["submissions"]->attributes["class"] = "centered_cell"; $rows[$i] = new html_table_row($cells); $i++; } $table->data = $rows; return $OUTPUT->box(html_writer::table($table), 'generalbox boxaligncenter'); }
/** * Get full submission details and work out overall grade * * @global type $DB * @param type $turnitintooltwoassignment * @param type $submission_id * @param type $id_type * @return type */ private function get_submission_details($idtype = "moodle", $turnitintooltwoassignment = "") { global $DB; if ($idtype == "moodle") { $condition = array("id" => $this->id); } else { $condition = array("submission_objectid" => $this->submission_objectid); } if ($submission = $DB->get_record('turnitintooltwo_submissions', $condition, '*', IGNORE_MULTIPLE)) { if (empty($turnitintooltwoassignment)) { $turnitintooltwoassignment = new turnitintooltwo_assignment($submission->turnitintooltwoid); $this->turnitintooltwoid = $turnitintooltwoassignment->turnitintooltwo->id; } if (count($turnitintooltwoassignment->get_parts() > 1)) { if ($submission->userid != 0) { $usersubmissions = $turnitintooltwoassignment->get_user_submissions($submission->userid, $submission->turnitintooltwoid); $useroverallgrade = $turnitintooltwoassignment->get_overall_grade($usersubmissions); if ($turnitintooltwoassignment->turnitintooltwo->grade == 0 or $useroverallgrade === '--') { $this->overall_grade = '--'; } else { if ($turnitintooltwoassignment->turnitintooltwo->grade < 0) { // Scale. $scale = $DB->get_record('scale', array('id' => $turnitintooltwoassignment->turnitintooltwo->grade * -1)); $scalearray = explode(",", $scale->scale); // Array is zero indexed, Scale positions are from 1 upward. $index = $useroverallgrade - 1; $this->overall_grade = $scalearray[$index]; } else { $this->overall_grade = round($useroverallgrade / $turnitintooltwoassignment->turnitintooltwo->grade * 100, 1) . '%'; } } } else { $this->overall_grade = '--'; } } foreach ($submission as $field => $value) { $this->{$field} = $value; } if ($submission->userid > 0) { $user = $DB->get_record('user', array('id' => $submission->userid), 'firstname, lastname'); $this->firstname = $user->firstname; $this->lastname = $user->lastname; $this->fullname = fullname($user); $this->nmoodle = 0; } else { $this->firstname = $submission->submission_nmfirstname; $this->lastname = $submission->submission_nmlastname; $tmpuser = new stdClass(); $tmpuser->firstname = $submission->submission_nmfirstname; $tmpuser->lastname = $submission->submission_nmlastname; $this->fullname = fullname($tmpuser); $this->nmoodle = 1; } } else { if ($idtype == "moodle") { turnitintooltwo_print_error('submissiongeterror', 'turnitintooltwo', null, null, __FILE__, __LINE__); } } }
/** * This is a standard Moodle module that prints out a summary of all activities of this kind in the My Moodle page for a user * * @param object $courses * @param object $htmlarray * @global type $USER * @global type $CFG * @global type $DB * @global type $OUTPUT * @return bool success */ function turnitintooltwo_print_overview($courses, &$htmlarray) { global $USER, $CFG, $DB, $OUTPUT; if (empty($courses) || !is_array($courses) || count($courses) == 0) { return array(); } if (!($turnitintooltwos = get_all_instances_in_courses('turnitintooltwo', $courses))) { return; } $submissioncount = array(); foreach ($turnitintooltwos as $key => $turnitintooltwo) { $turnitintooltwoassignment = new turnitintooltwo_assignment($turnitintooltwo->id, $turnitintooltwo); $parts = $turnitintooltwoassignment->get_parts(false); $cm = get_coursemodule_from_id('turnitintooltwo', $turnitintooltwo->coursemodule); $context = context_module::instance($cm->id); $partsarray = array(); $grader = has_capability('mod/turnitintooltwo:grade', $context); if ($grader) { $allusers = get_users_by_capability($context, 'mod/turnitintooltwo:submit', 'u.id', '', '', '', 0, '', false); $submissionsquery = $DB->get_records_select('turnitintooltwo_submissions', 'turnitintooltwoid = ? GROUP BY id, submission_part, submission_grade, submission_gmimaged', array($turnitintooltwo->id), '', 'id, submission_part, submission_grade, submission_gmimaged'); foreach ($submissionsquery as $submission) { if (!isset($submissioncount[$submission->submission_part])) { $submissioncount[$submission->submission_part] = array('graded' => 0, 'submitted' => 0); } if ($submission->submission_grade != 'NULL' and $submission->submission_gmimaged == 1) { $submissioncount[$submission->submission_part]['graded']++; } $submissioncount[$submission->submission_part]['submitted']++; } } foreach ($parts as $part) { if (!isset($submissioncount[$part->id])) { $submissioncount[$part->id] = array('graded' => 0, 'submitted' => 0); } $partsarray[$part->id]['name'] = $part->partname; $partsarray[$part->id]['dtdue'] = $part->dtdue; if ($grader) { // If user is a grader. $numsubmissions = $submissioncount[$part->id]['submitted']; $graded = $submissioncount[$part->id]['graded']; $input = new stdClass(); $input->submitted = $numsubmissions; $input->graded = $graded; $input->total = count($allusers); $input->gplural = $graded != 1 ? 's' : ''; $partsarray[$part->id]['status'] = get_string('tutorstatus', 'turnitintooltwo', $input); } else { // If user is a student. $submission = $turnitintooltwoassignment->get_submissions($cm, $part->id, $USER->id, 1); if (!empty($submission[$part->id][$USER->id])) { $input = new stdClass(); $input->modified = userdate($submission[$part->id][$USER->id]->submission_modified, get_string('strftimedatetimeshort', 'langconfig')); $input->objectid = $submission[$part->id][$USER->id]->submission_objectid; $partsarray[$part->id]['status'] = get_string('studentstatus', 'turnitintooltwo', $input); } else { $partsarray[$part->id]['status'] = get_string('nosubmissions', 'turnitintooltwo'); } } } $attributes["class"] = $turnitintooltwo->visible ? "" : "dimmed"; $attributes["title"] = get_string('modulename', 'turnitintooltwo'); $assignmentlink = html_writer::link($CFG->wwwroot . "/mod/turnitintooltwo/view.php?id=" . $turnitintooltwo->coursemodule, $turnitintooltwo->name, $attributes); $partsblock = ""; foreach ($partsarray as $thispart) { $partstr = $thispart['name'] . ' - ' . get_string('dtdue', 'turnitintooltwo') . ': ' . userdate($thispart['dtdue'], get_string('strftimedatetimeshort', 'langconfig'), $USER->timezone); $partsblock .= $OUTPUT->box($OUTPUT->box($partstr, 'bold') . $OUTPUT->box($thispart['status'], 'italic'), 'info'); } $str = html_writer::tag('div', html_writer::tag('div', get_string('modulename', 'turnitintooltwo') . ": " . $assignmentlink . $partsblock, array('class' => 'name')), array('class' => 'turnitintooltwo overview')); if (empty($htmlarray[$turnitintooltwo->course]['turnitintooltwo'])) { $htmlarray[$turnitintooltwo->course]['turnitintooltwo'] = $str; } else { $htmlarray[$turnitintooltwo->course]['turnitintooltwo'] .= $str; } } }
public function show_form($instructorrubrics, $modulestring = '', $tiicourseid) { global $CFG, $OUTPUT, $COURSE, $PAGE; $PAGE->requires->string_for_js('changerubricwarning', 'turnitintooltwo'); $PAGE->requires->string_for_js('closebutton', 'turnitintooltwo'); $config = turnitintooltwo_admin_config(); $mform =& $this->_form; $script = ''; // Add in custom Javascript and CSS. if ($CFG->branch <= 25) { $script .= html_writer::tag('script', '', array("type" => "text/javascript", "src" => $CFG->wwwroot . "/mod/turnitintooltwo/jquery/jquery-1.8.2.min.js")); $script .= html_writer::tag('script', '', array("id" => "plugin_turnitin_script", "type" => "text/javascript", "src" => $CFG->wwwroot . "/mod/turnitintooltwo/jquery/turnitintooltwo.min.js")); $script .= html_writer::tag('script', '', array("type" => "text/javascript", "src" => $CFG->wwwroot . "/mod/turnitintooltwo/jquery/jquery-ui-1.10.4.custom.min.js")); $script .= html_writer::tag('script', '', array("type" => "text/javascript", "src" => $CFG->wwwroot . "/mod/turnitintooltwo/jquery/jquery.colorbox.js")); $script .= html_writer::tag('script', '', array("type" => "text/javascript", "src" => $CFG->wwwroot . "/mod/turnitintooltwo/jquery/jquery.colorbox.js")); $script .= html_writer::tag('script', '', array("type" => "text/javascript", "src" => $CFG->wwwroot . "/mod/turnitintooltwo/jquery/moment.js")); } else { $PAGE->requires->jquery(); $PAGE->requires->jquery_plugin('ui'); $PAGE->requires->jquery_plugin('turnitintooltwo-turnitintooltwo', 'mod_turnitintooltwo'); $PAGE->requires->jquery_plugin('turnitintooltwo-colorbox', 'mod_turnitintooltwo'); $PAGE->requires->jquery_plugin('turnitintooltwo-moment', 'mod_turnitintooltwo'); } $PAGE->requires->string_for_js('anonalert', 'turnitintooltwo'); $script .= html_writer::tag('link', '', array("rel" => "stylesheet", "type" => "text/css", "href" => $CFG->wwwroot . "/mod/turnitintooltwo/styles.css")); $script .= html_writer::tag('link', '', array("rel" => "stylesheet", "type" => "text/css", "href" => $CFG->wwwroot . "/mod/turnitintooltwo/css/colorbox.css")); $script .= html_writer::tag('link', '', array("rel" => "stylesheet", "type" => "text/css", "href" => $CFG->wwwroot . "/mod/turnitintooltwo/css/tii-icon-webfont.css")); $mform->addElement('html', $script); $config_warning = ''; if (empty($config->accountid) || empty($config->secretkey) || empty($config->apiurl)) { $config_warning = html_writer::tag('div', get_string('configureerror', 'turnitintooltwo'), array('class' => 'library_not_present_warning')); } if ($config_warning != '') { $mform->addElement('html', $config_warning); } $noscript = html_writer::tag('noscript', get_string('noscript', 'turnitintooltwo'), array("class" => "warning")); $mform->addElement('html', $noscript); if (isset($_SESSION["notice"])) { $notice = $_SESSION["notice"]; if (empty($_SESSION["notice"]["type"])) { $notice["type"] = "general"; } unset($_SESSION["notice"]); } else { $notice = null; } if (!is_null($notice)) { $mform->addElement('html', $OUTPUT->box($notice["message"], 'generalbox', $notice["type"])); } $mform->addElement('header', 'general', get_string('general', 'form')); $mform->addElement('text', 'name', get_string('turnitintooltwoname', 'turnitintooltwo'), array('size' => '64')); $mform->setType('name', PARAM_RAW); $mform->addRule('name', null, 'required', null, 'client'); $input = new stdClass(); $input->length = 40; $input->field = get_string('turnitintooltwoname', 'turnitintooltwo'); $mform->addRule('name', get_string('maxlength', 'turnitintooltwo', $input), 'maxlength', 40, 'client'); $mform->addRule('name', get_string('maxlength', 'turnitintooltwo', $input), 'maxlength', 40, 'server'); if ($CFG->branch >= 29) { $this->standard_intro_elements(get_string('turnitintooltwointro', 'turnitintooltwo')); } else { $this->add_intro_editor(true, get_string('turnitintooltwointro', 'turnitintooltwo')); } $typeoptions = turnitintooltwo_filetype_array(true); $mform->addElement('select', 'type', get_string('type', 'turnitintooltwo'), $typeoptions); $mform->addHelpButton('type', 'types', 'turnitintooltwo'); $mform->addRule('type', get_string('required'), 'required', null, 'client'); $mform->setDefault('type', $config->default_type); $options = array(); if ($this->updating) { $j = $this->current->numparts; } else { $j = 1; } for ($i = $j; $i <= 5; $i++) { $options[$i] = $i; } $mform->addElement('select', 'numparts', get_string('numberofparts', 'turnitintooltwo'), $options); $mform->addHelpButton('numparts', 'numberofparts', 'turnitintooltwo'); $mform->setDefault('numparts', $config->default_numparts); $mform->addElement('hidden', 'portfolio', 0); $mform->setType('portfolio', PARAM_INT); $maxbytessite = $CFG->maxbytes == 0 || $CFG->maxbytes > TURNITINTOOLTWO_MAX_FILE_UPLOAD_SIZE ? TURNITINTOOLTWO_MAX_FILE_UPLOAD_SIZE : $CFG->maxbytes; $maxbytescourse = $COURSE->maxbytes == 0 || $COURSE->maxbytes > TURNITINTOOLTWO_MAX_FILE_UPLOAD_SIZE ? TURNITINTOOLTWO_MAX_FILE_UPLOAD_SIZE : $COURSE->maxbytes; $options = get_max_upload_sizes($maxbytessite, $maxbytescourse, TURNITINTOOLTWO_MAX_FILE_UPLOAD_SIZE); $mform->addElement('select', 'maxfilesize', get_string('maxfilesize', 'turnitintooltwo'), $options); $mform->addHelpButton('maxfilesize', 'maxfilesize', 'turnitintooltwo'); unset($options); for ($i = 0; $i <= 100; $i++) { $options[$i] = $i; } $ynoptions = array(0 => get_string('no'), 1 => get_string('yes')); if ($this->updating and $config->useanon and isset($this->turnitintooltwo->anon) and $this->turnitintooltwo->submitted == 1) { $staticout = (isset($this->turnitintooltwo->anon) and $this->turnitintooltwo->anon) ? get_string('yes') : get_string('no'); $mform->addElement('static', 'static', get_string('turnitinanon', 'turnitintooltwo'), $staticout); $mform->addElement('hidden', 'anon', $this->turnitintooltwo->anon); $mform->addHelpButton('anon', 'turnitinanon', 'turnitintooltwo'); } else { if ($config->useanon) { $mform->addElement('select', 'anon', get_string('turnitinanon', 'turnitintooltwo'), $ynoptions); $mform->addHelpButton('anon', 'turnitinanon', 'turnitintooltwo'); $anondefault = isset($config->default_anon) ? $config->default_anon : 0; $mform->setDefault('anon', $anondefault); } else { $mform->addElement('hidden', 'anon', 0); } } $mform->setType('anon', PARAM_INT); $mform->addElement('select', 'allownonor', get_string('allownonor', 'turnitintooltwo'), $ynoptions); $mform->addHelpButton('allownonor', 'allownonor', 'turnitintooltwo'); $mform->setDefault('allownonor', $config->default_allownonor); $mform->addElement('select', 'studentreports', get_string('studentreports', 'turnitintooltwo'), $ynoptions); $mform->addHelpButton('studentreports', 'studentreports', 'turnitintooltwo'); $mform->setDefault('studentreports', $config->default_studentreports); $gradedisplayoptions = array(1 => get_string('displaygradesaspercent', 'turnitintooltwo'), 2 => get_string('displaygradesasfraction', 'turnitintooltwo')); $mform->addElement('select', 'gradedisplay', get_string('displaygradesas', 'turnitintooltwo'), $gradedisplayoptions); $mform->addHelpButton('gradedisplay', 'displaygradesas', 'turnitintooltwo'); $mform->setDefault('gradedisplay', $config->default_gradedisplay); $refreshoptions = array(1 => get_string('yesgrades', 'turnitintooltwo'), 0 => get_string('nogrades', 'turnitintooltwo')); $mform->addElement('select', 'autoupdates', get_string('autorefreshgrades', 'turnitintooltwo'), $refreshoptions); $mform->addHelpButton('autoupdates', 'autorefreshgrades', 'turnitintooltwo'); $mform->setDefault('autoupdates', 1); $mform->addElement('checkbox', 'set_instructor_defaults', '', " " . get_string('setinstructordefaults', 'turnitintooltwo')); $mform->setDefault('set_instructor_defaults', false); $mform->addHelpButton('set_instructor_defaults', 'setinstructordefaults', 'turnitintooltwo'); $dateoptions = array('startyear' => date('Y', strtotime('-6 years')), 'stopyear' => date('Y', strtotime('+6 years')), 'timezone' => 99, 'applydst' => true, 'step' => 1, 'optional' => false); $this->standard_grading_coursemodule_elements(); if (isset($this->_cm->id)) { $turnitintooltwoassignment = new turnitintooltwo_assignment($this->_cm->instance); $parts = $turnitintooltwoassignment->get_parts(); $partsArray = array(); foreach ($parts as $key => $value) { $partsArray[] = $value; } } for ($i = 1; $i <= 5; $i++) { $mform->addElement('header', 'partdates' . $i, get_string('partname', 'turnitintooltwo') . " " . $i); if (isset($this->_cm->id) && isset($partsArray[$i - 1])) { $partdetails = $turnitintooltwoassignment->get_part_details($partsArray[$i - 1]->id); $mform->addElement('html', '<div class="assignment-part-' . $i . '" data-anon="' . $turnitintooltwoassignment->turnitintooltwo->anon . '" data-unanon="' . $partdetails->unanon . '" data-submitted="' . $partdetails->submitted . '" data-part-id="' . $i . '">'); } // Delete part link. if ($this->updating && $this->current->numparts > 1 && $i <= $this->current->numparts) { $attributes = array('class' => 'delete_link'); $numsubsattribute = "numsubs" . $i; if ($this->current->{$numsubsattribute} > 0) { $fnd = array("\n", "\r"); $rep = array('\\n', '\\r'); $string = str_replace($fnd, $rep, get_string('partdeletewarning', 'turnitintooltwo')); $attributes["onclick"] = "return confirm('" . $string . "');"; } $partidattribute = "id" . $i; $url = new moodle_url($CFG->wwwroot . "/mod/turnitintooltwo/view.php", array('id' => $this->_cm->id, 'action' => 'delpart', 'part' => $this->current->{$partidattribute}, 'sesskey' => sesskey())); $deletelink = html_writer::link($url, get_string('deletepart', 'turnitintooltwo') . " " . $OUTPUT->pix_icon('delete', get_string('delete'), 'mod_turnitintooltwo'), $attributes); $mform->addElement('html', $deletelink); } $mform->addElement('text', 'partname' . $i, get_string('name')); $mform->setType('partname' . $i, PARAM_RAW); $mform->setDefault('partname' . $i, get_string('turnitinpart', 'turnitintooltwo', $i)); $mform->addRule('partname' . $i, null, 'required', null, 'client'); $input = new stdClass(); $input->length = 40; $input->field = get_string('partname', 'turnitintooltwo') . " " . get_string('name'); $mform->addRule('partname' . $i, get_string('maxlength', 'turnitintooltwo', $input), 'maxlength', 40, 'client'); $mform->addRule('partname' . $i, get_string('maxlength', 'turnitintooltwo', $input), 'maxlength', 40, 'server'); $mform->addElement('date_time_selector', 'dtstart' . $i, get_string('dtstart', 'turnitintooltwo'), $dateoptions); $mform->setDefault('dtstart' . $i, time()); $mform->addElement('date_time_selector', 'dtdue' . $i, get_string('dtdue', 'turnitintooltwo'), $dateoptions); $mform->setDefault('dtdue' . $i, strtotime('+7 days')); $mform->addElement('date_time_selector', 'dtpost' . $i, get_string('dtpost', 'turnitintooltwo'), $dateoptions); $mform->setDefault('dtpost' . $i, strtotime('+7 days')); $mform->addElement('text', 'maxmarks' . $i, get_string('maxmarks', 'turnitintooltwo')); $mform->setType('maxmarks' . $i, PARAM_INT); $mform->setDefault('maxmarks' . $i, '100'); $mform->addRule('maxmarks' . $i, null, 'numeric', null, 'client'); } $mform->addElement('header', 'advanced', get_string('turnitinoroptions', 'turnitintooltwo')); $mform->addElement('select', 'allowlate', get_string('allowlate', 'turnitintooltwo'), $ynoptions); $mform->setDefault('allowlate', $config->default_allowlate); $genoptions = array(0 => get_string('genimmediately1', 'turnitintooltwo'), 1 => get_string('genimmediately2', 'turnitintooltwo'), 2 => get_string('genduedate', 'turnitintooltwo')); $mform->addElement('select', 'reportgenspeed', get_string('reportgenspeed', 'turnitintooltwo'), $genoptions); $mform->addHelpButton('reportgenspeed', 'reportgenspeed', 'turnitintooltwo'); $mform->setDefault('reportgenspeed', $config->default_reportgenspeed); $mform->addElement('html', html_writer::tag('div', get_string('genspeednote', 'turnitintooltwo'), array('class' => 'tii_genspeednote'))); $suboptions = array(0 => get_string('norepository', 'turnitintooltwo'), 1 => get_string('standardrepository', 'turnitintooltwo')); switch ($config->repositoryoption) { case 0: // Standard options $mform->addElement('select', 'submitpapersto', get_string('submitpapersto', 'turnitintooltwo'), $suboptions); $mform->addHelpButton('submitpapersto', 'submitpapersto', 'turnitintooltwo'); $mform->setDefault('submitpapersto', $config->default_submitpapersto); break; case 1: // Standard options + Allow Instituional Repository $suboptions[2] = get_string('institutionalrepository', 'turnitintooltwo'); $mform->addElement('select', 'submitpapersto', get_string('submitpapersto', 'turnitintooltwo'), $suboptions); $mform->addHelpButton('submitpapersto', 'submitpapersto', 'turnitintooltwo'); $mform->setDefault('submitpapersto', $config->default_submitpapersto); break; case 2: // Force Standard Repository $mform->addElement('hidden', 'submitpapersto', 1); $mform->setType('submitpapersto', PARAM_RAW); break; case 3: // Force No Repository $mform->addElement('hidden', 'submitpapersto', 0); $mform->setType('submitpapersto', PARAM_RAW); break; } $mform->addElement('html', html_writer::tag('div', get_string('checkagainstnote', 'turnitintooltwo'), array('class' => 'tii_checkagainstnote'))); $mform->addElement('select', 'spapercheck', get_string('spapercheck', 'turnitintooltwo'), $ynoptions); $mform->addHelpButton('spapercheck', 'spapercheck', 'turnitintooltwo'); $mform->setDefault('spapercheck', $config->default_spapercheck); $mform->addElement('select', 'internetcheck', get_string('internetcheck', 'turnitintooltwo'), $ynoptions); $mform->addHelpButton('internetcheck', 'internetcheck', 'turnitintooltwo'); $mform->setDefault('internetcheck', $config->default_internetcheck); $mform->addElement('select', 'journalcheck', get_string('journalcheck', 'turnitintooltwo'), $ynoptions); $mform->addHelpButton('journalcheck', 'journalcheck', 'turnitintooltwo'); $mform->setDefault('journalcheck', $config->default_journalcheck); if ($config->repositoryoption == "1") { $mform->addElement('select', 'institution_check', get_string('institutionalcheck', 'turnitintooltwo'), $ynoptions); $mform->setDefault('institution_check', $config->default_institutioncheck); } if ($this->numsubs > 0) { $staticout = (isset($this->turnitintooltwo->excludebiblio) and $this->turnitintooltwo->excludebiblio) ? get_string('yes') : get_string('no'); $mform->addElement('static', 'static', get_string('excludebiblio', 'turnitintooltwo'), $staticout); $mform->addElement('hidden', 'excludebiblio', $this->turnitintooltwo->excludebiblio); $staticout = (isset($this->turnitintooltwo->excludequoted) and $this->turnitintooltwo->excludequoted) ? get_string('yes') : get_string('no'); $mform->addElement('static', 'static', get_string('excludequoted', 'turnitintooltwo'), $staticout); $mform->addElement('hidden', 'excludequoted', $this->turnitintooltwo->excludequoted); $staticout = (isset($this->turnitintooltwo->excludetype) and $this->turnitintooltwo->excludetype == 1) ? get_string('excludewords', 'turnitintooltwo') : get_string('excludepercent', 'turnitintooltwo'); $staticval = (isset($this->turnitintooltwo->excludevalue) and empty($this->turnitintooltwo->excludevalue)) ? get_string('nolimit', 'turnitintooltwo') : $this->turnitintooltwo->excludevalue . ' ' . $staticout; $mform->addElement('static', 'static', get_string('excludevalue', 'turnitintooltwo'), $staticval); $mform->addElement('hidden', 'excludevalue', $this->turnitintooltwo->excludevalue); $mform->addElement('hidden', 'excludetype', $this->turnitintooltwo->excludetype); } else { $mform->addElement('select', 'excludebiblio', get_string('excludebiblio', 'turnitintooltwo'), $ynoptions); $mform->addHelpButton('excludebiblio', 'excludebiblio', 'turnitintooltwo'); $mform->setDefault('excludebiblio', $config->default_excludebiblio); $mform->addElement('select', 'excludequoted', get_string('excludequoted', 'turnitintooltwo'), $ynoptions); $mform->addHelpButton('excludequoted', 'excludequoted', 'turnitintooltwo'); $mform->setDefault('excludequoted', $config->default_excludequoted); $mform->addElement('text', 'excludevalue', get_string('excludevalue', 'turnitintooltwo'), array('size' => '12')); $mform->addHelpButton('excludevalue', 'excludevalue', 'turnitintooltwo'); $input = new stdClass(); $input->length = 9; $input->field = get_string('excludevalue', 'turnitintooltwo'); $mform->addRule('excludevalue', get_string('maxlength', 'turnitintooltwo', $input), 'maxlength', 9, 'client'); $mform->addRule('excludevalue', get_string('maxlength', 'turnitintooltwo', $input), 'maxlength', 9, 'server'); $mform->addRule('excludevalue', null, 'numeric', null, 'client'); $mform->addRule('excludevalue', null, 'numeric', null, 'server'); $typeoptions = array(1 => get_string('excludewords', 'turnitintooltwo'), 2 => get_string('excludepercent', 'turnitintooltwo')); $mform->addElement('select', 'excludetype', '', $typeoptions); $mform->setDefault('excludetype', 1); } $mform->setType('excludebiblio', PARAM_RAW); $mform->setType('excludequoted', PARAM_RAW); $mform->setType('excludevalue', PARAM_RAW); $mform->setType('excludetype', PARAM_RAW); if (isset($config->transmatch) && $config->transmatch == '1') { $mform->addElement('select', 'transmatch', get_string('transmatch', 'turnitintooltwo'), $ynoptions); $mform->setDefault('transmatch', $config->default_transmatch); } // Populate Rubric options. if (!empty($config->usegrademark)) { $mform->addElement('header', 'advanced', get_string('turnitingmoptions', 'turnitintooltwo')); $rubricoptions = array('' => get_string('norubric', 'turnitintooltwo')) + $instructorrubrics; if (!empty($this->turnitintooltwo->rubric)) { $rubricoptions[$this->turnitintooltwo->rubric] = isset($rubricoptions[$this->turnitintooltwo->rubric]) ? $rubricoptions[$this->turnitintooltwo->rubric] : get_string('otherrubric', 'turnitintooltwo'); } $rubricline = array(); $rubricline[] = $mform->createElement('select', 'rubric', '', $rubricoptions); $rubricline[] = $mform->createElement('static', 'rubric_link', '', html_writer::link($CFG->wwwroot . '/mod/turnitintooltwo/extras.php?' . 'cmd=rubricmanager&tiicourseid=' . $tiicourseid . '&view_context=box', html_writer::tag('i', '', array('class' => 'tiiicon icon-rubric icon-lg icon_margin')) . get_string('launchrubricmanager', 'turnitintooltwo'), array('class' => 'rubric_manager_launch', 'title' => get_string('launchrubricmanager', 'turnitintooltwo'))) . html_writer::tag('span', '', array('class' => 'launch_form', 'id' => 'rubric_manager_form'))); $mform->setDefault('rubric', ''); $mform->addGroup($rubricline, 'rubricline', get_string('attachrubric', 'turnitintooltwo'), array(' '), false); $mform->addElement('hidden', 'rubric_warning_seen', ''); $mform->setType('rubric_warning_seen', PARAM_RAW); $mform->addElement('static', 'rubric_note', '', get_string('attachrubricnote', 'turnitintooltwo')); } else { $mform->addElement('hidden', 'rubric', ''); $mform->setType('rubric', PARAM_RAW); } if (!empty($config->usegrademark) && !empty($config->useerater)) { $handbookoptions = array(1 => get_string('erater_handbook_advanced', 'turnitintooltwo'), 2 => get_string('erater_handbook_highschool', 'turnitintooltwo'), 3 => get_string('erater_handbook_middleschool', 'turnitintooltwo'), 4 => get_string('erater_handbook_elementary', 'turnitintooltwo'), 5 => get_string('erater_handbook_learners', 'turnitintooltwo')); $dictionaryoptions = array('en_US' => get_string('erater_dictionary_enus', 'turnitintooltwo'), 'en_GB' => get_string('erater_dictionary_engb', 'turnitintooltwo'), 'en' => get_string('erater_dictionary_en', 'turnitintooltwo')); $mform->addElement('select', 'erater', get_string('erater', 'turnitintooltwo'), $ynoptions); $mform->setDefault('erater', $config->default_erater); $mform->addElement('select', 'erater_handbook', get_string('erater_handbook', 'turnitintooltwo'), $handbookoptions); $mform->setDefault('erater_handbook', $config->default_erater_handbook); $mform->disabledIf('erater_handbook', 'erater', 'eq', 0); $mform->addElement('select', 'erater_dictionary', get_string('erater_dictionary', 'turnitintooltwo'), $dictionaryoptions); $mform->setDefault('erater_dictionary', $config->default_erater_dictionary); $mform->disabledIf('erater_dictionary', 'erater', 'eq', 0); $mform->addElement('checkbox', 'erater_spelling', get_string('erater_categories', 'turnitintooltwo'), " " . get_string('erater_spelling', 'turnitintooltwo')); $mform->setDefault('erater_spelling', $config->default_erater_spelling); $mform->disabledIf('erater_spelling', 'erater', 'eq', 0); $mform->addElement('checkbox', 'erater_grammar', '', " " . get_string('erater_grammar', 'turnitintooltwo')); $mform->setDefault('erater_grammar', $config->default_erater_grammar); $mform->disabledIf('erater_grammar', 'erater', 'eq', 0); $mform->addElement('checkbox', 'erater_usage', '', " " . get_string('erater_usage', 'turnitintooltwo')); $mform->setDefault('erater_usage', $config->default_erater_usage); $mform->disabledIf('erater_usage', 'erater', 'eq', 0); $mform->addElement('checkbox', 'erater_mechanics', '', " " . get_string('erater_mechanics', 'turnitintooltwo')); $mform->setDefault('erater_mechanics', $config->default_erater_mechanics); $mform->disabledIf('erater_mechanics', 'erater', 'eq', 0); $mform->addElement('checkbox', 'erater_style', '', " " . get_string('erater_style', 'turnitintooltwo')); $mform->setDefault('erater_style', $config->default_erater_style); $mform->disabledIf('erater_style', 'erater', 'eq', 0); } $mform->addElement('hidden', 'ownerid', null); $mform->setType('ownerid', PARAM_RAW); $mform->addElement('html', $modulestring); $features = new stdClass(); $features->groups = true; $features->groupings = true; $features->groupmembersonly = true; $this->standard_coursemodule_elements($features); $this->add_action_buttons(); }