« Utilisateur:Dr Bot/wikimini.js » : différence entre les versions
Jump to navigation
Jump to search
Aucun résumé des modifications |
Aucun résumé des modifications |
||
| (22 versions intermédiaires par le même utilisateur non affichées) | |||
| Ligne 1 : | Ligne 1 : | ||
//__NORICHEDITOR__ // Pas de WYGSYG sur ma page Javascript |
//__NORICHEDITOR__ // Pas de WYGSYG sur ma page Javascript |
||
// =========================================================================== |
|||
/////////////////////////////////////////////////////////////////////// Fonctions utiles |
|||
//////////////////////////////////////////////////// Patch extension WhosOnline |
|||
function WhosOnline_CheckNewPage(position){ |
|||
var ListePresents = document.getElementById('WhosOnlineList'); |
|||
if(!ListePresents) return; |
|||
if(!position) position=0; |
|||
function hasClass(node, className) { |
|||
var Lien = ListePresents.getElementsByTagName('a')[position]; |
|||
if (node.className == className) { |
|||
if(!Lien) return; |
|||
return true; |
|||
var LienHref = Lien.href; |
|||
} |
|||
LienHref = LienHref.split(wgServer).join('').split('/wiki/').join(''); |
|||
var reg = new RegExp('(^| )'+ className +'($| )') |
|||
Requete = sajax_init_object(); |
|||
if (reg.test(node.className)) { |
|||
var url = wgServer+'/w/api.php?action=query&redirects&titles='+LienHref; |
|||
return true; |
|||
Requete.open('GET',url, true); |
|||
} |
|||
Requete.send(null); |
|||
return false; |
|||
Requete.onreadystatechange = function(){ |
|||
} |
|||
if((Requete.readyState == 4)&&(Requete.status == 200)){ |
|||
var Reponse = document.createElement('div'); |
|||
function addClass(node, className) { |
|||
Reponse.innerHTML = Requete.responseText; |
|||
if (hasClass(node, className)) { |
|||
var Spans = Reponse.getElementsByTagName('span'); |
|||
return false; |
|||
for(a=0;a<Spans.length;a++){ |
|||
} |
|||
var SpanHTML = Spans[a].innerHTML; |
|||
node.className += ' '+ className; |
|||
if(SpanHTML.indexOf('missing=""')!=-1){ |
|||
return true; |
|||
Lien.className = "new"; |
|||
} |
|||
} |
|||
} |
|||
function removeClass(node, className) { |
|||
WhosOnline_CheckNewPage((position+1)); |
|||
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); |
|||
} |
|||
function get_nextsibling(n){ |
|||
x=n.nextSibling; |
|||
if(x==null) return false; |
|||
while (x.nodeType!=1) { |
|||
x=x.nextSibling; |
|||
if(x==null) return false; |
|||
} |
|||
return x; |
|||
} |
|||
function get_previoussibling(n){ |
|||
x=n.previousSibling; |
|||
if(x==null) return false; |
|||
while (x.nodeType!=1) { |
|||
x=x.previousSibling; |
|||
if(x==null) return false; |
|||
} |
|||
return x; |
|||
} |
|||
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; |
|||
} |
|||
var agt=navigator.userAgent.toLowerCase(); |
|||
var is_ie = ((agt.indexOf("msie") != -1) && (agt.indexOf("opera") == -1)); |
|||
function supprimerAncienElement(OldElement){ |
|||
if(!OldElement)return; |
|||
if(is_ie){ |
|||
OldElement.removeNode(true); |
|||
}else { |
|||
if(OldElement.parentNode){document=OldElement.parentNode.removeChild(OldElement);} |
|||
} |
|||
} |
|||
function insertAfter(parent, node, referenceNode) { |
|||
parent.insertBefore(node, referenceNode.nextSibling); |
|||
} |
|||
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); |
|||
} |
|||
/////////////////////////////////////////////////////////////////////// Modification de l'apparence du skin wikimini (inutile avec la redirection monobook) |
|||
/////////////////////////////////////////////////////////////////////// |
|||
addOnloadHook (function(){ |
|||
// ################## GÉNÉRAL ################## |
|||
// --------- Largeur = 100% au lieu de 800px ------------------- |
|||
var mainDiv = document.getElementById('main'); |
|||
mainDiv.style.width = '100%'; |
|||
// --------- Suppression de l'objet flash (trop gros, trop moche...) ------------------- |
|||
/* |
|||
var flashDiv = document.getElementById('header'); |
|||
flashDiv.style.display = 'none'; |
|||
*/ |
|||
// --------- Déplacement des liens personnels en haut de page ------------------- |
|||
var AllH5 = document.getElementsByTagName('h5'); |
|||
for(a=0;a<AllH5.length;a++){ |
|||
if(AllH5[a].innerHTML.indexOf('Outils personnels')!=-1){ |
|||
var TitrePerso = AllH5[a]; |
|||
var IconePerso = get_previoussibling(TitrePerso); |
|||
var LiensPerso = get_nextsibling(TitrePerso); |
|||
LiensPerso.parentNode.removeChild ( LiensPerso ) ; |
|||
document.body.insertBefore(LiensPerso, document.body.firstChild); |
|||
LiensPerso.style.marginLeft = '3em'; |
|||
var LiensPersoDiv = LiensPerso.getElementsByTagName('div'); |
|||
for(b=0;b<LiensPersoDiv.length;b++){ |
|||
LiensPersoDiv[b].style.padding = '0'; |
|||
LiensPersoDiv[b].style.margin = '0'; |
|||
} |
|||
TitrePerso.parentNode.removeChild ( TitrePerso ) ; |
|||
LiensPerso.insertBefore(TitrePerso , LiensPerso.firstChild); |
|||
TitrePerso.style.padding = '0'; |
|||
TitrePerso.style.margin = '0'; |
|||
TitrePerso.style.marginLeft = '3em'; |
|||
IconePerso.parentNode.removeChild ( IconePerso ) ; |
|||
LiensPerso.insertBefore(IconePerso, LiensPerso.firstChild); |
|||
IconePerso.style.padding = '0'; |
|||
IconePerso.style.margin = '0'; |
|||
IconePerso.style.marginLeft = '2em'; |
|||
} |
|||
} |
|||
// ################## COLONNES ################## |
|||
var AllDiv = document.getElementsByTagName('Div'); |
|||
for(a=0;a<AllDiv.length;a++){ |
|||
if(hasClass(AllDiv[a], 'columns')){ |
|||
var Colonnes = AllDiv[a] |
|||
}else if(hasClass(AllDiv[a], 'column1')){ |
|||
var Colonne1 = AllDiv[a] |
|||
}else if(hasClass(AllDiv[a], 'column2')){ |
|||
var Colonne2 = AllDiv[a] |
|||
} |
|||
} |
|||
// --------- Largeur colonne de droite réduite ------------------- |
|||
Colonne1.style.width = '80%'; |
|||
Colonne2.style.width = '20%'; |
|||
// --------- Zone de recherche en haut de la colonne de droite ------------------- |
|||
var Recherche = document.getElementById('p-search'); |
|||
if(Recherche){ |
|||
Recherche.parentNode.removeChild ( Recherche ) ; |
|||
Colonne2.insertBefore(Recherche , Colonne2.firstChild); |
|||
} |
|||
// --------- Suppression de l'image dans la boîte à outils ------------------- |
|||
var Outils = document.getElementById('p-tb'); |
|||
if(Outils){ |
|||
var Image = Outils.getElementsByTagName('img')[1]; |
|||
Image.style.display = 'none'; |
|||
} |
|||
// ################## ÉDITION ################## |
|||
if(((wgAction=="edit")||(wgAction=="submit"))&&(wgNamespaceNumber>=0)){ |
|||
// --------- Taille zone d'édition ------------------- |
|||
var EditBox = document.getElementById('wpTextbox1'); |
|||
if(EditBox){ |
|||
Colonne1.style.width = '100%'; |
|||
Colonne2.style.display = 'none'; |
|||
EditBox.rows = 30; |
|||
// --------- Ajout toolbar si elle n'y est pas ------------------- |
|||
var toolbar = document.getElementById('toolbar'); |
|||
if(!toolbar){ |
|||
toolbar = document.createElement('div'); |
|||
toolbar.id = 'toolbar'; |
|||
EditBox.parentNode.insertBefore(toolbar, EditBox); |
|||
} |
|||
// --------- Affiche les boutons de publication cachés ------------------- |
|||
var EditOptionsElements = document.getElementById('wpSummaryLabel'); |
|||
while(get_nextsibling(EditOptionsElements)){ |
|||
EditOptionsElements.style.display = 'inline'; |
|||
EditOptionsElements = get_nextsibling(EditOptionsElements); |
|||
} |
|||
var wpSave= document.getElementById('wpSave'); |
|||
wpSave.style.marginLeft = '75px'; |
|||
var wpDiff = document.getElementById('wpDiff'); |
|||
wpDiff.style.display = 'inline'; |
|||
wpDiff.style.margin = '0.5em'; |
|||
// --------- Page modifiée automatiquement suivie ------------------- |
|||
var SuiviModif = document.getElementById('wpWatchthis'); |
|||
SuiviModif.checked = 'checked'; |
|||
} |
|||
} |
|||
}); |
|||
/////////////////////////////////////////////////////////////////////////////// BOT ////////// |
|||
/************************************************* ************************************************* |
|||
Missions : |
|||
* dresser la liste des pages sans image |
|||
* dresser la liste des pages sans catégorie (si pages spéciale inopérante comme sur Wikipédia, ce n'est pas le cas ici) |
|||
* dresser la liste des pages avec une vidéo (modèle spécifique à rechercher) |
|||
Pense-bête requêtes API : (limites pouvant être portées à 4999 avec un statut Bot ou Wikitechnicien) |
|||
* Toutes les pages : |
|||
http://fr.wikimini.org/w/api.php?action=query&list=allpages&prop=info&aplimit=499 (Première requête) |
|||
http://fr.wikimini.org/w/api.php?action=query&list=allpages&prop=info&aplimit=499&gapfrom=??? (requêtes suivantes (??? = titre de la page suivante à la requête précédente)) |
|||
* Infos sur les images d'une page |
|||
http://fr.wikimini.org/w/api.php?action=query&generator=images&prop=info&imlimit=499&titles=??? (??? = titre de la page) |
|||
* Infos sur les modèles d'une page |
|||
http://fr.wikimini.org/w/api.php?action=query&generator=templates&prop=info&tllimit=499&titles=??? (??? = titre de la page) |
|||
* Infos sur les catégories d'une page |
|||
http://fr.wikimini.org/w/api.php?action=query&generator=categories&prop=info&cllimit=499&titles=??? (??? = titre de la page) |
|||
********************************************************* ***************************************************************** */ |
|||
// C'est parti !!! |
|||
// ========================================================================================================= |
|||
// Ajout de liens dans les liens personnels pour lancer/arrêter le bot. |
|||
addOnloadHook( function() { |
|||
var LienPerso = document.getElementById('pt-userpage'); |
|||
var LienBot = document.createElement('li'); |
|||
LienBot.innerHTML = '<a id="BOTon" href="javascript:LancementBot()" title="Lancer le bot">Lancement BOT</a>'; |
|||
LienPerso.parentNode.insertBefore(LienBot, LienPerso); |
|||
}); |
|||
// ========================================================================================================= |
|||
// ========================================================================================================= |
|||
// Définition des liste de pages et infos correspondantes |
|||
var ListePages = new Array(); |
|||
var ListePagesCount = 0; |
|||
var PagesSansImage = new Array(); |
|||
var PagesSansImage = 0; |
|||
var Reponse; |
|||
// ========================================================================================================= |
|||
// ========================================================================================================= |
|||
function LancementBot(){ |
|||
var SurEtCertain = confirm('Lancement du bot ?'); |
|||
if(!SurEtCertain) return; |
|||
var Button = document.getElementById('BOTon'); |
|||
Button.innerHTML = 'Arrêt BOT'; |
|||
Button.title = 'Arrêter le bot'; |
|||
Button.href = 'javascript:window.location.reload();'; |
|||
Reponse = document.createElement('div'); |
|||
document.body.insertBefore(Reponse, document.body.firstChild); |
|||
ListagePage(); |
|||
} |
|||
function ListagePage(PageDebut){ |
|||
if(!PageDebut) PageDebut = ''; |
|||
Requete = sajax_init_object(); |
|||
var url = wgServer+'/w/api.php?action=query&list=allpages&prop=info&aplimit=9'+PageDebut; |
|||
alert(url); |
|||
Requete.open('GET',url, true); |
|||
Requete.send(null); |
|||
Requete.onreadystatechange = function(){ |
|||
if((Requete.readyState == 4)&&(Requete.status == 200)){ |
|||
alert('Reçu'); |
|||
Reponse.innerHTML = Requete.responseText; |
|||
SpanCount = 0; |
|||
var Span = Reponse.getElementsByTagName('span')[SpanCount]; |
|||
while(Span.innerHTML.indexOf('pageid=')==-1){ |
|||
SpanCount++ |
|||
Span = Reponse.getElementsByTagName('span')[SpanCount]; |
|||
alert(Span.innerHTML); |
|||
} |
|||
while(Span.innerHTML.indexOf('allpages')==-1){ |
|||
Span = Reponse.getElementsByTagName('span')[SpanCount]; |
|||
Page = Span.innerHTML.split('title="')[1].split('"')[0]; |
|||
alert(Page) |
|||
ListePages[ListePagesCount] = Page; |
|||
ListePagesCount++ |
|||
SpanCount++ |
|||
} |
|||
OtherPage = false; |
|||
while(Span)){ |
|||
Span = Reponse.getElementsByTagName('span')[SpanCount]; |
|||
alert(Span.innerHTML); |
|||
if(Span.innerHTML.indexOf('apfrom=')==-1){ |
|||
OtherPage = true; |
|||
OtherPageTitle = 'apfrom="' + Span.innerHTML.split('apfrom="')[1].split('"')[0] + '"'; |
|||
break; |
|||
} |
|||
SpanCount++ |
|||
} |
|||
if(OtherPage){ |
|||
ListagePage(OtherPageTitle); |
|||
}else{ |
|||
CheckImages(); |
|||
} |
|||
} |
|||
} |
|||
} |
|||
function CheckImages(position){ |
|||
if(!position) position = 0; |
|||
alert('OK'); |
|||
} |
} |
||
addOnloadHook(WhosOnline_CheckNewPage); |
|||
// =============================================== |
|||
Dernière version du 13 janvier 2010 à 22:41
//__NORICHEDITOR__ // Pas de WYGSYG sur ma page Javascript
// ===========================================================================
//////////////////////////////////////////////////// Patch extension WhosOnline
function WhosOnline_CheckNewPage(position){
var ListePresents = document.getElementById('WhosOnlineList');
if(!ListePresents) return;
if(!position) position=0;
var Lien = ListePresents.getElementsByTagName('a')[position];
if(!Lien) return;
var LienHref = Lien.href;
LienHref = LienHref.split(wgServer).join('').split('/wiki/').join('');
Requete = sajax_init_object();
var url = wgServer+'/w/api.php?action=query&redirects&titles='+LienHref;
Requete.open('GET',url, true);
Requete.send(null);
Requete.onreadystatechange = function(){
if((Requete.readyState == 4)&&(Requete.status == 200)){
var Reponse = document.createElement('div');
Reponse.innerHTML = Requete.responseText;
var Spans = Reponse.getElementsByTagName('span');
for(a=0;a<Spans.length;a++){
var SpanHTML = Spans[a].innerHTML;
if(SpanHTML.indexOf('missing=""')!=-1){
Lien.className = "new";
}
}
WhosOnline_CheckNewPage((position+1));
}
}
}
addOnloadHook(WhosOnline_CheckNewPage);
// ===============================================
Ce que tu peux faire
Outils

Outils personnels