MediaWiki Discussão:Gadget-geonotice-core.js

O conteúdo da página não é suportado noutras línguas.
Adicionar tópico
Origem: Wikipédia, a enciclopédia livre.
Último comentário: 5 de maio de 2015 de He7d3r no tópico Evento em Porto Alegre

Aprimoramentos[editar código-fonte]

O texto seguinte foi movido de: Wikipédia:Pedidos/Páginas protegidas#MediaWiki:Geonotice.js 2

Foram feitos ajustes na organização do script. !Silent (discussão) 23h00min de 28 de setembro de 2012 (UTC)Responder

Para facilitar a revisão geralmente é melhor não misturar alterações que mudam o funcionamento com simples alterações de espaçamento ou quebras de linha, pois os diffs ficam mais confusos (e o MediaWiki não fornece a opção de ignorar os espaços em branco nos diffs). Helder 11h30min de 1 de outubro de 2012 (UTC)Responder
Já que vai usar jQuery na parte final do script, acho que seria melhor terminar a migração, passando a usar .append(), .click(), .text(), etc.. em vez de construir aquela string com HTML e colocá-la com .html(). Helder 11h35min de 1 de outubro de 2012 (UTC)Responder
Eu já estava pensando em terminar de migrar para jQuery uma outra hora, mas já que ainda não atederam, atualizei novamente. !Silent (discussão) 19h24min de 1 de outubro de 2012 (UTC)Responder
Não está mais validando no jslint.
Aproveite para colocar o Geo junto com ( function( $, mw ) { ... }( jQuery, mediaWiki ) ); e ordenar conforme as convenções, assim: ( function( mw, $, Geo) { ... }( mediaWiki, jQuery, Geo ) );
Provavelmente seria melhor criar o #geonoticeHide e guardá-lo em uma variável, que seria usada tanto para um append no #geonotice quanto para definir o .click() (ou poderia ser feito o encadeamento de métodos jQuery: $elemento.isso().aquilo().etc() ). E já que o script usa cookies, acredito que uma dica do Krinkle também se aplica: prefixar o nome do cookie com mw.config.get( 'wgCookiePrefix' ). Helder 11h49min de 3 de outubro de 2012 (UTC)Responder
Fiz as alterações. Só que o JSLint fica apontando que mediaWiki e jQuery foram usados antes de serem definidos. Por que acontece isso? !Silent (discussão) 13h17min de 3 de outubro de 2012 (UTC)Responder
  • Como removeu a configuração local da opção "unparam" do jslint ele continua não validando.
  • Além disso, se definir a regexForInternalLinks dentro da insertNotice, a regex será recriada e destruída toda vez que essa função for chamada (o que não chega a ser perceptível, mas achei bom mencionar).
  • É melhor usar .on() em vez da antiga .bind() (ver um exemplo no gerrit).
  • .hide() é mais simples que .css( 'display', 'none' );
Essa conversa podia estar na discussão do script. Helder 13h58min de 3 de outubro de 2012 (UTC)Responder
O texto acima foi movido de: Wikipédia:Pedidos/Páginas protegidas#MediaWiki:Geonotice.js 2
Fiz os ajustes propostos.
A propósito, o JSLint estava validando normalmente aqui sem o "unparam", mas já o acrescentei de volta; retirei o CSS de lá para ser usado diretamente da página correta (MediaWiki:Gadget-geonotice.css). !Silent (discussão) 00h54min de 4 de outubro de 2012 (UTC)Responder
Só pra constar: no tópico en:MediaWiki talk:Common.js/Archive 18#hasClass há um outro exemplo em que preferiram guardar certa regex em cache. Helder 19h04min de 20 de outubro de 2012 (UTC)Responder

Gadget[editar código-fonte]

Este script deveria virar um gadget, ativo por padrão - poderíamos inclusive mover o CSS para uma página própria para isso). Helder 13h58min de 3 de outubro de 2012 (UTC)Responder

PS: Seria necessário indicar que ele depende dos módulos "jquery.cookie" e "mediawiki.util". Helder 14h36min de 3 de outubro de 2012 (UTC)Responder
PS2: Só lembrando que o script está sendo carregado atualmente por meio da MediaWiki:Common.js/watchlist.js, que por sua vez é carregada a parti do MediaWiki:Common.js. Helder 14h09min de 5 de outubro de 2012 (UTC) Já foi solicitada a alteração deste detalhe. Helder 03h39min de 6 de outubro de 2012 (UTC)Responder
É preciso remover o código antigo do MediaWiki:Common.js, pois já ativou o gadget por padrão, e colocar o if no próprio gadget. Helder 15h04min de 9 de outubro de 2012 (UTC)Responder

