میڈیاویکی:Gadget-CommonWikt.js

یاد دہانی: محفوظ کرنے کے بعد ان تبدیلیوں کو دیکھنے کے لیے آپ کو اپنے براؤزر کا کیش (cache) صاف کرنا ہوگا۔

  • فائرفاکس/ سفاری: جب Reload پر کلک کریں تو Shift دباکر رکھیں، یا Ctrl-F5 یا Ctrl-R دبائیں (Mac پر R-⌘)
  • گوگل کروم: Ctrl-Shift-R دبائیں (Mac پر Shift-R-⌘)
  • انٹرنیٹ ایکسپلورر: جب Refresh پر کلک کریں تو Ctrl یا Ctrl-F5 دبائیں
  • اوپیرا: Tools → Preferences میں جائیں اور کیش (cache) صاف کریں
/*******************************************************************************
  Différentes fonctions utiles pour les gadgets spécifiques au Wiktionnaire
  - CommonWikt_CleTri(mot)
  - CommonWikt_Delete(element)
  - CommonWikt_ajax
********************************************************************************
Auteurs :
- ArséniureDeGallium
- Dr Brains
********************************************************************************
[[Catégorie:JavaScript du Wiktionnaire|CommonWikt.js]]
********************************************************************************/

// --------------------------------------------------------------------------------------------
// Calcul de la clé de tri
// (le français ne nécessite plus qu'une prise en compte des apostrophes)
// --------------------------------------------------------------------------------------------
function CommonWikt_CleTri(mot) {
  var key = mot;
  key = key.replace( /[ĉ]/g,      "cx" );
  key = key.replace( /[ĝ]/g,      "gx" );
  key = key.replace( /[ĥ]/g,      "hx" );
  key = key.replace( /[ĵ]/g,      "jx" );
  key = key.replace( /[ŝ]/g,      "sx" );
  key = key.replace( /[ŭ]/g,      "ux" );
  key = key.replace( /['’]/g,     "" );
  return key;
}
 
//----------------------------------------------------------------------------------
// Ajout d'un menu dans les onglets
//
//  /!\ Déprécié : Préférer utiliser mw.util.addPortletLink()
// (cf. [[mw:ResourceLoader/Default_modules#addPortletLink]])
//
//----------------------------------------------------------------------------------
function CommonWikt_AddTabMenu(lien,titre){
  jQuery(function(){
    var OngletsCactions = document.getElementById('p-cactions');
    if(OngletsCactions){
      var CactionsUl = OngletsCactions.getElementsByTagName('ul')[0];
      CactionsUl.innerHTML += '<li><a href="' + lien + '">' + titre + '</a></li>';
      if(OngletsCactions.className){ OngletsCactions.className = OngletsCactions.className.replace(/[ ]*emptyPortlet[ ]*/, " "); }
    }else{
      //x = new vectorMenu
    }
  });
}

//----------------------------------------------------------------------------------
// Détermination des dimensions de l'écran selon le navigateur
//----------------------------------------------------------------------------------
function CommonWikt_Screen(){
  var agt=navigator.userAgent.toLowerCase();
  var is_ie = ((agt.indexOf("msie") != -1) && (agt.indexOf("opera") == -1));
  var dimens = {largeur:0, hauteur:0};
  if(is_ie){
    dimens.largeur = parseInt(screen.width);
    dimens.hauteur = parseInt(screen.height);
  }else{
    dimens.largeur = parseInt(window.innerWidth);
    dimens.hauteur = parseInt(window.innerHeight);
  }
  return dimens;
}
 
//----------------------------------------------------------------------------------
// Remplacement de tout le code HTML de la page par un nouveau
//----------------------------------------------------------------------------------
function CommonWikt_ReplaceAllHTML(doc, newHTML){
  while(doc.body.firstChild){ doc.body.removeChild(doc.body.firstChild); }
  doc.body.innerHTML = newHTML; 
}
 
//----------------------------------------------------------------------------------
// Suppression d'un élément HTML
//----------------------------------------------------------------------------------
function CommonWikt_Delete(OldElement){
  if ((OldElement) && (OldElement.parentNode)){ OldElement.parentNode.removeChild(OldElement); }
}

/******************* GESTION DES COOKIES ************************/ 
// --------------------------------------------------------------------------------------------
// Création d'un cookie
// --------------------------------------------------------------------------------------------
function CommonWikt_AjouteCookie(nom, valeur, jours) {
  var date = new Date();
  date.setTime(date.getTime()+(jours*86400000));
  var strfin = "; expires=" + date.toGMTString();
  document.cookie = nom + "=" + valeur + strfin + "; path=/";
}

// --------------------------------------------------------------------------------------------
// Lecture d'un cookie
// --------------------------------------------------------------------------------------------
function CommonWikt_LitCookie(nom){
  var cks = document.cookie.split(';');
  for(var k=0; k<cks.length; k++){
    var ck = cks[k];
    var nk = ck.indexOf(nom+"=");
    if (nk>=0){return ck.substr(nk+nom.length+1);}
  }
  return null;
}

// --------------------------------------------------------------------------------------------
// Suppression d'un cookie
// --------------------------------------------------------------------------------------------
function CommonWikt_SupprimeCookie(nom){
  CommonWikt_AjouteCookie(nom, "", -1);
}


/******************* REQUÊTES AUX SERVEURS ************************/ 
//----------------------------------------------------------------------------------
// Fonction de requête ajax, utilisée pour faire une requête aux serveurs WikiMedia
// - soit via l'interface standard (index.php)
// - soit via l'API (api.php)
// - soit via les requêtes POST et GET
//----------------------------------------------------------------------------------
var CommonWikt_ajax = {
	http: function(bundle) {
		var xmlhttp;
		try {
			xmlhttp = new XMLHttpRequest();
		} catch (e) {
			try {
				xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
			} catch (e) {
				try {
					xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
				} catch (e) {
					xmlhttp = false;
				}
			}
		}
		if (xmlhttp) {
			xmlhttp.onreadystatechange = function() {
				if (xmlhttp.readyState == 4) {
					CommonWikt_ajax.httpComplete(xmlhttp, bundle);
				}
			};
			xmlhttp.open(bundle.method ? bundle.method : "GET", bundle.url, bundle.async === false ? false : true);
			if (bundle.headers) {
				for (var field in bundle.headers) {
					try {
						xmlhttp.setRequestHeader(field, bundle.headers[field]);
					} catch (err) {}
				}
			}
			xmlhttp.send(bundle.data ? bundle.data : null);
		}
		return xmlhttp;
	},
	httpComplete: function(xmlhttp, bundle) {
		if (xmlhttp.status == 200 || xmlhttp.status == 302) {
			if (bundle.onSuccess) bundle.onSuccess(xmlhttp, bundle);
		} else if (bundle.onFailure) {
			bundle.onFailure(xmlhttp, bundle);
		} else {}
	}
};