Inscris-toi pour écrire dans l'encyclopédie Wikimini!

« MediaWiki:Common.js » : différence entre les versions

Jump to navigation Jump to search
(Nouvelle page : →‎Tout JavaScript ici sera chargé avec chaque page accédée par n’importe quel utilisateur. : // remove original createCollapseButtons functions from onload hook for demo var c...)
 
Aucun résumé des modifications
 
(20 versions intermédiaires par 4 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
/* Tout JavaScript ici sera chargé avec chaque page accédée par n’importe quel utilisateur. */
/* Tout JavaScript ici sera chargé avec chaque page accédée par n’importe quel utilisateur. */

// remove original createCollapseButtons functions from onload hook for demo
// ============================================================
var createCollapseButtonsOrig = createCollapseButtons;
//////////// FONCTION : .indexOf (Patch IE) //////////////
for (var i = 0; i < onloadFuncts.length; i ++) {

if (onloadFuncts[i] == createCollapseButtonsOrig) {
if (!Array.indexOf) {
onloadFuncts.splice(i, 1);
Array.prototype.indexOf = function(obj,idx) {
var len = this.length;
if (len == 0) return -1;
if (!idx) idx = 0;
while (idx < 0) idx = len + idx;
for (var i = 0; i < len; i++)
if (this[i] == obj)
return i;
return -1;
}
}
}
}
// ============================================================
addOnloadHook(

function() {
// ============================================================
for (var i = 0; i < onloadFuncts.length; i ++) {
//////////// FONCTION : .HTMLize (évite des attaques XSS) //////////////
if (onloadFuncts[i] == createCollapseButtonsOrig) {
if(!String.HTMLize){
onloadFuncts.splice(i, 1);
String.prototype.HTMLize = function() {
}
var chars = new Array('&','<','>','"');
}
var entities = new Array('amp','lt','gt','quot');
var string = this;
for (var i=0; i<chars.length; i++) {
var regex = new RegExp(chars[i], "g");
string = string.replace(regex, '&' + entities[i] + ';');
}
}
return string;
);
/** Collapsible tables *********************************************************
*
* Description: Allows tables to be collapsed, showing only the header. See
* [[Wikipedia:NavFrame]].
* Maintainers: [[User:R. Koot]]
* Changed for better usability by [[User:Cacycle]]
*/
var autoCollapseTest = 2;
var expandCaptionTest = '<a class="collapseButtonContent"><span class="collapseButtonShow">&nbsp;</span>afficher</a>';
var collapseCaptionTest = '<a class="collapseButtonContent"><span class="collapseButtonHide">&nbsp;</span>masquer</a>';
var expandTitle = 'Afficher le contenu masqué';
var collapseTitle = 'Masquer le contenu';
// detect MS-IE < 7
if (window.showModalDialog && window.clipboardData && window.createPopup) {
// ignore MS-IE >= 7 in compatibility mode
var agent = navigator.userAgent.match(/(MSIE)\W+(\d+\.\d+)/i);
if ( (agent == null) || (parseFloat(agent[2]) < 7) ) {
expandCaptionTest = '<a class="collapseButtonContent"><span class="collapseButtonShowIE6">&nbsp;</span>afficher</a>';
collapseCaptionTest = '<a class="collapseButtonContent"><span class="collapseButtonHideIE6">&nbsp;</span>masquer</a>';
}
}
}
}
// ============================================================

// ==================================================================================================
collapseTableTest = function( tableIndex )
//////////// FONCTIONS RELATIVES AUX COOKIES //////////////
{
function setCookie (cookieName, cookieValue, expires, path) {
var Button = document.getElementById( "collapseButton" + tableIndex );
document.cookie = escape(cookieName) + '=' + escape(cookieValue) + (expires ? '; EXPIRES=' + expires.toGMTString() : '') + "; PATH=/" ;
var Table = document.getElementById( "collapsibleTable" + tableIndex );
}
if ( !Table || !Button ) {
function getCookie(cookieName) {
var cookieValue = null;
var posName = document.cookie.indexOf(escape(cookieName) + '=' );
if (posName != -1) {
var posValue = posName + (escape(cookieName) + '=' ).length;
var endPos = document.cookie.indexOf(';', posValue) ;
if (endPos != -1) {
cookieValue = unescape(document.cookie.substring(posValue, endPos));
} else {
cookieValue = unescape(document.cookie.substring(posValue));
}
}
return decodeURIComponent(cookieValue);
}
// ============================================================

// ============================================================
//////////// FONCTIONS : MANIPULATION DE CLASSES //////////////
function hasClass(node, className) {
if (node.className == className) {
return true;
}
var reg = new RegExp('(^| )'+ className +'($| )')
if (reg.test(node.className)) {
return true;
}
return false;
}

function addClass(node, className) {
if (hasClass(node, className)) {
return false;
return false;
}
}
node.className += ' '+ className;
return true;
}
function removeClass(node, className) {
var Rows = Table.rows;
if (!hasClass(node, className)) {
return false;
}
node.className = eregReplace('(^|\\s+)'+ className +'($|\\s+)', ' ', node.className);
return true;
}
function eregReplace(search, replace, subject) {
if ( Button.title == collapseTitle ) {
return subject.replace(new RegExp(search,'g'), replace);
for ( var i = 1; i < Rows.length; i++ ) {
}
Rows[i].style.display = "none";

}
// ============================================================
Button.innerHTML = expandCaptionTest;
//////////// FONCTION : RECUPERE LE CONTENU TEXTUEL D'UN ELEMENT //////////////
Button.title = expandTitle;
function getTextContent(oNode) {
} else {
if (typeof(oNode.textContent)!="undefined") {return oNode.textContent;}
for ( var i = 1; i < Rows.length; i++ ) {
switch (oNode.nodeType) {
Rows[i].style.display = Rows[0].style.display;
}
case 3: // TEXT_NODE
case 4: // CDATA_SECTION_NODE
Button.innerHTML = collapseCaptionTest;
Button.title = collapseTitle;
return oNode.nodeValue;
break;
case 7: // PROCESSING_INSTRUCTION_NODE
case 8: // COMMENT_NODE
if (getTextContent.caller!=getTextContent) {
return oNode.nodeValue;
}
break;
case 9: // DOCUMENT_NODE
case 10: // DOCUMENT_TYPE_NODE
case 12: // NOTATION_NODE
return null;
break;
}
var _textContent = "";
oNode = oNode.firstChild;
while (oNode) {
_textContent += getTextContent(oNode);
oNode = oNode.nextSibling;
}
return _textContent;
}
// ===============================================


// ===============================================
//////////// FONCTION : INSERE UN ELEMENT APRES UN ELEMENT DE REFERENCE //////////////
function insertAfter(element, reference) {
if(reference.nextSibling!=null){
reference.parentNode.insertBefore(element, reference.nextSibling);
}else{
reference.parentNode.appendChild(element);
}
}
window.getSelection().removeAllRanges();
}
}
// ===============================================


// ===============================================
//////////// FONCTION : DECODE LE HTML ISSU D'UNE REQUETE API //////////////
function API_HTMLDecode(text){
var EncodedCharacter = new Array();
var DecodedCharacter = new Array();
var CharacterCount = 0;
EncodedCharacter[CharacterCount] = "&amp;";
function createCollapseButtonsTest()
DecodedCharacter[CharacterCount] = "&";
{
CharacterCount++;
var tableIndex = 0;
EncodedCharacter[CharacterCount] = "&#039;";
var NavigationBoxes = new Object();
DecodedCharacter[CharacterCount] = "'";
var Tables = document.getElementsByTagName( "table" );
CharacterCount++;
EncodedCharacter[CharacterCount] = "&quot;";
DecodedCharacter[CharacterCount] = '"';
CharacterCount++;
for ( var i = 0; i < Tables.length; i++ ) {
for(var a=0;a<EncodedCharacter.length;a++){
if ( hasClass( Tables[i], "collapsible" ) ) {
while(text.indexOf(EncodedCharacter[a])!=-1){
text = text.split(EncodedCharacter[a]).join(DecodedCharacter[a]);
if(text.indexOf(EncodedCharacter[a])==-1) break;
// only add button and increment count if there is a header row to work with
var HeaderRow = Tables[i].getElementsByTagName( "tr" )[0];
if (!HeaderRow) continue;
var Header = HeaderRow.getElementsByTagName( "th" )[0];
if (!Header) continue;
// insert space-balancing empty span left of the title
var span = document.createElement('span');
span.className = 'collapseButtonBalance';
Header.insertBefore(span, Header.lastChild);
NavigationBoxes[ tableIndex ] = Tables[i];
Tables[i].setAttribute( "id", "collapsibleTable" + tableIndex );
// Styles are declared in Common.css
Header.innerHTML += '<span id="collapseButton' + tableIndex + '" class="collapseButtonTest" onclick="javascript:collapseTableTest(' + tableIndex + ')" title="' + collapseTitle + '">' + collapseCaptionTest + '</span>';
tableIndex++;
}
}
for ( var i = 0; i < tableIndex; i++ ) {
if ( hasClass( NavigationBoxes[i], "collapsed" ) || ( tableIndex >= autoCollapseTest && hasClass( NavigationBoxes[i], "autocollapse" ) ) ) {
collapseTableTest( i );
}
else if ( hasClass( NavigationBoxes[i], "innercollapse" ) ) {
var element = NavigationBoxes[i];
while (element = element.parentNode) {
if ( hasClass( element, "outercollapse" ) ) {
collapseTableTest ( i );
break;
}
}
}
}
}
}
return text;
}
}
// ===============================================
addOnloadHook(createCollapseButtonsTest);

Dernière version du 2 décembre 2023 à 14:36

/* Tout JavaScript ici sera chargé avec chaque page accédée par n’importe quel utilisateur. */

// ============================================================
//////////// FONCTION : .indexOf (Patch IE) //////////////

if (!Array.indexOf) {
  Array.prototype.indexOf = function(obj,idx) {
    var len = this.length;
    if (len == 0) return -1;
    if (!idx) idx = 0;
    while (idx < 0) idx = len + idx;
    for (var i = 0; i < len; i++)
      if (this[i] == obj)
        return i;
    return -1;
  }
}
// ============================================================

// ============================================================
//////////// FONCTION : .HTMLize (évite des attaques XSS) //////////////
if(!String.HTMLize){
  String.prototype.HTMLize = function() {
    var chars = new Array('&','<','>','"');
    var entities = new Array('amp','lt','gt','quot');
    var string = this;
    for (var i=0; i<chars.length; i++) {
      var regex = new RegExp(chars[i], "g");
      string = string.replace(regex, '&' + entities[i] + ';');
    }
    return string;
  }
}
// ============================================================

// ==================================================================================================
//////////// FONCTIONS RELATIVES AUX COOKIES //////////////
function setCookie (cookieName, cookieValue, expires, path) {
        document.cookie = escape(cookieName) + '=' + escape(cookieValue) + (expires ? '; EXPIRES=' + expires.toGMTString() : '') + "; PATH=/" ; 
}
  
function getCookie(cookieName) {
        var cookieValue = null;
        var posName = document.cookie.indexOf(escape(cookieName) + '=' );
        if (posName != -1) {
                        var posValue = posName + (escape(cookieName) + '=' ).length;
                        var endPos = document.cookie.indexOf(';', posValue) ;
                if (endPos != -1) {
                        cookieValue = unescape(document.cookie.substring(posValue, endPos));
                } else {
                        cookieValue = unescape(document.cookie.substring(posValue));
                }
        }
        return decodeURIComponent(cookieValue);
}
// ============================================================

// ============================================================
//////////// FONCTIONS : MANIPULATION DE CLASSES //////////////
function hasClass(node, className) {
  if (node.className == className) {
    return true;
  }
  var reg = new RegExp('(^| )'+ className +'($| )')
  if (reg.test(node.className)) {
    return true;
  }
  return false;
}

function addClass(node, className) {
    if (hasClass(node, className)) {
        return false;
    }
    node.className += ' '+ className;
    return true;
}
 
function removeClass(node, className) {
  if (!hasClass(node, className)) {
    return false;
  }
  node.className = eregReplace('(^|\\s+)'+ className +'($|\\s+)', ' ', node.className);
  return true;
}
 
function eregReplace(search, replace, subject) {
    return subject.replace(new RegExp(search,'g'), replace);
}

// ============================================================
//////////// FONCTION : RECUPERE LE CONTENU TEXTUEL D'UN ELEMENT //////////////
function getTextContent(oNode) {
  if (typeof(oNode.textContent)!="undefined") {return oNode.textContent;}
  switch (oNode.nodeType) {
    case 3: // TEXT_NODE
    case 4: // CDATA_SECTION_NODE
      return oNode.nodeValue;
      break;
    case 7: // PROCESSING_INSTRUCTION_NODE
    case 8: // COMMENT_NODE
      if (getTextContent.caller!=getTextContent) {
        return oNode.nodeValue;
      }
      break;
    case 9: // DOCUMENT_NODE
    case 10: // DOCUMENT_TYPE_NODE
    case 12: // NOTATION_NODE
      return null;
      break;
  }
  var _textContent = "";
  oNode = oNode.firstChild;
  while (oNode) {
    _textContent += getTextContent(oNode);
    oNode = oNode.nextSibling;
  }
  return _textContent;
}
// ===============================================


// ===============================================
//////////// FONCTION : INSERE UN ELEMENT APRES UN ELEMENT DE REFERENCE //////////////
function insertAfter(element, reference) {
    if(reference.nextSibling!=null){
        reference.parentNode.insertBefore(element, reference.nextSibling);
    }else{
        reference.parentNode.appendChild(element);
    }
}
// ===============================================


// ===============================================
//////////// FONCTION : DECODE LE HTML ISSU D'UNE REQUETE API //////////////
function API_HTMLDecode(text){
      var EncodedCharacter = new Array();
      var DecodedCharacter = new Array();
      var CharacterCount = 0;
 
      EncodedCharacter[CharacterCount] = "&amp;";
      DecodedCharacter[CharacterCount] = "&";
      CharacterCount++;
      EncodedCharacter[CharacterCount] = "&#039;";
      DecodedCharacter[CharacterCount] = "'";
      CharacterCount++;
      EncodedCharacter[CharacterCount] = "&quot;";
      DecodedCharacter[CharacterCount] = '"';
      CharacterCount++;
 
      for(var a=0;a<EncodedCharacter.length;a++){
            while(text.indexOf(EncodedCharacter[a])!=-1){
                  text = text.split(EncodedCharacter[a]).join(DecodedCharacter[a]);
                  if(text.indexOf(EncodedCharacter[a])==-1) break;
            }
      }
      return text;
}
// ===============================================
Wikiboo Outils personnels