xref: /plugin/mikioplugin/syntax/quiz.php (revision 3a0ad8d394ede994db68f1ed17eff796c659fc4a)
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/');
11*3a0ad8d3SJames Collinsrequire_once(__DIR__.'/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'),
21ae2b5842SJames 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
32ae2b5842SJames Collins    public function __construct() {
33ae2b5842SJames Collins        $this->addCommonOptions('type');
34ae2b5842SJames Collins        $this->options['type']['default'] = 'secondary';
35ae2b5842SJames Collins    }
367b185056SJames Collins
377b185056SJames Collins    public function render_lexer_enter(Doku_Renderer $renderer, $data) {
387b185056SJames Collins        $classes = $this->buildClass($data);
398e7a3119SJames Collins        $renderer->doc .= '<div class="' . $this->elemClass . ' ' . $this->classPrefix . 'quiz ' . $classes . '" data-status="' . $this->applyMarkdownEffects($data['status-text']) . '" data-result-correct="' . $this->applyMarkdownEffects($data['result-correct-text']) . '" data-result-score="' . $this->applyMarkdownEffects($data['result-score-text']) . '" data-result-score-total="' . $this->applyMarkdownEffects($data['result-score-total-text']) . '" data-correct="' . $this->applyMarkdownEffects($data['correct-text']) . '" data-incorrect="' . $this->applyMarkdownEffects($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) {
44ae2b5842SJames Collins        $classes = $this->buildClass($data);
45ae2b5842SJames Collins
46ae2b5842SJames Collins        if($data['submit-type'] == '') {
47ae2b5842SJames Collins            if(substr($data['type'], 0, 8) == 'outline-') {
48ae2b5842SJames Collins                $data['type'] = substr($data['type'], 8);
49ae2b5842SJames Collins            } else {
50ae2b5842SJames Collins                $data['type'] = 'outline-'.$data['type'];
51ae2b5842SJames Collins            }
52ae2b5842SJames Collins        } else {
53ae2b5842SJames Collins            $data['type'] = $data['submit-type'];
54ae2b5842SJames Collins        }
55ae2b5842SJames Collins
56ae2b5842SJames Collins        $oppositeClasses = $this->buildClass($data);
57ae2b5842SJames Collins        /*
58ae2b5842SJames Collins        ['type']
59ae2b5842SJames Collins        outline-
60ae2b5842SJames Collins        */
61ae2b5842SJames 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>';
66ae2b5842SJames Collins            $renderer->doc .= '<button class="' . $this->elemClass . ' ' . $this->classPrefix . 'button ' . $this->classPrefix . 'quiz-button-prev ' . $classes . '">&laquo; ' . $data['prev-text'] . '</button>';
67e230d7cfSJames Collins        }
68ae2b5842SJames 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) {
70ae2b5842SJames 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) {
73ae2b5842SJames 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?>