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

使用者:機智的小魚君/InPageEdit/SDK

萌娘百科,萬物皆可萌的百科全書!轉載請標註來源頁面的網頁連結,並聲明引自萌娘百科。內容不可商用。
跳至導覽 跳至搜尋

快速編輯

InPageEdit.edit(options)

  • options: {object}
    • page: 必須;編輯的頁面名
    • revision: 修訂版本號,如果與當前頁面版本號不同則取代
    • section: 編輯的段落編號

最基礎的調用

InPageEdit.edit({
  page: mw.config.get('wgPageName')
});

快速重新導向

InPageEdit.redirect(type)

  • type: "string"(to/from)
    • from 重新導向頁面至此
    • to 將此頁面重新導向到

最基礎的調用

InPageEdit.redirect('from');
InPageEdit.redirect('to');

快速刪除

InPageEdit.deletepage(page)

  • page "string"
    • 要刪除的頁面,預設為當前頁面

快速重命名

InPageEdit.renamepage()

  • 打開快速重命名窗口

偏好設置

InPageEdit.preference()

  • 打開InPageEdit偏好設置窗口

比較差異

InPageEdit.quickDiff(options)

  • options: {object}
    • fromtitle: First title to compare.
    • fromid: First page ID to compare. Type: integer
    • fromrev: First revision to compare. Type: integer
    • fromtext: Use this text instead of the content specified by fromtitle, fromid or fromrev.
    • frompst: Do a pre-save transform on fromtext. Type: boolean
    • totitle: Second title to compare.
    • toid: Second page ID to compare. Type: integer
    • torev: Second revision to compare. Type: integer
    • torelative: Compare to a relative revision of fromtitle, fromid or fromrev. All the other "to" options will be ignored. Possible values: prev, next, cur
    • totext: Use this text instead of the content specified by totitle, toid, torev, or torelative.
    • topst: Do a pre-save transform on totext. Type: boolean

最簡單的示例,比較本頁面最後一次修改

InPageEdit.quickDiff({
  fromtitle: mw.config.get('wgPageName'),
  torelative: 'prev'
});

添加編輯鏈接

該模塊在頁面加載時將運行一次[1]

InPageEdit.articleLink(element)

  • element: <element>
    • 缺省值:$('#mw-content-text a:not(.new)')
    • 將該鏈接作為編輯鏈接,識別並添加快速編輯鏈接

無示例

加載框

不建議使用[2]

InPageEdit.progress(title)

  • title: "string",√boolean×
    • true: 將頂層加載框狀態切換為已完成
    • false: 關閉頂層的加載框
    • string: 以字符串為標題創建加載框
function testProgress() {
  InPageEdit.progress('正在测试加载框……');
  setTimeout(function(){
    InPageEdit.progress(true);
    setTimeout(function(){
      InPageEdit.progress(false);
    },3000);
  },5000);
}

更新日誌

Wjghj Project 的服務器不是高帶寬高並發服務器,請不要過於頻繁調用此模塊[3]

InPageEdit.versionInfo()

  • 調出更新日誌的彈窗,可以在不打開Wjghj Common Wiki的情況下查看更新日誌

版本號

請勿改寫此變量;這是一個變量,不是一個函數

InPageEdit.version

  • 獲取版本號
    • Response: 字符串

快速編輯工具條自定義按鈕

可以自定義需要的按鈕,按以下提示在個人js頁面寫入全局變量window.InPageEdit.buttons即可,類型為Array。

window.InPageEdit = window.InPageEdit || {}; // 务必在之前添加这一行否则会报错
InPageEdit.buttons =[{
  open: '<-- ', // 添加到光标前的内容
  middle: '注释文字', // 选区内容占位符,选填
  close: ' -->', // 添加到光标后的内容
  text: '<span class="material-icons">description</span>' // 按钮文字,被解析为html
}, { // 再举个栗子
  open: '<s>',
  middle: '删除线',
  close: '</s>',
  text: '<span class="material-icons">strikethrough_s</span>'
}];

實例演示

通過IPE的擴展接口,您可以製作很多自定義插件,這裡提供一些簡單、實用的代碼實例

IPE原版工具盒

這裡是IPE原版右下角工具盒的源代碼,只要您明白了其中的原理,便完全可以自由自定義一個工具盒

原版代碼
/** 
 * InPageEdit Toolbox
 * Example extension for InPageEdit-v2,
 * Default loaded for everyone.
 **/
