MediaWiki:Common.js: Difference between revisions

Add Purge link to page tools
No edit summary
(Add Purge link to page tools)
(30 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 myFavs = {
        var isLoggedIn = isUserLoggedIn();
    url: 'https://wiki.melvoridle.com/w/Special:Favoritelist',
        var myFavs = {
    label: 'My Favourite Pages',
            url: 'https://wiki.melvoridle.com/w/Special:Favoritelist',
    subLinks: [],
            label: 'My Favourite Pages',
    icon: 'fas fa-star'
            subLinks: [],
};
            icon: 'fas fa-star'
const items = [
        };
  {
        var signIn = {
    url: 'https://wiki.melvoridle.com/w/Main_Page',
            label: 'Sign In / Register',
    label: 'Home',
            url: 'https://wiki.melvoridle.com/index.php?title=Special:UserLogin&returnto=Main+Page',
    subLinks: [],
            subLinks: []
    icon: 'fas fa-house'
        };
  }
        var accountManagement = {
  ];
            label: 'Account Management',
  if(isUserLoggedIn()) {
            url: '',
  items.push(myFavs);
            isGrouping: true,
  }
            subLinks: [
  items.push(
                { 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: 'Guides',
            ],
    url: 'https://wiki.melvoridle.com/w/Guides',
            icon: 'fas fa-user-gear'
    icon: 'fas fa-book',
        };
    subLinks: []
        var items = [
  },
            { url: 'https://wiki.melvoridle.com/w/Main_Page', label: 'Home', subLinks: [], icon: 'fas fa-house' }
  {
        ];
    label: 'FAQ',
 
    url: 'https://wiki.melvoridle.com/w/FAQ',
        if (isLoggedIn) {
    icon: 'fas fa-circle-question',
            items.push(myFavs);
    subLinks: []
        } else {
  },
            items.push(signIn);
  {
        }
    label: 'Changelog',
 
    url: 'https://wiki.melvoridle.com/w/Changelog',
        items.push(
    icon: 'fas fa-book-open',
            { label: 'Guides', url: 'https://wiki.melvoridle.com/w/Guides', icon: 'fas fa-book', subLinks: [] },
    subLinks: []
            { label: 'FAQ', url: 'https://wiki.melvoridle.com/w/FAQ', icon: 'fas fa-circle-question', subLinks: [] },
  },
            { label: 'Changelog', url: 'https://wiki.melvoridle.com/w/Changelog', icon: 'fas fa-book-open', subLinks: [] },
  {
            { label: 'Mod Creation', url: 'https://wiki.melvoridle.com/w/Mod_Creation', icon: 'fas fa-hammer', subLinks: [] }
    label: 'Mod Creation',
        );
    url: 'https://wiki.melvoridle.com/w/Mod_Creation',
 
    icon: 'fas fa-hammer',
        if (isLoggedIn) {
    subLinks: []
            items.push(accountManagement);
  },
        }
  {
 
    label: 'Account Management',
        items.push({
    url: '',
            label: 'Special Tools',
    isGrouping: true,
            url: '',
    subLinks: [
            isGrouping: true,
      {
            subLinks: [
        label: 'Sign In / Register',
                { label: 'Upload Files', url: 'https://wiki.melvoridle.com/w/Special:Upload', subLinks: [], icon: 'fas fa-upload' },
        url: 'https://wiki.melvoridle.com/index.php?title=Special:UserLogin&returnto=Main+Page',
                { label: 'Special Pages', url: 'https://wiki.melvoridle.com/w/Special:SpecialPages', subLinks: [], icon: 'fas fa-file-powerpoint' }
        subLinks: []
            ],
      },
            icon: 'fas fa-gear'
      {
        });
        label: 'Preferences',
 
        url: 'https://wiki.melvoridle.com/w/Special:Preferences',
        items.push({
        subLinks: []
            label: 'Support Melvor Idle',
      },
            url: '',
      {
            isGrouping: true,
        label: 'Logout',
            subLinks: [
        url: 'https://wiki.melvoridle.com/index.php?title=Special:UserLogout&returnto=Main+Page',
                { label: 'Buy Melvor Idle', url: 'https://wiki.melvoridle.com/w/Full_Version', subLinks: [] },
        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: 'https://wiki.melvoridle.com/w/Atlas_of_Discovery_Expansion', subLinks: [] },
    ],
                { label: 'Patreon', url: 'https://patreon.com/MelvorIdle', subLinks: [], icon: 'fab fa-patreon' }
    icon: 'fas fa-user-gear'
            ],
  },
            icon: null
  {
        });
    label: 'Special Tools',
 
    url: '',
        items.push({
    isGrouping: true,
            label: 'Melvor Idle Socials',
    subLinks: [
            url: '',
      {
            isGrouping: true,
        label: 'Upload Files',
            subLinks: [
        url: 'https://wiki.melvoridle.com/w/Special:Upload',
                { label: 'Discord', url: 'https://discord.gg/melvoridle', subLinks: [], icon: 'fab fa-discord' },
        subLinks: [],
                { label: 'Reddit', url: 'https://reddit.com/r/MelvorIdle', icon: 'custom icon-reddit-alien', subLinks: [] },
        icon: 'fas fa-upload'
                { 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: [] }
        label: 'Special Pages',
            ]
        url: 'https://wiki.melvoridle.com/w/Special:SpecialPages',
        });
        subLinks: [],
        median.sidebar.setItems({ "items": items, "enabled": true, "persist": false });
        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 837: 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() {
    var shouldShowDownload = /iPhone|iPad|iPod/i.test(window.navigator.userAgent) && window.navigator.userAgent.indexOf('gonative melvorwiki') === -1;
    if (shouldShowDownload) {
    $('.ios-app-download').removeClass('d-none');
    } 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 842: 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
showIOSAppDownloadLink();
// Show Android App download link
showAndroidAppDownloadLink();
// Add links to Page Tools navigation
addToPageTools();
});
});