[Regressão] Uncaught ReferenceError: regexForInternalLinks is not defined[editar código-fonte]

Acredito que o erro

Uncaught ReferenceError: regexForInternalLinks is not defined

comecou a aparecer depois desta última atualização (note que ele não valida mais no jslint). Helder 12h19min de 9 de outubro de 2012 (UTC)Responder

Foi que eu tinha esquecido de por o this. Só que por algum motivo não está validando, pois está dando erro no "unparam", e quando eu o tiro, fica apontando que o parametro str do geoWikiLinker não foi usado. Hein? Não entendo o porquê de não funcionar com o unparam. !Silent (discussão) 14h22min de 9 de outubro de 2012 (UTC)Responder
Acredito que o aviso Expected an identifier and instead saw '/*jslint' (a reserved word). significa que não é válido intercalar as palavras reservadas na declaração de um objeto. Por exemplo, isto resolveria (ignore as remoções de espaços feitas pelo editor que usei). Helder 14h46min de 9 de outubro de 2012 (UTC)Responder
Acho que agora tá OK. !Silent (discussão) 14h30min de 9 de outubro de 2012 (UTC)Responder
A desvantagem de definir unparam: true globalmente é que não será informado de parâmetros não utilizado em nenhuma outra parte do script, e poderão passar despercebidos. Helder 14h46min de 9 de outubro de 2012 (UTC)Responder
O problema é que se colocar diretamente na função certa, o JSLint não valida. !Silent (discussão) 18h49min de 9 de outubro de 2012 (UTC)Responder

Orientação a objetos[editar código-fonte]

Acredito que não há motivo para tornar tudo "público" no objeto "geoNotices". Coisas como "regexForInternalLinks", "cookiePrefix" e a própria lista de avisos, "notices", só são de interesse internamente, não para alguém que vá usar a "interface" do "geoNotices". Veja por exemplo o que foi feito com o código da antiga barra de edições: a versão antiga tinha exposto detalhes internos, e usuários começaram a confiar que isso era parte da interface, então quando foram corrigidos (movidos "para dentro"), as coisas quebraram.

Provavelmente a interface deveria ter apenas um método, que poderia ser usado assim: geoNotices.add({...});. Assim, também poderíamos, digamos, separar o corpo do script ("core") da lista de avisos (que tem uma forte tendencia de ser editada por quem entende pouco de scripts, pelo que vi na enwiki). Assim, quando tivermos gadgets globais, o "core" seria importado para as wikis, e localmente definiriam apenas a parte que usa o .add()... Helder 14h46min de 9 de outubro de 2012 (UTC)Responder

Concordo em criar um geoNotices.add({...});. !Silent (discussão) 20h52min de 9 de outubro de 2012 (UTC)Responder

Avisos aparecem quando não deveriam[editar código-fonte]

Esses avisos não deveriam aparecer apenas nas páginas vigiadas? Tenho a impressão de que vi o banner enquanto estava nesta discussão. Além disso, mesmo depois que eu ocultei, o botão continuou lá (e alguns minutos depois o banner apareceu denovo quando recarreguei a página). Helder 14h51min de 9 de outubro de 2012 (UTC)Responder

Verdade., tinha reparado isso desde a versão anterior também. Mas achei que era para ser assim mesmo, então nem dei bola.Já arrumei.
Agora com relação ao banner aparecer denovo, aqui não está acontecendo isso. Eu dei uma olhada no código e não consegui perceber nada que possa está causando esse problema. Talvez possa ser algo com seu navegador. !Silent (discussão) 15h24min de 9 de outubro de 2012 (UTC)Responder

Botão não desaparece[editar código-fonte]

Entendi o motivo para o botão continuar lá: você mudou o HTML dos banners e o botão está ficando fora do <div> que é ocultado ao clicar. Helder 15h52min de 9 de outubro de 2012 (UTC)Responder

Isso deve resolver. !Silent (discussão) 20h47min de 9 de outubro de 2012 (UTC)Responder

Correção de afluentes[editar código-fonte]

Há algums links que precisam ser corrigidos, pois ainda apontam para o nome antigo. Helder 00h55min de 10 de outubro de 2012 (UTC)Responder

Corrigido. !Silent (discussão) 01h47min de 10 de outubro de 2012 (UTC)Responder

Evento em Porto Alegre[editar código-fonte]

O texto que aqui estava foi movido para: MediaWiki Discussão:Gadget-geonotice-list.js#Evento em Porto Alegre. Helder 11h25min de 5 de maio de 2015 (UTC)Responder