User:Robchurch/Custom action and tab

From MediaWiki.org
Jump to: navigation, search
<?php

/**
 * Extension adds a custom action and corresponding tab to
 * article views
 *
 * @package MediaWiki
 * @subpackage Extensions
 * @author Rob Church <robchur@gmail.com>
 */
 
if( defined( 'MEDIAWIKI' ) ) {

        $wgExtensionFunctions[] = 'efCustomActionSetup';
        
        /**
         * Extension setup function
         */
        function efCustomActionSetup() {
                global $wgHooks, $wgMessageCache;
                $wgMessageCache->addMessage( 'customaction', 'Custom' );
                $wgHooks['SkinTemplateContentActions'][] = 'efCustomActionTab';
                $wgHooks['UnknownAction'][] = 'efCustomActionHandler';
        }
        
        /**
         * Adds the custom action tab
         *
         * @param array $tabs
         */
        function efCustomActionTab( &$tabs ) {
                global $wgTitle, $wgRequest;
                $action = $wgRequest->getText( 'action' );
                if( $wgTitle->getNamespace() != NS_SPECIAL ) {
                        $tabs['custom'] = array(
                                'class' => $action == 'custom' ? 'selected' : false,
                                'text' => wfMsg( 'customaction' ),
                                'href' => $wgTitle->getLocalUrl( 'action=custom' ),
                        );
                }
        }
        
        /**
         * Handles the custom action
         *
         * @param string $action
         * @param Article $article
         */
        function efCustomActionHandler( $action, $article ) {
                global $wgOut;
                if( $action == 'custom' ) {
                        $wgOut->addWikiText( "You are performing a custom action on '''" . $article->getTitle()->getText() . "'''." );
                }
        }

} else {
        echo( "This file is an extension to the MediaWiki software, and cannot be used standalone.\n" );
        exit( 1 );
}

?>
Personal tools
Namespaces
Variants
Actions
Site
Support
Download
Development
Communication
Print/export
Toolbox