// cancel: return to question editing without saving
if ($cmid) {
    list($module, $cm) = get_module_from_cmid($cmid);
    require_login($cm->course, false, $cm);
    if (!$returnurl) {
        $returnurl = "{$CFG->wwwroot}/question/edit.php?cmid={$cm->id}";
    }
} elseif ($courseid) {
    require_login($courseid, false);
    if (!$returnurl) {
        $returnurl = "{$CFG->wwwroot}/question/edit.php?courseid={$COURSE->id}";
    }
    $cm = null;
} else {
    print_error('needcmidorcourseid', 'qtype_dragdrop');
}
// Validate the question id
if (!($question = get_record('question', 'id', $id))) {
    print_error('questiondoesnotexist', 'question', $returnurl);
}
get_question_options($question);
if (!question_has_capability_on($question, 'edit')) {
    print_error('noeditingright', 'qtype_dragdrop');
}
$dd = new dragdrop($CFG, $id, $courseid, $cmid, $returnurl);
if ($process) {
    $dd->process($process);
} else {
    $dd->edit_positions();
}
echo '</body></html>';