/** * Given an object containing all the necessary data, * (defined by the form in mod_form.php) this function * will update an existing instance with new data. * * @param stdClass $workshopplus An object from the form in mod_form.php * @return bool success */ function workshopplus_update_instance(stdclass $workshopplus) { global $CFG, $DB; require_once dirname(__FILE__) . '/locallib.php'; $workshopplus->timemodified = time(); $workshopplus->id = $workshopplus->instance; $workshopplus->useexamples = (int) (!empty($workshopplus->useexamples)); $workshopplus->usepeerassessment = 1; $workshopplus->useselfassessment = (int) (!empty($workshopplus->useselfassessment)); $workshopplus->latesubmissions = (int) (!empty($workshopplus->latesubmissions)); $workshopplus->phaseswitchassessment = (int) (!empty($workshopplus->phaseswitchassessment)); // todo - if the grading strategy is being changed, we may want to replace all aggregated peer grades with nulls $DB->update_record('workshopplus', $workshopplus); $context = context_module::instance($workshopplus->coursemodule); // process the custom wysiwyg editors if ($draftitemid = $workshopplus->instructauthorseditor['itemid']) { $workshopplus->instructauthors = file_save_draft_area_files($draftitemid, $context->id, 'mod_workshopplus', 'instructauthors', 0, workshopplus::instruction_editors_options($context), $workshopplus->instructauthorseditor['text']); $workshopplus->instructauthorsformat = $workshopplus->instructauthorseditor['format']; } if ($draftitemid = $workshopplus->instructreviewerseditor['itemid']) { $workshopplus->instructreviewers = file_save_draft_area_files($draftitemid, $context->id, 'mod_workshopplus', 'instructreviewers', 0, workshopplus::instruction_editors_options($context), $workshopplus->instructreviewerseditor['text']); $workshopplus->instructreviewersformat = $workshopplus->instructreviewerseditor['format']; } if ($draftitemid = $workshopplus->conclusioneditor['itemid']) { $workshopplus->conclusion = file_save_draft_area_files($draftitemid, $context->id, 'mod_workshopplus', 'conclusion', 0, workshopplus::instruction_editors_options($context), $workshopplus->conclusioneditor['text']); $workshopplus->conclusionformat = $workshopplus->conclusioneditor['format']; } // re-save the record with the replaced URLs in editor fields $DB->update_record('workshopplus', $workshopplus); // update gradebook items workshopplus_grade_item_update($workshopplus); workshopplus_grade_item_category_update($workshopplus); // update calendar events workshopplus_calendar_update($workshopplus, $workshopplus->coursemodule); return true; }
/** * Prepares the form before data are set * * Additional wysiwyg editor are prepared here, the introeditor is prepared automatically by core. * Grade items are set here because the core modedit supports single grade item only. * * @param array $data to be set * @return void */ public function data_preprocessing(&$data) { if ($this->current->instance) { // editing an existing workshopplus - let us prepare the added editor elements (intro done automatically) $draftitemid = file_get_submitted_draft_itemid('instructauthors'); $data['instructauthorseditor']['text'] = file_prepare_draft_area($draftitemid, $this->context->id, 'mod_workshopplus', 'instructauthors', 0, workshopplus::instruction_editors_options($this->context), $data['instructauthors']); $data['instructauthorseditor']['format'] = $data['instructauthorsformat']; $data['instructauthorseditor']['itemid'] = $draftitemid; $draftitemid = file_get_submitted_draft_itemid('instructreviewers'); $data['instructreviewerseditor']['text'] = file_prepare_draft_area($draftitemid, $this->context->id, 'mod_workshopplus', 'instructreviewers', 0, workshopplus::instruction_editors_options($this->context), $data['instructreviewers']); $data['instructreviewerseditor']['format'] = $data['instructreviewersformat']; $data['instructreviewerseditor']['itemid'] = $draftitemid; $draftitemid = file_get_submitted_draft_itemid('conclusion'); $data['conclusioneditor']['text'] = file_prepare_draft_area($draftitemid, $this->context->id, 'mod_workshopplus', 'conclusion', 0, workshopplus::instruction_editors_options($this->context), $data['conclusion']); $data['conclusioneditor']['format'] = $data['conclusionformat']; $data['conclusioneditor']['itemid'] = $draftitemid; } else { // adding a new workshopplus instance $draftitemid = file_get_submitted_draft_itemid('instructauthors'); file_prepare_draft_area($draftitemid, null, 'mod_workshopplus', 'instructauthors', 0); // no context yet, itemid not used $data['instructauthorseditor'] = array('text' => '', 'format' => editors_get_preferred_format(), 'itemid' => $draftitemid); $draftitemid = file_get_submitted_draft_itemid('instructreviewers'); file_prepare_draft_area($draftitemid, null, 'mod_workshopplus', 'instructreviewers', 0); // no context yet, itemid not used $data['instructreviewerseditor'] = array('text' => '', 'format' => editors_get_preferred_format(), 'itemid' => $draftitemid); $draftitemid = file_get_submitted_draft_itemid('conclusion'); file_prepare_draft_area($draftitemid, null, 'mod_workshopplus', 'conclusion', 0); // no context yet, itemid not used $data['conclusioneditor'] = array('text' => '', 'format' => editors_get_preferred_format(), 'itemid' => $draftitemid); } }
if ($edit) { $PAGE->navbar->add(get_string('mysubmission', 'workshopplus'), $workshopplus->submission_url(), navigation_node::TYPE_CUSTOM); $PAGE->navbar->add(get_string('editingsubmission', 'workshopplus')); } elseif ($ownsubmission) { $PAGE->navbar->add(get_string('mysubmission', 'workshopplus')); } else { $PAGE->navbar->add(get_string('submission', 'workshopplus')); } // Output starts here $output = $PAGE->get_renderer('mod_workshopplus'); echo $output->header(); echo $output->heading(format_string($workshopplus->name), 2); // show instructions for submitting as thay may contain some list of questions and we need to know them // while reading the submitted answer if (trim($workshopplus->instructauthors)) { $instructions = file_rewrite_pluginfile_urls($workshopplus->instructauthors, 'pluginfile.php', $PAGE->context->id, 'mod_workshopplus', 'instructauthors', 0, workshopplus::instruction_editors_options($PAGE->context)); print_collapsible_region_start('', 'workshopplus-viewlet-instructauthors', get_string('instructauthors', 'workshopplus')); echo $output->box(format_text($instructions, $workshopplus->instructauthorsformat, array('overflowdiv' => true)), array('generalbox', 'instructions')); print_collapsible_region_end(); } // if in edit mode, display the form to edit the submission if ($edit) { if (!empty($CFG->enableplagiarism)) { require_once $CFG->libdir . '/plagiarismlib.php'; echo plagiarism_print_disclosure($cm->id); } $mform->display(); echo $output->footer(); die; } // else display the submission
$buttontext = get_string('assess', 'workshopplus'); } else { $class = ' graded'; $submission->status = 'graded'; $buttontext = get_string('reassess', 'workshopplus'); } echo $output->box_start('generalbox assessment-summary' . $class); echo $output->render($workshopplus->prepare_submission_summary($submission, $shownames)); echo $output->box_end(); } print_collapsible_region_end(); } break; case workshopplus::PHASE_CLOSED: if (trim($workshopplus->conclusion)) { $conclusion = file_rewrite_pluginfile_urls($workshopplus->conclusion, 'pluginfile.php', $workshopplus->context->id, 'mod_workshopplus', 'conclusion', 0, workshopplus::instruction_editors_options($workshopplus->context)); print_collapsible_region_start('', 'workshopplus-viewlet-conclusion', get_string('conclusion', 'workshopplus')); echo $output->box(format_text($conclusion, $workshopplus->conclusionformat, array('overflowdiv' => true)), array('generalbox', 'conclusion')); print_collapsible_region_end(); } $finalgrades = $workshopplus->get_gradebook_grades($USER->id); if (!empty($finalgrades)) { print_collapsible_region_start('', 'workshopplus-viewlet-yourgrades', get_string('yourgrades', 'workshopplus')); echo $output->box_start('generalbox grades-yourgrades'); echo $output->render($finalgrades); echo $output->box_end(); print_collapsible_region_end(); } if (has_capability('mod/workshopplus:viewallassessments', $PAGE->context)) { $perpage = get_user_preferences('workshopplus_perpage', 10); $groupid = groups_get_activity_group($workshopplus->cm, true);