“MediaWiki:Gadget-site-shared.js”的版本间差异

添加1,443字节 、​ 2022年5月18日 (三) 09:44
// 使用Wikiplus小工具快速编辑
(// 使用Wikiplus小工具快速编辑)
 
(未显示同一用户的84个中间版本)
//<nowiki>
// Unslashifier by [[wikipedia:User:Majavah]]
// 由ResourceLoader直接调用,不可使用ES6语法
const pagename = mw.config.get('wgPageName');
/**
if (pagename.endsWith('/')) {
* @Description: 这里是桌面版和手机版通用的全局JS
const url = '/zh/' + pagename.slice(0, -1);
* @Functions: 1. 防止错误创建其他用户的用户页
window.location.href = url;
* 2. 正确显示[[特殊:前缀索引/LLWiki:首页/当年今日/]]
}
* 3. 分类栏正确显示小写标题
* 4. 分类栏正确显示词曲作者的日文名
* 5. 触摸屏将packed-hover模式的gallery替换为packed
* 6. 移除Widget造成的多余<p>标签
* 7. 禁止使用InPageEdit快速重定向
* @Dependencies: mediawiki.Title, ext.gadget.site-lib
* @Author: 如无特殊说明,均为[[User:Bhsd]]
*/
"use strict";
/* global wgULS */
const pagename = mw.config.get( 'wgPageName' ),
action = mw.config.get( 'wgAction' ),
hook = mw.hook( 'wikipage.content' );
 
/**
if (['edit', 'submit'].includes( mw.config.get('wgAction') ) && mw.config.get('wgIsProbablyEditable')) {
* @Function: 点击其他用户主页面的红链不会进入创建页面
$('body').on('click', 'span.mw-charinsert-item', function(e) {
* @Dependencies: mediawiki.Title
e.preventDefault();
*/
$('#wpTextbox1').textSelection(
hook.add(function($content) { // 必须立即解决,否则手机版会生成drawer
'encapsulateSelection', {
console.log('Hook: wikipage.content, 开始处理其他用户主页面的红链');
pre: $(this).data('mw-charinsert-start') || $(this).data('start'),
$content.find( '.new' ).attr('href', function(_, val) {
peri: '',
const query = mw.util.getParamValue('title', val);
post: $(this).data('mw-charinsert-end') || $(this).data('end')
if (!query) { return; } // 特殊页面
}
const title = new mw.Title( query ),
);
name = title.getMainText(); // 借助mediawiki.Title规范用户名格式
});
// 不处理非用户空间或用户子页面
if (title.namespace != 2 || name.includes( '/' ) || name == mw.config.get('wgUserName')) { return; }
return title.getUrl();
});
});
 
/**
* @Function: 正确显示[[特殊:前缀索引/LLWiki:首页/当年今日/]]
*/
// 非管理员不需要关心未创建的页面
if (pagename.startsWith( 'LLWiki:首页/当年今日/' ) && action == 'view' &&
(mw.config.get( 'wgArticleId' ) > 0 || mw.config.get( 'wgUserGroups' ).includes( 'sysop' ))) {
const download = function() {
if ($('#mainpage-style').length) { return; } // 避免不必要的下载
console.log('Hook: wikipage.content, 开始下载主页样式表');
mw.loader.load( '//fastly.jsdelivr.net/gh/bhsd-harry/LLWiki@1.4/widget/mainpage.min.css', 'text/css' );
hook.remove( download );
};
hook.add( download )
.add(function($content) { $content.children( '.mw-parser-output' ).addClass( 'mainpage-flex' ); });
}
 
