Site Notice

hello, world

Difference between revisions of "InPageEdit-v2/SDK"

From Project-EPB Commons
m ([InPageEdit] 没有编辑摘要 (第9部分))
m ([InPageEdit] →‎IPE原版工具盒: 没有编辑摘要)
 
(18 intermediate revisions by the same user not shown)
Line 7: Line 7:
  
 
最基础的调用
 
最基础的调用
<pre class="prettyprint">
+
<pre class="highlight">
 
InPageEdit.edit({
 
InPageEdit.edit({
 
   page: mw.config.get('wgPageName')
 
   page: mw.config.get('wgPageName')
Line 23: Line 23:
  
 
最基础的调用
 
最基础的调用
<pre class="prettyprint">
+
<pre class="highlight">
 
InPageEdit.redirect('from');
 
InPageEdit.redirect('from');
 
InPageEdit.redirect('to');
 
InPageEdit.redirect('to');
Line 30: Line 30:
  
 
== 快速删除 ==
 
== 快速删除 ==
<code>InPageEdit.deletepage()</code>
+
<code>InPageEdit.deletepage(page)</code>
* <code>?</code>
+
* <code>page</code> '''"string"'''
 +
** 要删除的页面,预设为当前页面
  
 
== 快速重命名 ==
 
== 快速重命名 ==
 
<code>InPageEdit.renamepage()</code>
 
<code>InPageEdit.renamepage()</code>
* <code>?</code>
+
* 打开快速重命名窗口
  
== InPageEdit设置 ==
+
== 偏好设置 ==
 
<code>InPageEdit.preference()</code>
 
<code>InPageEdit.preference()</code>
* 打开设置窗口
+
* 打开InPageEdit偏好设置窗口
  
 
<html><button onclick="InPageEdit.preference()">测试</button></html>
 
<html><button onclick="InPageEdit.preference()">测试</button></html>
Line 51: Line 52:
 
** <code>fromtext</code>: Use this text instead of the content specified by <code>fromtitle</code>, <code>fromid</code> or <code>fromrev</code>.  
 
** <code>fromtext</code>: Use this text instead of the content specified by <code>fromtitle</code>, <code>fromid</code> or <code>fromrev</code>.  
 
** <code>frompst</code>: Do a pre-save transform on <code>fromtext</code>. <b>Type:</b> boolean  
 
** <code>frompst</code>: Do a pre-save transform on <code>fromtext</code>. <b>Type:</b> boolean  
** <code">totitle</code>: Second title to compare.
+
** <code>totitle</code>: Second title to compare.
 
** <code>toid</code>: Second page ID to compare. <b>Type:</b> integer  
 
** <code>toid</code>: Second page ID to compare. <b>Type:</b> integer  
 
** <code>torev</code>: Second revision to compare. <b>Type:</b> integer
 
** <code>torev</code>: Second revision to compare. <b>Type:</b> integer
Line 59: Line 60:
  
 
最简单的示例,比较本页面最后一次修改
 
最简单的示例,比较本页面最后一次修改
<pre class="prettyprint">
+
<pre class="highlight">
 
InPageEdit.quickDiff({
 
InPageEdit.quickDiff({
 
   fromtitle: mw.config.get('wgPageName'),
 
   fromtitle: mw.config.get('wgPageName'),
Line 82: Line 83:
 
== 加载框 ==
 
== 加载框 ==
 
'''不建议使用'''<ref>'''这是一个内部模块,用于在特定步骤遮挡屏幕阻止用户的其他操作,不应该单独使用。'''<br/>如果您喜欢IPE风格的progress-bar,请使用该部件:<br/>
 
'''不建议使用'''<ref>'''这是一个内部模块,用于在特定步骤遮挡屏幕阻止用户的其他操作,不应该单独使用。'''<br/>如果您喜欢IPE风格的progress-bar,请使用该部件:<br/>
<div class="ipe-progress" style="width:300px"><div class="progress-bar"></div></div><code><nowiki><div class="ipe-progress" style="width:可规定一个长度"><div class="progress-bar"></div></div></nowiki></code></ref>
+
<div class="ipe-progress" style="width:300px"><div class="ipe-progress-bar"></div></div><code><nowiki><div class="ipe-progress" style="width:可规定一个长度"><div class="ipe-progress-bar"></div></div></nowiki></code></ref>
  
 
<code>InPageEdit.progress(title)</code>
 
<code>InPageEdit.progress(title)</code>
Line 90: Line 91:
 
** string: 以字符串为标题创建加载框
 
** string: 以字符串为标题创建加载框
  
<pre class="prettyprint">
+
<pre class="highlight">
 
function testProgress() {
 
function testProgress() {
 
   InPageEdit.progress('正在测试加载框……');
 
   InPageEdit.progress('正在测试加载框……');
Line 113: Line 114:
 
}
 
}
 
</script></html>
 
</script></html>
 +
 +
== 更新日志 ==
 +
'''Wjghj Project 的服务器不是高带宽高并发服务器,请不要过于频繁调用此模块'''<ref>'''每调用一次该模块,就会向Wjghj_Project的服务器发送一次需要处理的get请求''',这会给服务器带来一定的负荷</ref>
 +
 +
<code>InPageEdit.versionInfo()</code>
 +
* 调出更新日志的弹窗,可以在不打开Wjghj Common Wiki的情况下查看更新日志
 +
** <html><button onclick="InPageEdit.versionInfo()">测试</button></html>
  
 
== 版本号 ==
 
== 版本号 ==
'''请勿改写此变量''' '''这是一个变量,不是一个函数'''
+
'''请勿改写此变量;这是一个变量,不是一个函数'''
  
 
<code>InPageEdit.version</code>
 
<code>InPageEdit.version</code>
 
* 获取版本号
 
* 获取版本号
 
** Response: 字符串 → <code style="cursor:pointer"><html><span onclick="$(this).text(InPageEdit.version)">获取</span></html></code>
 
** Response: 字符串 → <code style="cursor:pointer"><html><span onclick="$(this).text(InPageEdit.version)">获取</span></html></code>
 +
 +
== 快速编辑工具条自定义按钮 ==
 +
可以自定义需要的按钮,按以下提示在个人js页面写入全局变量<code>window.InPageEdit.buttons</code>即可,类型为Array。
 +
<pre class="highlight lang-js">
 +
window.InPageEdit = window.InPageEdit || {}; // 务必在之前添加这一行否则会报错
 +
InPageEdit.buttons =[{
 +
  open: '<-- ', // 添加到光标前的内容
 +
  middle: '注释文字', // 选区内容占位符,选填
 +
  close: ' -->', // 添加到光标后的内容
 +
  text: 'low-vision' // 按钮标志,一个FontAwes名字
 +
}, { // 再举个栗子
 +
  open: '<s>',
 +
  middle: '删除线',
 +
  close: '</s>',
 +
  text: 'strikethrough'
 +
}];
 +
</pre>
  
 
== 实例演示 ==
 
== 实例演示 ==
 
通过IPE的扩展接口,您可以制作很多自定义插件,这里提供一些简单、实用的代码实例
 
通过IPE的扩展接口,您可以制作很多自定义插件,这里提供一些简单、实用的代码实例
 +
 +
=== IPE原版工具盒 ===
 +
这里是IPE原版右下角工具盒的源代码,只要您明白了其中的原理,便完全可以自由自定义一个工具盒
 +
{{hide|title=原版代码|content=
 +
<pre class="highlight lang-js">
 +
/**
 +
* @module toolbox 工具盒模块
 +
*/
 +
mw.hook('InPageEdit').add(({
 +
  _analysis,
 +
  _msg,
 +
  InPageEdit
 +
}) => {
 +
  var config = mw.config.get();
 +
  // 检测是否为文章页
 +
  if (!config.wgIsArticle || $('#ipe-edit-toolbox').length > 0) {
 +
    console.warn('[InPageEdit] 未载入 Toolbox');
 +
    return;
 +
  }
 +
 +
  /** IPE工具盒 **/
 +
  var $toolbox = $('<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', html: '<i class="fa fa-pencil"></i>' }).click(function () {
 +
          InPageEdit.quickEdit({
 +
            page: config.wgPageName,
 +
            revision: config.wgRevisionId
 +
          });
 +
        })
 +
      ),
 +
      $('<li>', { class: 'btn-tip-group' }).append(
 +
        $('<div>', { class: 'btn-tip', text: _msg('redirect-from') }),
 +
        $('<button>', { id: 'redirectfrom-btn', class: 'ipe-toolbox-btn', html: '<i class="fa fa-sign-in"></i>' }).click(function () {
 +
          InPageEdit.quickRedirect('from');
 +
        })
 +
      ),
 +
      $('<li>', { class: 'btn-tip-group' }).append(
 +
        $('<div>', { class: 'btn-tip', text: _msg('redirect-to') }),
 +
        $('<button>', { id: 'redirectto-btn', class: 'ipe-toolbox-btn', html: '<i class="fa fa-sign-out"></i>' }).click(function () {
 +
          InPageEdit.quickRedirect('to');
 +
        })
 +
      )
 +
    ),
 +
    $('<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', html: '<i class="fa fa-trash"></i>' }).click(function () {
 +
            InPageEdit.quickDelete();
 +
          })
 +
        ),
 +
        $('<li>', { class: 'btn-tip-group' }).append(
 +
          $('<div>', { class: 'btn-tip', text: _msg('quick-rename') }),
 +
          $('<button>', { id: 'renamepage-btn', class: 'ipe-toolbox-btn', html: '<i class="fa fa-italic"></i>' }).click(function () {
 +
            InPageEdit.quickRename();
 +
          })
 +
        ),
 +
        $('<li>', { class: 'btn-tip-group' }).append(
 +
          $('<div>', { class: 'btn-tip', text: _msg('ipe-preference') }),
 +
          $('<button>', { id: 'preference-btn', class: 'ipe-toolbox-btn', html: '<i class="fa fa-gear"></i>' }).click(function () {
 +
            InPageEdit.preference.modal();
 +
          })
 +
        )
 +
      )
 +
    ),
 +
    $('<button>', { class: 'ipe-toolbox-btn', id: 'toolbox-toggle', html: '<i class="fa fa-plus"></i>' })
 +
  );
 +
 +
  $toolbox.appendTo('body');
 +
 +
  $toolbox.find('.btn-group button').click(function () {
 +
    _analysis('tool_box')
 +
  });
 +
 +
  // 设置开关等
 +
  var toolBoxInner = $toolbox.find('#toolbox-toggle, .btn-group');
 +
  $toolbox.find('#toolbox-toggle').click(function () {
 +
    if ($(this).hasClass('opened') && !$(this).hasClass('click')) {
 +
      InPageEdit.preference.set({ lockToolBox: true });
 +
      toolBoxInner.addClass('click');
 +
    } else if ($(this).hasClass('click')) {
 +
      InPageEdit.preference.set({ lockToolBox: false });
 +
      toolBoxInner.removeClass('click');
 +
    } else {
 +
      InPageEdit.preference.set({ lockToolBox: true });
 +
      toolBoxInner.addClass('click opened');
 +
    }
 +
  });
 +
  // 如果锁定过工具盒,就自动展开
 +
  if (InPageEdit.preference.get('lockToolBox') === true) {
 +
    toolBoxInner.addClass('click opened');
 +
  }
 +
  // 鼠标覆盖与离开
 +
  $toolbox.mouseover(function () {
 +
    toolBoxInner.addClass('hover opened');
 +
  });
 +
  $toolbox.mouseout(function () {
 +
    toolBoxInner.removeClass('hover');
 +
    if (!$toolbox.find('#toolbox-toggle').hasClass('click')) {
 +
      toolBoxInner.removeClass('opened');
 +
    }
 +
  });
 +
  // 触发钩子,传递上下文
 +
  mw.hook('InPageEdit.toolbox').fire({
 +
    $toolbox
 +
  });
 +
});
 +
</pre>
 +
}}
 +
 
