MediaWiki:Common.js: Difference between revisions

Add Purge link to page tools
No edit summary
(Add Purge link to page tools)
 
(25 intermediate revisions by 2 users not shown)
Line 550: Line 550:
if (!isOverflown) {
if (!isOverflown) {
var headElem = document.getElementById('mw-header-container');
var headElem = document.getElementById('mw-header-container');
if (headElem !== undefined) {
if ((headElem !== undefined) && (headElem !== null)) {
var headStyles = getComputedStyle(headElem);
var headStyles = getComputedStyle(headElem);
if ((headStyles !== undefined) && (headStyles.position !== 'static')) {
if ((headStyles !== undefined) && (headStyles.position !== 'static')) {
Line 671: Line 671:
});
});
}
}
}
function initCollapsibleElements() {
/* 2024-02-18 Allow collapsing of elements with class 'mw-collapsible', in line
* with desktop view behaviour. Extension:MobileFrontend disables this, but
* it is still desirable for our use case
*/
mw.loader.using('jquery.makeCollapsible').then(function () { $('.mw-collapsible').makeCollapsible(); });
}
}


function initWikiAppSidebar() {
function initWikiAppSidebar() {
if (navigator.userAgent.indexOf('gonative melvorwiki') > -1) {
    if (navigator.userAgent.indexOf('gonative melvorwiki') > -1) {
const isLoggedIn = isUserLoggedIn();
        var isLoggedIn = isUserLoggedIn();
const myFavs = {
        var myFavs = {
    url: 'https://wiki.melvoridle.com/w/Special:Favoritelist',
            url: 'https://wiki.melvoridle.com/w/Special:Favoritelist',
    label: 'My Favourite Pages',
            label: 'My Favourite Pages',
    subLinks: [],
            subLinks: [],
    icon: 'fas fa-star'
            icon: 'fas fa-star'
};
        };
const signIn = {
        var signIn = {
    label: 'Sign In / Register',
            label: 'Sign In / Register',
    url: 'https://wiki.melvoridle.com/index.php?title=Special:UserLogin&returnto=Main+Page',
            url: 'https://wiki.melvoridle.com/index.php?title=Special:UserLogin&returnto=Main+Page',
    subLinks: []
            subLinks: []
};
        };
const accountManagement =  
        var accountManagement = {
  {
            label: 'Account Management',
    label: 'Account Management',
            url: '',
    url: '',
            isGrouping: true,
    isGrouping: true,
            subLinks: [
    subLinks: [
                { label: 'Preferences', url: 'https://wiki.melvoridle.com/w/Special:Preferences', subLinks: [] },
      {
                { label: 'Logout', url: 'https://wiki.melvoridle.com/index.php?title=Special:UserLogout&returnto=Main+Page', subLinks: [] }
        label: 'Preferences',
            ],
        url: 'https://wiki.melvoridle.com/w/Special:Preferences',
            icon: 'fas fa-user-gear'
        subLinks: []
        };
      },
        var items = [
      {
            { url: 'https://wiki.melvoridle.com/w/Main_Page', label: 'Home', subLinks: [], icon: 'fas fa-house' }
        label: 'Logout',
        ];
        url: 'https://wiki.melvoridle.com/index.php?title=Special:UserLogout&returnto=Main+Page',
 
        subLinks: []
        if (isLoggedIn) {
      }
            items.push(myFavs);
    ],
        } else {
    icon: 'fas fa-user-gear'
            items.push(signIn);
  };
        }
const items = [
 
  {
        items.push(
    url: 'https://wiki.melvoridle.com/w/Main_Page',
            { label: 'Guides', url: 'https://wiki.melvoridle.com/w/Guides', icon: 'fas fa-book', subLinks: [] },
    label: 'Home',
            { label: 'FAQ', url: 'https://wiki.melvoridle.com/w/FAQ', icon: 'fas fa-circle-question', subLinks: [] },
    subLinks: [],
            { label: 'Changelog', url: 'https://wiki.melvoridle.com/w/Changelog', icon: 'fas fa-book-open', subLinks: [] },
    icon: 'fas fa-house'
            { label: 'Mod Creation', url: 'https://wiki.melvoridle.com/w/Mod_Creation', icon: 'fas fa-hammer', subLinks: [] }
  }
        );
  ];
 
  if(isLoggedIn) {
        if (isLoggedIn) {
  items.push(myFavs);
            items.push(accountManagement);
  } else {
        }
  items.push(signIn);
 
  }
        items.push({
  items.push(
            label: 'Special Tools',
  {
            url: '',
    label: 'Guides',
            isGrouping: true,
    url: 'https://wiki.melvoridle.com/w/Guides',
            subLinks: [
    icon: 'fas fa-book',
                { label: 'Upload Files', url: 'https://wiki.melvoridle.com/w/Special:Upload', subLinks: [], icon: 'fas fa-upload' },
    subLinks: []
                { label: 'Special Pages', url: 'https://wiki.melvoridle.com/w/Special:SpecialPages', subLinks: [], icon: 'fas fa-file-powerpoint' }
  },
            ],
  {
            icon: 'fas fa-gear'
    label: 'FAQ',
        });
    url: 'https://wiki.melvoridle.com/w/FAQ',
 
    icon: 'fas fa-circle-question',
        items.push({
    subLinks: []
            label: 'Support Melvor Idle',
  },
            url: '',
  {
            isGrouping: true,
    label: 'Changelog',
            subLinks: [
    url: 'https://wiki.melvoridle.com/w/Changelog',
                { label: 'Buy Melvor Idle', url: 'https://wiki.melvoridle.com/w/Full_Version', subLinks: [] },
    icon: 'fas fa-book-open',
                { label: 'Buy Throne of the Herald', url: 'https://wiki.melvoridle.com/w/Throne_of_the_Herald_Expansion', subLinks: [] },
    subLinks: []
                { label: 'Buy Atlas of Discovery', url: 'https://wiki.melvoridle.com/w/Atlas_of_Discovery_Expansion', subLinks: [] },
  },
                { label: 'Patreon', url: 'https://patreon.com/MelvorIdle', subLinks: [], icon: 'fab fa-patreon' }
  {
            ],
    label: 'Mod Creation',
            icon: null
    url: 'https://wiki.melvoridle.com/w/Mod_Creation',
        });
    icon: 'fas fa-hammer',
 
    subLinks: []
        items.push({
  });
            label: 'Melvor Idle Socials',
  if(isLoggedIn) {
            url: '',
  items.push(accountManagement);
            isGrouping: true,
  }
            subLinks: [
  items.push({
                { label: 'Discord', url: 'https://discord.gg/melvoridle', subLinks: [], icon: 'fab fa-discord' },
    label: 'Special Tools',
                { label: 'Reddit', url: 'https://reddit.com/r/MelvorIdle', icon: 'custom icon-reddit-alien', subLinks: [] },
    url: '',
                { label: 'Twitter', url: 'https://twitter.com/melvoridle', icon: 'custom icon-twitter', subLinks: [] },
    isGrouping: true,
                { label: 'Facebook', url: 'https://facebook.com/melvoridle', icon: 'custom icon-facebook', subLinks: [] },
    subLinks: [
                { label: 'Instagram', url: 'https://instagram.com/melvoridle', icon: 'custom icon-instagram', subLinks: [] }
      {
            ]
        label: 'Upload Files',
        });
        url: 'https://wiki.melvoridle.com/w/Special:Upload',
        median.sidebar.setItems({ "items": items, "enabled": true, "persist": false });
        subLinks: [],
    }
        icon: 'fas fa-upload'
      },
      {
        label: 'Special Pages',
        url: 'https://wiki.melvoridle.com/w/Special:SpecialPages',
        subLinks: [],
        icon: 'fas fa-file-powerpoint'
      }
    ],
    icon: 'fas fa-gear'
  },
  {
    label: 'Support Melvor Idle',
    url: '',
    isGrouping: true,
    subLinks: [
      {
        label: 'Buy Melvor Idle',
        url: 'https://wiki.melvoridle.com/w/Full_Version',
        subLinks: []
      },
      {
        label: 'Buy Throne of the Herald',
        url: 'https://wiki.melvoridle.com/w/Throne_of_the_Herald_Expansion',
        subLinks: []
      },
      {
        label: 'Buy Atlas of Discovery',
        url: 'httpshttps://wiki.melvoridle.com/w/Atlas_of_Discovery_Expansion://',
        subLinks: []
      },
      {
        label: 'Patreon',
        url: 'https://patreon.com/MelvorIdle',
        subLinks: [],
        icon: 'fab fa-patreon'
      }
    ],
    icon: null
  },
  {
    label: 'Melvor Idle Socials',
    url: '',
    isGrouping: true,
    subLinks: [
      {
        label: 'Discord',
        url: 'https://discord.gg/melvoridle',
        subLinks: [],
        icon: 'fab fa-discord'
      },
      {
        label: 'Reddit',
        url: 'https://reddit.com/r/MelvorIdle',
        icon: 'custom icon-reddit-alien',
        subLinks: []
      },
      {
        label: 'Twitter',
        url: 'https://twitter.com/melvoridle',
        icon: 'custom icon-twitter',
        subLinks: []
      },
      {
        label: 'Facebook',
        url: 'https://facebook.com/melvoridle',
        icon: 'custom icon-facebook',
        subLinks: []
      },
      {
        label: 'Instagram',
        url: 'https://instagram.com/melvoridle',
        icon: 'custom icon-instagram',
        subLinks: []
      }
    ]
  }
);
median.sidebar.setItems({"items":items,"enabled":true, "persist":false});
}
}
}


