MediaWiki:Common.js/zh

页面内容不支持其他语言。
維基詞典,自由的多語言詞典

// /* 所有用戶在加載任何頁面時,這裡的JavaScript都會加載 */ /* ==定期強制用戶更新cache== */ mw.loader.using(['mediawiki.cookie']).then(function () { if( (""+mw.config.get('wgUserGroups')).indexOf("user")!=-1 && (mw.config.get('wgAction')=="view") ){ var today=new Date(); if(!$.cookie("lastload") || isNaN($.cookie("lastload")) ) { $.cookie("lastload", today.getTime()); } else { if( today.getTime()-$.cookie("lastload") >= 7*24*60*60*1000 ) { $.cookie("lastload", today.getTime()); if( $.cookie("lastload")==today.getTime() ) window.location.reload(true); } else if ( today.getTime()-$.cookie("lastload") < 0 ) { $.cookie("lastload", today.getTime()); } } } }) //返回繁簡字串 function wgULS(hans,hant,cn,tw,hk,sg,zh){ ret = { 'zh-hans':hans||cn||sg, 'zh-hant':hant||tw||hk, 'zh-cn':cn||hans||sg, 'zh-sg':sg||hans||cn, 'zh-tw':tw||hant||hk, 'zh-hk':hk||hant||tw } if (ret[mw.config.get('wgUserLanguage')]) return ret[mw.config.get('wgUserLanguage')]; else return zh||hant||hans||cn||tw||hk||sg;//保證每一語言有值 } /* 當需要時載入對應的 scripts */ $(function () { if(document.getElementById('preloadGuide')) { importScript('MediaWiki:SpecialSearch.js'); }}); /* ==模板的自动分析== */ function TempAnalysis(title) { // if (!title) return ""; var words = title.replace(/'/g /* ' */, "").split(/\s+|\s*[,.\-]\s*/); var params = words.length < 2 ? "" : words.join("|"); var src = "{{朝新|" + params + "}}"; src = src.replace(/\|+/g, "|"); src = src.replace(/\|}}$/g, "}}"); return src; // } /* == 辅助处理 == */ //功能設定 if(!window.JSConfig){var JSConfig={};} JSConfig.collapseText=wgULS('隐藏▲','隱藏▲');//指示折叠收缩的默认文字 JSConfig.expandText=wgULS('显示▼','顯示▼');//指示折叠展开的默认文字 JSConfig.autoCollapse=2; //文章少于 autoCollapse 个折叠块时,不自动折叠 JSConfig.SpecialSearchEnhancedDisabled=false; //是否禁止增加其它搜索引擎 //新的getElementsByClassName /* Developed by Robert Nyman, http://www.robertnyman.com Code/licensing: http://code.google.com/p/getelementsbyclassname/ */ var getElementsByClassName = function (elm, tag, className){ if (document.getElementsByClassName) { getElementsByClassName = function (elm, tag, className) { elm = elm || document; var elements = elm.getElementsByClassName(className); if (tag=="*") return elements; var nodeName = (tag)? new RegExp("\\b" + tag + "\\b", "i") : null, returnElements = [], current; for(var i=0, il=elements.length; i<il; i+=1){ current = elements[i]; if(!nodeName || nodeName.test(current.nodeName)) { returnElements.push(current); } } return returnElements; }; } else if (document.evaluate) { getElementsByClassName = function (elm, tag, className) { tag = tag || "*"; elm = elm || document; var classes = className.split(" "), classesToCheck = "", xhtmlNamespace = "http://www.w3.org/1999/xhtml", namespaceResolver = (document.documentElement.namespaceURI === xhtmlNamespace)? xhtmlNamespace : null, returnElements = [], elements, node; for(var j=0, jl=classes.length; j<jl; j+=1){ classesToCheck += "[contains(concat(' ', @class, ' '), ' " + classes[j] + " ')]"; } try { elements = document.evaluate(".//" + tag + classesToCheck, elm, namespaceResolver, 0, null); } catch (e) { elements = document.evaluate(".//" + tag + classesToCheck, elm, null, 0, null); } while ((node = elements.iterateNext())) { returnElements.push(node); } return returnElements; }; } else { getElementsByClassName = function (elm, tag, className) { tag = tag || "*"; elm = elm || document; var classes = className.split(" "), classesToCheck = [], elements = (tag === "*" && elm.all)? elm.all : elm.getElementsByTagName(tag), current, returnElements = [], match; for(var k=0, kl=classes.length; k<kl; k+=1){ classesToCheck.push(new RegExp("(^|\\s)" + classes[k] + "(\\s|$)")); } for(var l=0, ll=elements.length; l<ll; l+=1){ current = elements[l]; match = false; for(var m=0, ml=classesToCheck.length; m<ml; m+=1){ match = classesToCheck[m].test(current.className); if (!match) { break; } } if (match) { returnElements.push(current); } } return returnElements; }; } return getElementsByClassName(elm, tag, className); }; //遍历 function applyEach(callback,array){ var i=0,j=array.length; while(i<j){callback(array[i++]);} } // 移動元素 function elementMoveto(node, refNode, pos){//默认位置为refNode前 if(node && refNode){ var parent=refNode.parentNode; if (pos && pos=='after') {refNode=refNode.nextSibling;} try { if(refNode){ parent.insertBefore(node, refNode); }else{ parent.appendChild(node); } } catch (DOMException) {}; } } //创建元素 function createElement(tag,children,props){ var element = document.createElement(tag); if(!(children instanceof Array)){children=[children];} applyEach(function(child){ if(typeof child=='string'){child=document.createTextNode(child);} if(child){element.appendChild(child);} },children); if(typeof props=='object'){ for(var k in props){ switch(k){ case 'styles': var styles=props.styles; for(var s in styles){element.style[s]=styles[s];} break; case 'events': var events=props.events; for(var e in events){ addHandler(element,e,events[e]); } break; case 'class': element.className=props[k];break; default: element.setAttribute(k,props[k]); } } } return element; } /** * 将页面名称转换为URL * * @param page 页面名称 * @param paras 附加后缀对象,用空对象{}做参数可以取得源码 */ function getWikiPath(page,paras){ var reg=/^[a-z]+:/; var pre=page.match(reg); pre = pre && wgProjectURL[pre[0].replace(/:$/,'').toLowerCase()]; if (pre) {page=page.replace(reg,'');} else {pre=mw.config.get('wgServer');} //保障没有相对路径,以照顾在线代理。 var url = pre + mw.config.get('wgScript') + '?title=' + encodeURI( page.replace( ' ', '_' ) ); if(typeof paras=='object'){ paras.ctype=paras.ctype||'text'; paras.dontcountme=paras.dontcountme||'s'; paras.action=paras.action||'raw'; for(var k in paras){url += '&' + k + '=' + paras[k]; } } return url; } //引入[[Special:Gadgets]]要求的腳本和樣式 if(window.requireScripts instanceof Array){ applyEach(importScript,requireScripts); } if(window.requireStylesheets instanceof Array){ applyEach(importStylesheet,requireStylesheets); } /* == IE兼容性修正 == */ function fixIE(){ } /* == 增加摺疊功能 == */ /** 摺疊 div table ***************************** * Description: 实现div.NavFrame和table.collapsible的可折叠性。 * JSConfig的collapseText、expandText、autoCollapse属性定义默认文字和默认最少自动折叠块 * Maintainers: User:fdcn */ function cancelBubble(e){ e=e||window.event; if(e.stopPropagation){e.stopPropagation();}else{e.cancelBubble=true;} } //修正摺疊後定位變化 //hookEvent("load",function(){if(location.hash){location.href=location.hash;}}); /* == 首頁輸出修正 == */ /** 首页输出修正 ******************************************************* 描述: 维护者: [[User:Fdcn]] */ // "首頁" == wgTitle 代表重定向頁 if ( mw.config.get('wgIsMainPage') ) { mw.loader.using(['mediawiki.util']).then(function () { $( function () { mw.util.addPortletLink('p-lang', getWikiPath('Wiktionary:维基词典语言列表'), wgULS('维基词典语言列表','維基詞典語言列表'), 'interwiki-completelist',wgULS('维基词典的完整各语言列表', '維基詞典的完整各語言列表')); }); }); } /* == 取消討論頁的[+]按鈕 == */ $(function () { if(document.getElementById('no-newsection') && document.getElementById('ca-addsection')) { document.getElementById('ca-addsection').style.display="none"; } }); /* ==WikiMiniAtlas世界地圖== */ /** * WikiMiniAtlas is a popup click and drag world map. * See [[meta:WikiMiniAtlas]] for more information. * 創建者: [[en:User:Dschwen]] */ mw.loader.load( '//meta.wikimedia.org/w/index.php?title=MediaWiki:Wikiminiatlas.js&action=raw&ctype=text/javascript' ); /* ==反frame== */ try { if (top.location != self.location) { top.location.replace(self.location); } }catch(ex){ top.location.replace(self.location); } /* ==保護選項校正== */ if(mw.config.get('wgAction')=="protect") { $( function(){ var pform=document.getElementById("mw-Protect-Form"); var timeoptions; timeoptions=pform["wpProtectExpirySelection-edit"].options; if(timeoptions[0].value!="existing"){ timeoptions[timeoptions.length-1].selected=true; ProtectionForm.updateExpiryList(pform["wpProtectExpirySelection-edit"]); } timeoptions=pform["wpProtectExpirySelection-move"].options; if(timeoptions[0].value!="existing"){ timeoptions[timeoptions.length-1].selected=true; ProtectionForm.updateExpiryList(pform["wpProtectExpirySelection-move"]); } }); } /* ==擷取選單文字按鈕== */ function addGetMenuTextButton(id, srcMenu, targetText, tiptext, afterSelIdx) { var btnAdd=createElement("a", ((!tiptext)?"(+)":tiptext), { 'id': id , 'href' : '#' }); btnAdd.srcMenu=srcMenu; btnAdd.targetText=targetText; btnAdd.afterSelIdx=(!afterSelIdx || isNaN(afterSelIdx))?0:afterSelIdx; btnAdd.onclick=function(){ this.targetText.value+=this.srcMenu.options[srcMenu.selectedIndex].value; srcMenu.selectedIndex=this.afterSelIdx; return false; } srcMenu.parentNode.appendChild(btnAdd); } /* ==避免在主條目中出現捲軸框== */ if(!mw.config.get('wgCanonicalNamespace')) $( function(){ var divs=document.getElementsByTagName("div"); for(var i=0; i<divs.length; i++){ if(divs[i].id=="CContentList"){ if(divs[i].parentNode.parentNode.id=="TagConversionHeader") continue; } if(divs[i].style.overflow.toLowerCase()=="auto" && divs[i].getElementsByTagName("img").length==0){ divs[i].style.overflow=""; divs[i].style.overflowY="visible"; divs[i].style.padding=""; divs[i].style.border=""; divs[i].style.height=""; } } }); /* == metaBox == HERE STARTS THE WORKING-CODE OF "METABOXES"*/ /* Funcionament de la Plantilla:Metacaixa Implementat per: Usuari:Peleguer. Actualitzat per Joanjoc seguint les indicacions d'en Martorell */ function MetaCaixaInit(){ //S'executa al carregar-se la pàgina, si hi ha metacaixes, // s'assignen els esdeveniments als botons //alert("MetaCaixaInit"); var i=0 //Inicialitzem comptador de caixes for (i=0;i<=9;i++){ var vMc = document.getElementById("mc"+i); if (!vMc) break; //alert("MetaCaixaInit, trobada Metacaixa mc"+i); var j=1 //Inicialitzem comptador de botons dins de la caixa var vPsIni = 0 //Pestanya visible inicial for (j=1;j<=9;j++){ var vBt = document.getElementById("mc"+i+"bt"+j); if (!vBt) break; //alert("MetaCaixaInit, trobat botó mc"+i+"bt"+j); vBt.onclick = MetaCaixaMostraPestanya; //A cada botó assignem l'esdeveniment onclick //alert (vBt.className); if (vBt.className=="mcBotoSel") vPsIni=j; //Si tenim un botó seleccionat, en guardem l'index } //alert ("mc="+i+", ps="+j+", psini="+vPsIni ); if (vPsIni == 0) { //Si no tenim cap botó seleccionat, n'agafem un aleatòriament vPsIni = 1+Math.floor((j-1)*Math.random()) ; //alert ("Activant Pestanya a l'atzar; _mc"+i+"bt"+vPsIni +"_"); document.getElementById("mc"+i+"ps"+vPsIni).style.display = "block"; document.getElementById("mc"+i+"ps"+vPsIni).style.visibility = "visible"; document.getElementById("mc"+i+"bt"+vPsIni).className="mcBotoSel"; } } } function MetaCaixaMostraPestanya(){ //S'executa al clicar una pestanya, //aquella es fa visible i les altres s'oculten var vMcNom = this.id.substr(0,3); //A partir del nom del botó, deduïm el nom de la caixa var vIndex = this.id.substr(5,1); //I l'index var i=1 for (i=1;i<=9;i++){ //busquem totes les pestanyes d'aquella caixa //alert(vMcNom+"ps"+i); var vPsElem = document.getElementById(vMcNom+"ps"+i); if (!vPsElem) break; if (vIndex==i){ //Si és la pestanya bona la mostrem i canviem la classe de botó vPsElem.style.display = "block"; vPsElem.style.visibility = "visible"; document.getElementById(vMcNom+"bt"+i).className="mcBotoSel"; } else { //Sinó, l'ocultem i canviem la classe de botó vPsElem.style.display = "none"; vPsElem.style.visibility = "hidden"; document.getElementById(vMcNom+"bt"+i).className="mcBoto"; } } return false; //evitem la recàrrega de la pàgina } $(MetaCaixaInit); /** * Collapsible tables * * Allows tables to be collapsed, showing only the header. See [[Wikipedia:NavFrame]]. * @maintainer [[User:R. Koot]] (on Wikipedia) */ var autoCollapse = 2; var collapseCaption = 'hide'; var expandCaption = 'show'; function collapseTable( tableIndex ) { var i; var Button = document.getElementById( 'collapseButton' + tableIndex ); var Table = document.getElementById( 'collapsibleTable' + tableIndex ); if ( !Table || !Button ) { return false; } var Rows = Table.getElementsByTagName( 'tr' ); if ( Button.firstChild.data == collapseCaption ) { for ( i = 1; i < Rows.length; i++ ) { Rows[i].style.display = 'none'; } Button.firstChild.data = expandCaption; } else { for ( i = 1; i < Rows.length; i++ ) { Rows[i].style.display = Rows[0].style.display; } Button.firstChild.data = collapseCaption; } } function createCollapseButtons() { var i; var tableIndex = 0; var NavigationBoxes = {}; var Tables = document.getElementsByTagName( 'table' ); for ( i = 0; i < Tables.length; i++ ) { if ( $(Tables[i]).hasClass('collapsible' ) ) { NavigationBoxes[ tableIndex ] = Tables[i]; Tables[i].setAttribute( 'id', 'collapsibleTable' + tableIndex ); var Button = document.createElement( 'span' ); var ButtonLink = document.createElement( 'a' ); var ButtonText = document.createTextNode( collapseCaption ); Button.style.styleFloat = 'right'; Button.style.cssFloat = 'right'; Button.style.fontWeight = 'normal'; Button.style.textAlign = 'right'; Button.style.width = '6em'; ButtonLink.setAttribute( 'id', 'collapseButton' + tableIndex ); ButtonLink.setAttribute( 'href', 'javascript:collapseTable(' + tableIndex + ');' ); ButtonLink.appendChild( ButtonText ); Button.appendChild( document.createTextNode( '[' ) ); Button.appendChild( ButtonLink ); Button.appendChild( document.createTextNode( ']' ) ); var Header = Tables[i].getElementsByTagName( 'tr' )[0].getElementsByTagName( 'th' )[0]; /* only add button and increment count if there is a header row to work with */ if (Header) { Header.insertBefore( Button, Header.childNodes[0] ); tableIndex++; } } } for ( i = 0; i < tableIndex; i++ ) { if ( $(NavigationBoxes[i]).hasClass('collapsed' ) || ( tableIndex >= autoCollapse && $(NavigationBoxes[i]).hasClass('autocollapse' ) ) ) { collapseTable( i ); } } } /*HERE FINISHES THE WORKING-CODE OF "METABOXES"*/ if (mw.config.get('wgAction') == "edit" || mw.config.get('wgAction') == "submit" || mw.config.get('wgCanonicalSpecialPageName') == 'Search') { // scripts specific to editing pages importScript('MediaWiki:Common.js/edit.js'); } //


