X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/0017d477fca613825981de879b2bd219bef177c5..800198cfc2a5731b44eaf8f3b28eeca6b532cc35:/doc/todo/supporting_comments_via_disussion_pages.mdwn?ds=inline diff --git a/doc/todo/supporting_comments_via_disussion_pages.mdwn b/doc/todo/supporting_comments_via_disussion_pages.mdwn index 4f2096594..e1f4f2786 100644 --- a/doc/todo/supporting_comments_via_disussion_pages.mdwn +++ b/doc/todo/supporting_comments_via_disussion_pages.mdwn @@ -1,4 +1,7 @@ -I would love to see more traditional support for comments in ikiwiki. One way would be to structure data on the discussion page in such a way that a "comment" plugin could parse it and yet the discussion page would still be a valid and usable wiki page. +I would love to see more traditional support for comments in ikiwiki. One +way would be to structure data on the discussion page in such a way that a +"comment" plugin could parse it and yet the discussion page would still be +a valid and usable wiki page. For example if the discussion page looked like this: @@ -16,7 +19,9 @@ For example if the discussion page looked like this: mauris ut felis. Vestibulum risus nibh, adipiscing volutpat, volutpat et, lacinia ut, pede. Maecenas dolor. Vivamus feugiat volutpat ligula. -Each header marks the start of a new comment and the line immediately following is the comments meta data (author, email/url, datestamp). Hopefully you could structure it in such a way that the scope +Each header marks the start of a new comment and the line immediately +following is the comments meta data (author, email/url, datestamp). +Hopefully you could structure it in such a way that the scope This would allow: @@ -28,4 +33,94 @@ This would allow: Is this simple enough to be sensible? --- [[AdamShand]] \ No newline at end of file +-- [[AdamShand]] + +> Well, if it's going to look like a blog, why not store the data the same +> way ikiwiki stores blogs, with a separate page per comment? As already +> suggested in [[discussion_page_as_blog]] though there are some things to +> be worked out also discussed there. +> --[[Joey]] + +>> I certainly won't be fussy about how it gets implemented, I was just trying to think of the lightest weight most "wiki" solution. :-) -- Adam. + +>>> As a side note, the feature described above (having a form not to add a page but to expand it in a formated way) would be useful for other things when the content is short (timetracking, sub-todo list items, etc..) --[[hb]] + +I've been looking into this. I'd like to implement a "blogcomments" +plugin. Looking at the code, I think the way to go is to have a +formbuilder_setup hook that uses a different template instead of the +standard editpage one. That template would not display the editcontent +field. The problem that I'm running into is that I need to append the new +content to the old one. + +-- [[MarceloMagallon]] + +> Anything I can do to help? --[[Joey]] + +>> Figured it out. Can you comment on the code below? Thanks. -- [[MarceloMagallon]] + + sub formbuilder_setup (@) { #{{{ + my %params=@_; + my $cgi = $params{cgi}; + my $form = $params{form}; + my $session = $params{session}; + + # XXX: This needs something to make it blog specific + unless ($cgi->param('page') =~ m{/discussion$} && + $cgi->param('do') eq 'edit' && + ! defined $form->{title}) + { + return; + } + + $form->template(IkiWiki::template_file("makeblogcomment.tmpl")); + $form->field(name => "blogcomment", type => "textarea", rows => 20, + cols => 80); + + my ($page)=$form->field('page'); + my $content=""; + if (exists $pagesources{$page}) { + $content=readfile(srcfile($pagesources{$page})); + $content.="\n\n"; + } + $content.="----\n\n"; + my $name=$session->param('name'); + $name||="Anonymous"; + $content.=sprintf(gettext("From: %s\n\n"), $name); + $content.=sprintf(gettext("Date: %s\n\n"), scalar(localtime)); + if (defined $cgi->param('comments')) + { + $content.=sprintf(gettext("Subject: %s\n\n"), + $cgi->param('comments')); + } + $content.=$cgi->param('blogcomment'); + $content=~s/\n/\r\n/g; + $form->field(name => "editcontent", value => $content, force => 1); + } # }}} + +The above produces a page that looks like this: + + From: Marcelo + + Date: Fri Apr 27 21:16:27 2007 + + Subject: Pi + + 3.14 + + ---- + + From: Marcelo + + Date: Fri Apr 27 21:20:21 2007 + + Subject: + + A comment... + +Questions: + + * Notice how this assumes that the page it's writing to is in mdwn format. + + * What to do about the bit marked XXX? + + * What about special formatting? Is mdwn enough?