LLWiki正在建设中,欢迎加入我们

“User:Bhsd/edit.js”的版本间差异

来自LLWiki
跳转到导航 跳转到搜索
(// 使用Wikiplus小工具快速编辑)
标签移动版网页编辑 移动版编辑
 
(未显示同一用户的27个中间版本)
第1行: 第1行:
//<nowiki>
// 由[[Special:Mypage/common.js]]调用,可以使用ES6语法
// 由[[Special:Mypage/common.js]]调用,可以使用ES6语法
"use strict";
"use strict";
/*global mw, $*/
$(function() {
(() => {
const editBox = $('#wpTextbox1'),
const action = mw.config.get( 'wgAction' ),
btns = $('#wpSaveWidget, #wpPreviewWidget, #wpDiffWidget, #wpTemplateSandboxPreview'),
action = mw.config.get('wgAction'),
contentmodel = mw.config.get( 'wgPageContentModel' ),
contentmodel = mw.config.get( 'wgPageContentModel' ),
skin = mw.config.get( 'skin' ),
$body = $(document.body);
skin = mw.config.get('skin'),
ns = mw.config.get( 'wgNamespaceNumber' );


// 引自[[moegirl:User:東東君/js/Wikiplus-replace.js]]
// 修改WikiEditor的替换文本框
if (action == 'view' && mw.config.get( 'wgIsArticle' ) && mw.config.get( 'wgIsProbablyEditable' ) &&
if (['edit', 'submit'].includes( action )) {
(mw.isModule( 'Wikiplus', true ) || mw.isModule( 'mobile-Wikiplus', true ))) {
$('#wpTextbox1').on( 'wikiEditor-toolbar-doneInitialSections', () => {
mw.hook( 'wikiplus.dialog' ).add(() => {
$( '#wikiEditor-ui-toolbar' ).one('click', '.oo-ui-icon-articleSearch', () => {
if ($( '#Wikiplus-Quickedit-Replace' ).length) { return; }
const timer = setInterval(() => {
console.log('Hook: wikiplus.dialog,开始添加替换按钮');
if ($( '#wikieditor-toolbar-replace-replace' ).length === 0) { return; }
$('<span>', {id: "Wikiplus-Quickedit-Replace", class:"Wikiplus-Btn", text:'替换'}).click(() => {
clearInterval(timer);
let dialog = $( '.quickEdit-replace' );
const ele = $( '<textarea id="wikieditor-toolbar-replace-replace" tabindex="10">' )
if (dialog.length) {
.keydown(e => {
dialog.show();
if (e.keyCode == '13') {
return;
const text = ele.val(),
}
before = text.substring(0, ele.prop( 'selectionStart' )),
let backup = "";
after = text.substring(ele.prop( 'selectionEnd' ));
const textarea = $('#Wikiplus-Quickedit');
ele.val(before + '\n' + after);
dialog = $('<div class="quickEdit-replace">' +
}
'<label>查找:<input type="text" id="quickEdit-replace-pattern"></label>' +
});
'<label>替换:<textarea id="quickEdit-replace-val"></textarea></label>' +
$( 'input#wikieditor-toolbar-replace-replace' ).replaceWith(ele);
'<label id="quickEdit-replace-regex"><input type="checkbox">正则</label>' +
}, 100);
'<button id="quickEdit-replace_replaceBtn">替换</button>' +
});
'<button id="quickEdit-replace_undoBtn" disabled="true">撤销</button>' +
} );
'<button id="quickEdit-replace_hideBtn">关闭</button>' +
}
'</div>').appendTo( '.Wikiplus-InterBox' )
.on('click', '#quickEdit-replace_hideBtn', () => { dialog.hide(); })
.on('click', '#quickEdit-replace_undoBtn', () => { textarea.val(backup); })
.on('click', '#quickEdit-replace_replaceBtn', () => {
const ptn = $( '#quickEdit-replace-pattern' ).val(),
value = $( '#quickEdit-replace-val' ).val(),
isRegex = $( '#quickEdit-replace-regex > input' ).prop( 'checked' );
backup = textarea.val();
$( '#quickEdit-replace_undoBtn' ).prop('disabled', false);
mw.loader.using( 'mediawiki.util' ).then(() => {
const regexp = new RegExp(isRegex ? ptn : mw.util.escapeRegExp(ptn), 'g');
textarea.val( backup.replace(regexp, value) );
});
});
if (skin == 'minerva') { return; }
mw.loader.using( 'jquery.ui' ).then(() => { dialog.draggable(); });
}).insertAfter( '#Wikiplus-Quickedit-Jump' );
});
}


if (['edit', 'submit'].includes(action)) {
// 引自[[moegirl:User:東東君/js/Wikiplus-replace.js]]
// 修改WikiEditor的替换文本框
if (action == 'view' && mw.config.get( 'wgIsArticle' ) && mw.config.get( 'wgIsProbablyEditable' ) &&
if (skin == 'vector') {
(mw.loader.getState( 'ext.gadget.Wikiplus' ) == 'ready' || mw.loader.getState( 'ext.gadget.mobile-Wikiplus' ) == 'ready')) {
$('body').on('click', '#Wikiplus-Edit-TopBtn, .Wikiplus-Edit-SectionBtn', () => {
$body.on('click', 'input#wikieditor-toolbar-replace-replace', function() {
$(this).replaceWith( $('<textarea>', {id: "wikieditor-toolbar-replace-replace", tabindex:10})
const timer = setInterval(() => {
.on('keydown keypress', e => { if (e.key == 'Enter') { e.stopPropagation(); } }) );
if ($( '#Wikiplus-Quickedit-Jump' ).length === 0) { return; }
});
clearInterval(timer);
}
if ($( '#Wikiplus-Quickedit-Replace' ).length) { return; }
$( '<span id="Wikiplus-Quickedit-Replace" class="Wikiplus-Btn">替换</span>' )
.on('click', () => {
if ($( '.quickEdit-replace' ).length) {
$( '.quickEdit-replace' ).css('display', 'initial');
return;
}
let backup = "";
const textarea = $('#Wikiplus-Quickedit'),
dialog = $('<div class="quickEdit-replace"><label>查找:<input type="text" id="quickEdit-replace-pattern"></label><label>替换:<textarea id="quickEdit-replace-val"></textarea></label><label id="quickEdit-replace-regex"><input type="checkbox">正则</label><button id="quickEdit-replace_replaceBtn">替换</button><button id="quickEdit-replace_undoBtn" disabled="true">撤销</button><button id="quickEdit-replace_hideBtn">关闭</button></div>')
.appendTo('.Wikiplus-InterBox')
.on('click', '#quickEdit-replace_hideBtn', e => {
$( e.delegateTarget ).css('display', 'none');
})
.on('click', '#quickEdit-replace_undoBtn', () => { textarea.val(backup); })
.on('click', '#quickEdit-replace_replaceBtn', () => {
const ptn = $( '#quickEdit-replace-pattern' ).val(),
value = $( '#quickEdit-replace-val' ).val(),
isRegex = $('#quickEdit-replace-regex input').prop('checked');
backup = textarea.val();
$( '#quickEdit-replace_undoBtn' ).prop('disabled', false);
mw.loader.using( 'mediawiki.util' ).then(() => {
const regexp = new RegExp(isRegex ? ptn : mw.util.escapeRegExp(ptn), 'g');
textarea.val( backup.replace(regexp, value) );
});
});
mw.loader.using( 'jquery.ui' ).then(() => { dialog.draggable(); });
}).insertAfter( '#Wikiplus-Quickedit-Jump' );
}, 100);
});
}
/* JavaScript编辑界面按tab键空4格 */
if (contentmodel == 'javascript') {
$('body').on('keydown', '#wpTextbox1, #Wikiplus-Quickedit', function(e) {
if (e.keyCode == 9) {
e.preventDefault();
const text = this.value,
position = this.selectionStart,
left = text.substring(0, position),
right = text.substring( this.selectionEnd );
this.value = left + ' ' + right;
this.selectionStart = this.selectionEnd = position + 4;
}
});
}


// 修改templateSandbox的默认页面
// 修改templateSandbox的默认页面
$body.on('click', '#wpTemplateSandboxPreview', () => {
$( 'input[name=wpTemplateSandboxPage]' ).val(function() {
const $sandbox = $( 'input[name = wpTemplateSandboxPage]' );
const namespaces = mw.config.get( 'wgFormattedNamespaces' ),
if (!$sandbox.val()) {
title = mw.config.get('wgTitle');
$sandbox.val( mw.config.get( 'wgPageName' ) );
return $(this).val() || (namespaces[ns] + (ns === 0 ? '' : ':') + title);
}
});
});


// 代码统一使用Tab缩进
// 自动替换文本。由于以下代码的奇怪性质,本页面不应频繁修改,至少不能使用移动版皮肤修改
if (['javascript', 'css', 'Scribunto'].includes( contentmodel )) {
btns.on('click', () => {
$body.on('submit', '#editform', () => {
if (contentmodel == 'javascript') {
editBox.val(function() { return $(this).val().replace(/\t/g, " "); });
$( '#wpTextbox1' ).val(function() { return $(this).val().replaceAll(' ', ' '); });
});
}
}
if (skin == 'vector' || contentmodel == 'wikitext') { return; }
}
editBox.val(function() { return $(this).val().replace(/[‘’]/g, "'").replace(/[“”]/g, '"'); });
});
}) ();
//</nowiki>
});

2022年1月15日 (六) 01:02的最新版本

//<nowiki>
// 由[[Special:Mypage/common.js]]调用,可以使用ES6语法
"use strict";
/*global mw, $*/
(() => {
	const action = mw.config.get( 'wgAction' ),
		contentmodel = mw.config.get( 'wgPageContentModel' ),
		skin = mw.config.get( 'skin' ),
		$body = $(document.body);

	// 引自[[moegirl:User:東東君/js/Wikiplus-replace.js]]
	if (action == 'view' && mw.config.get( 'wgIsArticle' ) && mw.config.get( 'wgIsProbablyEditable' ) &&
		(mw.isModule( 'Wikiplus', true ) || mw.isModule( 'mobile-Wikiplus', true ))) {
		mw.hook( 'wikiplus.dialog' ).add(() => {
			if ($( '#Wikiplus-Quickedit-Replace' ).length) { return; }
			console.log('Hook: wikiplus.dialog,开始添加替换按钮');
			$('<span>', {id: "Wikiplus-Quickedit-Replace", class:"Wikiplus-Btn", text:'替换'}).click(() => {
				let dialog = $( '.quickEdit-replace' );
				if (dialog.length) {
					dialog.show();
					return;
				}
				let backup = "";
				const textarea = $('#Wikiplus-Quickedit');
				dialog = $('<div class="quickEdit-replace">' +
					'<label>查找:<input type="text" id="quickEdit-replace-pattern"></label>' +
					'<label>替换:<textarea id="quickEdit-replace-val"></textarea></label>' +
					'<label id="quickEdit-replace-regex"><input type="checkbox">正则</label>' +
					'<button id="quickEdit-replace_replaceBtn">替换</button>' +
					'<button id="quickEdit-replace_undoBtn" disabled="true">撤销</button>' +
					'<button id="quickEdit-replace_hideBtn">关闭</button>' +
				'</div>').appendTo( '.Wikiplus-InterBox' )
					.on('click', '#quickEdit-replace_hideBtn', () => { dialog.hide(); })
					.on('click', '#quickEdit-replace_undoBtn', () => { textarea.val(backup); })
					.on('click', '#quickEdit-replace_replaceBtn', () => {
					const ptn = $( '#quickEdit-replace-pattern' ).val(),
						value = $( '#quickEdit-replace-val' ).val(),
						isRegex = $( '#quickEdit-replace-regex > input' ).prop( 'checked' );
					backup = textarea.val();
					$( '#quickEdit-replace_undoBtn' ).prop('disabled', false);
					mw.loader.using( 'mediawiki.util' ).then(() => {
						const regexp = new RegExp(isRegex ? ptn : mw.util.escapeRegExp(ptn), 'g');
						textarea.val( backup.replace(regexp, value) );
					});
				});
				if (skin == 'minerva') { return; }
				mw.loader.using( 'jquery.ui' ).then(() => { dialog.draggable(); });
			}).insertAfter( '#Wikiplus-Quickedit-Jump' );
		});
	}

	if (['edit', 'submit'].includes(action)) {
		// 修改WikiEditor的替换文本框
		if (skin == 'vector') {
			$body.on('click', 'input#wikieditor-toolbar-replace-replace', function() {
				$(this).replaceWith( $('<textarea>', {id: "wikieditor-toolbar-replace-replace", tabindex:10})
					.on('keydown keypress', e => { if (e.key == 'Enter') { e.stopPropagation(); } }) );
			});
		}

		// 修改templateSandbox的默认页面
		$body.on('click', '#wpTemplateSandboxPreview', () => {
			const $sandbox = $( 'input[name = wpTemplateSandboxPage]' );
			if (!$sandbox.val()) {
				$sandbox.val( mw.config.get( 'wgPageName' ) );
			}
		});

		// 代码统一使用Tab缩进
		if (['javascript', 'css', 'Scribunto'].includes( contentmodel )) {
			$body.on('submit', '#editform', () => {
				$( '#wpTextbox1' ).val(function() { return $(this).val().replaceAll('	', '	'); });
			});
		}
	}
}) ();
//</nowiki>