注意:在保存之后,您可能需要清除浏览器缓存才能看到所作出的变更的影响。
?_=1来访问最新页面。https://mobile.moegirl.org.cn/User:%E8%90%8C%E5%A8%98%E7%99%BE%E7%A7%91%C2%B7%E5%A8%9C%E5%A8%9C%E5%A5%87/common.js?_=1/** User Gadgets **/
mw.loader.load(
'https://zh.moegirl.org.cn/index.php?title=User:机智的小鱼君/gadget/index.js&action=raw&ctype=text/javascript'
)
/**
* @param {string} src
* @param {Record<string, string>?} attrs
* @returns {Promise<HTMLScriptElement>}
*/
function loadScript(src, attrs = {}) {
return new Promise((res, rej) => {
const s = Object.assign(document.createElement('script'), { src })
Object.entries(attrs).forEach(
([k, v]) => k && v !== void 0 && s.setAttribute(k, v)
)
s.onload = () => res(s)
s.onerror = (e) => rej(e)
document.head.appendChild(s)
})
}
/** InPageEdit **/
// Global variable
var InPageEdit = window.InPageEdit || {}
// Load plugin
loadScript('http://localhost:1005/src/index.ts', { type: 'module' })
.then(() => console.info('[InPageEdit] DEV MODE'))
.catch(() =>
loadScript('https://unpkg.com/@inpageedit/core', { type: 'module' })
)
// Preferences
InPageEdit.myPreference = {
editMinor: false,
editSummary: '$section$oldid // InPageEdit-v2',
outSideClose: false,
watchList: true,
plugins: [
'toolbox.js',
'edit-any-page.js',
'code-mirror/cm6.js',
'color-preview.js',
'quick-thank.js',
'wiki-editor.js',
],
codeMirrorTheme: 'mdn-like',
}
/**
* IPE Plugin: Category Edit Links
* This plugin adds a "Edit" link after each page entry in the category page.
*
* @author dragon-fish <dragon-fish@qq.com>
* @license MIT
*/
mw.hook('InPageEdit.ready').add((ctx) => {
ctx.plugin({
name: 'category-edit-link',
inject: ['sitemeta', 'quickEdit', 'inArticleLinks'],
apply(ctx) {
const ns = ctx.sitemeta.mwConfig.get('wgNamespaceNumber')
if (ns !== 14) return
const anchors = ctx.inArticleLinks.scanAnchors(
document.querySelector('.mw-category')
)
anchors.forEach(({ $el, title }) => {
const editLink = Object.assign(document.createElement('a'), {
href: title.getURL({ action: 'edit' }).href,
textContent: '编辑',
})
editLink.addEventListener('click', (e) => {
e.preventDefault()
ctx.quickEdit({
title: title.getPrefixedDBKey(),
})
})
const wrapper = document.createElement('span')
wrapper.classList.add('in-page-edit-category-edit-link')
wrapper.append(' (', editLink, ')')
$el.after(wrapper)
})
},
})
})
/** MoeSkin switcher */
$(function () {
window.toggleMoeskin = function (status) {
if (typeof status === 'undefined') {
status = !(mw.user.options.get('skin') === 'moeskin')
} else {
status = !!status
}
var api = new mw.Api({
parameters: {
format: 'json',
formatversion: 2,
},
})
return api
.postWithToken('csrf', {
format: 'json',
action: 'options',
change: 'skin=' + (status ? 'moeskin' : 'vector'),
})
.then(function (data) {
if (data.options === 'success') {
return true
} else {
return false
}
})
}
})
/** More portletLinks */
$(function () {
var conf = mw.config.get()
// prefix index
if (conf.wgIsArticle) {
var prefixIndex = mw.util.addPortletLink(
'p-tb',
mw.util.getUrl(
'Special:PrefixIndex/' + mw.config.get('wgPageName') + '/'
),
'前缀索引',
'前缀索引'
)
prefixIndex.querySelector('a').target = '_blank'
}
// MoeSkin switcher
mw.util
.addPortletLink(
'p-navigation',
'javascript:;',
'Toggle MoeSkin',
'Toggle MoeSkin'
)
.addEventListener('click', function () {
if (this.innerText !== 'Toggle MoeSkin') return
var anchorEl = this.querySelector('a')
anchorEl.innerText = 'Loading...'
window.toggleMoeskin().then(function (res) {
if (res) {
anchorEl.innerText = 'Reloading page...'
location.reload(true)
} else {
anchorEl.innerText = 'Toggle MoeSkin'
}
})
})
})
/** MoeHomeland Dev */
$(function () {
var conf = mw.config.get()
if ($('.mainpage').length) {
var promise = import(
'http://localhost:2023/dev/autoload.ts?_=' + Date.now()
)
// ↓ ES3 polyfill
promise['catch'](function () {
// NOOP
})
}
if (
conf.wgNamespaceNumber === 0 &&
conf.wgAction === 'view' &&
conf.wgIsArticle &&
conf.wgArticleId
) {
var promise = import(
'http://localhost:4090/dev/autoload.ts?_=' + Date.now()
)
// ↓ ES3 polyfill
promise['catch'](function () {
// NOOP
})
}
})