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.master
parent
bfe959167a
commit
e41dd1e24e
|
@ -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});
|
||||
|
|
|
@ -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"));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
12
ikiwiki
12
ikiwiki
|
@ -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>";
|
||||
} #}}}
|
||||
|
|
|
@ -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 />
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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>
|
||||
|
|
Loading…
Reference in New Issue