Extension:Admin Links

Description
Admin Links is an extension to MediaWiki that defines a special page, "Special:AdminLinks", that holds links meant to be helpful for wiki administrators; it is meant to serve as a "control panel" for the functions an administrator would typically perform in a wiki. All users can view this page; however, for those with the 'adminlinks' permission (sysops/administrators, by default), a link to the page also shows up in their user/navigation links, between "my talk" and "my preferences".

Admin Links provides a hook, and an API, for other extensions to be able to add their own links, and sections, to the page.

You can see an example of this page, with additional links and sections added by other extensions, here.

MediaWiki already provides a "Special:SpecialPages" page, which list the special pages for all the extensions installed on the wiki; which may lead you to wonder what the need is for the additional "AdminLinks" page. However, there are a number of important differences that make "AdminLinks" useful:
 * "SpecialPages" holds links to every special page in the wiki, including many (such as Unused categories), that are not specifically helpful to administrators; "AdminLinks" attempts to link only to the administrator-specific ones
 * "AdminLinks" can hold links to pages that are not special pages, such as the "Edit sidebar" page, and documentation for various extensions
 * Finally, the Admin Links extension puts a link to "AdminLinks" in administrators' user links, which makes things more convenient

Code and download
You can download the Admin Links code in either one of these two compressed files:


 * admin_links_0.1.tar.gz
 * admin_links_0.1.zip

You can also download the code directly via SVN from the MediaWiki source code repository, at http://svn.wikimedia.org/svnroot/mediawiki/trunk/extensions/AdminLinks/. From a command line, you can call the following:

To view the code online, including version history for each file, you can go here.

Installation
After you've obtained a 'AdminLinks' directory (either by extracting a compressed file or downloading via SVN), place this directory within the main MediaWiki 'extensions' directory. Then, in the file 'LocalSettings.php' in the main MediaWiki directory, add the following line:

If you want to have the members of groups other than 'sysop' see a link to the AdminLinks page among their navigation links, you can also add lines like the following after it:

Languages supported
Admin Links has full support for English.

Authors
Admin Links was written by Yaron Koren, reachable at yaron57 -at- gmail.com.

Version
Admin Links is currently at version 0.1.

The version history is:
 * 0.1 - May 13, 2009 - Initial version

The Admin Links API
In order for an extension to add links and sections to the AdminLinks page, it must define a new function, and register it with the "AdminLinks" hook. The registration should look like:

And the header of the function should look like:

The "tree" passed in to the function is of type ALTree. Each ALTree holds a group of sections, of type ALSection. A section is comprised of a group of rows, of type ALRow. A row, finally, holds a group of links or other text, each of type ALItem. The relevant methods for each are:

ALTree:


 * - retrieves the section of the tree that has this header
 * - adds a section to this tree, before the section with the specified header, if one is specified

ALSection:


 * - retrieves the row from this section that has this header
 * - adds a row to this section, before the row with the specified name, if one is specified

ALRow:


 * - adds an item to this row, before the item with the specified label, if one is specified

ALItem:


 * - creates a new ALItem object that links to a wiki page, with the ability to specify a description and parameters
 * - creates a new ALItem object that links to a special page
 * - creates a new ALItem object that links to the 'edit' action of a wiki page, with the specified text description
 * - creates a new ALItem object that links to a URL, with a specified text label

Bugs and feature requests
Send any bug reports and requests to Yaron Koren, at yaron57 -at- gmail.com.

Contributing patches to the project
If you found some bug and fixed it, or if you wrote code for a new feature, please create a patch by going to the "AdminLinks" directory, and typing:

svn diff > descriptivename.patch

Then send this patch, with a description, to Yaron Koren.