=== 在编辑链接后添加快速编辑链接 ===
 
=== 在编辑链接后添加快速编辑链接 ===
 
此示例代码已在Vector、Timeless以及Hydra皮肤上测试可用
 
此示例代码已在Vector、Timeless以及Hydra皮肤上测试可用
 
{{hide|title=源代码|content=
 
{{hide|title=源代码|content=
<pre class="prettyprint lang-js">
+
<pre class="highlight lang-js">
$(function(){
+
mw.hook('InPageEdit').add(function(){
 
   $('#ca-view').after(
 
   $('#ca-view').after(
 
     $('<li>',{
 
     $('<li>',{
Line 147: Line 284:
 
     )
 
     )
 
   );
 
   );
});
 
</pre>
 
}}
 
 
=== IPE原版工具盒 ===
 
这里是IPE原版右下角工具盒的源代码,只要您明白了其中的原理,便完全可以自由自定义一个工具盒
 
{{hide|title=原版代码|content=
 
<pre class="prettyprint lang-js">
 
// ipe工具盒
 
$('body').append(
 
  '<div id="ipe-edit-toolbox">' +
 
 
  // group1 上方的一列按钮
 
  '<div class="btn-group">' +
 
  '<div class="btn-tip-group"><div class="btn-tip">快速编辑</div><div id="edit-btn" class="ipe-toolbox-btn material-icons">edit</div></div>' +
 
  '<div class="btn-tip-group"><div class="btn-tip">重定向至此</div><div id="redirectfrom-btn" class="ipe-toolbox-btn material-icons">flight_land</div></div>' +
 
  '<div class="btn-tip-group"><div class="btn-tip">重定向到</div><div id="redirectto-btn" class="ipe-toolbox-btn material-icons">flight_takeoff</div></div>' +
 
  '<div class="btn-tip-group"><div class="btn-tip">自定义设置</div><div id="preference-btn" class="ipe-toolbox-btn material-icons">settings</div></div>' +
 
  '</div>' +
 
 
  // group2 左边的一排按钮
 
  '<div class="btn-group group2"><div style="display: flex;">' +
 
  '<div class="btn-tip-group"><div class="btn-tip">删除本页面</div><div id="deletepage-btn" class="ipe-toolbox-btn material-icons">delete_forever</div></div>' +
 
  '<div class="btn-tip-group"><div class="btn-tip">重命名页面</div><div id="renamepage-btn" class="ipe-toolbox-btn material-icons">format_italic</div></div>' +
 
  '<div class="btn-tip-group"><div class="btn-tip">关于&帮助</div><div id="about-btn" class="ipe-toolbox-btn material-icons">help_outline</div></div>' +
 
  '</div></div>' +
 
 
  '<div class="ipe-toolbox-btn material-icons" id="toolbox-toggle">add</div>' +
 
  '</div>');
 
$('#ipe-edit-toolbox #toolbox-toggle').click(function () {
 
  $('#ipe-edit-toolbox #toolbox-toggle').toggleClass('opened');
 
  $('#ipe-edit-toolbox .btn-group').toggle(100);
 
});
 
$('body > *:not(#ipe-edit-toolbox)').click(function () {
 
  $('#ipe-edit-toolbox #toolbox-toggle').removeClass('opened');
 
  $('#ipe-edit-toolbox .btn-group').hide(100);
 
});
 
$('#ipe-edit-toolbox .ipe-toolbox-btn').click(function () {
 
  switch ($(this).attr('id')) {
 
    case 'toolbox-toggle':
 
      break;
 
    case 'edit-btn':
 
      InPageEdit.edit({
 
        page: mw.config.get('wgPageName'),
 
        revision: mw.config.get('wgRevisionId')
 
      });
 
      break;
 
    case 'redirectfrom-btn':
 
      InPageEdit.redirect('from');
 
      break;
 
    case 'redirectto-btn':
 
      InPageEdit.redirect('to');
 
      break;
 
    case 'preference-btn':
 
      InPageEdit.preference();
 
      break;
 
    case 'deletepage-btn':
 
      InPageEdit.deletepage();
 
      break;
 
    case 'renamepage-btn':
 
      InPageEdit.renamepage();
 
      break;
 
    case 'about-btn':
 
      mw.loader.load('https://common.wjghj.cn/js/InPageEdit-v2.js/about');
 
      break;
 
    default:
 
      ssi_modal.notify('info', {
 
        className: 'in-page-edit',
 
        title: '暂未推出',
 
        content: '抱歉,这个功能还在开发中~'
 
      });
 
  }
 
 
});
 
});
 
</pre>
 
</pre>

Latest revision as of 00:23, 30 October 2020

快速编辑

InPageEdit.edit(options)

  • options: {object}
    • page: 必须;编辑的页面名
    • revision: 修订版本号,如果与当前页面版本号不同则取代
    • section: 编辑的段落编号

最基础的调用

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

<html><button onclick="InPageEdit.edit({

 page: mw.config.get('wgPageName')

});">测试</button></html>

快速重定向

InPageEdit.redirect(type)

  • type: "string"(to/from)
    • from 重定向页面至此
    • to 将此页面重定向到

最基础的调用

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

<html><button onclick="InPageEdit.redirect('from')">测试from</button> <button onclick="InPageEdit.redirect('to')">测试to</button></html>

快速删除

InPageEdit.deletepage(page)

  • page "string"
    • 要删除的页面,预设为当前页面

快速重命名

InPageEdit.renamepage()

  • 打开快速重命名窗口

偏好设置

InPageEdit.preference()

  • 打开InPageEdit偏好设置窗口

<html><button onclick="InPageEdit.preference()">测试</button></html>

比较差异

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'
});

<html><button onclick="InPageEdit.quickDiff({

 fromtitle: mw.config.get('wgPageName'),
 torelative: 'prev'

});">测试</button></html>

