[ Index ]

PHP Cross Reference of Unnamed Project

title

Body

[close]

/mod/workshop/ -> view.php (source)

   1  <?php
   2  
   3  // This file is part of Moodle - http://moodle.org/
   4  //
   5  // Moodle is free software: you can redistribute it and/or modify
   6  // it under the terms of the GNU General Public License as published by
   7  // the Free Software Foundation, either version 3 of the License, or
   8  // (at your option) any later version.
   9  //
  10  // Moodle is distributed in the hope that it will be useful,
  11  // but WITHOUT ANY WARRANTY; without even the implied warranty of
  12  // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  13  // GNU General Public License for more details.
  14  //
  15  // You should have received a copy of the GNU General Public License
  16  // along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
  17  
  18  /**
  19   * Prints a particular instance of workshop
  20   *
  21   * You can have a rather longer description of the file as well,
  22   * if you like, and it can span multiple lines.
  23   *
  24   * @package    mod_workshop
  25   * @copyright  2009 David Mudrak <david.mudrak@gmail.com>
  26   * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  27   */
  28  
  29  require(__DIR__.'/../../config.php');
  30  require_once (__DIR__.'/locallib.php');
  31  require_once($CFG->libdir.'/completionlib.php');
  32  
  33  $id         = optional_param('id', 0, PARAM_INT); // course_module ID, or
  34  $w          = optional_param('w', 0, PARAM_INT);  // workshop instance ID
  35  $editmode   = optional_param('editmode', null, PARAM_BOOL);
  36  $page       = optional_param('page', 0, PARAM_INT);
  37  $perpage    = optional_param('perpage', null, PARAM_INT);
  38  $sortby     = optional_param('sortby', 'lastname', PARAM_ALPHA);
  39  $sorthow    = optional_param('sorthow', 'ASC', PARAM_ALPHA);
  40  $eval       = optional_param('eval', null, PARAM_PLUGIN);
  41  
  42  if ($id) {
  43      $cm             = get_coursemodule_from_id('workshop', $id, 0, false, MUST_EXIST);
  44      $course         = $DB->get_record('course', array('id' => $cm->course), '*', MUST_EXIST);
  45      $workshoprecord = $DB->get_record('workshop', array('id' => $cm->instance), '*', MUST_EXIST);
  46  } else {
  47      $workshoprecord = $DB->get_record('workshop', array('id' => $w), '*', MUST_EXIST);
  48      $course         = $DB->get_record('course', array('id' => $workshoprecord->course), '*', MUST_EXIST);
  49      $cm             = get_coursemodule_from_instance('workshop', $workshoprecord->id, $course->id, false, MUST_EXIST);
  50  }
  51  
  52  require_login($course, true, $cm);
  53  require_capability('mod/workshop:view', $PAGE->context);
  54  
  55  $workshop = new workshop($workshoprecord, $cm, $course);
  56  
  57  // Mark viewed
  58  $completion = new completion_info($course);
  59  $completion->set_module_viewed($cm);
  60  
  61  $eventdata = array();
  62  $eventdata['objectid']         = $workshop->id;
  63  $eventdata['context']          = $workshop->context;
  64  
  65  $PAGE->set_url($workshop->view_url());
  66  $event = \mod_workshop\event\course_module_viewed::create($eventdata);
  67  $event->add_record_snapshot('course', $course);
  68  $event->add_record_snapshot('workshop', $workshoprecord);
  69  $event->add_record_snapshot('course_modules', $cm);
  70  $event->trigger();
  71  
  72  // If the phase is to be switched, do it asap. This just has to happen after triggering
  73  // the event so that the scheduled allocator had a chance to allocate submissions.
  74  if ($workshop->phase == workshop::PHASE_SUBMISSION and $workshop->phaseswitchassessment
  75          and $workshop->submissionend > 0 and $workshop->submissionend < time()) {
  76      $workshop->switch_phase(workshop::PHASE_ASSESSMENT);
  77      // Disable the automatic switching now so that it is not executed again by accident
  78      // if the teacher changes the phase back to the submission one.
  79      $DB->set_field('workshop', 'phaseswitchassessment', 0, array('id' => $workshop->id));
  80      $workshop->phaseswitchassessment = 0;
  81  }
  82  
  83  if (!is_null($editmode) && $PAGE->user_allowed_editing()) {
  84      $USER->editing = $editmode;
  85  }
  86  
  87  $userplan = new workshop_user_plan($workshop, $USER->id);
  88  
  89  foreach ($userplan->phases as $phase) {
  90      if ($phase->active) {
  91          $currentphasetitle = $phase->title;
  92      }
  93  }
  94  
  95  $PAGE->set_title($workshop->name . " (" . $currentphasetitle . ")");
  96  $PAGE->set_heading($course->fullname);
  97  
  98  if ($perpage and $perpage > 0 and $perpage <= 1000) {
  99      require_sesskey();
 100      set_user_preference('workshop_perpage', $perpage);
 101      redirect($PAGE->url);
 102  }
 103  
 104  if ($eval) {
 105      require_sesskey();
 106      require_capability('mod/workshop:overridegrades', $workshop->context);
 107      $workshop->set_grading_evaluation_method($eval);
 108      redirect($PAGE->url);
 109  }
 110  
 111  $output = $PAGE->get_renderer('mod_workshop');
 112  
 113  /// Output starts here
 114  
 115  echo $output->header();
 116  echo $output->heading_with_help(format_string($workshop->name), 'userplan', 'workshop');
 117  echo $output->heading(format_string($currentphasetitle), 3);
 118  echo $output->render($userplan);
 119  
 120  switch ($workshop->phase) {
 121  case workshop::PHASE_SETUP:
 122      if (trim($workshop->intro)) {
 123          print_collapsible_region_start('', 'workshop-viewlet-intro', get_string('introduction', 'workshop'));
 124          echo $output->box(format_module_intro('workshop', $workshop, $workshop->cm->id), 'generalbox');
 125          print_collapsible_region_end();
 126      }
 127      if ($workshop->useexamples and has_capability('mod/workshop:manageexamples', $PAGE->context)) {
 128          print_collapsible_region_start('', 'workshop-viewlet-allexamples', get_string('examplesubmissions', 'workshop'));
 129          echo $output->box_start('generalbox examples');
 130          if ($workshop->grading_strategy_instance()->form_ready()) {
 131              if (! $examples = $workshop->get_examples_for_manager()) {
 132                  echo $output->container(get_string('noexamples', 'workshop'), 'noexamples');
 133              }
 134              foreach ($examples as $example) {
 135                  $summary = $workshop->prepare_example_summary($example);
 136                  $summary->editable = true;
 137                  echo $output->render($summary);
 138              }
 139              $aurl = new moodle_url($workshop->exsubmission_url(0), array('edit' => 'on'));
 140              echo $output->single_button($aurl, get_string('exampleadd', 'workshop'), 'get');
 141          } else {
 142              echo $output->container(get_string('noexamplesformready', 'workshop'));
 143          }
 144          echo $output->box_end();
 145          print_collapsible_region_end();
 146      }
 147      break;
 148  case workshop::PHASE_SUBMISSION:
 149      if (trim($workshop->instructauthors)) {
 150          $instructions = file_rewrite_pluginfile_urls($workshop->instructauthors, 'pluginfile.php', $PAGE->context->id,
 151              'mod_workshop', 'instructauthors', 0, workshop::instruction_editors_options($PAGE->context));
 152          print_collapsible_region_start('', 'workshop-viewlet-instructauthors', get_string('instructauthors', 'workshop'));
 153          echo $output->box(format_text($instructions, $workshop->instructauthorsformat, array('overflowdiv'=>true)), array('generalbox', 'instructions'));
 154          print_collapsible_region_end();
 155      }
 156  
 157      // does the user have to assess examples before submitting their own work?
 158      $examplesmust = ($workshop->useexamples and $workshop->examplesmode == workshop::EXAMPLES_BEFORE_SUBMISSION);
 159  
 160      // is the assessment of example submissions considered finished?
 161      $examplesdone = has_capability('mod/workshop:manageexamples', $workshop->context);
 162      if ($workshop->assessing_examples_allowed()
 163              and has_capability('mod/workshop:submit', $workshop->context)
 164                      and ! has_capability('mod/workshop:manageexamples', $workshop->context)) {
 165          $examples = $userplan->get_examples();
 166          $total = count($examples);
 167          $left = 0;
 168          // make sure the current user has all examples allocated
 169          foreach ($examples as $exampleid => $example) {
 170              if (is_null($example->assessmentid)) {
 171                  $examples[$exampleid]->assessmentid = $workshop->add_allocation($example, $USER->id, 0);
 172              }
 173              if (is_null($example->grade)) {
 174                  $left++;
 175              }
 176          }
 177          if ($left > 0 and $workshop->examplesmode != workshop::EXAMPLES_VOLUNTARY) {
 178              $examplesdone = false;
 179          } else {
 180              $examplesdone = true;
 181          }
 182          print_collapsible_region_start('', 'workshop-viewlet-examples', get_string('exampleassessments', 'workshop'), false, $examplesdone);
 183          echo $output->box_start('generalbox exampleassessments');
 184          if ($total == 0) {
 185              echo $output->heading(get_string('noexamples', 'workshop'), 3);
 186          } else {
 187              foreach ($examples as $example) {
 188                  $summary = $workshop->prepare_example_summary($example);
 189                  echo $output->render($summary);
 190              }
 191          }
 192          echo $output->box_end();
 193          print_collapsible_region_end();
 194      }
 195  
 196      if (has_capability('mod/workshop:submit', $PAGE->context) and (!$examplesmust or $examplesdone)) {
 197          print_collapsible_region_start('', 'workshop-viewlet-ownsubmission', get_string('yoursubmission', 'workshop'));
 198          echo $output->box_start('generalbox ownsubmission');
 199          if ($submission = $workshop->get_submission_by_author($USER->id)) {
 200              echo $output->render($workshop->prepare_submission_summary($submission, true));
 201              if ($workshop->modifying_submission_allowed($USER->id)) {
 202                  $btnurl = new moodle_url($workshop->submission_url(), array('edit' => 'on'));
 203                  $btntxt = get_string('editsubmission', 'workshop');
 204              }
 205          } else {
 206              echo $output->container(get_string('noyoursubmission', 'workshop'));
 207              if ($workshop->creating_submission_allowed($USER->id)) {
 208                  $btnurl = new moodle_url($workshop->submission_url(), array('edit' => 'on'));
 209                  $btntxt = get_string('createsubmission', 'workshop');
 210              }
 211          }
 212          if (!empty($btnurl)) {
 213              echo $output->single_button($btnurl, $btntxt, 'get');
 214          }
 215          echo $output->box_end();
 216          print_collapsible_region_end();
 217      }
 218  
 219      if (has_capability('mod/workshop:viewallsubmissions', $PAGE->context)) {
 220          $groupmode = groups_get_activity_groupmode($workshop->cm);
 221          $groupid = groups_get_activity_group($workshop->cm, true);
 222  
 223          if ($groupmode == SEPARATEGROUPS and !has_capability('moodle/site:accessallgroups', $workshop->context)) {
 224              $allowedgroups = groups_get_activity_allowed_groups($workshop->cm);
 225              if (empty($allowedgroups)) {
 226                  echo $output->container(get_string('groupnoallowed', 'mod_workshop'), 'groupwidget error');
 227                  break;
 228              }
 229              if (! in_array($groupid, array_keys($allowedgroups))) {
 230                  echo $output->container(get_string('groupnotamember', 'core_group'), 'groupwidget error');
 231                  break;
 232              }
 233          }
 234  
 235          print_collapsible_region_start('', 'workshop-viewlet-allsubmissions', get_string('submissionsreport', 'workshop'));
 236  
 237          $perpage = get_user_preferences('workshop_perpage', 10);
 238          $data = $workshop->prepare_grading_report_data($USER->id, $groupid, $page, $perpage, $sortby, $sorthow);
 239          if ($data) {
 240              $countparticipants = $workshop->count_participants();
 241              $countsubmissions = $workshop->count_submissions(array_keys($data->grades), $groupid);
 242              $a = new stdClass();
 243              $a->submitted = $countsubmissions;
 244              $a->notsubmitted = $data->totalcount - $countsubmissions;
 245  
 246              echo html_writer::tag('div', get_string('submittednotsubmitted', 'workshop', $a));
 247  
 248              echo $output->container(groups_print_activity_menu($workshop->cm, $PAGE->url, true), 'groupwidget');
 249  
 250              // Prepare the paging bar.
 251              $baseurl = new moodle_url($PAGE->url, array('sortby' => $sortby, 'sorthow' => $sorthow));
 252              $pagingbar = new paging_bar($data->totalcount, $page, $perpage, $baseurl, 'page');
 253  
 254              // Populate the display options for the submissions report.
 255              $reportopts                     = new stdclass();
 256              $reportopts->showauthornames     = has_capability('mod/workshop:viewauthornames', $workshop->context);
 257              $reportopts->showreviewernames   = has_capability('mod/workshop:viewreviewernames', $workshop->context);
 258              $reportopts->sortby              = $sortby;
 259              $reportopts->sorthow             = $sorthow;
 260              $reportopts->showsubmissiongrade = false;
 261              $reportopts->showgradinggrade    = false;
 262              $reportopts->workshopphase       = $workshop->phase;
 263  
 264              echo $output->render($pagingbar);
 265              echo $output->render(new workshop_grading_report($data, $reportopts));
 266              echo $output->render($pagingbar);
 267              echo $output->perpage_selector($perpage);
 268          } else {
 269              echo html_writer::tag('div', get_string('nothingfound', 'workshop'), array('class' => 'nothingfound'));
 270          }
 271          print_collapsible_region_end();
 272      }
 273      break;
 274  
 275  case workshop::PHASE_ASSESSMENT:
 276  
 277      $ownsubmissionexists = null;
 278      if (has_capability('mod/workshop:submit', $PAGE->context)) {
 279          if ($ownsubmission = $workshop->get_submission_by_author($USER->id)) {
 280              print_collapsible_region_start('', 'workshop-viewlet-ownsubmission', get_string('yoursubmission', 'workshop'), false, true);
 281              echo $output->box_start('generalbox ownsubmission');
 282              echo $output->render($workshop->prepare_submission_summary($ownsubmission, true));
 283              $ownsubmissionexists = true;
 284          } else {
 285              print_collapsible_region_start('', 'workshop-viewlet-ownsubmission', get_string('yoursubmission', 'workshop'));
 286              echo $output->box_start('generalbox ownsubmission');
 287              echo $output->container(get_string('noyoursubmission', 'workshop'));
 288              $ownsubmissionexists = false;
 289              if ($workshop->creating_submission_allowed($USER->id)) {
 290                  $btnurl = new moodle_url($workshop->submission_url(), array('edit' => 'on'));
 291                  $btntxt = get_string('createsubmission', 'workshop');
 292              }
 293          }
 294          if (!empty($btnurl)) {
 295              echo $output->single_button($btnurl, $btntxt, 'get');
 296          }
 297          echo $output->box_end();
 298          print_collapsible_region_end();
 299      }
 300  
 301      if (has_capability('mod/workshop:viewallassessments', $PAGE->context)) {
 302          $perpage = get_user_preferences('workshop_perpage', 10);
 303          $groupid = groups_get_activity_group($workshop->cm, true);
 304          $data = $workshop->prepare_grading_report_data($USER->id, $groupid, $page, $perpage, $sortby, $sorthow);
 305          if ($data) {
 306              $showauthornames    = has_capability('mod/workshop:viewauthornames', $workshop->context);
 307              $showreviewernames  = has_capability('mod/workshop:viewreviewernames', $workshop->context);
 308  
 309              // prepare paging bar
 310              $baseurl = new moodle_url($PAGE->url, array('sortby' => $sortby, 'sorthow' => $sorthow));
 311              $pagingbar = new paging_bar($data->totalcount, $page, $perpage, $baseurl, 'page');
 312  
 313              // grading report display options
 314              $reportopts                         = new stdclass();
 315              $reportopts->showauthornames        = $showauthornames;
 316              $reportopts->showreviewernames      = $showreviewernames;
 317              $reportopts->sortby                 = $sortby;
 318              $reportopts->sorthow                = $sorthow;
 319              $reportopts->showsubmissiongrade    = false;
 320              $reportopts->showgradinggrade       = false;
 321              $reportopts->workshopphase          = $workshop->phase;
 322  
 323              print_collapsible_region_start('', 'workshop-viewlet-gradereport', get_string('gradesreport', 'workshop'));
 324              echo $output->box_start('generalbox gradesreport');
 325              echo $output->container(groups_print_activity_menu($workshop->cm, $PAGE->url, true), 'groupwidget');
 326              echo $output->render($pagingbar);
 327              echo $output->render(new workshop_grading_report($data, $reportopts));
 328              echo $output->render($pagingbar);
 329              echo $output->perpage_selector($perpage);
 330              echo $output->box_end();
 331              print_collapsible_region_end();
 332          }
 333      }
 334      if (trim($workshop->instructreviewers)) {
 335          $instructions = file_rewrite_pluginfile_urls($workshop->instructreviewers, 'pluginfile.php', $PAGE->context->id,
 336              'mod_workshop', 'instructreviewers', 0, workshop::instruction_editors_options($PAGE->context));
 337          print_collapsible_region_start('', 'workshop-viewlet-instructreviewers', get_string('instructreviewers', 'workshop'));
 338          echo $output->box(format_text($instructions, $workshop->instructreviewersformat, array('overflowdiv'=>true)), array('generalbox', 'instructions'));
 339          print_collapsible_region_end();
 340      }
 341  
 342      // does the user have to assess examples before assessing other's work?
 343      $examplesmust = ($workshop->useexamples and $workshop->examplesmode == workshop::EXAMPLES_BEFORE_ASSESSMENT);
 344  
 345      // is the assessment of example submissions considered finished?
 346      $examplesdone = has_capability('mod/workshop:manageexamples', $workshop->context);
 347  
 348      // can the examples be assessed?
 349      $examplesavailable = true;
 350  
 351      if (!$examplesdone and $examplesmust and ($ownsubmissionexists === false)) {
 352          print_collapsible_region_start('', 'workshop-viewlet-examplesfail', get_string('exampleassessments', 'workshop'));
 353          echo $output->box(get_string('exampleneedsubmission', 'workshop'));
 354          print_collapsible_region_end();
 355          $examplesavailable = false;
 356      }
 357  
 358      if ($workshop->assessing_examples_allowed()
 359              and has_capability('mod/workshop:submit', $workshop->context)
 360                  and ! has_capability('mod/workshop:manageexamples', $workshop->context)
 361                      and $examplesavailable) {
 362          $examples = $userplan->get_examples();
 363          $total = count($examples);
 364          $left = 0;
 365          // make sure the current user has all examples allocated
 366          foreach ($examples as $exampleid => $example) {
 367              if (is_null($example->assessmentid)) {
 368                  $examples[$exampleid]->assessmentid = $workshop->add_allocation($example, $USER->id, 0);
 369              }
 370              if (is_null($example->grade)) {
 371                  $left++;
 372              }
 373          }
 374          if ($left > 0 and $workshop->examplesmode != workshop::EXAMPLES_VOLUNTARY) {
 375              $examplesdone = false;
 376          } else {
 377              $examplesdone = true;
 378          }
 379          print_collapsible_region_start('', 'workshop-viewlet-examples', get_string('exampleassessments', 'workshop'), false, $examplesdone);
 380          echo $output->box_start('generalbox exampleassessments');
 381          if ($total == 0) {
 382              echo $output->heading(get_string('noexamples', 'workshop'), 3);
 383          } else {
 384              foreach ($examples as $example) {
 385                  $summary = $workshop->prepare_example_summary($example);
 386                  echo $output->render($summary);
 387              }
 388          }
 389          echo $output->box_end();
 390          print_collapsible_region_end();
 391      }
 392      if (!$examplesmust or $examplesdone) {
 393          print_collapsible_region_start('', 'workshop-viewlet-assignedassessments', get_string('assignedassessments', 'workshop'));
 394          if (! $assessments = $workshop->get_assessments_by_reviewer($USER->id)) {
 395              echo $output->box_start('generalbox assessment-none');
 396              echo $output->notification(get_string('assignedassessmentsnone', 'workshop'));
 397              echo $output->box_end();
 398          } else {
 399              $shownames = has_capability('mod/workshop:viewauthornames', $PAGE->context);
 400              foreach ($assessments as $assessment) {
 401                  $submission                     = new stdClass();
 402                  $submission->id                 = $assessment->submissionid;
 403                  $submission->title              = $assessment->submissiontitle;
 404                  $submission->timecreated        = $assessment->submissioncreated;
 405                  $submission->timemodified       = $assessment->submissionmodified;
 406                  $userpicturefields = explode(',', user_picture::fields());
 407                  foreach ($userpicturefields as $userpicturefield) {
 408                      $prefixedusernamefield = 'author' . $userpicturefield;
 409                      $submission->$prefixedusernamefield = $assessment->$prefixedusernamefield;
 410                  }
 411  
 412                  // transform the submission object into renderable component
 413                  $submission = $workshop->prepare_submission_summary($submission, $shownames);
 414  
 415                  if (is_null($assessment->grade)) {
 416                      $submission->status = 'notgraded';
 417                      $class = ' notgraded';
 418                      $buttontext = get_string('assess', 'workshop');
 419                  } else {
 420                      $submission->status = 'graded';
 421                      $class = ' graded';
 422                      $buttontext = get_string('reassess', 'workshop');
 423                  }
 424  
 425                  echo $output->box_start('generalbox assessment-summary' . $class);
 426                  echo $output->render($submission);
 427                  $aurl = $workshop->assess_url($assessment->id);
 428                  echo $output->single_button($aurl, $buttontext, 'get');
 429                  echo $output->box_end();
 430              }
 431          }
 432          print_collapsible_region_end();
 433      }
 434      break;
 435  case workshop::PHASE_EVALUATION:
 436      if (has_capability('mod/workshop:viewallassessments', $PAGE->context)) {
 437          $perpage = get_user_preferences('workshop_perpage', 10);
 438          $groupid = groups_get_activity_group($workshop->cm, true);
 439          $data = $workshop->prepare_grading_report_data($USER->id, $groupid, $page, $perpage, $sortby, $sorthow);
 440          if ($data) {
 441              $showauthornames    = has_capability('mod/workshop:viewauthornames', $workshop->context);
 442              $showreviewernames  = has_capability('mod/workshop:viewreviewernames', $workshop->context);
 443  
 444              if (has_capability('mod/workshop:overridegrades', $PAGE->context)) {
 445                  // Print a drop-down selector to change the current evaluation method.
 446                  $selector = new single_select($PAGE->url, 'eval', workshop::available_evaluators_list(),
 447                      $workshop->evaluation, false, 'evaluationmethodchooser');
 448                  $selector->set_label(get_string('evaluationmethod', 'mod_workshop'));
 449                  $selector->set_help_icon('evaluationmethod', 'mod_workshop');
 450                  $selector->method = 'post';
 451                  echo $output->render($selector);
 452                  // load the grading evaluator
 453                  $evaluator = $workshop->grading_evaluation_instance();
 454                  $form = $evaluator->get_settings_form(new moodle_url($workshop->aggregate_url(),
 455                          compact('sortby', 'sorthow', 'page')));
 456                  $form->display();
 457              }
 458  
 459              // prepare paging bar
 460              $baseurl = new moodle_url($PAGE->url, array('sortby' => $sortby, 'sorthow' => $sorthow));
 461              $pagingbar = new paging_bar($data->totalcount, $page, $perpage, $baseurl, 'page');
 462  
 463              // grading report display options
 464              $reportopts                         = new stdclass();
 465              $reportopts->showauthornames        = $showauthornames;
 466              $reportopts->showreviewernames      = $showreviewernames;
 467              $reportopts->sortby                 = $sortby;
 468              $reportopts->sorthow                = $sorthow;
 469              $reportopts->showsubmissiongrade    = true;
 470              $reportopts->showgradinggrade       = true;
 471              $reportopts->workshopphase          = $workshop->phase;
 472  
 473              print_collapsible_region_start('', 'workshop-viewlet-gradereport', get_string('gradesreport', 'workshop'));
 474              echo $output->box_start('generalbox gradesreport');
 475              echo $output->container(groups_print_activity_menu($workshop->cm, $PAGE->url, true), 'groupwidget');
 476              echo $output->render($pagingbar);
 477              echo $output->render(new workshop_grading_report($data, $reportopts));
 478              echo $output->render($pagingbar);
 479              echo $output->perpage_selector($perpage);
 480              echo $output->box_end();
 481              print_collapsible_region_end();
 482          }
 483      }
 484      if (has_capability('mod/workshop:overridegrades', $workshop->context)) {
 485          print_collapsible_region_start('', 'workshop-viewlet-cleargrades', get_string('toolbox', 'workshop'), false, true);
 486          echo $output->box_start('generalbox toolbox');
 487  
 488          // Clear aggregated grades
 489          $url = new moodle_url($workshop->toolbox_url('clearaggregatedgrades'));
 490          $btn = new single_button($url, get_string('clearaggregatedgrades', 'workshop'), 'post');
 491          $btn->add_confirm_action(get_string('clearaggregatedgradesconfirm', 'workshop'));
 492          echo $output->container_start('toolboxaction');
 493          echo $output->render($btn);
 494          echo $output->help_icon('clearaggregatedgrades', 'workshop');
 495          echo $output->container_end();
 496          // Clear assessments
 497          $url = new moodle_url($workshop->toolbox_url('clearassessments'));
 498          $btn = new single_button($url, get_string('clearassessments', 'workshop'), 'post');
 499          $btn->add_confirm_action(get_string('clearassessmentsconfirm', 'workshop'));
 500          echo $output->container_start('toolboxaction');
 501          echo $output->render($btn);
 502          echo $output->help_icon('clearassessments', 'workshop');
 503          echo html_writer::empty_tag('img', array('src' => $output->pix_url('i/risk_dataloss'),
 504                                                   'title' => get_string('riskdatalossshort', 'admin'),
 505                                                   'alt' => get_string('riskdatalossshort', 'admin'),
 506                                                   'class' => 'workshop-risk-dataloss'));
 507          echo $output->container_end();
 508  
 509          echo $output->box_end();
 510          print_collapsible_region_end();
 511      }
 512      if (has_capability('mod/workshop:submit', $PAGE->context)) {
 513          print_collapsible_region_start('', 'workshop-viewlet-ownsubmission', get_string('yoursubmission', 'workshop'));
 514          echo $output->box_start('generalbox ownsubmission');
 515          if ($submission = $workshop->get_submission_by_author($USER->id)) {
 516              echo $output->render($workshop->prepare_submission_summary($submission, true));
 517          } else {
 518              echo $output->container(get_string('noyoursubmission', 'workshop'));
 519          }
 520          echo $output->box_end();
 521          print_collapsible_region_end();
 522      }
 523      if ($assessments = $workshop->get_assessments_by_reviewer($USER->id)) {
 524          print_collapsible_region_start('', 'workshop-viewlet-assignedassessments', get_string('assignedassessments', 'workshop'));
 525          $shownames = has_capability('mod/workshop:viewauthornames', $PAGE->context);
 526          foreach ($assessments as $assessment) {
 527              $submission                     = new stdclass();
 528              $submission->id                 = $assessment->submissionid;
 529              $submission->title              = $assessment->submissiontitle;
 530              $submission->timecreated        = $assessment->submissioncreated;
 531              $submission->timemodified       = $assessment->submissionmodified;
 532              $userpicturefields = explode(',', user_picture::fields());
 533              foreach ($userpicturefields as $userpicturefield) {
 534                  $prefixedusernamefield = 'author' . $userpicturefield;
 535                  $submission->$prefixedusernamefield = $assessment->$prefixedusernamefield;
 536              }
 537  
 538              if (is_null($assessment->grade)) {
 539                  $class = ' notgraded';
 540                  $submission->status = 'notgraded';
 541                  $buttontext = get_string('assess', 'workshop');
 542              } else {
 543                  $class = ' graded';
 544                  $submission->status = 'graded';
 545                  $buttontext = get_string('reassess', 'workshop');
 546              }
 547              echo $output->box_start('generalbox assessment-summary' . $class);
 548              echo $output->render($workshop->prepare_submission_summary($submission, $shownames));
 549              echo $output->box_end();
 550          }
 551          print_collapsible_region_end();
 552      }
 553      break;
 554  case workshop::PHASE_CLOSED:
 555      if (trim($workshop->conclusion)) {
 556          $conclusion = file_rewrite_pluginfile_urls($workshop->conclusion, 'pluginfile.php', $workshop->context->id,
 557              'mod_workshop', 'conclusion', 0, workshop::instruction_editors_options($workshop->context));
 558          print_collapsible_region_start('', 'workshop-viewlet-conclusion', get_string('conclusion', 'workshop'));
 559          echo $output->box(format_text($conclusion, $workshop->conclusionformat, array('overflowdiv'=>true)), array('generalbox', 'conclusion'));
 560          print_collapsible_region_end();
 561      }
 562      $finalgrades = $workshop->get_gradebook_grades($USER->id);
 563      if (!empty($finalgrades)) {
 564          print_collapsible_region_start('', 'workshop-viewlet-yourgrades', get_string('yourgrades', 'workshop'));
 565          echo $output->box_start('generalbox grades-yourgrades');
 566          echo $output->render($finalgrades);
 567          echo $output->box_end();
 568          print_collapsible_region_end();
 569      }
 570      if (has_capability('mod/workshop:viewallassessments', $PAGE->context)) {
 571          $perpage = get_user_preferences('workshop_perpage', 10);
 572          $groupid = groups_get_activity_group($workshop->cm, true);
 573          $data = $workshop->prepare_grading_report_data($USER->id, $groupid, $page, $perpage, $sortby, $sorthow);
 574          if ($data) {
 575              $showauthornames    = has_capability('mod/workshop:viewauthornames', $workshop->context);
 576              $showreviewernames  = has_capability('mod/workshop:viewreviewernames', $workshop->context);
 577  
 578              // prepare paging bar
 579              $baseurl = new moodle_url($PAGE->url, array('sortby' => $sortby, 'sorthow' => $sorthow));
 580              $pagingbar = new paging_bar($data->totalcount, $page, $perpage, $baseurl, 'page');
 581  
 582              // grading report display options
 583              $reportopts                         = new stdclass();
 584              $reportopts->showauthornames        = $showauthornames;
 585              $reportopts->showreviewernames      = $showreviewernames;
 586              $reportopts->sortby                 = $sortby;
 587              $reportopts->sorthow                = $sorthow;
 588              $reportopts->showsubmissiongrade    = true;
 589              $reportopts->showgradinggrade       = true;
 590              $reportopts->workshopphase          = $workshop->phase;
 591  
 592              print_collapsible_region_start('', 'workshop-viewlet-gradereport', get_string('gradesreport', 'workshop'));
 593              echo $output->box_start('generalbox gradesreport');
 594              echo $output->container(groups_print_activity_menu($workshop->cm, $PAGE->url, true), 'groupwidget');
 595              echo $output->render($pagingbar);
 596              echo $output->render(new workshop_grading_report($data, $reportopts));
 597              echo $output->render($pagingbar);
 598              echo $output->perpage_selector($perpage);
 599              echo $output->box_end();
 600              print_collapsible_region_end();
 601          }
 602      }
 603      if (has_capability('mod/workshop:submit', $PAGE->context)) {
 604          print_collapsible_region_start('', 'workshop-viewlet-ownsubmission', get_string('yoursubmission', 'workshop'));
 605          echo $output->box_start('generalbox ownsubmission');
 606          if ($submission = $workshop->get_submission_by_author($USER->id)) {
 607              echo $output->render($workshop->prepare_submission_summary($submission, true));
 608          } else {
 609              echo $output->container(get_string('noyoursubmission', 'workshop'));
 610          }
 611          echo $output->box_end();
 612  
 613          if (!empty($submission->gradeoverby) and strlen(trim($submission->feedbackauthor)) > 0) {
 614              echo $output->render(new workshop_feedback_author($submission));
 615          }
 616  
 617          print_collapsible_region_end();
 618      }
 619      if (has_capability('mod/workshop:viewpublishedsubmissions', $workshop->context)) {
 620          $shownames = has_capability('mod/workshop:viewauthorpublished', $workshop->context);
 621          if ($submissions = $workshop->get_published_submissions()) {
 622              print_collapsible_region_start('', 'workshop-viewlet-publicsubmissions', get_string('publishedsubmissions', 'workshop'));
 623              foreach ($submissions as $submission) {
 624                  echo $output->box_start('generalbox submission-summary');
 625                  echo $output->render($workshop->prepare_submission_summary($submission, $shownames));
 626                  echo $output->box_end();
 627              }
 628              print_collapsible_region_end();
 629          }
 630      }
 631      if ($assessments = $workshop->get_assessments_by_reviewer($USER->id)) {
 632          print_collapsible_region_start('', 'workshop-viewlet-assignedassessments', get_string('assignedassessments', 'workshop'));
 633          $shownames = has_capability('mod/workshop:viewauthornames', $PAGE->context);
 634          foreach ($assessments as $assessment) {
 635              $submission                     = new stdclass();
 636              $submission->id                 = $assessment->submissionid;
 637              $submission->title              = $assessment->submissiontitle;
 638              $submission->timecreated        = $assessment->submissioncreated;
 639              $submission->timemodified       = $assessment->submissionmodified;
 640              $userpicturefields = explode(',', user_picture::fields());
 641              foreach ($userpicturefields as $userpicturefield) {
 642                  $prefixedusernamefield = 'author' . $userpicturefield;
 643                  $submission->$prefixedusernamefield = $assessment->$prefixedusernamefield;
 644              }
 645  
 646              if (is_null($assessment->grade)) {
 647                  $class = ' notgraded';
 648                  $submission->status = 'notgraded';
 649                  $buttontext = get_string('assess', 'workshop');
 650              } else {
 651                  $class = ' graded';
 652                  $submission->status = 'graded';
 653                  $buttontext = get_string('reassess', 'workshop');
 654              }
 655              echo $output->box_start('generalbox assessment-summary' . $class);
 656              echo $output->render($workshop->prepare_submission_summary($submission, $shownames));
 657              echo $output->box_end();
 658  
 659              if (strlen(trim($assessment->feedbackreviewer)) > 0) {
 660                  echo $output->render(new workshop_feedback_reviewer($assessment));
 661              }
 662          }
 663          print_collapsible_region_end();
 664      }
 665      break;
 666  default:
 667  }
 668  
 669  echo $output->footer();


Generated: Thu Aug 11 10:00:09 2016 Cross-referenced by PHPXref 0.7.1