aboutsummaryrefslogtreecommitdiff
path: root/doc/bugs/RecentChanges_contains_invalid_XHTML.mdwn
blob: 302d7b60562cb4302548bed354a48d1ebd740b3e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
The final `</div>` in [`recentchanges.tmpl`][tmpl] gets wrapped in a
`<p>` tag for some reason, resulting in the following invalid XHTML at
the end of the [[RecentChanges]] page

    <p></div></p>

Also, there is a problem with the `<img>` tags generated by the smiley
plugin which end up wrapped in a `<pre>` tag in the inline diff output.
`<img>` tags is not allowed within a `<pre>` block.  Maybe the smiley
plugin should be disabled on [[RecentChanges]]?

See the [validator output][validate] for more details.

 [tmpl]: http://git.ikiwiki.info/?p=ikiwiki;a=blob_plain;f=templates/recentchanges.tmpl;hb=HEAD
 [validate]: http://validator.w3.org/check?uri=http://ikiwiki.info/recentchanges/

- - -

I'll add this here since it's related.  I also noticed that the meta tags for
redirected pages need to be closed in order to be valid XHTML:

    <meta http-equiv="refresh" content="10; URL=../ikiwiki/pagespec/">

I'm noticing these problems because I'm serving ikiwiki-generated
content as `application/xhtml+xml` (as opposed to `text/html`) in order
to include inline MathML.  Any invalid XHTML causes Firefox to halt all
processing and throw an error. &mdash;[Jason Blevins](http://jblevins.org/)

- - -

Here is a simple patch for the refresh problem.  I haven't figured out
what's causing the recentchanges bug yet.


    diff --git a/IkiWiki/Plugin/meta.pm b/IkiWiki/Plugin/meta.pm
    index 8a9a538..0afe1c3 100644
    --- a/IkiWiki/Plugin/meta.pm
    +++ b/IkiWiki/Plugin/meta.pm
    @@ -186,7 +186,7 @@ sub preprocess (@) { #{{{
     			$value=encode_entities($value);
     		}
     		my $delay=int(exists $params{delay} ? $params{delay} : 0);
    -		my $redir="<meta http-equiv=\"refresh\" content=\"$delay; URL=$value\">";
    +		my $redir="<meta http-equiv=\"refresh\" content=\"$delay; URL=$value\" />";
     		if (! $safe) {
     			$redir=scrub($redir);
     		}


--[[JasonBlevins]]

[[tag patch]]