Utilisateur:Céréales Killer/Tutoriel archive
Un article de Wikipédia, l'encyclopédie libre.
Voici comment fonctionne mon archivage automatique des pages de discussions, rangées par mois... Chaque page est enregistrée sous le nom du mois et de l'année : /janvier 2007 par exemple.
[modifier] Appel des pages
Dans l'en-tête de ma page de discussion se trouve un petit bout de code conditionnel ainsi rédigé :
{{/{{PREVIOUSMONTHNAME}} {{#ifeq: {{CURRENTMONTHNAME}} | janvier |{{PREVIOUSYEAR}} |{{CURRENTYEAR}} }} }} {{/{{CURRENTMONTHNAME}} {{CURRENTYEAR}}}}
Le premier test permet de trouver la sous-page du mois précédent (en prenant en compte l'année). Le second code insère la sous-page du mois et de l'année en cours. C'est aussi simple que cela. Ainsi, à chaque changement de mois, ce petit bout de code permet de n'afficher que la sous-page du mois précédent et celle du mois en cours :
- Là, c'est la page intitulée « /mai 2008 »
- Là, c'est la page intitulée « /juin 2008 »
[modifier] Alerte nouveau message
Concernant le moyen de m'avertir d'un nouveau message, GôTô a concocté ce programme inséré dans mon monobook.js :
// fonction d'import de page, sur fr, en, ou autre (exemple sur en: importWikiPage('User:Lupin/popups.js', 'en')) function importWikiPage(page, lng) { langue = (lng ? lng : 'fr') document.write('<script type="text/javascript" src="' + 'http://' + langue + '.wikipedia.org/w/index.php?title=' + page + '&action=raw&ctype=text/javascript&dontcountme=s"></script>'); } // objets Ajax et cookies pour lecture des messages importWikiPage('Utilisateur:GôTô/objects.js') function getArticleName() { var strOut = document.title // case search if (strOut == "Rechercher - Wikipédia") return document.getElementById("lsearchbox").value // case article being modified strOut = strOut.replace("modification de ", "").replace(" - Modifier", "") strOut = strOut.replace(" - Prévisualiser", "").replace(" - Wikipédia", "") return strOut } /***************** Lecture de messages ****************/ function getCurrentId(page) { var li = document.getElementById("t-permalink"); if (li) return (li.getElementsByTagName("a")[0].href.split("oldid=")[1].split("&")[0]); } function getMessages() { var mois = new Array("janvier", "février", "mars", "avril", "mai", "juin", "juillet", "août", "septembre", "octobre", "novembre", "décembre"); mois["janvier"] = 0; mois["février"] = 1; mois["mars"] = 2; mois["avril"] = 3; mois["mai"] = 4; mois["juin"] = 5; mois["juillet"] = 6; mois["août"] = 7; mois["septembre"] = 8; mois["octobre"] = 9; mois["novembre"] = 10; mois["décembre"] = 11; var article = getArticleName(); var month = -1; var year = -1; if (article.indexOf("Discussion Utilisateur:TON_PSEUDO_ICI/") > -1) { month = mois[article.split("Discussion Utilisateur:TON_PSEUDO_ICI/")[1].split(" ")[0]]; year = article.split("Discussion Utilisateur:TON_PSEUDO_ICI/")[1].split(" ")[1]; //first case: we are on a talk page of ours: we read and save the ''oldid'' in a cookie cookies.set("lastViewedMsg" + mois[month], getCurrentId(), 30*86400*1000); } var dNow = new Date(); var page = encodeURI("Discussion Utilisateur:TON_PSEUDO_ICI/").replace(/%20/g, "_") + encodeURI(mois[dNow.getMonth()]) + "_" + dNow.getFullYear() + "||" + encodeURI(mois[dNow.getMonth()]); //check the page of the current month if (month != dNow.getMonth() || year != dNow.getFullYear()) checkPageForMessages(page); var prevMonth = dNow.getMonth() -1; var prevMonthYear = dNow.getFullYear(); if (prevMonth == -1) { prevMonth = 11; prevMonthYear--; page = page.replace(dNow.getFullYear(), prevMonthYear); } page = page.replace(new RegExp(encodeURI(mois[dNow.getMonth()]), "g"), encodeURI(mois[prevMonth])); //check the page of the previous month if (month != prevMonth || year != prevMonthYear) checkPageForMessages(page); } function checkPageForMessages(page) { var ajaxObj = new objAJAX(); ajaxObj.page = page; ajaxObj.conn.onreadystatechange = function () { if (ajaxObj.conn.readyState == 4) { if (ajaxObj.conn.status == 200) { var lastViewedId = (cookies.get("lastViewedMsg" + decodeURI(ajaxObj.page.split("||")[1])) ? cookies.get("lastViewedMsg" + decodeURI(ajaxObj.page.split("||")[1])) : 0); var currentId = ajaxObj.conn.responseText.split(ajaxObj.page.split("||")[0] + "&oldid=")[1].split('"')[0]; if (parseInt(currentId, 10) > parseInt(lastViewedId, 10)) alertMessage(ajaxObj.page); } } } return(ajaxObj.sendRequest("/w/index.php?title=" + page.split("||")[0] + "&limit=1&action=history", "GET", true)); } function alertMessage(page) { var div = document.getElementById("nouveauMessage"); if (!div) { div = document.createElement("div"); div.className = "usermessage"; div.id = "nouveauMessage"; var cont = document.getElementById("content"); cont.insertBefore(div, document.getElementById("bodyContent")); } var txt = document.createTextNode("Vous avez de nouveaux messages: "); var aDiff = document.createElement("a"); aDiff.href = "/w/index.php?title=" + page.split("||")[0] + "&diff=cur"; aDiff.innerHTML = "différences (" + decodeURI(page.split("||")[1]) + ")"; div.appendChild(txt); div.appendChild(aDiff); div.appendChild(document.createElement("br")); } addLoadEvent(getMessages); /************** Lecture de messages fin *****************/
Ne pas oublier de remplacer toutes les occurrences de TON_PSEUDO_ICI par le nom de ta page de discussion. Et voilà, c'est fini ! Bon amusement... :) ©éréales Kille® | Speak to me* | en ce 12 janvier 2007 à 11:31 (CET)