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