MediaWiki:Common.js: diferència entre les revisions
 Afegir mes funcions  | 
				 Afegir mes funcions  | 
				||
| Línia 155: | Línia 155: | ||
  addOnloadHook( createCollapseButtons );  |   addOnloadHook( createCollapseButtons );  | ||
/** Dynamic Navigation Bars (experimental) *************************************  |  /** Dynamic Navigation Bars (experimental) *************************************  | ||
   *  |    *  | ||
   *  Description: See [[Wikipedia:NavFrame]].  |    *  Description: See [[Wikipedia:NavFrame]].  | ||
| Línia 267: | Línia 267: | ||
   addOnloadHook( createNavigationBarToggleButton );  |    addOnloadHook( createNavigationBarToggleButton );  | ||
// ==================================================  | |||
//  Folding Multi Wiki Tabs (experimental)  | |||
// ==================================================  | |||
function foldingTabsMulti() {  | |||
  var len=0;  | |||
  ftsets = getElementsByClassName(document, 'div', 'foldtabSet');  //global object array thingy  | |||
  if(ftsets.length==0) return  | |||
  for(var i=0;i<ftsets.length;i++) {    | |||
    ftsets[i].head = getElementsByClassName(ftsets[i], 'div', 'foldtabHead')[0];  | |||
    ftsets[i].links = ftsets[i].head.getElementsByTagName('a');  | |||
    ftsets[i].boxen = getElementsByClassName(ftsets[i], 'div', 'foldtabBox');  | |||
    if(ftsets[i].links.length < ftsets[i].boxen.length) {  | |||
      len = ftsets[i].boxen.length;  | |||
    } else {  | |||
      len = ftsets[i].links.length;  | |||
    }  | |||
    for(var j=0;j<len;j++) {  | |||
      ftsets[i].links[j].href = 'javascript:showmultitab(\'' + i + '\',\'' + j + '\');';  | |||
      ftsets[i].links[j].title = 'click to display tab ' + j + ' of set ' + i;  | |||
    }  | |||
    showmultitab(i,'0');  | |||
    ftsets[i].head.style.display = 'block';  | |||
  }  | |||
}  | |||
addOnloadHook(foldingTabsMulti);  | |||
function showmultitab(set,num) {  | |||
  for(var j=0;j<ftsets[set].boxen.length;j++) {  | |||
    if(j==num) {  | |||
      ftsets[set].boxen[j].style.display = 'block';  | |||
    } else {  | |||
      ftsets[set].boxen[j].style.display = 'none';  | |||
    }  | |||
  }  | |||
  for(var j=0;j<ftsets[set].links.length;j++) {  | |||
    if(j==num) {  | |||
      ftsets[set].links[j].className = 'selected';  | |||
      ftsets[set].links[j].blur();  | |||
    } else {  | |||
      ftsets[set].links[j].className = '';  | |||
    }  | |||
  }  | |||
}  | |||
// ==================================================  | |||
//            END Folding Multi Wiki Tabs  | |||
// ==================================================  | |||
/* Any JavaScript here will be loaded for all users on every page load. */  | |||
// <syntax type="javascript">  | |||
    /**   | |||
        Toggles the display of elements on a page   | |||
        Author/contact: Austin Che http://openwetware.org/wiki/User:Austin_J._Che  | |||
        See http://openwetware.org/wiki/OpenWetWare:Toggle for examples and documentation  | |||
     */  | |||
