MediaWiki:Mobile.js

From Ekatra Wiki
Revision as of 20:32, 26 August 2025 by Jayprakash12345 (talk | contribs)
Jump to navigation Jump to search

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.
/* 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);
		}
	}
	
	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() {
    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) {
            // Try to load jQuery tablesorter
            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);
                });
            }
        }
    }
}

// Try multiple initialization methods
$(document).ready(function() {
    initMobileSorting();
});

// Also try when content loads
mw.hook('wikipage.content').add(function() {
    initMobileSorting();
});
});