MediaWiki:Common.js: mudanças entre as edições
Aparência
Common.js limpo |
JS do design próprio da Wiki TokuDrive |
||
| Linha 1: | Linha 1: | ||
// | (function () { | ||
function url(title) { | |||
if (window.mw && mw.util) { | |||
return mw.util.getUrl(title); | |||
} | |||
return '/wiki/' + encodeURIComponent(title.replaceAll(' ', '_')); | |||
} | |||
function createHeader() { | |||
if (document.getElementById('td-custom-header')) return; | |||
var header = document.createElement('header'); | |||
header.id = 'td-custom-header'; | |||
var inner = document.createElement('div'); | |||
inner.className = 'td-header-inner'; | |||
var brand = document.createElement('a'); | |||
brand.className = 'td-brand'; | |||
brand.href = url('Página principal'); | |||
brand.title = 'Wiki TokuDrive'; | |||
var nav = document.createElement('nav'); | |||
nav.className = 'td-nav'; | |||
[ | |||
['Início', 'Página principal'], | |||
['Tokusatsu', 'Tokusatsu'], | |||
['Kamen Rider', 'Kamen Rider'], | |||
['Super Sentai', 'Super Sentai'], | |||
['Ultraman', 'Ultraman'], | |||
['Metal Heroes', 'Categoria:Metal Heroes'], | |||
['Kaiju', 'Kaiju'], | |||
['Godzilla', 'Godzilla'], | |||
['Recentes', 'Especial:Mudanças recentes'] | |||
].forEach(function (item) { | |||
var a = document.createElement('a'); | |||
a.href = url(item[1]); | |||
a.textContent = item[0]; | |||
nav.appendChild(a); | |||
}); | |||
var form = document.createElement('form'); | |||
form.className = 'td-search'; | |||
var input = document.createElement('input'); | |||
input.type = 'search'; | |||
input.placeholder = 'Pesquisar na Wiki TokuDrive'; | |||
var button = document.createElement('button'); | |||
button.type = 'submit'; | |||
button.textContent = 'Buscar'; | |||
form.appendChild(input); | |||
form.appendChild(button); | |||
form.addEventListener('submit', function (e) { | |||
e.preventDefault(); | |||
var q = input.value.trim(); | |||
window.location.href = url('Especial:Pesquisar') + (q ? '?search=' + encodeURIComponent(q) : ''); | |||
}); | |||
var user = document.createElement('a'); | |||
user.className = 'td-user-link'; | |||
user.href = url('Especial:Entrar'); | |||
user.textContent = 'Entrar'; | |||
if (window.mw && mw.config && mw.config.get('wgUserName')) { | |||
user.href = url('Especial:Minha página'); | |||
user.textContent = mw.config.get('wgUserName'); | |||
} | |||
inner.appendChild(brand); | |||
inner.appendChild(nav); | |||
inner.appendChild(form); | |||
inner.appendChild(user); | |||
header.appendChild(inner); | |||
document.body.insertBefore(header, document.body.firstChild); | |||
} | |||
function formatDate(iso) { | |||
try { | |||
return new Date(iso).toLocaleDateString('pt-BR', { | |||
day: '2-digit', | |||
month: 'short', | |||
year: 'numeric' | |||
}); | |||
} catch (e) { | |||
return ''; | |||
} | |||
} | |||
function latestPages() { | |||
var container = document.getElementById('td-latest-wikis'); | |||
if (!container) return; | |||
var api = (mw.config.get('wgScriptPath') || '') + '/api.php'; | |||
var endpoint = api | |||
+ '?action=query' | |||
+ '&format=json' | |||
+ '&list=recentchanges' | |||
+ '&rctype=new' | |||
+ '&rcnamespace=0' | |||
+ '&rcprop=title|timestamp' | |||
+ '&rclimit=12'; | |||
fetch(endpoint, { credentials: 'same-origin' }) | |||
.then(function (r) { return r.json(); }) | |||
.then(function (data) { | |||
var items = (((data || {}).query || {}).recentchanges || []) | |||
.filter(function (item) { | |||
return item.title && item.title !== 'Página principal'; | |||
}) | |||
.slice(0, 8); | |||
container.innerHTML = ''; | |||
if (!items.length) { | |||
container.innerHTML = '<div class="td-loading">Nenhuma wiki nova encontrada ainda.</div>'; | |||
return; | |||
} | |||
items.forEach(function (item) { | |||
var a = document.createElement('a'); | |||
a.className = 'td-latest-card'; | |||
a.href = url(item.title); | |||
a.innerHTML = | |||
'<div class="td-latest-label">Wiki criada/importada</div>' + | |||
'<div class="td-latest-title"></div>' + | |||
'<div class="td-latest-date">' + formatDate(item.timestamp) + '</div>'; | |||
a.querySelector('.td-latest-title').textContent = item.title; | |||
container.appendChild(a); | |||
}); | |||
}) | |||
.catch(function () { | |||
container.innerHTML = '<div class="td-loading">Não foi possível carregar as últimas wikis agora.</div>'; | |||
}); | |||
} | |||
function homeSearch() { | |||
var mount = document.getElementById('td-home-search'); | |||
if (!mount) return; | |||
var form = document.createElement('form'); | |||
form.className = 'td-home-search'; | |||
var input = document.createElement('input'); | |||
input.type = 'search'; | |||
input.placeholder = 'Pesquisar séries, filmes, personagens, kaijus e franquias'; | |||
var button = document.createElement('button'); | |||
button.type = 'submit'; | |||
button.textContent = 'Pesquisar'; | |||
form.appendChild(input); | |||
form.appendChild(button); | |||
form.addEventListener('submit', function (e) { | |||
e.preventDefault(); | |||
var q = input.value.trim(); | |||
window.location.href = url('Especial:Pesquisar') + (q ? '?search=' + encodeURIComponent(q) : ''); | |||
}); | |||
mount.innerHTML = ''; | |||
mount.appendChild(form); | |||
} | |||
function init() { | |||
if (window.mw && mw.loader) { | |||
mw.loader.using('mediawiki.util').then(function () { | |||
createHeader(); | |||
homeSearch(); | |||
latestPages(); | |||
}); | |||
} else { | |||
createHeader(); | |||
} | |||
} | |||
if (document.readyState === 'loading') { | |||
document.addEventListener('DOMContentLoaded', init); | |||
} else { | |||
init(); | |||
} | |||
})(); | |||
Edição das 00h18min de 29 de junho de 2026
(function () {
function url(title) {
if (window.mw && mw.util) {
return mw.util.getUrl(title);
}
return '/wiki/' + encodeURIComponent(title.replaceAll(' ', '_'));
}
function createHeader() {
if (document.getElementById('td-custom-header')) return;
var header = document.createElement('header');
header.id = 'td-custom-header';
var inner = document.createElement('div');
inner.className = 'td-header-inner';
var brand = document.createElement('a');
brand.className = 'td-brand';
brand.href = url('Página principal');
brand.title = 'Wiki TokuDrive';
var nav = document.createElement('nav');
nav.className = 'td-nav';
[
['Início', 'Página principal'],
['Tokusatsu', 'Tokusatsu'],
['Kamen Rider', 'Kamen Rider'],
['Super Sentai', 'Super Sentai'],
['Ultraman', 'Ultraman'],
['Metal Heroes', 'Categoria:Metal Heroes'],
['Kaiju', 'Kaiju'],
['Godzilla', 'Godzilla'],
['Recentes', 'Especial:Mudanças recentes']
].forEach(function (item) {
var a = document.createElement('a');
a.href = url(item[1]);
a.textContent = item[0];
nav.appendChild(a);
});
var form = document.createElement('form');
form.className = 'td-search';
var input = document.createElement('input');
input.type = 'search';
input.placeholder = 'Pesquisar na Wiki TokuDrive';
var button = document.createElement('button');
button.type = 'submit';
button.textContent = 'Buscar';
form.appendChild(input);
form.appendChild(button);
form.addEventListener('submit', function (e) {
e.preventDefault();
var q = input.value.trim();
window.location.href = url('Especial:Pesquisar') + (q ? '?search=' + encodeURIComponent(q) : '');
});
var user = document.createElement('a');
user.className = 'td-user-link';
user.href = url('Especial:Entrar');
user.textContent = 'Entrar';
if (window.mw && mw.config && mw.config.get('wgUserName')) {
user.href = url('Especial:Minha página');
user.textContent = mw.config.get('wgUserName');
}
inner.appendChild(brand);
inner.appendChild(nav);
inner.appendChild(form);
inner.appendChild(user);
header.appendChild(inner);
document.body.insertBefore(header, document.body.firstChild);
}
function formatDate(iso) {
try {
return new Date(iso).toLocaleDateString('pt-BR', {
day: '2-digit',
month: 'short',
year: 'numeric'
});
} catch (e) {
return '';
}
}
function latestPages() {
var container = document.getElementById('td-latest-wikis');
if (!container) return;
var api = (mw.config.get('wgScriptPath') || '') + '/api.php';
var endpoint = api
+ '?action=query'
+ '&format=json'
+ '&list=recentchanges'
+ '&rctype=new'
+ '&rcnamespace=0'
+ '&rcprop=title|timestamp'
+ '&rclimit=12';
fetch(endpoint, { credentials: 'same-origin' })
.then(function (r) { return r.json(); })
.then(function (data) {
var items = (((data || {}).query || {}).recentchanges || [])
.filter(function (item) {
return item.title && item.title !== 'Página principal';
})
.slice(0, 8);
container.innerHTML = '';
if (!items.length) {
container.innerHTML = '<div class="td-loading">Nenhuma wiki nova encontrada ainda.</div>';
return;
}
items.forEach(function (item) {
var a = document.createElement('a');
a.className = 'td-latest-card';
a.href = url(item.title);
a.innerHTML =
'<div class="td-latest-label">Wiki criada/importada</div>' +
'<div class="td-latest-title"></div>' +
'<div class="td-latest-date">' + formatDate(item.timestamp) + '</div>';
a.querySelector('.td-latest-title').textContent = item.title;
container.appendChild(a);
});
})
.catch(function () {
container.innerHTML = '<div class="td-loading">Não foi possível carregar as últimas wikis agora.</div>';
});
}
function homeSearch() {
var mount = document.getElementById('td-home-search');
if (!mount) return;
var form = document.createElement('form');
form.className = 'td-home-search';
var input = document.createElement('input');
input.type = 'search';
input.placeholder = 'Pesquisar séries, filmes, personagens, kaijus e franquias';
var button = document.createElement('button');
button.type = 'submit';
button.textContent = 'Pesquisar';
form.appendChild(input);
form.appendChild(button);
form.addEventListener('submit', function (e) {
e.preventDefault();
var q = input.value.trim();
window.location.href = url('Especial:Pesquisar') + (q ? '?search=' + encodeURIComponent(q) : '');
});
mount.innerHTML = '';
mount.appendChild(form);
}
function init() {
if (window.mw && mw.loader) {
mw.loader.using('mediawiki.util').then(function () {
createHeader();
homeSearch();
latestPages();
});
} else {
createHeader();
}
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', init);
} else {
init();
}
})();