MediaWiki:Common.js
Oharra: Gorde ondoren, zure nabigatzailearen katxea ekidin beharko duzu aldaketak ikusteko.
- Firefox / Safari: Shift tekla sakatu birkargatzeko momentuan, edo Ctrl-Shift-R edo Ctrl-F5 sakatu (⌘-R Mac batean)
- Google Chrome: Ctrl-Shift-R sakatu (⌘-Shift-R Mac batean)
- Internet Explorer: Ctrl tekla sakatu birkargatzeko momentuan, edo Ctrl-F5 sakatu
- Opera erabiltzaileek Tresnak → Hobespenak atalera joan eta katxea garbitzeko aukera hautatu
/* Hemen idatzitako JavaScript kode oro erabiltzaile guztiek edozein orrialde irekitzerakoan kargatuko da. */
mw.loader.using(['mediawiki.util','mediawiki.cookie']).then(function () {
/*
==Wiktionary Customisation==
*/
/*
===WT:PREFS===
*/
/*if (wgUserName == "Hippietrail") {
if ($.cookie('WiktPrefs') || wgPageName == "Wiktionary:Preferences") {
importScript('User:Hippietrail/custom-alpha.js');
}
} else {
if ($.cookie('WiktPrefs') || wgPageName == "Wiktionary:Preferences") {
//importScript('User:Connel_MacKenzie/custom.js');
importScript('User:Hippietrail/custom.js');
}
}*/
/*
===Page specific extensions===
*/
/*
====Wiktionary:Main Page====
*/
// Hide the title and "Redirected from" (maybe we should keep the redirected from so's people update their bookmarks ;)
if ( mw.config.get('wgPageName') == 'Wiktionary:Main_Page' && !( mw.config.get('wgAction') == 'view' || mw.config.get('wgAction') == 'submit' ) ){
mw.util.addCSS('.firstHeading {display: block !important;}');
mw.util.addCSS('#contentSub {display: inline !important;}');
}
/*
====Special:Search====
*/
if ( mw.config.get('wgCanonicalSpecialPageName') == 'Search') {
/*importScript('MediaWiki:SpecialSearch.js');*/
}
/*
====WT:CUSTOM====
*/
else if( mw.config.get('wgPageName')=='Help:Customizing_your_monobook' ){
/* importScript('MediaWiki:CustomSearch.js');*/
}
/*
====Turn headings in comments into real headings on JavaScript source pages====
*/
else if (( mw.config.get('wgNamespaceNumber') == 2 || mw.config.get('wgNamespaceNumber') == 8) && mw.config.get('wgTitle').lastIndexOf('.js') != -1 && mw.config.get('wgAction') == 'view') {
/*importScript('MediaWiki:JavascriptHeadings.js');*/
}
/*
====Add editor.js for editing translations====
*/
/** Trial run 2009-04-14. Please disable if causing problems. **/
/*importScript('User:Conrad.Irwin/editor.js');*/
/*
====Geonotice====
*/
if ( mw.config.get('wgCanonicalSpecialPageName') == "Watchlist") //watchlist scripts
{
mw.loader.load('//toolserver.org/~para/geoip.fcgi');
$(function() { mw.loader.load('//en.wiktionary.org/w/index.php?title=MediaWiki:Geonotice.js&action=raw&ctype=text/javascript&maxage=3600'); });
}
/*
==URL Fixes==
*/
/**
* doRedirect will redirect if a did you mean box is found, and create a
* "redirected from X" if a rdfrom is passed in the get parameters
* The first half is an ugly workaround for Bugzilla:3339, :(
* The second half is an ugly workaround for not having serverware support :(
**/
/*
===Did you mean ____ redirects===
*/
function doRedirect() {
var dym = document.getElementById('did-you-mean');
var wiktDYMfrom= window.location.href.replace(/^(.+[&\?]rdfrom=([^&]+).*|.*)?$/,"$2");
// REDIRECTED FROM
if( window.location.href.indexOf('rdfrom=')!=-1 ) {
var insertPosition= document.getElementById("siteSub");
var div=document.createElement("div");
if(insertPosition){
div.setAttribute("id","contentSub");
var tt=document.createElement('tt');
var lnk =document.createElement('a');
lnk.setAttribute("href",mw.config.get('wgArticlePath').replace("$1",wiktDYMfrom)+ '?redirect=no');
lnk.className="new"; //As they are redlinks
lnk.appendChild(document.createTextNode(decodeURIComponent(wiktDYMfrom)));
tt.appendChild(lnk);
div.appendChild(document.createTextNode("(Auto-redirected from "));
div.appendChild(tt);
div.appendChild(document.createTextNode(")"));
insertPosition.parentNode.insertBefore(div,insertPosition.nextSibling);
} else {
alert('No insertposition');
}
// DID YOU MEAN
}else{
if( dym
&& !window.location.href.match(/[&\?]redirect=no/)
&& ($.cookie('WiktionaryDisableAutoRedirect') != 'true')
) {
var target = dym.firstChild.title;
var pagetitle = document.getElementsByTagName('h1')[0].firstChild.nodeValue;
if( pagetitle != target
&& pagetitle.toLowerCase().replace(/[^a-z]/g, "") == target.toLowerCase().replace(/[^a-z]/g, "")
&& pagetitle.search(/Editing /g) == -1
&& !(document.getElementById('contentSub') && document.getElementById('contentSub').innerHTML.indexOf("Redirected from")>=0) // does contentSub always exist
) {
document.location = mw.config.get('wgArticlePath').replace("$1",encodeURIComponent(target.replace(/\ /g, "_")))
+ '?rdfrom=' + encodeURIComponent(pagetitle.replace(/ /g,"_"));
}
}
}
}
$(doRedirect);
/*
===Fix Wikified section titles===
*/
$(function () {
// {temp|template}
if (/\.7B\.7Btemp\.7C(.*?)\.7D\.7D/.test(window.location.href)) {
var url=window.location.href.replace(/\.7B\.7Btemp.7C/g, ".7B.7B");
window.location = url;
}
});
$(function () {
if(mw.config.get('wgAction') != 'edit')
return;
if(! /[?&]section=\d/.test(window.location.href))
return;
var wpSummary = document.getElementById('wpSummary');
if(! wpSummary)
return;
if(wpSummary.value.substr(0, 3) != '/* ')
return;
if(wpSummary.value.substr(wpSummary.value.length - 4) != ' */ ')
return;
wpSummary.value = wpSummary.value.replace(/\{\{temp(late)?\|/g, '{{');
});
/*
==Dynamic Navigation Bars (experimental)==
*/
// ============================================================
// BEGIN Dynamic Navigation Bars (experimental)
// FIXME: currently only works for one nav bar on a page at a time
// set up the words in your language
var NavigationBarHide = 'ezkutatu ▲';
var NavigationBarShow = 'erakutsi ▼';
// set up max count of Navigation Bars on page,
// if there are more, all will be hidden
// NavigationBarShowDefault = 0; // all bars will be hidden
// NavigationBarShowDefault = 1; // on pages with more than 1 bar all bars will be hidden
var NavigationBarShowDefault = 1;
//Honor the User Preferences
if ( $.cookie('WiktionaryPreferencesShowNav') != 'true' ) {
NavigationBarShowDefault = 0;
} else {
if ( mw.config.get('wgNamespaceNumber') == 0 ) NavigationBarShowDefault = 999 ;
}
/*
===toggleNavigationBar===
*/
// shows and hides content and picture (if available) of navigation bars
// Parameters:
// indexNavigationBar: the index of navigation bar to be toggled
function toggleNavigationBar(indexNavigationBar)
{
var NavToggle = document.getElementById("NavToggle" + indexNavigationBar);
var NavFrame = document.getElementById("NavFrame" + indexNavigationBar);
if (!NavFrame || !NavToggle) {
return false;
}
// if shown now
if (NavToggle.isHidden == false) {
for (
var NavChild = NavFrame.firstChild;
NavChild;
NavChild = NavChild.nextSibling
) {
if (NavChild.className == 'NavPic') {
NavChild.style.display = 'none';
}
if (NavChild.className == 'NavContent') {
NavChild.style.display = 'none';
}
}
NavToggle.childNodes[1].firstChild.nodeValue = NavigationBarShow;
NavToggle.isHidden = true;
// if hidden now
} else if (NavToggle.isHidden == true) {
for (
var NavChild = NavFrame.firstChild;
NavChild;
NavChild = NavChild.nextSibling
) {
if (NavChild.className == 'NavPic') {
NavChild.style.display = 'block';
}
if (NavChild.className == 'NavContent') {
NavChild.style.display = 'block';
}
}
NavToggle.childNodes[1].firstChild.nodeValue = NavigationBarHide;
NavToggle.isHidden = false;
}
}
/*
===createNavigationBarToggleButton===
*/
var wgNavBarArray = new Array();
// adds show/hide-button to navigation bars
function createNavigationBarToggleButton()
{
// Are we previewing an translation section?
var preview = document.getElementById('wikiPreview');
if (preview != null) {
var p = preview.getElementsByTagName('p');
if (p != null && p.length >= 2 && p[1].firstChild.id == 'Translations') {
NavigationBarShowDefault = 999;
}
}
var indexNavigationBar = 0;
// iterate over all < div >-elements
for(
var i=0;
NavFrame = document.getElementsByTagName("div")[i];
i++
) {
// if found a navigation bar
// (Note that a navigation bar is a div whose *sole* class is
// "NavFrame". That might not be the best approach, but currently
// {{trans-see}} exploits it, so be cautious in changing that.)
if (NavFrame.className == "NavFrame") {
indexNavigationBar++;
var NavToggle = document.createElement("span");
NavToggle.className = 'NavToggle';
NavToggle.setAttribute('id', 'NavToggle' + indexNavigationBar);
NavToggle.appendChild(document.createTextNode('['));
NavToggle.appendChild(document.createElement("a"));
var NavToggleText = document.createTextNode(NavigationBarHide);
// These need an href, but must do nothing
NavToggle.childNodes[1].setAttribute('href', 'javascript:(function(){})()');
NavToggle.childNodes[1].appendChild(NavToggleText);
NavToggle.appendChild(document.createTextNode(']'));
NavToggle.isHidden = false;
wgNavBarArray[indexNavigationBar - 1] = NavToggle;
// Find the NavHead and attach the toggle link (Must be this complicated because Moz's firstChild handling is borked)
for(
var j=0;
j < NavFrame.childNodes.length;
j++
) {
if (NavFrame.childNodes[j].className == "NavHead") {
var NavHead = NavFrame.childNodes[j];
for (var k=0; k < NavHead.childNodes.length; k++) {
if (NavHead.childNodes[k].nodeType == 1) {
NavHead.childNodes[k].onclick = function (e) {
if (e) {
e.stopPropagation ()
} else {
window.event.cancelBubble = true;
}
}
}
}
NavHead.style.cursor = "pointer";
NavHead.onclick = (function (i) { return function () { toggleNavigationBar(i); } })(indexNavigationBar)
if( NavHead.childNodes[0] ){
NavHead.insertBefore(NavToggle,NavHead.childNodes[0]);
}else{
NavHead.appendChild(NavToggle);
}
}
}
NavFrame.setAttribute('id', 'NavFrame' + indexNavigationBar);
}
}
// if more Navigation Bars found than Default: hide all
if (NavigationBarShowDefault < indexNavigationBar) {
for(
var i=1;
i<=indexNavigationBar;
i++
) {
toggleNavigationBar(i);
}
}
}
$(createNavigationBarToggleButton);
// END Dynamic Navigation Bars
// ============================================================
/*
==[[MediaWiki:Edittools]]==
*/
/*
===applyCharinserts===
*/
/* handle <span class="charinsert"> like <charinsert> */
function applyCharinserts()
{
function patchUpInsertTagsArg(arg)
{
return(
arg.replace(/\x22/g,'"').replace(/\x27/g,"\\'").replace(/\x26nbsp;/g,' '));
}
function charinsertify(s)
{
if(s.indexOf('<') > -1)
return s;
s = s.replace(/\xA0/g, '\x26nbsp;');
var strings = s.split(/\s/);
for(var i = 0; i < strings.length; ++i)
{
if(strings[i] == '')
continue;
var left, right, index;
index = strings[i].indexOf('+');
if(index == -1)
index = strings[i].length;
left = strings[i].substring(0, index);
right = strings[i].substring(index + 1);
strings[i] = left + right;
left = patchUpInsertTagsArg(left);
right = patchUpInsertTagsArg(right);
strings[i] = "<a onclick=\"insertTags('" + left + "','" + right +
"','');return false\" href='#'>" + strings[i] + '</a>';
}
return strings.join(' ');
}
var edittools = document.getElementById('editpage-specialchars');
if(! edittools)
return;
var spans = edittools.getElementsByTagName('span');
if(! spans)
return;
for(var i = 0; i < spans.length; ++i)
{
if((' ' + spans[i].className + ' ').indexOf(' charinsert ') == -1)
continue;
spans[i].className = spans[i].className.replace(/\bcharinsert\b/, '');
spans[i].innerHTML = charinsertify(spans[i].innerHTML);
}
}
/*
===addCharSubsetMenu===
*/
/* add menu for selecting subsets of secial characters */
function addCharSubsetMenu() {
var edittools = document.getElementById('editpage-specialchars');
if(! edittools)
return;
var menu = "<select id='charSubsetControl' style='display:inline' onChange='chooseCharSubset(selectedIndex)'>";
var pp = edittools.getElementsByTagName('p');
if(!pp)
return;
for(var i = 0; i < pp.length; ++i)
menu +=
'<option>' +
decodeURIComponent
(
(''+pp[i].id).replace(/^edittools-/, '')
.replace(/\.([0-9A-F][0-9A-F])/g, '%$1')
.replace(/_/g, '%20')
) +
'</option>';
menu += "</select>";
edittools.innerHTML = menu + edittools.innerHTML;
/* default subset from cookie */
var s = parseInt( $.cookie('edittoolscharsubset') );
if ( isNaN(s) ) s = 0;
/* update dropdown control to value of cookie */
document.getElementById('charSubsetControl').selectedIndex = s;
/* display the subset indicated by the cookie */
chooseCharSubset( s );
}
/*
===chooseCharSubsetMenu===
*/
/* select subsection of special characters */
function chooseCharSubset(s) {
var l = document.getElementById('editpage-specialchars').getElementsByTagName('p');
for (var i = 0; i < l.length ; i++) {
l[i].style.display = i == s ? 'inline' : 'none';
l[i].style.visibility = i == s ? 'visible' : 'hidden';
}
$.cookie('edittoolscharsubset', s);
}
/*
==Drop-down language preload menu for [[MediaWiki:Noexactmatch]] and [[Wiktionary:Project-Newarticletext]]==
*/
function addNogoPreloadMenu() {
var preloadGuide = document.getElementById('preloadGuide');
if (preloadGuide) {
preloadGuide.style.display = 'inline-block';
var menu = "<select style=\"float: left; display: inline-block; margin: 0 0 0.4em 0.5em;\" onChange=\"showPreloads(selectedIndex)\">";
menu += "<option>English</option>";
menu += "<option>American Sign Language</option>";
menu += "<option>Spanish</option>";
menu += "<option>Swedish</option>";
menu += "</select>";
var menuDiv = document.getElementById('entryTemplateMenu');
menuDiv.innerHTML = menu;
showPreloads(0);
}
}
$(addNogoPreloadMenu);
function showPreloads(selectedIndex) {
var languageOptions = document.getElementById('preloadGuide').getElementsByTagName('table');
for (var i = 0; i < languageOptions.length ; i++) {
if (languageOptions[i].className == "language") {
languageOptions[i].style.display = i == selectedIndex ? 'block' : 'none';
}
}
}
/*
==feedback==
*/
// Solicit feedback from anons
/*if (wgUserName==null) importScript('User:Conrad.Irwin/feedback.js');*/
/*
==customizeWiktionary==
*/
/* do any Wiktionary-specific customizations */
function customizeWiktionary() {
addCharSubsetMenu();
applyCharinserts();
}
$(customizeWiktionary);
/*
== Interproject links ==
*/
/*
#########
### ProjectLinks
### by [[user:Pathoschild]] (idea from an older, uncredited script)
### * generates a sidebar list of links to other projects from {{projectlinks}}
#########
*/
function Projectlinks() {
var elements = new Array();
var spans = document.getElementsByTagName('span');
// filter for projectlinks
for (var i=0, j=0; i<spans.length; i++) {
if (spans[i].className == 'interProject') {
elements[j] = spans[i].getElementsByTagName('a')[0];
j++;
}
}
// sort alphabetically
function sortbylabel(a,b) {
// get labels
a = a.innerHTML.replace(/^.*<a[^>]*>(.*)<\/a>.*$/i,'$1');
b = b.innerHTML.replace(/^.*<a[^>]*>(.*)<\/a>.*$/i,'$1');
// return sort order
if (a < b) return -1;
if (a > b) return 1;
return 0;
}
elements.sort(sortbylabel);
if (j) {
// create navbox
var plheader = document.createElement('h5');
plheader.appendChild(document.createTextNode('In other projects'));
var plbox = document.createElement('div');
plbox.setAttribute('class','pBody');
plbox.setAttribute('style','margin-top:0.7em;');
var pllist = document.createElement('ul');
// append
for (var i=0; i<elements.length; i++) {
var plitem = document.createElement('li');
plitem.appendChild(elements[i]);
pllist.appendChild(plitem);
}
plbox.appendChild(pllist);
var ptb = document.getElementById("p-tb");
if(!ptb) return;
ptb.appendChild(plheader);
ptb.appendChild(plbox);
}
}
$(Projectlinks);
});