Extension:FollowButton

From mediawiki.org
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>

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

Services[edit]

Usage[edit]

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[edit]

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[edit]

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[edit]

FollowButton.php[edit]

<?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[edit]

<?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'
);
?>