From 506ae684bcf1ce877f4b74e255056d17161e4cc0 Mon Sep 17 00:00:00 2001 From: andi <andi@splitbrain.org> Date: Sun, 24 Apr 2005 15:29:22 +0200 Subject: [PATCH] finally valid XHTML again darcs-hash:20050424132922-9977f-5e9acbeae431ca1c605169829e580bf094a09ef9.gz --- inc/geshi/java.php | 4 ++-- inc/html.php | 5 ++--- inc/parser/handler.php | 42 +++++++++++++++++++++++++++++++++++------- inc/parser/parser.php | 5 +++-- inc/parser/xhtml.php | 6 +++++- inc/parserutils.php | 4 +++- tpl/default/main.php | 4 ++-- tpl/default/media.php | 3 ++- 8 files changed, 54 insertions(+), 19 deletions(-) diff --git a/inc/geshi/java.php b/inc/geshi/java.php index 045f14afd..7a8ea2f92 100644 --- a/inc/geshi/java.php +++ b/inc/geshi/java.php @@ -1382,7 +1382,7 @@ $language_data = array ( 'URLS' => array( 1 => '', 2 => '', - 3 => 'http://www.google.com/search?q=allinurl%3A{FNAME}+java.sun.com&bntl=1', + 3 => 'http://www.google.com/search?q=allinurl%3A{FNAME}+java.sun.com&bntl=1', 4 => '' ), 'OOLANG' => true, @@ -1399,4 +1399,4 @@ $language_data = array ( ) ); -?> \ No newline at end of file +?> diff --git a/inc/html.php b/inc/html.php index 8f717f8c4..efcc7e15a 100644 --- a/inc/html.php +++ b/inc/html.php @@ -125,14 +125,14 @@ function html_secedit_button($section,$p){ global $ID; global $lang; $secedit = ''; - if($p) $secedit .= "</p>\n"; +# if($p) $secedit .= "</p>\n"; $secedit .= '<div class="secedit">'; $secedit .= html_btn('secedit',$ID,'', array('do' => 'edit', 'lines' => "$section"), 'post'); $secedit .= '</div>'; - if($p) $secedit .= "\n<p>"; +# if($p) $secedit .= "\n<p>"; return $secedit; } @@ -153,7 +153,6 @@ function html_secedit($text,$show=true){ }else{ $text = preg_replace('#<!-- SECTION \[(\d*-\d*)\] -->#e','',$text); } - $text = preg_replace('@<p>\s*</p>@', '', $text); return $text; } diff --git a/inc/parser/handler.php b/inc/parser/handler.php index 23c830abf..17429e69a 100644 --- a/inc/parser/handler.php +++ b/inc/parser/handler.php @@ -1185,7 +1185,29 @@ class Doku_Handler_Block { var $stackClose = array( 'footnote_close','section_close', ); - + + function closeParagraph($pos){ + // look back if there was any content - we don't want empty paragraphs + $content = ''; + for($i=count($this->calls)-1; $i>=0; $i--){ + if($this->calls[$i][0] == 'p_open'){ + break; + }elseif($this->calls[$i][0] == 'cdata'){ + $content .= $this->calls[$i][1][0]; + }else{ + $content = 'found markup'; + break; + } + } + + if(trim($content)==''){ + //remove the whole paragraph + array_splice($this->calls,$i); + }else{ + $this->calls[] = array('p_close',array(), $pos); + } + } + function process($calls) { foreach ( $calls as $key => $call ) { @@ -1212,7 +1234,8 @@ class Doku_Handler_Block { if ( in_array($call[0],$this->stackClose ) ) { if ( $this->inParagraph ) { - $this->calls[] = array('p_close',array(), $call[2]); + //$this->calls[] = array('p_close',array(), $call[2]); + $this->closeParagraph($call[2]); } $this->calls[] = $call; $this->removeFromStack(); @@ -1238,7 +1261,8 @@ class Doku_Handler_Block { if ( isset($calls[$key+1]) && $calls[$key+1][0] == 'eol' ) { if ( $this->inParagraph ) { - $this->calls[] = array('p_close',array(), $call[2]); + //$this->calls[] = array('p_close',array(), $call[2]); + $this->closeParagraph($call[2]); } $this->calls[] = array('p_open',array(), $call[2]); @@ -1260,7 +1284,8 @@ class Doku_Handler_Block { $storeCall = TRUE; if ( $this->inParagraph && in_array($call[0], $this->blockOpen) ) { - $this->calls[] = array('p_close',array(), $call[2]); + //$this->calls[] = array('p_close',array(), $call[2]); + $this->closeParagraph($call[2]); $this->inParagraph = FALSE; $this->calls[] = $call; $storeCall = FALSE; @@ -1268,7 +1293,8 @@ class Doku_Handler_Block { if ( in_array($call[0], $this->blockClose) ) { if ( $this->inParagraph ) { - $this->calls[] = array('p_close',array(), $call[2]); + //$this->calls[] = array('p_close',array(), $call[2]); + $this->closeParagraph($call[2]); $this->inParagraph = FALSE; } if ( $storeCall ) { @@ -1320,10 +1346,12 @@ class Doku_Handler_Block { // Ditch the last call array_pop($this->calls); } else if ( !in_array($call[0], $this->blockClose) ) { - $this->calls[] = array('p_close',array(), $call[2]); + //$this->calls[] = array('p_close',array(), $call[2]); + $this->closeParagraph($call[2]); } else { $last_call = array_pop($this->calls); - $this->calls[] = array('p_close',array(), $call[2]); + //$this->calls[] = array('p_close',array(), $call[2]); + $this->closeParagraph($call[2]); $this->calls[] = $last_call; } } diff --git a/inc/parser/parser.php b/inc/parser/parser.php index 23f2c13d7..d66ed5cca 100644 --- a/inc/parser/parser.php +++ b/inc/parser/parser.php @@ -165,10 +165,11 @@ class Doku_Parser_Mode_Footnote extends Doku_Parser_Mode { class Doku_Parser_Mode_Header extends Doku_Parser_Mode { function preConnect() { + //we're not picky about the closing ones, two are enough // Header 1 is special case - match 6 or more $this->Lexer->addSpecialPattern( - '[ \t]*={6,}[^\n]+={6,}[ \t]*\n', + '[ \t]*={6,}[^\n]+={2,}[ \t]*\n', 'base', 'header' ); @@ -176,7 +177,7 @@ class Doku_Parser_Mode_Header extends Doku_Parser_Mode { // For the rest, match exactly for ( $i = 5; $i > 1; $i--) { $this->Lexer->addSpecialPattern( - '[ \t]*={'.$i.'}[^\n]+={'.$i.'}[ \t]*\n', + '[ \t]*={'.$i.'}[^\n]+={2,}[ \t]*\n', 'base', 'header' ); diff --git a/inc/parser/xhtml.php b/inc/parser/xhtml.php index 70a8c7830..37cd36cf3 100644 --- a/inc/parser/xhtml.php +++ b/inc/parser/xhtml.php @@ -750,8 +750,12 @@ class Doku_Renderer_xhtml extends Doku_Renderer { $ret .= ' class="media'.$align.'"'; - if (!is_null($title)) + if (!is_null($title)) { $ret .= ' title="'.$this->_xmlEntities($title).'"'; + $ret .= ' alt="'.$this->_xmlEntities($title).'"'; + }else{ + $ret .= ' alt=""'; + } if ( !is_null($width) ) $ret .= ' width="'.$this->_xmlEntities($width).'"'; diff --git a/inc/parserutils.php b/inc/parserutils.php index fd66c3f1e..a2d750099 100644 --- a/inc/parserutils.php +++ b/inc/parserutils.php @@ -213,7 +213,9 @@ function p_get_instructions($text){ $Parser->addMode('eol',new Doku_Parser_Mode_Eol()); // Do the parsing - return $Parser->parse($text); + $parsed = $Parser->parse($text); +# dbg($parsed); + return $parsed; } /** diff --git a/tpl/default/main.php b/tpl/default/main.php index 13274154d..35fd97713 100644 --- a/tpl/default/main.php +++ b/tpl/default/main.php @@ -1,5 +1,5 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" - "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <? /** * DokuWiki Default Template diff --git a/tpl/default/media.php b/tpl/default/media.php index 6509bdb5a..ccd140cd7 100644 --- a/tpl/default/media.php +++ b/tpl/default/media.php @@ -1,4 +1,5 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <? /** * DokuWiki Default Template -- GitLab