Extension:FollowButton

From Linux Web Expert

MediaWiki extensions manual
FollowButton
Release status: unmaintained
Implementation Tag
Description Adds ‎<followbutton> tag for displaying follow buttons.
Author(s) Toni Hermoso Pulido (Tonihertalk)
Latest version 0.1
MediaWiki 1.16, 1.17
PHP 5.2.x, 5.3.x
License GNU General Public License 2.0 or later
Download Below this page
Example http://www.viquimedia.cat
‎<followbutton>
Quarterly downloads Lua error in Module:Extension at line 172: bad argument #1 to 'inNamespace' (unrecognized namespace name 'skin').
Public wikis using Lua error in Module:Extension at line 172: bad argument #1 to 'inNamespace' (unrecognized namespace name 'skin').

Parser that inserts a Follow Button anywhere in a wiki page.

Services

Usage

For now, only Twitter is available and you have the following parameters:

  • lang (2 letter language code. Only a few available in twitter. English by default)
  • color (dark or light, light by default)
  • count (true or false, true by default)
  • service (now only Twitter, by default)

Put your username between the tags (no @ is needed).

Example: (for a Twitter Follow Button in Spanish with no counter): <followbutton count=false lang="es">toniher</followbutton>

Download instructions

Please cut and paste the code found below and place it in $IP/extensions/FollowButton/FollowButton.php. Note: $IP stands for the root directory of your MediaWiki installation, the same directory that holds LocalSettings.php .

Also copy i18n file in $IP/extensions/FollowButton/FollowButton.i18n.php

Installation

To install this extension, add the following to LocalSettings.php :

#add configuration parameters here
#setup user rights here
require_once("$IP/extensions/FollowButton/FollowButton.php");

Code

FollowButton.php

<?php
/**
 * Copyright (C) 2011 Toni Hermoso Pulido <toniher@cau.cat>
 * http://www.cau.cat
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License along
 * with this program; if not, write to the Free Software Foundation, Inc.,
 * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 * http://www.gnu.org/copyleft/gpl.html
 *
 */
// Twitter script bits from: https://twitter.com/about/resources/followbutton

if ( !defined( 'MEDIAWIKI' ) ) {
        echo( "This file is an extension to the MediaWiki software and cannot be used standalone.\n" );
        die( 1 );
}
$wgExtensionCredits['other'][] = array(
        'path' => __FILE__,
        'name' => 'FollowButton', 
        'author' => array( 'Toniher' ), 
        'url' => 'http://mediawiki.org/wiki/Extension:FollowButton',
        'description' => 'Adds popular social networks Follow Buttons to your wiki',
        'descriptionmsg' => 'followbutton-desc',
);

$wgExtensionFunctions[] = "FollowButtonExtension";
$wgFollowButtonIP = dirname( __FILE__ );
$wgExtensionMessagesFiles['FollowButton'] = "$wgFollowButtonIP/FollowButton.i18n.php";

function FollowButtonExtension() {
    global $wgParser;
    $wgParser->setHook( "followbutton", "wfFollowButton" );
}

function wfFollowButton( $input, $argv ) {

        $service = "Twitter";
        if (isset($argv['service'])) { $service = $argv['service']; }
        
        if (strtolower($service) == 'twitter') {
                
                //Defaults
                $color = "light";
                $count = true;
                $label = "Follow";
                $lang = "en";

                //Strings
                $langstr = "";
                $colorstr = "";
                $countstr = "";

                //Conditions
                if (isset($argv['color'])) {$color = $argv['color'];}
                if (isset($argv['count'])) {$count = $argv['count'];}
                if (isset($argv['lang'])) {
                        $lang = $argv['lang'];
                        // We take langcode and langcode-{country,variantcode}
                        if (preg_match('/^\s*\w{2,3}\s*$/', $argv['lang'])) {
                                $langstr = "data-lang=\"".$lang."\"";
                        }
                        elseif (preg_match('/^\s*(\w{2,3})\-(\w+)\s*$/', $argv['lang'], $langbits)) {
                                $langstr = "data-lang=\"".$langbits[1]."\"";
                        }
                }

                if (strtolower($color) == 'dark') {
                        $colorstr = "data-button=\"grey\" data-text-color=\"#FFFFFF\" data-link-color=\"#00AEFF\"";
                }
                if ($count != true) {
                        $countstr = "data-show-count=\"false\"";
                }


                $output = "<a href=\"http://twitter.com/".$input."\" class=\"twitter-follow-button\" ".$colorstr." ".$countstr." ".$langstr." >".$label.
" @".$input."</a><script src=\"http://platform.twitter.com/widgets.js\" type=\"text/javascript\"></script>";    
        }
        
        return $output;
}
?>

FollowButton.i18n.php

<?php
/**
 * Internationalisation file for Follow Button extension.
 *
*/

$messages = array();

$messages['en'] = array(
	'followbutton-desc' => 'Adds popular social networks Follow Buttons to your wiki'
);

$messages['ca'] = array(
        'followbutton-desc' => 'Afegeix botons de seguiment de xarxes socials populars al vostre wiki'
);

$messages['es'] = array(
        'followbutton-desc' => 'Añade botones de seguimiento de redes sociales populares en su wiki'
);
?>