require_once(dirname(__FILE__).'/locallib.php');
require_once(dirname(__FILE__).'/allocation/lib.php');
-$cmid = required_param('cmid', PARAM_INT); // course module
-$method = optional_param('method', 'manual', PARAM_ALPHA); // method to use
-
-$PAGE->set_url('mod/workshop/allocation.php', array('cmid' => $cmid, 'method' => $method));
+$cmid = required_param('cmid', PARAM_INT); // course module
+$method = optional_param('method', 'manual', PARAM_ALPHA); // method to use
$cm = get_coursemodule_from_id('workshop', $cmid, 0, false, MUST_EXIST);
$course = $DB->get_record('course', array('id' => $cm->course), '*', MUST_EXIST);
$workshop = $DB->get_record('workshop', array('id' => $cm->instance), '*', MUST_EXIST);
$workshop = new workshop($workshop, $cm, $course);
+$PAGE->set_url(new moodle_url($workshop->allocation_url(), array('cmid' => $cmid, 'method' => $method)));
+
require_login($course, false, $cm);
$context = $PAGE->context;
require_capability('mod/workshop:allocate', $context);
foreach ($peers as $user) {
$row = array();
$row[] = $this->reviewers_of_participant($user, $workshop, $peers);
- $row[] = $this->participant($user);
+ $row[] = $this->participant($user, $workshop);
$row[] = $this->reviewees_of_participant($user, $workshop, $peers);
$thisrowclasses = array();
if ($user->id == $hlauthorid) {
* Returns information about the workshop participant
*
* @param stdClass $user participant data
+ * @param workshop API
* @return string HTML code
*/
- protected function participant(stdClass $user) {
+ protected function participant(stdClass $user, workshop $workshop) {
$o = $this->output->user_picture($user, $this->page->course->id);
$o .= fullname($user);
$o .= $this->output->container_start(array('submission'));
if (is_null($user->submissionid)) {
$o .= $this->output->output_tag('span', array('class' => 'info'), get_string('nosubmissionfound', 'workshop'));
} else {
- $submlink = $this->output->output_tag('a', array('href' => '#'), s($user->submissiontitle)); // todo link
- $o .= $this->output->container($submlink, array('title'));
+ $submlink = new html_link();
+ $submlink->url = new moodle_url($workshop->submission_url(), array('id' => $user->submissionid));
+ $submlink->text = format_string($user->submissiontitle);
+ $submlink->set_classes('title');
+ $o .= $this->output->link($submlink);
if (is_null($user->submissiongrade)) {
$o .= $this->output->container(get_string('nogradeyet', 'workshop'), array('grade', 'missing'));
} else {
$string['messageclose'] = '(hide)';
$string['modulenameplural'] = 'Workshops';
$string['modulename'] = 'Workshop';
-$string['mysubmission'] = 'My submission';
$string['nattachments'] = 'Maximum number of submission attachments';
$string['nexassessments'] = 'Number of required assessments of examples';
$string['nogradeyet'] = 'No grade yet';
return $DB->get_recordset_sql($sql, $params);
}
+ /**
+ * Returns a submission record with the author's data
+ *
+ * @param int $id submission id
+ * @return stdClass
+ */
+ public function get_submission_by_id($id) {
+ global $DB;
+
+ $sql = 'SELECT s.*,
+ u.lastname AS authorlastname, u.firstname AS authorfirstname, u.id AS authorid,
+ u.picture AS authorpicture, u.imagealt AS authorimagealt
+ FROM {workshop_submissions} s
+ INNER JOIN {user} u ON (s.userid = u.id)
+ WHERE s.workshopid = :workshopid AND s.id = :id';
+ $params = array('workshopid' => $this->id, 'id' => $id);
+ return $DB->get_record_sql($sql, $params, MUST_EXIST);
+ }
+
/**
* Returns a submission submitted by the given author or authors.
*
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/**
- * Submit own assignment or edit the already submitted own work
+ * View a single (usually the own) submission, submit own work.
*
* @package mod-workshop
* @copyright 2009 David Mudrak <david.mudrak@gmail.com>
$course = $DB->get_record('course', array('id' => $cm->course), '*', MUST_EXIST);
require_login($course, false, $cm);
-require_capability('mod/workshop:submit', $PAGE->context);
if (isguestuser()) {
print_error('guestsarenotallowed');
}
-$workshop = $DB->get_record('workshop', array('id' => $cm->instance), '*', MUST_EXIST);
-$workshop = new workshop($workshop, $cm, $course);
+$workshop = $DB->get_record('workshop', array('id' => $cm->instance), '*', MUST_EXIST);
+$workshop = new workshop($workshop, $cm, $course);
+
+$PAGE->set_url(new moodle_url($workshop->submission_url(), array('cmid' => $cmid, 'id' => $id, 'edit' => $edit)));
if ($id) { // submission is specified
- $submission = $DB->get_record('workshop_submissions', array('id' => $id, 'workshopid' => $workshop->id), '*', MUST_EXIST);
+ $submission = $workshop->get_submission_by_id($id);
} else { // no submission specified
if (!$submission = $workshop->get_submission_by_author($USER->id)) {
$submission = new stdClass();
}
}
-if ($submission->userid !== $USER->id) {
- print_error('nopermissiontoviewpage', 'error', $workshop->view_url());
+$ownsubmission = $submission->userid == $USER->id;
+$canviewall = has_capability('mod/workshop:viewallsubmissions', $PAGE->context);
+$cansubmit = has_capability('mod/workshop:submit', $PAGE->context);
+
+if (!$ownsubmission and !$canviewall) {
+ print_error('nopermissions');
+}
+if ($ownsubmission and !$cansubmit) {
+ print_error('nopermissions');
}
$maxfiles = $workshop->nattachments;
if ($mform->is_cancelled()) {
redirect($workshop->view_url());
-} elseif ($formdata = $mform->get_data()) {
+} elseif ($cansubmit and $formdata = $mform->get_data()) {
$timenow = time();
if (empty($formdata->id)) {
$formdata->workshopid = $workshop->id;
redirect($workshop->view_url());
}
-$PAGE->set_url('mod/workshop/submission.php', array('cmid' => $cm->id));
$PAGE->set_title($workshop->name);
$PAGE->set_heading($course->fullname);
if ($edit) {
$PAGE->navbar->add(get_string('mysubmission', 'workshop'), $workshop->submission_url(), navigation_node::TYPE_CUSTOM);
$PAGE->navbar->add(get_string('editingsubmission', 'workshop'));
-} else {
+} elseif ($ownsubmission) {
$PAGE->navbar->add(get_string('mysubmission', 'workshop'));
+} else {
+ $PAGE->navbar->add(get_string('submission', 'workshop'));
}
// Output starts here
echo $OUTPUT->header();
+$currenttab = 'submission';
+include(dirname(__FILE__) . '/tabs.php');
echo $OUTPUT->heading(format_string($workshop->name), 2);
-if ($edit) {
+if ($edit and $ownsubmission) {
$mform->display();
echo $OUTPUT->footer();
die();
echo $wsoutput->submission_full($submission, true);
}
-if ($workshop->submitting_allowed()) {
+if ($ownsubmission and $workshop->submitting_allowed()) {
$editbutton = new html_form();
$editbutton->method = 'get';
$editbutton->button->text = get_string('editsubmission', 'workshop');
$phase = required_param('phase', PARAM_INT); // the code of the new page
$confirm = optional_param('confirm', false, PARAM_BOOL); // confirmation
-$PAGE->set_url('mod/workshop/switchphase.php', array('cmid' => $cmid, 'phase' => $phase));
-
$cm = get_coursemodule_from_id('workshop', $cmid, 0, false, MUST_EXIST);
$course = $DB->get_record('course', array('id' => $cm->course), '*', MUST_EXIST);
$workshop = $DB->get_record('workshop', array('id' => $cm->instance), '*', MUST_EXIST);
$workshop = new workshop($workshop, $cm, $course);
+$PAGE->set_url(new moodle_url($workshop->switchphase_user(), array('cmid' => $cmid, 'phase' => $phase));
+
require_login($course, false, $cm);
require_capability('mod/workshop:switchphase', $PAGE->context);
$row[] = new tabobject('editform', $workshop->editform_url()->out(), get_string('editassessmentform', 'workshop'));
}
if (has_capability('mod/workshop:submit', $workshop->context)) {
- $row[] = new tabobject('submission', $workshop->submission_url()->out(), get_string('mysubmission', 'workshop'));
+ $row[] = new tabobject('submission', $workshop->submission_url()->out(), get_string('submission', 'workshop'));
}
if (has_capability('mod/workshop:allocate', $workshop->context)) {
$row[] = new tabobject('allocation', $workshop->allocation_url()->out(), get_string('allocate', 'workshop'));
if ($submission = $workshop->get_submission_by_author($USER->id)) {
echo $OUTPUT->box_start('generalbox mysubmission');
echo $wsoutput->submission_summary($submission, true);
+ if ($workshop->submitting_allowed()) {
+ $editbutton = new html_form();
+ $editbutton->method = 'get';
+ $editbutton->button->text = get_string('editsubmission', 'workshop');
+ $editbutton->url = new moodle_url($PAGE->url, array('edit' => 'on', 'id' => $submission->id));
+ echo $OUTPUT->button($editbutton);
+ }
echo $OUTPUT->box_end();
}
}