Jump to content

MediaWiki:Common.js: Difference between revisions

From Gyaanipedia
No edit summary
No edit summary
Line 72: Line 72:
     });
     });
});
});
var maxRetries = 10;
var retryCount = 0;
function getRandomPageWithMinWords(minWords) {
    if (retryCount >= maxRetries) {
        alert('Could not find a page with at least ' + minWords + ' words after ' + maxRetries + ' tries.');
        return;
    }
    retryCount++;
    // ... rest of the function ...
}

Revision as of 22:57, 27 October 2025

/* Any JavaScript here will be loaded for all users on every page load. */

// Custom Random Page with Minimum Word Count
$(document).ready(function() {
    // Override the default random page link behavior
    $('a[href*="Special:Random"]').on('click', function(e) {
        e.preventDefault(); // Prevent default link behavior
        
        // Function to count words in text
        function countWords(text) {
            return text.replace(/[\s\n]+/g, ' ').trim().split(' ').length;
        }
        
        // Function to fetch a random page and check word count
        function getRandomPageWithMinWords(minWords) {
            $.ajax({
                url: mw.util.wikiScript('api'),
                data: {
                    action: 'query',
                    format: 'json',
                    list: 'random',
                    rnnamespace: 0, // Main namespace only
                    rnlimit: 1
                },
                dataType: 'json',
                success: function(data) {
                    if (data.query && data.query.random && data.query.random.length > 0) {
                        var pageId = data.query.random[0].id;
                        // Fetch page content
                        $.ajax({
                            url: mw.util.wikiScript('api'),
                            data: {
                                action: 'query',
                                format: 'json',
                                prop: 'revisions',
                                pageids: pageId,
                                rvprop: 'content',
                                rvslots: 'main'
                            },
                            dataType: 'json',
                            success: function(contentData) {
                                var pageContent = contentData.query.pages[pageId].revisions[0].slots.main['*'];
                                var wordCount = countWords(pageContent);
                                
                                if (wordCount >= minWords) {
                                    // Redirect to the page if it meets the word count
                                    window.location = mw.util.getUrl(contentData.query.pages[pageId].title);
                                } else {
                                    // Retry if word count is too low
                                    getRandomPageWithMinWords(minWords);
                                }
                            },
                            error: function() {
                                // Retry on error
                                getRandomPageWithMinWords(minWords);
                            }
                        });
                    } else {
                        // Retry if no page is returned
                        getRandomPageWithMinWords(minWords);
                    }
                },
                error: function() {
                    // Retry on error
                    getRandomPageWithMinWords(minWords);
                }
            });
        }
        
        // Start the process with minimum 50 words
        getRandomPageWithMinWords(50);
    });
});

var maxRetries = 10;
var retryCount = 0;
function getRandomPageWithMinWords(minWords) {
    if (retryCount >= maxRetries) {
        alert('Could not find a page with at least ' + minWords + ' words after ' + maxRetries + ' tries.');
        return;
    }
    retryCount++;
    // ... rest of the function ...
}