mw.hook('InPageEdit').add(function () {
  // Not article
  if (mw.config.get('wgIsArticle') === false) {
    return;
  }

  /** 
   * ${msg} function - this is the function for load i18n-js strings
   ** You can use normally strings insteed.
   **/
  function msg(i){
    dfgh.i18n.loadMessages('InPageEdit-v2').then(function(i18n){
      return i18n.msg(i).parse();
    });
  }

  $('<div>', { id: 'ipe-edit-toolbox' }).append(
    $('<ul>', { class: 'btn-group group1' }).append(
      $('<li>', { class: 'btn-tip-group' }).append(
        $('<div>', { class: 'btn-tip', text: msg('quick-edit') }),
        $('<button>', { id: 'edit-btn', class: 'ipe-toolbox-btn material-icons', text: 'edit' })
      ),
      $('<li>', { class: 'btn-tip-group' }).append(
        $('<div>', { class: 'btn-tip', text: msg('redirect-from') }),
        $('<button>', { id: 'redirectfrom-btn', class: 'ipe-toolbox-btn material-icons', text: 'flight_land' })
      ),
      $('<li>', { class: 'btn-tip-group' }).append(
        $('<div>', { class: 'btn-tip', text: msg('redirect-to') }),
        $('<button>', { id: 'redirectto-btn', class: 'ipe-toolbox-btn material-icons', text: 'flight_takeoff' })
      )
    ),
    $('<ul>', { class: 'btn-group group2' }).append(
      $('<div>', { style: 'display: flex;' }).append(
        $('<li>', { class: 'btn-tip-group' }).append(
          $('<div>', { class: 'btn-tip', text: msg('quick-delete') }),
          $('<button>', { id: 'deletepage-btn', class: 'ipe-toolbox-btn material-icons', text: 'delete_forever' })
        ),
        $('<li>', { class: 'btn-tip-group' }).append(
          $('<div>', { class: 'btn-tip', text: msg('quick-rename') }),
          $('<button>', { id: 'renamepage-btn', class: 'ipe-toolbox-btn material-icons', text: 'format_italic' })
        ),
        $('<li>', { class: 'btn-tip-group' }).append(
          $('<div>', { class: 'btn-tip', text: msg('ipe-preference') }),
          $('<button>', { id: 'preference-btn', class: 'ipe-toolbox-btn material-icons', text: 'settings' })
        )
      )
    ),
    $('<button>', { class: 'ipe-toolbox-btn material-icons', id: 'toolbox-toggle', text: 'add' })
  ).appendTo('body');
  $('#ipe-edit-toolbox #toolbox-toggle').click(function () {
    $('#ipe-edit-toolbox #toolbox-toggle, #ipe-edit-toolbox .btn-group').toggleClass('opened');
  });
  $('body > *:not(#ipe-edit-toolbox)').click(function () {
    $('#ipe-edit-toolbox #toolbox-toggle, #ipe-edit-toolbox .btn-group').removeClass('opened');
  });
  $('#ipe-edit-toolbox .btn-group .ipe-toolbox-btn').click(function () {
    InPageEdit.analysis({ type: 'functionCount', function: '工具盒' });
    switch ($(this).attr('id')) {
      case 'edit-btn':
        InPageEdit.quickEdit({
          page: mw.config.get('wgPageName'),
          revision: mw.config.get('wgRevisionId')
        });
        break;
      case 'redirectfrom-btn':
        InPageEdit.quickRedirect('from');
        break;
      case 'redirectto-btn':
        InPageEdit.quickRedirect('to');
        break;
      case 'preference-btn':
        InPageEdit.preference();
        break;
      case 'deletepage-btn':
        InPageEdit.quickDelete();
        break;
      case 'renamepage-btn':
        InPageEdit.quickRename();
        break;
    }
  });
  mw.hook('InPageEdit.toolbox').fire();
});

在編輯鏈接後添加快速編輯鏈接

此示例代碼已在Vector、Timeless以及Hydra皮膚上測試可用

源代碼
mw.hook('InPageEdit').add(function(){
  $('#ca-view').after(
    $('<li>',{
      id:'ca-quick-edit',
      class:'collapsible'
    }).append(
      $('<span>').append(
        $('<a>',{
          href: 'javascript:void(0)'
        })
        .text('快速编辑')
        .click(function(){
          InPageEdit.edit({
            page: mw.config.get('wgPageName'),
            revision: mw.config.get('wgRevisionId')
          });
        })
      )
    )
  );
});

注釋

  1. 當頁面為文章頁時,會以以下參數自動運行一次: InPageEdit.articleLink($('#mw-content-text a:not(.new)'))
  2. 這是一個內部模塊,用於在特定步驟遮擋屏幕阻止用戶的其他操作,不應該單獨使用。
    如果您喜歡IPE風格的progress-bar,請使用該部件:
    <div class="ipe-progress" style="width:可规定一个长度"><div class="ipe-progress-bar"></div></div>
  3. 每調用一次該模塊,就會向Wjghj_Project的服務器發送一次需要處理的get請求,這會給服務器帶來一定的負荷