Usuário(a):Chairhandlers/script-atualizaçãoepisódios.js
Nota: Depois de publicar, poderá ter de contornar a cache do seu navegador para ver as alterações.
- Firefox / Safari: Pressione Shift enquanto clica Recarregar, ou pressione Ctrl-F5 ou Ctrl-R (⌘-R no Mac)
- Google Chrome: Pressione Ctrl-Shift-R (⌘-Shift-R no Mac)
- Edge: Pressione Ctrl enquanto clica Recarregar, ou pressione Ctrl-F5.
$(function($) {
setTimeout(function() {
var portletlink = mw.util.addPortletLink('p-tv', '#', 'Atualizar episódios');
$(portletlink).click( function(e) {
e.preventDefault();
// Conteúdo da caixa de texto
var EpisodiosM;
var wpTextbox1 = document.getElementById('wpTextbox1');
var wpTextbox1_V = wpTextbox1.value.split("\n");
// Declarar as variáveis
var Episodios = false; var RTitulo = false; var linha;
var DataTransmissaoOriginal = false; var NumeroEpisodio = false; var RmvRefs = false;
// Percorrer conteúdos uma linha por vez
for (var i = 0; i < wpTextbox1_V.length; i++) {
// Recuperar linha particular
linha = wpTextbox1_V[i];
// Remover o conjunto de parâmetros de referências, e na próxima linha de episódios
if (RmvRefs && (linha.toLowerCase().indexOf('lista de episódios') >= 0 || linha.trim() == '}}')) RmvRefs = false;
// Atualizar episódios em {{Info/Televisão}}, se existir
if (!EpisodiosM) {
EpisodiosM = linha.match(/(\s*\|\s*episódios\s*=\s*(<onlyinclude>)?)(\d+)(.*)/);
if (EpisodiosM) Episodios = parseInt(EpisodiosM[3])+1;
}
// Verificar se a primeira aparição de RTítulo for encontrada
if (!RTitulo) {
// Se a linha conter RTítulo, definir para <<RTítulo>> (será removido mais tarde).
var RTituloM = linha.match(/(\s*\|\s*RTítulo\s*=\s*)<(.*)/);
if (RTituloM) {
linha = '<<RTítulo>>';
RTitulo = true;
RmvRefs = true;
}
// Conseguir o número do episódio para adicionar ao resumo
var NumeroEpisodioM = linha.match(/(\s*\|\s*NúmeroEpisódio\s*=\s*)(.*)/);
if (NumeroEpisodioM) NumeroEpisodio = NumeroEpisodioM[2];
} else if (!DataTransmissaoOriginal) {
// Se RTítulo for encontrado mas DataTransmissãoOriginal não for definido, encontrar a próxima ocorrência
// de DataTransmissãoOriginal para atualizar {{Episódios exibidos}}, se existir
var DataTransmissaoOriginalM = linha.match(/(\s*\|\s*DataTransmissãoOriginal\s*=\s*)\{\{[s|S]tart date\|([^\}]*)\}\}/);
if (DataTransmissaoOriginalM) DataTransmissaoOriginal = DataTransmissaoOriginalM[2];
}
// Remover referências de diretor/escritor/etc.
if (RmvRefs) linha = linha.replace(/<ref(.*)\/(ref)?\>/g,"");
// Atualizar linha
wpTextbox1_V[i] = linha;
}
NumeroEpisodio = (NumeroEpisodio?NumeroEpisodio:Episodios);
// Salvar valores ou obter valores salvos
if (DataTransmissaoOriginal) {
// Se NúmeroEpisódio/DataTransmissãoOriginal foi encontrado, tirá-lo da página de temporada transcluída para a atualização da página LoE
localStorage.setItem('NúmeroEpisódio', NumeroEpisodio);
localStorage.setItem('DataTransmissãoOriginal', DataTransmissaoOriginal);
} else if (localStorage.getItem('DataTransmissãoOriginal') || localStorage.getItem('NúmeroEpisódio')) {
// Se NúmeroEpisódio/DataTransmissãoOriginal não foi encontrado, obtê-lo da página de temporada transcluída, exceto para a atualização da página LoE
DataTransmissaoOriginal = localStorage.getItem('DataTransmissãoOriginal');
localStorage.removeItem('DataTransmissãoOriginal');
NumeroEpisodio = localStorage.getItem('NúmeroEpisódio');
localStorage.removeItem('NúmeroEpisódio');
}
// Alertar a não-existência de DataTransmissãoOriginal/NúmeroEpisódio
var update = true;
if (!DataTransmissaoOriginal && !NumeroEpisodio) {
aviso('Certifique-se de atualizar a página de temporada transcluída individual primeiro, depois a página de Lista de Episódios, para salvar o número do episódio e a data de exibição.');
update = false;
}
// Atualizar sumário
var sumario = document.getElementById('wpSummary');
if (sumario.value.indexOf('Atualização]]; exibido') >= 0) sumario.value += " ["+NumeroEpisodio+"]";
else if (update) sumario.value += "[[Usuário:Chairhandlers/script-atualizaçãoepisódios.js|Atualização]]; exibido ["+NumeroEpisodio+"]";
// Concatenar valores da caixa de texto novamente, mas sem <<RTítulo>>
var wpTextbox1NewValue = '';
for (i = 0; i < wpTextbox1_V.length; i++) if (wpTextbox1_V[i] != '<<RTítulo>>') wpTextbox1NewValue += wpTextbox1_V[i]+"\n";
// Atualizar |episódios=
if (EpisodiosM) {
if (RTitulo) wpTextbox1NewValue = wpTextbox1NewValue.replace(EpisodiosM[1]+EpisodiosM[3], EpisodiosM[1]+Episodios); // Página da Temporada
else wpTextbox1NewValue = wpTextbox1NewValue.replace(EpisodiosM[1]+EpisodiosM[3], EpisodiosM[1]+NumeroEpisodio); // Página Principal
}
// Atualizar {{Episódios exibidos}} se existir
if (DataTransmissaoOriginal) wpTextbox1NewValue = wpTextbox1NewValue.replace(/(\{\{Episódios exibidos\|)((\d*)\|(\d*)\|(\d*))/, "$1"+DataTransmissaoOriginal);
if (NumeroEpisodio) wpTextbox1NewValue = wpTextbox1NewValue.replace(/((\{\{Episódios exibidos\|)(.*)(\|\s*num\s*=))(\d+)/, "$1"+NumeroEpisodio);
wpTextbox1NewValue = wpTextbox1NewValue.replace(/((\{\{Episódios exibidos\|)(.*)(\|\s*finalizada\s*=))([\d\.]+)/, "$2$3");
// Redefinir caixa de texto com nova versão
wpTextbox1.value = wpTextbox1NewValue;
});
},900);
});