|
|
| Linha 1: |
Linha 1: |
| (function () {
| | // Wiki TokuDrive - JS limpo. |
| function removeMenusAndOldBars() {
| | // Os scripts de menus customizados foram removidos. |
| var selectors = [
| |
| '#td-topbar',
| |
| '#td-global-topnav',
| |
| '#mw-panel',
| |
| '#mw-navigation',
| |
| '#mw-head',
| |
| '#mw-page-base',
| |
| '#p-logo',
| |
| '#p-navigation',
| |
| '#p-tb',
| |
| '#p-lang',
| |
| '#p-interaction',
| |
| '#p-cactions',
| |
| '#p-personal',
| |
| '#siteNotice',
| |
| '.mw-sidebar',
| |
| '.mw-portlet',
| |
| '.vector-sidebar-container',
| |
| '.vector-main-menu',
| |
| '.vector-main-menu-landmark',
| |
| '.vector-column-start',
| |
| '.vector-toc-landmark',
| |
| '.vector-page-toolbar',
| |
| '.vector-sticky-header',
| |
| '.citizen-header',
| |
| '.citizen-header-container',
| |
| '.citizen-header__inner',
| |
| '.citizen-header__start',
| |
| '.citizen-header__end',
| |
| '.citizen-header__button',
| |
| '.citizen-drawer',
| |
| '.citizen-drawer__card',
| |
| '.citizen-sidebar',
| |
| '.citizen-page-sidebar',
| |
| '.citizen-toc',
| |
| '.citizen-search',
| |
| '.citizen-search-box',
| |
| '.citizen-page-header',
| |
| '.citizen-page-header__actions',
| |
| '.citizen-page-actions',
| |
| '.citizen-sticky-header',
| |
| '.citizen-footer',
| |
| '.mw-footer',
| |
| '#footer'
| |
| ];
| |
| | |
| selectors.forEach(function (selector) {
| |
| document.querySelectorAll(selector).forEach(function (el) {
| |
| el.remove();
| |
| });
| |
| });
| |
| | |
| if (document.body.classList.contains('page-Página_principal')) {
| |
| document.querySelectorAll('.catlinks, #catlinks, .printfooter, .mw-indicators').forEach(function (el) {
| |
| el.remove();
| |
| });
| |
| }
| |
| }
| |
| | |
| 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;
| |
| return 'dark';
| |
| }
| |
| | |
| 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') || 'dark';
| |
| applyTheme(active === 'dark' ? 'light' : 'dark');
| |
| });
| |
| | |
| document.body.appendChild(btn);
| |
| applyTheme(getTheme());
| |
| }
| |
| | |
| function mountHomeSearch() {
| |
| 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();
| |
| window.location.href = mw.util.getUrl('Especial:Pesquisar') + (q ? '?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=16';
| |
| | |
| 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());
| |
| | |
| mw.loader.using('mediawiki.util').then(function () {
| |
| removeMenusAndOldBars();
| |
| mountThemeButton();
| |
| mountHomeSearch();
| |
| mountLatestWikis();
| |
| | |
| setTimeout(removeMenusAndOldBars, 100);
| |
| setTimeout(removeMenusAndOldBars, 500);
| |
| setTimeout(removeMenusAndOldBars, 1200);
| |
| setTimeout(removeMenusAndOldBars, 2500);
| |
| });
| |
| }
| |
| | |
| if (document.readyState === 'loading') {
| |
| document.addEventListener('DOMContentLoaded', init);
| |
| } else {
| |
| init();
| |
| }
| |
| })();
| |