From: Brion Vibber Date: Tue, 21 Sep 2010 19:48:16 +0000 (-0700) Subject: Merge branch 'master' into 0.9.x X-Git-Url: https://git.mxchange.org/?p=quix0rs-gnu-social.git;a=commitdiff_plain;h=42dd460d3b9aa9a8ad147d00de9b6c8e209ab4e9 Merge branch 'master' into 0.9.x --- 42dd460d3b9aa9a8ad147d00de9b6c8e209ab4e9 diff --cc plugins/Disqus/DisqusPlugin.php index 681be19dc9,0000000000..3901562f98 mode 100644,000000..100644 --- a/plugins/Disqus/DisqusPlugin.php +++ b/plugins/Disqus/DisqusPlugin.php @@@ -1,171 -1,0 +1,174 @@@ +. + * + * @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 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. + * + * See: http://help.disqus.com/entries/100878-css-customization + * + * @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 +{ ++ public $shortname; // Required 'shortname' for actually triggering Disqus. ++ public $div_style; // Optional CSS chunk for the main
++ + 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'); + + // @todo FIXME: No i18n yet, because of bad implementation. Should be one string. + $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; + } +}