打开/关闭菜单
打开/关闭外观设置菜单
打开/关闭个人菜单
未登录
未登录用户的IP地址会在进行任意编辑后公开展示。

注意:在发布之后,您可能需要清除浏览器缓存才能看到所作出的更改的影响。

  • Firefox或Safari:按住Shift的同时单击刷新,或按Ctrl-F5Ctrl-R(Mac为⌘-R
  • Google Chrome:Ctrl-Shift-R(Mac为⌘-Shift-R
  • Edge:按住Ctrl的同时单击刷新,或按Ctrl-F5
//IPE配置
/** InPageEdit Preferences */
;(window.InPageEdit = window.InPageEdit || {}).myPreference = {
  "doNotCollectMyInfo": false,
  "editMinor": true,
  "editSummary": "$section ",
  "lockToolBox": false,
  "redLinkQuickEdit": false,
  "outSideClose": false,
  "watchList": "watch",
  "noConfirmEdit": false,
  "plugins": [
    "toolbox.js",
    "wiki-editor.js",
    "code-mirror/cm6.js"
  ]
}

//IPE
mw.loader.load('https://cdn.jsdelivr.net/npm/mediawiki-inpageedit');

//批量编辑
mw.loader.load("/index.php?title=User:OctoberSama/MassEdit.js&action=raw&ctype=text/javascript");

//缓存清除
mw.loader.load("https://cdn.jsdelivr.net/gh/BearBin1215/MoegirlPedia@master/dist/gadgets/OneKeyPurge.min.js");

//高级搜索
mw.loader.load("https://cdn.jsdelivr.net/gh/BearBin1215/MoegirlPedia@master/dist/gadgets/AdvancedSearch.min.js");

//辅助工具ListEnhancer
mw.loader.load("https://zh.moegirl.org.cn/index.php?title=User:BearBin/js/ListEnhancer.js&action=raw&ctype=text/javascript");
 /* eslint-env browser, jquery */
/* global mw, $ */
(async () => {
  const CM_URL = 'https://cdn.jsdelivr.net/npm/@bhsd/codemirror-mediawiki@latest/dist/wiki.min.js'
  const CM_CSS = 'https://cdn.jsdelivr.net/npm/@bhsd/codemirror-mediawiki@latest/mediawiki.min.css'

  const CM_NS = mw.config.get('wgNamespaceNumber')
  const CM_ACTION = mw.config.get('wgAction')
  const CM_MODEL = mw.config.get('wgPageContentModel')

  // 判断是否为编辑页面
  if (!['edit', 'submit'].includes(CM_ACTION) || !['wikitext', 'javascript', 'css', 'json', 'Scribunto'].includes(CM_MODEL)) return

  await $.ready

  // 等待 wikiEditor 初始化
  const $textarea = $('#wpTextbox1')
  if (!$textarea.length) return

  await mw.loader.using(['mediawiki.Title'])

  const { CodeMirror6 } = await import(CM_URL)

  mw.util.addCSS(`@import url("${CM_CSS}");`)

  function getPageMode(title) {
    const ext = title.getExtension()?.toLowerCase()
    const ns = title.getNamespaceId()
    const isSubject = ns % 2 === 0
    if (ext === 'css' && isSubject) return [2, 8, 2300].includes(ns) ? 'css' : 'sanitized-css'
    if (ext === 'js' && isSubject) return 'javascript'
    if (ext === 'json' && isSubject) return 'json'
    if (ns === 828 && !title.getMainText().endsWith('/doc')) return 'lua'
    if (ns === 274 && !title.getMainText().endsWith('/doc')) return 'html'
    return 'mediawiki'
  }

  const title = new mw.Title(mw.config.get('wgPageName'))
  const mode = getPageMode(title)
  const cm = await CodeMirror6.fromTextArea($textarea[0], mode, CM_NS)

  if (mode === 'mediawiki') {
    const config = mw.config.get('extCodeMirrorConfig')
    if (config?.urlProtocols?.includes('\\:')) {
      config.urlProtocols = config.urlProtocols.replace(/\\:/g, ':')
    }
    cm.setLanguage('mediawiki', config)
  }

  console.log('[CodeMirror6] 启用成功')
})()