MediaWiki:Gadget-ViewerMode.js:修订间差异
LocalAdmin(留言 | 贡献) Fix DOM injection: logout in separate portlet; fix My blog spacing |
LocalAdmin(留言 | 贡献) Use confirmed-available icons: watchlist for reader, wikiText for editor |
||
| 第6行: | 第6行: | ||
'use strict'; | 'use strict'; | ||
if ( mw.user.isAnon() ) { | if ( mw.user.isAnon() ) { return; } | ||
var STORAGE_KEY = 'mw-viewer-mode'; | var STORAGE_KEY = 'mw-viewer-mode'; | ||
var READER_ICON = 'vector-icon mw-ui-icon-watchlist mw-ui-icon-wikimedia-watchlist'; | |||
var EDITOR_ICON = 'vector-icon mw-ui-icon-wikiText mw-ui-icon-wikimedia-wikiText'; | |||
var active = localStorage.getItem( STORAGE_KEY ) === '1'; | var active = localStorage.getItem( STORAGE_KEY ) === '1'; | ||
if ( active ) { | if ( active ) { | ||
document.documentElement.classList.add( 'viewer-mode' ); | document.documentElement.classList.add( 'viewer-mode' ); | ||
| 第31行: | 第30行: | ||
if ( active ) { | if ( active ) { | ||
label.textContent = 'Editor mode'; | label.textContent = 'Editor mode'; | ||
if ( icon ) { icon.className = | if ( icon ) { icon.className = EDITOR_ICON; } | ||
} else { | } else { | ||
label.textContent = 'Reader view'; | label.textContent = 'Reader view'; | ||
if ( icon ) { icon.className = | if ( icon ) { icon.className = READER_ICON; } | ||
} | } | ||
} | } | ||
$( function () { | $( function () { | ||
// Fix missing icon on "My blog" | // Fix missing icon on "My blog" | ||
var blogLink = document.querySelector( '#pt-simpleblog_myblog a' ); | var blogLink = document.querySelector( '#pt-simpleblog_myblog a' ); | ||
if ( blogLink && !blogLink.querySelector( '.vector-icon' ) ) { | if ( blogLink && !blogLink.querySelector( '.vector-icon' ) ) { | ||
var blogIcon = document.createElement( 'span' ); | var blogIcon = document.createElement( 'span' ); | ||
blogIcon.className = 'vector-icon mw-ui-icon-article mw-ui-icon-wikimedia-article'; | blogIcon.className = 'vector-icon mw-ui-icon-article mw-ui-icon-wikimedia-article'; | ||
blogLink.insertBefore( document.createTextNode( ' ' ), blogLink.firstChild ); | blogLink.insertBefore( document.createTextNode( ' ' ), blogLink.firstChild ); | ||
blogLink.insertBefore( blogIcon, blogLink.firstChild ); | blogLink.insertBefore( blogIcon, blogLink.firstChild ); | ||
} | } | ||
// Add viewer-mode toggle | // Add viewer-mode toggle at end of p-personal list | ||
// (logout | // (logout is in its own separate portlet: p-user-menu-logout) | ||
var menuList = document.querySelector( '#p-personal .vector-menu-content-list' ); | var menuList = document.querySelector( '#p-personal .vector-menu-content-list' ); | ||
if ( !menuList ) { return; } | if ( !menuList ) { return; } | ||
| 第62行: | 第60行: | ||
var iconSpan = document.createElement( 'span' ); | var iconSpan = document.createElement( 'span' ); | ||
iconSpan.className = active | iconSpan.className = active ? EDITOR_ICON : READER_ICON; | ||
var textSpan = document.createElement( 'span' ); | var textSpan = document.createElement( 'span' ); | ||