Extension:NamespaceManager

The NamespaceManager extension allows the definition of namespaces in JSON format. This allows for easy definition and programmatic addition of namespaces. Eventually, it will feature a special page that allows for the creation and modification of namespaces on your wiki without needing to define them using.

There was an "extension" with this same name (actually, it was a helper library) many years ago, but it has not been maintained for many years and has been archived. Therefore, this extension now uses this name.

Installation
Be sure that the place where your JSON files are stored is writeable by the web server. If you are using default settings, the directory will be  where   is. On Unix and Apache 2 on a Debian distro, writeability can be achieved by running the following command from your MediaWiki installation's base directory:.

Configuration parameters

 * $wgNamespaceManagerDir: The location where your NamespaceManager JSON definition files are stored. (It should've been called $wgNamespaceManagerDataPath, and might be renamed that in a future release.) By default, it is defined as . You can change this to be either an absolute path anywhere on your filesystem or a relative path rooted in the NamespaceManager base directory and use   in the path, where   is the value of   of your wiki.

Defining namespaces
Currently, the only way to define a namespace is manually by editing the  JSON file.

See for an example of how to define a   file.

For instance, you can create a file in the following format:

[   {        "name": "Property", "content": true, "searchdefault": true, "talksearchdefault": false, "subpages": false, "talksubpages": true, "includable": true, "talkincludable": false, "aliases": ["Properties"], "talkaliases": ["Properties talk"], "editpermissions": [], "talkeditpermissions": ["propertymanagers"] },   {        "name": "Human Resources", "content": false, "searchdefault": true, "talksearchdefault": false, "subpages": true, "talksubpages": true, "includable": true, "talkincludable": false, "aliases": ["HR"], "talkaliases": ["Human Resources discussion", "HR discussion"], "editpermissions": ["hrstaff"], "talkeditpermissions": ["hrmanagers"] } ]

This would create four namespaces: Property, Property talk, Human Resources, and Human Resources talk, with IDs 3000, 3001, 3002, and 3003 respectively. The order in which the namespaces are listed determine which ID it is assigned, and all namespaces in this extension are assigned contiguously. For this reason, it is important that the order never be changed after your first page in a namespace is created.

To-do list

 * Add a special page to manage the JSON file
 * Add an option for a different offset at which to begin NamespaceManager's namespace definition
 * Add support for other extensions to integrate to use NamespaceManager

Questions about the direction of the extension

 * Should talk namespaces be represented by an entirely different object?
 * Should we let people arbitrarily pick the namespace ID if they don't want to start at 3000 and increment up methodically?
 * Should this extension also provide an option to manage the default namespaces' options?
 * What should the special page look like?