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 . '">« ' . $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'] . ' »</button>'; 74e230d7cfSJames Collins } 757b185056SJames Collins $renderer->doc .= '</div>'; 767b185056SJames Collins $renderer->doc .= '</div>'; 777b185056SJames Collins } 787b185056SJames Collins} 797b185056SJames Collins?>