![]() |
VOOZH | about |
Note: After saving, you have to bypass your browser's cache to see the changes.
Google Chrome, Firefox, Microsoft Edge, and Safari: Hold down the key and click the Reload toolbar button.
For details and instructions about other browsers, see Wikipedia:Bypass your cache.
/** * Scripts placed here are loaded for all skins on the desktop view * * Global scripts which should be loaded on both desktop and mobile should go in * [[MediaWiki:Gadget-site.js]] * Mobile-only scripts should go in [[MediaWiki:Minerva.js]] */ (function(){ 'use strict'; /* Variables for interface text used throughout the script, for ease of translating */ vari18n={ // File upload defaultLicense:'License', more_results:'And $1 other open issues.', no_results:'No open issues found.', projects:{ bds:'Bedrock Dedicated Server', mc:'Java Edition', mcd:'Minecraft Dungeons', mcl:'Launcher', mclg:'Minecraft Legends', mcpe:'Bedrock Edition', realms:'Realms', web:'Mojang Web Services' } }; /* Fires when DOM is ready */ $(function(){ /** * Pause animations on mouseover of a designated container (.animated-container and .mcui) * * This is so people have a chance to look at the image and click on pages they want to view. */ $('#mw-content-text').on('mouseenter mouseleave','.animated-container, .mcui',function(e){ $(this).find('.animated').toggleClass('animated-paused',e.type==='mouseenter'); }); /** * Fix edit summary prompt for undo * * Fixes the fact that the undo function combined with the "no edit summary prompter" * causes problems if leaving the edit summary unchanged. * Added by [[wikipedia:User:Deskana]], code by [[wikipedia:User:Tra]]. * See https://bugzilla.wikimedia.org/show_bug.cgi?id=8912 */ if(document.location.search.indexOf("undo=")!==-1&&document.getElementsByName('wpAutoSummary')[0]){ document.getElementsByName('wpAutoSummary')[0].value='1'; } /** * Make simple search suggestions box separately styled */ /*mw.loader.using( 'mediawiki.searchSuggest', function() { setTimeout( function() { $( '.suggestions:first' ).addClass( 'searchbar' ); } ); } );*/ /** * Set unlicensed as the default license on file pages * * That way the file will be categorised so someone can find a license for the file */ if(mw.config.get('wgCanonicalSpecialPageName')==='Upload'){ var$license=$('#wpLicense'); if($license.length){ if(!$license.val()){ $license.val(i18n.defaultLicense); } mw.loader.using('mediawiki.special.upload',function(){ setTimeout(function(){ $license.change(); }); }); } } /** * Creates minecraft style tooltips * * Replaces normal tooltips. Supports minecraft [[formatting codes]] (except k), and a description with line breaks (/). */ (function(){ varescapeChars={'\\&':'&','<':'<','>':'>'}; varescape=function(text){ // "\" must be escaped first returntext.replace(/\\\\/g,'\') .replace(/\\&|[<>]/g,function(char){returnescapeChars[char];}); }; var$tooltip=$(); var$win=$(window),winWidth,winHeight,width,height; $('#mw-content-text').on({ 'mouseenter.minetip':function(e){ $tooltip.remove(); var$elem=$(this),title=$elem.attr('data-minetip-title'); if(title===undefined){ title=$elem.attr('title'); if(title!==undefined){ title=$.trim(title.replace(/&/g,'\\&')); $elem.attr('data-minetip-title',title); } } // No title or title only contains formatting codes if(title===undefined||title!==''&&title.replace(/&([0-9a-jl-qs-vyzr]|#[0-9a-fA-F]{6}|\$[0-9a-fA-F]{3})/g,'')===''){ // Find deepest child title varchildElem=$elem[0],childTitle; do{ if(childElem.hasAttribute('title')){ childTitle=childElem.title; } childElem=childElem.firstChild; }while(childElem&&childElem.nodeType===1); if(childTitle===undefined){ return; } // Append child title as title may contain formatting codes if(!title){ title=''; } title+=$.trim(childTitle.replace(/&/g,'\\&')); // Set the retrieved title as data for future use $elem.attr('data-minetip-title',title); } if(!$elem.data('minetip-ready')){ // Remove title attributes so the native tooltip doesn't get in the way $elem.find('[title]').addBack().removeAttr('title'); $elem.data('minetip-ready',true); } if(title===''){ return; } varcontent='<span class="minetip-title">'+escape(title)+'&r</span>'; vardescription=$.trim($elem.attr('data-minetip-text')); if(description){ // Apply normal escaping plus "/" description=escape(description).replace(/\\\//g,'/'); content+='<span class="minetip-description">'+description.replace(/\//g,'<br>')+'&r</span>'; } // Add classes for minecraft formatting codes while(content.search(/&(?:[0-9a-jl-qs-vyz]|#[0-9a-fA-F]{6}|\$[0-9a-fA-F]{3})/)>-1){ content=content.replace(/&([0-9a-jl-qs-vyz])(.*?)(&r|$)/g,'<span class="format-$1">$2</span>&r'); content=content.replace(/&(?:#([0-9a-fA-F]{6})|\$([0-9a-fA-F]{3}))(.*?)(&r|$)/g,'<span class="format-custom" style="color: #$1$2;">$3</span>&r'); } // Remove reset formatting content=content.replace(/&r/g,''); $tooltip=$('<div id="minetip-tooltip">'); $tooltip.html(content).appendTo('body'); // Cache current window and tooltip size winWidth=$win.width(); winHeight=$win.height(); width=$tooltip.outerWidth(true); height=$tooltip.outerHeight(true); // Trigger a mouse movement to position the tooltip $elem.trigger('mousemove',e); }, 'mousemove.minetip':function(e,trigger){ if(!$tooltip.length){ $(this).trigger('mouseenter'); return; } // Get event data from remote trigger e=trigger||e; // Get mouse position and add default offsets vartop=e.clientY-34; varleft=e.clientX+14; // If going off the right of the screen, go to the left of the cursor if(left+width>winWidth){ left-=width+36; } // If now going off to the left of the screen, resort to going above the cursor if(left<0){ left=0; top-=height-22; // Go below the cursor if too high if(top<0){ top+=height+47; } // Don't go off the top of the screen }elseif(top<0){ top=0; // Don't go off the bottom of the screen }elseif(top+height>winHeight){ top=winHeight-height; } // Apply the positions $tooltip.css({top:top,left:left}); }, 'mouseleave.minetip':function(){ if(!$tooltip.length){ return; } $tooltip.remove(); $tooltip=$(); } },'.minetip, .invslot-item'); }()); /* [[Template:Issue list]] commented out until we find out a way to query Mojira API more reliably - dian */ // mw.hook( 'wikipage.content' ).add( function( $content ) { // $content.find('.issue-list').each( function() { // let issueList = $(this); // let apiRequests = []; // for (let project in this.dataset) { // let url = new URL('https://tools.minecraft.wiki/jigsaw/mojira'); // url.searchParams.set('project', project.toUpperCase()); // url.searchParams.set('jql', this.dataset[project]); // delete this.dataset[project]; // let apiRequest = $.ajax( url.href ); // apiRequests.push( apiRequest.then( function( search ) { // if ( search.errors ) return Promise.reject(search.errorMessages); // let issueList = $('<ul>'); // if ( search.issues.length ) { // issueList.append( search.issues.map( function( issue ) { // let issueLink = $('<a class="extiw">').attr('href', 'https://bugs.mojang.com/browse/' + issue.key).attr('title', 'mojira:' + issue.key).text(issue.key); // return $('<li>').text(' – ' + ( issue.fields.resolution ? '[' + issue.fields.resolution.name + '] ' : '' ) + issue.fields.summary).prepend(issueLink); // } ) ); // if ( search.total > search.issues.length ) $('<li>').text( mw.format(i18n.more_results, search.total - search.issues.length) ).appendTo( issueList ); // } // else $('<li>').text( i18n.no_results ).appendTo( issueList ); // return { project, list: issueList }; // } ) ); // } // if ( apiRequests.length ) Promise.allSettled( apiRequests ).then( function( results ) { // results.filter( result => result.status === 'rejected' ).forEach( result => console.warn('Mojira:', result.reason) ); // if ( results.length === 1 ) { // if ( results[0].status === 'fulfilled' ) issueList.append( results[0].value.list ); // return; // } // issueList.append( // results.filter( result => result.status === 'fulfilled' ).map( result => result.value ).flatMap( function( result ) { // return [ // $('<p>').append( $('<b>').text( i18n.projects[result.project] || result.project.toUpperCase() ) ), // result.list // ]; // } ) // ); // } ); // } ); // } ); // Dismissible alert mw.hook('wikipage.content').add(($content)=>{ $content.find('.dismissible-alert').each((_,/** @type {HTMLTimeElement} */element)=>{ if(!element.dataset.alertid)return; if(!localStorage.getItem(`dismissed-alert-${element.dataset.alertid}`)){ element.style.display=''; } // dismiss button element.querySelector('.dismissible-alert-dismiss').addEventListener('click',()=>{ localStorage.setItem(`dismissed-alert-${element.dataset.alertid}`,true); element.style.display='none'; }); }); }); // Avoid redirecting for links in categories $('.ns-14 .redirect-in-category .mw-redirect').each(function(){ this.href+=(this.href.includes('?')?'&':'?')+'redirect=no'; }); // Main page random fact constbutton=document.querySelector('#mp-dyk-button'); constdykTransitionDurationMs=200; if(button){ button.addEventListener('click',()=>{ $('#mp-dyk-fact').css('height',$('#mp-dyk-fact > *').height()+'px').addClass('loading'); newmw.Api().parse(`{{DidYouKnow|count=3|random=1|type=${button.dataset.dykType}}}`,{ prop:'text', disablelimitreport:1, requestid:'mp-dyk' }).then((content)=>{ setTimeout(()=>{ $('#mp-dyk-fact').html(content); $('#mp-dyk-fact').css('height',$('#mp-dyk-fact > *').height()+'px'); setTimeout(()=>$('#mp-dyk-fact').removeClass('loading'),dykTransitionDurationMs); },dykTransitionDurationMs); }); }); } constportal=document.querySelector('.mp-portal-wrapper'); if(portal){ constthisPage=portal.querySelector('.mp-portal-active'); portal.addEventListener('click',(event)=>{ if(!event.target.closest('a'))return; constisNewTab=event.ctrlKey||event.metaKey; if(isNewTab)return; if(thisPage)thisPage.classList.remove('mp-portal-active'); event.target.closest('.mp-portal').classList.add('mp-portal-active'); }); document.addEventListener('visibilitychange',()=>{ if(document.visibilityState==='visible'){ portal.querySelector('.mp-portal-active').classList.remove('mp-portal-active'); thisPage.classList.add('mp-portal-active'); } }); } constlogoLinks=[ document.querySelector("a.mw-wiki-logo, header .branding-box a"), document.querySelector('a.toggle-list-item__anchor[href="/"]') ].filter(l=>l); if(logoLinks.length!==0){ constnamespace=mw.config.get("wgNamespaceNumber")-mw.config.get("wgNamespaceNumber")%2; letlink={ 10000:'/w/Dungeons:Wiki', 10002:'/w/Earth:Wiki', 10004:'/w/Story_Mode:Wiki', 10006:'/w/Legends:Wiki', 10012:'/w/Movie:Wiki', 10014:'/w/Dungeons:Wiki', }[namespace]; if(link){ for(constlogoLinkoflogoLinks){ logoLink.href=link; } } } }); /* End DOM ready */ }());