4 * Copyright (C) 2004 $ThePhpWikiProgrammingTeam
6 * This file is part of PhpWiki.
8 * PhpWiki is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation; either version 2 of the License, or
11 * (at your option) any later version.
13 * PhpWiki is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
18 * You should have received a copy of the GNU General Public License along
19 * with PhpWiki; if not, write to the Free Software Foundation, Inc.,
20 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
24 * This plugin allows user comments attached to a page, similar to WikiBlog.
25 * Based on WikiBlog, no summary.
28 * For admin user, put checkboxes beside comments to allow for bulk removal.
33 include_once 'lib/plugin/WikiBlog.php';
35 class WikiPlugin_AddComment
36 extends WikiPlugin_WikiBlog
40 return _("AddComment");
43 function getDescription()
45 return sprintf(_("Show and add comments for %s."), '[pagename]');
50 // page - page where the comment is attached at (default current page)
52 // order - 'normal' - place in chronological order
53 // - 'reverse' - place in reverse chronological order
55 // mode - 'show' - only show old comments
56 // 'add' - only show entry box for new comment
57 // 'show,add' - show old comments, then entry box
58 // 'add,show' - show entry box followed by list of comments
59 // jshide - boolean - quick javascript expansion of the comments
62 function getDefaultArguments()
64 return array('pagename' => '[pagename]',
69 //'sortby' => '-pagename' // oldest first. reverse by order=reverse
73 function run($dbi, $argstr, &$request, $basepage)
75 $args = $this->getArgs($argstr, $request);
76 if (!$args['pagename']) {
77 return $this->error(sprintf(_("A required argument ā%sā is missing."), 'pagename'));
81 $comment = $request->getArg("comment");
82 $request->setArg('comment', false);
84 if ($request->isPost() and !empty($comment['addcomment'])) {
85 $this->add($request, $comment, 'comment'); // noreturn
88 // Now we display previous comments and/or provide entry box
91 if ($args['jshide']) {
92 $div = HTML::div(array('id' => 'comments', 'style' => 'display:none;'));
93 //$list->setAttr('style','display:none;');
94 $div->pushContent(Javascript("
95 function togglecomments(a) {
96 comments=document.getElementById('comments');
97 if (comments.style.display=='none') {
98 comments.style.display='block';
99 a.title='" . _("Click to hide the comments") . "';
101 comments.style.display='none';
102 a.title='" . _("Click to display all comments") . "';
105 $html->pushContent(HTML::h4(HTML::a(array('name' => 'comment-header',
106 'class' => 'wikiaction',
107 'title' => _("Click to display"),
108 'onclick' => "togglecomments(this)"),
111 $div = HTML::div(array('id' => 'comments'));
113 foreach (explode(',', $args['mode']) as $show) {
114 if (!empty($seen[$show]))
119 $show = $this->showAll($request, $args, 'comment');
120 //if ($args['jshide']) $show->setAttr('style','display:none;');
121 $div->pushContent($show);
125 if (!$WikiTheme->DUMP_MODE) {
126 $add = $this->showForm($request, $args, 'addcomment');
127 //if ($args['jshide']) $add->setAttr('style','display:none;');
128 $div->pushContent($add);
132 return $this->error(sprintf("Bad mode (ā%sā)", $show));
135 $html->pushContent($div);
145 // c-hanging-comment-ender-p: nil
146 // indent-tabs-mode: nil