// indexed array of toggler ids to array of associated toggle operations  | |||
// each operation is a two element array, the first being the type, the second a class name or array of elements  | |||
// operation types are strings like "_reset" or "" for the default toggle operation  | |||
var togglers = new Array();       | |||
var allClasses = new Object(); // associative map of class names to page elements  | |||
function toggler(id)  | |||
{  | |||
    var toBeToggled = togglers[id];  | |||
    if (!toBeToggled)  | |||
        return;  | |||
    // if some element is in list more than once, it will be toggled multiple times  | |||
    for (var i = 0; i < toBeToggled.length; i++)  | |||
    {  | |||
        // get array of elements to operate on  | |||
        var toggles = toBeToggled[i][1];  | |||
        if (typeof(toggles) == "string")  | |||
        {  | |||
            if (toggles.charAt(0) == '-')  | |||
            {  | |||
                // treat as an element ID, not as class  | |||
                toggles = document.getElementById(toggles.substring(1));  | |||
                if (toggles)  | |||
                    toggles = new Array(toggles);  | |||
            }  | |||
            else  | |||
                toggles = allClasses[toggles];  | |||
        }  | |||
        if (!toggles || !toggles.length)  | |||
            continue;  | |||
        var op = toBeToggled[i][0]; // what the operation will be  | |||
        switch (op)  | |||
        {  | |||
            case "_reset":  | |||
                for (var j in toggles)  | |||
                    toggles[j].style.display = toggles[j]._toggle_original_display;  | |||
                break;  | |||
            case "_show":  | |||
                for (var j in toggles)  | |||
                    toggles[j].style.display = '';  | |||
                break;  | |||
            case "_hide":  | |||
                for (var j in toggles)  | |||
                    toggles[j].style.display = 'none';  | |||
                break;  | |||
            case "":  | |||
            default:  | |||
                // Toggle  | |||
                for (var j in toggles)  | |||
                    toggles[j].style.display = ((toggles[j].style.display == 'none') ? '' : 'none');  | |||
                break;  | |||
        }  | |||
    }  | |||
}  | |||
function createTogglerLink(toggler, id)  | |||
{  | |||
    var toggle = document.createElement("a");  | |||
    toggle.className = 'toggler-link';  | |||
    toggle.setAttribute('id', 'toggler' + id);  | |||
    toggle.setAttribute('href', 'javascript:toggler("' + id + '");');  | |||
    var child = toggler.firstChild;  | |||
    toggler.removeChild(child);  | |||
    toggle.appendChild(child);  | |||
    toggler.insertBefore(toggle, toggler.firstChild);  | |||
}  | |||
function toggleInit()  | |||
{  | |||
    var togglerElems = new Array();  | |||
    var toggleGroup = new Array();  | |||
    // initialize/clear any old information  | |||
    togglers = new Array();       | |||
    allClasses = new Object();  | |||
    allClasses.watch = undefined;  | |||
    allClasses.unwatch = undefined;  | |||
    // make list of all document classes  | |||
    var elems = document.getElementsByTagName("*");  | |||
    var numelems = elems.length;  | |||
    for (var i = 0; i < elems.length; i++)  | |||
    {  | |||
        var elem = elems[i];  | |||
        if (!elem.className)  | |||
            continue;  | |||
        elem._toggle_original_display = elem.style.display;  | |||
        var togglerID = -1;  | |||
        var elemClasses = elem.className.split(' '); // get list of classes  | |||
        for (var j = 0; j < elemClasses.length; j++)  | |||
        {  | |||
            var elemClass = elemClasses[j];  | |||
            if (! allClasses[elemClass])  | |||
                allClasses[elemClass] = new Array();  | |||
            allClasses[elemClass].push(elem);  | |||
            // all the special classes begin with _toggle  | |||
            if (elemClass.substring(0, 7) != "_toggle")  | |||
                continue;  | |||
            if (elemClass == "_togglegroup")  | |||
                toggleGroup = new Array();  | |||
            else if (elemClass == "_toggle")  | |||
                toggleGroup.push(elem);  | |||
            else if (elemClass.substring(0, 12) == "_toggle_init")  | |||
            {  | |||
                // set initial value for display (ignore the original CSS set value)  | |||
                // understands _toggle_initshow and _toggle_inithide  | |||
                var disp = elemClass.substring(12);  | |||
                if (disp == "show")  | |||
                    elem.style.display = '';  | |||
                else if (disp == "hide")  | |||
                    elem.style.display = 'none';  | |||
                elem._toggle_original_display = disp;  | |||
            }  | |||
            else if (elemClass.substring(0, 8) == "_toggler")  | |||
            {  | |||
                if (togglerID == -1)  | |||
                {  | |||
                    togglerID = togglers.length;  | |||
                    togglers[togglerID] = new Array();  | |||
                    togglerElems[togglerID] = elem;  | |||
                }  | |||
                // all classes are of form _toggler_op-CLASS  | |||
                // figure out what class we're toggling  | |||
                // if none is specified, then we use the current toggle group  | |||
                var toBeToggled;  | |||
                var hyphen = elemClass.indexOf('-');  | |||
                if (hyphen != -1)  | |||
                    toBeToggled = elemClass.substring(hyphen+1);  | |||
                else  | |||
                {  | |||
                    toBeToggled = toggleGroup;  | |||
                    hyphen = elemClass.length;  | |||
                }  | |||
                var op = elemClass.substring(8, hyphen);  | |||
                togglers[togglerID].push(new Array(op, toBeToggled));  | |||
            }  | |||
        }  | |||
    }  | |||
    // add javascript links to all toggler elements  | |||
    for (var i = 0; i < togglerElems.length; i++)  | |||
        createTogglerLink(togglerElems[i], i);  | |||
}  | |||
function owwsitesearch(f){  | |||
    f.q.value='site:http://openwetware.org/wiki/'+  | |||
        f.base.value+'++'+f.qfront.value  | |||
}  | |||
addOnloadHook(toggleInit);  | |||
// </syntax>  | |||
/** Archive edit tab disabling *************************************  | |||
 * Disables the edit tab on old forum topic pages to stop new people bumping old topics.  | |||
 * Page can still be edited by going via the edit tab on the history etc, or by   | |||
 * typing the edit address manually.  | |||
 * By [[User:Spang|Spang]]  | |||
 * Monaco support by [[User:Uberfuzzy|Uberfuzzy]]  | |||
 * Oasis support by [[User:Uberfuzzy|Uberfuzzy]]  | |||
 */  | |||
