MediaWiki:Common.js
MediaWiki:Common.js
Revision as of 07:07, 7 February 2019 by James Klassen (talk | contribs)
Note: After saving, 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: Hold Ctrl while clicking Refresh, or press Ctrl-F5
- Opera: Go to Menu → Settings (Opera → Preferences on a Mac) and then to Privacy & security → Clear browsing data → Cached images and files.
;(function(){ /* ======================================================================== * Bootstrap: scrollspy.js v3.0.2 * http://getbootstrap.com/javascript/#scrollspy * ======================================================================== * Copyright 2013 Twitter, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * ======================================================================== */ +function ($) { "use strict"; // SCROLLSPY CLASS DEFINITION // ========================== function ScrollSpy(element, options) { var href var process = $.proxy(this.process, this) this.$element = $(element).is('body') ? $(window) : $(element) this.$body = $('body') this.$scrollElement = this.$element.on('scroll.bs.scroll-spy.data-api', process) this.options = $.extend({}, ScrollSpy.DEFAULTS, options) this.selector = (this.options.target || ((href = $(element).attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7 || '') + ' .nav li > a' this.offsets = $([]) this.targets = $([]) this.activeTarget = null this.refresh() this.process() } ScrollSpy.DEFAULTS = { offset: 10 } ScrollSpy.prototype.refresh = function () { var offsetMethod = this.$element[0] == window ? 'offset' : 'position' this.offsets = $([]) this.targets = $([]) var self = this var $targets = this.$body .find(this.selector) .map(function () { var $el = $(this) var href = $el.data('target') || $el.attr('href') var $href = /^#\w/.test(href) && $(href) return ($href && $href.length && [[ $href[offsetMethod]().top + (!$.isWindow(self.$scrollElement.get(0)) && self.$scrollElement.scrollTop()), href ]]) || null }) .sort(function (a, b) { return a[0] - b[0] }) .each(function () { self.offsets.push(this[0]) self.targets.push(this[1]) }) } ScrollSpy.prototype.process = function () { var scrollTop = this.$scrollElement.scrollTop() + this.options.offset var scrollHeight = this.$scrollElement[0].scrollHeight || this.$body[0].scrollHeight var maxScroll = scrollHeight - this.$scrollElement.height() var offsets = this.offsets var targets = this.targets var activeTarget = this.activeTarget var i if (scrollTop >= maxScroll) { return activeTarget != (i = targets.last()[0]) && this.activate(i) } for (i = offsets.length; i--;) { activeTarget != targets[i] && scrollTop >= offsets[i] && (!offsets[i + 1] || scrollTop <= offsets[i + 1]) && this.activate( targets[i] ) } } ScrollSpy.prototype.activate = function (target) { this.activeTarget = target $(this.selector) .parents('.active') .removeClass('active') var selector = this.selector + '[data-target="' + target + '"],' + this.selector + '[href="' + target + '"]' var active = $(selector) .parents('li') .addClass('active') if (active.parent('.dropdown-menu').length) { active = active .closest('li.dropdown') .addClass('active') } active.trigger('activate.bs.scrollspy') } // SCROLLSPY PLUGIN DEFINITION // =========================== var old = $.fn.scrollspy $.fn.scrollspy = function (option) { return this.each(function () { var $this = $(this) var data = $this.data('bs.scrollspy') var options = typeof option == 'object' && option if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options))) if (typeof option == 'string') data[option]() }) } $.fn.scrollspy.Constructor = ScrollSpy // SCROLLSPY NO CONFLICT // ===================== $.fn.scrollspy.noConflict = function () { $.fn.scrollspy = old return this } // SCROLLSPY DATA-API // ================== $(window).on('load', function () { $('[data-spy="scroll"]').each(function () { var $spy = $(this) $spy.scrollspy($spy.data()) }) }) }(jQuery); })(); $( document ).ready() { //Activate windows scroller to highlight links $('body').scrollspyv2(); //Hide TOC from mobile $('.toc').addClass('hidden-xs'); $('.toc').addClass('hidden-sm'); //On scroll $(window).scroll(function(){ scrollingToc(); }); scrollingToc(); } function scrollingToc() { if($(window).scrollTop()>150) { $('.toc').removeClass('affix-top toc-top'); $('.toc').addClass('affix toc-scrolling'); } else { $('.toc').removeClass('affix toc-scrolling'); $('.toc').addClass('affix-top toc-top'); } } //--------------------Variables for the auto highlighter---------------// var monthNames = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ]; var x = new Date(); x.setMonth(x.getMonth() + 12); var y = ' || ' + x.getFullYear() + '-' + monthNames[x.getMonth()] + '-' + x.getDate() + ' }}'; //--------------------Visible and Invisible options for the defined text (red,green,blue)---------------// jQuery.fn.visible = function() { return this.css('visibility', 'visible'); }; jQuery.fn.invisible = function() { return this.css('visibility', 'hidden'); }; jQuery.fn.visibilityToggle = function() { return this.css('visibility', function(i, visibility) { return (visibility == 'visible') ? 'hidden' : 'visible'; }); }; //--------------------Editing Toolbar Buttons---------------// $.ajax({ url: 'https://meta.wikimedia.org/w/index.php?title=User:Krinkle/Scripts/InsertWikiEditorButton.js&action=raw&ctype=text/javascript', dataType: 'script', cache: true }).done(function () { krInsertWikiEditorButton({ id: "mw-customeditbutton-policiesDiv", icon: "//rpm.rcabc.org/resources/assets/policiesDiv.png", label: 'Guiding Principles Div', insertBefore: '<div class="principles">', insertAfter: '</div>', sampleText: 'Guiding Principles Div' }); krInsertWikiEditorButton({ id: "mw-customeditbutton-policiesSpan", icon: "//rpm.rcabc.org/resources/assets/policiesSpan.png", label: 'Guiding Principles Span', insertBefore: '<span class="principles">', insertAfter: '</span>', sampleText: 'Guiding Principles Span' }); krInsertWikiEditorButton({ id: "mw-customeditbutton-policiesP", icon: "//rpm.rcabc.org/resources/assets/policiesP.png", label: 'Guiding Principles Paragraph', insertBefore: '<p class="principles">', insertAfter: '</p>', sampleText: 'Guiding Principles Paragraph' }); krInsertWikiEditorButton({ id: 'mw-customeditbutton-recommendedDiv', icon: '//rpm.rcabc.org/resources/assets/recommendationsDiv.png', label: 'Recommended', insertBefore: '<div class="recommended">', insertAfter: '</div>', sampleText: 'Recommended' }); krInsertWikiEditorButton({ id: 'mw-customeditbutton-recommendedSpan', icon: '//rpm.rcabc.org/resources/assets/recommendationsSpan.png', label: 'Recommended Span', insertBefore: '<span class="recommended">', insertAfter: '</span>', sampleText: 'Recommended Span' }); krInsertWikiEditorButton({ id: 'mw-customeditbutton-recommendedP', icon: '//rpm.rcabc.org/resources/assets/recommendationsP.png', label: 'Recommended Paragraph', insertBefore: '<p class="recommended">', insertAfter: '</p>', sampleText: 'Recommended Paragraph' }); krInsertWikiEditorButton({ id: 'mw-customeditbutton-referenceDiv', icon: '//rpm.rcabc.org/resources/assets/referenceDiv.png', label: 'Reference Div', insertBefore: '<div class="reference">', insertAfter: '</div>', sampleText: 'Reference Div' }); krInsertWikiEditorButton({ id: 'mw-customeditbutton-referenceSpan', icon: '//rpm.rcabc.org/resources/assets/referenceSpan.png', label: 'Reference Span', insertBefore: '<span class="reference">', insertAfter: '</span>', sampleText: 'Reference Span' }); krInsertWikiEditorButton({ id: 'mw-customeditbutton-referenceP', icon: '//rpm.rcabc.org/resources/assets/referenceP.png', label: 'Reference Paragraph', insertBefore: '<p class="reference">', insertAfter: '</p>', sampleText: 'Reference Paragraph' }); krInsertWikiEditorButton({ id: 'mw-customeditbutton-tabgroup', icon: '//rpm.rcabc.org/resources/assets/tabstart.png', label: 'Create Tab Group', insertBefore: '<tabs>', insertAfter: '</tabs>' }); krInsertWikiEditorButton({ id: 'mw-customeditbutton-tab', icon: '//rpm.rcabc.org/resources/assets/tab.png', label: 'Create Tab', insertBefore: '<tab name="CHANGE ME">', insertAfter: '</tab>' }); krInsertWikiEditorButton({ id: "mw-customeditbutton-hilite", icon: "//upload.wikimedia.org/wikipedia/commons/3/3f/Button_attendre.png", label: 'Highlight with Date', insertBefore: '{{hilite | ', insertAfter: y, sampleText: 'Highlight this' }); krInsertWikiEditorButton({ id: "mw-customeditbutton-hilite", icon: "//upload.wikimedia.org/wikipedia/commons/0/08/VisualEditor_-_Icon_-_Strikethrough-a.svg", label: 'Strike with Date', insertBefore: '{{strike| ', insertAfter: y, sampleText: 'Strike this' }); krInsertWikiEditorButton({ id: "mw-customeditbutton-tooltip", icon: "//upload.wikimedia.org/wikipedia/commons/2/27/Antu_help_hover.svg", label: 'Tooltip popout window', insertBefore: '<span class="tooltiptext">', insertAfter: '</span>', sampleText: 'Tooltip Popout' }); });