Halopedia:Skins/Onyx

PARDON OUR DUST! This page is still under construction.

Onyx is a MediaWiki skin designed to emulate and improve upon Oasis, the desktop skin used on wikis hosted by Wikia/FANDOM. It was primarily written by Dab1001 with help from Jack Phoenix, and is maintained by the Halopedia team. It is free and open-source under the GPL v2 license, and its source code can be found here.

First conceived in late 2018 while planning the merger of Halo Nation into Halopedia, Onyx's original aim was to ease the transition to Halopedia, for users going from Wikia's service to an independently-hosted wiki. Christened "Onyx" after the eponymous Forerunner shield world in the Halo universe, development began on the project in January 2019. Progress was slow throughout most of the year, but the skin is expected to be ready in the fourth quarter of 2019.

Since its inception, the scope of the project has expanded beyond just Halopedia, aiming to provide a fully-featured, general-purpose skin for use on any wiki. Although primarily a surrogate for Oasis, Onyx hopes to improve upon its progenitor wherever possible, with the inclusion of minor improvements and refinements, like a wide page width for more article space, and quality-of-life features like a scrolling table of contents.

Onyx also has a mobile companion skin planned, Trevelyan, which is very loosely based upon Wikia's mobile skin, Mercury. Trevelyan, however, is still in its infancy and is far from complete.

Installation
TODO

Configuration options
Onyx features a number of configuration options to allow wikis to customise it to their needs. For convenience and to avoid polluting the global namespace, all Onyx configuration options can be set using an associative array assigned to the variable. Nevertheless, if you would prefer to set each option individually as its own global variable, Onyx does support this: just convert the option name into camel case and prefix it with  - for example,   would become. The skin will prioritise values set in  over those set in individual global variables, if there is a conflict.

If any are left unset, or set to a value of an incorrect type, the skin will use a sensible default value instead. Despite this, however, it is recommended that you at least set  and , as these default to the value of  , which typically points to a square image ill-suited to the Onyx skin.

Example
This is an example Onyx configuration setup.

$wgOnyxConfig = [ 'navigation-source' => 'MediaWiki:Onyx/Navigation', 'toolbox-source' => 'MediaWiki:Onyx/Toolbox', 'banner-logo' => $wgScriptPath. '/images/4/47/myBannerLogo.png', 'header-logo' => $wgScriptPath. '/images/6/3A/myHeaderLogo.png' ];

This same configuration could also be achieved in the alternative format, like so:

$wgOnyxNavigationSource = 'MediaWiki:Onyx/Navigation'; $wgOnyxToolboxSource = 'MediaWiki:Onyx/Toolbox'; $wgOnyxBannerLogo = $wgScriptPath. '/images/4/47/myBannerLogo.png'; $wgOnyxHeaderLogo = $wgScriptPath. '/images/6/3A/myHeaderLogo.png';

List
The following is a list of all configuration options currently supported by Onyx.

Navigation and Toolbox
For the navigation and toolbox lists, Onyx implements a superset of the standard MediaWiki:Sidebar syntax. Firstly, it supports nested lists, which will manifest as dropdown menus. These can be up to two levels deep. For example, the following content would create a dropdown list labelled "Lorem", with three options: "Ipsum", "Dolor" and "Consectetur", where "Dolor" is itself a dropdown list with options "Sit" and "Amet".


 * Lorem
 * Ipsum
 * Dolor
 * Sit
 * Amet
 * Consectetur

In addition, the navigation list supports assigning 14x14 icons to the options. These either use the id of any of Onyx's built-in icons, in which case the icons will be displayed as inline SVGs (in HTML5 mode) and can hence be styled using CSS, or can be the page name of a file on the wiki, in which case the corresponding image will be scaled to the appropriate size. The syntax to assign these icons to the navigation options is as follows:


 * PAGE_TITLE  | LINK_TEXT
 * PAGE_TITLE {File:FILENAME} | LINK_TEXT

Because '<', '>', '{' and '}' are not valid characters in page titles, this syntax will never conflict with page names. However, it is not compatible with other skins, and so it is strongly advised that you do not use this syntax on any navigation list pages shared by other skins.