×
Create a new article
Write your page title here:
We currently have 2,003 articles on The Quelmar Wiki. Type your article name above or click on one of the titles below and start writing!



The Quelmar Wiki

MediaWiki:Common.js: Difference between revisions

No edit summary
No edit summary
Line 114: Line 114:
}
}
});
});
});

/*
If URL hash component's target has any collapsed ancestor(s), expands them
(Propogation is stopped by '.disable-hash-expand' on target or on any ancestor)
*/
$(function() {
// Grab the hash (“#foo”) if any
var hash = window.location.hash;
if (!hash) {
return;
}

// Decode “#foo” → “foo”, bail out if it’s invalid
var id;
try {
id = decodeURIComponent(hash.substring(1));
} catch (e) {
return;
}

// Find the element by ID
var target = document.getElementById(id);
if (!target) {
return;
}

// Kick off expansion on the next tick
setTimeout(function() {
expandAncestors(target);
}, 0);

function expandAncestors(el) {
var current = el;
while (current) {
// stop if author opted out
if (current.classList.contains('disable-hash-expand')) {
break;
}
// expand any collapsed MediaWiki collapsibles
if (
current.classList.contains('mw-collapsible') &&
current.classList.contains('mw-collapsed')
) {
var btn = current.querySelector('.mw-collapsible-toggle');
if (btn) {
btn.click();
}
}
current = current.parentElement;
}

// after a short delay, scroll the target into view
setTimeout(function() {
if (typeof el.scrollIntoView === 'function') {
el.scrollIntoView({ behavior: 'smooth', block: 'center' });
}
}, 200);
}
});
});

Revision as of 04:00, 24 July 2025

/**
 *Makes credits closable
 */
mw.loader.using(['jquery'], function () {
    $(document).on('click', '#worldbuildercredits .close-btn', function() {
        $('#worldbuildercredits').hide();
    });
});

/**
 * Adds an AI Artwork button to the image uploader page
 */
$(function() {
    if (mw.config.get('wgCanonicalSpecialPageName') === 'Upload') {
        // checkbox element
        var checkboxHtml = '<td class="mw-label"><label for="aiCheckbox">AI Artwork?: </label></td>'
                         + '<td class="mw-input"><input type="checkbox" id="aiCheckbox"></td>';
        // Insert the checkbox element after the Licensing row
        $('td.mw-label label[for="wpLicense"]').closest('tr').after('<tr>' + checkboxHtml + '</tr>');
        // Update the destination filename when the checkbox value changes
        $('#aiCheckbox').change(function() {
            var destFileInput = $('#wpDestFile');
            var currentFilename = destFileInput.val();
            if ($(this).prop('checked')) {
                // Prepend "-ai-" if checkbox is checked
                if (!currentFilename.startsWith("-ai-")) {
                    destFileInput.val("-ai-" + currentFilename);
                }
            } else {
                // Remove "-ai-" prefix if checkbox is unchecked
                if (currentFilename.startsWith("-ai-")) {
                    destFileInput.val(currentFilename.replace("-ai-", ""));
                }
            }
        });
    }
});

/**
 * Adds CSS classes to the body tag based on the categories this page belongs to. Used for CR/Astral page theming.
 *
 * @source https://www.mediawiki.org/wiki/Snippets/Style_pages_based_on_categories
 * @revision 2016-01-18
 */
(function($, mw) {
  var fn = function() {
    var cats = mw.config.get('wgCategories'), newClasses;
    if (cats) {
      newClasses = $.map(cats, function(el) {
        return 'cat-' + encodeURIComponent(el.replace(/[ .]/g, '_')).replace(/%/g, '_');
      }).join(' ');
      $(document.body).addClass(newClasses);
    }
  };
  if (document.body) {
    fn();
  } else {
    $(fn);
  }
})(jQuery, mw);

//Deprecated code: Used for autoplaying theme songs
//function Bebop(){
//	console.log("OK 3 2 1 Let's Jam"); 
//	var x = document.getElementById("myaudio"); 
//	x.play(); 
//}
//
//setTimeout(Bebop, 2000);

// START HOTCAT
/*
This imports the latest version of HotCat from Commons.
HotCat is a gadget to make changes to categories much easier.
Full documentation can be found at http://commons.wikimedia.org/wiki/Help:Gadget-HotCat
*/
window.hotcat_translations_from_commons = true;
mw.loader.load( 'https://commons.wikimedia.org/w/index.php?title=MediaWiki:Gadget-HotCat.js&action=raw&ctype=text/javascript' );
// END HOTCAT

//Watermark AI Image
//Images can be renamed to have "-ai-" anywhere in their name and automatically get a watermark
$(document).ready(function() {
	    // Define the watermark image URL
    var watermarkURL = 'https://quelmarwiki.com/wiki/images/b/b8/Aiwatermark.png';
    // Loop through images on the page
    $('img').each(function() {
        var img = $(this); // Reference to the current img tag in the loop
        var src = img.attr('src'); // Get the src attribute
        // Check if image name contains '-ai'
        if (src.includes('-ai')) {
            // Create a div to contain the image and its watermark
            var container = $('<div>').css({
                'position': 'relative',
                'display': 'inline-block',
                'overflow': 'hidden',
                'width': img.width(),
                'height': img.height,
                'pointer-events': 'none'
                });
            //Generate the watermark
            var watermark = $('<img>').attr('src', watermarkURL).css({
                'position': 'absolute',
                'bottom': '0',
                'right': '0',
                'max-width': '20%',  // Adjust size if needed
                'max-height': '20%', // Adjust size if needed
                'pointer-events': 'none', // Ensure it doesn't interfere with any interactions
                'opacity': '0.5' // Adjust opacity if needed
            });
            // Insert the container before the original image, then move the original image and watermark inside the container
            img.before(container).appendTo(container);
            container.append(watermark);
        }
    });
});

/*
  If URL hash component's target has any collapsed ancestor(s), expands them
  (Propogation is stopped by '.disable-hash-expand' on target or on any ancestor)
*/
$(function() {
    // Grab the hash (“#foo”) if any
    var hash = window.location.hash;
    if (!hash) {
        return;
    }

    // Decode “#foo” → “foo”, bail out if it’s invalid
    var id;
    try {
        id = decodeURIComponent(hash.substring(1));
    } catch (e) {
        return;
    }

    // Find the element by ID
    var target = document.getElementById(id);
    if (!target) {
        return;
    }

    // Kick off expansion on the next tick
    setTimeout(function() {
        expandAncestors(target);
    }, 0);

    function expandAncestors(el) {
        var current = el;
        while (current) {
            // stop if author opted out
            if (current.classList.contains('disable-hash-expand')) {
                break;
            }
            // expand any collapsed MediaWiki collapsibles
            if (
                current.classList.contains('mw-collapsible') &&
                current.classList.contains('mw-collapsed')
            ) {
                var btn = current.querySelector('.mw-collapsible-toggle');
                if (btn) {
                    btn.click();
                }
            }
            current = current.parentElement;
        }

        // after a short delay, scroll the target into view
        setTimeout(function() {
            if (typeof el.scrollIntoView === 'function') {
                el.scrollIntoView({ behavior: 'smooth', block: 'center' });
            }
        }, 200);
    }
});
Cookies help us deliver our services. By using our services, you agree to our use of cookies. (Hi Margarita's Table. 🇩🇪)
Cookies help us deliver our services. By using our services, you agree to our use of cookies. (Hi Margarita's Table. 🇩🇪)