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

删除2,581字节 、​ 2022年5月18日 (三) 09:44
// 使用Wikiplus小工具快速编辑
(// 使用Wikiplus小工具快速编辑)
 
(未显示同一用户的13个中间版本)
/**
* @Description: 这里是桌面版和手机版通用的全局JS
* @Functions: 1. 除[[Special:前缀索引]]外移除页面名称最后防止错误创建其他用户"/"用户页
* 52. 正确显示[[特殊:前缀索引/LLWiki:首页/当年今日/]]
* 2. [[MediaWiki:Edittools]]可定制的快速插入工具
* 3. 取消编辑按钮添加边框分类栏正确显示小写标题
* 4. 防止错误创建其他用户分类栏正确显示词曲作者用户页日文名
* 95. 触摸屏将packed-hover模式的gallery替换为packed
* 5. 正确显示[[特殊:前缀索引/LLWiki:首页/当年今日/]]
* 106. 移除Widget造成的多余<p>标签
* 6. [[特殊:链入页面]]检索正确的繁简转换页面
* 1017. 禁止使用InPageEdit快速编辑和快速重定向
* 7. 分类栏正确显示小写标题
* @Dependencies: mediawiki.api, mediawiki.UriTitle, ext.gadget.site-lib
* 8. 分类栏正确显示词曲作者的日文名
* 9. 触摸屏将packed-hover模式的gallery替换为packed
* 10. 移除Widget造成的多余<p>标签
* 101. 禁止使用InPageEdit快速编辑和快速重定向
* @Dependencies: mediawiki.api, mediawiki.Uri, mediawiki.Title, ext.gadget.site-lib
* @Author: 如无特殊说明,均为[[User:Bhsd]]
*/
const pagename = mw.config.get( 'wgPageName' ),
action = mw.config.get( 'wgAction' ),
specialPage = mw.config.get( 'wgCanonicalSpecialPageName' ),
hook = mw.hook( 'wikipage.content' );
 
/**
* @Function: 除[[Special:前缀索引]]外去掉地址栏最后的"/"
* @Dependencies: mediawiki.Uri
* @Author: [[wikipedia:User:Majavah]]
* @EditedBy: [[User:Bhsd]]
*/
if (pagename.endsWith( '/' ) && specialPage != 'Prefixindex') {
const uri = new mw.Uri();
uri.query.title = pagename.slice(0, -1);
uri.path = '/zh'; // 原本title可能不在query参数里,而是在path里
location.replace( uri.toString() );
}
 
if (['edit', 'submit'].includes( action ) && mw.config.get( 'wgIsProbablyEditable' )) {
/**
* @Function: 更复杂的快速插入
* @Source: [[mw:Extension:CharInsert]]
* @Dependencies: jquery.textSelection(已由CharInsert扩展加载)
*/
// 这个事件不能重复添加,但#editform可能会重建
$('#bodyContent').on('click', 'span.mw-charinsert-item', function() {
$('#wpTextbox1').textSelection( 'encapsulateSelection', {pre: this.dataset.start, post: this.dataset.end} );
});
/**
* @Function: 取消编辑按钮添加边框
*/
$('#mw-editform-cancel').toggleClass('oo-ui-buttonElement-frameless oo-ui-buttonElement-framed');
}
 
/**
if ($('#mainpage-style').length) { return; } // 避免不必要的下载
console.log('Hook: wikipage.content, 开始下载主页样式表');
mw.loader.load( '//cdnfastly.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' ); });
}
 
/**
* @Function: 链入页面自动繁简转换
* @Dependencies: mediawiki.api, mediawiki.Uri, ext.gadget.site-lib
*/
const $newpage = $('#contentSub > .new, .minerva__subtitle > .new');
// 不存在的页面且不存在链入
if (specialPage == 'Whatlinkshere' && $newpage.length && $('#mw-whatlinkshere-list').length === 0) {
const target = $newpage.text();
if (/[\u4E00-\u9FCC\u3400-\u4DB5]/.test( target )) { // 不含中文字符不需要繁简转换
mw.timedQuery(new mw.Api(), {titles: target, converttitles: 1}, '繁简页面标题').then(function(data) {
const converted = data.query.pages[0];
if (converted.missing) { return; }
const uri = new mw.Uri();
uri.query.target = converted.title;
uri.query.title = 'Special:链入页面';
uri.path = '/zh';
location.replace( uri.toString() );
}, function() {});
}
}
 
/**
* @Function: 触摸屏代替gallery的hover效果
* @Source: mediawiki.page.gallery
*/
if (window.ontouchstart !== undefined ||
if (matchMedia( 'screen and (hover: none)' ).matches) {
window.DocumentTouch !== undefined && document instanceof window.DocumentTouch) {
hook.add(function($content) {
console.logdebug('Hook: wikipage.content, 开始移除gallery的hover效果');
$content.find( 'ul.mw-gallery-packed-hover ' ).toggleClassaddClass( 'mw-gallery-packed-hover mw-gallery-packed' );
.removeClass( 'mw-gallery-packed-hover' );
});
}
$content.find( 'p:has(script, style, link)' ).after(function() {
return $(this).children( 'script, style, link' );
}).filter( '.empty, :empty, :-moz-only-whitespace' ).remove();
});
 
/**
* @Function: 禁止使用InPageEdit快速编辑和快速重定向
* @Dependecies: ext.gadget.site-lib
*/
mw.messages.set('gadget-ipe-warn', wgULS({
'gadget-ipe-warn': '由于InPageEdit小工具$1,LLWiki无法正确判别页面是否已存在,LLWiki暂时限制该小工具的使用。', 'gadget-ipe-edit': '易造成编辑冲突',
'gadget-ipe-redirect': '无由於InPageEdit小工具無法正别页別頁面是否已存在,LLWiki暫時限制該小工具的使用。'
}));
}, {
},const noIPE = function() {});
'gadget-ipe-warn': '由於InPageEdit小工具$1,LLWiki暫時限制該小工具的使用。', 'gadget-ipe-edit': '易造成編輯衝突',
mw.notify( mw.msg( 'gadget-ipe-warn' ), {type: 'warn', autoHide: false, tag: 'InPageEdit'} );
'gadget-ipe-redirect': '無法正確判別頁面是否已存在'
}) );
const noIPE = function(msg) {
mw.notify( mw.msg( 'gadget-ipe-warn', mw.msg( 'gadget-ipe-' + (msg || 'redirect') ) ),
{type: 'warn', autoHide: false, tag: 'InPageEdit'} );
};
mw.hook( 'InPageEdit.quickEdit' ).add(function(data) {
data.$modalWindow.find( '.save-btn' ).prop('disabled', true);
noIPE( 'edit' );
});
mw.hook( 'InPageEdit.quickRedirect' ).add( noIPE );
mw.hook( 'InPageEdit.quickRename' ).add( noIPE );
16,874

个编辑