Utilisateur:Zelda/counter.js
De Wikipedia, l'encyclopédie encyclopedia
// counter label (internationnalizable and personnalizable variable) var pgCounterLabel = "page consultée $count fois [<a href=\"javascript:resetPageCounter()\">RAZ</a>]";
/**
* Display a counter of how many times the page has been consulted. * The counter is displayes in the upper right corner of the page. * It requires Firefox 2.0 (uses client side persistent storage), * and will NOT work under other non-gecko browsers (IE, OPERA, ...) * author : Zelda for fr.wikipedia.org */
// prefix for counter storage (shorter is better) var pgCounterPrefix = "counter."
/**
* Increments and displays page counter */
function pageCounter() {
if (typeof globalStorage == "undefined") { alert("This page counter uses persistent storage features and requires Mozilla Firefox 2.0"); return; } // Counter only available in main namespace to spare storage if (mw.config.get('wgNamespaceNumber') != 0) return; if (mw.config.get('wgAction') != "view") return; // Retrieve and increment counter var count = getPageCounter() + 1; setPageCounter(count); displayPageCounter(count);
}
/**
* Return page counter global storage */
function getPageCounterStorage() {
return globalStorage[location.hostname];
}
/**
* Return page counter as an integer */
function getPageCounter() {
var count = getPageCounterStorage().getItem(pgCounterPrefix + mw.config.get('wgArticleId')); if (! count) return 0; return parseInt(count);
}
/**
* Page counter setter */
function setPageCounter(count) {
getPageCounterStorage().setItem(pgCounterPrefix + mw.config.get('wgArticleId'), count);
}
/**
* Reset counter for ALL pages */
function resetPageCounter() {
var storage = getPageCounterStorage(); for (var i = 0; i < storage.length; i++) { var key = storage.key(i); if (key.substr(0, pgCounterPrefix.length) == pgCounterPrefix) { storage.removeItem(key); } } // updating counter var counter = document.getElementById("page-counter"); if (counter) { counter.innerHTML = pgCounterLabel.replace(/\$count/, getPageCounter()); }
}
/**
* Display page counter */
function displayPageCounter(count) {
var counterDiv = document.createElement("div"); counterDiv.innerHTML = pgCounterLabel.replace(/\$count/, count); counterDiv.style.textAlign="right"; counterDiv.id = "page-counter"; var contentNode = document.getElementById("content"); contentNode.insertBefore(counterDiv, contentNode.firstChild);
}
$(pageCounter);