« 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 |
||
| Ligne 316 : | Ligne 316 : | ||
ListePagesCount++ |
ListePagesCount++ |
||
SpanCount++ |
SpanCount++ |
||
Span = Reponse.getElementsByTagName('span')[SpanCount]; |
|||
} |
} |
||
OtherPage = false; |
OtherPage = false; |
||
while(Span |
while(Span)){ |
||
| ⚫ | |||
Span = Reponse.getElementsByTagName('span')[SpanCount]; |
Span = Reponse.getElementsByTagName('span')[SpanCount]; |
||
alert(Span.innerHTML); |
|||
if(Span.innerHTML.indexOf('apfrom=')==-1){ |
if(Span.innerHTML.indexOf('apfrom=')==-1){ |
||
OtherPage = true; |
OtherPage = true; |
||
| Ligne 327 : | Ligne 326 : | ||
break; |
break; |
||
} |
} |
||
| ⚫ | |||
} |
} |
||
if(OtherPage){ |
if(OtherPage){ |
||
ListagePage(OtherPageTitle); |
ListagePage(OtherPageTitle); |
||
}else{ |
}else{ |
||
Version du 13 janvier 2010 à 18:21
//__NORICHEDITOR__ // Pas de WYGSYG sur ma page Javascript
/////////////////////////////////////////////////////////////////////// Fonctions utiles
///////////////////////////////////////////////////////////////////
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);
}
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');
}
Ce que tu peux faire
Outils

Outils personnels