MediaWiki:Gadget-fastbuttons.js: diferenças entre revisões
Conteúdo apagado Conteúdo adicionado
Fazendo alteração, segundo e-mail recebido de Helder.wiki |
|||
Linha 8: | Linha 8: | ||
window.fb = { |
window.fb = { |
||
//Replace this string by 5~ before saving: |
//Replace this string by 5~ before saving: |
||
version: ' |
version: '17h08min de 6 de agosto de 2011 (UTC)', |
||
ns: mw.config.get('wgNamespaceNumber'), |
ns: mw.config.get('wgNamespaceNumber'), |
||
title: mw.config.get('wgTitle'), |
title: mw.config.get('wgTitle'), |
||
Linha 31: | Linha 31: | ||
* @param {string} text Text for link |
* @param {string} text Text for link |
||
* @param {string} title Title for link |
* @param {string} title Title for link |
||
* @param {string=} |
* @param {string=} promptMsg Text for prompt message (optional) |
||
* @return {string} The HTML string of the link |
* @return {string} The HTML string of the link |
||
*/ |
*/ |
||
fb.link = function (func, text, title, |
fb.link = function (func, text, title, promptMsg) { |
||
if (func.indexOf( 'ER' ) === 0) { |
if (func.indexOf( 'ER' ) === 0) { |
||
func = 'var obs=prompt(\'Se necessário, coloque uma observação.\');' |
func = 'var obs=prompt(\'Se necessário, coloque uma observação.\');' |
||
+ 'fb.run(\'' + func + '\',obs)'; |
+ 'fb.run(\'' + func + '\',obs)'; |
||
} else if ( |
} else if (promptMsg) { |
||
func = 'var obs=prompt(\'' + |
func = 'var obs=prompt(\'' + promptMsg + '\');fb.run(\'' + func + '\',obs)'; |
||
} else { |
} else { |
||
func = 'fb.run(\'' + func + '\')'; |
func = 'fb.run(\'' + func + '\')'; |
||
Linha 206: | Linha 206: | ||
fb.link("subst:cópia", "cópia", |
fb.link("subst:cópia", "cópia", |
||
"Aviso sobre artigo copiado de fonte externa/VDA", |
"Aviso sobre artigo copiado de fonte externa/VDA", |
||
"Preencha usando \\ |
"Preencha usando \\'|2=\\' como separador: página da Wikipédia" + |
||
"|2=url da página copiada"), |
"|2=url da página copiada"), |
||
fb.link("subst:linguagem incorreta", "linguagem", |
fb.link("subst:linguagem incorreta", "linguagem", |
Revisão das 17h08min de 6 de agosto de 2011
/** FastButtons
* @author: [[es:User:Racso]] (versão original do script, na Wikipédia em Espanhol)
* @author: [[en:User:Macy]] (versão adaptada para a Wikipedia inglesa)
* @author: Outros editores que aparecem no histórico
* @source: [[en:User:Macy/FastButtons.js]] (https://secure.wikimedia.org/wikipedia/en/w/index.php?oldid=230473471)
* @source: [[es:Special:PrefixIndex/User:Racso/FB]]
*/
window.fb = {
//Replace this string by 5~ before saving:
version: '17h08min de 6 de agosto de 2011 (UTC)',
ns: mw.config.get('wgNamespaceNumber'),
title: mw.config.get('wgTitle'),
catScanUrl: 'http://toolserver.org/~daniel/WikiSense/CategoryIntersect.php' +
$.param( {
'wikilang': 'pt',
'wikifam': '.wikipedia.org',
'userlang': 'pt',
'basecat': mw.config.get('wgTitle'),
'basedeep': '1',
'go': 'Examinar',
'format': 'html',
'mode': ''
} ),
submenu: {},
$menu: $( '<div/>' ),
$submenu: $( '<div/>' )
};
/* Cria os links que ativam a função fb.run()
* @param {string} func
* @param {string} text Text for link
* @param {string} title Title for link
* @param {string=} promptMsg Text for prompt message (optional)
* @return {string} The HTML string of the link
*/
fb.link = function (func, text, title, promptMsg) {
if (func.indexOf( 'ER' ) === 0) {
func = 'var obs=prompt(\'Se necessário, coloque uma observação.\');'
+ 'fb.run(\'' + func + '\',obs)';
} else if (promptMsg) {
func = 'var obs=prompt(\'' + promptMsg + '\');fb.run(\'' + func + '\',obs)';
} else {
func = 'fb.run(\'' + func + '\')';
}
return '<a class="fb-button fb-action-button" title="'
+ title + '" onClick="' + func + '">' + text + '</a>';
};
fb.submenu = {
/*** Submenu [ER] ***/
ER: 'Regra: <span class="fb-button fb-disabled-button">1</span>' + [
fb.link("ER|5", "5", "Aparecimento recorrente (se o conteúdo for igual" +
" ao eliminado por votação)"),
(($.inArray(fb.ns, [0, 102]) !== -1) ?
fb.link('ER|6', '6', 'Título é spam') :
'<span class="fb-button fb-disabled-button">6</span>'),
fb.link("ER|7", "7", "Próprio criador reconhece que se enganou"),
(($.inArray('sysop', mw.config.get('wgUserGroups')) > -1) ?
fb.link("ER|8", "8", "Eliminações temporárias sem perda de histórico" +
" para resolver problemas técnicos") :
'<span class="fb-button fb-disabled-button">8</span>'),
fb.link("ER|9", "9", "Eliminar redirect, página sem histórico relevante"
+ " (mover página redirecionada para cá)"),
((fb.ns === 0) ?
fb.link("ER|10", "10", "Namespaces que não existem (WikipÉdia, AjUda)") :
'<span class="fb-button fb-disabled-button">10</span>' ),
fb.link("ER|11", "11", "Má configuração do teclado (Página," +
" Usuário:Sicrano)"),
(fb.ns == 6) ?
fb.link("ER|12", "12", "Imagens, somente por quem a carregou") :
'<span class="fb-button fb-disabled-button">12</span>',
($.inArray(fb.ns, [0, 102]) !== -1) ?
fb.link("ER|13", "13", "Páginas sem histórico relevante que são" +
" violações flagrantes de direitos autorais de outras páginas" +
" na internet.") :
'<span class="fb-button fb-disabled-button">13</span>',
(fb.ns == 6) ?
fb.link("ER|14", "14", "Ficheiros (arquivos) duplicados") :
'<span class="fb-button fb-disabled-button">14</span>',
fb.link("ER|17", "17", "Salto de domínio"),
(fb.ns == 1) ?
fb.link("ER|18", "18", "Discussão cujos artigos não existem") :
'<span class="fb-button fb-disabled-button">18</span>',
(fb.ns == 6) ?
fb.link("ER|19", "19", "Ficheiros (domínio Ficheiro:) que não são som," +
" imagem ou vídeo") :
'<span class="fb-button fb-disabled-button">19</span>',
fb.link("ER|20", "20", "Impróprio"),
(mw.config.get('wgPageName').indexOf("Wikipédia:Páginas_para_eliminar/") === 0) ?
fb.link("ER|21", "21", "Página de eliminação de um artigo antes de" +
" passados 6 meses da última votação") :
'<span class="fb-button fb-disabled-button">21</span>',
($.inArray(fb.ns, [0, 102]) !== -1) ?
fb.link("ER|A1", "A1", "Páginas com o título malformatado, absurdo," +
" com palavras que não o são, com erros devidos à má configuração" +
" do teclado, com codificação incorreta do sistema ou que expressem" +
" domínios que não existem.") :
'<span class="fb-button fb-disabled-button">A1</span>',
(fb.ns == 14) ?
fb.link("ER|C1", "C1", "Categorias vazias, desnecessárias ou substituídas") :
'<span class="fb-button fb-disabled-button">C1</span>',
(fb.ns % 2 == 1) ?
fb.link("ER|D1", "D1", "Discussões de páginas inexistentes") :
'<span class="fb-button fb-disabled-button">D1</span>',
(fb.ns % 2 == 1) ?
fb.link("ER|D2", "D2", "Discussões de páginas para eliminação ou com" +
" histórico irrelevante") :
'<span class="fb-button fb-disabled-button">D2</span>',
($.inArray(fb.ns, [2, 3]) !== -1) ?
fb.link("ER|U1", "U1", "Uso impróprio da página de usuário") :
'<span class="fb-button fb-disabled-button">U1</span>',
(fb.ns == 2) ?
fb.link("ER|U2", "U2", "PU criada por outro usuário") :
'<span class="fb-button fb-disabled-button">U2</span>',
(fb.ns == 10) ?
fb.link("ER|P1", "P1", "Predefinições vazias, desnecessárias ou" +
" substituídas") :
'<span class="fb-button fb-disabled-button">P1</span>',
fb.link("ER|R1", "R1", "Redirecionamento indevido, desnecessário, sem" +
" afluentes, para páginas inexistente ou eliminadas"),
(fb.ns % 2 == 1) ?
fb.link("ER|R2", "R2", "Redirecionamento de página de discussão") :
'<span class="fb-button fb-disabled-button">R2</span>'
].join(' '),
/*** Submenu [ESR] ***/
ESR: fb.link("subst:ESR-banda|1=~~" + "~~", "banda", "Artigo sobre banda sem fontes e sem notoriedade")
+ "|" + fb.link("subst:ESR-bio|1=~~" + "~~", "biografia", "Biografia sem fontes e sem notoriedade")
+ "|" + fb.link("subst:ESR-empresa|1=~~" + "~~", "empresa", "Empresa sem fontes e sem notoriedade")
+ "| outra: <input type=\"text\" id=\"fb-esr-input\" onKeyPress=\"fb.ok(event, 'ESR')\" size=55/>"
+ "<input type=\"button\" onMouseDown='fb.ok(\"ok\", \"ESR\")' value=\"OK\"/>",
/*** Submenu [esboço] ***/
esb: fb.link("mínimo", "mínimo", "Artigo com apenas uma frase") +
" " + fb.link("esboço", "esboço", "Artigo ainda pouco desenvolvido") +
" esboço-" +
"<input id=\"fb-esb-input\" onkeyup='fb.callAPI(\"esb\")'" +
" onKeyPress=\"fb.ok(event, 'esb')\" size=14/>" +
"<input type=\"button\" onMouseDown='fb.ok(\"ok\", \"esb\")' value=\"OK\"/>",
/*** Submenu [manuteção] ***/
man: [
fb.link("subst:wkf", "wikificar", "Não está formatado de acordo com o livro" +
" de estilo"),
fb.link("subst:s-fontes", "sem fontes", "Página não cita nenhuma fonte ou" +
" referência"),
fb.link("sem cat", "sem cat", "Página não está em nenhuma categoria"),
fb.link("subst:rec", "reciclagem", "Página precisa ser reciclada de acordo" +
" com o livro de estilo"),
fb.link("parcial", "parcial", "Artigo possui passagens que não respeitam o" +
" princípio da imparcialidade"),
fb.link("subst:ctx", "contexto", "Página carece de contexto"),
fb.link("controverso|artigo", "controverso", "controverso devido às disputas" +
" sobre o seu conteúdo"),
fb.link("subst:f-referências", "formatar referências", "Artigo contém" +
" referências que necessitam de formatação"),
fb.link("subst:m-notas", "mais notas", "Página cita fontes fiáveis, mas não" +
" cobre todo o texto"),
fb.link("subst:s-notas", "sem notas", "Existem fontes no final da página," +
" mas não são citadas no corpo do artigo"),
fb.link("subst:s-fontes-bpv", "bpv sem fontes", "Biografia de pessoa viva" +
" que não cita nenhuma fonte"),
fb.link("subst:fpr", "fonte primária", "Artigo necessita de fontes" +
" secundárias fiáveis publicadas por terceiros")
].join(' '),
/*** Submenu [busca] ***/
search: [
'<span class="plainlinks"><a href="http://www.google.com/search?&as_eq=wikipedia&as_epq="',
'" class="external text">Google</a> — <a href="http://news.google.com/archivesearch?&as_src=-newswire+-wire+-presswire+-PR+-press+-release&as_epq=',
'" class="external text">notícias</a>, <a href="http://books.google.com/books?&as_brr=0&as_epq=',
'" class="external text">livros</a>, <a href="http://scholar.google.com/scholar?as_epq=',
'" class="external text">acadêmico</a> — <a href="http://www.scirus.com/srsapp/search?q=',
'&t=all&sort=0&g=s" class="external text">Scirus</a></span>'
].join( encodeURIComponent( ( fb.title.indexOf( ' ' ) > -1 ) ? '"' + fb.title + '"': fb.title ) ),
/*** Submenu [aviso] ***/
warn: [fb.link("subst:bem-vindo IP", "BV-IP",
"Boas-vindas para usuário(a) não registrado(a)"),
fb.link("subst:bem-vindo", "BV", "Bem-vindo(a) à Wikipédia"),
fb.link("subst:bem-vinda", "BVª", "Bem-vinda à Wikipédia"),
fb.link("subst:bv-av", "av-BV-IP",
"Aviso sobre erro em artigo e boas-vindas para usuário(a) não registrado(a)",
"Aviso sobre qual artigo?"),
fb.link("subst:bv-av-registrado", "av-BV",
"Aviso sobre erro em artigo e boas-vindas para usuário(a) registrado",
"Aviso sobre qual artigo?"),
fb.link("subst:aviso-ER", "av-ER", "Aviso sobre eliminação rápida",
"Qual página foi proposta para eliminação?"),
fb.link("subst:av-bv-ER", "av-BV-ER",
"Aviso sobre eliminação rápida + boas-vindas",
"Qual página foi proposta para eliminação?"),
fb.link("subst:aviso-ESR", "av-ESR", "Aviso sobre eliminação semirrápida",
"Qual página foi proposta para eliminação?"),
fb.link("subst:aviso-PE", "av-PE", "Aviso sobre eliminação por votação",
"Qual página foi proposta para eliminação?"),
fb.link("subst:aviso-PE-criador", "av-PE-criador", "Aviso ao criador sobre eliminação por votação",
"Qual página foi proposta para eliminação?"),
fb.link("subst:bv-propaganda", "prop-BV", "Caro editor, por favor não faça" +
" propaganda, [...] Apesar disso, bem-vindo à Wikipédia"),
fb.link("subst:propaganda", "prop",
"Caro editor, por favor não faça propaganda...",
"Em que página foi feita propaganda?"),
fb.link("subst:aviso", "av", "Aviso sobre erro em artigo",
"Aviso sobre qual artigo?"),
fb.link("subst:aviso2", "av2", "Aviso sobre vandalismo",
"Qual página foi vandalizada?"),
fb.link("subst:BSRE", "BSRE", "Aviso de biografia sem relevo enciclopédico",
"Qual artigo?"),
fb.link("subst:cópia", "cópia",
"Aviso sobre artigo copiado de fonte externa/VDA",
"Preencha usando \\'|2=\\' como separador: página da Wikipédia" +
"|2=url da página copiada"),
fb.link("subst:linguagem incorreta", "linguagem",
"Não insulte nem use linguagem inadequada em artigos ou discussões"),
fb.link("subst:ortografia", "ortografia", "Não mude a versão da língua"),
fb.link("subst:mostrar previsão", "salvamento sucessivo",
"Não faça salvamentos sucessivos, utilize o botão\"Mostrar previsão\"",
"Em que artigo foram feitos salvamentos sucessivos?"),
fb.link("subst:Av-boas vindas", "aviso-BV", "Não dê boas-vindas a usuários" +
" que não contribuíram com pelo menos uma edição válida"),
fb.link("subst:Av-página de usuário", "av-PU", "Considere refazer a página de usuário(a)"),
fb.link("subst:Aviso/Página pessoal", "av-PU-outro",
"Não edite páginas de outros usuários",
"Qual página de outro(a) usuário(a) foi editada?"),
fb.link("subst:não remova", "não remova",
"Não remova marcações de eliminação das páginas",
"Qual página em que a marcação de eliminação foi removida?"),
fb.link("subst:autobiografia", "autobiografia", "Não crie autobiografias",
"Qual autobiografia foi criada?")
].join(' '),
/** Submenu [CatScan] **/
cat: 'Procurar nesta categoria: ' + [
'<a class="fb-button" href="' + fb.catScanUrl + 'ts&templates=Sem-fontes">sem fontes</a>',
'<a class="fb-button" href="' + fb.catScanUrl + 'ts&templates=Revis%C3%A3o&go=">revisão</a>',
'<a class="fb-button" href="' + fb.catScanUrl + 'ts&templates=Wikifica%C3%A7%C3%A3o&go=">wikificação</a>',
'<a class="fb-button" href="' + fb.catScanUrl + 'ss&size=1000&stubop=or&links=4&go=">menos de 1 000 bytes ou 4 links</a>',
'<a class="fb-button" href="' + fb.catScanUrl + 'ss&size=500&stubop=or&links=2&go=">menos de 500 bytes ou 2 links</a>'
].join(' ')
};
// TODO: Consider using jQuery: $('#target').keypress()
fb.ok = function( evt, option ) {
if (window.event && window.event.keyCode == 13) {
evt = 'ok';
} else if (evt && evt.which == 13) {
evt = 'ok';
}
if (evt == 'ok') {
if ( option == 'esb' ) {
fb.run("esboço-" + document.getElementById( 'fb-esb-input' ).value);
} else if ( option == 'ESR' ) {
fb.run("subst:ESR", document.getElementById( 'fb-esr-input' ).value + " ~~" + "~~");
}
}
};
/* Função de edição
* @param: {string} code A template name, possibly preceded by "subst:",
* and optionally followed by "|" and some parameter(s)
* @param: {(string|null)=} extraText Extra text for templates and redirects (optional)
* @return: {boolean} Returns false if the user canceled or the page already has a template
*/
fb.run = function (code, extraText) {
var textBox = document.getElementById("wpTextbox1"),
summaries = {
'subst:VDA': 'Página marcada como [[WP:VDA|VDA]]',
'subst:apagar': 'Página proposta para [[Wikipedia:Eliminação' +
' por votação|eliminação por votação]]',
'subst:s-fontes': 'Página marcada como sem fontes',
'subst:wkf': 'Página marcada para [[WP:WKF|wikificação]]',
'subst:rec': 'Página marcada para [[WP:RECI|reciclagem]]',
'parcial': 'Página marcada como parcial',
'subst:ctx': 'Página marcada como sem contexto',
'controverso|artigo': 'Marcado como controverso',
'subst:f-referências': 'Marcado que existem referências sem formatação',
'subst:m-notas': 'Marcado que carece de mais fontes',
'subst:s-notas': 'Página marcada como sem notas',
'subst:s-fontes-bpv': 'Marcado como [[WP:BPV|biografia de pessoa' +
' viva]] sem fontes',
'subst:fpr': 'Página marcada como sem fontes secundárias fiáveis',
'subst:ESR': 'Página proposta para [[WP:ESR|eliminação semirrápida]]'
};
if (extraText === null) {
// Do nothing if the user canceled the prompt box
return false;
}
if (mw.config.get('wgAction') == 'view') {
var url = mw.util.wikiGetlink( mw.config.get('wgPageName') )
+ '?action=edit&fastb=' + encodeURIComponent(code);
if (extraText) {
location.href = url + '&fbtxt=' + encodeURIComponent(extraText);
} else {
location.href = url;
}
} else if (mw.config.get('wgAction') == "edit") {
var value = textBox.value;
var summary = " (usando [[Wikipédia:FB|FastButtons]])";
if ( value.match(/\{\{(?:ER|ESR2|Usuário\:Salebot\/Impróprio)\|/i) ) {
alert("Já existe uma predefinição de eliminação nesta página.");
return false;
}
if (code.indexOf("ER") === 0) {
if (extraText) {
extraText = "|3=" + extraText + "}}\n\n";
} else {
extraText = "}}\n\n";
}
extraText = "{" + "{" + code + "|2=~~" + "~~" + extraText;
textBox.value = extraText + value;
if (this.salve) {
document.editform.wpSummary.value = "Página proposta para" +
" [[WP:ER|eliminação rápida]] (regra " +
code.substring(3) + ")" + summary;
}
} else if (code == "redirect") {
if (mw.config.get('wgNamespaceNumber') == 14) {
if (extraText) {
textBox.value = "{" + "{redirecionamento de categoria|" +
extraText + "}}";
}
if (this.salve) {
document.editform.wpSummary.value = "Redirecionando para" +
" a [[categoria:" + extraText + "]]" + summary;
}
} else {
if (extraText) {
textBox.value = "#Redirecionamento [[" + extraText + "]]";
}
}
} else {
if (extraText) {
if (code.indexOf("|") > -1) {
extraText = "|1=" + extraText + "}}";
} else {
extraText = "|1=" + extraText + "}}";
}
} else {
extraText = "}}";
}
extraText = "{{" + code + extraText;
if (mw.config.get('wgNamespaceNumber') == 3) {
value += "\n\n" + extraText + " ~~" + "~~";
} else if (code == "mínimo" || code.indexOf("esboço") === 0) {
if (value.match(/\n\n\[\[/)) {
value = value.substring(0, value.search(/\n\n\[\[/)) + "\n\n" +
extraText + value.substring(value.search(/\n\n\[\[/));
} else {
value += "\n\n" + extraText;
}
this.salve = (code == "mínimo") ?
"Página marcada como [[WP:M|mínimo]]" :
"Página marcada como [[WP:EBC|esboço]]";
} else if ($.inArray( code, [ 'subst:VDA' , 'subst:matrad' ]) > -1) {
value = extraText;
} else {
value = extraText + "\n\n" + value;
}
textBox.value = value;
if (this.salve) {
if (mw.config.get('wgNamespaceNumber') == 3) {
this.salve = 'Adicionando aviso';
} else {
if ( code.indexOf( 'subst:ESR' ) === 0 ) {
code = 'subst:ESR';
}
this.salve = summaries[ code ] || 'Adicionando marcação';
}
document.editform.wpSummary.value = this.salve + summary;
}
}
if (this.salve) {
document.editform.submit();
}
}
};
var esb,
esbText = "",
esbText2 = "";
/* Callback function for API calls
* @param {string} code An abreviation such as "esb", "afl", "PV",
*/
fb.callAPI = function ( code ) {
var user,
that = this,
apiParams = {
'esb': {
'list': 'allpages',
'aplimit': '1',
'apnamespace': '10'
},
'afl': {
'list': 'backlinks',
'bllimit': '1',
'blfilterredir': 'nonredirects',
'blnamespace': '0',
'bltitle': mw.config.get('wgPageName')
},
'PV': {
'list': 'watchlist',
'wlprop': 'user|comment|title|sizes',
'wlexcludeuser': mw.config.get('wgUserName')
},
'PN': {
'list': 'recentchanges',
'rctype': 'new',
'rcnamespace': '0',
'rcshow': '!patrolled',
'rcprop': 'user|comment|title|sizes|ids'
},
'MR': {
'list': 'recentchanges',
'rctype': 'edit',
'rcnamespace': '0',
'rcshow': 'anon',
'rcprop': 'user|comment|title|sizes'
},
'usu': {
'list': 'allusers',
'aulimit': '1',
'auprop': 'editcount|registration',
'aufrom': mw.config.get('wgTitle').split('/')[0]
}
};
if ( 'esb' == code ) {
esb = document.getElementById( 'fb-esb-input' );
if ( $.inArray( esb.value, [ esbText, esbText2 ] ) !== -1 ) {
return;
}
esbText = esb.value;
if (esbText == esb.value.substr(0, (esb.value.length - 1))) {
return;
}
apiParams.esb.apprefix = 'Esboço-' + esb.value;
}
apiParams[ code ].format = 'json';
apiParams[ code ].action = 'query';
$.getJSON(
mw.util.wikiScript( 'api' ),
apiParams[ code ], function( data ) {
that.processAPI( code, data );
}
);
};
/* Callback function for API calls
* @param {string} code An abreviation such as "esb", "afl", "PV",
* @param {Object} data JSON content returned by API
*/
fb.processAPI = function (code, data) {
var i, title, length, comment, user,
query = data && data.query,
pages = [],
charnum = 0,
that = this;
/** Processamento da resposta do API **/
switch ( code ) {
case 'afl':
var backlinks,
info = '(';
info += (document.getElementById('Refer.C3.AAncias')
|| document.getElementById('Notas_e_refer.C3.AAncias')) ?
'ref' :
'<span class="fb-missing" title="Esta página ainda não possui referências">ref</span>';
var catLine = document.getElementById( 'mw-normal-catlinks' );
// FIXME: Do not do screen scraping to get this info!
if (catLine && catLine.innerHTML.indexOf( '><a href="' + mw.config.get('wgArticlePath').replace('$1', '')) > -1) {
info += ' · cat';
} else {
info += ' · <span class="fb-missing" title="Esta página ainda não foi categorizada">cat</span>';
}
info += (document.getElementById( 'p-lang' )) ?
' · iw' :
' · <span class="fb-missing" title="Esta página ainda não' +
' possui links para outros idiomas">iw</span>';
// Afluentes
backlinks = query && query.backlinks;
if ( !backlinks ) {
mw.log( 'The backlinks query returned no data.' );
} else if ( backlinks.length ) {
info += ' · <a href="' +
mw.util.wikiGetlink( 'Especial:Páginas afluentes/' + mw.config.get('wgPageName') ) +
'" title="afluentes">afl</a>)';
} else {
info += ' · <span class="fb-missing" title="Esta página ainda não possui afluentes">afl</span>)';
}
this.$submenu.html( info );
if ( document.getElementById( 'ca-talk' ).className != 'new' ) {
$.getJSON(
mw.util.wikiScript( 'api' ), {
'format': 'json',
'action': 'query',
'prop': 'categories',
'indexpageids': '1',
'titles': mw.config.get('wgFormattedNamespaces')[ mw.config.get('wgNamespaceNumber') + 1 ] +
':' + mw.config.get('wgTitle')
}, function( data ) {
that.processAPI( 'qualidade', data );
}
);
} else {
var hiddenCats = document.getElementById("mw-hidden-catlinks");
if (hiddenCats) {
hiddenCats = hiddenCats.innerHTML;
if (hiddenCats.indexOf("!Artigos de qualidade") > -1) {
hiddenCats = hiddenCats.substr(hiddenCats.indexOf("!Artigos de qualidade") + 22, 1);
if (hiddenCats == "d") {
hiddenCats = "?";
}
this.$submenu.html(
this.$submenu.html() + "<span title='Qualidade do artigo'> Q-<b>" +
hiddenCats + "</b></span>"
);
}
}
}
break;
case 'qualidade':
var cats, cat, pageids, quality;
if ( query ) {
cats = query.pages;
pageids = query.pageids;
if ( cats && pageids && pageids.length ) {
cats = cats[ pageids[0] ].categories;
if ( !cats ){
mw.log( 'The categories query returned incomplete data.' );
return false;
}
} else {
mw.log( 'The categories query returned incomplete data.' );
return false;
}
} else {
mw.log( 'The categories query returned no data.' );
return false;
}
// Qualidade do artigo
for (i = 0; i < cats.length; i++) {
cat = cats[i].title;
if ( cat && cat.indexOf( '!Artigos de qualidade' ) > -1 ){
// Categoria:!Artigos de qualidade 1 sobre ...
// ^
quality = cat.substr( 32, 1 );
if (quality == 'd') {
quality = '?';
}
this.$submenu.html(
this.$submenu.html() +
'<span title="Qualidade do artigo"> Q-<b>' +
quality + '</b></span>'
);
break;
}
}
break;
case 'esb':
var template,
esb = document.getElementById( 'fb-esb-input' );
if ( query ) {
template = query.allpages && query.allpages[0] && query.allpages[0].title;
if ( !template ) {
mw.log( 'The categories query returned incomplete data.' );
return false;
}
template = template.replace( /^Predefinição:Esboço-/gi, '' );
} else {
mw.log( 'The categories query returned no data.' );
return false;
}
if ((esb.setSelectionRange
|| esb.createTextRange
|| typeof (esb.selectionStart) != 'undefined'
&& typeof (esb.selectionEnd) != 'undefined'
)
&& esb.value == template.substr(0, esb.value.length)
) {
// Exibe sugestões. Baseado no script do HotCat
var start = esb.value.length;
esb.value = template;
esbText2 = template;
if (esb.setSelectionRange) {
esb.setSelectionRange(start, template.length);
} else if (esb.createTextRange) {
var sel = esb.createTextRange();
sel.move( 'character', start );
sel.moveEnd( 'character', template.length - start );
sel.select();
} else {
esb.selectionStart = start;
esb.selectionEnd = template.length;
}
}
break;
case 'PN':
case 'MR': // Mudanças recentes
case 'PV': // Páginas vigiadas
var item, j,
listName = {
'PV': 'watchlist',
'MR': 'recentchanges',
'PN': 'recentchanges'
},
summaryChanges = {
'PV' : [
[ '[[Ajuda:SEA|←]]', '' ],
[ '/*', '→' ],
[ '*/', ':' ]
],
'MR' : [
[ '/*', '→' ],
[ '*/', ':' ]
],
'PN' : [
[ '[[Ajuda:SEA|?]] ', '' ]
]
},
urlParam = {
'PV': 'diff=last',
'MR': 'diff=last',
'PN': 'redirect=no&rcid='
},
list = query[ listName[ code ] ],
max = ( list.length < 10 )? list.length : 10;
for ( i = 0; i < max; i++ ) {
item = list[ i ];
if ( !item ){
continue;
}
title = item.title;
charnum += title.length;
if (charnum > 180) {
break;
}
length = item.newlen - item.oldlen;
if (length > 0) {
length = '+' + length;
}
comment = item.comment || '';
for ( j=0; j < summaryChanges[ code ].length; j++ ){
comment = comment.replace(
summaryChanges[ code ][0],
summaryChanges[ code ][1]
);
}
if (comment) {
comment = '(' + comment + ')';
}
if ( code === 'PN' ){
urlParam[ code ] += item.rcid;
}
pages.push(
'<a href="' + mw.util.wikiGetlink( title ) + '?' +
urlParam[ code ] + '" title="(' + length + ') ' + item.user +
' ' + comment + '">' + title + '</a>'
);
}
this.$submenu.html( pages.join( ' ' ) );
break;
case 'usu':
// Informações do(a) usuário(a)
if ( !query ) {
mw.log( 'The categories query returned no data.' );
return false;
}
user = query.allusers && query.allusers[0];
if ( user ) {
// Ex.: YYYY-MM-DDThh:mm:ssZ
var regDate = user.registration;
regDate = regDate.substr(8, 2) + '/' + regDate.substr(5, 2) +
'/' + regDate.substr(0, 4);
var encUser = encodeURI( user.name );
this.$submenu.html( [
user.editcount + ' edições desde ' + regDate + '.',
'<a class="fb-button" href="' +
mw.util.wikiGetlink( 'Especial:Contribuições/' ) + encUser +
'" title="Abrir a lista de contribuições deste editor" >contribuições</a>',
'<a class="fb-button" href="' +
mw.util.wikiGetlink( 'Especial:Registo/' ) + encUser +
'" title="Abrir a lista de registros deste editor" >registros</a>',
'<a class="fb-button" href="' +
mw.util.wikiGetlink( 'Especial:Registo' ) + '?type=block&page=User%3A' + encUser +
'" title="Abrir a lista de registros de bloqueio deste editor">registros de bloqueio</a>',
'<span class="plainlinks"><a class="external text fb-button"' +
'title="Abrir a contagem de edições deste editor"' +
' href="http://toolserver.org/~river/cgi-bin/count_edits?user=' +
encUser + '&dbname=ptwiki_p">contador de edições</a></span>'
].join( ' ' )
);
} else {
return;
}
break;
}
};
/* Initialize the gadget */
fb.init = function () {
var inUserNS, $contentSub = $( '#contentSub' ),
param = mw.util.getParamValue('fastb');
fb.$menu.attr( 'id', 'fb-menu' );
fb.$submenu.attr( 'id', 'fb-submenu' );
if ($.inArray(mw.config.get('wgAction'), ['view', 'edit']) !== -1) {
fb.$submenu.html( '' );
/*** Menu Principal ***/
if (mw.config.get('wgNamespaceNumber') > -1) {
inUserNS = $.inArray(mw.config.get('wgNamespaceNumber'), [2, 3]) > -1
&& mw.config.get('wgTitle').indexOf(mw.config.get('wgUserName')) === 0;
if (inUserNS) {
fb.$menu.html( fb.link("ER|1", "ER1", "Marcar subpágina do próprio usuário para eliminação") );
} else {
fb.$menu.html( '<a class="fb-button fb-menu-button" title="Exibir regras' +
' para a eliminação rápida" onClick="fb.$submenu.html(fb.submenu.ER)">ER</a>' );
}
}
if ($.inArray(mw.config.get('wgNamespaceNumber'), [0, 102]) !== -1) {
fb.$menu.html(
fb.$menu.html() + [
'<a class="fb-button fb-menu-button" title="Exibir regras para a eliminação semi-rápida"' +
' onClick="fb.$submenu.html(fb.submenu.ESR)">ESR</a>',
fb.link( 'subst:apagar', 'PE',
'Marcar para eliminação por votação'),
'<a class="fb-button fb-action-button"' +
' title="Marcar como cópia ou violação de direito autoral"' +
' onClick="obs=prompt(\'Informe o url da página copiada\',' +
' \'http://\');fb.run(\'subst:VDA\',obs)">VDA</a>',
fb.link( 'subst:suspeito', 'susp',
'Marcar como suspeito de violação de direitos autorais'),
fb.link( 'subst:matrad', 'trad',
'Marcar esta tradução como sendo de baixa qualidade',
'De qual língua a página foi maltraduzida (ca, de, en, es,' +
' fr, it, ja, nl, no, pl, ru, sv, zh)?' ),
fb.link( 'redirect', '#R', 'Redirecionar para outro título',
'Redirecionar para qual página?'),
'<a class="fb-button fb-menu-button" title="Exibir predefinições para manutenção"' +
' onClick="fb.$submenu.html(fb.submenu.man)">manutenção</a>',
'<a class="fb-button fb-menu-button" title="Exibir predefinições para esboços"' +
' onClick="fb.$submenu.html(fb.submenu.esb)">esboço</a>',
'<a class="fb-button fb-menu-button" title="Exibir opções para a busca de fontes"' +
' onClick="fb.$submenu.html(fb.submenu.search)">busca</a>'
].join('')
);
if (mw.config.get('wgAction') === 'view') {
fb.callAPI('afl');
}
} else {
if ($.inArray(mw.config.get('wgNamespaceNumber'), [2, 10]) !== -1) {
fb.$menu.html(
fb.$menu.html() + fb.link("subst:apagar", "PE",
"Marcar para eliminação por votação")
);
}
if (mw.config.get('wgNamespaceNumber') % 2 === 0) {
fb.$menu.html(
fb.$menu.html() + fb.link("redirect", "#R", "Redirecionar para outro título",
"Redirecionar para qual página?")
);
}
if (mw.config.get('wgNamespaceNumber') === 14) {
fb.$menu.html(
fb.$menu.html() + '<a class="fb-button fb-menu-button"' +
' title="Exibir opções do CatScan para procurar páginas nesta categoria"' +
' onClick="fb.$submenu.html(fb.submenu.cat)">CatScan</a>'
);
}
}
if (mw.config.get('wgNamespaceNumber') === 3) {
fb.$menu.html(
fb.$menu.html() + '<a class="fb-button fb-menu-button"' +
' title="Exibir lista de predefinições para avisos"' +
' onClick="fb.$submenu.html(fb.submenu.warn)">aviso</a>'
);
}
if ($.inArray(mw.config.get('wgNamespaceNumber'), [2, 3]) !== -1) {
fb.$menu.html(
fb.$menu.html() + '<a class="fb-button fb-menu-button" title="Exibir informações sobre esta conta"' +
' onClick="fb.callAPI(\'usu\')">sobre a conta</a>'
);
}
}
fb.$menu.html(
fb.$menu.html() + [
'<a class="fb-button fb-menu-button"' +
' title="Exibir páginas vigiadas que foram alteradas recentemente" onClick="fb.callAPI(\'PV\')">PV</a>',
'<a class="fb-button fb-menu-button"' +
' title="Exibir páginas novas que ainda não foram patrulhadas"' +
' onClick="fb.callAPI(\'PN\')">PN</a>',
'<a class="fb-button fb-menu-button"' +
' title="Exibir mudanças recentes feitas por IPs em páginas do domínio principal"' +
' onClick="fb.callAPI(\'MR\')">MR</a>'
].join('')
);
$contentSub.append( fb.$menu ).append( fb.$submenu );
switch (mw.config.get('wgAction')) {
case 'edit':
fb.salve = (param !== null);
if (fb.salve) {
fb.run(param, mw.util.getParamValue('fbtxt') || '');
}
break;
case 'markpatrolled':
if (param !== null) {
location.href = mw.util.wikiGetlink( mw.config.get('wgPageName') ) +
'?action=edit&fastb=' + param;
}
break;
default:
// Não faz nada nas demais ações
}
mw.loader.using( 'jquery.tipsy', function() {
$('#fb-menu, #fb-submenu').find( 'a' ).tipsy();
} );
};
/* Executes the gadget when document is ready */
$( fb.init );