MediaWiki:Mobile.js: Difference between revisions

From Ekatra Wiki
Jump to navigation Jump to search
No edit summary
No edit summary
Line 1: Line 1:
/* All JavaScript here will be loaded for users of the mobile site */
/* All JavaScript here will be loaded for users of the mobile site */
$( function(){
if (window.matchMedia("(max-width: 768px)").matches) {
if( mw.config.get("skin") !== "minerva" ){
const currWikiUrl = new URL(window.location.href);
currWikiUrl.searchParams.set('mobileaction', 'toggle_view_mobile');
window.location.replace(currWikiUrl);
}
$("#footer-places-desktop-toggle").remove();
} else {
if(  mw.config.get("skin") !== "vector" ){
const currWikiUrl = new URL(window.location.href);
currWikiUrl.searchParams.set('mobileaction', 'toggle_view_desktop');


window.location.replace(currWikiUrl);
// Define table sorting function outside the main block
}
}
var countPoem2 = $(".Poem2-Ekatra");
if( countPoem2.length > 0 ){
var Poem2lenghtArray = [];
for (var k = 0; k <= countPoem2.length; k++) {
  Poem2lenghtArray.push(k);
}
Poem2lenghtArray.forEach(function(j) {
var poemElement = $(".Poem2-Ekatra").eq(j);
if( poemElement.length ){
var poemText = poemElement.html();
 
var poemArray = poemText.split("\n");
poemElement.text("");
// First measure
poemArray.forEach( function(i) {
poemElement.append( '<p style="text-indent: 2em;">' + i + '</p>' );
});
// Second measure
poemElement.children('p').each(function () {
$(this).css('text-indent', '2em');
});
}
});
}
// Compatible table sorting for mobile - no mw.user dependencies
function initMobileSorting() {
function initMobileSorting() {
     console.log('Initializing mobile sorting...');
     console.log('Initializing mobile sorting...');
Line 64: Line 13:
          
          
         if (tables.length > 0) {
         if (tables.length > 0) {
            // Try to load jQuery tablesorter
             if (typeof mw !== 'undefined' && mw.loader) {
             if (typeof mw !== 'undefined' && mw.loader) {
                 mw.loader.using('jquery.tablesorter').then(function() {
                 mw.loader.using('jquery.tablesorter').then(function() {
Line 92: Line 40:
}
}


// Try multiple initialization methods
// Main initialization function
$(document).ready(function() {
$( function(){
   
    // Mobile/Desktop view switching logic
    if (window.matchMedia("(max-width: 768px)").matches) {
        if( mw.config.get("skin") !== "minerva" ){
            const currWikiUrl = new URL(window.location.href);
            currWikiUrl.searchParams.set('mobileaction', 'toggle_view_mobile');
           
            window.location.replace(currWikiUrl);
        }
        $("#footer-places-desktop-toggle").remove();
    } else {
        if(  mw.config.get("skin") !== "vector" ){
            const currWikiUrl = new URL(window.location.href);
            currWikiUrl.searchParams.set('mobileaction', 'toggle_view_desktop');
            window.location.replace(currWikiUrl);
        }
    }
   
    // Poem formatting code
    var countPoem2 = $(".Poem2-Ekatra");
   
    if( countPoem2.length > 0 ){
        var Poem2lenghtArray = [];
        for (var k = 0; k <= countPoem2.length; k++) {
          Poem2lenghtArray.push(k);
        }
       
        Poem2lenghtArray.forEach(function(j) {
            var poemElement = $(".Poem2-Ekatra").eq(j);
                       
            if( poemElement.length ){
                var poemText = poemElement.html();
                var poemArray = poemText.split("\n");
               
                poemElement.text("");
           
                // First measure
                poemArray.forEach( function(i) {
                    poemElement.append( '<p style="text-indent: 2em;">' + i + '</p>' );
                });
               
                // Second measure
                poemElement.children('p').each(function () {
                    $(this).css('text-indent', '2em');
                });
            }
        });
    }
   
    // Initialize table sorting
     initMobileSorting();
     initMobileSorting();
});
   
 
    // Also reinitialize when new content loads (like after editing)
// Also try when content loads
    mw.hook('wikipage.content').add(function() {
mw.hook('wikipage.content').add(function() {
        initMobileSorting();
    initMobileSorting();
    });
});
   
});
});

Revision as of 20:36, 26 August 2025

/* All JavaScript here will be loaded for users of the mobile site */

// Define table sorting function outside the main block
function initMobileSorting() {
    console.log('Initializing mobile sorting...');
    console.log('Current skin:', mw.config.get('skin'));
    
    if (mw.config.get('skin') === 'minerva') {
        console.log('Minerva detected, looking for tables...');
        
        var tables = document.querySelectorAll('.wikitable, table.sortable');
        console.log('Found tables:', tables.length);
        
        if (tables.length > 0) {
            if (typeof mw !== 'undefined' && mw.loader) {
                mw.loader.using('jquery.tablesorter').then(function() {
                    console.log('Tablesorter module loaded');
                    
                    $(tables).each(function(index, table) {
                        var $table = $(table);
                        console.log('Processing table', index);
                        
                        if (!$table.hasClass('sortable')) {
                            $table.addClass('sortable');
                        }
                        
                        try {
                            $table.tablesorter();
                            console.log('Tablesorter applied to table', index);
                        } catch (e) {
                            console.error('Error applying tablesorter:', e);
                        }
                    });
                }).catch(function(e) {
                    console.error('Failed to load tablesorter:', e);
                });
            }
        }
    }
}

// Main initialization function
$( function(){
    
    // Mobile/Desktop view switching logic
    if (window.matchMedia("(max-width: 768px)").matches) {
        if( mw.config.get("skin") !== "minerva" ){
            const currWikiUrl = new URL(window.location.href);
            currWikiUrl.searchParams.set('mobileaction', 'toggle_view_mobile');
            
            window.location.replace(currWikiUrl);
        }
        $("#footer-places-desktop-toggle").remove();
    } else {
        if(  mw.config.get("skin") !== "vector" ){
            const currWikiUrl = new URL(window.location.href);
            currWikiUrl.searchParams.set('mobileaction', 'toggle_view_desktop');
            window.location.replace(currWikiUrl);
        }
    }
    
    // Poem formatting code
    var countPoem2 = $(".Poem2-Ekatra");
    
    if( countPoem2.length > 0 ){
        var Poem2lenghtArray = [];
        for (var k = 0; k <= countPoem2.length; k++) {
           Poem2lenghtArray.push(k);
        }
        
        Poem2lenghtArray.forEach(function(j) {
            var poemElement = $(".Poem2-Ekatra").eq(j);
                        
            if( poemElement.length ){
                var poemText = poemElement.html();
                var poemArray = poemText.split("\n");
                
                poemElement.text("");
            
                // First measure
                poemArray.forEach( function(i) {
                    poemElement.append( '<p style="text-indent: 2em;">' + i + '</p>' );
                });
                
                // Second measure
                poemElement.children('p').each(function () {
                    $(this).css('text-indent', '2em');
                });
            }
        });
    }
    
    // Initialize table sorting
    initMobileSorting();
    
    // Also reinitialize when new content loads (like after editing)
    mw.hook('wikipage.content').add(function() {
        initMobileSorting();
    });
    
});