$strategy = $workshopplus->grading_strategy_instance();
if (is_null($assessment->grade) and !$assessmenteditable) {
    $mform = null;
} else {
    // Are there any other pending assessments to do but this one?
    if ($assessmenteditable) {
        $pending = $workshopplus->get_pending_assessments_by_reviewer($assessment->reviewerid, $assessment->id);
    } else {
        $pending = array();
    }
    // load the assessment form and process the submitted data eventually
    $mform = $strategy->get_assessment_form($PAGE->url, 'assessment', $assessment, $assessmenteditable, array('editableweight' => $cansetassessmentweight, 'pending' => !empty($pending)));
    // Set data managed by the workshopplus core, subplugins set their own data themselves.
    $currentdata = (object) array('feedbackauthor' => $assessment->feedbackauthor, 'feedbackauthorformat' => $assessment->feedbackauthorformat);
    if ($assessmenteditable and $workshopplus->overallfeedbackmode) {
        $currentdata = file_prepare_standard_editor($currentdata, 'feedbackauthor', $workshopplus->overall_feedback_content_options(), $workshopplus->context, 'mod_workshopplus', 'overallfeedback_content', $assessment->id);
        if ($workshopplus->overallfeedbackfiles) {
            $currentdata = file_prepare_standard_filemanager($currentdata, 'feedbackauthorattachment', $workshopplus->overall_feedback_attachment_options(), $workshopplus->context, 'mod_workshopplus', 'overallfeedback_attachment', $assessment->id);
        }
    }
    $mform->set_data($currentdata);
    if ($mform->is_cancelled()) {
        redirect($workshopplus->view_url());
    } elseif ($assessmenteditable and $data = $mform->get_data()) {
        if (is_null($assessment->grade)) {
            $workshopplus->log('add assessment', $workshopplus->assess_url($assessment->id), $assessment->submissionid);
        } else {
            $workshopplus->log('update assessment', $workshopplus->assess_url($assessment->id), $assessment->submissionid);
        }
        // Let the grading strategy subplugin save its data.
        $rawgrade = $strategy->save_assessment($assessment, $data);