Benutzer:Rene/ValidUserEdit: Unterschied zwischen den Versionen
Rene (Diskussion | Beiträge) Die Seite wurde neu angelegt: „==Copyright Hinweis== Die Erweiterung ValidUserEdit wurde von Jörg-Sascha Heil erstellt. Genauere Informationen findet man auf der [http://www.mediawiki.org/wiki…“ |
(kein Unterschied)
|
Version vom 5. November 2009, 22:26 Uhr
Copyright Hinweis
Die Erweiterung ValidUserEdit wurde von Jörg-Sascha Heil erstellt. Genauere Informationen findet man auf der Homepage. In Stargate Wiki wird eine angepasste Version der Erweiterung eingesetzt.
Beschreibung Allgemein
Diese Erweiterung ermöglicht das Sperren der Bearbeitung und der Ansicht des Quelltextes durch nicht autorisierte Nutzer. Um einen Nutzer das bearbeiten einer Seite zu erlauben muss sein Name im Artikel gesetzt werden. Dazu wird der Name des Nutzers in ein user-Tag eingeschlossen.
Beispiel: <user>Nutzer1</user> <user>Nutzer2</user>
In diesem Beispiel dürfen die Nutzer Nutzer1 und Nutzer2 sowie der eigentliche Nutzer des Namensraums auf den Artikel zugreifen.
Wird als Name ein * angegeben so darf jeder den Artikel bearbeiten. Das gleiche erreicht man auch wenn man einfach kein user-Tag im Artikel angibt.
Wichtiger Hinweis
Um eine Seite zu schützen muss zumindest ein Nutzer angegeben werden da die Seite sonst nicht geschützt ist. Möchte man nur selbst die Seite bearbeiten sollte man den eigenen Benutzernamen angeben.
Anpassungen
In Stargate Wiki ist die Erweiterung nur für die Namensräume Benutzer und Benutzer Diskussion aktiv. In allen anderen Namensräumen werden die user-Tags ignoriert. Um Fehler bei der Benutzung auszuschließen erlaubt die Stargate Wiki Version es nicht den Besitzer der Seite auszuschließen.
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<br>René Raule - Stargate Wiki Version",
"url" => "http://www.stargate-wiki.de/index.php/Benutzer:Rene/ValidUserEdit",
"version" => "0.5 (sgw)",
"description" => "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>".
"SGW: Nur im Benutzernamensraum aktiv inkl. Diskussion, der Benutzer kann sich nicht selbst aussperren.",
);
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;
// Erweiterung nur für Benutzer-Namensraum und Diskussion
if((NS_USER_TALK !== $editpage->mArticle->mTitle->mNamespace) and (NS_USER !== $editpage->mArticle->mTitle->mNamespace)) {
return true;
}
$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 ist Besitzer des Artikels
$ok = $ok || (0 == strncmp($user,$editpage->mArticle->mTitle->mTextform,count($user)));
// 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( $title );
// $wgOut->setHTMLTitle( wfMsg( "ValidUserEditHTMLTitle",$title ) );
$wgOut->setRobotPolicy( "noindex,nofollow" );
$wgOut->setArticleRelated( false );
$wgOut->enableClientCache( false );
$wgOut->mRedirect = "";
$wgOut->mBodytext = "";
$wgOut->addWikiText( "Leider darfst du diese Seite nicht bearbeiten." );
$wgOut->addWikiText( "Das bearbeiten ist nur einer speziellen Gruppe erlaubt." );
$wgOut->returnToMain( "" , $title );
return false;
}
}