添加编辑链接

该模块在页面加载时将运行一次[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);
}

<html><button onclick="testProgress()">测试</button> <script> function testProgress() {

 InPageEdit.progress('正在测试加载框……');
 setTimeout(function(){
   InPageEdit.progress(true);
   setTimeout(function(){
     InPageEdit.progress(false);
   },3000);
 },5000);

} </script></html>

更新日志

Wjghj Project 的服务器不是高带宽高并发服务器,请不要过于频繁调用此模块[3]

InPageEdit.versionInfo()

  • 调出更新日志的弹窗,可以在不打开Wjghj Common Wiki的情况下查看更新日志
    • <html><button onclick="InPageEdit.versionInfo()">测试</button></html>

版本号

请勿改写此变量;这是一个变量,不是一个函数

InPageEdit.version

  • 获取版本号
    • Response: 字符串 → <html><span onclick="$(this).text(InPageEdit.version)">获取</span></html>

快速编辑工具条自定义按钮

可以自定义需要的按钮,按以下提示在个人js页面写入全局变量window.InPageEdit.buttons即可,类型为Array。

window.InPageEdit = window.InPageEdit || {}; // 务必在之前添加这一行否则会报错
InPageEdit.buttons =[{
  open: '<-- ', // 添加到光标前的内容
  middle: '注释文字', // 选区内容占位符,选填
  close: ' -->', // 添加到光标后的内容
  text: 'low-vision' // 按钮标志,一个FontAwes名字
}, { // 再举个栗子
  open: '<s>',
  middle: '删除线',
  close: '</s>',
  text: 'strikethrough'
}];

