Bikarhêner:Balyozxane/skrîpt/js/get-redir.js
Zanibe: Piştî weşandinê, ji bo dîtina guhartinan dibe ku hewce be "cache"ya geroka xwe paqij bikî.
- Firefox / Safari: Pê li Shift û Reload bike an jî Ctrl-F5 an Ctrl-R bike (ji bo Mac: ⌘-R)
- Google Chrome: Pê li Ctrl-Shift-R (ji bo Mac: ⌘-Shift-R) bike
- Internet Explorer / Edge: Pê li Ctrl û Refresh bike, an jî Ctrl-F5 bike
- Opera: Pê li Ctrl-F5 bike.
$(document).ready(function() {
mw.loader.using("mediawiki.api").done(function() {
var pageTitle = mw.config.get('wgPageName');
if (mw.config.get('wgNamespaceNumber') === 10 ){
var targetContainer = mw.config.get('skin') === 'vector-2022' ? 'p-cactions' : 'p-tb';
var link = mw.util.addPortletLink(targetContainer, '#', 'Get redirects', 't-getRedirects', 'Get redirects');
}
function getCSRFToken() {
// Make a GET request to retrieve the CSRF token
return $.ajax({
url: "https://ku.wikipedia.org/w/api.php",
data: {
action: "query",
meta: "tokens",
type: "csrf",
format: "json"
},
dataType: "json"
}).then(function(response) {
mw.notify("CSRF token response:", response);
return response.query.tokens.csrftoken;
}).fail(function(jqXHR, textStatus, errorThrown) {
console.error("Error fetching CSRF token:", textStatus, errorThrown);
return null;
});
}
// Function to get redirects for a page
function getRedirectsForPage(pageTitle, csrfToken) {
mw.notify("Fetching redirects for page:", pageTitle);
// Make a POST request to the Wikipedia API with CSRF token included
return $.ajax({
url: "https://ku.wikipedia.org/w/api.php",
method: "POST",
data: {
action: "query",
format: "json",
titles: pageTitle,
redirects: "",
prop: "redirects",
rdlimit: "max",
token: csrfToken
},
dataType: "json"
}).then(function(response) {
mw.notify("Redirects response:", response);
// Extract redirects from the response
var redirects = [];
if (response && response.query && response.query.pages) {
var pageId = Object.keys(response.query.pages)[0];
if (response.query.pages[pageId].redirects) {
redirects = response.query.pages[pageId].redirects.map(function(redirect) {
return redirect.title;
});
}
}
return { redirects: redirects };
}).fail(function(jqXHR, textStatus, errorThrown) {
console.error("Error fetching redirects:", textStatus, errorThrown);
return { redirects: [] };
});
}
function formatRedirects(redirects) {
if (redirects.length === 0) return '';
var formattedRedirects = redirects.map(function(redirect) {
// Remove "Şablon:" prefix from the redirect
var cleanRedirect = redirect.replace(/^Şablon:/, '');
return '{{tl|' + cleanRedirect + '}}';
}).join(', ');
var cleanTemplateName = pageTitle.replace(/^Şablon:/, '');
cleanTemplateName = cleanTemplateName.replace(/_/, ' ');
if (redirects.length === 1) {
return "* " + formattedRedirects + " → '''{{tl|"+ cleanTemplateName + "}}'''";
} else {
return "* " + formattedRedirects + " → '''{{tl|"+ cleanTemplateName + "}}'''";
}
}
function appendToTemplateRedirectsPage(redirectInfo, csrfToken) {
var formattedText = formatRedirects(redirectInfo.redirects);
var editSummary = "Beralîkirinên [["+ pageTitle + "]] lê hat zêdekirin";
var apiUrl = "https://ku.wikipedia.org/w/api.php";
var editParams = {
action: "edit",
title: "Wîkîpediya:AutoWikiBrowser/Template redirects",
//title: "Bikarhêner:Balyozxane/ceribandin",
token: csrfToken,
appendtext: "\n" + formattedText,
summary: editSummary,
format: "json"
};
return $.ajax({
url: apiUrl,
method: "POST",
data: editParams,
dataType: "json"
}).then(function(response) {
mw.notify("Edit response:", response);
}).fail(function(jqXHR, textStatus, errorThrown) {
console.error("Error appending to template redirects page:", textStatus, errorThrown);
});
}
// Add click event listener to the link
$(link).on('click', function(event) {
mw.notify("Link clicked");
event.preventDefault(); // Prevent default link behavior
// Get the page title of the current page
mw.notify("Current page title:", pageTitle);
// Get CSRF token and fetch redirects
getCSRFToken().then(function(csrfToken) {
if (csrfToken) {
getRedirectsForPage(pageTitle, csrfToken).then(function(result) {
// Handle redirects
var redirects = result.redirects;
mw.notify("Redirects for current page:", redirects);
appendToTemplateRedirectsPage({ redirects: redirects }, csrfToken);
});
} else {
console.error("CSRF token not available");
}
});
});
});
});