MediaWiki:Gadget-fastbuttons.js e Ajuda:Página de testes/1: diferenças entre as páginas

(Diferenças entre páginas)
Conteúdo apagado Conteúdo adicionado
m http://pt.wikipedia.org/w/index.php?diff=26433967&oldid=26433638
 
m Nova função patrolCurrentEdit para patrulhar edições ao clicar nos botões; Uso consistente de aspas simples; jQuery para manipular o DOM; Menos repetições de código; +Sugestões de correções futuras
 
Linha 8: Linha 8:
window.fb = {
window.fb = {
//Replace this string by 5~ before saving:
//Replace this string by 5~ before saving:
version: '21h04min de 13 de agosto de 2011 (UTC)',
version: '01h49min de 17 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'),
catScanUrl: 'http://toolserver.org/~daniel/WikiSense/CategoryIntersect.php' +
catScanUrl: 'http://toolserver.org/~daniel/WikiSense/CategoryIntersect.php' +
$.param( {
$.param( {
'wikilang': 'pt',
'wikilang': mw.config.get('wgContentLanguage'),
'wikifam': '.wikipedia.org',
'wikifam': '.wikipedia.org',
'userlang': 'pt',
'userlang': mw.config.get('wgUserLanguage'),
'basecat': mw.config.get('wgTitle'),
'basecat': mw.config.get('wgTitle'),
'basedeep': '1',
'basedeep': '1',
Linha 26: Linha 26:
$submenu: $( '<div/>' )
$submenu: $( '<div/>' )
};
};

// TODO: Mover estas variáveis para o escopo em que são realmente utilizadas
var esbText = '',
esbText2 = '';


/* Cria os links que ativam a função fb.run()
/* Cria os links que ativam a função fb.run()
Linha 33: Linha 37:
* @param {string=} promptMsg Text for prompt message (optional)
* @param {string=} promptMsg Text for prompt message (optional)
* @return {string} The HTML string of the link
* @return {string} The HTML string of the link
* FIXME: Usar onClick em vez de onKeyPress, para melhor compatiblidade ([[mw:RL/MGU#Event_binding]])
*/
*/
fb.link = function (func, text, title, promptMsg) {
fb.link = function (func, text, title, promptMsg) {
Linha 50: Linha 55:
/*** Submenu [ER] ***/
/*** Submenu [ER] ***/
ER: 'Regra: <span class="fb-button fb-disabled-button">1</span>' + [
ER: 'Regra: <span class="fb-button fb-disabled-button">1</span>' + [
fb.link("ER|5", "5", "Aparecimento recorrente (se o conteúdo for igual" +
fb.link('ER|5', '5', 'Aparecimento recorrente (se o conteúdo for igual' +
" ao eliminado por votação)"),
' ao eliminado por votação)'),
(($.inArray(fb.ns, [0, 102]) !== -1) ?
(($.inArray(fb.ns, [0, 102]) !== -1) ?
fb.link('ER|6', '6', 'Título é spam') :
fb.link('ER|6', '6', 'Título é spam') :
'<span class="fb-button fb-disabled-button">6</span>'),
'<span class="fb-button fb-disabled-button">6</span>'),
fb.link("ER|7", "7", "Próprio criador reconhece que se enganou"),
fb.link('ER|7', '7', 'Próprio criador reconhece que se enganou'),
(($.inArray('sysop', mw.config.get('wgUserGroups')) > -1) ?
(($.inArray('sysop', mw.config.get('wgUserGroups')) > -1) ?
fb.link("ER|8", "8", "Eliminações temporárias sem perda de histórico" +
fb.link('ER|8', '8', 'Eliminações temporárias sem perda de histórico' +
" para resolver problemas técnicos") :
' para resolver problemas técnicos') :
'<span class="fb-button fb-disabled-button">8</span>'),
'<span class="fb-button fb-disabled-button">8</span>'),
fb.link("ER|9", "9", "Eliminar redirect, página sem histórico relevante"
fb.link('ER|9', '9', 'Eliminar redirect, página sem histórico relevante'
+ " (mover página redirecionada para cá)"),
+ ' (mover página redirecionada para cá)'),
((fb.ns === 0) ?
((fb.ns === 0) ?
fb.link("ER|10", "10", "Namespaces que não existem (WikipÉdia, AjUda)") :
fb.link('ER|10', '10', 'Namespaces que não existem (WikipÉdia, AjUda)') :
'<span class="fb-button fb-disabled-button">10</span>' ),
'<span class="fb-button fb-disabled-button">10</span>' ),
fb.link("ER|11", "11", "Má configuração do teclado (Página," +
fb.link('ER|11', '11', 'Má configuração do teclado (Página,' +
" Usuário:Sicrano)"),
' Usuário:Sicrano)'),
(fb.ns == 6) ?
(fb.ns == 6) ?
fb.link("ER|12", "12", "Imagens, somente por quem a carregou") :
fb.link('ER|12', '12', 'Imagens, somente por quem a carregou') :
'<span class="fb-button fb-disabled-button">12</span>',
'<span class="fb-button fb-disabled-button">12</span>',
($.inArray(fb.ns, [0, 102]) !== -1) ?
($.inArray(fb.ns, [0, 102]) !== -1) ?
fb.link("ER|13", "13", "Páginas sem histórico relevante que são" +
fb.link('ER|13', '13', 'Páginas sem histórico relevante que são' +
" violações flagrantes de direitos autorais de outras páginas" +
' violações flagrantes de direitos autorais de outras páginas' +
" na internet.") :
' na internet.') :
'<span class="fb-button fb-disabled-button">13</span>',
'<span class="fb-button fb-disabled-button">13</span>',
(fb.ns == 6) ?
(fb.ns == 6) ?
fb.link("ER|14", "14", "Ficheiros (arquivos) duplicados") :
fb.link('ER|14', '14', 'Ficheiros (arquivos) duplicados') :
'<span class="fb-button fb-disabled-button">14</span>',
'<span class="fb-button fb-disabled-button">14</span>',
fb.link("ER|17", "17", "Salto de domínio"),
fb.link('ER|17', '17', 'Salto de domínio'),
(fb.ns == 1) ?
(fb.ns == 1) ?
fb.link("ER|18", "18", "Discussão cujos artigos não existem") :
fb.link('ER|18', '18', 'Discussão cujos artigos não existem') :
'<span class="fb-button fb-disabled-button">18</span>',
'<span class="fb-button fb-disabled-button">18</span>',
(fb.ns == 6) ?
(fb.ns == 6) ?
fb.link("ER|19", "19", "Ficheiros (domínio Ficheiro:) que não são som," +
fb.link('ER|19', '19', 'Ficheiros (domínio Ficheiro:) que não são som,' +
" imagem ou vídeo") :
' imagem ou vídeo') :
'<span class="fb-button fb-disabled-button">19</span>',
'<span class="fb-button fb-disabled-button">19</span>',
fb.link("ER|20", "20", "Impróprio"),
fb.link('ER|20', '20', 'Impróprio'),
(mw.config.get('wgPageName').indexOf("Wikipédia:Páginas_para_eliminar/") === 0) ?
(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" +
fb.link('ER|21', '21', 'Página de eliminação de um artigo antes de' +
" passados 6 meses da última votação") :
' passados 6 meses da última votação') :
'<span class="fb-button fb-disabled-button">21</span>',
'<span class="fb-button fb-disabled-button">21</span>',
($.inArray(fb.ns, [0, 102]) !== -1) ?
($.inArray(fb.ns, [0, 102]) !== -1) ?
fb.link("ER|A1", "A1", "Páginas com o título malformatado, absurdo," +
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" +
' 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" +
' do teclado, com codificação incorreta do sistema ou que expressem' +
" domínios que não existem.") :
' domínios que não existem.') :
'<span class="fb-button fb-disabled-button">A1</span>',
'<span class="fb-button fb-disabled-button">A1</span>',
(fb.ns == 14) ?
(fb.ns == 14) ?
fb.link("ER|C1", "C1", "Categorias vazias, desnecessárias ou substituídas") :
fb.link('ER|C1', 'C1', 'Categorias vazias, desnecessárias ou substituídas') :
'<span class="fb-button fb-disabled-button">C1</span>',
'<span class="fb-button fb-disabled-button">C1</span>',
(fb.ns % 2 == 1) ?
(fb.ns % 2 == 1) ?
fb.link("ER|D1", "D1", "Discussões de páginas inexistentes") :
fb.link('ER|D1', 'D1', 'Discussões de páginas inexistentes') :
'<span class="fb-button fb-disabled-button">D1</span>',
'<span class="fb-button fb-disabled-button">D1</span>',
(fb.ns % 2 == 1) ?
(fb.ns % 2 == 1) ?
fb.link("ER|D2", "D2", "Discussões de páginas para eliminação ou com" +
fb.link('ER|D2', 'D2', 'Discussões de páginas para eliminação ou com' +
" histórico irrelevante") :
' histórico irrelevante') :
'<span class="fb-button fb-disabled-button">D2</span>',
'<span class="fb-button fb-disabled-button">D2</span>',
($.inArray(fb.ns, [2, 3]) !== -1) ?
($.inArray(fb.ns, [2, 3]) !== -1) ?
fb.link("ER|U1", "U1", "Uso impróprio da página de usuário") :
fb.link('ER|U1', 'U1', 'Uso impróprio da página de usuário') :
'<span class="fb-button fb-disabled-button">U1</span>',
'<span class="fb-button fb-disabled-button">U1</span>',
(fb.ns == 2) ?
(fb.ns == 2) ?
fb.link("ER|U2", "U2", "PU criada por outro usuário") :
fb.link('ER|U2', 'U2', 'PU criada por outro usuário') :
'<span class="fb-button fb-disabled-button">U2</span>',
'<span class="fb-button fb-disabled-button">U2</span>',
(fb.ns == 10) ?
(fb.ns == 10) ?
fb.link("ER|P1", "P1", "Predefinições vazias, desnecessárias ou" +
fb.link('ER|P1', 'P1', 'Predefinições vazias, desnecessárias ou' +
" substituídas") :
' substituídas') :
'<span class="fb-button fb-disabled-button">P1</span>',
'<span class="fb-button fb-disabled-button">P1</span>',
fb.link("ER|R1", "R1", "Redirecionamento indevido, desnecessário, sem" +
fb.link('ER|R1', 'R1', 'Redirecionamento indevido, desnecessário, sem' +
" afluentes, para páginas inexistente ou eliminadas"),
' afluentes, para páginas inexistente ou eliminadas'),
(fb.ns % 2 == 1) ?
(fb.ns % 2 == 1) ?
fb.link("ER|R2", "R2", "Redirecionamento de página de discussão") :
fb.link('ER|R2', 'R2', 'Redirecionamento de página de discussão') :
'<span class="fb-button fb-disabled-button">R2</span>'
'<span class="fb-button fb-disabled-button">R2</span>'
].join(' '),
].join(' '),
/*** Submenu [ESR] ***/
/*** Submenu [ESR] ***/
// FIXME: Usar jQuery em vez de onKeyPress e onMouseDown, para melhor compatiblidade ([[mw:RL/MGU#Event_binding]])
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")
ESR: fb.link('subst:ESR-banda|1=~~' + '~~', 'banda', 'Artigo sobre banda sem fontes e sem notoriedade')
+ fb.link("subst:ESR-empresa|1=~~" + "~~", "empresa", "Empresa 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\"/>",
+ '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] ***/
/*** Submenu [esboço] ***/
// FIXME: Usar jQuery em vez de onkeyup, onKeyPress e onMouseDown, para melhor compatiblidade ([[mw:RL/MGU#Event_binding]])
esb: fb.link("mínimo", "mínimo", "Artigo com apenas uma frase") +
" " + fb.link("esboço", "esboço", "Artigo ainda pouco desenvolvido") +
esb: fb.link('mínimo', 'mínimo', 'Artigo com apenas uma frase') +
' ' + fb.link('esboço', 'esboço', 'Artigo ainda pouco desenvolvido') +
" esboço-" +
' esboço-' +
"<input id=\"fb-esb-input\" onkeyup='fb.callAPI(\"esb\")'" +
" onKeyPress=\"fb.ok(event, 'esb')\" size=14/>" +
'<input id="fb-esb-input" onkeyup="fb.callAPI(\'esb\')"' +
"<input type=\"button\" onMouseDown='fb.ok(\"ok\", \"esb\")' value=\"OK\"/>",
' onKeyPress="fb.ok(event, \'esb\')" size=14/>' +
'<input type="button" onMouseDown="fb.ok(\'ok\', \'esb\')" value="OK"/>',
/*** Submenu [manuteção] ***/
/*** Submenu [manuteção] ***/
man: [
man: [
fb.link("subst:wkf", "wikificar", "Não está formatado de acordo com o livro" +
fb.link('subst:wkf', 'wikificar', 'Não está formatado de acordo com o livro' +
" de estilo"),
' de estilo'),
fb.link("subst:s-fontes", "sem fontes", "Página não cita nenhuma fonte ou" +
fb.link('subst:s-fontes', 'sem fontes', 'Página não cita nenhuma fonte ou' +
" referência"),
' referência'),
fb.link("sem cat", "sem cat", "Página não está em nenhuma categoria"),
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" +
fb.link('subst:rec', 'reciclagem', 'Página precisa ser reciclada de acordo' +
" com o livro de estilo"),
' com o livro de estilo'),
fb.link("parcial", "parcial", "Artigo possui passagens que não respeitam o" +
fb.link('parcial', 'parcial', 'Artigo possui passagens que não respeitam o' +
" princípio da imparcialidade"),
' princípio da imparcialidade'),
fb.link("subst:ctx", "contexto", "Página carece de contexto"),
fb.link('subst:ctx', 'contexto', 'Página carece de contexto'),
fb.link("controverso|artigo", "controverso", "controverso devido às disputas" +
fb.link('controverso|artigo', 'controverso', 'controverso devido às disputas' +
" sobre o seu conteúdo"),
' sobre o seu conteúdo'),
fb.link("subst:f-referências", "formatar referências", "Artigo contém" +
fb.link('subst:f-referências', 'formatar referências', 'Artigo contém' +
" referências que necessitam de formatação"),
' referências que necessitam de formatação'),
fb.link("subst:m-notas", "mais notas", "Página cita fontes fiáveis, mas não" +
fb.link('subst:m-notas', 'mais notas', 'Página cita fontes fiáveis, mas não' +
" cobre todo o texto"),
' cobre todo o texto'),
fb.link("subst:s-notas", "sem notas", "Existem fontes no final da página," +
fb.link('subst:s-notas', 'sem notas', 'Existem fontes no final da página,' +
" mas não são citadas no corpo do artigo"),
' mas não são citadas no corpo do artigo'),
fb.link("subst:s-fontes-bpv", "bpv sem fontes", "Biografia de pessoa viva" +
fb.link('subst:s-fontes-bpv', 'bpv sem fontes', 'Biografia de pessoa viva' +
" que não cita nenhuma fonte"),
' que não cita nenhuma fonte'),
fb.link("subst:fpr", "fonte primária", "Artigo necessita de fontes" +
fb.link('subst:fpr', 'fonte primária', 'Artigo necessita de fontes' +
" secundárias fiáveis publicadas por terceiros")
' secundárias fiáveis publicadas por terceiros')
].join(' '),
].join(' '),
/*** Submenu [busca] ***/
/*** Submenu [busca] ***/
Linha 172: Linha 179:


/*** Submenu [aviso] ***/
/*** Submenu [aviso] ***/
warn: [fb.link("subst:bem-vindo IP", "BV-IP",
warn: [fb.link('subst:bem-vindo IP', 'BV-IP',
"Boas-vindas para usuário(a) não registrado(a)"),
'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-vindo', 'BV', 'Bem-vindo(a) à Wikipédia'),
fb.link("subst:bem-vinda", "BVª", "Bem-vinda à Wikipédia"),
fb.link('subst:bem-vinda', 'BVª', 'Bem-vinda à Wikipédia'),
fb.link("subst:bv-av", "av-BV-IP",
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 erro em artigo e boas-vindas para usuário(a) não registrado(a)',
"Aviso sobre qual artigo?"),
'Aviso sobre qual artigo?'),
fb.link("subst:bv-av-registrado", "av-BV",
fb.link('subst:bv-av-registrado', 'av-BV',
"Aviso sobre erro em artigo e boas-vindas para usuário(a) registrado",
'Aviso sobre erro em artigo e boas-vindas para usuário(a) registrado',
"Aviso sobre qual artigo?"),
'Aviso sobre qual artigo?'),
fb.link("subst:aviso-ER", "av-ER", "Aviso sobre eliminação rápida",
fb.link('subst:aviso-ER', 'av-ER', 'Aviso sobre eliminação rápida',
"Qual página foi proposta para eliminação?"),
'Qual página foi proposta para eliminação?'),
fb.link("subst:av-bv-ER", "av-BV-ER",
fb.link('subst:av-bv-ER', 'av-BV-ER',
"Aviso sobre eliminação rápida + boas-vindas",
'Aviso sobre eliminação rápida + boas-vindas',
"Qual página foi proposta para eliminação?"),
'Qual página foi proposta para eliminação?'),
fb.link("subst:aviso-ESR", "av-ESR", "Aviso sobre eliminação semirrápida",
fb.link('subst:aviso-ESR', 'av-ESR', 'Aviso sobre eliminação semirrápida',
"Qual página foi proposta para eliminação?"),
'Qual página foi proposta para eliminação?'),
fb.link("subst:aviso-PE", "av-PE", "Aviso sobre eliminação por votação",
fb.link('subst:aviso-PE', 'av-PE', 'Aviso sobre eliminação por votação',
"Qual página foi proposta para eliminaçã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",
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?"),
'Qual página foi proposta para eliminação?'),
fb.link("subst:bv-propaganda", "prop-BV", "Caro editor, por favor não faça" +
fb.link('subst:bv-propaganda', 'prop-BV', 'Caro editor, por favor não faça' +
" propaganda, [...] Apesar disso, bem-vindo à Wikipédia"),
' propaganda, [...] Apesar disso, bem-vindo à Wikipédia'),
fb.link("subst:propaganda", "prop",
fb.link('subst:propaganda', 'prop',
"Caro editor, por favor não faça propaganda...",
'Caro editor, por favor não faça propaganda...',
"Em que página foi feita propaganda?"),
'Em que página foi feita propaganda?'),
fb.link("subst:aviso", "av", "Aviso sobre erro em artigo",
fb.link('subst:aviso', 'av', 'Aviso sobre erro em artigo',
"Aviso sobre qual artigo?"),
'Aviso sobre qual artigo?'),
fb.link("subst:aviso2", "av2", "Aviso sobre vandalismo",
fb.link('subst:aviso2', 'av2', 'Aviso sobre vandalismo',
"Qual página foi vandalizada?"),
'Qual página foi vandalizada?'),
fb.link("subst:BSRE", "BSRE", "Aviso de biografia sem relevo enciclopédico",
fb.link('subst:BSRE', 'BSRE', 'Aviso de biografia sem relevo enciclopédico',
"Qual artigo?"),
'Qual artigo?'),
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 \\'|2=\\' como separador: página da Wikipédia" +
'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',
"Não insulte nem use linguagem inadequada em artigos ou discussões"),
'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:ortografia', 'ortografia', 'Não mude a versão da língua'),
fb.link("subst:mostrar previsão", "salvamento sucessivo",
fb.link('subst:mostrar previsão', 'salvamento sucessivo',
"Não faça salvamentos sucessivos, utilize o botão\"Mostrar previsão\"",
'Não faça salvamentos sucessivos, utilize o botão \'Mostrar previsão\'',
"Em que artigo foram feitos salvamentos sucessivos?"),
'Em que artigo foram feitos salvamentos sucessivos?'),
fb.link("subst:Av-boas vindas", "aviso-BV", "Não dê boas-vindas a usuários" +
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"),
' 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: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",
fb.link('subst:Aviso/Página pessoal', 'av-PU-outro',
"Não edite páginas de outros usuários",
'Não edite páginas de outros usuários',
"Qual página de outro(a) usuário(a) foi editada?"),
'Qual página de outro(a) usuário(a) foi editada?'),
fb.link("subst:não remova", "não remova",
fb.link('subst:não remova', 'não remova',
"Não remova marcações de eliminação das páginas",
'Não remova marcações de eliminação das páginas',
"Qual página em que a marcação de eliminação foi removida?"),
'Qual página em que a marcação de eliminação foi removida?'),
fb.link("subst:autobiografia", "autobiografia", "Não crie autobiografias",
fb.link('subst:autobiografia', 'autobiografia', 'Não crie autobiografias',
"Qual autobiografia foi criada?")
'Qual autobiografia foi criada?')
].join(' '),
].join(' '),
/** Submenu [CatScan] **/
/** Submenu [CatScan] **/
Linha 245: Linha 252:
if (evt == 'ok') {
if (evt == 'ok') {
if ( option == 'esb' ) {
if ( option == 'esb' ) {
fb.run("esboço-" + document.getElementById( 'fb-esb-input' ).value);
fb.run('esboço-' + $( '#fb-esb-input').val());
} else if ( option == 'ESR' ) {
} else if ( option == 'ESR' ) {
fb.run("subst:ESR", document.getElementById( 'fb-esr-input' ).value + " ~~" + "~~");
fb.run('subst:ESR', $( '#fb-esr-input').val() + ' ~~' + '~~');
}
}
}
}
};
};


