]> git.vanrenterghem.biz Git - git.ikiwiki.info.git/blobdiff - doc/todo/supporting_comments_via_disussion_pages.mdwn
web commit by JoshTriplett: Expand on "Improved [[todo/html]] stylesheets and templates."
[git.ikiwiki.info.git] / doc / todo / supporting_comments_via_disussion_pages.mdwn
index 4f2096594413d1df70aca8260645d1fb88064aab..e1f4f278675e58e95cf3db5c11e0cb6d0d04b8df 100644 (file)
@@ -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?