MediaWiki:Mobile.js

From Whonix
Revision as of 22:39, 10 July 2016 by Fortasse (talk | contribs) (Created page with "→‎Any JavaScript here will be loaded for users using the mobile site: // begin sd widget js function sdShowDetailed(container) { $(container).addClass('sd-s...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
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.
/* Any JavaScript here will be loaded for users using the mobile site */
    // begin sd widget js
    function sdShowDetailed(container) {
        $(container).addClass('sd-short-hidden').removeClass('sd-detailed-hidden');
        $(container).find('.sd-btn-short').first().removeClass('active');
        $(container).find('.sd-btn-detailed').first().addClass('active');
    }
    function sdShowShort(container) {
        $(container).addClass('sd-detailed-hidden').removeClass('sd-short-hidden');
        $(container).find('.sd-btn-detailed').first().removeClass('active');
        $(container).find('.sd-btn-short').first().addClass('active');
    }
    function sdExpandParents(element) {
        var parents = $(element).parentsUntil('.sd-container');
        var box = $(parents[parents.length - 1]); // should be a .sd-short or a .sd-detailed
        var container = box.parent(); // should be a .sd-container
        if (!container.hasClass('sd-container')) {
            // parent of box is no .sd-container
            return;
        }
        if (box.hasClass('sd-detailed')) {
            sdShowDetailed(container);
        } else { // box.hasClass('sd-short')
            sdShowShort(container);
        }
        sdExpandParents(container);
    }
    function sdJump(element) {
        var jqElement = $(element);
        if (jqElement.length === 0) {
            return;
        }
        sdExpandParents(jqElement);
        var offset = jqElement.offset();
        $(window).scrollTop(offset.top).scrollLeft(offset.left);
    }
    $(document).ready(function () {
        var hash = window.location.hash;
        var sdContainers = $('.sd-container');
        // if fragment identifier is given, open the matching tab
        if (window.location.hash.length > 1) {
            sdJump($(hash));
        }
        // add functionality to buttons
        sdContainers.find('.sd-btn-short').on('click', function () {
            sdShowShort($(this).closest('.sd-container'));
        });
        sdContainers.find('.sd-btn-detailed').on('click', function () {
            sdShowDetailed($(this).closest('.sd-container'));
        });
        // watch window for change to expand tabs for fragments later
        $(window).on('hashchange', (function () {
            if (hash === window.location.hash) {
                return;
            }
            hash = window.location.hash;
            sdJump($(hash));
        }));
        // make fragment links work
        $('a[href]').filter(function (i, e) {
            return $(e).attr('href')[0] === '#';
        }).on('click', function () {
            sdJump($(this).attr('href'));
        });
    });
    // end sd widget js