diff options
author | joey <joey@0fa5a96a-9a0e-0410-b3b2-a0fd24251071> | 2006-03-29 03:18:21 +0000 |
---|---|---|
committer | joey <joey@0fa5a96a-9a0e-0410-b3b2-a0fd24251071> | 2006-03-29 03:18:21 +0000 |
commit | e41dd1e24e345c974fe4a070088f0d09d1b6ddac (patch) | |
tree | 1e38ae17bb30573304f633ae9fe19dbf4935f562 | |
parent | bfe959167a9bad17cc23f9f8e9920aa2f2eaec1c (diff) |
html validation fixes:
- escape & in urls (also clean up cgi url generation)
- since markdown wraps inlined pages in <p></p>, close and re-open
the paragraph tags when generating the embedded html
- added XHTML 1.0 doctypes to templates
- fixed <hr /> and <br /> in templates
- add an alt attribute to inline images, based on the WikiLink to the
image. Allows things like [[my_image|img.png]] to customise alt text.
-rw-r--r-- | IkiWiki/CGI.pm | 13 | ||||
-rw-r--r-- | IkiWiki/Render.pm | 8 | ||||
-rw-r--r-- | doc/todo/html.mdwn | 31 | ||||
-rwxr-xr-x | ikiwiki | 12 | ||||
-rw-r--r-- | templates/blogpost.tmpl | 4 | ||||
-rw-r--r-- | templates/editpage.tmpl | 12 | ||||
-rw-r--r-- | templates/misc.tmpl | 2 | ||||
-rw-r--r-- | templates/page.tmpl | 8 | ||||
-rw-r--r-- | templates/recentchanges.tmpl | 8 |
9 files changed, 71 insertions, 27 deletions
diff --git a/IkiWiki/CGI.pm b/IkiWiki/CGI.pm index 7c12bee5b..52da67b9a 100644 --- a/IkiWiki/CGI.pm +++ b/IkiWiki/CGI.pm @@ -144,12 +144,13 @@ sub cgi_signin ($$) { #{{{ $session->param("name", $form->field("name")); if (defined $form->field("do") && $form->field("do") ne 'signin') { - print $q->redirect( - "$config{cgiurl}?do=".$form->field("do"). - "&page=".$form->field("page"). - "&title=".$form->field("title"). - "&subpage=".$form->field("subpage"). - "&from=".$form->field("from"));; + print $q->redirect(cgiurl( + do => $form->field("do"), + page => $form->field("page"), + title => $form->field("title"), + subpage => $form->field("subpage"), + from => $form->field("from"), + )); } else { print $q->redirect($config{url}); diff --git a/IkiWiki/Render.pm b/IkiWiki/Render.pm index f897b9b13..1fc047a62 100644 --- a/IkiWiki/Render.pm +++ b/IkiWiki/Render.pm @@ -186,7 +186,7 @@ sub postprocess_html_inline { #{{{ $ret.=$template->output; } - return $ret; + return "</p>$ret<p>"; } #}}} sub genpage ($$$) { #{{{ @@ -202,10 +202,10 @@ sub genpage ($$$) { #{{{ filename => "$config{templatedir}/page.tmpl"); if (length $config{cgiurl}) { - $template->param(editurl => "$config{cgiurl}?do=edit&page=$page"); - $template->param(prefsurl => "$config{cgiurl}?do=prefs"); + $template->param(editurl => cgiurl(do => "edit", page => $page)); + $template->param(prefsurl => cgiurl(do => "prefs")); if ($config{rcs}) { - $template->param(recentchangesurl => "$config{cgiurl}?do=recentchanges"); + $template->param(recentchangesurl => cgiurl(do => "recentchanges")); } } diff --git a/doc/todo/html.mdwn b/doc/todo/html.mdwn index ba167ea62..cb77774b5 100644 --- a/doc/todo/html.mdwn +++ b/doc/todo/html.mdwn @@ -6,8 +6,35 @@ editing the [[templates]] BTW. Current problems: - * A doctype should be added: do we want XHTML 1.0 or HTML 4.01 Trans as default? - * If XHTML: In templates <hr> should become <hr\> etc. + * A doctype should be added: do we want XHTML 1.0 or HTML 4.01 Trans as + default? + + Need to choose a doctype that corresponds to what [[MarkDown]] + generates. For example, it does generate <hr /> + So xhml seems a good fit and I'm going to add that to the + templates. + + One consideration of course is that regular users might embed html + that uses deprecated presentational elements like <center>. + --[[Joey]] + + * If XHTML: In templates <hr> should become <hr /> etc. * Image wikilinks should provide an alt text (maybe '$filname wiki-image'?). + + Now it will be the text of the [[WikiLink]], which even allows + setting a custom alt text like this: \[[my_alt_text|image.png]] + --[[Joey]] + * &'s in (cgi-)url's must be escaped as &amp;. + + Fixed --[[Joey]] + * [ [inlinepage] ] gets wrapped in <p>...</p> which has a high chance of invalidating the page. + + Since markdown does this, the only way I can think to fix it is to + make the inlined page text start with </p> and end with + <p>. Ugly, and of course there could be problems with + markdown enclosing it in other spanning tags in some cases. + I've implemented this hack now. :-/ --[[Joey]] + +Test: [validate this page](http://validator.w3.org/check?url=referer) @@ -259,6 +259,12 @@ sub titlepage ($) { #{{{ return $title; } #}}} +sub cgiurl (@) { #{{{ + my %params=@_; + + return $config{cgiurl}."?".join("&", map "$_=$params{$_}", keys %params); +} #}}} + sub htmllink ($$;$$$) { #{{{ my $page=shift; my $link=shift; @@ -286,13 +292,15 @@ sub htmllink ($$;$$$) { #{{{ $bestlink=htmlpage($bestlink); } if (! grep { $_ eq $bestlink } values %renderedfiles) { - return "<span><a href=\"$config{cgiurl}?do=create&page=$link&from=$page\">?</a>$linktext</span>" + return "<span><a href=\"". + cgiurl(do => "create", page => $link, from =>$page). + "\">?</a>$linktext</span>" } $bestlink=File::Spec->abs2rel($bestlink, dirname($page)); if (! $noimageinline && isinlinableimage($bestlink)) { - return "<img src=\"$bestlink\">"; + return "<img src=\"$bestlink\" alt=\"$linktext\">"; } return "<a href=\"$bestlink\">$linktext</a>"; } #}}} diff --git a/templates/blogpost.tmpl b/templates/blogpost.tmpl index 5ded359a1..8e4bb6a7d 100644 --- a/templates/blogpost.tmpl +++ b/templates/blogpost.tmpl @@ -1,4 +1,4 @@ -<hr> +<hr /> <form action="<TMPL_VAR CGIURL>" method="GET"> <input type="hidden" name="do" value="blog"> <input type="hidden" name="from" value="<TMPL_VAR ROOTPAGE>"> @@ -6,4 +6,4 @@ Add a new post titled: <input name=title size=40> <input type="submit" value="Edit"> </form> -<hr> +<hr /> diff --git a/templates/editpage.tmpl b/templates/editpage.tmpl index c1e7113b4..f77f45036 100644 --- a/templates/editpage.tmpl +++ b/templates/editpage.tmpl @@ -1,3 +1,5 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html> <head><title><TMPL_VAR FORM-TITLE></title></head> <body> @@ -16,18 +18,18 @@ confict and commit again to save your changes. <TMPL_VAR FIELD-FROM> <TMPL_VAR FIELD-RCSINFO> <TMPL_IF NAME="PAGE_SELECT"> -Page location: <TMPL_VAR FIELD-PAGE><br> +Page location: <TMPL_VAR FIELD-PAGE><br /> <TMPL_ELSE> <TMPL_VAR FIELD-PAGE> </TMPL_IF> -<TMPL_VAR FIELD-CONTENT><br> +<TMPL_VAR FIELD-CONTENT><br /> <TMPL_IF NAME="CAN_COMMIT"> -Optional comment about this change:</br> -<TMPL_VAR FIELD-COMMENTS><br> +Optional comment about this change:<br /> +<TMPL_VAR FIELD-COMMENTS><br /> </TMPL_IF> <TMPL_VAR FORM-SUBMIT> <TMPL_VAR FORM-END> -<hr> +<hr /> <TMPL_IF NAME="PAGE_PREVIEW"> <h1>Page preview:</h1> <TMPL_VAR PAGE_PREVIEW> diff --git a/templates/misc.tmpl b/templates/misc.tmpl index a8ee1684b..3e78c3162 100644 --- a/templates/misc.tmpl +++ b/templates/misc.tmpl @@ -1,3 +1,5 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html> <head><title><TMPL_VAR TITLE></title></head> <body> diff --git a/templates/page.tmpl b/templates/page.tmpl index 468361a9d..9cef35dc6 100644 --- a/templates/page.tmpl +++ b/templates/page.tmpl @@ -1,3 +1,5 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html> <head><title><TMPL_VAR TITLE></title></head> <body> @@ -25,11 +27,11 @@ <a href="<TMPL_VAR PREFSURL>">Preferences</a> </TMPL_IF> -<TMPL_VAR DISCUSSIONLINK><br> +<TMPL_VAR DISCUSSIONLINK><br /> -<hr> +<hr /> <TMPL_VAR CONTENT> -<hr> +<hr /> <TMPL_IF NAME="BACKLINKS"> <p>Links: diff --git a/templates/recentchanges.tmpl b/templates/recentchanges.tmpl index b42975e95..4ab53b892 100644 --- a/templates/recentchanges.tmpl +++ b/templates/recentchanges.tmpl @@ -1,3 +1,5 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html> <head><title><TMPL_VAR TITLE></title></head> <body> @@ -6,7 +8,7 @@ <TMPL_VAR INDEXLINK>/ <TMPL_VAR TITLE> </h1> -<hr> +<hr /> <ul> <TMPL_LOOP NAME="CHANGELOG"> @@ -17,13 +19,13 @@ (<a href="<TMPL_VAR NAME="DIFFURL">">diff</a>) </TMPL_IF> </TMPL_LOOP> - <br> + <br /> <!-- <TMPL_VAR NAME="COMMITTYPE"> --> changed <TMPL_VAR NAME="WHEN"> by <TMPL_VAR NAME="USER">: <i> <TMPL_LOOP NAME="MESSAGE"> <TMPL_IF NAME="LINE"> - <TMPL_VAR NAME="LINE"><br> + <TMPL_VAR NAME="LINE"><br /> </TMPL_IF> </TMPL_LOOP> </i> |