Line 844: Line 772:
     return true;
     return true;
   }
   }
}
function addToPageTools() {
if (isUserLoggedIn()) {
$.when(mw.loader.using(['mediawiki.util']), $.ready).then( function() {
mw.util.addPortletLink(
'p-cactions',
mw.util.getUrl() + '?action=purge',
'Purge',
't-purgecache',
'Purge the cache for this page',
null,
null
);
});
}
}
}


function showIOSAppDownloadLink() {
function showIOSAppDownloadLink() {
     if (window.navigator.userAgent.match(/iPhone|iPad|iPod/i) && !window.navigator.userAgent.includes('gonative melvorwiki')) {
     var shouldShowDownload = /iPhone|iPad|iPod/i.test(window.navigator.userAgent) && window.navigator.userAgent.indexOf('gonative melvorwiki') === -1;
        const els = document.getElementsByClassName('ios-app-download');
    if (shouldShowDownload) {
        els.forEach((el) => {
    $('.ios-app-download').removeClass('d-none');
        el.style.display = 'show';
    } else {
        });
    $('.ios-app-download').addClass('d-none');
    }
}
 
function showAndroidAppDownloadLink() {
    var shouldShowDownload = /Android/i.test(window.navigator.userAgent) && window.navigator.userAgent.indexOf('gonative melvorwiki') === -1;
    if (shouldShowDownload) {
    $('.android-app-download').removeClass('d-none');
    } else {
    $('.android-app-download').addClass('d-none');
     }
     }
}
}
Line 858: Line 811:
// Table sticky headers
// Table sticky headers
initStickyHeaders();
initStickyHeaders();
// Collapsible elements (for Extension:MobileFrontend)
initCollapsibleElements();
// Wiki app native navigation
// Wiki app native navigation
initWikiAppSidebar();
initWikiAppSidebar();
// Show iOS App download link
// Show iOS App download link
showIOSAppDownloadLink();
showIOSAppDownloadLink();
// Show Android App download link
showAndroidAppDownloadLink();
// Add links to Page Tools navigation
addToPageTools();
});
});