/* Patrol the edit currently displayed
* @param {function()} succes Callback function to be executed after the edit is pattroled
*/
fb.patrolCurrentEdit = function ( success ) {
$.getJSON(
mw.util.wikiScript( 'api' ), {
format: 'json',
action: 'query',
list: 'recentchanges',
rctoken: 'patrol',
rcprop: '',
rclimit: '1'
},
function( data ) {
var query = data.query,
rc = query && query.recentchanges,
token = rc && rc[ 0 ] && rc[ 0 ].patroltoken,
$patrol = mw.util.$content.find('span.patrollink a').first(),
rcid = mw.util.getParamValue( 'rcid', $patrol.attr('href') || '' );
if ( !token ) {
mw.log( 'Não foi possível obter um token para patrulhar a edição.' );
return false;
} else if ( !rcid ) {
mw.log( 'Não foi possível identificar a edição a ser patrulhada.' );
return false;
}
$.post(
mw.util.wikiScript( 'api' ), {
action: 'patrol',
format: 'json',
token: token,
rcid: rcid
},
function( data ) {
if ( data.error ) {
mw.log( 'Não foi possível patrulhar a edição: ' + data.error.info );
return false;
} else {
if ( $.isFunction( success ) ){
success();
}
mw.log( 'A edição foi marcada como patrulhada.' );
return true;
}
}
).error(function() {
alert( 'Houve um erro inesperado ao usar a API do MediaWiki.' );
return false;
});
}
).error(function() {
alert( 'A API retornou um erro ao tentar obter um token para patrulhar a edição.' );
return false;
});
};


