Extension:ValidUserEdit

From MediaWiki.org
Jump to: navigation, search


MediaWiki extensions manual
Crystal Clear action run.png
ValidUserEdit

Release status: beta

Implementation Tag, Hook
Author(s) Jörg-Sascha Heil (jsheiltalk)
Latest version 0.5
MediaWiki 1.6
License No license specified
Download Extension:ValidUserEdit#Code
Parameters
  • $egValidUserEditTag
  • $egValidUserEditDefaultOk
Added rights

validusersuperedit

Hooks used
AlternateEdit

Translate the ValidUserEdit extension if it is available at translatewiki.net

Check usage and version matrix; code metrics

Entschuldigung! Bitte mal für mich übersetzen.

What can this extension do?[edit | edit source]

Diese Erweiterung ermöglicht das Sperren der Bearbeitung und der Ansicht des Quelltextes durch nichtautorisierte Nutzer. Es bestehen zwei Möglichkeiten zur Autorisation:

  1. Eintragung in den Gruppenrechten -> $wgGroupPermissions["sysop"]["validusersuperedit"] = true;
  2. Einfügen eines Tags im Text des Artikels -> <user>NutzerName</user>
  3. das Einfügen von <user>*</user> ermöglicht allen Nutzern das Bearbeiten

Ist $egValidUserEditDefaultOk = true; so kann jede Seite in der kein '<user>'-Tag enthalten ist von jedem Nutzer bearbeitet werden. Enthält der Text einen entsprechenden Tag so kann die Seite nur noch von diesem Nutzer bearbeitet werden. Es ist möglich beliebig Nutzer einzutragen. Ist $egValidUserEditDefaultOk = false; so ist die Seite auch ohne '<user>'-Tag gesperrt.

Usage[edit | edit source]

Download instructions[edit | edit source]

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

Installation[edit | edit source]

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

require_once("$IP/extensions/ValidUserEdit.php");
 
#add configuration parameters here
$egValidUserEditTag = "user";
$egValidUserEditDefaultOk = true;
 
#setup user rights here
$wgGroupPermissions["sysop"]["validusersuperedit"]       = true;

Configuration parameters[edit | edit source]

  • $egValidUserEditTag - definiert den Tag, voreingestellt ist "user"
  • $egValidUserEditDefaultOk - gibt an ob ein Artikel bearbeitbar sein soll wenn kein oben genannter Tag gefunden wird

User rights[edit | edit source]

  • $wgGroupPermissions["sysop"]["validusersuperedit"] = true;

Code[edit | edit source]

<?php
 
/**
 * Diese Erweiterung ermöglicht das Sperren der Bearbeitung durch nichtautorisierte Nutzer.
 * Es bestehen zwei Möglichkeiten zur Autorisation:
 * 1. Eintragung in den Gruppenrechten -> $wgGroupPermissions["sysop"]["validusersuperedit"] = true;
 * 2. Einfügen eines Tags im Text des Artikels -> <user>NutzerName</user>
 * 3. das Einfügen von <user>*</user> ermöglicht allen Nutzern das Bearbeiten
 * 
 * $egValidUserEditTag - definiert den Tag, voreingestellt ist "user"
 * $egValidUserEditDefaultOk - gibt an ob ein Artikel bearbeitbar sein soll wenn kein oben genannter Tag gefunden wird
 * 
 * @author Jörg-Sascha Heil - [email protected] 
 */
 
 
$egValidUserEditTag = "user";
$egValidUserEditDefaultOk = true;
 
$wgGroupPermissions["sysop"]["validusersuperedit"]       = true;
 
 
$wgHooks["AlternateEdit"][] = "efValidUserEdit";
 
$wgExtensionCredits["other"][] = array(
	"name" => "ValidUserEdit",
	"author" => "Jörg-Sascha Heil - mailto:[email protected]",
	"url" => "http://www.mediawiki.org/wiki/Extension:ValidUserEdit",
	"version" => "0.5",
	"description" => "<br> Ermöglicht das sperren von Artikeln für die Bearbeitung. <br>".
		"Bearbeitung ist nur möglich wenn man als Superuser eingetragen ist oder eingetragener Nutzer ist.<br>",
);
 
if ( defined( 'MW_SUPPORTS_PARSERFIRSTCALLINIT' ) ) {
	$wgHooks['ParserFirstCallInit'][] = 'efValidUserEditParserInit';
} else { // Otherwise do things the old fashioned way
	$wgExtensionFunctions[] = 'efValidUserEditParserInit';
}
 
function efValidUserEditParserInit() {
	global $wgParser, $egValidUserEditTag;
	$wgParser->setHook( $egValidUserEditTag , 'efValidUserEditRender' );
	return true;
}
 
function efValidUserEditRender( $input, $args, $parser ) {
	return "";
}
 
function efValidUserEdit(&$editpage) {
	global $wgOut, $wgUser, $EditFilterSuperUser, 
		$egValidUserEditTag, $egValidUserEditDefaultOk;
	$text = $editpage->mArticle->getContent();
	$tag = preg_quote($egValidUserEditTag);
	$user = preg_quote( $wgUser->getName() );
	// Seite sperren wenn <user>-Tag gefunden
	if ($egValidUserEditDefaultOk) {
		$ok = preg_match("/<$tag/i",$text) == 0;
	} else {
		$ok = false;
	}
	// Freigeben wenn Nutzer eingetragen
	$ok = $ok || preg_match("/<\s*$tag\s*>\s*$user\s*<\/\s*$tag\s*>/",$text) > 0;
	// Freigeben wenn * als Nutzer eingetragen ist
	$ok = $ok || preg_match("/<\s*$tag\s*>\s*\*\s*<\/\s*$tag\s*>/",$text) > 0;
	// Freigeben wenn Superuser
	$ok = $ok || $wgUser->isAllowed("validusersuperedit");
	if ($ok) {
		return true;
	} else {
		$title = $editpage->mTitle->getPrefixedText();
		$wgOut->setPageTitle( wfMsg( "ValidUserEditPageTitle",$title ) ); 
		$wgOut->setHTMLTitle( wfMsg( "ValidUserEditHTMLTitle",$title ) );
		$wgOut->setRobotPolicy( "noindex,nofollow" );
		$wgOut->setArticleRelated( false );
		$wgOut->enableClientCache( false );
		$wgOut->mRedirect = "";
		$wgOut->mBodytext = "";
		$wgOut->addWikiText( wfMsg( "ValidUserEditMessage",$title ) );
		$wgOut->returnToMain( "" , $title );
		return false;
	}
}

See also[edit | edit source]