Участник:Abiyoyo/ShowStatus.js

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
function doSomethingWithText( wikitext ) {
	var divContainer = document.createElement("div");
	var resultString='';
	regexp=/\{\{[С|с]татья проекта .*?\}\}/g;
	while ((templateString = regexp.exec(wikitext)) !== null) {
		reProjName=/\{\{[С|с]татья проекта ([А-Яа-яA-Za-z\d\s\-]*)/g;
		projectName=reProjName.exec(templateString[0]);
		reProjLevel=/уровень=([А-Яа-яA-Za-z\d]*)/g;
		if ((projectLevel=reProjLevel.exec(templateString[0])) !== null) formLevel=formatAssessment(projectLevel[1]);
		else formLevel='не определен';
		catName=formatCatName(projectName[1], formLevel);
		resultString+='<div><small>Статья проекта <a href="'+mw.config.get('wgServer')+'/wiki/Проект:'+projectName[1]+'">'+projectName[1]+'</a>; Уровень: '+formLevel+'; <a href="'+mw.config.get('wgServer')+'/wiki/Категория:'+catName+'">категория</a></small></div>';
	}
	resultString+='<div><small><a href="'+mw.config.get('wgServer')+'/w/index.php?title=Обсуждение:'+mw.config.get('wgPageName')+'&action=edit">править СО</a></small></div>';
	divContainer.innerHTML = resultString;
	document.getElementById("content").insertBefore(divContainer, document.getElementsByTagName("h1")[0]);
}

function formatAssessment(str) {
	if ((str == '1') ||(str ==  'I')) return 'I';
	if ((str == '2') ||(str ==  'II')) return 'II';
	if ((str == '3') ||(str ==  'III')) return 'III';
	if ((str == '4') ||(str ==  'IV')) return 'IV';
	if ((str == 'ДС') ||(str ==  'дс')) return 'ДС';
	if ((str == 'ХС') ||(str ==  'хс')) return 'ХС';
	if ((str == 'ИС') ||(str ==  'ис')) return 'ИС';
	if ((str == 'Список') || (str ==  'List') || (str == 'список')) return 'Список';
	if ((str == 'ИСП') ||(str ==  'исп')) return 'ИСП';
	return 'не определен';
}

function formatCatName(project, level) {
	if (level == 'I') return 'Статьи проекта '+project+' '+level+' уровня';
	if (level == 'II') return 'Статьи проекта '+project+' '+level+' уровня';
	if (level == 'III') return 'Статьи проекта '+project+' '+level+' уровня';
	if (level == 'IV') return 'Статьи проекта '+project+' '+level+' уровня';
	if (level == 'не определен') return 'Статьи проекта '+project+' неизвестного уровня';
	if (level == 'ДС') return 'Добротные статьи проекта '+project;
	if (level == 'ХС') return 'Хорошие статьи проекта '+project;
	if (level == 'ИС') return 'Избранные статьи проекта '+project;
	if (level == 'Список') return 'Списки проекта '+project;
	if (level == 'ИСП') return 'Избранные списки проекта '+project;
	return '0';
}

function doSomethingInCaseOfError () {
	console.log( 'err' );
}

mw.loader.using('mediawiki.api').then(function () {
	return (new mw.Api()).get( {
		prop: 'revisions',
		rvprop: 'content',
		rvlimit: 1,
		indexpageids: true,
		titles: 'Обсуждение:'+mw.config.get('wgPageName')
	} )
	.done( function ( data ) {
		var q = data.query,
			id = q && q.pageids && q.pageids[0],
			pg = id && q.pages && q.pages[ id ],
			rv = pg && pg.revisions;
		if ( rv && rv[0] && rv[0]['*'] ) {
			doSomethingWithText( rv[0]['*'] );
		}
	} )
	.fail( doSomethingInCaseOfError );
});