X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/dc8a7dbfc97a8b6266bc3725aca503033a78607f..f02672c113813c37a659991ae984a2368e15b8db:/doc/todo/Default_text_for_new_pages.mdwn diff --git a/doc/todo/Default_text_for_new_pages.mdwn b/doc/todo/Default_text_for_new_pages.mdwn index 027160d00..a904f8287 100644 --- a/doc/todo/Default_text_for_new_pages.mdwn +++ b/doc/todo/Default_text_for_new_pages.mdwn @@ -4,5 +4,101 @@ 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 @@ + + + + + + + + + + + + + +--- + +Perhaps I'm misunderstanding something, but can't you use already existing +in-house means instead of this patch; use a procedure as I do in the Hurd wiki? + with one template: +. +-- [[tschwinge]] + +> You are entirely correct. I thought I'd seen it somewhere, but then couldn't +> find it when I came to use it. If the patch isn't applied (and I can see arguments +> on both sides of that debate), then at least a pointer to +> [[ikiwiki/directive/edittemplate]] should be added to [[ikiwiki/directive/inline]] +> (and I'd make that change myself, but the edit needs to happen in the underlay, +> not in the online docs). -- [[Will]] + +>> Go ahead and make the edit, ikiwiki's source is arranged such that edits +>> on this wiki to files that form the underlay will affect the underlay. +>> (Clearly I won't be adding duplicate functionality.) +>> --[[Joey]] + +>>> Edit made. [[done]] -- [[Will]]