MediaWiki:Common.js:修订间差异
外观
(未显示同一用户的3个中间版本) | |||
第1行: | 第1行: | ||
mw.loader.using(['mediawiki.util', 'oojs-ui'], function () { | mw.loader.using(['mediawiki.util', 'oojs-ui', 'mediawiki.storage'], function () { | ||
if (mw.config.get('wgCanonicalSpecialPageName') === 'Upload') { | if (mw.config.get('wgCanonicalSpecialPageName') === 'Upload') { | ||
const STORAGE_KEY = 'uploadPreference'; | |||
const savedChoice = mw.storage.get(STORAGE_KEY); | |||
// 用户之前选择了上传向导,自动跳转 | |||
if (savedChoice === 'wizard') { | |||
window.location.href = mw.util.getUrl('Special:UploadWizard'); | |||
return; | |||
} | |||
// 用户选择了继续使用传统上传,不再提示 | |||
if (savedChoice === 'classic') { | |||
return; | |||
} | |||
// 否则弹出选择窗口 | |||
var windowManager = new OO.ui.WindowManager(); | var windowManager = new OO.ui.WindowManager(); | ||
$(document.body).append(windowManager.$element); | $(document.body).append(windowManager.$element); | ||
第8行: | 第24行: | ||
UploadDialog.super.call(this, config); | UploadDialog.super.call(this, config); | ||
} | } | ||
OO.inheritClass(UploadDialog, OO.ui.ProcessDialog); | OO.inheritClass(UploadDialog, OO.ui.ProcessDialog); | ||
第14行: | 第31行: | ||
UploadDialog.static.actions = [ | UploadDialog.static.actions = [ | ||
{ | { | ||
action: 'classic', | |||
label: '❌ 使用传统上传方式(更快)', | label: '❌ 使用传统上传方式(更快)', | ||
flags: ['safe'] | flags: ['safe'] | ||
} | } | ||
]; | ]; | ||
第23行: | 第40行: | ||
UploadDialog.super.prototype.initialize.call(this); | UploadDialog.super.prototype.initialize.call(this); | ||
var panel = new OO.ui.PanelLayout({ padded: true, expanded: false }); | |||
// 创建“记住我的选择”复选框 | |||
var rememberCheckbox = new OO.ui.CheckboxInputWidget({ selected: false }); | |||
this._rememberCheckbox = rememberCheckbox; | |||
// | var rememberField = new OO.ui.FieldLayout(rememberCheckbox, { | ||
var | label: '记住我的选择,下次不再提示', | ||
align: 'inline' | |||
}); | |||
// 创建“上传向导”按钮(跳转链接形式) | |||
var wizardButton = new OO.ui.ButtonWidget({ | |||
label: '✅ 使用上传向导(推荐)', | label: '✅ 使用上传向导(推荐)', | ||
flags: [' | flags: ['primary', 'progressive'], | ||
href: mw.util.getUrl('Special:UploadWizard'), | href: mw.util.getUrl('Special:UploadWizard'), | ||
target: '_self', | target: '_self', | ||
第34行: | 第60行: | ||
}); | }); | ||
// | // 给按钮添加“记住选择”逻辑 | ||
wizardButton.on('click', () => { | |||
if (rememberCheckbox.isSelected()) { | |||
mw.storage.set(STORAGE_KEY, 'wizard'); | |||
} | |||
}); | |||
// 拼接内容 | |||
panel.$element.append( | |||
$('<p>').text('请选择你要使用的上传方式:'), | |||
$('<div>').css({ | $('<div>').css({ | ||
'margin | 'margin': '12px 0', | ||
'background': '#f8f9fa', | 'background': '#f8f9fa', | ||
'padding': '10px', | 'padding': '10px', | ||
第51行: | 第82行: | ||
$('<li>').text('支持多文件批量上传'), | $('<li>').text('支持多文件批量上传'), | ||
$('<li>').text('显示上传进度条'), | $('<li>').text('显示上传进度条'), | ||
$('<li>').text(' | $('<li>').text('信息填写更完整') | ||
), | ), | ||
$('<div>').css('margin-top', '8px').append( | $('<div>').css('margin-top', '8px').append(wizardButton.$element) | ||
), | ), | ||
$('<div>').css({ | $('<div>').css({ | ||
'margin-top': ' | 'margin-top': '15px', | ||
' | 'background': '#ffffff', | ||
'padding': '10px', | 'padding': '10px', | ||
'border': '1px dashed #bbb', | |||
'border': '1px dashed # | |||
'border-radius': '5px' | 'border-radius': '5px' | ||
}).append( | }).append( | ||
$('<strong>').text('⚡️ | $('<strong>').text('⚡️ 传统上传方式'), | ||
$('<ul>').append( | $('<ul>').append( | ||
$('<li>').text(' | $('<li>').text('界面更简单'), | ||
$('<li>').text(' | $('<li>').text('加载速度快'), | ||
$('<li>').text(' | $('<li>').text('适合上传单个文件') | ||
) | ) | ||
) | ), | ||
$('<div>').css('margin-top', '15px').append(rememberField.$element) | |||
); | ); | ||
this.$body.append( | this.$body.append(panel.$element); | ||
}; | }; | ||
UploadDialog.prototype.getActionProcess = function (action) { | UploadDialog.prototype.getActionProcess = function (action) { | ||
if (action === ' | if (action === 'classic') { | ||
return new OO.ui.Process(() => this.close( | if (this._rememberCheckbox.isSelected()) { | ||
mw.storage.set(STORAGE_KEY, 'classic'); | |||
} | |||
return new OO.ui.Process(() => this.close()); | |||
} | } | ||
return UploadDialog.super.prototype.getActionProcess.call(this, action); | return UploadDialog.super.prototype.getActionProcess.call(this, action); | ||
}; | }; | ||
var dialog = new UploadDialog(); | var dialog = new UploadDialog(); | ||
windowManager.addWindows([dialog]); | windowManager.addWindows([dialog]); |
2025年5月10日 (六) 12:08的最新版本
mw.loader.using(['mediawiki.util', 'oojs-ui', 'mediawiki.storage'], function () { if (mw.config.get('wgCanonicalSpecialPageName') === 'Upload') { const STORAGE_KEY = 'uploadPreference'; const savedChoice = mw.storage.get(STORAGE_KEY); // 用户之前选择了上传向导,自动跳转 if (savedChoice === 'wizard') { window.location.href = mw.util.getUrl('Special:UploadWizard'); return; } // 用户选择了继续使用传统上传,不再提示 if (savedChoice === 'classic') { return; } // 否则弹出选择窗口 var windowManager = new OO.ui.WindowManager(); $(document.body).append(windowManager.$element); function UploadDialog(config) { UploadDialog.super.call(this, config); } OO.inheritClass(UploadDialog, OO.ui.ProcessDialog); UploadDialog.static.name = 'UploadDialog'; UploadDialog.static.title = '请选择上传方式'; UploadDialog.static.actions = [ { action: 'classic', label: '❌ 使用传统上传方式(更快)', flags: ['safe'] } ]; UploadDialog.prototype.initialize = function () { UploadDialog.super.prototype.initialize.call(this); var panel = new OO.ui.PanelLayout({ padded: true, expanded: false }); // 创建“记住我的选择”复选框 var rememberCheckbox = new OO.ui.CheckboxInputWidget({ selected: false }); this._rememberCheckbox = rememberCheckbox; var rememberField = new OO.ui.FieldLayout(rememberCheckbox, { label: '记住我的选择,下次不再提示', align: 'inline' }); // 创建“上传向导”按钮(跳转链接形式) var wizardButton = new OO.ui.ButtonWidget({ label: '✅ 使用上传向导(推荐)', flags: ['primary', 'progressive'], href: mw.util.getUrl('Special:UploadWizard'), target: '_self', framed: true }); // 给按钮添加“记住选择”逻辑 wizardButton.on('click', () => { if (rememberCheckbox.isSelected()) { mw.storage.set(STORAGE_KEY, 'wizard'); } }); // 拼接内容 panel.$element.append( $('<p>').text('请选择你要使用的上传方式:'), $('<div>').css({ 'margin': '12px 0', 'background': '#f8f9fa', 'padding': '10px', 'border': '1px solid #ccc', 'border-radius': '5px' }).append( $('<strong>').text('✅ 上传向导(推荐)'), $('<ul>').append( $('<li>').text('支持多文件批量上传'), $('<li>').text('显示上传进度条'), $('<li>').text('信息填写更完整') ), $('<div>').css('margin-top', '8px').append(wizardButton.$element) ), $('<div>').css({ 'margin-top': '15px', 'background': '#ffffff', 'padding': '10px', 'border': '1px dashed #bbb', 'border-radius': '5px' }).append( $('<strong>').text('⚡️ 传统上传方式'), $('<ul>').append( $('<li>').text('界面更简单'), $('<li>').text('加载速度快'), $('<li>').text('适合上传单个文件') ) ), $('<div>').css('margin-top', '15px').append(rememberField.$element) ); this.$body.append(panel.$element); }; UploadDialog.prototype.getActionProcess = function (action) { if (action === 'classic') { if (this._rememberCheckbox.isSelected()) { mw.storage.set(STORAGE_KEY, 'classic'); } return new OO.ui.Process(() => this.close()); } return UploadDialog.super.prototype.getActionProcess.call(this, action); }; var dialog = new UploadDialog(); windowManager.addWindows([dialog]); windowManager.openWindow(dialog); } });