Extension:SpecialPagesOrganizer

On the standard MediaWiki distribution, the Specialpages special page (the one that lists all the Special Pages) is badly organized and hard to navigate. In the standard version the special pages are listed in alphabetical order and with a large amount of pages it becomes impossible to navigate. The normal way to overcome this order is to hack the code and modify SpecialSpecialpages.php, however sometimes that is unwanted. This extension provides an easy way to reorder your pages and organize them under any heading without leaving. For any pages your reorganize, the extension also allows you to change the linking text.

Old Way
The old way involved opening SpecialSpecialpages.php and recoding part of it with a giant case statement to sort all the special pages into various sections.

Installing

 * 1) Create a file called  in your extensions directory.
 * 2) Copy and paste the SpecialPagesOrganizer code into the new file
 * 3) In, create an array called   following the following template:
 * 4) In, add the following line:
 * 5) In, add any of the extensions global settings you want set.

Settings
Currently, the properties of the extension can only be effected by people with access to.

$egOrderArray
This is an associative array of arrays. The first (associative) index is named by the desired name of each section, into which the pages will be split up. Each name index points to an array of special page names that lists which pages will be displayed in the section. You have to use the official programming names of the special pages, not the names they are given on the site (I will try to list the official names of all the pages when I have time).

Make sure to define this array before you include

$egDisplayNCSP
This is a boolean that defines if the non-classified special pages should be displayed at the bottom of the specialpages page. This is provided as a tool for the admin to see what pages they have not yet thrown into another group. In general it is advised to set this to false once the desired groups are achieved.

Make sure to set this boolean after you include

$egPageNameArray
This is an associative array of strings. The associative index is the special page name (like the ones you used in . The value is the new link text for that item. For the code to work, you need the special page you are dealing with to also appear somewhere in  . An example that replaces the link text for the   special page from "Random Page" to "OMG a RANDOM PAGE!".

Make sure to set this boolean after you include

0.5

 * Really minor style changes in the code
 * Provided the ability to rename links to special pages
 * Introduced a global array

0.4

 * Introduced a license on the extension
 * Expanded the registering
 * Improved style
 * Added a function to display uncategorized pages (so that users know what pages are left)
 * Added a global variable

0.3

 * Fix "Warning: call_user_func(efReoderSpecial) [function.call-user-func]: First argument is expected to be a valid callback", "Fatal error: Call to a member function isListed on a non-object" and "Detected bug in an extension! Hook efReorderSpecial failed to return a value; should return true to continue hook processing or false to abort." (Schneelocke)

0.2

 * Extension modified to register properly on Special:Version page

Future Improvements

 * A hook will be added to the extension for an extra extension I am planning for later
 * Fancy javascript
 * Sorting of restricted pages