Utente:Daimona Eaytoy/test.js
Questa pagina definisce alcuni parametri di aspetto e comportamento generale di tutte le pagine. Per personalizzarli vedi Aiuto:Stile utente.
Nota: dopo aver salvato è necessario pulire la cache del proprio browser per vedere i cambiamenti (per le pagine globali è comunque necessario attendere qualche minuto). Per Mozilla / Firefox / Safari: fare clic su Ricarica tenendo premuto il tasto delle maiuscole, oppure premere Ctrl-F5 o Ctrl-R (Command-R su Mac); per Chrome: premere Ctrl-Shift-R (Command-Shift-R su un Mac); per Konqueror: premere il pulsante Ricarica o il tasto F5; per Opera può essere necessario svuotare completamente la cache dal menù Strumenti → Preferenze; per Internet Explorer: mantenere premuto il tasto Ctrl mentre si preme il pulsante Aggiorna o premere Ctrl-F5.
/* <nowiki> */
const EDIT_RE = /^(?:<noinclude>{{protetta}}<\/noinclude>\n?)?<div style="float: *right; (?:margin-(?:top|left|right):[\d\.]+em; )+text-align:center;?">\n?\[\[(?:File|Immagine):([^\[\]\|]+)\|100px(?:\|[^|\[\]]+)?]]<br *\/?><small>''(?!')([^<>]+)''(?:<br *\/?>)?<\/small><\/div> *\n'''Nati [\w ']+\[\[[^\[\]]+]]\.\.\.'''<br *\/?>\n((?:\[\[[^\[\]]+]](?: e \[\[[^\[\]]+]])? \(\[\[\d+(?: a\.C\.)?]]\) *(?:<br *\/?>)? *\n)+) *\n'''\.\.\. e morti ?'''<br *\/>\n((?:\[\[[^\[\]]+]] \(\[\[\d+(?: a\.C\.)?]]\) *(?:<br *\/?>)? *\n)+) *\n'''In questo giorno accadde ?\.\.\. *''' *<br *\/> *\n((?:\[\[[^\[\]]+]][ ][–\-].+(?:<br\/>)? *\n)+) *\n+'''(?:Oggi ricorre|Ricorre oggi)(?:''':|:''') (.+\.)(?:<br *\/?>)?\n?\s*<noinclude>\s*\[\[Categoria:Template attualità[^|\]]+\| \d\d]]\s*<\/noinclude>\s*$/;
const REPLACEMENT_STR = '{{PaginaPrincipale/Attualita/Modello\n|data = {{subst:SUBPAGENAME}}\n|immagine = $1\n|didascalia = $2\n|nati =\n$3|morti =\n$4|accadimenti =\n$5|ricorrenze = $6\n}}';
const LIST_REPLACE_RE = /(\|(?:nati|morti|accadimenti) =\n)((?:\[\[.+<br *\/?> *\n)+\[\[.+[).] *)(?:<br *\/>)?(?=\n)/g;
function linkReplacer( m, g1, g2, o, s ) {
const bulletList = g2.split( "\n" )
.map( ( x ) => '*' + x.replace( /<br *\/?>$/, '' ).trim() )
.join( "\n" );
return g1 + bulletList;
}
const SKIP_TITLES = [
'Template:PaginaPrincipale/Attualita',
'Template:PaginaPrincipale/Attualita/Avvenimenti in corso',
'Template:PaginaPrincipale/Attualita/Avvenimenti in corso/Taccuino',
'Template:PaginaPrincipale/Attualita/Situazione',
'Template:PaginaPrincipale/Attualita/Avvenimenti in corso/Archivio 2004',
'Template:PaginaPrincipale/Attualita/Avvenimenti in corso/Archivio 2005',
'Template:PaginaPrincipale/Attualita bozza',
'Template:PaginaPrincipale/Attualita/Avvenimenti futuri',
'Template:PaginaPrincipale/Attualita/Modello'
];
var api = new mw.Api();
api.get( {
action: 'query',
format: 'json',
generator: 'allpages',
gapprefix: 'PaginaPrincipale/Attualita',
gapnamespace: 10,
gaplimit: 'max',
prop: 'revisions',
rvprop: 'content'
} ).done( async function ( res ) {
for ( let pageID in res.query.pages ) {
let pageData = res.query.pages[pageID],
title = pageData.title,
content = pageData.revisions[0]['*'];
if ( SKIP_TITLES.indexOf( title ) > -1 ) {
continue;
}
updatePage( title, content );
await new Promise(r => setTimeout(r, 1000));
}
} );
function updatePage( title, content ) {
if ( !EDIT_RE.test( content ) ) {
// Già fatta.
return;
}
content = content.replace( EDIT_RE, REPLACEMENT_STR );
if ( content.match( LIST_REPLACE_RE ).length !== 3 ) {
console.error( content );
throw new Error( 'No list match: ' + title );
}
content = content.replace( LIST_REPLACE_RE, linkReplacer );
api.postWithEditToken( {
action: 'edit',
title: title,
text: content,
summary: 'Standardizzo pagina con [[Template:PaginaPrincipale/Attualita/Modello]]',
bot: true
} )
.done( function () {
console.log( 'Done: ' + title );
} )
.fail( function ( code, data ) {
console.error( 'Errore edit:', code, data );
} );
}
/* </nowiki> */