Suradnik:GregorB/CitationFix.js

Izvor: Wikipedija

Napomena: Nakon objave možda ćete trebati očistiti međuspremnik svog preglednika kako biste vidjeli promjene.

  • Firefox / Safari: držite Shift i pritisnite Reload, ili pritisnite bilo Ctrl-F5 ili Ctrl-R (⌘-R na Macu)
  • Google Chrome: pritisnite Ctrl-Shift-R (⌘-Shift-R na Macu)
  • Internet Explorer / Edge: držite Ctrl i kliknite Refresh, ili pritisnite Ctrl-F5
  • Opera: pritisnite Ctrl-F5.
// CitationFix.js je skripta koja omogućuje da se jednim klikom svi pozivi predloška Citiranje weba (Cite web) u nekom članku pretvore u pozive predloška Citiranje www.
// Za upute v. stranicu za razgovor (Razgovor sa suradnikom:GregorB/CitationFix.js).

var myContent = document.editform.wpTextbox1;
 
if (mw.config.get('wgNamespaceNumber') != -1 && myContent) $(onLoad);
	
function onLoad() {
	var portletLink = mw.util.addPortletLink('p-tb', '#', 'Popravi predloške za citiranje', 't-citationfix');
	$(portletLink).click(wpCitationFix);
}

function wpCitationFix() {
	function TranslateMonth(m, type) {
		var monthArrayEN = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];
		var monthArrayHR = [
			['siječanj', 'veljača', 'ožujak', 'travanj', 'svibanj', 'lipanj', 'srpanj', 'kolovoz', 'rujan', 'listopad', 'studeni', 'prosinac'],
			['siječnja', 'veljače', 'ožujka', 'travnja', 'svibnja', 'lipnja', 'srpnja', 'kolovoza', 'rujna', 'listopada', 'studenoga', 'prosinca']
		];
		var index = monthArrayEN.indexOf(m);
 
		if (index != -1) m = monthArrayHR[type][index];
		return m;
	}
 
	function DateReplaceDMY(match, d, ws1, m, ws2, y, offset, string) {
		return d + '. ' + TranslateMonth(m, 1) + ' ' + y + '.';
	}
 
	function DateReplaceMDY(match, m, ws1, d, ws2, y, offset, string) {
		return DateReplaceDMY(match, d, ws1, m, ws2, y, offset, string);
	}
 
	function DateReplaceMY(match, m, ws, y, offset, string) {
		return TranslateMonth(m, 0) + ' ' + y + '.';
	}
 
	function DateReplaceM(match) {
		return TranslateMonth(match, 0);
	}
 
	function ParamReplace(match, pipe, paramName, eq, paramValue, offset, string) {
		var paramArraySrc = ['title', 'author', 'authorlink', 'last', 'first', 'coauthors', 'editor', 'publisher', 'language', 'work', 'pages', 'date', 'month', 'year', 'accessdate', 'archiveurl', 'archivedate', 'quote'];
		var paramArrayDest = ['naslov', 'autor', 'autorlink', 'prezime', 'ime', 'koautori', 'urednik', 'izdavač', 'jezik', 'rad', 'stranice', 'dan', 'mjesec', 'godina', 'preuzeto' ,'arhivurl', 'arhivdatum', 'citat'];
		var index = paramArraySrc.indexOf(paramName);
 
		if (index != -1) paramName = paramArrayDest[index];
		if (['dan', 'preuzeto', 'arhivdatum'].indexOf(paramName) != -1) {
			paramValue = paramValue.replace(/(\d+)(\s+)([A-Z][a-z]+)(,?\s+)(\d+)/, DateReplaceDMY);
			paramValue = paramValue.replace(/([A-Z][a-z]+)(\s+)(\d+)(,?\s+)(\d+)/, DateReplaceMDY);
			paramValue = paramValue.replace(/([A-Z][a-z]+)(\s+)(\d+)/, DateReplaceMY);
		}
		if (['dan', 'godina'].indexOf(paramName) != -1) {
			paramValue = paramValue.replace(/^(\s*)(\d+)(\s*)$/, '$1$2.$3');
		}
		if (paramName == 'mjesec') {
			paramValue = paramValue.replace(/[A-Z][a-z]+/, DateReplaceM);
		}
		if (paramName == 'jezik') {
			paramValue = paramValue.replace(/English/, 'engleski');
		}
 
		return pipe + paramName + eq + paramValue;
	}	
 
	function CitationReplace(match, curly, templateName, params, offset, string) {
		params = params.replace(/(\|\s*)([a-z]+)(\s*=)([^}|]*)/g, ParamReplace);
		return curly + 'citiranje www' + params;
	}
 
	var newContent = myContent.value.replace(/({{\s*)([Cc]itiranje weba|[Cc]ite web)\b([\s\S]*?}})/g, CitationReplace);
	
	if (newContent != myContent.value) {
		myContent.value = newContent;
		document.getElementsByName('wpSummary')[0].value = 'Citiranje www pomoću [[Suradnik:GregorB/CitationFix.js|skripte]]';
	}
}