/* Função de edição
/* Função de edição
Linha 260: Linha 322:
*/
*/
fb.run = function (code, extraText) {
fb.run = function (code, extraText) {
var textBox = document.getElementById("wpTextbox1"),
var $textBox = $('#wpTextbox1'),
summaries = {
summaries = {
'subst:VDA': 'Página marcada como [[WP:VDA|VDA]]',
'subst:VDA': 'Página marcada como [[WP:VDA|VDA]]',
Linha 283: Linha 345:
return false;
return false;
}
}
if (mw.config.get('wgAction') == 'view') {
switch (mw.config.get('wgAction')) {
case 'view':
var url = mw.util.wikiGetlink( mw.config.get('wgPageName') )
var url = mw.util.wikiGetlink( mw.config.get('wgPageName') ) + '?',
data = {
+ '?action=edit&fastb=' + encodeURIComponent(code);
'action': 'edit',
if (extraText) {
'fastb': code
location.href = url + '&fbtxt=' + encodeURIComponent(extraText);
} else {
};
if( extraText ){
location.href = url;
data.fbtxt = extraText;
}
}
fb.patrolCurrentEdit( function(){
} else if (mw.config.get('wgAction') == "edit") {
location.href = url + $.param( data );
var value = textBox.value;
});
var summary = " (usando [[Wikipédia:FB|FastButtons]])";
break;
case 'edit':
var value = $textBox.val();
var summary = ' (usando [[Wikipédia:FB|FastButtons]])';
if ( value.match(/\{\{(?:ER|ESR2|Usuário\:Salebot\/Impróprio)\|/i) ) {
if ( value.match(/\{\{(?:ER|ESR2|Usuário\:Salebot\/Impróprio)\|/i) ) {
alert("Já existe uma predefinição de eliminação nesta página.");
alert('Já existe uma predefinição de eliminação nesta página.');
return false;
return false;
}
}
if (code.indexOf("ER") === 0) {
if (code.indexOf('ER') === 0) {
if (extraText) {
extraText = extraText? '|3=' + extraText: '';
extraText = "|3=" + extraText + "}}\n\n";
extraText = '{' + '{' + code + '|2=~~' + '~~' + extraText + '}}\n\n';
$textBox.val( extraText + value );
} else {
extraText = "}}\n\n";
}
extraText = "{" + "{" + code + "|2=~~" + "~~" + extraText;
textBox.value = extraText + value;
if (this.salve) {
if (this.salve) {
document.editform.wpSummary.value = "Página proposta para" +
document.editform.wpSummary.value = 'Página proposta para' +
" [[WP:ER|eliminação rápida]] (regra " +
' [[WP:ER|eliminação rápida]] (regra ' +
code.substring(3) + ")" + summary;
code.substring(3) + ')' + summary;
}
}
} else if (code == "redirect") {
} else if (code == 'redirect') {
if (mw.config.get('wgNamespaceNumber') == 14) {
if (mw.config.get('wgNamespaceNumber') == 14) {
if (extraText) {
if (extraText) {
textBox.value = "{" + "{redirecionamento de categoria|" +
$textBox.val( '{' + '{redirecionamento de categoria|' +
extraText + "}}";
extraText + '}}' );
}
}
if (this.salve) {
if (this.salve) {
document.editform.wpSummary.value = "Redirecionando para" +
document.editform.wpSummary.value = 'Redirecionando para' +
" a [[categoria:" + extraText + "]]" + summary;
' a [[categoria:' + extraText + ']]' + summary;
}
}
} else {
} else {
if (extraText) {
if (extraText) {
textBox.value = "#Redirecionamento [[" + extraText + "]]";
$textBox.val( '#Redirecionamento [[' + extraText + ']]' );
}
}
}
}
} else {
} else {
if (extraText) {
extraText = extraText? '|1=' + extraText: '';
extraText = '{' + '{' + code + extraText + '}}';
if (code.indexOf("|") > -1) {
extraText = "|1=" + extraText + "}}";
} else {
extraText = "|1=" + extraText + "}}";
}
} else {
extraText = "}}";
}
extraText = "{{" + code + extraText;
if (mw.config.get('wgNamespaceNumber') == 3) {
if (mw.config.get('wgNamespaceNumber') == 3) {
value += "\n\n" + extraText + " ~~" + "~~";
value += '\n\n' + extraText + ' ~~' + '~~';
} else if (code == "mínimo" || code.indexOf("esboço") === 0) {
} else if (code == 'mínimo' || code.indexOf('esboço') === 0) {
if (value.match(/\n\n\[\[/)) {
if (value.match(/\n\n\[\[/)) {
value = value.substring(0, value.search(/\n\n\[\[/)) + "\n\n" +
value = value.substring(0, value.search(/\n\n\[\[/)) + '\n\n' +
extraText + value.substring(value.search(/\n\n\[\[/));
extraText + value.substring(value.search(/\n\n\[\[/));
} else {
} else {
value += "\n\n" + extraText;
value += '\n\n' + extraText;
}
}
this.salve = (code == "mínimo") ?
this.salve = (code == 'mínimo') ?
"Página marcada como [[WP:M|mínimo]]" :
'Página marcada como [[WP:M|mínimo]]' :
"Página marcada como [[WP:EBC|esboço]]";
'Página marcada como [[WP:EBC|esboço]]';
} else if ($.inArray( code, [ 'subst:VDA' , 'subst:matrad' ]) > -1) {
} else if ($.inArray( code, [ 'subst:VDA' , 'subst:matrad' ]) > -1) {
value = extraText;
value = extraText;
} else {
} else {
value = extraText + "\n\n" + value;
value = extraText + '\n\n' + value;
}
}
textBox.value = value;
$textBox.val(value );
if (this.salve) {
if (this.salve) {
if (mw.config.get('wgNamespaceNumber') == 3) {
if (mw.config.get('wgNamespaceNumber') == 3) {
Linha 370: Linha 426:
document.editform.submit();
document.editform.submit();
}
}
break;
}
}
};
};

var esb,
esbText = "",
esbText2 = "";


/* Callback function for API calls
/* Callback function for API calls
Linha 383: Linha 436:
var user,
var user,
that = this,
that = this,
esb,
apiParams = {
apiParams = {
'esb': {
'esb': {
Linha 423: Linha 477:
};
};
if ( 'esb' == code ) {
if ( 'esb' == code ) {
esb = document.getElementById( 'fb-esb-input' );
esb = $( '#fb-esb-input' ).val();
if ( $.inArray( esb.value, [ esbText, esbText2 ] ) !== -1 ) {
if ( $.inArray( esb, [ esbText, esbText2 ] ) !== -1 ) {
return;
return;
}
}
esbText = esb.value;
esbText = esb;
if (esbText == esb.value.substr(0, (esb.value.length - 1))) {
if (esbText == esb.substr(0, (esb.length - 1))) {
return;
return;
}
}
apiParams.esb.apprefix = 'Esboço-' + esb.value;
apiParams.esb.apprefix = 'Esboço-' + esb;
}
}
apiParams[ code ].format = 'json';
apiParams[ code ].format = 'json';
Linha 464: Linha 518:
'<span class="fb-missing" title="Esta página ainda não possui referências">ref</span>';
'<span class="fb-missing" title="Esta página ainda não possui referências">ref</span>';
var catLine = document.getElementById( 'mw-normal-catlinks' );
var catLine = document.getElementById( 'mw-normal-catlinks' );
// FIXME: Do not do screen scraping to get this info!
// FIXME: Não usar 'screen scraping' para obter esta informação!
if (catLine && catLine.innerHTML.indexOf( '><a href="' + mw.config.get('wgArticlePath').replace('$1', '')) > -1) {
if (catLine && catLine.innerHTML.indexOf( '><a href="' + mw.config.get('wgArticlePath').replace('$1', '')) > -1) {
info += ' · cat';
info += ' · cat';
Linha 501: Linha 555:
);
);
} else {
} else {
var hiddenCats = document.getElementById("mw-hidden-catlinks");
var hiddenCats = document.getElementById('mw-hidden-catlinks');
if (hiddenCats) {
if (hiddenCats) {
hiddenCats = hiddenCats.innerHTML;
hiddenCats = hiddenCats.innerHTML;
if (hiddenCats.indexOf("!Artigos de qualidade") > -1) {
if (hiddenCats.indexOf('!Artigos de qualidade') > -1) {
hiddenCats = hiddenCats.substr(hiddenCats.indexOf("!Artigos de qualidade") + 22, 1);
hiddenCats = hiddenCats.substr(hiddenCats.indexOf('!Artigos de qualidade') + 22, 1);
if (hiddenCats == "d") {
if (hiddenCats == 'd') {
hiddenCats = "?";
hiddenCats = '?';
}
}
this.$submenu.html(
this.$submenu.html(
this.$submenu.html() + "<span title='Qualidade do artigo'> Q-<b>" +
this.$submenu.html() + '<span title="Qualidade do artigo"> Q-<b>' +
hiddenCats + "</b></span>"
hiddenCats + '</b></span>'
);
);
}
}
Linha 686: Linha 740:
'title="Abrir a contagem de edições deste editor"' +
'title="Abrir a contagem de edições deste editor"' +
' href="http://toolserver.org/~river/cgi-bin/count_edits?user=' +
' href="http://toolserver.org/~river/cgi-bin/count_edits?user=' +
encUser + '&dbname=ptwiki_p">contador de edições</a></span>'
encUser + '&dbname=' + mw.config.get('wgDBname') + '_p">contador de edições</a></span>'
].join( ' ' )
].join( ' ' )
);
);
Linha 709: Linha 763:
&& mw.config.get('wgTitle').indexOf(mw.config.get('wgUserName')) === 0;
&& mw.config.get('wgTitle').indexOf(mw.config.get('wgUserName')) === 0;
if (inUserNS) {
if (inUserNS) {
fb.$menu.html( fb.link("ER|1", "ER1", "Marcar subpágina do próprio usuário para eliminação") );
fb.$menu.html( fb.link('ER|1', 'ER1', 'Marcar subpágina do próprio usuário para eliminação') );
} else {
} else {
// FIXME: Usar jQuery em vez de onClick, para melhor compatiblidade ([[mw:RL/MGU#Event_binding]])
fb.$menu.html( '<a class="fb-button fb-menu-button" title="Exibir regras' +
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>' );
' para a eliminação rápida" onClick="fb.$submenu.html(fb.submenu.ER)">ER</a>' );
Linha 716: Linha 771:
}
}
if ($.inArray(mw.config.get('wgNamespaceNumber'), [0, 102]) !== -1) {
if ($.inArray(mw.config.get('wgNamespaceNumber'), [0, 102]) !== -1) {
// FIXME: Usar jQuery em vez de onClick, para melhor compatiblidade ([[mw:RL/MGU#Event_binding]])
fb.$menu.html(
fb.$menu.html(
fb.$menu.html() + [
fb.$menu.html() + [
Linha 748: Linha 804:
if ($.inArray(mw.config.get('wgNamespaceNumber'), [2, 10]) !== -1) {
if ($.inArray(mw.config.get('wgNamespaceNumber'), [2, 10]) !== -1) {
fb.$menu.html(
fb.$menu.html(
fb.$menu.html() + fb.link("subst:apagar", "PE",
fb.$menu.html() + fb.link('subst:apagar', 'PE',
"Marcar para eliminação por votação")
'Marcar para eliminação por votação')
);
);
}
}
if (mw.config.get('wgNamespaceNumber') % 2 === 0) {
if (mw.config.get('wgNamespaceNumber') % 2 === 0) {
fb.$menu.html(
fb.$menu.html(
fb.$menu.html() + fb.link("redirect", "#R", "Redirecionar para outro título",
fb.$menu.html() + fb.link('redirect', '#R', 'Redirecionar para outro título',
"Redirecionar para qual página?")
'Redirecionar para qual página?')
);
);
}
}
if (mw.config.get('wgNamespaceNumber') === 14) {
if (mw.config.get('wgNamespaceNumber') === 14) {
// FIXME: Usar jQuery em vez de onClick, para melhor compatiblidade ([[mw:RL/MGU#Event_binding]])
fb.$menu.html(
fb.$menu.html(
fb.$menu.html() + '<a class="fb-button fb-menu-button"' +
fb.$menu.html() + '<a class="fb-button fb-menu-button"' +
Linha 767: Linha 824:
}
}
if (mw.config.get('wgNamespaceNumber') === 3) {
if (mw.config.get('wgNamespaceNumber') === 3) {
// FIXME: Usar jQuery em vez de onClick, para melhor compatiblidade ([[mw:RL/MGU#Event_binding]])
fb.$menu.html(
fb.$menu.html(
fb.$menu.html() + '<a class="fb-button fb-menu-button"' +
fb.$menu.html() + '<a class="fb-button fb-menu-button"' +
Linha 774: Linha 832:
}
}
if ($.inArray(mw.config.get('wgNamespaceNumber'), [2, 3]) !== -1) {
if ($.inArray(mw.config.get('wgNamespaceNumber'), [2, 3]) !== -1) {
// FIXME: Usar jQuery em vez de onClick, para melhor compatiblidade ([[mw:RL/MGU#Event_binding]])
fb.$menu.html(
fb.$menu.html(
fb.$menu.html() + '<a class="fb-button fb-menu-button" title="Exibir informações sobre esta conta"' +
fb.$menu.html() + '<a class="fb-button fb-menu-button" title="Exibir informações sobre esta conta"' +
Linha 780: Linha 839:
}
}
}
}
// FIXME: Usar jQuery em vez de onClick, para melhor compatiblidade ([[mw:RL/MGU#Event_binding]])
fb.$menu.html(
fb.$menu.html(
fb.$menu.html() + [
fb.$menu.html() + [