[Php-blog-plugin-cvs] additional_plugins/serendipity_event_disqus lang_en.inc.php, NONE, 1.1 serend
A reliable, secure & extensible PHP blog | Not mainstream since 2002
Brought to you by:
garvinhicking,
jhermanns
From: Garvin H. <gar...@us...> - 2011-05-22 19:09:33
|
Update of /cvsroot/php-blog/additional_plugins/serendipity_event_disqus In directory vz-cvs-2.sog:/tmp/cvs-serv30081/serendipity_event_disqus Added Files: lang_en.inc.php serendipity_event_disqus.php Log Message: Disqus plugin --- NEW FILE: serendipity_event_disqus.php --- <?php # $Id: serendipity_event_disqus.php,v 1.1 2011/05/22 19:09:31 garvinhicking Exp $ if (IN_serendipity !== true) { die ("Don't hack!"); } // Probe for a language include with constants. Still include defines later on, if some constants were missing $probelang = dirname(__FILE__) . '/' . $serendipity['charset'] . 'lang_' . $serendipity['lang'] . '.inc.php'; if (file_exists($probelang)) { include $probelang; } include dirname(__FILE__) . '/lang_en.inc.php'; class serendipity_event_disqus extends serendipity_event { var $title = PLUGIN_DISQUS_TITLE; function introspect(&$propbag) { global $serendipity; $propbag->add('name', PLUGIN_DISQUS_TITLE); $propbag->add('description', PLUGIN_DISQUS_DESC); $propbag->add('stackable', false); $propbag->add('author', 'Garvin Hicking'); $propbag->add('requirements', array( 'serendipity' => '0.7', 'smarty' => '2.6.7', 'php' => '4.1.0' )); $propbag->add('version', '0.1'); $propbag->add('groups', array('FRONTEND_VIEWS')); $propbag->add('event_hooks', array( 'frontend_display:html:per_entry' => true, 'entries_footer' => true )); $propbag->add('configuration', array('shortname', 'enable_since')); } function introspect_config_item($name, &$propbag) { global $serendipity; switch($name) { /* plugin_display_dat $TRACKBACKS $COMMENTS $COMMENTFORM */ case 'enable_since': $propbag->add('type', 'string'); $propbag->add('name', PLUGIN_DISQUS_ENABLE_SINCE); $propbag->add('description', PLUGIN_DISQUS_ENABLE_SINCE_DESC); $propbag->add('default', date('Y-m-d')); break; case 'shortname': $propbag->add('type', 'string'); $propbag->add('name', PLUGIN_DISQUS_SHORTNAME); $propbag->add('description', PLUGIN_DISQUS_SHORTNAME_DESC); $propbag->add('default', ''); break; } return true; } function generate_content(&$title) { $title = PLUGIN_DISQUS_TITLE; } function example() { echo nl2br(PLUGIN_DISQUS_DESC2); } function event_hook($event, &$bag, &$eventData, &$addData) { global $serendipity; $hooks = &$bag->get('event_hooks'); if (isset($hooks[$event])) { switch($event) { case 'entries_footer': ?> <script type="text/javascript"> var disqus_shortname = '<?php echo $this->get_config('shortname'); ?>'; (function () { var s = document.createElement('script'); s.async = true; s.type = 'text/javascript'; s.src = 'http://' + disqus_shortname + '.disqus.com/count.js'; (document.getElementsByTagName('HEAD')[0] || document.getElementsByTagName('BODY')[0]).appendChild(s); }()); </script> <?php return true; case 'frontend_display:html:per_entry': $_ts = explode('-', $this->get_config('enable_since')); $ts = mktime(0, 0, 0, $_ts[1], $_ts[2], $_ts[0]); if ($eventData['timestamp'] < $ts) { return true; } $eventData['comments'] = '<a href="' . $eventData['link'] . '#disqus_thread" data-disqus-identifier="disq_id_' . $eventData['id'] . '">Disqus</a>'; if (!$eventData['is_extended']) return true; $disqus = ' <style type="text/css"> .serendipity_comments, .serendipity_section_comments, .serendipity_section_trackbacks, .serendipity_section_commentform { display: none; } </style> <div class="disqus"> <div id="disqus_thread"></div> <script type="text/javascript"> var disqus_shortname = \'' . $this->get_config('shortname') . '\'; // The following are highly recommended additional parameters. Remove the slashes in front to use. var disqus_identifier = \'disq_id_' . $eventData['id'] . '\'; var disqus_url = \'' . $eventData['rdf_ident'] . '\'; var disqus_title = \'' . addslashes($eventData['title']) . '\'; (function() { var dsq = document.createElement(\'script\'); dsq.type = \'text/javascript\'; dsq.async = true; dsq.src = \'http://\' + disqus_shortname + \'.disqus.com/embed.js\'; (document.getElementsByTagName(\'head\')[0] || document.getElementsByTagName(\'body\')[0]).appendChild(dsq); })(); </script> <noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript> </div> '; $eventData['display_dat'] .= $disqus; $eventData['disqus'] .= $disqus; $eventData['commentform'] = true; return true; default: return false; } } else { return false; } } } --- NEW FILE: lang_en.inc.php --- <?php @define('PLUGIN_DISQUS_TITLE', 'Disqus comments'); @define('PLUGIN_DISQUS_DESC', 'Disqus.com is a webservice that allows you to manage comments, with central logins. It stores and manages comments outside of your Serendipity installation, and is embedded using JavaScript. For more information see disqus.com.'); @define('PLUGIN_DISQUS_DESC2', 'When disqus.com comments are enabled, any functionality that relies on serendipity-stored comments will no longer work, of course. Internally, this plugin uses CSS to hide the Serendipity output for comments, trackbacks and the commentform. For that it sets "display:none" for these CSS classes: .serendipity_comments .serendipity_section_comments .serendipity_section_trackbacks .serendipity_section_commentform If your template/theme uses other names, you need to add these classnames to your template, or hide these containers yourself. The plugin puts the disqus output inside the Smarty variable {$entry.plugin_display_dat} AND {$entry.disqus} which you can place inside your entries.tpl template at any position within the {$entry} loop. '); @define('PLUGIN_DISQUS_ENABLE_SINCE', 'Enable disqus.com for entries since...'); @define('PLUGIN_DISQUS_ENABLE_SINCE_DESC', 'Enter a date (Y-m-d) for which disqus comments will be enabled, so that you can preserve older comments to be shown properly.'); @define('PLUGIN_DISQUS_SHORTNAME', 'Shortname of your disqus account'); @define('PLUGIN_DISQUS_SHORTNAME_DESC', 'Enter the shortname that you registered your disqus account under.'); |