xref: /dokuwiki/inc/parser/xhtmlsummary.php (revision de369923ccbbc3c1e79fd7b4d03677397e03876a)
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