|
|
| Zeile 1: |
Zeile 1: |
| ==Copyright Hinweis==
| | #redirect [[Benutzer:Rene/SGPack]] |
| Die Erweiterung ValidUserEdit wurde von Jörg-Sascha Heil erstellt. Genauere Informationen findet man auf der [http://www.mediawiki.org/wiki/Extension:ValidUserEdit 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: <nowiki><user></nowiki>''Nutzer1''<nowiki></user></nowiki> <nowiki><user></nowiki>''Nutzer2''<nowiki></user></nowiki>
| |
| | |
| 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==
| |
| <pre><nowiki>
| |
| <?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;
| |
| }
| |
| }
| |
| </nowiki></pre>
| |