MediaWiki:Common.js
From The Seven Sages of Rome
Note: After publishing, you may have to bypass your browser's cache to see the changes.
- Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
- Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
- Internet Explorer / Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5
- Opera: Press Ctrl-F5.
/** Test **/
$(document).ready(function() {
// Trigger modal when the button is clicked
$('#copyEmbeddedStories').click(function() {
$('#storyModal').modal('show');
});
// Handle autocomplete for page names
$('#page-name').on('input', function() {
var query = $(this).val();
if (query.length > 2) {
$.ajax({
url: mw.util.wikiScript('api'),
data: {
action: 'query',
list: 'allpages',
apprefix: query,
format: 'json'
},
success: function(response) {
var pages = response.query.allpages;
var suggestions = pages.map(function(page) {
return page.title;
});
// Here you can implement a way to show these suggestions to the user,
// such as a custom autocomplete dropdown
}
});
}
});
// Process the data when the "Process" button is clicked
$('#process').click(function() {
var targetPage = $('#page-name').val();
if (targetPage) {
copyEmbeddedStories(targetPage);
}
$('#storyModal').modal('hide'); // Close the modal
});
});
function copyEmbeddedStories(targetPage) {
var currentPageTitle = mw.config.get('wgPageName'); // Get the current page title
// Fetch the current page content using the API
$.ajax({
url: mw.util.wikiScript('api'),
method: 'GET',
data: {
action: 'query',
prop: 'revisions',
titles: currentPageTitle,
rvslots: '*',
rvprop: 'content',
format: 'json'
},
success: function(response) {
var page = response.query.pages[Object.keys(response.query.pages)[0]];
var pageContent = page.revisions[0]['*']; // Get the content of the page
// Find all EmbeddedStory templates
var stories = pageContent.match(/\{\{EmbeddedStory[^}]*\}\}/g);
if (stories) {
var targetContent = stories.join('\n'); // Join all the EmbeddedStory templates together
// Use the MediaWiki API to update the target page
$.ajax({
url: mw.util.wikiScript('api'),
method: 'POST',
data: {
action: 'edit',
title: targetPage,
text: targetContent,
summary: 'Copying embedded stories',
token: mw.user.tokens.get('editToken'),
format: 'json'
},
success: function() {
alert('Embedded Stories copied successfully!');
}
});
} else {
alert('No EmbeddedStories found on the current page.');
}
}
});
}
/** Test End **/
function scrollToAnchor(anchorId) {
const element = document.getElementById(anchorId);
const navbarHeight = 50;
if (element) {
// Calculate the adjusted scroll position
const elementPosition = element.getBoundingClientRect().top + window.pageYOffset;
const offsetPosition = elementPosition - navbarHeight;
// Scroll to the adjusted position
window.scrollTo({
top: offsetPosition,
behavior: 'smooth'
});
}
}
function drilldownswitcher() {
$('#drilldown-switch:contains("Show all filters")').length ? ($(".drilldown-filter-values:has(a)").css("display", "block"),
$(".drilldown-values-toggle").each(function () {
$("img").each(function () {
$(this).attr("src", $(this).attr("src").replace("right-arrow.png", "down-arrow.png"));
});
}),
(document.getElementById("drilldown-switch").innerHTML = 'Hide all filters <i class="fa fa-minus"></i>'))
: $('#drilldown-switch:contains("Hide all filters")').length &&
($(".drilldown-filter-values:has(a)").css("display", "none"),
$(".drilldown-values-toggle").each(function () {
$("img").each(function () {
$(this).attr("src", $(this).attr("src").replace("down-arrow.png", "right-arrow.png"));
});
}),
(document.getElementById("drilldown-switch").innerHTML = 'Show all filters <i class="fa fa-plus"></i>'));
}
$(document).ready(function () {
$(".drilldown-results").css({ "-webkit-filter": "blur(0)", "-moz-filter": "blur(0)", "-o-filter": "blur(0)", "-ms-filter": "blur(0)", filter: "blur(0)" }), $(".drilldown-filter-values:has(a)").css("display", "none");
$('<br /><h3 class="drilldown-pre-header">1. Selected Filters</h3>').insertBefore("#drilldown-applied-filters"),
$('<h3 class="drilldown-pre-filters">2. Available Filters</h3>').insertBefore("#drilldown-applicable-filters"),
$('<h3 class="drilldown-post-filters">3. Filtered Results</h3>').insertAfter("#drilldown-applicable-filters"),
$('<html><div class="drilldown-btn-wrapper"><a class="btn primary-btn" href="javascript:;" onclick="drilldownswitcher()" id="drilldown-switch">Show all filters <i class="fa fa-plus"></i></a></div></html>').insertBefore("#drilldown-filters");
$(".drilldown-values-toggle").each(function () {
$("img").each(function () {
$(this).attr("src", $(this).attr("src").replace("down-arrow.png", "right-arrow.png"));
});
});
if( mw.storage.get( "wip-dismissed" ) === null || JSON.parse(mw.storage.get( "wip-dismissed" )) === false){
$( ".wip-alert" ).fadeIn( "slow", function() {});
}
$( "#close-wip" ).on( "click", function() {
mw.storage.set( "wip-dismissed", true );
$( ".wip-alert" ).fadeOut( "slow", function() {});
} );
})
$(document).ready(function () {
$('#copyButton').on('click', function () {
var targetPage = $("#targetPageInput").val().trim();
var embeddedStories = $("#embeddedStoryTemplates").text();
if (!targetPage) {
alert("Please select a target page.");
return;
}
if (!embeddedStories) {
alert("No EmbeddedStory templates found on the source page.");
return;
}
// Confirm action
if (!confirm("Are you sure you want to copy the EmbeddedStory templates to " + targetPage + "?")) {
return;
}
// Use MediaWiki API to append templates to the target page
$.post(mw.util.wikiScript('api'), {
action: 'edit',
title: targetPage,
appendtext: "\n" + embeddedStories,
token: mw.user.tokens.get('csrfToken'),
format: 'json'
})
.done(function (data) {
if (data && data.edit && data.edit.result === 'Success') {
alert("EmbeddedStory templates copied successfully to " + targetPage + "!");
} else {
alert("An error occurred: " + (data.error && data.error.info));
}
})
.fail(function () {
alert("An error occurred while trying to copy the EmbeddedStory templates.");
});
});
});