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'
});
});
