summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjoey <joey@0fa5a96a-9a0e-0410-b3b2-a0fd24251071>2006-03-29 03:18:21 +0000
committerjoey <joey@0fa5a96a-9a0e-0410-b3b2-a0fd24251071>2006-03-29 03:18:21 +0000
commite41dd1e24e345c974fe4a070088f0d09d1b6ddac (patch)
tree1e38ae17bb30573304f633ae9fe19dbf4935f562
parentbfe959167a9bad17cc23f9f8e9920aa2f2eaec1c (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.pm13
-rw-r--r--IkiWiki/Render.pm8
-rw-r--r--doc/todo/html.mdwn31
-rwxr-xr-xikiwiki12
-rw-r--r--templates/blogpost.tmpl4
-rw-r--r--templates/editpage.tmpl12
-rw-r--r--templates/misc.tmpl2
-rw-r--r--templates/page.tmpl8
-rw-r--r--templates/recentchanges.tmpl8
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 &lt;hr&gt; should become &lt;hr\&gt; 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 &lt;hr /&gt;
+ 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 &lt;center&gt;.
+ --[[Joey]]
+
+ * If XHTML: In templates &lt;hr&gt; should become &lt;hr /&gt; 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;amp;.
+
+ Fixed --[[Joey]]
+
* [ [inlinepage] ] gets wrapped in &lt;p&gt;...&lt;/p&gt; 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 &lt;/p&gt; and end with
+ &lt;p&gt;. 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)
diff --git a/ikiwiki b/ikiwiki
index 44a7abaf4..62a9767b9 100755
--- a/ikiwiki
+++ b/ikiwiki
@@ -259,6 +259,12 @@ sub titlepage ($) { #{{{
return $title;
} #}}}
+sub cgiurl (@) { #{{{
+ my %params=@_;
+
+ return $config{cgiurl}."?".join("&amp;", 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>&nbsp;
</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>