diff options
author | Gerrit Uitslag <klapinklapin@gmail.com> | 2013-10-17 23:11:33 +0200 |
---|---|---|
committer | Gerrit Uitslag <klapinklapin@gmail.com> | 2013-10-17 23:11:33 +0200 |
commit | f05a1cc5fcdb4c2b6ee3cbf499f980f800dbd105 (patch) | |
tree | ace0cef0ea269a14b0879dd351f14d841925c306 /inc | |
parent | a467e020fa551217347181ffd6915c7d29e6ff59 (diff) | |
download | rpg-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')
-rw-r--r-- | inc/parser/handler.php | 19 | ||||
-rw-r--r-- | inc/parser/renderer.php | 4 | ||||
-rw-r--r-- | inc/parser/xhtml.php | 8 |
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; |