]> 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:
 
 
 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.
 
     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:
 
 
 This would allow:
 
@@ -28,4 +33,94 @@ This would allow:
 
 Is this simple enough to be sensible?
 
 
 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?