Important note: Make sure to distinguish unseen from unread One way to reproduce minerva and non-minerva notification inconsistencies: - Have all your alerts and notices seen. This is displayed with grayed out number on vector skin or no number at all, if you have (marked as) read. - Generate new alert or notice (one is enough) in your preferred way. - You can check minerva and non-minerva at this step. Both should be in sync. But don't perform any additional action. - Open the notification popup in some non-minerva skin (I have tried with vector and monobook), marking it as seen. - Check the notification icon in minerva. At this point, you should see notification displayed as unseen. The reason bug appeared in the first place is that alert/notice timestamps were mixed up when seen time is obtained. We get seen time from EchoSeenTime class, where we get smaller of the two timestamps, using PHP method `min()`. See I27109ee6a248. Then, we get last unread notification timestamp (which can be either alert or notice), and compare that to seen time. That leads to the situation when you have only one of alerts or notices with unread items, smaller timestamp is used for seen, and most recent for unread, at which point we compare timestamps for two separate things. Previous behavior of getting seen timestamps (using max instead of min) would probably solve the problem, but some other inconsistencies might arrise. This should prevent any weird and unpredictable behavior to happen. Bug: T183076 Change-Id: I20bbd6c590086b1c3eccf82983aad59eb3144a7a |
||
---|---|---|
dev-scripts | ||
i18n | ||
includes | ||
minerva.less | ||
resources | ||
screenshots | ||
skinStyles | ||
tests | ||
.eslintrc.json | ||
.gitignore | ||
.gitreview | ||
.phpcs.xml | ||
.rubocop.yml | ||
.rubocop_todo.yml | ||
.stylelintrc.json | ||
.svgo.yml | ||
CODE_OF_CONDUCT.md | ||
Doxyfile | ||
Gemfile | ||
Gemfile.lock | ||
Gruntfile.js | ||
MinervaNeue.php | ||
README.md | ||
Rakefile | ||
composer.json | ||
jsduck.json | ||
package.json | ||
skin.json |
README.md
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
Whether to show the language switcher button even if no languages are available for the page.
- Type:
Boolean
- Default:
true
$wgMinervaEnableSiteNotice
Controls whether site notices should be shown. See https://www.mediawiki.org/wiki/Manual:$wgSiteNotice.
- Type:
Boolean
- Default:
false
$wgMinervaApplyKnownTemplateHacks
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.
- Type:
Boolean
- Default:
false
$wgMinervaPageActions
Controls which page actions, if any, are displayed. Allowed: edit
, watch
, talk
, and
switch-language
.
- Type:
Array
- Default:
['edit', 'talk', 'watch', 'switch-language']
$wgMinervaCustomLogos
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 footercopyright-fallback
is the URL of the fallback logo displayed on non-supported browsers like IE8 or Opera Minicopyright-width
(optional) is the width in pixels of the copyright image you want to displaycopyright-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,
]
- Type:
Array
- Default:
[]
$wgMinervaAlwaysShowLanguageButton
Whether to show the language switcher button even if no languages are available for the page.
- Type:
Boolean
- Default:
true