Usuário:Heldergeovane/Scripts/Ligações extras.js

Origem: Wikilivros, livros abertos por um mundo aberto.

Nota: Após gravar, terá de limpar a cache do seu navegador para ver as alterações. Mozilla / Firefox / Safari: pressione Shift enquanto clica em Recarregar, ou pressione Ctrl-F5 ou Ctrl-R (Command-R num Macintosh); Konqueror:: clique no botão Recarregar ou pressione F5; Opera: limpe a cache em Ferramentas → Preferências (Tools → Preferences); Internet Explorer: pressione Ctrl enquanto clica em Recarregar ou pressione Ctrl-F5.

function addLink(local, text, href) {
	if ( !local ) return null;
	local.appendChild(document.createTextNode(' ('));
	var link = document.createElement('a');
	link.appendChild( document.createTextNode( text ) );
	link.href = href;
	local.appendChild(link);
	local.appendChild(document.createTextNode(')'));
	return link;
}
 
addOnloadHook(function () {
	//Nas páginas de bibliografia, adiciona uma ligação para incluir um modelo da predefinição "Referência a livro"
	if (0 == wgNamespaceNumber && 'edit' == wgAction) // && wgPageName.match(/Referências|Bibliografia/)
		addPortletLink('p-cactions',
			'javascript:insertTags("* {{Referência a livro|NomeAutor=",' +
						'" |SobrenomeAutor= |Título= |Subtítulo= |Edição= |Local de publicação= |Editora= |Ano= |Páginas= |Volumes= |Volume= |ID= |URL= }}",' +
						'"")',
			'+ Referência',
			'ca-ref',
			'Adicionar referência a livro',
			'+')
 
	//Adiciona uma ligação para limpar a caixa de areia
	//TODO: Usar edição via API para que o link limpe automaticamente a página
	if ("Wikilivros:Caixa_de_areia" == wgPageName)
		addPortletLink('p-views', 'http://pt.wikibooks.org/w/index.php?title=Wikilivros:Caixa_de_areia&action=edit&oldid=116378', 'Limpar', 'ca-limpar', 'Limpar a caixa de areia')
 
 
	//Ao exibir os afluentes de uma página, adiciona duas ligações extras para cada item: 'editar' e 'hist'
	if (wgPageName == "Especial:Páginas_afluentes"){
		var lista = document.getElementById('mw-whatlinkshere-list');
		if (lista){
			Linhas = lista.getElementsByTagName('li');
			for (var i=0; i<Linhas.length; i++){
				var linha = Linhas[i];
				addLink(linha, '← editar', linha.getElementsByTagName('a')[0].href.replace('/wiki/','/w/index.php?title=') + '&\action=edit');
				addLink(linha, '← hist', linha.getElementsByTagName('a')[0].href.replace('/wiki/','/w/index.php?title=') + '&\action=history');
			}
		}
	}
 
	//Adiciona uma ligação para as contribuições globais de um usuário
	if (wgCanonicalNamespace == "User" || wgCanonicalNamespace == "User_talk"){
		var nome = wgTitle.split('/')[0];
		var primeiro = document.getElementById('p-tb').getElementsByTagName('li')[0];
		addPortletLink('p-tb', 'http://toolserver.org/~luxo/contributions/contributions.php?user=' + nome, 'Contribuições globais', 't-global', 'Ver as contribuições globais de ' + nome, 'g', primeiro);
	}
 
 
	//Adiciona uma aba para comparar a edição versão de uma página com a última edição
	if (wgNamespaceNumber >= 0 && !document.getElementById('toolbar')) {
		var pLink = document.getElementById('t-permalink')
		if (pLink)
			difLink = pLink.firstChild.href.replace(/&oldid=/,'&diff=prev&oldid=');
		else
			difLink = wgServer + wgScript + '?title=' + wgPageName + '&diff=0';
		addPortletLink('p-cactions', difLink, 'dif', 'ca-last', 'Mostrar as diferenças entre a penúltima e a última edição desta página');
	}
 
	//Adiciona uma ligação na barra lateral para exibir as estatísticas sobre a visualização da página exibida
	var primeiro = document.getElementById('p-tb').getElementsByTagName('li')[0];
	var link = 'http://stats.grok.se/pt.b/';
	var d=new Date();
	var mes = d.getMonth()+1;
	mes = mes<10? "0".concat(mes): mes;
	var ano = d.getFullYear();
	link = link.concat(ano).concat(mes) + '/' + wgPageName;
	addPortletLink('p-tb', link, 'Estatísticas de visualizações', 't-stat', 'Ver estatísticas sobre a visualização desta página', 's', primeiro);
 
 
	//Adiciona ligações editar, links e hist à tela exibida depois de mover uma página
	if ("Movepage" == wgCanonicalSpecialPageName) {
		título = document.getElementById('firstHeading').innerHTML;
		if (título && "Página movida com sucesso" == título){
 
			cont  = document.getElementById('bodyContent');
 
			/** Obsoleto: é só usar a [[MediaWiki:Movepage-moved]]
			aviso = cont.getElementsByTagName('b')[0];
			links = aviso.getElementsByTagName('a');
			spans = aviso.getElementsByTagName('span');
			for (var i=0; i<links.length; i++){
				var link = links[i];
				var span = spans[i];
				addLink(span, '← editar', link.href.replace('&redirect=no','&action=edit'));
				addLink(span, '← links', link.href.replace('&redirect=no','').replace('?title=','?title=Especial:Páginas_afluentes/'));
				addLink(span, '← hist', link.href.replace('&redirect=no','&action=history'));
			} **/
 
			//Ficará obsoleto quando puder usar [[MediaWiki:Movepage-page-moved‎‎]] com $3 e $4 (ver translatewiki);
			lista = cont.getElementsByTagName('ul')[1];
			lista = lista.getElementsByTagName('li');
			for (var i=0; i<lista.length; i++){
				var mov = lista[i].getElementsByTagName('a');
				var span0 = document.createElement( 'span' );
				var link = mov[0].href;
				span0.appendChild( mov[0].cloneNode(true) );
				addLink(span0, '← editar', link.replace('&redirect=no','&action=edit'));
				addLink(span0, '← links', link.replace('&redirect=no','').replace('?title=','?title=Especial:Páginas_afluentes/'));
				lista[i].insertBefore(span0,mov[0]);
				lista[i].removeChild(mov[4]); //havia um link na posição 0, foram adicionado mais 4, então o antigo está na posição 4
 
				var span1 = document.createElement( 'span' );
				link = mov[4].href;
				span1.appendChild( mov[4].cloneNode(true) );
 
				addLink(span1, '← editar', link.replace('/wiki/', 'w/index.php?title=') + '&action=edit');
				addLink(span1, '← links', link.replace('/wiki/', '/wiki/Especial:Páginas_afluentes/'));
				addLink(span1, '← hist', link.replace('/wiki/', 'w/index.php?title=') + '&action=history');
				lista[i].insertBefore(span1,mov[4]);
				lista[i].removeChild(mov[8]); //havia links de 0 a 4, foram adicionado mais 4, então o antigo está na posição 8
 
			}
		}
	}
 
 
	//Subpáginas
	var NSWithoutSubpages = new Array(-1, 6);
	if (document.getElementById('p-tb') && NSWithoutSubpages.indexOf(wgNamespaceNumber) == -1){
		var link = '/wiki/Special:PrefixIndex/' + wgPageName + '/';
		addPortletLink('p-tb', link, 'Subpáginas', 't-subpages', 'Subpáginas desta página');
	}
 
 
	//Remove 'title=...' das ligações permanentes
	var pLink = document.getElementById('t-permalink')
	if (pLink) pLink.firstChild.href = pLink.firstChild.href.replace(/title=[^&]*&/,'')
 
 
	// Ligações automáticas para o índice dos livros
	if (0 == wgNamespaceNumber && wgPageName.match(/\//) ){
		var l = document.getElementById('contentSub').getElementsByTagName('a')[0];
		if ( l ) {
			var s = l.parentNode;
			var l2 = document.createElement('a');
			l2.href = l.href.replace(/\b\/wiki\//,'/wiki/Especial:Busca/') + '/Índice';
			l2.title = 'Índice';
			l2.appendChild(document.createTextNode('Índice'));
			s.insertBefore(l2, l);
			s.insertBefore(document.createTextNode(' | '), l);
		}
	}
 
	//Converte a sintaxe [[xx:yy|zz]] para ligações *de verdade* nas páginas de scripts e folhas de estilo
	if (wgPageName.match(/(\.js|\.css)$/)) {
		var pre = document.getElementById('bodyContent').getElementsByTagName('pre')[0]
		if (pre) {
			function criaLinks(t){
				t = t.replace(/\[\[\s*([^\|\]]+?)\s*\]\]/ig, '[[<a href="/wiki/$1">$1</a>]]')
				t = t.replace(/\[\[\s*([^\|\]]+?)\s*\|\s*([^\]]+?)\s*\]\]/ig, '[[<a href="/wiki/$1">$2</a>]]')
				return t
			}
			var c = getElementsByClassName(pre, 'span', 'coMULTI')
			for (i=0; i< c.length; i++)
				c[i].innerHTML = criaLinks(c[i].innerHTML)
 
			c = getElementsByClassName(pre, 'span', 'co1')
			for (i=0; i< c.length; i++)
				c[i].innerHTML = criaLinks(c[i].innerHTML)
		}
	}
})