2023年政策修订增补工作正在进行中,欢迎参与!
使用者:機智的小魚君/InPageEdit/SDK
< User:机智的小鱼君 | InPageEdit
快速編輯
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: integerfromrev
: First revision to compare. Type: integerfromtext
: Use this text instead of the content specified byfromtitle
,fromid
orfromrev
.frompst
: Do a pre-save transform onfromtext
. Type: booleantotitle
: Second title to compare.toid
: Second page ID to compare. Type: integertorev
: Second revision to compare. Type: integertorelative
: Compare to a relative revision offromtitle
,fromid
orfromrev
. All the other "to" options will be ignored. Possible values:prev
,next
,cur
totext
: Use this text instead of the content specified bytotitle
,toid
,torev
, ortorelative
.topst
: Do a pre-save transform ontotext
. 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') }); }) ) ) ); }); |
注釋
- ↑ 當頁面為文章頁時,會以以下參數自動運行一次:
InPageEdit.articleLink($('#mw-content-text a:not(.new)'))
- ↑ 這是一個內部模塊,用於在特定步驟遮擋屏幕阻止用戶的其他操作,不應該單獨使用。
如果您喜歡IPE風格的progress-bar,請使用該部件:
<div class="ipe-progress" style="width:可规定一个长度"><div class="ipe-progress-bar"></div></div>
- ↑ 每調用一次該模塊,就會向Wjghj_Project的服務器發送一次需要處理的get請求,這會給服務器帶來一定的負荷