]> git.mjollnir.org Git - moodle.git/commitdiff
Go workshop, go!
authorDavid Mudrak <david.mudrak@gmail.com>
Mon, 4 Jan 2010 18:01:50 +0000 (18:01 +0000)
committerDavid Mudrak <david.mudrak@gmail.com>
Mon, 4 Jan 2010 18:01:50 +0000 (18:01 +0000)
mod/workshop/allocation.php
mod/workshop/allocation/manual/renderer.php
mod/workshop/lang/en_utf8/workshop.php
mod/workshop/locallib.php
mod/workshop/submission.php
mod/workshop/switchphase.php
mod/workshop/tabs.php
mod/workshop/view.php

index e476637705d471e0e91f598b472b5a49b231eb9c..6fcfb748f2962f63696dcab6e0a838b729d948d3 100644 (file)
@@ -30,16 +30,16 @@ require_once(dirname(dirname(dirname(__FILE__))).'/config.php');
 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);
index a7b2ec6d7e721e6cab11045d764e13789cd3eddb..645f53dae61f32caab4132dad52eb76433c56194 100644 (file)
@@ -76,7 +76,7 @@ class moodle_workshopallocation_manual_renderer extends moodle_renderer_base  {
         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) {
@@ -96,17 +96,21 @@ class moodle_workshopallocation_manual_renderer extends moodle_renderer_base  {
      * 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 {
index 2e41d8259dea025022652b12ff5793b4b8245115..2cfd32964b5f9a603de0606877da83d90264ad42 100644 (file)
@@ -94,7 +94,6 @@ $string['maxbytes'] = 'Maximum file size';
 $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';
index a2ba6f583ae33012d38cbdb598600edcd6966fb3..eaae461537e130c632835dbdfe8a6281d10d7443 100644 (file)
@@ -261,6 +261,25 @@ class workshop {
         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.
      *
index 76cf537b5110f4b2b4806fd4fb17c73f06c491f9..29515e1b7d5a234e437a408090ca87caacb5e4e0 100644 (file)
@@ -16,7 +16,7 @@
 // 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>
@@ -36,16 +36,17 @@ $cm     = get_coursemodule_from_id('workshop', $cmid, 0, false, MUST_EXIST);
 $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();
@@ -54,8 +55,15 @@ if ($id) { // submission is specified
     }
 }
 
-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;
@@ -72,7 +80,7 @@ $mform          = new workshop_submission_form(null, array('current' => $submiss
 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;
@@ -99,21 +107,24 @@ if ($mform->is_cancelled()) {
     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();
@@ -124,7 +135,7 @@ if (!empty($submission->id)) {
     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');
index 199b05545ff2297b694fa1dc96622adfbeb747e4..4c4147ff6897d09b654cbd2fe9e43af25e9d96bb 100644 (file)
@@ -30,13 +30,13 @@ $cmid       = required_param('cmid', PARAM_INT);            // course module
 $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);
 
index b423adae4d38e4cf8e7a1c016a256aaedd9b691b..22b6268ccb8faea30f41b05afdeaa4f5363c5b4a 100644 (file)
@@ -47,7 +47,7 @@ if (has_capability('mod/workshop:editdimensions', $workshop->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'));
index 97666c047a6c2dd103ce314d63c12d8559bf4f13..b145632deb3b6f1a38cf8d6bfc503b5ed39f9b54 100644 (file)
@@ -89,6 +89,13 @@ case workshop::PHASE_SUBMISSION:
         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();
         }
     }