/* == Make it easy to update language name-to-code and code-to-name data modules == */ // This regex will always match. if (['Module:Languages/code_to_canonical_name', 'Module:Languages/canonical_names'] .indexOf(mw.config.get('wgPageName').match(/^[^\/]*(?:\/[^\/]+)?/)[0]) !== -1) importScript('MediaWiki:UpdateLanguageNameAndCode.js');

// == "Did you mean" auto redirect == /**

* This will redirect in 3 seconds if a link enclosed in id="did-you-mean"
* is found, and add the text "Auto-redirected from X" under the top header
* if a rdfrom is passed in the get parameters.
* Pages with wynn (ƿ) will be redirected immediately.
    • /

$.when(mw.loader.using(["user", "mediawiki.util"]), $.ready).done(function(){ if (window.disableAutoRedirect) return;

var rdFromValue = mw.util.getParamValue("rdfrom"); if (rdFromValue) { $('#siteSub').after(

$('

').attr("id", 'contentSub')

.append(document.createTextNode(wgULS("(自动重定向自 ", "(自動重新導向自 "))) .append($('<a>', { href: mw.util.getUrl(rdFromValue, {redirect:"no"}), addClass: 'new' }).text(rdFromValue)) .append(document.createTextNode(")"))); } else { // Redirect as quickly as possible from ƿ title to w title. var pageTitle = mw.config.get("wgTitle"); var isWynnTitle = /ƿ/i.test(pageTitle); var didYouMean = $('#did-you-mean a').html(); var target = didYouMean ? didYouMean : isWynnTitle ? $('#go-to-search-page a').html() : null; var timeout = isWynnTitle ? 0 : 5000; window.setTimeout(function () { var canRedirect = mw.util.getParamValue("redirect") != "no"; var action = mw.config.get("wgAction");

if (target && target !== pageTitle && canRedirect && (jQuery.cookie('WiktionaryDisableAutoRedirect') != 'true') && (action == "view" || (isWynnTitle && action == "edit")) && mw.config.get('wgArticleId') === 0 && mw.config.get('wgNamespaceNumber') === 0 && !/Redirected from/.test(jQuery('#contentSub').html()) ) { window.location = mw.util.getUrl(target, { rdfrom: pageTitle }); } }, timeout); } });