Benutzer:StipenTreublatt/Anpassungen über Hooks

aus Wiki Aventurica, dem DSA-Fanprojekt
Wechseln zu: Navigation, Suche

Code darf von Kundigen gerne verbessert werden, ich bin ein Programmier-Amateur. ic_smile.gif

Löschen-Link in den Letzten Änderungen für Benutzer mit "delete"-Rechten

Für Titelzeile gruppierter Anderungen (ab MediaWiki 1.25)
Nachteil: Für einzelne Änderungen wird kein "Löschen"-Link angezeigt.
Siehe auch Dokumentation zu Linker::linkKnown
$wgHooks['EnhancedChangesList::getLogText'][] = function( $this, &$links, $block ) {
  global $wgUser;
  if ( $wgUser->isAllowed('delete') ) {
             $block0 = $block[0];
             $params['action'] = 'delete';
             $links['delete'] = Linker::linkKnown(
                	$block0->getTitle(),
                	'Löschen',
                	array(),
                	$params
             );
  }
  return true;
};
Für jede einzelne Änderung und Titelzeilen gruppierter Änderungen
Nachteil: Wird nicht schön in der Klammer mit "Unterschied" und "Versionen" angezeigt, sondern davor.
siehe Manual:Hooks/ChangesListInsertArticleLink
$wgHooks['ChangesListInsertArticleLink'][] = function( &$this, &$articlelink, &$s, &$rc, $unpatrolled, $watched ) {
  global $wgUser;
  if ( $wgUser->isAllowed('delete') ) {
    $params['action'] = 'delete';
    $articlelink .= ' (';
    $articlelink .= Linker::linkKnown(
			$rc->getTitle(),
			'Löschen',
			array(),
			$params
		);
    $articlelink .= ')';
  }
  return true;
};
Zusätzlich mit "Bearbeiten" und "Links auf diese Seite"-Link für alle Benutzer
Siehe auch Dokumentation für SpecialPage::getTitleFor
$wgHooks['ChangesListInsertArticleLink'][] = function( &$this, &$articlelink, &$s, &$rc, $unpatrolled, $watched ) {
  $params['action'] = 'edit';
  $articlelink .= ' (';
  $articlelink .= Linker::linkKnown(
  	$rc->getTitle(),
  	'e',
  	array(),
  	$params
  );
  $articlelink .= ' ';
  $articlelink .= wfMsg( 'pipe-separator' );
  $articlelink .= ' ';
  $articlelink .= Linker::linkKnown(
  	SpecialPage::getTitleFor( 'Whatlinkshere', $rc->getTitle() ),
  	'wlh',
  	array(),
  	array()
  );
  global $wgUser;
  if ( $wgUser->isAllowed('delete') ) {
    $articlelink .= ' ';
    $articlelink .= wfMsg( 'pipe-separator' );
    $articlelink .= ' ';
    $params['action'] = 'delete';
		$articlelink .= Linker::linkKnown(
			$rc->getTitle(),
			'del',
			array(),
			$params
		);
  }
  $articlelink .= ')';
  return true;
};

Deaktivieren von nutzlosen Spezialseiten

Man kann auch festlegen, dass bestimmte Spezialseiten nur von Nutzern mit speziellen Gruppenrechten aufgerufen werden können. Diese hier festgelegten Spezialseiten werden dann allerdings leider nicht auf Spezial:Spezialseiten fett markiert.
Siehe Manual:Hooks/SpecialPage_initList und Anleitung dazu
function disableSomeSpecialPages(&$list) {
  foreach (array('Fewestrevisions','Withoutinterwiki','Unwatchedpages','Shortpages','Mostinterwikis','Mostlinked') as $i) {
    unset($list[$i]);
  }
  global $wgUser;
  if(!$wgUser->isAllowed('editinterface')) {
    unset($list['Mostlinkedtemplates']);
  }
  return true;
}
$wgHooks['SpecialPage_initList'][]='disableSomeSpecialPages';

Admin-Links konfigurieren

