MediaWiki:Common.js
Napomena: Nakon objave možda ćete trebati očistiti međuspremnik svog preglednika kako biste vidjeli promjene.
- Firefox / Safari: držite Shift i pritisnite Reload, ili pritisnite bilo Ctrl-F5 ili Ctrl-R (⌘-R na Macu)
- Google Chrome: pritisnite Ctrl-Shift-R (⌘-Shift-R na Macu)
- Internet Explorer / Edge: držite Ctrl i kliknite Refresh, ili pritisnite Ctrl-F5
- Opera: pritisnite Ctrl-F5.
/**
* 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 = '[Sakrij]';
var NavigationBarShow = '[Prikaži]';
// 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;
}
}
/**
* Toggle navigation bar
*
* 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.firstChild.data == NavigationBarHide) {
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.firstChild.data = NavigationBarShow;
// if hidden now
} else if (NavToggle.firstChild.data == NavigationBarShow) {
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.firstChild.data = NavigationBarHide;
}
}
/**
* Add show/hide-button to navigation bar
*/
function createNavigationBarToggleButton() {
var indexNavigationBar = 0;
// iterate over all < div >-elements
for (
var i=0;
NavFrame = document.getElementsByTagName("div")[i];
i++
) {
// if found a navigation bar
if (NavFrame.className == "NavFrame") {
indexNavigationBar++;
var NavToggle = document.createElement("a");
NavToggle.className = 'NavToggle';
NavToggle.setAttribute('id', 'NavToggle' + indexNavigationBar);
NavToggle.setAttribute('href', 'javascript:toggleNavigationBar(' + indexNavigationBar + ');');
var NavToggleText = document.createTextNode(NavigationBarHide);
NavToggle.appendChild(NavToggleText);
// 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") {
NavFrame.childNodes[j].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
// ============================================================
/**
* Add menu for selecting subsets of secial characters
*/
// Must match MediaWiki:Edittools
function addCharSubsetMenu() {
var edittools = document.getElementById('editpage-specialchars');
if (edittools) {
var menu = "<select id=\"charSubsetControl\" style=\"display:inline\" onChange=\"chooseCharSubset(selectedIndex)\">";
menu += "<option>Predlošci</option>";
menu += "<option>Latinski</option>";
menu += "<option>IPA</option>";
menu += "<option>enPR</option>";
menu += "<option>Misc.</option>";
menu += "<option>Arapski</option>";
menu += "<option>Armenski</option>";
menu += "<option>Katalonski</option>";
menu += "<option>Ćirilični</option>";
menu += "<option>Devanāgarī</option>";
menu += "<option>Esperanto</option>";
menu += "<option>Estonski</option>";
menu += "<option>Francuski</option>";
menu += "<option>Njemački</option>";
menu += "<option>Gotski</option>";
menu += "<option>Grčki (moderni)</option>";
menu += "<option>Grčki (antički)</option>";
menu += "<option>Havajski</option>";
menu += "<option>Hebrejski</option>";
menu += "<option>Islandski</option>";
menu += "<option>Talijanski</option>";
menu += "<option>Latvijski/Litavski</option>";
menu += "<option>Malteški</option>";
menu += "<option>Staroengleski</option>";
menu += "<option>Pinjin</option>";
menu += "<option>Portugalski</option>";
menu += "<option>Romaji</option>";
menu += "<option>Rumunjski</option>";
menu += "<option>Skandinavski</option>";
menu += "<option>Slavic Roman</option>";
menu += "<option>Sorani Kurdish</option>";
menu += "<option>Španjolski</option>";
menu += "<option>Turski</option>";
menu += "<option>Vijetnamski</option>";
menu += "<option>Velški</option>";
menu += "<option>Yoruba</option>";
menu += "</select>";
edittools.innerHTML = menu + edittools.innerHTML;
/* default subset from cookie */
var s = parseInt( $.cookie('edittoolscharsubset'), 10 );
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 );
}
}
/**
* 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);
}
/**
* Resole did-you-mean redirect
**/
// Redirect if a case-insensitive search on an external link is found
function doRedirect() {
dym = document.getElementById('did-you-mean');
if ( dym ) {
if ( $.cookie('WiktionaryDisableAutoRedirect') != 'true' ) {
var dymtarget = dym.firstChild.title ;
var target = dymtarget ;
pagetitle = document.getElementsByTagName('h1').item(0).firstChild.nodeValue;
if (pagetitle == target) {
alert('No looping allowed.');
return;
}
if ( pagetitle.toLowerCase().replace(/[^a-z]/g, "") != target.toLowerCase().replace(/[^a-z]/g, "") ) {
alert(target + " does not match " + pagetitle);
return;
}
if ( pagetitle.search(/Editing /g) != -1 ) return;
pagenamee = pagetitle.replace(/\ /g, "_");
document.location.replace( '//en.wiktionary.org/wiki/Special:Search/' + pagenamee ) ;
}
}
}
/**
* Fix editsection [wikified] links
*/
// edit-section still doesn't return to correct spot if link contains a [[wikified]] term.
function fixEditSectionWikifiedLinks() {
var url;
if (/\.5B/.test(window.location.href)) {
url = window.location.href.replace(/.5B.5B:/g,"").replace(/.5B/g, "").replace(/.5D/g, "");
window.location = url;
}
//#capiche_and_.7B.7Btemp.7Calternative_spelling_of.7D.7D
if (/\.7B\.7Btemp\.7C(.*?)\.7D\.7D/.test(window.location.href)) {
url = window.location.href.replace(/\.7B\.7Btemp.7C/, ".7B.7B");
window.location = url;
}
}
/**
* Hide "Main Page" heading and several other elements on the Main Page
*/
var isDiff = (document.location.search && (document.location.search.indexOf("diff=") != -1 || document.location.search.indexOf("oldid=") != -1));
if (mw.config.get('wgIsMainPage') && !isDiff) {
mw.loader.using(['mediawiki.util']).then(function() {
mw.util.addCSS('#lastmod, #siteSub, #contentSub, h1.firstHeading { display: none !important; }');
});
}
/**
* Wiktionary-specific tooltips
*/
function wiktHeadingToolTips() {}
/**
* customizeWiktionary
*
* do any Wiktionary-specific customizations
*/
function customizeWiktionary() {
doRedirect();
addCharSubsetMenu();
fixEditSectionWikifiedLinks();
wiktHeadingToolTips();
}
$(customizeWiktionary);
/* Remember to keep [[MediaWiki:Standard.js]] in sync with this, for classic style! */
/**
* Link Featured Articles
*/
function LinkFA() {
// iterate over all <span>-elements
for (var i=0; a = document.getElementsByTagName("span")[i]; i++) {
// if found a FA span
if (a.className == "FA") {
// iterate over all <li>-elements
for (var j=0; b = document.getElementsByTagName("li")[j]; j++) {
// if found a FA link
if (b.className == "interwiki-" + a.id) {
b.className += " FA";
b.title = "This article has gained featured status";
}
}
}
}
}
/**
* 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 = [];
var spans = document.getElementsByTagName('span');
var i;
var j;
// filter for projectlinks
for (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 (i = 0; i<elements.length; i++) {
var plitem = document.createElement('li');
plitem.appendChild(elements[i]);
pllist.appendChild(plitem);
}
plbox.appendChild(plheader);
plbox.appendChild(pllist);
document.getElementById("p-tb").appendChild(plbox);
}
}
$(Projectlinks);