In altre lingue: Deutsch • English • Español • Français • Polski • Português do Brasil • Русский •
Le modifiche ai file CSS e Javascript devono essere conformi alle regole di design del wiki.
Nota: dopo aver salvato, potrebbe essere necessario pulire la cache del proprio browser per vedere i cambiamenti.
- Firefox / Safari: tenere premuto il tasto delle maiuscole Shift e fare clic su Ricarica, oppure premere Ctrl-F5 o Ctrl-R (⌘-R su Mac)
- Google Chrome: premere Ctrl-Shift-R (⌘-Shift-R su un Mac)
- Internet Explorer: tenere premuto il tasto Ctrl e fare clic su Aggiorna, oppure premere Ctrl-F5
- Opera: svuotare completamente la cache dal menu Strumenti → Preferenze
/* Any JavaScript here will be loaded for all users on every page load. */
( function() {
'use strict';
// copy to clipboard
$(function() { // wait for content load (DOMContentLoaded)
$('.copy-clipboard').each(function () {
var $this = $(this);
var $button = $('<button title="Copia negli appunti"></button>');
$this.append($button);
$button.click(function () {
var $content = $this.find('.copy-content');
$content.children().remove();
selectElementText($content[0]);
try {
if (!document.execCommand('copy'))
throw 42;
mw.notify('Successfully copied to Clipboard.');
} catch (err) {
mw.notify('Copy to Clipboard failed. Please do it yourself.', {type:'error'});
}
});
});
});
function selectElementText(element) {
var range, selection;
if (document.body.createTextRange) {
range = document.body.createTextRange();
range.moveToElementText(element);
range.select();
} else if (window.getSelection) {
selection = window.getSelection();
range = document.createRange();
range.selectNodeContents(element);
selection.removeAllRanges();
selection.addRange(range);
}
}
// load js for calculating wild creature level stats
if(document.getElementById('wildStatCalc')){
mw.loader.load('/index.php?title=MediaWiki:WildCreatureStats.js&action=raw&ctype=text/javascript','text/javascript',false);
}
// redirect to language version if url contains querystring iwredirect (for Dododex)
$(function() {
var match = location.search.match(/iwredirect=([^;&]*)/);
if (match && match[1]) {
var $langlink = $('.interlanguage-link-target[hreflang="' + encodeURIComponent(match[1]) + '"]');
if ($langlink && $langlink[0] && $langlink[0].href) {
window.location.replace($langlink[0].href);
}
}
});
/* Variables for interface text used throughout the script, for ease of translating */
var i18n = {
// Collapsible elements and page loader
hideText: 'hide',
showText: 'show',
// Page loader
loadErrorTitle: 'An error occurred loading the content'
};
/* Fired whenever wiki content is added. (#mw-content-text, live preview, load page, etc.) */
mw.hook( 'wikipage.content' ).add( function( $wikipageContent ) {
/**
* Collapsible elements
*
* Add the "collapsible" class to an element and the child element with class "collapsible-content"
* (or everything but the header row if a table) will be hidden when the element is collapsed.
*
* * Add the class "collapsed" to the element to make it start out collapsed.
* * Add either "collapsetoggle-left" or "collapsetoggle-inline" to the element to choose the collapse
* toggle alignment (defaults to right).
* * Add an ID in the format of "collapsible-<x>" to the element to make any element with the class
* "collapsetoggle-custom" and a matching class in the format of "collapsible-<x>-toggle" control
* the collapsing instead of the standard button.
* If the custom toggle contains an element with the "jslink" class, only that will be clickable.
*/
( function() {
var $collapsibles = $wikipageContent.find( '.collapsible' );
if ( !$collapsibles.length ) {
return;
}
var $toggleTemplate = $( '<span>' ).addClass( 'collapsetoggle' ).append(
$( '<button>' ).addClass( 'jslink' )
);
$collapsibles.each( function() {
var $collapsible = $( this );
if ( $collapsible.data( 'made-collapsible' ) ) {
return true;
}
var $children = $collapsible.children();
var showText = $collapsible.data( 'expandtext' ) || i18n.showText;
var hideText = $collapsible.data( 'collapsetext' ) || i18n.hideText;
// If there is no content area, add it
if ( !$collapsible.is( 'table' ) && !$children.filter( '.collapsible-content' ).length ) {
if ( $collapsible.is( 'tr' ) ) {
$children.addClass( 'collapsible-content' );
} else {
$collapsible.wrapInner( '<div class="collapsible-content">' );
}
}
var $toggle;
var id = $collapsible.attr( 'id' );
if ( id && id.match( /^collapsible-./ ) ) {
$toggle = $( $wikipageContent[0].getElementsByClassName( id + '-toggle' ) )
.filter( '.collapsetoggle-custom' ).css( 'visibility', 'visible' );
}
// Create and insert the toggle button if there is no custom one
if ( !$toggle || !$toggle.length ) {
var $toggleContainer;
if ( $collapsible.is( 'table' ) ) {
var $rows = $children.filter( 'thead' ).children();
if ( !$rows.length ) {
$rows = $children.filter( 'tbody' ).first().children();
if ( !$rows.length ) {
$rows = $children.filter( 'tr' );
}
}
$toggleContainer = $rows.first().children().last();
} else {
$toggleContainer = $children.first();
if ( $toggleContainer.hasClass( 'collapsible-content' ) ) {
$toggleContainer = $collapsible;
}
}
$toggle = $toggleTemplate.clone();
if ( $collapsible.hasClass( 'collapsetoggle-inline' ) || $collapsible.hasClass( 'collapse-button-none' ) ) {
$toggleContainer.append( $toggle );
} else {
$toggleContainer.prepend( $toggle );
}
}
var $toggleLink = $toggle.find( '.jslink' );
if ( !$toggleLink.length ) {
$toggleLink = $toggle;
}
$toggleLink.attr( 'tabindex', 0 ).text( hideText );
// Find max toggle size, and set its min-width to it
var hideWidth = $toggle.width();
$toggleLink.text( showText );
var showWidth = $toggle.width();
if ( hideWidth !== showWidth ) {
$toggle.css( 'min-width', hideWidth > showWidth ? hideWidth : showWidth );
}
// Set the text back to hide if it's not collapsed to begin with
if ( !$collapsible.hasClass( 'collapsed' ) ) {
$toggleLink.text( hideText );
}
$toggleLink.on( 'click keydown', function( e ) {
// Only trigger on enter press
if ( e.keyCode && e.keyCode !== 13 ) {
return;
}
// Don't toggle when clicking buttons or links inside the toggle
var $target = $( e.target );
if ( $target.is( 'button' ) || $target.is( 'a' ) ) {
return;
}
$collapsible.toggleClass( 'collapsed' );
if ( $collapsible.hasClass( 'collapsed' ) ) {
$toggleLink.text( showText );
} else {
$toggleLink.text( hideText );
}
// Stop table sorting activating when clicking the link
e.stopPropagation();
} );
$collapsible.data( 'made-collapsible', true );
} );
}() );
/**
* Page loader
*
* Allows a page to be downloaded and displayed on demand.
* Use with [[Template:LoadPage]] and [[Template:LoadBox]]
*/
( function() {
var $loadPage = $wikipageContent.find( '.load-page' );
if ( !$loadPage.length ) {
return;
}
// We need the spinner to show loading is happening, but we don't want
// to have a delay while the module downloads, so we'll load this now,
// regardless of if something is clicked
mw.loader.load( 'jquery.spinner' );
// Create button starting with hide text
// Will be changed to the show text while calculating the maximum button size
var $buttonTemplate = $( '<span>' ).addClass( 'mw-editsection-like load-page-button' )
.append($( '<button>' ).addClass( 'jslink' ).text( i18n.hideText ));
var extractList = function( $contentContainer, listClass ) {
var $content = $contentContainer.find( '> ul > li > ul' ).children( ':not(.nbttree-inherited)' );
if ( listClass ) {
$content.addClass( listClass );
}
return $content;
};
$loadPage.each( function() {
var $body = $( this );
var page = $body.data( 'page' );
if ( !page ) {
return;
}
var template = $body.data( 'template' );
var treeview = $body.data( 'treeview' );
var treeviewClass = $body.data( 'treeviewclass' );
var $heading;
var $contentContainer;
var $content;
var $button = $buttonTemplate.clone();
var $buttonLink = $button.find( '.jslink' );
if ( treeview ) {
$heading = $body;
$contentContainer = $( '<div>' );
} else {
$heading = $body.children().first();
$contentContainer = $body.find( '.load-page-content' );
}
// Add the button
$heading.append( $button );
// Move the edit button to the right spot
$contentContainer.find( '.mw-editsection, .mw-editsection-like' ).insertAfter( $button );
// Find max button width, and set its min-width to it
var hideWidth = $button.width();
$buttonLink.text( i18n.showText );
var showWidth = $button.width();
if ( hideWidth !== showWidth ) {
$button.css( 'min-width', hideWidth > showWidth ? hideWidth : showWidth );
}
$contentContainer.empty();
$buttonLink.click( function() {
if ( $body.hasClass( 'pageloader-contentloaded' ) ) {
if ( $buttonLink.text() === i18n.showText ) {
if ( treeview ) {
$content.insertAfter( $body );
} else {
$contentContainer.show();
}
$buttonLink.text( i18n.hideText );
} else {
if ( treeview ) {
$content.detach();
} else {
$contentContainer.hide();
}
$buttonLink.text( i18n.showText );
}
return;
}
// See if this was loaded elsewhere before making a request
var gotContent;
$( '.pageloader-contentloaded' ).each( function() {
var $fLoader = $( this );
if ( $fLoader.data( 'page' ) === page && $fLoader.data( 'pageloader-content' ) ) {
$contentContainer.html( $fLoader.data( 'pageloader-content' ) ).removeClass( 'noscript' );
mw.hook( 'wikipage.content' ).fire( $contentContainer );
if ( treeview ) {
$body.find( '.noscript' ).remove();
$content = extractList( $contentContainer, treeviewClass );
$content.insertAfter( $body );
}
$buttonLink.text( i18n.hideText );
$body.addClass( 'pageloader-contentloaded' );
gotContent = true;
return false;
}
} );
if ( gotContent ) {
return;
}
// Just in-case the spinner module is still not ready yet
var $spinner = $();
mw.loader.using( 'jquery.spinner', function() {
// $spinner will be false if the content somehow loaded before the module did
if ( $spinner ) {
$spinner = $.createSpinner().addClass( 'mw-editsection-like' )
.css( 'min-width', $button.css( 'min-width' ) );
$button.hide().after( $spinner );
}
} );
var requestData = {
action: 'parse',
prop: 'text'
};
if ( template ) {
requestData.page = page;
} else {
requestData.title = mw.config.get( 'wgPageName' );
requestData.text = '{' + '{:' + page + '}}';
}
new mw.Api().get( requestData ).done( function( data ) {
var html = data.parse.text['*'];
$contentContainer.html( html ).removeClass( 'noscript' );
// Resolve self-links
if ( template ) {
var curPage = '/' + mw.config.get( 'wgPageName' );
$contentContainer.find( 'a' ).each( function() {
var $link = $( this );
if ( $link.attr( 'href' ) === curPage ) {
$link.replaceWith( $( '<strong>' ).addClass( 'selflink' ).append( $link.contents() ) );
}
} );
html = $contentContainer.html();
}
$body.data( 'pageloader-content', html );
// Fire content hook on the new content, running all this stuff again and more :)
mw.hook( 'wikipage.content' ).fire( $contentContainer );
if ( treeview ) {
$body.find( '.noscript' ).remove();
$content = extractList( $contentContainer, treeviewClass );
$content.insertAfter( $body );
}
$spinner.remove();
$spinner = false;
$buttonLink.text( i18n.hideText );
$button.show();
$body.addClass( 'pageloader-contentloaded' );
} ).fail( function( _, error ) {
$spinner.remove();
$spinner = false;
$button.show();
var errorText = '';
if ( error.textStatus ) {
errorText = error.textStatus;
} else if ( error.error ) {
errorText = error.error.info;
}
mw.notify( errorText, { title: i18n.loadErrorTitle, autoHide: false } );
} );
} );
} );
}() );
} );
/* End wikipage.content hook */
}() );
/* for Module:layerMap to toggle visibility of the layers */
$(".layerMapToggleButton").click(function(){
var id = $(this).attr('data-forid');
$('#' + id).toggle();
});
/**
* Grid Filtering
*
* Adds filter options to [[Template:Nav creatures/New]].
*
* Javascript: Karol "[[User:Nanaki]]" Dylewski
* License: CC-BY-SA 3.0
*
* ARK Compatibility: [[User:3mptylord]].
*/
mw.loader.using( ['mediawiki.util', 'jquery.client'], function () {
/* Config for gridFiltering */
gridContainer = '#creature-grid';
gridFilters = {
'creature': 'search',
'map': [ '- Mappa -',
['The Island','The Island'],
['Scorched Earth','Scorched Earth'],
['The Center','The Center'],
['Ragnarok','Ragnarok'],
['Aberration','Aberration'],
['Extinction','Extinction'],
['Mobile','Mobile'],
['Mancante','Mancante'],
['Non rilasciata','Non rilasciata'],
],
'group': [ '- Gruppo -',
['Predatori alfa','Predatori alfa'],
['Anfibi','Anfibi'],
['Uccelli','Uccelli'],
['Boss','Boss'],
['Dinosauri','Dinosauri'],
['Creature inferocite','Creature inferocite'],
['Creature evento','Creature evento'],
['Fantastici','Fantastici'],
['Pesci','Pesci'],
['Invertebrati','Invertebrati'],
['Mammiferi','Mammiferi'],
['Meccanici','Meccanici'],
['Rettili','Rettili'],
['Sinapsidi','Sinapsidi'],
['Creature Tek','Creature Tek'],
['Titani','Titani'],
],
'habitat': [ '- Habitat -',
['Arboreo','Arboreo (Alberi)'],
['Aereo','Aereo'],
['Acquatico','Acquatico'],
['Fossorio','Fossorio (Scavatore)'],
['Terrestre','Terrestre'],
['Sotterraneo','Sotterraneo'],
['Boss','Boss (Evocati)'],
],
'diet': [ '- Dieta -',
['Carnivoro','Carnivori'],
['Piscivoro','Piscivori'],
['Erbivoro','Erbivori'],
['Onnivoro','Onnivori'],
['Necrofago','Necrofagi'],
['Coprofago', 'Coprofagi'],
['Ematofago', 'Ematofagi'],
['Mangiafiamme', 'Mangiafiamme'],
['Minerali', 'Minerali'],
['Spazzino dei fondali', 'Spazzini dei fondali'],
['Ghiotto di dolci', 'Ghiotti di dolci'],
],
};
/* End of mw.loader.using callback */
});
( function( $ ) {
function gridFiltering() {
if(typeof gridContainer === 'undefined' || !gridContainer) return
var grid = $(gridContainer)
if(!grid || !grid.length) return
if(!gridFilteringSwitches()) return
window.gridElements = []
grid.find('.creature_icon').each(function() {
var obj = {}
var elem = $(this)
obj['*'] = elem
for(x in gridFilters) {
obj[x] = elem.data(x).split(',')
for(var y=0;y<obj[x].length;y++) {
obj[x][y] = obj[x][y].replace(/^\s+|\s+$/g, '').toLowerCase()
}
}
window.gridElements.push(obj)
})
}
function gridFilteringSwitches() {
var flag = false
for(x in gridFilters) {
var container = $('#grid-filter-'+x)
if(!container.length) continue
flag = true
if(gridFilters[x] == 'search') {
var field = $('<input type="text" placeholder="Cerca..." />').appendTo(container).attr('id', container.attr('id')+'-field').data('type', 'search')
field.keyup(function() {
gridFilteringApply()
if(window.gridFiltersTimeout) window.clearTimeout(window.gridFiltersTimeout)
window.gridFiltersTimeout = window.setTimeout(gridFilteringClear, 30000)
})
} else if(gridFilters[x] instanceof Array) {
var field = $('<select></select>').appendTo(container).attr('id', container.attr('id')+'-field').data('type', 'select')
$('<option></option>').appendTo(field).attr('value', '').html(gridFilters[x][0])
for(var y=1;y<gridFilters[x].length;y++) {
$('<option></option>').appendTo(field).attr('value', gridFilters[x][y][0]).html(gridFilters[x][y][1])
}
field.val('')
field.change(function() {
gridFilteringApply()
if(window.gridFiltersTimeout) window.clearTimeout(window.gridFiltersTimeout)
window.gridFiltersTimeout = window.setTimeout(gridFilteringClear, 30000)
})
}
}
return flag
}
function gridFilteringClear() {
for(x in gridFilters) {
$('#grid-filter-'+x+'-field').val('')
}
gridFilteringApply()
}
function gridFilteringApply() {
for(var x=0;x<gridElements.length;x++) {
var elem = $(gridElements[x]['*'])
var active = true
for(y in gridFilters) {
var field = $('#grid-filter-'+y+'-field')
var value = field.val().toLowerCase()
if(value == '') continue;
var type = field.data('type')
if(type == 'search') {
var rx = new RegExp('^.*?(' + value.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&") + ').*?$','i');
var flag = rx.test(gridElements[x][y].join(', '))
if(!flag) active = false
} else if(type == 'select') {
if(gridElements[x][y].indexOf(value) == -1) active = false
}
}
if(active) gridFilteringShow(elem)
else gridFilteringHide(elem)
}
}
function gridFilteringHide(elem) {
$(elem).stop(true);
$(elem).fadeTo(200, 0.1);
}
function gridFilteringShow(elem) {
$(elem).stop(true);
$(elem).fadeTo(200, 1);
}
$( gridFiltering )
} )( jQuery );
/* End Grid Filtering */