Utilizator:Strainu/trending article.js

Notă: După salvare, trebuie să treceți peste cache-ul browser-ului pentru a vedea modificările.

  • Mozilla, Google Chrome, Safari, Konqueror: țineți apăsat Shift în timp ce apăsați butonul Reload (sau apăsați Ctrl-Shift-R).
  • Internet Explorer: apăsați Ctrl-F5.
  • Opera: apăsați F5.
var yesterday = new Date();
var daysOffset = 1;
//TODO only working in Eastern hemisphere
if (yesterday.getUTCHours() > yesterday.getHours()) {
	daysOffset = 2;
}
yesterday.setDate(yesterday.getDate() - daysOffset);
var date = yesterday.getFullYear() + '/' + 
	('0' + (yesterday.getMonth()+1)).slice(-2) + '/' + 
	('0' + yesterday.getDate()).slice(-2);

var storageKey = "trendingArticle" + date;	
var expiry = 24 * 60 * 60;

displayArticle = function(article) {
	if (article !== null) {
		var siteNotice = document.getElementById('siteNotice');
		var text = '<div style="text-align:center;">Articol foarte vizitat care ar merita editat sau urmărit: <a href="https://ro.wikipedia.org/wiki/' + article + '" title="' + article + '">' + article.replaceAll('_', ' ') + '</a>.</div>';
		siteNotice.innerHTML = siteNotice.innerHTML + text;
	}
}

chooseArticle = function(data) {
	var blacklist = [
		'Pagina_principală', 
		'Main_Page', 
		'Special:Căutare', 
		'Special:Search',
		'Superbet'
	];
	if ('blacklist' in window.trendingArticlePrefs) {
		blacklist = window.trendingArticlePrefs.blacklist;
	}
	var targetProject = 'ro.wikipedia';
	if ('project' in window.trendingArticlePrefs) {
		targetProject = window.trendingArticlePrefs.project;
	}
	var choice = 'first';
	if ('choice' in window.trendingArticlePrefs) {
		choice = window.trendingArticlePrefs.choice;
	}
	
	var article = null;
	for (var article_no in data.items[0].articles) {
		var name = data.items[0].articles[article_no].article;
		var project = data.items[0].articles[article_no].project;
		//alert(name);
		
		if (blacklist.includes(name)) {
			//alert(blacklist)
			continue;
		}
		if (project !== targetProject) {
			continue;
		}
		
		article = name;
		if (choice == 'first') {
			break;
		}
	}
	return article;
}

pageviewsCallback = function(data) {
	article = chooseArticle(data);
	displayArticle(article);
	mw.storage.setObject( storageKey, data, expiry );
}

var storage = mw.storage.getObject( storageKey );
if (storage === null || storage === false) {
	var pageviewsUrl = '//wikimedia.org/api/rest_v1/metrics/pageviews/top-per-country/RO/all-access/' + date;
	console.log('Retrieving pageviews from ' + pageviewsUrl);
	$.getJSON(pageviewsUrl, pageviewsCallback);
} else {
	console.log('Retrieving pageviews from local storage key ' + storageKey);
	article = chooseArticle(storage);
	displayArticle(article);
}