summaryrefslogtreecommitdiff
path: root/inc/parser
diff options
context:
space:
mode:
authorGerrit Uitslag <klapinklapin@gmail.com>2013-10-17 23:11:33 +0200
committerGerrit Uitslag <klapinklapin@gmail.com>2013-10-17 23:11:33 +0200
commitf05a1cc5fcdb4c2b6ee3cbf499f980f800dbd105 (patch)
treeace0cef0ea269a14b0879dd351f14d841925c306 /inc/parser
parenta467e020fa551217347181ffd6915c7d29e6ff59 (diff)
downloadrpg-f05a1cc5fcdb4c2b6ee3cbf499f980f800dbd105.tar.gz
rpg-f05a1cc5fcdb4c2b6ee3cbf499f980f800dbd105.tar.bz2
Wrap thead around 1st row, when 1st cell at 1st row is tableheader. Implements FS#1764
Diffstat (limited to 'inc/parser')
-rw-r--r--inc/parser/handler.php19
-rw-r--r--inc/parser/renderer.php4
-rw-r--r--inc/parser/xhtml.php8
3 files changed, 29 insertions, 2 deletions
diff --git a/inc/parser/handler.php b/inc/parser/handler.php
index 1de981b48..55f344994 100644
--- a/inc/parser/handler.php
+++ b/inc/parser/handler.php
@@ -1278,6 +1278,7 @@ class Doku_Handler_Table {
$lastRow = 0;
$lastCell = 0;
+ $isThead = false;
$cellKey = array();
$toDelete = array();
@@ -1292,6 +1293,14 @@ class Doku_Handler_Table {
$lastRow++;
$lastCell = 0;
+
+ if($lastRow === 1 && $this->tableCalls[$key+1][0] == 'tableheader_open') {
+ $isThead = true;
+
+ array_splice($this->tableCalls, $key, 0, array(
+ array('tablethead_open', array(), $call[2])));
+ $key += 1;
+ }
break;
case 'tablecell_open':
@@ -1396,6 +1405,12 @@ class Doku_Handler_Table {
$key += 3;
}
+ if($isThead) {
+ array_splice($this->tableCalls, $key+1, 0, array(
+ array('tablethead_close', array(), $call[2])));
+
+ $isThead = false;
+ }
break;
}
@@ -1437,7 +1452,7 @@ class Doku_Handler_Block {
var $blockOpen = array(
'header',
'listu_open','listo_open','listitem_open','listcontent_open',
- 'table_open','tablerow_open','tablecell_open','tableheader_open',
+ 'table_open','tablerow_open','tablecell_open','tableheader_open','tablethead_open',
'quote_open',
'code','file','hr','preformatted','rss',
'htmlblock','phpblock',
@@ -1447,7 +1462,7 @@ class Doku_Handler_Block {
var $blockClose = array(
'header',
'listu_close','listo_close','listitem_close','listcontent_close',
- 'table_close','tablerow_close','tablecell_close','tableheader_close',
+ 'table_close','tablerow_close','tablecell_close','tableheader_close','tablethead_close',
'quote_close',
'code','file','hr','preformatted','rss',
'htmlblock','phpblock',
diff --git a/inc/parser/renderer.php b/inc/parser/renderer.php
index c697e990c..ee0b2344d 100644
--- a/inc/parser/renderer.php
+++ b/inc/parser/renderer.php
@@ -245,6 +245,10 @@ class Doku_Renderer extends DokuWiki_Plugin {
function table_close($pos = null){}
+ function tablethead_open(){}
+
+ function tablethead_close(){}
+
function tablerow_open(){}
function tablerow_close(){}
diff --git a/inc/parser/xhtml.php b/inc/parser/xhtml.php
index fd02c0ce0..e9f2cc037 100644
--- a/inc/parser/xhtml.php
+++ b/inc/parser/xhtml.php
@@ -946,6 +946,14 @@ class Doku_Renderer_xhtml extends Doku_Renderer {
}
}
+ function tablethead_open(){
+ $this->doc .= DOKU_TAB . '<thead>' . DOKU_LF;
+ }
+
+ function tablethead_close(){
+ $this->doc .= DOKU_TAB . '</thead>' . DOKU_LF;
+ }
+
function tablerow_open(){
// initialize the cell counter used for classes
$this->_counter['cell_counter'] = 0;