跳转到内容
主菜单
主菜单
移至侧栏
隐藏
导航
首页
分类索引
最近更改
随便看看
灵兰秘典
捐助本站
帮助
帮助
联系我们
关于本站
MediaWiki帮助
USER-SIDEBAR
GROUP-SIDEBAR
CATEGORY-SIDEBAR
中医百科
搜索
搜索
外观
登录
个人工具
登录
查看“︁MediaWiki:Gadget-PrintOptions.js”︁的源代码
系统消息
讨论
English
阅读
查看源代码
查看历史
工具
工具
移至侧栏
隐藏
操作
阅读
查看源代码
查看历史
常规
链入页面
相关更改
特殊页面
页面信息
外观
移至侧栏
隐藏
←
MediaWiki:Gadget-PrintOptions.js
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
用户
此页面为本wiki上的软件提供界面文本,并受到保护以防止滥用。 如欲修改所有wiki的翻译,请访问
translatewiki.net
上的MediaWiki本地化项目。
您无权编辑此JavaScript页面,因为编辑此页面可能会影响所有访问者。
您可以查看和复制此页面的源代码。
(function() { 'use strict'; const PrintEnhancer = { windowManager: null, printDialog: null, config: { enhanced: true, noimages: false, norefs: false, notoc: false, nobackground: false, blacktext: true }, init() { if (mw.config.get('wgNamespaceNumber') < 0) return; mw.hook('wikipage.content').add(() => { const $printLink = $('#t-print a'); if (!$printLink.length) return; $printLink .text(mw.message('print-version').plain()) .off('click') .on('click', (e) => { e.preventDefault(); mw.loader.using('oojs-ui').then(() => this.createDialog()); }); mw.loader.load('oojs-ui'); }); }, createDialog() { function PrintDialog(config) { PrintDialog.super.call(this, config); } OO.inheritClass(PrintDialog, OO.ui.ProcessDialog); PrintDialog.static.name = 'printdialog'; PrintDialog.static.title = mw.message('print-dialog-title').plain(); PrintDialog.static.actions = [ { action: 'print', label: mw.message('print-action-print').plain(), flags: ['primary', 'progressive'] }, { action: 'cancel', label: mw.message('print-action-cancel').plain(), flags: 'safe' } ]; PrintDialog.prototype.initialize = function() { PrintDialog.super.prototype.initialize.apply(this, arguments); const panel = new OO.ui.PanelLayout({ padded: true, expanded: false }); const fieldset = new OO.ui.FieldsetLayout({ label: mw.message('print-options').plain() }); PrintEnhancer.questions.forEach(question => { if (question.type === 'checkbox') { const checkbox = new OO.ui.CheckboxInputWidget({ selected: PrintEnhancer.config[question.returnvalue] }); fieldset.addItems([ new OO.ui.FieldLayout(checkbox, { label: question.label, align: 'inline', help: question.help ? mw.message(questionhelp).plain() : null }) ]); question.widget = checkbox; } }); panel.$element.append(fieldset.$element); this.$body.append(panel.$element); }; PrintDialog.prototype.getActionProcess = function(action) { if (action === 'print') { return new OO.ui.Process(() => { PrintEnhancer.questions.forEach(q => { if (q.type === 'checkbox' && q.widget) { PrintEnhancer.config[q.returnvalue] = q.widget.isSelected(); } }); return this.close({ action }).then(() => { PrintEnhancer.applyPrintStyles(); return new Promise(resolve => { setTimeout(() => { window.print(); setTimeout(() => location.reload(), 500); resolve(); }, 300); }); }); }); } return PrintDialog.super.prototype.getActionProcess.call(this, action); }; if (!this.windowManager) { this.windowManager = new OO.ui.WindowManager(); $('body').append(this.windowManager.$element); } this.printDialog = new PrintDialog({ size: 'medium' }); this.windowManager.addWindows([this.printDialog]); this.windowManager.openWindow(this.printDialog); }, applyPrintStyles() { let printStyle = ''; const { config } = this; if (config.enhanced) { Array.from(document.styleSheets).forEach(sheet => { if (!sheet.media) return; try { if (sheet.media.mediaText.includes('print') && !sheet.media.mediaText.includes('screen')) { sheet.disabled = true; } if (sheet.media.mediaText.includes('screen') && !sheet.media.mediaText.includes('print')) { sheet.media.appendMedium('print'); } const rules = sheet.cssRules || sheet.rules; if (!rules) return; Array.from(rules).forEach((rule, index) => { if (rule.type === CSSRule.MEDIA_RULE && rule.media) { const media = Array.from(rule.media); const hasPrint = media.includes('print'); const hasScreen = media.includes('screen'); if (hasPrint && !hasScreen) { sheet.deleteRule(index); } else if (hasScreen && !hasPrint) { rule.media.appendMedium('print'); } } }); } catch (e) { mw.log.warn('PrintEnhancer: Could not process stylesheet', sheet.href, e); } }); } if (config.noimages) { printStyle += 'img, .thumb, figure, .gallerybox { display:none !important; }'; } if (config.norefs) { printStyle += `.references, .reference, .mw-references-wrap, .citation, .cite_journal { display:none !important; }`; } if (config.notoc) { printStyle += '#toc, .toc, .toccolours { display:none !important; }'; } if (config.nobackground) { printStyle += '* { background:none !important; }'; } if (config.blacktext) { printStyle += '* { color:#000 !important; }'; } if (printStyle) { const style = document.createElement('style'); style.setAttribute('media', 'print'); style.textContent = printStyle; document.head.appendChild(style); } }, questions: [ { label: mw.message('print-option-enhance').plain(), type: 'checkbox', help: 'print-option-enhance-help', returnvalue: 'enhanced' }, { label: mw.message('print-option-noimages').plain(), type: 'checkbox', returnvalue: 'noimages' }, { label: mw.message('print-option-norefs').plain(), type: 'checkbox', returnvalue: 'norefs' }, { label: mw.message('print-option-notoc').plain(), type: 'checkbox', returnvalue: 'notoc' }, { label: mw.message('print-option-nobg').plain(), type: 'checkbox', help: 'print-option-nobg-help', returnvalue: 'nobackground' }, { label: mw.message('print-option-blacktext').plain(), type: 'checkbox', returnvalue: 'blacktext' } ] }; mw.messages.set({ 'print-version': '可打印版本', 'print-dialog-title': '打印选项', 'print-options': '打印设置', 'print-action-print': '打印', 'print-action-cancel': '取消', 'print-option-enhance': '优化打印布局', 'print-option-enhance-help': '隐藏不必要的界面元素', 'print-option-noimages': '隐藏图片', 'print-option-norefs': '隐藏参考文献', 'print-option-notoc': '隐藏目录', 'print-option-nobg': '移除背景色', 'print-option-nobg-help': '某些浏览器可能不支持此选项', 'print-option-blacktext': '强制使用黑色文字' }); mw.hook('wikipage.content').add(() => PrintEnhancer.init()); }());
返回
MediaWiki:Gadget-PrintOptions.js
。