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