$action = required_param('action', PARAM_ALPHANUMEXT); $userid = optional_param('userid', FALSE, PARAM_INT); $vpl = new mod_vpl($id); //TODO use or not sesskey //require_sesskey(); require_login($vpl->get_course(), false); $PAGE->set_url(new moodle_url('/mod/vpl/forms/editor.json.php', array('id' => $id, 'action' => $action))); echo $OUTPUT->header(); // Send headers. $raw_data = file_get_contents("php://input"); $raw_data_size = strlen($raw_data); if ($_SERVER['CONTENT_LENGTH'] != $raw_data_size) { throw new Exception("Ajax POST error: CONTENT_LENGTH expected " . $_SERVER['CONTENT_LENGTH'] . " found {$raw_data_size})"); } $data = json_decode($raw_data); if (!$vpl->is_submit_able()) { throw new Exception(get_string('notavailable')); } if (!$userid || $userid == $USER->id) { // Make own submission $userid = $USER->id; $vpl->require_capability(VPL_SUBMIT_CAPABILITY); if (!$vpl->pass_network_check()) { throw new Exception(get_string('opnotallowfromclient', VPL) . ' ' . getremoteaddr()); } if (!$vpl->pass_password_check()) { throw new Exception(get_string('requiredpassword', VPL)); } } else { // Make other user submission $vpl->require_capability(VPL_MANAGE_CAPABILITY);
function vpl_extend_navigation(navigation_node $vplnode, $course, $module, $cm) { global $CFG, $USER, $DB; //FIXME //Student //Descripción //Entrega //Edición //Ver entrega //En grupos visibles lista de entregas //Profesor //Descripción //Lista de entregas //Similaridad //Si se esta accediendo a la información de un alumno //Entrega //Editar //Ver entrega //Calificar //Lista de entregas previas $vpl = new mod_vpl($cm->id); $viewer = $vpl->has_capability(VPL_VIEW_CAPABILITY); $submiter = $vpl->has_capability(VPL_SUBMIT_CAPABILITY); $similarity = $vpl->has_capability(VPL_SIMILARITY_CAPABILITY); $grader = $vpl->has_capability(VPL_GRADE_CAPABILITY); $manager = $vpl->has_capability(VPL_MANAGE_CAPABILITY); $userid = optional_param('userid', false, PARAM_INT); if (!$userid && $USER->id != $userid) { $parm = array('id' => $cm->id, 'userid' => $userid); } else { $userid = $USER->id; $parm = array('id' => $cm->id); } $strdescription = get_string('description', VPL); $strsubmission = get_string('submission', VPL); $stredit = get_string('edit', VPL); $strsubmissionview = get_string('submissionview', VPL); $urlforms = '/mod/' . VPL . '/forms/'; $urlviews = '/mod/' . VPL . '/views/'; if ($viewer) { $vplnode->add($strdescription, new moodle_url('/mod/vpl/view.php', $parm), navigation_node::TYPE_SETTING); } $example = $vpl->get_instance()->example; $submit_able = $manager || $grader && $USER->id != $userid || !$grader && $submiter && $vpl->is_submit_able(); if ($submit_able && !$example && !$vpl->get_instance()->restrictededitor) { $vplnode->add($strsubmission, new moodle_url('/mod/vpl/forms/submission.php', $parm), navigation_node::TYPE_SETTING); } if ($submit_able) { $vplnode->add($stredit, new moodle_url('/mod/vpl/forms/edit.php', $parm), navigation_node::TYPE_SETTING); } if (!$example) { if ($grader && $USER->id != $userid) { $text = get_string('grade'); $vplnode->add($text, new moodle_url('/mod/vpl/forms/gradesubmission.php', $parm), navigation_node::TYPE_SETTING); } $vplnode->add($strsubmissionview, new moodle_url('/mod/vpl/forms/submissionview.php', $parm), navigation_node::TYPE_SETTING); if ($grader || $similarity) { $strlistprevoiussubmissions = get_string('previoussubmissionslist', VPL); $vplnode->add($strlistprevoiussubmissions, new moodle_url('/mod/vpl/views/previoussubmissionslist.php', $parm), navigation_node::TYPE_SETTING); } if ($grader || $manager) { $strsubmissionslist = get_string('submissionslist', VPL); $vplnode->add($strsubmissionslist, new moodle_url('/mod/vpl/views/submissionslist.php', $parm), navigation_node::TYPE_SETTING); } if ($similarity) { $strssimilarity = get_string('similarity', VPL); $vplnode->add($strssimilarity, new moodle_url('/mod/vpl/similarity/similarity_form.php', $parm), navigation_node::TYPE_SETTING); } } }