about summary refs log tree commit diff stats
path: root/wiki/inc/parser/xhtmlsummary.php
diff options
context:
space:
mode:
authorahriman <ahriman@falte.red>2018-12-03 19:22:25 -0500
committerahriman <ahriman@falte.red>2018-12-03 19:22:25 -0500
commit0ae8cbf5c0b1a198b963490985b7738392ebcb97 (patch)
treeb2c77ae72c6b717e2b97492065196ac5ffb2d9e2 /wiki/inc/parser/xhtmlsummary.php
parentf57f6cc5a2d159f90168d292437dc4bd8cd7f934 (diff)
downloadsite-0ae8cbf5c0b1a198b963490985b7738392ebcb97.tar.gz
installed dokuwiki, added to navbar, updated news
Diffstat (limited to 'wiki/inc/parser/xhtmlsummary.php')
-rw-r--r--wiki/inc/parser/xhtmlsummary.php89
1 files changed, 89 insertions, 0 deletions
diff --git a/wiki/inc/parser/xhtmlsummary.php b/wiki/inc/parser/xhtmlsummary.php
new file mode 100644
index 0000000..867b71f
--- /dev/null
+++ b/wiki/inc/parser/xhtmlsummary.php
@@ -0,0 +1,89 @@
+<?php
+if(!defined('DOKU_INC')) die('meh.');
+
+/**
+ * The summary XHTML form selects either up to the first two paragraphs
+ * it find in a page or the first section (whichever comes first)
+ * It strips out the table of contents if one exists
+ * Section divs are not used - everything should be nested in a single
+ * div with CSS class "page"
+ * Headings have their a name link removed and section editing links
+ * removed
+ * It also attempts to capture the first heading in a page for
+ * use as the title of the page.
+ *
+ *
+ * @author Harry Fuecks <hfuecks@gmail.com>
+ * @todo   Is this currently used anywhere? Should it?
+ */
+class Doku_Renderer_xhtmlsummary extends Doku_Renderer_xhtml {
+
+    // Namespace these variables to
+    // avoid clashes with parent classes
+    var $sum_paragraphs = 0;
+    var $sum_capture = true;
+    var $sum_inSection = false;
+    var $sum_summary = '';
+    var $sum_pageTitle = false;
+
+    function document_start() {
+        $this->doc .= DOKU_LF.'<div>'.DOKU_LF;
+    }
+
+    function document_end() {
+        $this->doc = $this->sum_summary;
+        $this->doc .= DOKU_LF.'</div>'.DOKU_LF;
+    }
+
+    // FIXME not supported anymore
+    function toc_open() {
+        $this->sum_summary .= $this->doc;
+    }
+
+    // FIXME not supported anymore
+    function toc_close() {
+        $this->doc = '';
+    }
+
+    function header($text, $level, $pos) {
+        if ( !$this->sum_pageTitle ) {
+            $this->info['sum_pagetitle'] = $text;
+            $this->sum_pageTitle = true;
+        }
+        $this->doc .= DOKU_LF.'<h'.$level.'>';
+        $this->doc .= $this->_xmlEntities($text);
+        $this->doc .= "</h$level>".DOKU_LF;
+    }
+
+    function section_open($level) {
+        if ( $this->sum_capture ) {
+            $this->sum_inSection = true;
+        }
+    }
+
+    function section_close() {
+        if ( $this->sum_capture && $this->sum_inSection ) {
+            $this->sum_summary .= $this->doc;
+            $this->sum_capture = false;
+        }
+    }
+
+    function p_open() {
+        if ( $this->sum_capture && $this->sum_paragraphs < 2 ) {
+            $this->sum_paragraphs++;
+        }
+        parent :: p_open();
+    }
+
+    function p_close() {
+        parent :: p_close();
+        if ( $this->sum_capture && $this->sum_paragraphs >= 2 ) {
+            $this->sum_summary .= $this->doc;
+            $this->sum_capture = false;
+        }
+    }
+
+}
+
+
+//Setup VIM: ex: et ts=2 :