const lcCats = ["Μ's", 'Lily white', 'JQuery'];
mw.hook('wikipage.content').add( function($content) {
mw.hook( 'wikipage.categories' ).add(function($content) {
if(['edit', 'submit'].includes( mw.config.get('wgAction') ) &&
/**
!mw.config.get('wgIsProbablyEditable') &&
* @Function: 分类栏显示小写标题
$('.editRequest').length == 1) {
*/
var ele = $('.editRequest > a'),
console.log('Hook: wikipage.categories, 开始替换小写分类');
href = new mw.Uri(ele.attr('href')),
lcCats.forEach(function(ele) {
date = new Date();
const corrected = ele[0].toLowerCase() + ele.slice(1);
href.query.preloadtitle = '编辑请求' + ' - ' + mw.config.get('wgUserName') + ' (' + date.getFullYear() + '-' + date.getMonth() + '-' + date.getDate() + ')';
$content.find('a:contains(' + ele + ')').text(function(_, text) {
ele.attr('href', href.toString());
return text.replace( RegExp('^' + ele), corrected ); // jshint ignore: line
}
});
});
}).add(function($content) {
/**
* @Function: 分类栏显示词曲作者的日文名
*/
if (mw.config.get( 'wgNamespaceNumber' ) !== 0) { return; }
console.log('Hook: wikipage.categories, 开始替换词曲作者分类');
$content.children( '#mw-normal-catlinks' ).find('a')
.filter(function() { return this.textContent.endsWith( '作' ); }).attr('lang', 'ja')
.text(function() { return this.title.slice(9); });
});
 
/**
/* 沙盒顶部 */
* @Function: 触摸屏代替gallery的hover效果
var uri = new mw.Uri();
* @Source: mediawiki.page.gallery
if( ['LLWiki:沙盒', 'Template:Sandbox'].includes(pagename) &&
*/
mw.config.get('wgAction') == 'view' &&
if (window.ontouchstart !== undefined ||
!(uri.query.diff || uri.query.oldid) ) {
window.DocumentTouch !== undefined && document instanceof window.DocumentTouch) {
var sandboxTop = $('<div>');
hook.add(function($content) {
sandboxTop.load('/zh?title=LLWiki:沙盒/顶部&variant=' + mw.config.get('wgUserVariant') + ' #mw-content-text table', function() {
console.debug('Hook: wikipage.content, 开始移除gallery的hover效果');
$content.prepend(sandboxTop.children());
$content.find( 'ul.mw-gallery-packed-hover ' ).addClass( 'mw-gallery-packed' )
});
.removeClass( 'mw-gallery-packed-hover' );
}
});
}
// 引自[[moegirl:mediawiki:common.js]]
 
if (top !== window || location.host !== 'llwiki.org') {
/**
var messageDialog = new OO.ui.MessageDialog(),
* @Function: 移除Widget造成的多余<p>标签
windowManager = new OO.ui.WindowManager();
*/
$("body").append(windowManager.$element);
hook.add(function($content) {
windowManager.addWindows([messageDialog]);
$content.find( 'p:has(script, style, link)' ).after(function() {
messageDialog.title.$label.html('<p>LLWiki提醒您</p><p>您正在非LLWiki域名' + wgULS('访问', '訪問') + '</p>');
return $(this).children( 'script, style, link' );
messageDialog.message.$label.html('<p>' + wgULS('请注意不要在此域名下输入您的用户名或密码', '請注意不要在此域名下輸入您的用戶名或密碼') + ',以策安全!</p><p>LLWiki' + wgULS('域名为 ', '域名為') + ' llwiki.org</p>');
}).filter( ':empty' ).remove();
windowManager.openWindow(messageDialog, {
actions: [{
action: "continue",
label: "我知道了",
flags: "destructive"
}, {
action: "jump",
label: "前往LLWiki",
flags: "progressive",
href: top === window ? "https://llwiki.org" : location.href,
target: "_blank"
}]
});
var timer = setInterval(function() {
if($('.oo-ui-windowManager .oo-ui-buttonElement-button').length) {
clearInterval(timer);
$('.oo-ui-windowManager .oo-ui-buttonElement-button').each(function() {
if(this.href) { $(this).off('click'); }
});
}
}, 100);
}
});
 
/**
* @Function: 禁止使用InPageEdit快速重定向
* @Dependecies: ext.gadget.site-lib
*/
mw.messages.set('gadget-ipe-warn', wgULS(
'由于InPageEdit小工具无法正确判别页面是否已存在,LLWiki暂时限制该小工具的使用。',
'由於InPageEdit小工具無法正確判別頁面是否已存在,LLWiki暫時限制該小工具的使用。'
));
const noIPE = function() {
mw.notify( mw.msg( 'gadget-ipe-warn' ), {type: 'warn', autoHide: false, tag: 'InPageEdit'} );
};
mw.hook( 'InPageEdit.quickRedirect' ).add( noIPE );
mw.hook( 'InPageEdit.quickRename' ).add( noIPE );
 
//</nowiki>
// [[category:桌面版小工具]] [[category:手机版小工具]] [[category:作为模块的小工具]] [[category:系统工具]] [[category:不可关闭的小工具]]
// {{DEFAULTSORT:site-shared.js}}
16,874

个编辑