User:A2569875/Tools/PreviewWithVariant.js
外观
< User:A2569875 | Tools
注意:保存之后,你必须清除浏览器缓存才能看到做出的更改。Google Chrome、Firefox、Microsoft Edge及Safari:按住⇧ Shift键并单击工具栏的“刷新”按钮。参阅Help:绕过浏览器缓存以获取更多帮助。
// <nowiki>
/*
本工具會在「顯示預覽」按鈕增加選單,選單裏有各種地區字詞轉換的語言
當按下「顯示預覽」後,便會以選單中所選的地區字詞來預覽
這可以毋須在保存後再切換用字模式才能看到效果,直接用預覽便可檢視各種用字模式,從而減少bug的保存
*/
(function($, mw) {
//偵測「顯示預覽」按鈕
$('#wpPreview, input[name=wpTemplateSandboxPreview]').each( function(){
var $this=$(this);
//建立菜單
var $listVariant=this.$listVariant=$('<select />')
.attr("name", ("listVariant_"+$this.attr("name")) || ("listVariant_"+$this.attr("id")) )
.attr("id" , ("listVariant_"+$this.attr("id")) || ("listVariant_"+$this.attr("name")) )
.css({
"margin-top" : "0.5em"
,"vertical-align" : "middle"
})
;
//建立菜單選項
(function addVarOpt(text, variant){
$("<option />")
.text(text)
.each( function(){
this.selected=this.defaultSelected=(mw.config.get('wgUserVariant')==(this.value=variant));
})
.appendTo($listVariant)
;
return addVarOpt;
})
(wgULS("不转换","不轉換"), "zh")
("简体", "zh-hans")
("繁體", "zh-hant")
("大陆简体", "zh-cn")
("香港繁體", "zh-hk")
("澳門繁體", "zh-mo")
("马来西亚简体", "zh-my")
("新加坡简体", "zh-sg")
("臺灣正體", "zh-tw")
("介面", "lang:qqx")
("介面簡體", "lang:zh-hans")
("介面繁體", "lang:zh-hant")
("介面英文", "lang:en")
;
//为了保障OOUI下button所包裹其span的功能,将button与其包裹的span作为整体去调整
var $insertBlock=$this.parent("span");
//安排位置
$('<span />')
.css({
"border" : "1px dashed grey"
,"white-space" : "nowrap"
,"padding" : "0px 10px 0.5em"
,"display" : "inline-block"
})
.append('<span style="vertical-align: -webkit-baseline-middle;">以<span />')
.append($listVariant)
.insertAfter($insertBlock)
.append($insertBlock)
;
//修改預覽按鈕單擊動作
$this.click( function(){
//被按下時在表單傳送字串添加variant參數
var listVariantValue=this.$listVariant.find("option:selected").get(0).value;
var is_variant = true;
if(listVariantValue.substr(0,5)==="lang:"){
listVariantValue = listVariantValue.substr(5);
is_variant = false;
}
mw.config.set('wgUserLanguage', listVariantValue);
var $form=$this.parents("form");
var new_action = $form.attr("action");
$form.attr(
"action"
,$form
.attr("action")
.replace(/\&variant\=[^\&\?\#]*($|\&)/g, "$1")
.replace(/\?variant\=[^\&\?\#]*(?:$|\&)/, "?")
.replace(/\&uselang\=[^\&\?\#]*($|\&)/g, "$1")
.replace(/\?uselang\=[^\&\?\#]*(?:$|\&)/, "?")
.replace(/\?/,"?"+(is_variant?'variant':'uselang')+"="+listVariantValue+"&")
.replace(/\&$/, "")
);
});
});
})(jQuery, mw);
// </nowiki>