1*257dd7f8SAndreas Gohr<?php 2*257dd7f8SAndreas Gohr/** 3*257dd7f8SAndreas Gohr * DokuWiki Plugin struct (Syntax Component) 4*257dd7f8SAndreas Gohr * 5*257dd7f8SAndreas Gohr * @license GPL 2 http://www.gnu.org/licenses/gpl-2.0.html 6*257dd7f8SAndreas Gohr * @author Andreas Gohr, Michael Große <dokuwiki@cosmocode.de> 7*257dd7f8SAndreas Gohr */ 8*257dd7f8SAndreas Gohr 9*257dd7f8SAndreas Gohr// must be run within Dokuwiki 10*257dd7f8SAndreas Gohruse plugin\struct\meta\Assignments; 11*257dd7f8SAndreas Gohruse plugin\struct\meta\SchemaData; 12*257dd7f8SAndreas Gohr 13*257dd7f8SAndreas Gohrif (!defined('DOKU_INC')) die(); 14*257dd7f8SAndreas Gohr 15*257dd7f8SAndreas Gohrclass syntax_plugin_struct_list extends DokuWiki_Syntax_Plugin { 16*257dd7f8SAndreas Gohr /** 17*257dd7f8SAndreas Gohr * @return string Syntax mode type 18*257dd7f8SAndreas Gohr */ 19*257dd7f8SAndreas Gohr public function getType() { 20*257dd7f8SAndreas Gohr return 'substition'; 21*257dd7f8SAndreas Gohr } 22*257dd7f8SAndreas Gohr /** 23*257dd7f8SAndreas Gohr * @return string Paragraph type 24*257dd7f8SAndreas Gohr */ 25*257dd7f8SAndreas Gohr public function getPType() { 26*257dd7f8SAndreas Gohr return 'block'; 27*257dd7f8SAndreas Gohr } 28*257dd7f8SAndreas Gohr /** 29*257dd7f8SAndreas Gohr * @return int Sort order - Low numbers go before high numbers 30*257dd7f8SAndreas Gohr */ 31*257dd7f8SAndreas Gohr public function getSort() { 32*257dd7f8SAndreas Gohr return 155; 33*257dd7f8SAndreas Gohr } 34*257dd7f8SAndreas Gohr 35*257dd7f8SAndreas Gohr /** 36*257dd7f8SAndreas Gohr * Connect lookup pattern to lexer. 37*257dd7f8SAndreas Gohr * 38*257dd7f8SAndreas Gohr * @param string $mode Parser mode 39*257dd7f8SAndreas Gohr */ 40*257dd7f8SAndreas Gohr public function connectTo($mode) { 41*257dd7f8SAndreas Gohr $this->Lexer->addSpecialPattern('~~STRUCT~~',$mode,'plugin_struct_list'); 42*257dd7f8SAndreas Gohr } 43*257dd7f8SAndreas Gohr 44*257dd7f8SAndreas Gohr 45*257dd7f8SAndreas Gohr /** 46*257dd7f8SAndreas Gohr * Handle matches of the struct syntax 47*257dd7f8SAndreas Gohr * 48*257dd7f8SAndreas Gohr * @param string $match The match of the syntax 49*257dd7f8SAndreas Gohr * @param int $state The state of the handler 50*257dd7f8SAndreas Gohr * @param int $pos The position in the document 51*257dd7f8SAndreas Gohr * @param Doku_Handler $handler The handler 52*257dd7f8SAndreas Gohr * @return array Data for the renderer 53*257dd7f8SAndreas Gohr */ 54*257dd7f8SAndreas Gohr public function handle($match, $state, $pos, Doku_Handler $handler){ 55*257dd7f8SAndreas Gohr $data = array(); 56*257dd7f8SAndreas Gohr 57*257dd7f8SAndreas Gohr return $data; 58*257dd7f8SAndreas Gohr } 59*257dd7f8SAndreas Gohr 60*257dd7f8SAndreas Gohr /** 61*257dd7f8SAndreas Gohr * Render xhtml output or metadata 62*257dd7f8SAndreas Gohr * 63*257dd7f8SAndreas Gohr * @param string $mode Renderer mode (supported modes: xhtml) 64*257dd7f8SAndreas Gohr * @param Doku_Renderer $R The renderer 65*257dd7f8SAndreas Gohr * @param array $data The data from the handler() function 66*257dd7f8SAndreas Gohr * @return bool If rendering was successful. 67*257dd7f8SAndreas Gohr */ 68*257dd7f8SAndreas Gohr public function render($mode, Doku_Renderer $R, $data) { 69*257dd7f8SAndreas Gohr global $ID; 70*257dd7f8SAndreas Gohr global $REV; 71*257dd7f8SAndreas Gohr 72*257dd7f8SAndreas Gohr $assignments = new Assignments(); 73*257dd7f8SAndreas Gohr $tables = $assignments->getPageAssignments($ID); 74*257dd7f8SAndreas Gohr if(!$tables) return true; 75*257dd7f8SAndreas Gohr 76*257dd7f8SAndreas Gohr $R->table_open(); 77*257dd7f8SAndreas Gohr $R->tabletbody_open(); 78*257dd7f8SAndreas Gohr foreach($tables as $table) { 79*257dd7f8SAndreas Gohr $schemadata = new SchemaData($table, $ID, $REV); 80*257dd7f8SAndreas Gohr $data = $schemadata->getData(); 81*257dd7f8SAndreas Gohr 82*257dd7f8SAndreas Gohr foreach($data as $field) { 83*257dd7f8SAndreas Gohr $R->tablerow_open(); 84*257dd7f8SAndreas Gohr $R->tableheader_open(); 85*257dd7f8SAndreas Gohr $R->cdata($field->getColumn()->getLabel()); 86*257dd7f8SAndreas Gohr $R->tableheader_close(); 87*257dd7f8SAndreas Gohr $R->tablecell_open(); 88*257dd7f8SAndreas Gohr $field->render($R, $mode); 89*257dd7f8SAndreas Gohr $R->tablecell_close(); 90*257dd7f8SAndreas Gohr $R->tablerow_close(); 91*257dd7f8SAndreas Gohr } 92*257dd7f8SAndreas Gohr } 93*257dd7f8SAndreas Gohr $R->tabletbody_close(); 94*257dd7f8SAndreas Gohr $R->table_close(); 95*257dd7f8SAndreas Gohr 96*257dd7f8SAndreas Gohr 97*257dd7f8SAndreas Gohr 98*257dd7f8SAndreas Gohr if($mode != 'xhtml') return false; 99*257dd7f8SAndreas Gohr 100*257dd7f8SAndreas Gohr return true; 101*257dd7f8SAndreas Gohr } 102*257dd7f8SAndreas Gohr} 103*257dd7f8SAndreas Gohr 104*257dd7f8SAndreas Gohr// vim:ts=4:sw=4:et: 105