Extension:ValidUserEdit

From MediaWiki.org
Jump to: navigation, search


MediaWiki extensions manual - list
Crystal Clear action run.png
ValidUserEdit

Release status: beta

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

validusersuperedit

Hooks used
AlternateEdit

Check usage (experimental)

Entschuldigung! Bitte mal für mich übersetzen.

Contents

[edit] What can this extension do?

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.

[edit] Usage

[edit] Download instructions

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.

[edit] Installation

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;

[edit] Configuration parameters

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

[edit] User rights

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

[edit] Code

<?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 - sascha@jsheil.de 
 */
 
 
$egValidUserEditTag = "user";
$egValidUserEditDefaultOk = true;
 
$wgGroupPermissions["sysop"]["validusersuperedit"]       = true;
 
 
$wgHooks["AlternateEdit"][] = "efValidUserEdit";
 
$wgExtensionCredits["other"][] = array(
        "name" => "ValidUserEdit",
        "author" => "Jörg-Sascha Heil - mailto:sascha@jsheil.de",
        "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;
        }
}

[edit] See also

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