Utilisateur:Céréales Killer/Tutoriel archive
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.
Appel des pages
modifierDans 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 « /juin 2024 »
- Là, c'est la page intitulée « /juillet 2024 »
Alerte nouveau message
modifierConcernant le moyen de m'avertir d'un nouveau message, GôTô a concocté ce programme inséré dans mon monobook.js ou vector.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")); } addOnloadHook(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)