MediaWiki:Common.js: Difference between revisions
Agros urbe non clamaten
No edit summary |
No edit summary |
||
| Line 9: | Line 9: | ||
} | } | ||
// Declare async function in the correct scope | |||
async function fetchAndSimulateEdits() { | async function fetchAndSimulateEdits() { | ||
let apcontinue = null; // Pagination token | let apcontinue = null; // Pagination token | ||
| Line 42: | Line 43: | ||
newContent += ("|"+title); | newContent += ("|"+title); | ||
// Log the simulated change | // Log the simulated change | ||
console.log(`Simulated edit for ${title}:\n${newContent}`); | console.log(`Simulated edit for ${title}:\n${newContent}`); | ||
} catch (error) { | } catch (error) { | ||
console.error(`Error simulating edit for ${title}:`, error); | console.error(`Error simulating edit for ${title}:`, error); | ||
} | } | ||
} | |||
newContent += "}}"; | |||
// Now make the local edit to the page (not actual edit, just on the user's page) | |||
const contentArea = document.getElementById('mw-content-text'); | |||
if (contentArea) { | |||
// Save the original content (optional) | |||
const originalContent = contentArea.innerHTML; | |||
// Modify the content locally | |||
contentArea.innerHTML += ` | |||
<div style="border: 2px solid red; padding: 10px; margin-top: 20px;"> | |||
<p>${newContent}</p> | |||
</div> | |||
`; | |||
} | } | ||
| Line 79: | Line 74: | ||
} | } | ||
// Call the function | // Call the function inside the callback | ||
fetchAndSimulateEdits(); | fetchAndSimulateEdits().catch(console.error); // Make sure to handle any errors | ||
}); | }); | ||
Revision as of 00:41, 23 November 2024
/* Any JavaScript here will be loaded for all users on every page load. */
mw.loader.using(['mediawiki.api', 'mediawiki.util'], function () {
const api = new mw.Api();
// Only run this script on a specific page
if (mw.config.get('wgPageName') !== 'Wiki_Visualized') {
return;
}
// Declare async function in the correct scope
async function fetchAndSimulateEdits() {
let apcontinue = null; // Pagination token
let simulatedEdits = []; // Store simulated edits locally
do {
// Fetch a batch of pages
const response = await api.get({
action: 'query',
list: 'allpages',
aplimit: 'max', // Maximum number of pages per batch
apcontinue: apcontinue,
});
const pages = response.query.allpages;
var newContent = "{{#network:Main Page"
// Iterate through each page
for (const page of pages) {
const title = page.title;
//console.log(`Simulating edit for page: ${title}`);
try {
// Fetch the current content of the page
const contentResponse = await api.get({
action: 'query',
prop: 'revisions',
titles: title,
rvslots: 'main',
rvprop: 'content',
});
newContent += ("|"+title);
// Log the simulated change
console.log(`Simulated edit for ${title}:\n${newContent}`);
} catch (error) {
console.error(`Error simulating edit for ${title}:`, error);
}
}
newContent += "}}";
// Now make the local edit to the page (not actual edit, just on the user's page)
const contentArea = document.getElementById('mw-content-text');
if (contentArea) {
// Save the original content (optional)
const originalContent = contentArea.innerHTML;
// Modify the content locally
contentArea.innerHTML += `
<div style="border: 2px solid red; padding: 10px; margin-top: 20px;">
<p>${newContent}</p>
</div>
`;
}
// Get the next batch of pages if available
apcontinue = response.continue?.apcontinue || null;
} while (apcontinue);
console.log('Finished simulating edits. Here are the results:', simulatedEdits);
}
// Call the function inside the callback
fetchAndSimulateEdits().catch(console.error); // Make sure to handle any errors
});