17b185056SJames Collins<?php 27b185056SJames Collins/** 37b185056SJames Collins * Mikio Syntax Plugin: Quiz Item 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 Collins 107b185056SJames Collinsif (!defined('DOKU_INC')) die(); 117b185056SJames Collinsif (!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/'); 127b185056SJames Collinsrequire_once(dirname(__FILE__).'/core.php'); 137b185056SJames Collins 147b185056SJames Collinsclass syntax_plugin_mikioplugin_quizitem extends syntax_plugin_mikioplugin_core { 157b185056SJames Collins public $tag = 'quiz-item'; 1643f781e0SJames Collins public $requires_tag = 'quiz'; 177b185056SJames Collins public $hasEndTag = false; 187b185056SJames Collins public $options = array( 197b185056SJames Collins 'type' => array('type' => 'choice', 204d21e148SJames Collins 'data' => array('choice', 'multiple'), 214d21e148SJames Collins 'default' => 'choice'), 227b185056SJames Collins 'question' => array('type' => 'text', 'default' => ''), 237b185056SJames Collins 'options' => array('type' => 'text', 'default' => ''), 247b185056SJames Collins 'answer' => array('type' => 'text', 'default' => ''), 254d21e148SJames Collins 'scores' => array('type' => 'text', 'default' => ''), 267b185056SJames Collins 'text' => array('type' => 'text', 'default' => ''), 277b185056SJames Collins ); 287b185056SJames Collins 297b185056SJames Collins // public function getAllowedTypes() { return array(); } 307b185056SJames Collins 317b185056SJames Collins public function render_lexer_special(Doku_Renderer $renderer, $data) { 327b185056SJames Collins $classes = $this->buildClass($data); 337b185056SJames Collins 34*becd90d5SJames Collins $data['question'] = $this->applyMarkdownEffects($data['question']); 35*becd90d5SJames Collins $data['text'] = $this->applyMarkdownEffects($data['text']); 36*becd90d5SJames Collins 374d21e148SJames Collins $renderer->doc .= '<div class="' . $this->elemClass . ' ' . $this->classPrefix . 'quiz-item' . $classes . '" data-question="' . $data['question'] . '" ' . ($data['answer'] != '' ? 'data-answer="' . $data['answer'] . '"' : '') . '>'; 387b185056SJames Collins $renderer->doc .= '<div class="' . $this->elemClass . ' ' . $this->classPrefix . 'quiz-question">' . $data['question'] . '</div>'; 397b185056SJames Collins if($data['text'] != '') $renderer->doc .= '<p>' . $data['text'] . '</p>'; 407b185056SJames Collins $renderer->doc .= '<div class="' . $this->elemClass . ' ' . $this->classPrefix . 'quiz-options">'; 417b185056SJames Collins 427b185056SJames Collins switch(strtolower($data['type'])) { 437b185056SJames Collins case 'choice': 447b185056SJames Collins $name = rand(10000, 99999); 457b185056SJames Collins 467b185056SJames Collins $options = explode('|', $data['options']); 474d21e148SJames Collins $scores = explode('|', $data['scores']); 484d21e148SJames Collins foreach($options as $key => $option) { 49*becd90d5SJames Collins $renderer->doc .= '<div class="' . $this->elemClass . ' ' . $this->classPrefix . 'quiz-option"><label><input type="radio" name="' . $name . '" value="' . $option . '" ' . (isset($scores[$key]) && $scores[$key] != "" ? 'data-score="' . $scores[$key] . '" ' : '') . '/>' . $this->applyMarkdownEffects($option) . '</label></div>'; 504d21e148SJames Collins } 514d21e148SJames Collins break; 524d21e148SJames Collins case 'multiple': 534d21e148SJames Collins $name = rand(10000, 99999); 544d21e148SJames Collins 554d21e148SJames Collins $options = explode('|', $data['options']); 564d21e148SJames Collins $scores = explode('|', $data['scores']); 574d21e148SJames Collins foreach($options as $key => $option) { 58*becd90d5SJames Collins $renderer->doc .= '<div class="' . $this->elemClass . ' ' . $this->classPrefix . 'quiz-option"><label><input type="checkbox" name="' . $name . '-' . $key . '" value="' . $option . '" ' . (isset($scores[$key]) && $scores[$key] != "" ? 'data-score="' . $scores[$key] . '" ' : '') . '/>' . $this->applyMarkdownEffects($option) . '</label></div>'; 597b185056SJames Collins } 607b185056SJames Collins break; 617b185056SJames Collins } 627b185056SJames Collins 637b185056SJames Collins $renderer->doc .= '</div>'; 647b185056SJames Collins $renderer->doc .= '</div>'; 657b185056SJames Collins } 667b185056SJames Collins} 677b185056SJames Collins?> 68