Search moodle.org's
Developer Documentation

See Release Notes

  • Bug fixes for general core bugs in 4.2.x will end 22 April 2024 (12 months).
  • Bug fixes for security issues in 4.2.x will end 7 October 2024 (18 months).
  • PHP version: minimum PHP 8.0.0 Note: minimum PHP version has increased since Moodle 4.1. PHP 8.1.x is supported too.
   1  <?php
   2  // This file is part of Moodle - http://moodle.org/
   3  //
   4  // Moodle is free software: you can redistribute it and/or modify
   5  // it under the terms of the GNU General Public License as published by
   6  // the Free Software Foundation, either version 3 of the License, or
   7  // (at your option) any later version.
   8  //
   9  // Moodle is distributed in the hope that it will be useful,
  10  // but WITHOUT ANY WARRANTY; without even the implied warranty of
  11  // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  12  // GNU General Public License for more details.
  13  //
  14  // You should have received a copy of the GNU General Public License
  15  // along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
  16  
  17  namespace qbank_previewquestion\output;
  18  
  19  use context;
  20  use qbank_previewquestion\helper;
  21  use qbank_previewquestion\question_preview_options;
  22  
  23  /**
  24   * Class renderer for rendering preview url
  25   *
  26   * @package    qbank_previewquestion
  27   * @copyright  2009 The Open University
  28   * @author     2021 Safat Shahin <safatshahin@catalyst-au.net>
  29   * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  30   */
  31  class renderer extends \plugin_renderer_base {
  32  
  33      /**
  34       * Render an icon, optionally with the word 'Preview' beside it, to preview a given question.
  35       *
  36       * @param int $questionid the id of the question to be previewed.
  37       * @param context $context the context in which the preview is happening.
  38       *      Must be a course or category context.
  39       * @param bool $showlabel if true, show the word 'Preview' after the icon.
  40       *      If false, just show the icon.
  41       */
  42      public function question_preview_link($questionid, context $context, $showlabel) {
  43          if ($showlabel) {
  44              $alt = '';
  45              $label = get_string('preview');
  46              $attributes = [];
  47          } else {
  48              $alt = get_string('preview');
  49              $label = '';
  50              $attributes = ['title' => $alt];
  51          }
  52  
  53          $image = $this->pix_icon('t/preview', $alt, '', ['class' => 'iconsmall']);
  54          $link = helper::question_preview_url($questionid, null, null, null, null, $context, null,
  55                  question_preview_options::ALWAYS_LATEST);
  56          $action = new \popup_action('click', $link, 'questionpreview', helper::question_preview_popup_params());
  57  
  58          return $this->action_link($link, $image . $label, $action, $attributes);
  59      }
  60  
  61      /**
  62       * Render the preview page.
  63       *
  64       * @param array $previewdata
  65       */
  66      public function render_preview_page($previewdata) {
  67          return $this->render_from_template('qbank_previewquestion/preview_question', $previewdata);
  68      }
  69  
  70  }