if(wgNamespaceNumber == 110) {  | |||
function disableOldForumEdit() {  | |||
	if( typeof( enableOldForumEdit ) != 'undefined' && enableOldForumEdit ) {  | |||
		return;  | |||
	}  | |||
	if( !document.getElementById('old-forum-warning') ) {  | |||
		return;  | |||
	}  | |||
	if( skin == 'oasis' )  | |||
	{  | |||
		$("#WikiaPageHeader .wikia-menu-button li a:first").html('Archived').removeAttr('href' );  | |||
		$('#WikiaPageHeader .wikia-button').html('Archived').removeAttr('href');  | |||
		return;  | |||
	}  | |||
	if( !document.getElementById('ca-edit') ) {  | |||
		return;  | |||
	}  | |||
	var editLink = null;  | |||
	if( skin == 'monaco' )  | |||
	{  | |||
		editLink = document.getElementById('ca-edit');  | |||
	}  | |||
	else if( skin == 'monobook' )  | |||
	{  | |||
		editLink = document.getElementById('ca-edit').firstChild;  | |||
	}  | |||
	else  | |||
	{  | |||
		return;  | |||
	}  | |||
	editLink.removeAttribute('href', 0);  | |||
	editLink.removeAttribute('title', 0);  | |||
	editLink.style.color = 'gray';  | |||
	editLink.innerHTML = 'Archived';  | |||
	$('span.editsection-upper').remove();  | |||
}  | |||
addOnloadHook( disableOldForumEdit );  | |||
}  | |||
// *****************************************************  | |||
// * Experimental javascript countdown timer (Splarka) *  | |||
// * Version 0.0.3                                     *  | |||
// *****************************************************  | |||
//  | |||
// Usage example:  | |||
//  <span class="countdown" style="display:none;">  | |||
//  Only <span class="countdowndate">January 01 2007 00:00:00 PST</span> until New years.  | |||
//  </span>  | |||
//  <span class="nocountdown">Javascript disabled.</span>  | |||
function updatetimer(i) {  | |||
  var now = new Date();  | |||
  var then = timers[i].eventdate;  | |||
  var diff = count=Math.floor((then.getTime()-now.getTime())/1000);  | |||
  // catch bad date strings  | |||
  if(isNaN(diff)) {   | |||
    timers[i].firstChild.nodeValue = '** ' + timers[i].eventdate + ' **' ;  | |||
    return;  | |||
  }  | |||
  // determine plus/minus  | |||
  if(diff<0) {  | |||
    diff = -diff;  | |||
    var tpm = '';  | |||
  } else {  | |||
    var tpm = '';  | |||
  }  | |||
  // calcuate the diff  | |||
  var left = (diff%60) + ' segons';  | |||
    diff=Math.floor(diff/60);  | |||
  if(diff > 0) left = (diff%60) + ' minuts ' + left;  | |||
    diff=Math.floor(diff/60);  | |||
  if(diff > 0) left = (diff%24) + ' hores ' + left;  | |||
    diff=Math.floor(diff/24);  | |||
  if(diff > 0) left = diff + ' dies ' + left  | |||
  timers[i].firstChild.nodeValue = tpm + left;  | |||
  // a setInterval() is more efficient, but calling setTimeout()  | |||
  // makes errors break the script rather than infinitely recurse  | |||
  timeouts[i] = setTimeout('updatetimer(' + i + ')',1000);  | |||
}  | |||
function checktimers() {  | |||
  //hide 'nocountdown' and show 'countdown'  | |||
  var nocountdowns = getElementsByClassName(document, 'span', 'nocountdown');  | |||
  for(var i in nocountdowns) nocountdowns[i].style.display = 'none'  | |||
  var countdowns = getElementsByClassName(document, 'span', 'countdown');  | |||
  for(var i in countdowns) countdowns[i].style.display = 'inline'  | |||
  //set up global objects timers and timeouts.  | |||
  timers = getElementsByClassName(document, 'span', 'countdowndate');  //global  | |||
  timeouts = new Array(); // generic holder for the timeouts, global  | |||
  if(timers.length == 0) return;  | |||
  for(var i in timers) {  | |||
    timers[i].eventdate = new Date(timers[i].firstChild.nodeValue);  | |||
    updatetimer(i);  //start it up  | |||
  }  | |||
}  | |||
addOnloadHook(checktimers);  | |||
// **************************************************  | |||
//  - end -  Experimental javascript countdown timer  | |||
// **************************************************  | |||
/** *************************************  | /** *************************************  | ||
/Dynamic Navigation Bars (experimental)    | /Dynamic Navigation Bars (experimental)    | ||
| Línia 370: | Línia 721: | ||
addOnloadHook( createNavigationBarToggleButton );  | addOnloadHook( createNavigationBarToggleButton );  | ||
/****************************/  | |||
/* [[Plantilla:Nom usuari]] */  | |||
/****************************/  | |||
function UserNameReplace(){  | |||
  if (wgUserName){  | |||
    var spans = getElementsByClassName(document, "span", "insertusername");  | |||
    for (var i = 0; i < spans.length; i++){  | |||
      spans[i].innerHTML = wgUserName;  | |||
    }  | |||
  }  | |||
}  | |||
addOnloadHook(UserNameReplace);  | |||
// ************************************************************  | // ************************************************************  | ||