xref: /plugin/mikioplugin/syntax/quiz.php (revision ae2b5842ad3452a6ba3e173b14f86e2bb6740db3)
17b185056SJames Collins<?php
27b185056SJames Collins/**
37b185056SJames Collins * Mikio Syntax Plugin: Quiz
47b185056SJames Collins  *
57b185056SJames Collins * @link        http://github.com/nomadjimbob/mikioplugin
67b185056SJames Collins * @license     GPL 2 (http://www.gnu.org/licenses/gpl.html)
77b185056SJames Collins * @author      James Collins <james.collins@outlook.com.au>
87b185056SJames Collins */
97b185056SJames Collinsif (!defined('DOKU_INC')) die();
107b185056SJames Collinsif (!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/');
117b185056SJames Collinsrequire_once(dirname(__FILE__).'/core.php');
127b185056SJames Collins
137b185056SJames Collinsclass syntax_plugin_mikioplugin_quiz extends syntax_plugin_mikioplugin_core {
147b185056SJames Collins    public $tag                 = 'quiz';
157b185056SJames Collins    public $hasEndTag           = true;
167b185056SJames Collins    public $options             = array(
174d21e148SJames Collins        'resettable'   => array('type'     => 'boolean',          'default'   => 'false'),
18e230d7cfSJames Collins        'full'   => array('type'     => 'boolean',          'default'   => 'false'),
194d21e148SJames Collins        'reset-text'   => array('type'     => 'text',          'default'   => 'Retry'),
204d21e148SJames Collins        'submit-text'   => array('type'     => 'text',          'default'   => 'Submit'),
21*ae2b5842SJames Collins        'submit-type'   => array('type' => 'text', 'default' => ''),
224d21e148SJames Collins        'prev-text'   => array('type'     => 'text',          'default'   => 'Prev'),
234d21e148SJames Collins        'next-text'   => array('type'     => 'text',          'default'   => 'Next'),
244d21e148SJames Collins        'correct-text'   => array('type'     => 'text',          'default'   => 'Correct'),
254d21e148SJames Collins        'incorrect-text'   => array('type'     => 'text',          'default'   => 'Incorrect'),
264d21e148SJames Collins        'status-text'   => array('type'     => 'text',          'default'   => 'Question $1 of $2'),
274d21e148SJames Collins        'result-correct-text'   => array('type'     => 'text',          'default'   => 'You got $1 out of $2 correct'),
284d21e148SJames Collins        'result-score-text'   => array('type'     => 'text',          'default'   => 'Score: $1'),
294d21e148SJames Collins        'result-score-total-text'   => array('type'     => 'text',          'default'   => 'Total score: $1'),
307b185056SJames Collins    );
317b185056SJames Collins
32*ae2b5842SJames Collins    public function __construct() {
33*ae2b5842SJames Collins        $this->addCommonOptions('type');
34*ae2b5842SJames Collins        $this->options['type']['default'] = 'secondary';
35*ae2b5842SJames Collins    }
367b185056SJames Collins
377b185056SJames Collins    public function render_lexer_enter(Doku_Renderer $renderer, $data) {
387b185056SJames Collins        $classes = $this->buildClass($data);
39e230d7cfSJames Collins        $renderer->doc .= '<div class="' . $this->elemClass . ' ' . $this->classPrefix . 'quiz ' . $classes . '" data-status="' . $data['status-text'] . '" data-result-correct="' . $data['result-correct-text'] . '" data-result-score="' . $data['result-score-text'] . '" data-result-score-total="' . $data['result-score-total-text'] . '" data-correct="' . $data['correct-text'] . '" data-incorrect="' . $data['incorrect-text'] . '"' . ($data['full'] == true ? ' data-full="true"' : '') . '>';
407b185056SJames Collins    }
417b185056SJames Collins
427b185056SJames Collins
437b185056SJames Collins    public function render_lexer_exit(Doku_Renderer $renderer, $data) {
44*ae2b5842SJames Collins        $classes = $this->buildClass($data);
45*ae2b5842SJames Collins
46*ae2b5842SJames Collins        if($data['submit-type'] == '') {
47*ae2b5842SJames Collins            if(substr($data['type'], 0, 8) == 'outline-') {
48*ae2b5842SJames Collins                $data['type'] = substr($data['type'], 8);
49*ae2b5842SJames Collins            } else {
50*ae2b5842SJames Collins                $data['type'] = 'outline-'.$data['type'];
51*ae2b5842SJames Collins            }
52*ae2b5842SJames Collins        } else {
53*ae2b5842SJames Collins            $data['type'] = $data['submit-type'];
54*ae2b5842SJames Collins        }
55*ae2b5842SJames Collins
56*ae2b5842SJames Collins        $oppositeClasses = $this->buildClass($data);
57*ae2b5842SJames Collins        /*
58*ae2b5842SJames Collins        ['type']
59*ae2b5842SJames Collins        outline-
60*ae2b5842SJames Collins        */
61*ae2b5842SJames Collins
627b185056SJames Collins        $renderer->doc .= '<div class="' . $this->elemClass . ' ' . $this->classPrefix . 'quiz-result"></div>';
637b185056SJames Collins        $renderer->doc .= '<div class="' . $this->elemClass . ' ' . $this->classPrefix . 'quiz-status">';
64e230d7cfSJames Collins        if($data['full'] == false) {
657b185056SJames Collins            $renderer->doc .= '<span class="' . $this->elemClass . ' ' . $this->classPrefix . 'quiz-status-text"></span>';
66*ae2b5842SJames Collins            $renderer->doc .= '<button class="' . $this->elemClass . ' ' . $this->classPrefix . 'button ' . $this->classPrefix . 'quiz-button-prev ' . $classes . '">&laquo; ' . $data['prev-text'] . '</button>';
67e230d7cfSJames Collins        }
68*ae2b5842SJames Collins        $renderer->doc .= '<button class="' . $this->elemClass . ' ' . $this->classPrefix . 'button ' . $this->classPrefix . 'quiz-button-submit ' . $oppositeClasses . '">' . $data['submit-text'] . '</button>';
694d21e148SJames Collins        if($data['resettable'] == true) {
70*ae2b5842SJames Collins            $renderer->doc .= '<button class="' . $this->elemClass . ' ' . $this->classPrefix . 'button ' . $this->classPrefix . 'quiz-button-reset ' . $oppositeClasses . '">' . $data['reset-text'] . '</button>';
714d21e148SJames Collins        }
72e230d7cfSJames Collins        if($data['full'] == false) {
73*ae2b5842SJames Collins            $renderer->doc .= '<button class="' . $this->elemClass . ' ' . $this->classPrefix . 'button ' . $this->classPrefix . 'quiz-button-next ' . $classes . '">' . $data['next-text'] . ' &raquo;</button>';
74e230d7cfSJames Collins        }
757b185056SJames Collins        $renderer->doc .= '</div>';
767b185056SJames Collins        $renderer->doc .= '</div>';
777b185056SJames Collins    }
787b185056SJames Collins}
797b185056SJames Collins?>