diff --git a/doc/todo/Default_text_for_new_pages.mdwn b/doc/todo/Default_text_for_new_pages.mdwn
index 027160d00..c5168f49c 100644
--- a/doc/todo/Default_text_for_new_pages.mdwn
+++ b/doc/todo/Default_text_for_new_pages.mdwn
@@ -4,5 +4,79 @@ For example:
\[[!inline pages="blog/* and !*/Discussion" postform="yes" newposttemplate="blogtemplate.mdwn"]]
-This would allow you to create a new blog post. When you hit the 'Edit' button, the system presents
+This would allow you to create a new blog post. When you hit the `Edit` button, the system presents
you with an edit form as normal, but rather than being empty, it has the text from `blogtemplate.mdwn`.
+
+Inline below is a [[patch]] that implements this:
+
+----
+
+ diff --git a/IkiWiki/Plugin/editpage.pm b/IkiWiki/Plugin/editpage.pm
+ index bb21ed2..10c985c 100644
+ --- a/IkiWiki/Plugin/editpage.pm
+ +++ b/IkiWiki/Plugin/editpage.pm
+ @@ -60,7 +60,7 @@ sub cgi_editpage ($$) { #{{{
+
+ decode_cgi_utf8($q);
+
+ - my @fields=qw(do rcsinfo subpage from page type editcontent comments);
+ + my @fields=qw(do rcsinfo subpage from page type editcontent comments templatepage);
+ my @buttons=("Save Page", "Preview", "Cancel");
+ eval q{use CGI::FormBuilder};
+ error($@) if $@;
+ @@ -117,9 +117,20 @@ sub cgi_editpage ($$) { #{{{
+ }
+ else {
+ $type=$form->param('type');
+ +
+ + my $defaultContent = "";
+ + my $templatepage = $form->param('templatepage');
+ + if ($templatepage && $pagesources{$templatepage}) {
+ + $defaultContent = readfile(IkiWiki::srcfile($pagesources{$templatepage}));
+ + }
+ +
+ if (defined $type && length $type && $hooks{htmlize}{$type}) {
+ $type=possibly_foolish_untaint($type);
+ }
+ + elsif ($templatepage && $pagesources{$templatepage}) {
+ + # favor the type of the template page
+ + $type=pagetype($pagesources{$templatepage});
+ + }
+ elsif (defined $from && exists $pagesources{$from}) {
+ # favor the type of linking page
+ $type=pagetype($pagesources{$from});
+ @@ -129,7 +140,7 @@ sub cgi_editpage ($$) { #{{{
+ if (! $form->submitted) {
+ $form->field(name => "rcsinfo", value => "", force => 1);
+ }
+ - $form->field(name => "editcontent", validate => '/.+/');
+ + $form->field(name => "editcontent", value => $defaultContent, force => 0, validate => '/.+/');
+ }
+
+ $form->field(name => "do", type => 'hidden');
+ diff --git a/IkiWiki/Plugin/inline.pm b/IkiWiki/Plugin/inline.pm
+ index 8efef3f..075d7d8 100644
+ --- a/IkiWiki/Plugin/inline.pm
+ +++ b/IkiWiki/Plugin/inline.pm
+ @@ -271,6 +271,7 @@ sub preprocess_inline (@) { #{{{
+ $rootpage=$params{page};
+ }
+ $formtemplate->param(rootpage => $rootpage);
+ + $formtemplate->param(templatepage => $params{newposttemplate}) if $params{newposttemplate};
+ $formtemplate->param(rssurl => $rssurl) if $feeds && $rss;
+ $formtemplate->param(atomurl => $atomurl) if $feeds && $atom;
+ if (exists $params{postformtext}) {
+ diff --git a/templates/blogpost.tmpl b/templates/blogpost.tmpl
+ index 7eeede6..5c8b34c 100644
+ --- a/templates/blogpost.tmpl
+ +++ b/templates/blogpost.tmpl
+ @@ -8,6 +8,9 @@
+
+
+
+ +
+ +
+ +
+
+
+