Extension:NoViewSource.php

From Organic Design wiki
Revision as of 11:17, 23 July 2008 by Nad (talk | contribs) ({{voodoo}})
Voodoo.svg This code exhibits voodoo programming techniques. The most common of these is extending an instance's class at runtime after it has been instantiated, a technique that can be used to provide additional hooks into existing code without requiring modification of code-base files. For a list of all our scripts which exhibit voodoo, see Category:Code that uses voodoo.

<php> <?php

  1. Extension:NoViewSource
  2. - Licenced under LGPL (http://www.gnu.org/copyleft/lesser.html)
  3. - Author: User:NadCategory:Extensions created with Template:Extension
  4. - Started: 2007-12-16

if (!defined('MEDIAWIKI')) die('Not an entry point.');

define('NOVIEWSOURCE_VERSION','1.0.2, 2007-12-18');

$wgExtensionFunctions[] = 'wfSetupNoViewSource'; $wgExtensionCredits['other'][] = array( 'name' => 'NoViewSource', 'author' => 'User:Nad', 'description' => 'Replaces the "view source" action with "edit" which links to login page.', 'url' => 'http://www.organicdesign.co.nz/Extension:NoViewSource.php', 'version' => NOVIEWSOURCE_VERSION );

function wfSetupNoViewSource() { global $wgHooks,$wgOut,$wgUser; if ($wgUser->isLoggedIn()) return;

$wgHooks['SkinTemplateTabs'][] = 'wfNoViewSourceUpdateActions';

# Create a new OutputPage class (Out2) which has its readOnlyPage (view source) method replaced with loginToUse class Out2 extends OutputPage { public function readOnlyPage( $source = null, $protected = false, $reasons = array() ) { parent::loginToUse(); } }

# Replace $wgOut with a sub-classed replica $oldOut = $wgOut; $wgOut = new Out2(); $vars = get_class_vars('oldOut'); if (is_array($vars)) foreach (array_keys($vars) as $k) $wgOut->$k = $oldOut->$k; }

function wfNoViewSourceUpdateActions(&$skin,&$actions) { if (isset($actions['viewsource'])) $actions['viewsource']['text'] = wfMsg('edit'); return true; } </php>