|
|
| (17 revisões intermediárias pelo mesmo usuário não estão sendo mostradas) |
| Linha 1: |
Linha 1: |
| (function () {
| | // Sem JavaScript visual customizado. |
| function applyTheme(theme) {
| |
| document.documentElement.setAttribute('data-td-theme', theme);
| |
| localStorage.setItem('tdTheme', theme);
| |
| | |
| var btn = document.getElementById('td-theme-toggle');
| |
| if (btn) {
| |
| btn.textContent = theme === 'dark' ? '☀️ Claro' : '🌙 Escuro';
| |
| }
| |
| }
| |
| | |
| function getTheme() {
| |
| var saved = localStorage.getItem('tdTheme');
| |
| if (saved === 'dark' || saved === 'light') {
| |
| return saved;
| |
| }
| |
| | |
| if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) {
| |
| return 'dark';
| |
| }
| |
| | |
| return 'light';
| |
| }
| |
| | |
| function mountThemeButton() {
| |
| if (document.getElementById('td-theme-toggle')) {
| |
| return;
| |
| }
| |
| | |
| var btn = document.createElement('button');
| |
| btn.id = 'td-theme-toggle';
| |
| btn.type = 'button';
| |
| btn.addEventListener('click', function () {
| |
| var active = document.documentElement.getAttribute('data-td-theme') || 'light';
| |
| applyTheme(active === 'dark' ? 'light' : 'dark');
| |
| });
| |
| | |
| document.body.appendChild(btn);
| |
| applyTheme(getTheme());
| |
| }
| |
| | |
| function mountSearch() {
| |
| var mount = document.getElementById('td-home-search');
| |
| if (!mount) {
| |
| return;
| |
| }
| |
| | |
| var form = document.createElement('form');
| |
| form.className = 'td-search-form';
| |
| | |
| var input = document.createElement('input');
| |
| input.className = 'td-search-input';
| |
| input.type = 'search';
| |
| input.placeholder = 'Pesquisar séries, filmes, personagens e franquias';
| |
| input.autocomplete = 'off';
| |
| | |
| var button = document.createElement('button');
| |
| button.className = 'td-search-button';
| |
| button.type = 'submit';
| |
| button.textContent = 'Pesquisar';
| |
| | |
| form.appendChild(input);
| |
| form.appendChild(button);
| |
| | |
| form.addEventListener('submit', function (event) {
| |
| event.preventDefault();
| |
| var q = input.value.trim();
| |
| | |
| if (!q) {
| |
| window.location.href = mw.util.getUrl('Especial:Pesquisar');
| |
| return;
| |
| }
| |
| | |
| window.location.href = mw.util.getUrl('Especial:Pesquisar') + '?search=' + encodeURIComponent(q);
| |
| });
| |
| | |
| mount.innerHTML = '';
| |
| mount.appendChild(form);
| |
| }
| |
| | |
| function formatDate(iso) {
| |
| try {
| |
| return new Date(iso).toLocaleDateString('pt-BR', {
| |
| day: '2-digit',
| |
| month: 'short',
| |
| year: 'numeric'
| |
| });
| |
| } catch (e) {
| |
| return '';
| |
| }
| |
| }
| |
| | |
| function mountLatestWikis() {
| |
| var container = document.getElementById('td-latest-wikis');
| |
| if (!container) {
| |
| return;
| |
| }
| |
| | |
| var api = (mw.config.get('wgScriptPath') || '') + '/api.php';
| |
| var url = api
| |
| + '?action=query'
| |
| + '&format=json'
| |
| + '&list=recentchanges'
| |
| + '&rctype=new'
| |
| + '&rcnamespace=0'
| |
| + '&rcprop=title|timestamp'
| |
| + '&rclimit=12';
| |
| | |
| fetch(url, { credentials: 'same-origin' })
| |
| .then(function (res) { return res.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) {
| |
| var empty = document.createElement('div');
| |
| empty.className = 'td-loading';
| |
| empty.textContent = 'Nenhuma página nova encontrada ainda.';
| |
| container.appendChild(empty);
| |
| return;
| |
| }
| |
| | |
| items.forEach(function (item) {
| |
| var a = document.createElement('a');
| |
| a.className = 'td-latest-card';
| |
| a.href = mw.util.getUrl(item.title);
| |
| | |
| var label = document.createElement('div');
| |
| label.className = 'td-latest-label';
| |
| label.textContent = 'Wiki criada/importada';
| |
| | |
| var title = document.createElement('div');
| |
| title.className = 'td-latest-title';
| |
| title.textContent = item.title;
| |
| | |
| var date = document.createElement('div');
| |
| date.className = 'td-latest-date';
| |
| date.textContent = formatDate(item.timestamp);
| |
| | |
| a.appendChild(label);
| |
| a.appendChild(title);
| |
| a.appendChild(date);
| |
| | |
| container.appendChild(a);
| |
| });
| |
| })
| |
| .catch(function () {
| |
| container.innerHTML = '<div class="td-loading">Não foi possível carregar as últimas wikis agora.</div>';
| |
| });
| |
| }
| |
| | |
| function init() {
| |
| applyTheme(getTheme());
| |
| mountThemeButton();
| |
| | |
| mw.loader.using('mediawiki.util').then(function () {
| |
| mountSearch();
| |
| mountLatestWikis();
| |
| });
| |
| }
| |
| | |
| if (document.readyState === 'loading') {
| |
| document.addEventListener('DOMContentLoaded', init);
| |
| } else {
| |
| init();
| |
| }
| |
| })();
| |