Loading...

Preloading the cool stuff... be right there!

Toggle menu
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

MediaWiki:Common.js: Difference between revisions

MediaWiki interface page
No edit summary
Tag: Reverted
No edit summary
Tag: Manual revert
Line 186: Line 186:
             zIndex: 1000,
             zIndex: 1000,
             backgroundColor: '#fff',
             backgroundColor: '#fff',
            color:black,
             border: '1px solid #ccc',
             border: '1px solid #ccc',
             padding: '0',
             padding: '0',

Revision as of 20:46, 19 January 2025

/* Any JavaScript here will be loaded for all users on every page load. */
 $(function(){
  $('.card').on('mousenter', function(event){
    event.preventDefault();
    $(this).toggleClass('hovered');
  });
   $('.card').on('mouseleave', function(event){
    event.preventDefault();
    $(this).toggleClass('hovered');
  });
});
document.querySelectorAll('.sub-card').forEach(card => {
    card.addEventListener('click', function(event) {
        event.stopPropagation(); // Prevent event bubbling

        // Toggle the expanded state of the clicked card
        const isExpanded = card.getAttribute('data-expanded') === 'true';
        
        // Flip the current sub-card
        card.setAttribute('data-expanded', isExpanded ? 'false' : 'true');

        // Hide all other sub-cards
        document.querySelectorAll('.sub-card').forEach(otherCard => {
            if (otherCard !== card) {
                otherCard.setAttribute('data-expanded', 'false');
            }
        });
    });
});

document.querySelectorAll('.card').forEach(card => {
    card.addEventListener('mouseleave', function() {
        // Collapse all sub-cards when mouse leaves the main card
        document.querySelectorAll('.sub-card').forEach(subCard => {
            subCard.setAttribute('data-expanded', 'false');
        });
    });
});

$(document).ready(function() {
    // Click event for the header or the arrow
    $('.mw-collapsible-header').click(function() {
        var parentDiv = $(this).closest('.mw-collapsible');
        var content = parentDiv.find('.mw-collapsible-content');
        
        // Toggle the collapse/expand state
        parentDiv.toggleClass('mw-collapsed');
        
        // Toggle visibility of the content
        content.stop(true, true).slideToggle(); // Stop any ongoing animation before toggling visibility
    });

    // Ensure that the arrow starts pointing up for expanded sections by default
    $('.mw-collapsible').each(function() {
        var parentDiv = $(this);
        var content = parentDiv.find('.mw-collapsible-content');
        
        if (!parentDiv.hasClass('mw-collapsed')) {
            content.show(); // Ensure content is visible
        }
    });
});



$(document).ready(function() {
  var categories = mw.config.get('wgCategories');

  // Define a mapping of categories to arrays of background images
  var categoryBackgrounds = {
    'Dead Island': [
      'https://www.chromengine.com/images/5/5b/Dead_islan_background.png'
    ],
    'Dying Light': [
      'https://www.chromengine.com/images/f/fe/Dying_light.png'
    ],
    'Call of Juarez: Gunslinger': [
      'https://www.chromengine.com/images/4/4b/Call_of_juaez_gunslinger.png'
    ],
    'Dead Island Riptide': [
      'https://www.chromengine.com/images/b/b6/Random_project_di_riptide_1.png',
      'https://www.chromengine.com/images/0/09/Dead_island_riptide_DE.png'
    ],
    'Call of Juarez: BiB': [
      'https://www.chromengine.com/images/2/24/Project_juaez_no_title_1.png'
    ],
    'Call of Juarez: The Cartel': [
      'https://www.chromengine.com/images/6/64/Callofjuarezcartel.png'
    ],
    'Call of Juarez':[
      'https://www.chromengine.com/images/c/cf/Call_of_juarez_background_1.png',
      'https://www.chromengine.com/images/3/38/Call_of_juarez_background_2.png'
    ],
    'Dead Island DE':[
    	'https://www.chromengine.com/images/4/45/Dead_island_DE.png'
    	],
    'Dying Light: The Beast':[
    	'https://www.chromengine.com/images/1/12/Dying_light_the_beast.png',
    	'https://www.chromengine.com/images/c/c3/Dying_light_the_beast_2.png'
    	],
    'Dying Light 2':[
    	'https://www.chromengine.com/images/0/04/Dying_light_2.png',
    	'https://www.chromengine.com/images/0/02/Dying_light_2_.png',
    	'https://www.chromengine.com/images/3/3f/Dying_light_2_some_layered_effects.png'
    	]
  };

  var defaultBackgrounds = [
    'https://www.chromengine.com/images/8/89/Newbackground.png',
  ];

  function preloadImage(url) {
    var img = new Image();
    img.src = url;
  }

  // Preload all background images
  for (var category in categoryBackgrounds) {
    categoryBackgrounds[category].forEach(preloadImage);
  }
  defaultBackgrounds.forEach(preloadImage);

  function getRandomBackground(images) {
    return images[Math.floor(Math.random() * images.length)];
  }

  var backgroundImageSet = false;

  // Set a random background for the matching category
  categories.forEach(function(category) {
    if (categoryBackgrounds[category]) {
      var randomImage = getRandomBackground(categoryBackgrounds[category]);
      $('body').css({
        'background': `linear-gradient(rgba(0, 0, 0, 0.55), rgba(0, 0, 0, 0.55)), url("${randomImage}")`,
        'background-repeat': 'no-repeat',
        'background-position': 'top center',
        'background-size': 'cover',
        'opacity': 1,
        'transition': 'opacity 0.5s ease',
        'background-attachment': 'fixed'
      });
      backgroundImageSet = true;
    }
  });

  if (!backgroundImageSet) {
    var randomDefault = getRandomBackground(defaultBackgrounds);
    $('body').css({
      'background': `linear-gradient(rgba(0, 0, 0, 0.4), rgba(0, 0, 0, 0.4)), url("${randomDefault}")`,
      'background-repeat': 'no-repeat',
      'background-position': 'top center',
      'background-size': 'cover',
      'opacity': 1,
      'transition': 'opacity 0.5s ease',
      'background-attachment': 'fixed'
    });
  }
});