实例演示

通过IPE的扩展接口,您可以制作很多自定义插件,这里提供一些简单、实用的代码实例

IPE原版工具盒

这里是IPE原版右下角工具盒的源代码,只要您明白了其中的原理,便完全可以自由自定义一个工具盒

原版代码
/**
 * @module toolbox 工具盒模块
 */
mw.hook('InPageEdit').add(({
  _analysis,
  _msg,
  InPageEdit
}) => {
  var config = mw.config.get();
  // 检测是否为文章页
  if (!config.wgIsArticle || $('#ipe-edit-toolbox').length > 0) {
    console.warn('[InPageEdit] 未载入 Toolbox');
    return;
  }

  /** IPE工具盒 **/
  var $toolbox = $('<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', html: '<i class="fa fa-pencil"></i>' }).click(function () {
          InPageEdit.quickEdit({
            page: config.wgPageName,
            revision: config.wgRevisionId
          });
        })
      ),
      $('<li>', { class: 'btn-tip-group' }).append(
        $('<div>', { class: 'btn-tip', text: _msg('redirect-from') }),
        $('<button>', { id: 'redirectfrom-btn', class: 'ipe-toolbox-btn', html: '<i class="fa fa-sign-in"></i>' }).click(function () {
          InPageEdit.quickRedirect('from');
        })
      ),
      $('<li>', { class: 'btn-tip-group' }).append(
        $('<div>', { class: 'btn-tip', text: _msg('redirect-to') }),
        $('<button>', { id: 'redirectto-btn', class: 'ipe-toolbox-btn', html: '<i class="fa fa-sign-out"></i>' }).click(function () {
          InPageEdit.quickRedirect('to');
        })
      )
    ),
    $('<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', html: '<i class="fa fa-trash"></i>' }).click(function () {
            InPageEdit.quickDelete();
          })
        ),
        $('<li>', { class: 'btn-tip-group' }).append(
          $('<div>', { class: 'btn-tip', text: _msg('quick-rename') }),
          $('<button>', { id: 'renamepage-btn', class: 'ipe-toolbox-btn', html: '<i class="fa fa-italic"></i>' }).click(function () {
            InPageEdit.quickRename();
          })
        ),
        $('<li>', { class: 'btn-tip-group' }).append(
          $('<div>', { class: 'btn-tip', text: _msg('ipe-preference') }),
          $('<button>', { id: 'preference-btn', class: 'ipe-toolbox-btn', html: '<i class="fa fa-gear"></i>' }).click(function () {
            InPageEdit.preference.modal();
          })
        )
      )
    ),
    $('<button>', { class: 'ipe-toolbox-btn', id: 'toolbox-toggle', html: '<i class="fa fa-plus"></i>' })
  );

  $toolbox.appendTo('body');

  $toolbox.find('.btn-group button').click(function () {
    _analysis('tool_box')
  });

  // 设置开关等
  var toolBoxInner = $toolbox.find('#toolbox-toggle, .btn-group');
  $toolbox.find('#toolbox-toggle').click(function () {
    if ($(this).hasClass('opened') && !$(this).hasClass('click')) {
      InPageEdit.preference.set({ lockToolBox: true });
      toolBoxInner.addClass('click');
    } else if ($(this).hasClass('click')) {
      InPageEdit.preference.set({ lockToolBox: false });
      toolBoxInner.removeClass('click');
    } else {
      InPageEdit.preference.set({ lockToolBox: true });
      toolBoxInner.addClass('click opened');
    }
  });
  // 如果锁定过工具盒,就自动展开
  if (InPageEdit.preference.get('lockToolBox') === true) {
    toolBoxInner.addClass('click opened');
  }
  // 鼠标覆盖与离开
  $toolbox.mouseover(function () {
    toolBoxInner.addClass('hover opened');
  });
  $toolbox.mouseout(function () {
    toolBoxInner.removeClass('hover');
    if (!$toolbox.find('#toolbox-toggle').hasClass('click')) {
      toolBoxInner.removeClass('opened');
    }
  });
  // 触发钩子,传递上下文
  mw.hook('InPageEdit.toolbox').fire({
    $toolbox
  });
});

在编辑链接后添加快速编辑链接

此示例代码已在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请求,这会给服务器带来一定的负荷