From 028f9a7b1defefbec67c55b5f146960c022c87e0 Mon Sep 17 00:00:00 2001 From: Zach Copley Date: Fri, 13 Aug 2010 20:52:05 +0000 Subject: [PATCH] A plugin for adding the Echo (formerly JS-Kit) commenting widget to notice pages --- plugins/EchoPlugin.php | 154 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 154 insertions(+) create mode 100644 plugins/EchoPlugin.php diff --git a/plugins/EchoPlugin.php b/plugins/EchoPlugin.php new file mode 100644 index 0000000000..2ebfbceb33 --- /dev/null +++ b/plugins/EchoPlugin.php @@ -0,0 +1,154 @@ +. + * + * @category Plugin + * @package StatusNet + * @author Zach Copley + * @copyright 2010 StatusNet, Inc. + * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 + * @link http://status.net/ + */ + +if (!defined('STATUSNET')) { + exit(1); +} + +/** + * Plugin to use Echo (formerly JS-Kit) + * + * This plugin adds an Echo commenting widget to each notice page on + * your site. To get it to work, first you'll have to sign up for Echo + * (a commercial service) and register your site's URL. + * + * http://aboutecho.com/ + * + * Once you've done that it's pretty straight forward to turn the + * plugin on, just add: + * + * addPlugin('Echo'); + * + * to your config.php. The defaults should work OK with the default + * theme, but there are a lot of options to customize the look and + * feel of the comment widget. You can control both the CSS for the + * div that contains the widget, as well as the CSS for the widget + * itself via config parameters that can be passed into the plugin. + * See below for a more complex example: + * + * // Custom stylesheet for Echo commenting widget + * // See: http://wiki.js-kit.com/Skinning-Guide#UsingCSSnbsptocustomizefontsandcolors + * $stylesheet = << 'width:675px; padding-top:10px; position:relative; float:left;', + * // stylesheet is the CSS for the comment widget itself + * 'stylesheet' => $stylesheet + * ) + * ); + * + * @category Plugin + * @package StatusNet + * @author Zach Copley + * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 + * @link http://status.net/ + * + * @see Event + */ + +class EchoPlugin extends Plugin +{ + // NOTE: The Echo documentation says that this script will change on + // a per site basis, but I think that's incorrect. It always seems to + // be the same. + public $script = 'http://cdn.js-kit.com/scripts/comments.js'; + + function onEndShowScripts($action) + { + if (get_class($action) == 'ShownoticeAction') { + $action->script($this->script); + } + + return true; + } + + function onEndShowContentBlock($action) + { + if (get_class($action) == 'ShownoticeAction') { + + $attrs = array(); + $attrs['class'] = 'js-kit-comments'; + $attrs['permalink'] = $action->notice->uri; + $attrs['uniq'] = $action->notice->id; + + // NOTE: there are some other attributes that could be useful + // http://wiki.js-kit.com/Echo-Behavior + + if (empty($this->div_css)) { + // This CSS seems to work OK with the default theme + $attrs['style'] = 'width:675px; padding-top:10px; position:relative; float:left;'; + } else { + $attrs['style'] = $this->css; + } + + $action->element('div', $attrs, null); + } + } + + function onEndShowStyles($action) + { + if (get_class($action) == 'ShownoticeAction' && !empty($this->stylesheet)) { + $action->style($this->stylesheet); + } + } + + function onPluginVersion(&$versions) + { + $versions[] = array('name' => 'Echo', + 'version' => STATUSNET_VERSION, + 'author' => 'Zach Copley', + 'homepage' => 'http://status.net/wiki/Plugin:Echo', + 'rawdescription' => + _m('Use Echo'. + ' to add commenting to notice pages.')); + return true; + } +}