Go to file
2018-07-10 17:44:41 +00:00
dev-scripts Make svg_check.sh verbose 2017-12-11 16:50:56 +01:00
i18n Localisation updates from https://translatewiki.net. 2018-07-09 21:54:47 +02:00
includes Remove unnecessary MinervaResourceLoaderParsedMessageModule 2018-07-10 02:29:33 +02:00
minerva.less Update link color for Minerva skin 2018-03-14 21:56:18 +00:00
resources Merge "Hygiene: Document why selectors are needed" 2018-07-09 22:07:08 +00:00
screenshots Add skin screenshot for the installer 2017-08-11 15:36:05 -04:00
skinStyles Allow non-js users to remember login on grade C browsers 2018-06-20 11:44:23 -07:00
tests A/B test bucketing wrapper for page issues AB. 2018-06-13 15:43:08 -07:00
.eslintrc.json Add scaffolding for skin 2017-06-01 10:17:24 -07:00
.gitignore .gitignore /docs/ generated by JSDuck 2017-12-11 16:42:39 +01:00
.gitreview Use track=1 instead of defaultbranch=master in .gitreview 2016-10-24 17:30:30 -07:00
.phpcs.xml Fix some file names to match their class names 2018-04-15 16:12:45 -07:00
.rubocop.yml Port browser tests from MobileFrontend to Minerva 2017-07-11 14:11:03 -07:00
.rubocop_todo.yml Update RuboCop Ruby gem 2017-12-06 16:58:29 +01:00
.stylelintrc.json Use json extension for .stylelintrc 2017-08-19 06:46:12 +00:00
.svgo.yml Hygiene: Bring missing SVGO config file from MobileFrontend 2017-08-30 23:14:55 +00:00
CODE_OF_CONDUCT.md Add CODE_OF_CONDUCT.md 2017-06-07 13:47:45 +04:30
composer.json build: Updating mediawiki/mediawiki-codesniffer to 20.0.0 2018-05-26 08:37:53 +00:00
COPYING Add COPYING 2018-04-15 16:13:17 -07:00
Doxyfile Add MinervaNeue Doxyfile 2017-08-15 15:31:57 +00:00
Gemfile Update RuboCop Ruby gem 2017-12-06 16:58:29 +01:00
Gemfile.lock Update RuboCop Ruby gem 2017-12-06 16:58:29 +01:00
Gruntfile.js build: Organise Gruntfile.js more consistently 2017-10-31 14:41:25 -07:00
jsdoc.json Use jsdoc for generating Minerva documentation 2018-03-15 15:01:41 -07:00
MinervaNeue.php Add scaffolding for skin 2017-06-01 10:17:24 -07:00
package-lock.json Run npm test as a pre-commit hook 2018-05-02 17:18:16 +02:00
package.json Run npm test as a pre-commit hook 2018-05-02 17:18:16 +02:00
Rakefile Port browser tests from MobileFrontend to Minerva 2017-07-11 14:11:03 -07:00
README.md Doc: move config type and defaults near identity 2018-06-29 17:55:14 +00:00
skin.json Remove unnecessary MinervaResourceLoaderParsedMessageModule 2018-07-10 02:29:33 +02:00

MinervaNeue skin

The MinervaNeue skin is a responsive mobile-first skin for your mediawiki instance.

Installation

See https://www.mediawiki.org/wiki/Skin:MinervaNeue

Development

Coding conventions

Please follow the coding conventions of MobileFrontend: https://www.mediawiki.org/wiki/MobileFrontend/Coding_conventions

Config

The following configuration options will apply only to the default mobile skin - Minerva.

$wgMinervaAlwaysShowLanguageButton

  • Type: Boolean
  • Default: true

Whether to show the language switcher button even if no languages are available for the page.

$wgMinervaEnableSiteNotice

  • Type: Boolean
  • Default: false

Controls whether site notices should be shown. See https://www.mediawiki.org/wiki/Manual:$wgSiteNotice.

$wgMinervaApplyKnownTemplateHacks

  • Type: Boolean
  • Default: false

When enabled and hacks.less exists, hacks.less workarounds are included in stylesheet. These should only be needed for Wikimedia based wikis or wikis using common templates such as Template:Infobox on those wikis.

$wgMinervaPageActions

  • Type: Array
  • Default: ['edit', 'talk', 'watch', 'switch-language']

Controls which page actions, if any, are displayed. Allowed: edit, watch, talk, and switch-language.

$wgMinervaCustomLogos

  • Type: Array
  • Default: []

Make the logos configurable.

Currently, copyright, copyright-fallback, copyright-width, and copyright-height elements are supported.

  • copyright is the URL of the logo displayed in the header and footer
  • copyright-fallback is the URL of the fallback logo displayed on non-supported browsers like IE8 or Opera Mini
  • copyright-width (optional) is the width in pixels of the copyright image you want to display
  • copyright-height (optional) is the height in pixels of the copyright image you want to display
  • If the actual copyright dimensions are 200x30, then you may want to set the width and height to 100 and 15 respectively (in order to support retina screens).
  • Note that if -width and -height are not used sysadmin should ensure the image used is appropriately sized (suggested dimensions < 120px width and 18px height).

Example:

[
  'copyright' => '/images/mysite_copyright_logo.png',
  'copyright-width' => 100,
  'copyright-height' => 15,
]

Example with fallback URL:

[
  'copyright' => '/images/mysite_copyright_logo.svg',
  'copyright-fallback' => '/images/mysite_copyright_logo.svg.png',
  'copyright-width' => 100,
  'copyright-height' => 15,
]

$wgMinervaAlwaysShowLanguageButton

  • Type: Boolean
  • Default: true

Whether to show the language switcher button even if no languages are available for the page.

$wgMinervaABSamplingRate

  • Type: Number
  • Default: 0

On a scale of 0 to 1, determines the chance a user has of entering an AB test. A test is divided into 3 buckets, "control" "A" and "B". Users that are selected for the test have an equal chance of entering bucket "A" or "B", the remaining users fall into the "control" bucket and are excluded from the test.

1 - would run test on 100% of users (50% in A and 50% in B, 0 in control). 0.5 - would run test on 50% of users (25% in A, 25% in B, 50% in control). 0.05 - would run test on 5% of users (2.5% in A, 2.5% in B, 95% in control). 0 would disable the test and place all users in "control".

Group assignment is universal no matter how many tests are running since both wgMinervaABSamplingRate and mw.user.sessionId() are globals.

Group membership can be debugged from the console via:

  const AB = mw.mobileFrontend.require('skins.minerva.scripts/AB')
  new AB(
    'WME.PageIssuesAB',
    mw.config.get( 'wgMinervaABSamplingRate', 0 ),
    mw.user.sessionId()
  ).getBucket()

And since session ID is an input in calculating the group, reassignment occurs when clearing it: mw.storage.session.remove('mwuser-sessionId').