|
|
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 */ |
|
| |
|
| |
| /*
| |
| For whatever reason, the MediaWiki devs decided to disable collapsible sections on mobile.
| |
| (See https://phabricator.wikimedia.org/T111565)
| |
| I'm hoping if I just add back the missing function that it will work again
| |
| */
| |
| $.fn.makeCollapsible = function(options) {
| |
| options = options || {};
| |
| this.each(function() {
| |
| var $collapsible = $(this).addClass('mw-collapsible');
| |
| if ($collapsible.data('mw-made-collapsible')) {
| |
| return;
| |
| } else {
| |
| $collapsible.addClass('mw-made-collapsible').data('mw-made-collapsible', true);
| |
| }
| |
| var collapseText = options.collapseText || $collapsible.attr('data-collapsetext') || mw.msg('collapsible-collapse');
| |
| var expandText = options.expandText || $collapsible.attr('data-expandtext') || mw.msg('collapsible-expand');
| |
| var actionHandler = function(e, opts) {
| |
| var defaultOpts = {
| |
| toggleClasses: true,
| |
| toggleARIA: true,
| |
| toggleText: {
| |
| collapseText: collapseText,
| |
| expandText: expandText
| |
| }
| |
| };
| |
| opts = $.extend(defaultOpts, options, opts);
| |
| togglingHandler($(this), $collapsible, e, opts);
| |
| };
| |
| var buildDefaultToggleLink = function() {
| |
| return $('<span>').addClass('mw-collapsible-text').text(collapseText).wrap('<button type="button" class="mw-collapsible-toggle mw-collapsible-toggle-default"></button>').parent();
| |
| };
| |
| var $customTogglers;
| |
| if (options.$customTogglers) {
| |
| $customTogglers = $(options.$customTogglers);
| |
| } else {
| |
| var collapsibleId = $collapsible.attr('id') || '';
| |
| if (collapsibleId.indexOf('mw-customcollapsible-') === 0) {
| |
| collapsibleId = $.escapeSelector(collapsibleId);
| |
| $customTogglers = $('.' + collapsibleId.replace('mw-customcollapsible', 'mw-customtoggle')).addClass('mw-customtoggle');
| |
| }
| |
| }
| |
| var $toggle;
| |
| if ($customTogglers && $customTogglers.length) {
| |
| actionHandler = function(e, opts) {
| |
| var defaultOpts = {};
| |
| opts = $.extend(defaultOpts, options, opts);
| |
| togglingHandler($(this), $collapsible, e, opts);
| |
| }
| |
| ;
| |
| $toggle = $customTogglers;
| |
| } else {
| |
| var $firstItem;
| |
| if ($collapsible.is('table')) {
| |
| var $caption = $collapsible.find('> caption');
| |
| if ($caption.length) {
| |
| $toggle = $caption.find('> .mw-collapsible-toggle, .mw-collapsible-toggle-placeholder').first();
| |
| if (!$toggle.length) {
| |
| $toggle = buildDefaultToggleLink().appendTo($caption);
| |
| }
| |
| } else {
| |
| $firstItem = $collapsible.find('tr').first().find('th, td');
| |
| $toggle = $firstItem.find('> .mw-collapsible-toggle, .mw-collapsible-toggle-placeholder').first();
| |
| if (!$toggle.length) {
| |
| $toggle = buildDefaultToggleLink().prependTo($firstItem.eq(-1));
| |
| }
| |
| }
| |
| } else if ($collapsible.parent().is('li') && $collapsible.parent().children('.mw-collapsible').length === 1 && $collapsible.find('> .mw-collapsible-toggle, .mw-collapsible-toggle-placeholder').length === 0) {
| |
| $toggle = buildDefaultToggleLink();
| |
| $collapsible.before($toggle);
| |
| } else if ($collapsible.is('ul') || $collapsible.is('ol')) {
| |
| $firstItem = $collapsible.find('li').first();
| |
| $toggle = $firstItem.find('> .mw-collapsible-toggle, .mw-collapsible-toggle-placeholder').first();
| |
| if (!$toggle.length) {
| |
| var firstval = $firstItem.prop('value');
| |
| if (firstval === undefined || !firstval || firstval === '-1' || firstval === -1) {
| |
| $firstItem.prop('value', '1');
| |
| }
| |
| $toggle = buildDefaultToggleLink();
| |
| $toggle.wrap('<li class="mw-collapsible-toggle-li"></li>').parent().prependTo($collapsible);
| |
| }
| |
| } else {
| |
| $toggle = $collapsible.find('> .mw-collapsible-toggle, .mw-collapsible-toggle-placeholder').first();
| |
| if (!$collapsible.find('> .mw-collapsible-content').length) {
| |
| $collapsible.wrapInner('<div class="mw-collapsible-content"></div>');
| |
| }
| |
| if (!$toggle.length) {
| |
| $toggle = buildDefaultToggleLink().prependTo($collapsible);
| |
| }
| |
| }
| |
| }
| |
| if ($toggle.hasClass('mw-collapsible-toggle-placeholder')) {
| |
| var $realToggle = buildDefaultToggleLink();
| |
| $toggle.replaceWith($realToggle);
| |
| $toggle = $realToggle;
| |
| }
| |
| $toggle.on('click.mw-collapsible keydown.mw-collapsible', actionHandler).attr('aria-expanded', 'true').prop('tabIndex', 0);
| |
| $(this).data('mw-collapsible', {
| |
| collapse: function() {
| |
| actionHandler.call($toggle.get(0), null, {
| |
| wasCollapsed: false
| |
| });
| |
| },
| |
| expand: function() {
| |
| actionHandler.call($toggle.get(0), null, {
| |
| wasCollapsed: true
| |
| });
| |
| },
| |
| toggle: function() {
| |
| actionHandler.call($toggle.get(0), null, null);
| |
| }
| |
| });
| |
| if (options.collapsed || $collapsible.hasClass('mw-collapsed')) {
| |
| actionHandler.call($toggle.get(0), null, {
| |
| wasCollapsed: false
| |
| });
| |
| }
| |
| });
| |
| window.addEventListener('hashchange', hashHandler);
| |
| mw.hook('wikipage.collapsibleContent').fire(this);
| |
| return this;
| |
| }
| |
/* All JavaScript here will be loaded for users of the mobile site */