16b7b33dcShfuecks<?php 26b7b33dcShfuecks/** 36b7b33dcShfuecks * The summary XHTML form selects either up to the first two paragraphs 46b7b33dcShfuecks * it find in a page or the first section (whichever comes first) 56b7b33dcShfuecks * It strips out the table of contents if one exists 66b7b33dcShfuecks * Section divs are not used - everything should be nested in a single 76b7b33dcShfuecks * div with CSS class "page" 86b7b33dcShfuecks * Headings have their a name link removed and section editing links 96b7b33dcShfuecks * removed 106b7b33dcShfuecks * It also attempts to capture the first heading in a page for 116b7b33dcShfuecks * use as the title of the page. 12b8c943a4SAndreas Gohr * 13b8c943a4SAndreas Gohr * 14b8c943a4SAndreas Gohr * @author Harry Fuecks <hfuecks@gmail.com> 15b8c943a4SAndreas Gohr * @todo Is this currently used anywhere? Should it? 166b7b33dcShfuecks */ 176b7b33dcShfuecksclass Doku_Renderer_xhtmlsummary extends Doku_Renderer_xhtml { 186b7b33dcShfuecks 196b7b33dcShfuecks // Namespace these variables to 206b7b33dcShfuecks // avoid clashes with parent classes 21*de369923SAndreas Gohr protected $sum_paragraphs = 0; 22*de369923SAndreas Gohr protected $sum_capture = true; 23*de369923SAndreas Gohr protected $sum_inSection = false; 24*de369923SAndreas Gohr protected $sum_summary = ''; 25*de369923SAndreas Gohr protected $sum_pageTitle = false; 266b7b33dcShfuecks 27*de369923SAndreas Gohr /** @inheritdoc */ 28*de369923SAndreas Gohr public function document_start() { 296b7b33dcShfuecks $this->doc .= DOKU_LF.'<div>'.DOKU_LF; 306b7b33dcShfuecks } 316b7b33dcShfuecks 32*de369923SAndreas Gohr /** @inheritdoc */ 33*de369923SAndreas Gohr public function document_end() { 346b7b33dcShfuecks $this->doc = $this->sum_summary; 356b7b33dcShfuecks $this->doc .= DOKU_LF.'</div>'.DOKU_LF; 366b7b33dcShfuecks } 376b7b33dcShfuecks 38*de369923SAndreas Gohr /** @inheritdoc */ 39*de369923SAndreas Gohr public function header($text, $level, $pos) { 406b7b33dcShfuecks if ( !$this->sum_pageTitle ) { 416b7b33dcShfuecks $this->info['sum_pagetitle'] = $text; 4244881bd0Shenning.noren $this->sum_pageTitle = true; 436b7b33dcShfuecks } 446b7b33dcShfuecks $this->doc .= DOKU_LF.'<h'.$level.'>'; 456b7b33dcShfuecks $this->doc .= $this->_xmlEntities($text); 466b7b33dcShfuecks $this->doc .= "</h$level>".DOKU_LF; 476b7b33dcShfuecks } 486b7b33dcShfuecks 49*de369923SAndreas Gohr /** @inheritdoc */ 50*de369923SAndreas Gohr public function section_open($level) { 516b7b33dcShfuecks if ( $this->sum_capture ) { 5244881bd0Shenning.noren $this->sum_inSection = true; 536b7b33dcShfuecks } 546b7b33dcShfuecks } 556b7b33dcShfuecks 56*de369923SAndreas Gohr /** @inheritdoc */ 57*de369923SAndreas Gohr public function section_close() { 586b7b33dcShfuecks if ( $this->sum_capture && $this->sum_inSection ) { 596b7b33dcShfuecks $this->sum_summary .= $this->doc; 6044881bd0Shenning.noren $this->sum_capture = false; 616b7b33dcShfuecks } 626b7b33dcShfuecks } 636b7b33dcShfuecks 64*de369923SAndreas Gohr /** @inheritdoc */ 65*de369923SAndreas Gohr public function p_open() { 666b7b33dcShfuecks if ( $this->sum_capture && $this->sum_paragraphs < 2 ) { 676b7b33dcShfuecks $this->sum_paragraphs++; 686b7b33dcShfuecks } 696b7b33dcShfuecks parent :: p_open(); 706b7b33dcShfuecks } 716b7b33dcShfuecks 72*de369923SAndreas Gohr /** @inheritdoc */ 73*de369923SAndreas Gohr public function p_close() { 746b7b33dcShfuecks parent :: p_close(); 756b7b33dcShfuecks if ( $this->sum_capture && $this->sum_paragraphs >= 2 ) { 766b7b33dcShfuecks $this->sum_summary .= $this->doc; 7744881bd0Shenning.noren $this->sum_capture = false; 786b7b33dcShfuecks } 796b7b33dcShfuecks } 806b7b33dcShfuecks 816b7b33dcShfuecks} 826b7b33dcShfuecks 836b7b33dcShfuecks 84e3776c06SMichael Hamann//Setup VIM: ex: et ts=2 : 85