2023年政策修订增补工作正在进行中,欢迎参与!
  • Moegirl.ICU:萌娘百科流亡社群 581077156(QQ),欢迎对萌娘百科运营感到失望的编辑者加入
  • Moegirl.ICU:账号认领正在试运行,有意者请参照账号认领流程

User:萌娘百科·娜娜奇/common.js

萌娘百科,万物皆可萌的百科全书!转载请标注来源页面的网页链接,并声明引自萌娘百科。内容不可商用。
跳转到导航 跳转到搜索

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

  • Firefox/Safari:按住“Shift”的同时单击“刷新”,或按“Ctrl-F5”或“Ctrl-R”(Mac为“⌘-R”)
  • Google Chrome:按“Ctrl-Shift-R”(Mac为“⌘-Shift-R”)
  • Internet Explorer:按住“Ctrl”的同时单击“刷新”,或按“Ctrl-F5”
  • Opera:在“工具→首选项”中清除缓存
如果您已登录但该页面出现未登录状态,请尝试在地址栏的地址最后添加代码?_=1来访问最新页面。
添加代码后的本页地址如下:-{R|https://moegirl.icu/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'
)

function loadScript(src, props) {
  src = src || ''
  props = props || {}
  var s = document.createElement('script')
  s.src = src
  for (var key in props) {
    s[key] = props[key]
  }
  document.body.appendChild(s)
  return new Promise(function (resolve, reject) {
    s.onload = resolve
    s.onerror = reject
  })
}

/** InPageEdit **/
// Global variable
var InPageEdit = window.InPageEdit || {}
// Load plugin
loadScript('http://127.0.0.1:1225/InPageEdit.js?_=' + Date.now()).then(
  function () {
    console.info('[InPageEdit] Enable dev mode')
  },
  function () {
    console.info('[InPageEdit] Cannot fetch dev server')
    mw.loader.load('https://unpkg.com/mediawiki-inpageedit')
  }
)

// 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',
}

;(function (w, mw, ipe) {
  var conf = mw.config.get()
  if (conf.wgNamespaceNumber !== 14) return
  if (conf.wgArticleId === 38120 || conf.wgArticleId === 99958) return
  $('.mw-category a').each(function () {
    var $this = $(this)
    var href = $this.attr('href')
    if (!href) return
    var title = href.replace('/', '')
    var editLink = mw.util.getUrl(title, {
      action: 'edit',
    })
    var $edit = $('<a>', {
      href: editLink,
      target: '_blank',
      text: '编辑',
    })
    $this.after($('<span>').append('&nbsp;&nbsp;(', $edit), ')')
    mw.hook('InPageEdit').add(function () {
      ipe.articleLink($edit)
    })
  })
})(window, window.mediaWiki, window.InPageEdit)

/** 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'
        }
      })
    })
})