Ist Extension:AdminLinks installiert, kann man über den Hook "AdminLinks" die angezeigten Links konfigurieren.
Siehe Manual:Hooks/AdminLinks
Reines Hinzufügen
$wgHooks['AdminLinks'][] = 'spam_protection_links';
 
function spam_protection_links( &$admin_links_tree ) {
    // 'spam protection' section
    $section = new ALSection( wfMsg( 'adminlinks_spam_protection' ) );
    $main_row = new ALRow( 'main' );
    $main_row->addItem( ALItem::newFromSpecialPage( 'AbuseFilter' ) );
    $main_row->addItem( ALItem::newFromEditLink( 'Spam-blacklist', wfMsg( 'adminlinks_editspamblacklist' ) ) );
    $main_row->addItem( ALItem::newFromEditLink( 'Spam-whitelist', wfMsg( 'adminlinks_editspamwhitelist' ) ) );
    $main_row->addItem( ALItem::newFromEditLink( 'Titleblacklist', wfMsg( 'adminlinks_edittitleblacklist' ) ) );
    $main_row->addItem( ALItem::newFromEditLink( 'Titlewhitelist', wfMsg( 'adminlinks_edittitlewhitelist' ) ) );
    $section->addRow( $main_row );
    $admin_links_tree->addSection( $section, $next_section_header = wfMsg( 'adminlinks_users' ) );
    // 'users' section
    $users_section = $admin_links_tree->getSection( wfMsg( 'adminlinks_users' ) );
    $main_row = $users_section->getRow( 'main' );
    $main_row->addItem( ALItem::newFromSpecialPage( 'Blocklist' ) );
    global $wgUser;
    if ( $wgUser->isAllowed('userrights') ) {
        $main_row->addItem( ALItem::newFromSpecialPage( 'Renameuser' ) );
        $main_row->addItem( ALItem::newFromSpecialPage( 'Usermerge' ) );
    }
    // 'browsing and searching' section
    $users_section = $admin_links_tree->getSection( wfMsg( 'adminlinks_browsesearch' ) );
    $main_row = $users_section->getRow( 'main' );
    $main_row->addItem( ALItem::newFromSpecialPage( 'Linksearch' ) );
    $main_row->addItem( ALItem::newFromSpecialPage( 'Multicategorysearch' ) );
    // 'feedback' section
    $section = new ALSection( wfMsg( 'adminlinks_feedback' ) );
    $main_row = new ALRow( 'main' );
    $params['action'] = 'edit';
    $main_row->addItem( ALItem::newFromPage( 'Wiki Aventurica:Darstellungsprobleme', $description = 'Darstellungsprobleme', $params ) );
    $main_row->addItem( ALItem::newFromPage( 'Wiki Aventurica:Darstellungsprobleme', $description = 'Fehler nach dem Update', $params ) );
    $main_row->addItem( ALItem::newFromPage( 'Wiki Aventurica:Darstellungsprobleme', $description = 'Kritik und Anregungen', $params ) );
    $main_row->addItem( ALItem::newFromPage( 'Wiki Aventurica:Darstellungsprobleme', $description = 'Probleme mit dem Spamfilter', $params ) );
    $section->addRow( $main_row );
    $admin_links_tree->addSection( $section, $next_section_header = null );
    return true;
}
Entfernen der vordefinierten Links und kompletter Neuaufbau
Erfordert einen Eingriff in den Quellcode: In AdminLinks_body.php muss zwischen // 'general' section und return $tree; alles entfernt/auskommentiert werden.
function spam_protection_links( &$admin_links_tree ) {
    // 'system information' section
    $section = new ALSection( wfMsg( 'adminlinks_general' ) );
    $main_row = new ALRow( 'main' );
    $main_row->addItem( ALItem::newFromSpecialPage( 'Statistics' ) );
    $main_row->addItem( ALItem::newFromSpecialPage( 'Version' ) );
    $main_row->addItem( ALItem::newFromSpecialPage( 'Specialpages' ) );
    $main_row->addItem( ALItem::newFromSpecialPage( 'Listgrouprights' ) );
    $main_row->addItem( ALItem::newFromSpecialPage( 'Interwiki' ) );
    $main_row->addItem( ALItem::newFromSpecialPage( 'Boilerplates' ) );
    $main_row->addItem( ALItem::newFromSpecialPage( 'Gadgets' ) );
    $main_row->addItem( ALItem::newFromSpecialPage( 'Tags' ) );
    $main_row->addItem( ALItem::newFromSpecialPage( 'AbuseFilter' ) );
    $section->addRow( $main_row );
    $admin_links_tree->addSection( $section, $next_section_header = null );
    // 'feedback and maintenance' section
    $section = new ALSection( wfMsg( 'adminlinks_feedback' ) );
    $main_row = new ALRow( 'main' );
		$main_row->addItem( ALItem::newFromPage( 'Wiki Aventurica:Kritik und Anregungen', $description = 'Kritik und Anregungen', $params = null ) );
		$main_row->addItem( ALItem::newFromPage( 'Wiki Aventurica:Probleme mit dem Spamfilter', $description = 'Probleme mit dem Spamfilter', $params = null ) );
		$main_row->addItem( ALItem::newFromPage( 'Wiki Aventurica:Darstellungsprobleme', $description = 'Darstellungsprobleme', $params = null ) );
		$main_row->addItem( ALItem::newFromPage( 'Wiki Aventurica:Fehler nach dem Update', $description = 'Fehler nach dem Update', $params = null ) );
		$main_row->addItem( ALItem::newFromPage( 'Wiki Aventurica:Gadget-Wunschliste', $description = 'Gadget-Wunschliste', $params = null ) );
		$main_row->addItem( ALItem::newFromPage( 'Wiki Aventurica:Extension-Wunschliste', $description = 'Extension-Wunschliste', $params = null ) );
    $section->addRow( $main_row );
    $main_row = new ALRow( 'important' );
    $main_row->addItem( ALItem::newFromPage( 'Wiki Aventurica:Wikiwartung', $description = 'Zentrale Wartungsseite', $params = null ) );
    $main_row->addItem( ALItem::newFromPage( 'Kategorie:Wikiwartung', $description = 'Wartungskategorie', $params = null ) );
    $main_row->addItem( ALItem::newFromPage( 'Kategorie:Genehmigung fehlt', $description = 'Dateigenehmigung unklar', $params = null ) );
    $main_row->addItem( ALItem::newFromPage( 'Kategorie:Urheber fehlt', $description = 'Datei ohne Urheberangabe', $params = null ) );
    $main_row->addItem( ALItem::newFromPage( 'Kategorie:Keine Quelle', $description = 'Artikel ohne Quelle', $params = null ) );
    $main_row->addItem( ALItem::newFromPage( 'Kategorie:Kürzen', $description = 'Artikel mit zu vielen Details', $params = null ) );
    $main_row->addItem( ALItem::newFromPage( 'Kategorie:Löschantrag', $description = 'Löschanträge', $params = null ) );
    $section->addRow( $main_row );
    $main_row = new ALRow( 'maintenance' );
    $main_row->addItem( ALItem::newFromPage( 'Wiki Aventurica:Defekte externe Links', $description = 'Defekte externe Links', $params = null ) );
    $main_row->addItem( ALItem::newFromPage( 'Kategorie:Seiten mit defekten Dateilinks', $description = 'Seiten mit defekten Dateilinks', $params = null ) );
    $main_row->addItem( ALItem::newFromSpecialPage( 'Deadendpages' ) );
    $main_row->addItem( ALItem::newFromSpecialPage( 'Lonelypages' ) );
    $section->addRow( $main_row );
    $admin_links_tree->addSection( $section, $next_section_header = null );
    // 'polls and guidelines' section
    $section = new ALSection( wfMsg( 'adminlinks_pollsguidelines' ) );
    $main_row = new ALRow( 'main' );
    $main_row->addItem( ALItem::newFromPage( 'Wiki Aventurica:Richtlinien', $description = 'Richtlinien', $params = null ) );
    $main_row->addItem( ALItem::newFromPage( 'Wiki Aventurica:Beendete Abstimmungen', $description = 'Beendete Abstimmungen', $params = null ) );
    $main_row->addItem( ALItem::newFromPage( 'Wiki Aventurica:Abstimmungen', $description = 'Abstimmungen', $params = null ) );
    $main_row->addItem( ALItem::newFromPage( 'Kategorie:Mini-Abstimmung', $description = 'Mini-Abstimmungen', $params = null ) );
    $main_row->addItem( ALItem::newFromPage( 'Kategorie:Abstimmung in Vorbereitung', $description = 'Abstimmungen in Vorbereitung', $params = null) );
    $section->addRow( $main_row );
    $main_row = new ALRow( 'guides' );
    $main_row->addItem( ALItem::newFromPage( 'Wiki Aventurica:Erstellen neuer Artikel', $description = 'Neue Artikel', $params = null ) );
    $main_row->addItem( ALItem::newFromPage( 'Wiki Aventurica:Kanon', $description = 'Kanon', $params = null ) );
    $main_row->addItem( ALItem::newFromPage( 'Wiki Aventurica:Offizielle Publikationen', $description = 'Offiziell', $params = null ) );
    $main_row->addItem( ALItem::newFromPage( 'Wiki Aventurica:Nomenklatur und Syntax für Quellenangaben', $description = 'Quellenangaben', $params = null ) );
    $main_row->addItem( ALItem::newFromPage( 'Wiki Aventurica:Quellenauswertung', $description = 'Quellenauswertung', $params = null) );
    $main_row->addItem( ALItem::newFromPage( 'Wiki Aventurica:Leitfaden zur Verwendung von Offiziellen Produkten', $description = 'Verwendung offizieller Produkte', $params = null ) );
    $main_row->addItem( ALItem::newFromPage( 'Wiki Aventurica:Lizenzbestimmungen', $description = 'Lizenzbestimmungen', $params = null ) );
    $main_row->addItem( ALItem::newFromPage( 'Wiki Aventurica:Urheberrechte beachten', $description = 'Urheberrechte', $params = null ) );
    $main_row->addItem( ALItem::newFromPage( 'Wiki Aventurica:Datenschutz', $description = 'Datenschutz', $params = null ) );
    $section->addRow( $main_row );
    $main_row = new ALRow( 'secondary' );
    $main_row->addItem( ALItem::newFromPage( 'Wiki Aventurica:Umgangston', $description = 'Umgangston', $params = null ) );
    $main_row->addItem( ALItem::newFromPage( 'Wiki Aventurica:Kritik', $description = 'Kritik an Offiziellem', $params = null ) );
    $main_row->addItem( ALItem::newFromPage( 'Wiki Aventurica:Meisterinformationen', $description = 'Umgang mit Spoilern', $params = null ) );
    $main_row->addItem( ALItem::newFromPage( 'Wiki Aventurica:Namensräume', $description = 'Namensraum-Konventionen', $params = null ) );
    $section->addRow( $main_row );
    $admin_links_tree->addSection( $section, $next_section_header = null );
    // 'logs and searching' section
    $section = new ALSection( wfMsg( 'adminlinks_browsesearch' ) );
    $main_row = new ALRow( 'main' );
    $main_row->addItem( ALItem::newFromSpecialPage( 'Prefixindex' ) );
    $main_row->addItem( ALItem::newFromSpecialPage( 'Listfiles' ) );
    $main_row->addItem( ALItem::newFromSpecialPage( 'Search' ) );
    $main_row->addItem( ALItem::newFromSpecialPage( 'Linksearch' ) );
    $main_row->addItem( ALItem::newFromSpecialPage( 'Undelete' ) );
    $main_row->addItem( ALItem::newFromSpecialPage( 'Booksources' ) );
    $main_row->addItem( ALItem::newFromSpecialPage( 'Multicategorysearch' ) );
    $section->addRow( $main_row );
    $main_row = new ALRow( 'logs' );
    $main_row->addItem( ALItem::newFromSpecialPage( 'Log' ) );
    $main_row->addItem( ALItem::newFromSpecialPage( 'Abuselog' ) );
    $main_row->addItem( ALItem::newFromSpecialPage( 'Newimages' ) );
    $main_row->addItem( ALItem::newFromSpecialPage( 'Newpages' ) );
    $section->addRow( $main_row );
    $admin_links_tree->addSection( $section, $next_section_header = null );
    // 'MediaWiki messages' section
    $section = new ALSection( wfMsg( 'adminlinks_messages' ) );
    $main_row = new ALRow( 'main' );
    $main_row->addItem( ALItem::newFromSpecialPage( 'Allmessages' ) );#wfMsg( 'adminlinks_editsitenotice' )
    $main_row->addItem( ALItem::newFromEditLink( 'Sitenotice', 'Wikiweite Ankündigung' ) );
    $main_row->addItem( ALItem::newFromEditLink( 'Sitenotice_id', 'Ankündigungs-Id' ) );
    $main_row->addItem( ALItem::newFromEditLink( 'Anonnotice', 'Ankündigung für Anonyme' ) );
    $main_row->addItem( ALItem::newFromEditLink( 'Common.css', 'CSS' ) );
    $main_row->addItem( ALItem::newFromEditLink( 'Sidebar', 'Seitenleiste' ) );
    $main_row->addItem( ALItem::newFromEditLink( 'Mainpage', 'Name der Hauptseite' ) );
    $section->addRow( $main_row );
    $main_row = new ALRow( 'spam' );
    $main_row->addItem( ALItem::newFromEditLink( 'Spam-blacklist', 'Spam-blacklist' ) );
    $main_row->addItem( ALItem::newFromEditLink( 'Spam-whitelist', 'Spam-whitelist' ) );
    $main_row->addItem( ALItem::newFromEditLink( 'Titleblacklist', 'Title-blacklist' ) );
    $main_row->addItem( ALItem::newFromEditLink( 'Titlewhitelist', 'Title-whitelist' ) );
    $section->addRow( $main_row );
    $admin_links_tree->addSection( $section, $next_section_header = null );
    // 'users' section
    $section = new ALSection( wfMsg( 'adminlinks_users' ) );
    $main_row = new ALRow( 'main' );
    $main_row->addItem( ALItem::newFromSpecialPage( 'Listusers' ) );
    $ul = SpecialPage::getTitleFor( 'Userlogin' );
    $al = SpecialPage::getTitleFor( 'AdminLinks' );
    $main_row->addItem( ALItem::newFromPage( $ul, wfMsg( 'adminlinks_createuser' ), array( 'type' => 'signup', 'returnto' => $al->getPrefixedText() ) ) );
    $main_row->addItem( ALItem::newFromSpecialPage( 'Blocklist' ) );
    global $wgUser;
    if ( $wgUser->isAllowed('userrights') ) {
        $main_row->addItem( ALItem::newFromSpecialPage( 'Userrights' ) );
        $main_row->addItem( ALItem::newFromSpecialPage( 'Renameuser' ) );
        $main_row->addItem( ALItem::newFromSpecialPage( 'Usermerge' ) );
    }
    $section->addRow( $main_row );
    $admin_links_tree->addSection( $section, $next_section_header = null );
    // 'page tools' section
    $section = new ALSection( wfMsg( 'adminlinks_importexport' ) );
    $main_row = new ALRow( 'main' );
    $main_row->addItem( ALItem::newFromSpecialPage( 'Export' ) );
    $main_row->addItem( ALItem::newFromSpecialPage( 'Import' ) );
    $main_row->addItem( ALItem::newFromSpecialPage( 'Comparepages' ) );
    $main_row->addItem( ALItem::newFromSpecialPage( 'Mergehistory' ) );
    $main_row->addItem( ALItem::newFromSpecialPage( 'Expandtemplates' ) );
    $section->addRow( $main_row );
    $admin_links_tree->addSection( $section, $next_section_header = null );    
 
    return true;
}