1<?php 2 3/** 4 * The summary XHTML form selects either up to the first two paragraphs 5 * it find in a page or the first section (whichever comes first) 6 * It strips out the table of contents if one exists 7 * Section divs are not used - everything should be nested in a single 8 * div with CSS class "page" 9 * Headings have their a name link removed and section editing links 10 * removed 11 * It also attempts to capture the first heading in a page for 12 * use as the title of the page. 13 * 14 * 15 * @author Harry Fuecks <hfuecks@gmail.com> 16 * @todo Is this currently used anywhere? Should it? 17 */ 18class Doku_Renderer_xhtmlsummary extends Doku_Renderer_xhtml 19{ 20 // Namespace these variables to 21 // avoid clashes with parent classes 22 protected $sum_paragraphs = 0; 23 protected $sum_capture = true; 24 protected $sum_inSection = false; 25 protected $sum_summary = ''; 26 protected $sum_pageTitle = false; 27 28 /** @inheritdoc */ 29 public function document_start() 30 { 31 $this->doc .= DOKU_LF . '<div>' . DOKU_LF; 32 } 33 34 /** @inheritdoc */ 35 public function document_end() 36 { 37 $this->doc = $this->sum_summary; 38 $this->doc .= DOKU_LF . '</div>' . DOKU_LF; 39 } 40 41 /** @inheritdoc 42 * @param string $text 43 * @param int $level 44 * @param int $pos 45 * @param false $returnonly 46 */ 47 public function header($text, $level, $pos, $returnonly = false) 48 { 49 if (!$this->sum_pageTitle) { 50 $this->info['sum_pagetitle'] = $text; 51 $this->sum_pageTitle = true; 52 } 53 $this->doc .= DOKU_LF . '<h' . $level . '>'; 54 $this->doc .= $this->_xmlEntities($text); 55 $this->doc .= "</h$level>" . DOKU_LF; 56 } 57 58 /** @inheritdoc */ 59 public function section_open($level) 60 { 61 if ($this->sum_capture) { 62 $this->sum_inSection = true; 63 } 64 } 65 66 /** @inheritdoc */ 67 public function section_close() 68 { 69 if ($this->sum_capture && $this->sum_inSection) { 70 $this->sum_summary .= $this->doc; 71 $this->sum_capture = false; 72 } 73 } 74 75 /** @inheritdoc */ 76 public function p_open() 77 { 78 if ($this->sum_capture && $this->sum_paragraphs < 2) { 79 $this->sum_paragraphs++; 80 } 81 parent::p_open(); 82 } 83 84 /** @inheritdoc */ 85 public function p_close() 86 { 87 parent::p_close(); 88 if ($this->sum_capture && $this->sum_paragraphs >= 2) { 89 $this->sum_summary .= $this->doc; 90 $this->sum_capture = false; 91 } 92 } 93} 94 95 96//Setup VIM: ex: et ts=2 : 97