16b7b33dcShfuecks<?php 2*fa8adffeSAndreas Gohrif(!defined('DOKU_INC')) die('meh.'); 36b7b33dcShfuecksrequire_once DOKU_INC . 'inc/parser/xhtml.php'; 46b7b33dcShfuecks 56b7b33dcShfuecks/** 66b7b33dcShfuecks * The summary XHTML form selects either up to the first two paragraphs 76b7b33dcShfuecks * it find in a page or the first section (whichever comes first) 86b7b33dcShfuecks * It strips out the table of contents if one exists 96b7b33dcShfuecks * Section divs are not used - everything should be nested in a single 106b7b33dcShfuecks * div with CSS class "page" 116b7b33dcShfuecks * Headings have their a name link removed and section editing links 126b7b33dcShfuecks * removed 136b7b33dcShfuecks * It also attempts to capture the first heading in a page for 146b7b33dcShfuecks * use as the title of the page. 15b8c943a4SAndreas Gohr * 16b8c943a4SAndreas Gohr * 17b8c943a4SAndreas Gohr * @author Harry Fuecks <hfuecks@gmail.com> 18b8c943a4SAndreas Gohr * @todo Is this currently used anywhere? Should it? 196b7b33dcShfuecks */ 206b7b33dcShfuecksclass Doku_Renderer_xhtmlsummary extends Doku_Renderer_xhtml { 216b7b33dcShfuecks 226b7b33dcShfuecks // Namespace these variables to 236b7b33dcShfuecks // avoid clashes with parent classes 246b7b33dcShfuecks var $sum_paragraphs = 0; 2544881bd0Shenning.noren var $sum_capture = true; 2644881bd0Shenning.noren var $sum_inSection = false; 276b7b33dcShfuecks var $sum_summary = ''; 2844881bd0Shenning.noren var $sum_pageTitle = false; 296b7b33dcShfuecks 306b7b33dcShfuecks function document_start() { 316b7b33dcShfuecks $this->doc .= DOKU_LF.'<div>'.DOKU_LF; 326b7b33dcShfuecks } 336b7b33dcShfuecks 346b7b33dcShfuecks function document_end() { 356b7b33dcShfuecks $this->doc = $this->sum_summary; 366b7b33dcShfuecks $this->doc .= DOKU_LF.'</div>'.DOKU_LF; 376b7b33dcShfuecks } 386b7b33dcShfuecks 39b8c943a4SAndreas Gohr // FIXME not supported anymore 406b7b33dcShfuecks function toc_open() { 416b7b33dcShfuecks $this->sum_summary .= $this->doc; 426b7b33dcShfuecks } 436b7b33dcShfuecks 44b8c943a4SAndreas Gohr // FIXME not supported anymore 456b7b33dcShfuecks function toc_close() { 466b7b33dcShfuecks $this->doc = ''; 476b7b33dcShfuecks } 486b7b33dcShfuecks 496b7b33dcShfuecks function header($text, $level, $pos) { 506b7b33dcShfuecks if ( !$this->sum_pageTitle ) { 516b7b33dcShfuecks $this->info['sum_pagetitle'] = $text; 5244881bd0Shenning.noren $this->sum_pageTitle = true; 536b7b33dcShfuecks } 546b7b33dcShfuecks $this->doc .= DOKU_LF.'<h'.$level.'>'; 556b7b33dcShfuecks $this->doc .= $this->_xmlEntities($text); 566b7b33dcShfuecks $this->doc .= "</h$level>".DOKU_LF; 576b7b33dcShfuecks } 586b7b33dcShfuecks 596b7b33dcShfuecks function section_open($level) { 606b7b33dcShfuecks if ( $this->sum_capture ) { 6144881bd0Shenning.noren $this->sum_inSection = true; 626b7b33dcShfuecks } 636b7b33dcShfuecks } 646b7b33dcShfuecks 656b7b33dcShfuecks function section_close() { 666b7b33dcShfuecks if ( $this->sum_capture && $this->sum_inSection ) { 676b7b33dcShfuecks $this->sum_summary .= $this->doc; 6844881bd0Shenning.noren $this->sum_capture = false; 696b7b33dcShfuecks } 706b7b33dcShfuecks } 716b7b33dcShfuecks 726b7b33dcShfuecks function p_open() { 736b7b33dcShfuecks if ( $this->sum_capture && $this->sum_paragraphs < 2 ) { 746b7b33dcShfuecks $this->sum_paragraphs++; 756b7b33dcShfuecks } 766b7b33dcShfuecks parent :: p_open(); 776b7b33dcShfuecks } 786b7b33dcShfuecks 796b7b33dcShfuecks function p_close() { 806b7b33dcShfuecks parent :: p_close(); 816b7b33dcShfuecks if ( $this->sum_capture && $this->sum_paragraphs >= 2 ) { 826b7b33dcShfuecks $this->sum_summary .= $this->doc; 8344881bd0Shenning.noren $this->sum_capture = false; 846b7b33dcShfuecks } 856b7b33dcShfuecks } 866b7b33dcShfuecks 876b7b33dcShfuecks} 886b7b33dcShfuecks 896b7b33dcShfuecks 906b7b33dcShfuecks//Setup VIM: ex: et ts=2 enc=utf-8 : 91