xref: /dokuwiki/inc/parser/xhtmlsummary.php (revision e3776c06c37cc197709dac60892604dfea894ac2)
16b7b33dcShfuecks<?php
2fa8adffeSAndreas 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
90*e3776c06SMichael Hamann//Setup VIM: ex: et ts=2 :
91