Extension:SNSButtonsInSidebar

From mediawiki.org
MediaWiki extensions manual
SNSButtonsInSidebar
Release status: unmaintained
Implementation Tag
Description Adds SNS buttons in the sidebar
Author(s) Jmkim dot com
Latest version 1.0.0 (2012-08-18)
MediaWiki 1.18+
Database changes No
License GNU General Public License 2.0
Download see below

The SNSButtonsInSidebar adds SNS buttons in the sidebar on every page.

Installation[edit]

  • Copy the code into the respective files and place the file(s) in a directory called SNSButtonsInSidebar in your extensions/ folder.
  • Add the following code at the bottom of your LocalSettings.php file:
    require_once "$IP/extensions/SNSButtonsInSidebar/SNSButtonsInSidebar.php";
    
  • Yes Done – Navigate to Special:Version on your wiki to verify that the extension is successfully installed.

Code[edit]

SNSButtonsInSidebar.php
<?php
/**
 * MediaWiki extension to add SNS buttons in the sidebar
 * Installation instructions can be found on
 * http://www.mediawiki.org/wiki/Extension:SNSButtonsInSidebar
 *
 * @ingroup Extensions
 * @author Jmkim dot com
 * @license GNU Public License
 */

// Exit if called outside of MediaWiki
if( !defined( 'MEDIAWIKI' ) ) exit;

// SETTINGS
$wgSNSButtonsTitle = 'Recommendations';

$wgExtensionCredits['parserhook'][] = array(
	'path'        => __FILE__,
	'name'        => 'SNSButtonsInSidebar',
	'version'     => '1.0.0',
	'author'      => 'Jmkim dot com',
	'description' => 'SNSButtonsInSidebar Extension',
	'url'         => 'https://www.mediawiki.org/wiki/Extension:SNSButtonsInSidebar'
);

// Register class and localisations
$dir = dirname(__FILE__) . '/';
$wgAutoloadClasses['SNSButtonsInSidebar'] = $dir.'SNSButtonsInSidebar.class.php';
	
// Hook to modify the sidebar
$wgHooks['SkinBuildSidebar'][] = 'SNSButtonsInSidebar::renderSNSButtonsInSidebar';
SNSButtonsInSidebar.class.php
<?php
if (!defined('MEDIAWIKI')) exit;

class SNSButtonsInSidebar {
	static function renderSNSButtonsInSidebar( $skin, &$bar ) {
		global $wgFacebookCommonScriptWritten, $wgFacebookAppId;
		$btnsText = '';
		if( !isset($wgFacebookCommonScriptWritten) || !$wgFacebookCommonScriptWritten ) {
			if( !isset($wgFacebookAppId) ) $wgFacebookAppId = '';
			$wgFacebookCommonScriptWritten = true;
			$btnsText .= '<div id="fb-root">';
			$btnsText .= '</div><script src="http://connect.facebook.net/en_US/all.js#xfbml=1&appId='.$wgFacebookAppId.'"></script>';
		}
		$btnsText .= '<script type="text/javascript">';
		$btnsText .= '(function() {';
		$btnsText .= "var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;";
		$btnsText .= "po.src = 'https://apis.google.com/js/plusone.js';";
		$btnsText .= "var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);";
		$btnsText .= '})();';
		$btnsText .= '</script>';

		global $wgServer;
		$btnsText .= '<div class="fb-like" data-href="'.$wgServer.'"';
		$btnsText .= ' data-send="false" data-layout="button_count"';
		$btnsText .= ' data-width="130" data-show-faces="false"';
		$btnsText .= ' data-action="like" data-colorscheme="light"';
		$btnsText .= '></div>';
		$btnsText .= '<div style="height:5px"></div>';
		$btnsText .= '<div class="g-plusone" data-width="130" data-href="'.$wgServer.'"></div>';
		global $wgSNSButtonsTitle;
		$bar[$wgSNSButtonsTitle] = $btnsText;
		return true;
	}
}

See also[edit]