$(function () {
    var categoryList = [];

    // Fetch categories from the API
    $.ajax({
        url: mw.util.wikiScript('api'),
        data: {
            action: 'query',
            list: 'allcategories',
            aclimit: '500',
            format: 'json'
        },
        dataType: 'json',
        success: function (data) {
            categoryList = data.query.allcategories.map(function (cat) {
                return cat['*'];
            });
        }
    });

    function createSuggestionBox(input, suggestions, cursorPosition) {
        $('.category-suggestions').remove(); // Clear old suggestions

        var suggestionBox = $('<ul class="category-suggestions"></ul>').css({
            position: 'absolute',
            zIndex: 1000,
            backgroundColor: '#fff',
            border: '1px solid #ccc',
            padding: '0',
            listStyleType: 'none',
            margin: '0',
            maxHeight: '200px',
            overflowY: 'auto',
            cursor: 'pointer'
        });

        suggestions.forEach(function (suggestion) {
            var item = $('<li></li>').text(suggestion).css({ padding: '5px' });
            item.on('mousedown', function () {
                var text = input.val();
                var beforeCursor = text.substring(0, cursorPosition).replace(/\[\[Category:[^\]]*$/, '[[Category:' + suggestion);
                var afterCursor = text.substring(cursorPosition);
                input.val(beforeCursor + afterCursor);
                suggestionBox.remove();
            });
            suggestionBox.append(item);
        });

        $('body').append(suggestionBox);
        positionSuggestionBox(input, cursorPosition, suggestionBox);
    }

    function positionSuggestionBox(input, cursorPos, suggestionBox) {
        var text = input.val().substring(0, cursorPos);
        var textarea = input[0];
        var div = $('<div></div>').css({
            position: 'absolute',
            whiteSpace: 'pre-wrap',
            wordWrap: 'break-word',
            visibility: 'hidden',
            font: input.css('font'),
            padding: input.css('padding'),
            width: input.width(),
            lineHeight: input.css('line-height')
        }).appendTo('body');
        
        // Simulate the text up to the cursor
        var beforeCursorText = text.replace(/ /g, '\u00a0');  // Non-breaking spaces for correct width
        div.text(beforeCursorText);
        var span = $('<span>|</span>').appendTo(div);  // Add a cursor marker
        var cursorOffset = span.offset();

        // Adjust position to match textarea
        var inputOffset = input.offset();
        suggestionBox.css({
            top: inputOffset.top + (cursorOffset.top - div.offset().top) + parseInt(input.css('padding-top'), 10),
            left: inputOffset.left + (cursorOffset.left - div.offset().left) + parseInt(input.css('padding-left'), 10)
        });

        div.remove();
    }

    $('#wpTextbox1').on('input', function () {
        var input = $(this);
        var cursorPos = this.selectionStart;
        var text = input.val().substring(0, cursorPos);
        var match = text.match(/\[\[Category:([^\]]*)$/);
        if (match) {
            var partial = match[1].toLowerCase();
            var matches = categoryList.filter(function (category) {
                return category.toLowerCase().startsWith(partial);
            }).slice(0, 10);  // Limit suggestions
            if (matches.length) {
                createSuggestionBox(input, matches, cursorPos);
            }
        } else {
            $('.category-suggestions').remove();
        }
    });

    $(document).on('mousedown', function (e) {
        if (!$(e.target).closest('.category-suggestions').length) {
            $('.category-suggestions').remove();
        }
    });
});
Cookies help us deliver our services. By using our services, you agree to our use of cookies.