More actions
No edit summary |
No edit summary |
||
Line 161: | Line 161: | ||
$(function () { | $(function () { | ||
var categoryList = []; | var categoryList = []; | ||
// Fetch | // 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) { | |||
function | $('.category-suggestions').remove(); // Clear old suggestions | ||
var suggestionBox = $('<ul class="category-suggestions"></ul>') | |||
var suggestionBox = $('<ul class="category-suggestions"></ul>').css({ | |||
position: 'absolute', | position: 'absolute', | ||
zIndex: 1000, | zIndex: 1000, | ||
backgroundColor: '#fff', | |||
border: '1px solid #ccc', | border: '1px solid #ccc', | ||
padding: ' | padding: '0', | ||
margin: 0, | listStyleType: 'none', | ||
margin: '0', | |||
maxHeight: '200px', | |||
overflowY: 'auto', | |||
cursor: 'pointer' | cursor: 'pointer' | ||
}); | }); | ||
suggestions.forEach(function (suggestion) { | suggestions.forEach(function (suggestion) { | ||
var item = $('<li></li>').text(suggestion).css({ padding: '5px' }); | var item = $('<li></li>').text(suggestion).css({ | ||
item.on('mousedown', function () { | padding: '5px' | ||
var | }); | ||
var | item.on('mousedown', function () { | ||
input.val( | 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.remove(); | ||
}); | }); | ||
suggestionBox.append(item); | suggestionBox.append(item); | ||
Line 201: | Line 210: | ||
$('body').append(suggestionBox); | $('body').append(suggestionBox); | ||
positionSuggestionBox(input, cursorPosition, suggestionBox); | |||
} | } | ||
function | function positionSuggestionBox(input, cursorPosition, box) { | ||
var text = input.val().substring(0, | var offset = input.offset(); | ||
var text = input.val().substring(0, cursorPosition); | |||
var span = $('<span></span>').text(text).css({ | var span = $('<span></span>').text(text).css({ | ||
visibility: 'hidden', | |||
whiteSpace: 'pre-wrap', | whiteSpace: 'pre-wrap', | ||
font: input.css('font'), | font: input.css('font'), | ||
lineHeight: input.css('line-height | lineHeight: input.css('line-height') | ||
}).appendTo('body'); | }).appendTo('body'); | ||
box.css({ | |||
top: offset.top + input.height() + 10, | |||
left: offset.left + span.width() | |||
}); | |||
span.remove(); | span.remove(); | ||
} | } | ||
$('#wpTextbox1').on('input', function () { | $('#wpTextbox1').on('input', function () { | ||
var input = $(this); | |||
var cursorPos = this.selectionStart; | var cursorPos = this.selectionStart; | ||
var text = | var text = input.val().substring(0, cursorPos); | ||
var match = text.match(/\[\[Category:([^\]]*)$/); | var match = text.match(/\[\[Category:([^\]]*)$/); | ||
if (match) { | if (match) { | ||
var partial = match[1].toLowerCase(); | var partial = match[1].toLowerCase(); | ||
var | var matches = categoryList.filter(function (category) { | ||
return | return category.toLowerCase().startsWith(partial); | ||
}).slice(0, 10); // Limit | }).slice(0, 10); // Limit suggestions | ||
if ( | if (matches.length) { | ||
createSuggestionBox(input, matches, cursorPos); | |||
} | } | ||
} else { | |||
$('.category-suggestions').remove(); | |||
} | } | ||
}); | }); | ||
$(document).on('mousedown', function (e) { | $(document).on('mousedown', function (e) { | ||
if (!$(e.target).closest('.category-suggestions').length) { | if (!$(e.target).closest('.category-suggestions').length) { |
Revision as of 20:40, 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, cursorPosition, box) {
var offset = input.offset();
var text = input.val().substring(0, cursorPosition);
var span = $('<span></span>').text(text).css({
visibility: 'hidden',
whiteSpace: 'pre-wrap',
font: input.css('font'),
lineHeight: input.css('line-height')
}).appendTo('body');
box.css({
top: offset.top + input.height() + 10,
left: offset.left + span.width()
});
span.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();
}
});
});