From 614b12ea5188098b8260b3d2c58a59d327543562 Mon Sep 17 00:00:00 2001 From: Zach Copley Date: Fri, 13 Aug 2010 23:53:05 +0000 Subject: [PATCH 1/2] A plugin to add Disqus commenting to notice pages --- plugins/DisqusPlugin.php | 168 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 168 insertions(+) create mode 100644 plugins/DisqusPlugin.php diff --git a/plugins/DisqusPlugin.php b/plugins/DisqusPlugin.php new file mode 100644 index 0000000000..dfc1aa8b07 --- /dev/null +++ b/plugins/DisqusPlugin.php @@ -0,0 +1,168 @@ +. + * + * @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); +} + +/** + * + * This plugin adds Disqus commenting to your notices. Enabling this + * plugin will make each notice page display the Disqus widget, and + * notice lists will display the number of commments each notice has. + * + * To use this plugin, you need to first register your site with Disqus + * and get a Discus 'shortname' for it. + * + * http://disqus.com + * + * To enable the plugin, put the following in you config.php: + * + * addPlugin( + * 'Disqus', array( + * 'shortname' => 'YOURSHORTNAME', + * 'div_style' => 'width:675px; padding-top:10px; position:relative; float:left;' + * ) + * ); + * + * NOTE: the 'div_style' in an optional parameter that passes in some + * inline CSS when creating the Disqus widget. It's a shortcut to make + * the widget look OK with the the default StatusNet theme. If you leave + * it out you'll have to edit your theme CSS files to make the widget + * look good. + * + * @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 DisqusPlugin extends Plugin +{ + function onEndShowContentBlock($action) + { + if (get_class($action) == 'ShownoticeAction') { + + $attrs = array(); + $attrs['id'] = 'disqus_thread'; + + if ($this->div_style) { + $attrs['style'] = $this->div_style; + } + + $action->element('div', $attrs, null); + + $script = <<inlineScript(sprintf($script, $action->notice->id, $this->shortname)); + + $attrs = array(); + + $attrs['id'] = 'disqus_thread_footer'; + + if ($this->div_style) { + $attrs['style'] = $this->div_style; + } + + $action->elementStart('div', $attrs); + $action->elementStart('noscript'); + + $action->raw('Please enable JavaScript to view the '); + $noscriptUrl = 'http://disqus.com/?ref_noscript=' . $this->shortname; + $action->element('a', array('href' => $noscriptUrl), 'comments powered by Disqus.'); + $action->elementEnd('noscript'); + + $action->elementStart('a', array('href' => 'http://disqus.com', 'class' => 'dsq-brlink')); + $action->raw('blog comments powered by '); + $action->element('span', array('class' => 'logo-disqus'), 'Disqus'); + $action->elementEnd('a'); + $action->elementEnd('div'); + } + } + + function onEndShowScripts($action) + { + // fugly + $script = <<inlineScript(sprintf($script, $this->shortname, $this->shortname)); + + return true; + } + + function onStartShowNoticeItem($noticeListItem) + { + if (empty($noticeListItem->notice->is_local)) { + return true; + } + + $noticeListItem->showNotice(); + $noticeListItem->showNoticeInfo(); + + $noticeUrl = $noticeListItem->notice->bestUrl(); + $noticeUrl .= '#disqus_thread'; + + $noticeListItem->out->element( + 'a', array('href' => $noticeUrl, 'class' => 'disqus_count', 'Comments') + ); + + $noticeListItem->showNoticeOptions(); + Event::handle('EndShowNoticeItem', array($noticeListItem)); + + return false; + } + + function onPluginVersion(&$versions) + { + $versions[] = array('name' => 'Disqus', + 'version' => STATUSNET_VERSION, + 'author' => 'Zach Copley', + 'homepage' => 'http://status.net/wiki/Plugin:Disqus', + 'rawdescription' => + _m('Use Disqus'. + ' to add commenting to notice pages.')); + return true; + } +} From fa4b360ba0e360fdb738a3857830ef68fff7ed69 Mon Sep 17 00:00:00 2001 From: Zach Copley Date: Sat, 14 Aug 2010 00:07:12 +0000 Subject: [PATCH 2/2] - Remove extraneous style stuff from Echo plugin - that stuff should be handled via CSS in the theme. - Updated installation instructions on Echo and Disqus plugins --- plugins/DisqusPlugin.php | 7 +++-- plugins/EchoPlugin.php | 68 +++++++++------------------------------- 2 files changed, 20 insertions(+), 55 deletions(-) diff --git a/plugins/DisqusPlugin.php b/plugins/DisqusPlugin.php index dfc1aa8b07..dc56f320c3 100644 --- a/plugins/DisqusPlugin.php +++ b/plugins/DisqusPlugin.php @@ -53,9 +53,12 @@ if (!defined('STATUSNET')) { * * NOTE: the 'div_style' in an optional parameter that passes in some * inline CSS when creating the Disqus widget. It's a shortcut to make - * the widget look OK with the the default StatusNet theme. If you leave + * the widget look OK with the default StatusNet theme. If you leave * it out you'll have to edit your theme CSS files to make the widget - * look good. + * look good. You can also control the way the widget looks by + * adding style rules to your theme. + * + * See: http://help.disqus.com/entries/100878-css-customization * * @category Plugin * @package StatusNet diff --git a/plugins/EchoPlugin.php b/plugins/EchoPlugin.php index 2ebfbceb33..7b51866ebd 100644 --- a/plugins/EchoPlugin.php +++ b/plugins/EchoPlugin.php @@ -36,54 +36,26 @@ if (!defined('STATUSNET')) { * * 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. + * (a for-pay 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: + * plugin on; just add this to your config.php: * - * addPlugin('Echo'); + * addPlugin( + * 'Echo', + * array('div_style' => 'width:675px; padding-top:10px; position:relative; float:left;') + * ); * - * 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: + * NOTE: the 'div_style' in an optional parameter that passes in some + * inline CSS when creating the Echo widget. It's a shortcut to make + * the widget look OK with the default StatusNet theme. If you leave + * it out you'll have to edit your theme CSS files to make the widget + * look good. You can also control the way the widget looks by + * adding style rules to your theme. * - * // 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 - * ) - * ); + * See: http://wiki.js-kit.com/Skinning-Guide#UsingCSSnbsptocustomizefontsandcolors * * @category Plugin * @package StatusNet @@ -122,24 +94,14 @@ class EchoPlugin extends Plugin // 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; + if (!empty($this->div_style)) { + $attrs['style'] = $this->div_style; } $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',