MediaWiki:Common.js: Difference between revisions

Add Purge link to page tools
No edit summary
(Add Purge link to page tools)
 
(31 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: [] },
    url: 'https://wiki.melvoridle.com/w/Special:Favoritelist',
                { label: 'Logout', url: 'https://wiki.melvoridle.com/index.php?title=Special:UserLogout&returnto=Main+Page', subLinks: [] }
    label: 'My Favourite Pages',
            ],
    subLinks: [],
            icon: 'fas fa-user-gear'
    icon: 'fas fa-star'
        };
  },
        var items = [
  {
            { url: 'https://wiki.melvoridle.com/w/Main_Page', label: 'Home', subLinks: [], icon: 'fas fa-house' }
    label: 'Guides',
        ];
    url: 'https://wiki.melvoridle.com/w/Guides',
 
    icon: 'fas fa-book',
        if (isLoggedIn) {
    subLinks: []
            items.push(myFavs);
  },
        } else {
  {
            items.push(signIn);
    label: 'FAQ',
        }
    url: 'https://wiki.melvoridle.com/w/FAQ',
 
    icon: 'fas fa-circle-question',
        items.push(
    subLinks: []
            { label: 'Guides', url: 'https://wiki.melvoridle.com/w/Guides', icon: 'fas fa-book', 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: 'Changelog',
            { label: 'Mod Creation', url: 'https://wiki.melvoridle.com/w/Mod_Creation', icon: 'fas fa-hammer', subLinks: [] }
    url: 'https://wiki.melvoridle.com/w/Changelog',
        );
    icon: 'fas fa-book-open',
 
    subLinks: []
        if (isLoggedIn) {
  },
            items.push(accountManagement);
  {
        }
    label: 'Mod Creation',
 
    url: 'https://wiki.melvoridle.com/w/Mod_Creation',
        items.push({
    icon: 'fas fa-hammer',
            label: 'Special Tools',
    subLinks: []
            url: '',
  },
            isGrouping: true,
  {
            subLinks: [
    label: 'Account Management',
                { label: 'Upload Files', url: 'https://wiki.melvoridle.com/w/Special:Upload', subLinks: [], icon: 'fas fa-upload' },
    url: '',
                { label: 'Special Pages', url: 'https://wiki.melvoridle.com/w/Special:SpecialPages', subLinks: [], icon: 'fas fa-file-powerpoint' }
    isGrouping: true,
            ],
    subLinks: [
            icon: 'fas fa-gear'
      {
        });
        label: 'Sign In / Register',
 
        url: 'https://wiki.melvoridle.com/index.php?title=Special:UserLogin&returnto=Main+Page',
        items.push({
        subLinks: []
            label: 'Support Melvor Idle',
      },
            url: '',
      {
            isGrouping: true,
        label: 'Preferences',
            subLinks: [
        url: 'https://wiki.melvoridle.com/w/Special:Preferences',
                { 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' }
        label: 'Logout',
            ],
        url: 'https://wiki.melvoridle.com/index.php?title=Special:UserLogout&returnto=Main+Page',
            icon: null
        subLinks: []
        });
      }
 
    ],
        items.push({
    icon: 'fas fa-user-gear'
            label: 'Melvor Idle Socials',
  },
            url: '',
  {
            isGrouping: true,
    label: 'Special Tools',
            subLinks: [
    url: '',
                { label: 'Discord', url: 'https://discord.gg/melvoridle', subLinks: [], icon: 'fab fa-discord' },
    isGrouping: true,
                { label: 'Reddit', url: 'https://reddit.com/r/MelvorIdle', icon: 'custom icon-reddit-alien', subLinks: [] },
    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: 'Upload Files',
                { label: 'Instagram', url: 'https://instagram.com/melvoridle', icon: 'custom icon-instagram', subLinks: [] }
        url: 'https://wiki.melvoridle.com/w/Special:Upload',
            ]
        subLinks: [],
        });
        icon: 'fas fa-upload'
        median.sidebar.setItems({ "items": items, "enabled": true, "persist": false });
      },
    }
      {
        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 842: 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 847: 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();
});
});