MediaWiki:Gadget-edit0.js:修订间差异
外观
小无编辑摘要 |
小无编辑摘要 |
||
| 第7行: | 第7行: | ||
// ** ** | // ** ** | ||
// ********************************************************************** | // ********************************************************************** | ||
// | // Optimized for MediaWiki configuration where $wgLanguageCode = 'zh' | ||
// and $wgDefaultLanguageVariant = 'zh-hans'. | |||
(function() { | if ($.inArray(mw.config.get('wgAction'), ['view', 'purge']) !== -1 && mw.config.get('wgNamespaceNumber') >= 0) { | ||
$(function edittop_hook() { | |||
'use strict'; | |||
// 1. 语言标题配置 | |||
// 键值对应 $wgVariants 的值 | |||
// | var variantTitles = { | ||
'zh-hans': '编辑首段', // 简体中文 | |||
' | 'zh-hant': '編輯首段' // 繁体中文 | ||
}; | |||
' | var defaultTitle = '编辑首段'; // 最终回退 | ||
// | // 2. 获取页面和用户配置 | ||
var wgPageName = mw.config.get('wgPageName'); | |||
var userVariant = mw.config.get('wgUserVariant'); // 优先使用用户变体 | |||
// 3. 查找必要的 DOM 元素 | |||
var $content = $('#content, #mw_content').first(); | |||
var $firstEditSection = $content.find('span.mw-editsection:not(.plainlinks)').first(); | |||
var $targetHeading = $('#mw_header h1, #content h1').first(); | |||
// 4. 前置条件检查:如果找不到编辑区块或标题,则退出 | |||
if (!$firstEditSection.length || !$targetHeading.length) { | |||
return; | |||
} | |||
// 5. 关键修复:防止重复添加 | |||
// 检查标题处是否已存在指向 section=0 的编辑链接 | |||
if ($targetHeading.find('span.mw-editsection a[href*="section=0"]').length > 0) { | |||
return; | return; | ||
} | } | ||
// | // 6. 克隆并添加编辑区块 | ||
var $clonedEditSection = $firstEditSection.clone(); | |||
$targetHeading.append($clonedEditSection); | |||
// | // 7. 确定并设置正确的标题文本 | ||
var editTitle = variantTitles[userVariant] || defaultTitle; | |||
$clonedEditSection.find('a').text(editTitle).attr('title', editTitle); | |||
// 8. 修改链接地址 | |||
$clonedEditSection.find('a').each(function() { | |||
var $link = $(this); | |||
var originalHref = $link.attr('href') || ''; | |||
var newHref; | |||
var summary = '/* top */ '; | |||
// | if (!/&(ve|)section=T/.test(originalHref)) { // 非嵌入页面 | ||
if ( | newHref = originalHref.replace(/&(ve|)section=\d+/, `&$1section=0&summary=${encodeURIComponent(summary)}`); | ||
} else if (/&vesection=/.test(originalHref)) { // 嵌入页面,VE编辑器 | |||
newHref = mw.util.getUrl(wgPageName, { | |||
veaction: 'edit', | |||
vesection: 0, | |||
summary: summary | |||
}); | |||
} else { // 嵌入页面,传统编辑器 | |||
newHref = mw.util.getUrl(wgPageName, { | |||
action: 'edit', | |||
section: 0, | |||
summary: summary | |||
}); | |||
} | } | ||
$link.attr('href', newHref); | |||
}); | }); | ||
}); | }); | ||
} | } | ||
2025年11月12日 (三) 12:31的版本
// [[en:MediaWiki:Gadget-edittop.js]]
// **********************************************************************
// ** ***WARNING GLOBAL GADGET FILE*** **
// ** changes to this file affect many users. **
// ** please discuss on the talk page before editing **
// ** **
// **********************************************************************
// Optimized for MediaWiki configuration where $wgLanguageCode = 'zh'
// and $wgDefaultLanguageVariant = 'zh-hans'.
if ($.inArray(mw.config.get('wgAction'), ['view', 'purge']) !== -1 && mw.config.get('wgNamespaceNumber') >= 0) {
$(function edittop_hook() {
'use strict';
// 1. 语言标题配置
// 键值对应 $wgVariants 的值
var variantTitles = {
'zh-hans': '编辑首段', // 简体中文
'zh-hant': '編輯首段' // 繁体中文
};
var defaultTitle = '编辑首段'; // 最终回退
// 2. 获取页面和用户配置
var wgPageName = mw.config.get('wgPageName');
var userVariant = mw.config.get('wgUserVariant'); // 优先使用用户变体
// 3. 查找必要的 DOM 元素
var $content = $('#content, #mw_content').first();
var $firstEditSection = $content.find('span.mw-editsection:not(.plainlinks)').first();
var $targetHeading = $('#mw_header h1, #content h1').first();
// 4. 前置条件检查:如果找不到编辑区块或标题,则退出
if (!$firstEditSection.length || !$targetHeading.length) {
return;
}
// 5. 关键修复:防止重复添加
// 检查标题处是否已存在指向 section=0 的编辑链接
if ($targetHeading.find('span.mw-editsection a[href*="section=0"]').length > 0) {
return;
}
// 6. 克隆并添加编辑区块
var $clonedEditSection = $firstEditSection.clone();
$targetHeading.append($clonedEditSection);
// 7. 确定并设置正确的标题文本
var editTitle = variantTitles[userVariant] || defaultTitle;
$clonedEditSection.find('a').text(editTitle).attr('title', editTitle);
// 8. 修改链接地址
$clonedEditSection.find('a').each(function() {
var $link = $(this);
var originalHref = $link.attr('href') || '';
var newHref;
var summary = '/* top */ ';
if (!/&(ve|)section=T/.test(originalHref)) { // 非嵌入页面
newHref = originalHref.replace(/&(ve|)section=\d+/, `&$1section=0&summary=${encodeURIComponent(summary)}`);
} else if (/&vesection=/.test(originalHref)) { // 嵌入页面,VE编辑器
newHref = mw.util.getUrl(wgPageName, {
veaction: 'edit',
vesection: 0,
summary: summary
});
} else { // 嵌入页面,传统编辑器
newHref = mw.util.getUrl(wgPageName, {
action: 'edit',
section: 0,
summary: summary
});
}
$link.attr('href', newHref);
});
});
}