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', 20*4d21e148SJames Collins 'data' => array('choice', 'multiple'), 21*4d21e148SJames Collins 'default' => 'choice'), 227b185056SJames Collins 'question' => array('type' => 'text', 'default' => ''), 237b185056SJames Collins 'options' => array('type' => 'text', 'default' => ''), 247b185056SJames Collins 'answer' => array('type' => 'text', 'default' => ''), 25*4d21e148SJames 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*4d21e148SJames Collins $renderer->doc .= '<div class="' . $this->elemClass . ' ' . $this->classPrefix . 'quiz-item' . $classes . '" data-question="' . $data['question'] . '" ' . ($data['answer'] != '' ? 'data-answer="' . $data['answer'] . '"' : '') . '>'; 357b185056SJames Collins $renderer->doc .= '<div class="' . $this->elemClass . ' ' . $this->classPrefix . 'quiz-question">' . $data['question'] . '</div>'; 367b185056SJames Collins if($data['text'] != '') $renderer->doc .= '<p>' . $data['text'] . '</p>'; 377b185056SJames Collins $renderer->doc .= '<div class="' . $this->elemClass . ' ' . $this->classPrefix . 'quiz-options">'; 387b185056SJames Collins 397b185056SJames Collins switch(strtolower($data['type'])) { 407b185056SJames Collins case 'choice': 417b185056SJames Collins $name = rand(10000, 99999); 427b185056SJames Collins 437b185056SJames Collins $options = explode('|', $data['options']); 44*4d21e148SJames Collins $scores = explode('|', $data['scores']); 45*4d21e148SJames Collins foreach($options as $key => $option) { 46*4d21e148SJames 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] . '" ' : '') . '/>' . $option . '</label></div>'; 47*4d21e148SJames Collins } 48*4d21e148SJames Collins break; 49*4d21e148SJames Collins case 'multiple': 50*4d21e148SJames Collins $name = rand(10000, 99999); 51*4d21e148SJames Collins 52*4d21e148SJames Collins $options = explode('|', $data['options']); 53*4d21e148SJames Collins $scores = explode('|', $data['scores']); 54*4d21e148SJames Collins foreach($options as $key => $option) { 55*4d21e148SJames 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] . '" ' : '') . '/>' . $option . '</label></div>'; 567b185056SJames Collins } 577b185056SJames Collins break; 587b185056SJames Collins } 597b185056SJames Collins 607b185056SJames Collins $renderer->doc .= '</div>'; 617b185056SJames Collins $renderer->doc .= '</div>'; 627b185056SJames Collins } 637b185056SJames Collins} 647b185056SJames Collins?> 65