|
|
(39 intermediate revisions by the same user not shown) |
Line 1: |
Line 1: |
− | ;(function(){
| + | // Terms Modal |
− | /* ========================================================================
| + | $(document).ready(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);
| |
− |
| |
− | })();
| |
| | | |
| + | setTimeout(function() { |
| + | const termsModal = $('#termsModal'); |
| | | |
| + | if (termsModal.length) { |
| + | // Check if the "rpmTermsAgreement" cookie is present |
| + | if (!document.cookie.includes('rpmTermsAgreement')) { |
| + | // Show the Bootstrap modal |
| + | termsModal.modal({ |
| + | backdrop: "static" |
| + | }); |
| + | } |
| | | |
− | $( document ).ready()
| + | // Agree button click event to set the "rpm" cookie |
− | | + | $('#agreeTermsButton').click(function() { |
− | {
| + | termsModal.modal('hide'); |
− | //Activate windows scroller to highlight links
| + | |
− | $('body').scrollspyv2();
| + | // Set the "rpmTermsAgreement" cookie with expiration date five years from now |
− | //Hide TOC from mobile
| + | var expirationDate = new Date(); |
− | $('.toc').addClass('hidden-xs');
| + | expirationDate.setFullYear(expirationDate.getFullYear() + 5); |
− | $('.toc').addClass('hidden-sm');
| + | document.cookie = "rpmTermsAgreement=true; expires=" + expirationDate.toUTCString() + "; path=/"; |
− | //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');
| |
| } | | } |
− | } | + | }, 200); |
| | | |
− | //--------------------Variables for the auto highlighter---------------// | + | /* MailChimp Form */ |
− | var monthNames = ["January", "February", "March", "April", "May", "June",
| |
− | "July", "August", "September", "October", "November", "December"
| |
− | ];
| |
| | | |
− | var x = new Date(); | + | var mailchimpFormHTML = |
− | x.setMonth(x.getMonth() + 12);
| + | '<div id="mc_embed_signup">' + |
| + | ' <form action="https://rcabc.us21.list-manage.com/subscribe/post?u=aa570610c198792349997a983&id=91bc758592&f_id=000857e1f0" method="post" id="mc-embedded-subscribe-form" name="mc-embedded-subscribe-form" class="validate" target="_self">' + |
| + | ' <div id="mc_embed_signup_scroll">' + |
| + | ' <div class="mc-field-group form-group">' + |
| + | ' <label for="mce-EMAIL">Email Address</label>' + |
| + | ' <input type="email" value="" name="EMAIL" class="required email form-control" id="mce-EMAIL" required>' + |
| + | ' <span id="mce-EMAIL-HELPERTEXT" class="helper_text"></span>' + |
| + | ' </div>' + |
| + | ' <div id="mce-responses" class="clear foot">' + |
| + | ' <div class="response" id="mce-error-response" style="display:none"></div>' + |
| + | ' <div class="response" id="mce-success-response" style="display:none"></div>' + |
| + | ' </div>' + |
| + | ' <div style="position: absolute; left: -5000px;" aria-hidden="true"><input type="text" name="b_aa570610c198792349997a983_91bc758592" tabindex="-1" value=""></div>' + |
| + | ' <input type="submit" value="Subscribe To RPM Updates" name="subscribe" id="mc-embedded-subscribe" class="btn btn-primary">' + |
| + | ' </div>' + |
| + | ' </form>' + |
| + | '</div>'; |
| | | |
− | var y = ' || ' + x.getFullYear() + '-' + monthNames[x.getMonth()] + '-' + x.getDate() + ' }}';
| + | $('#mailchimpForm').html(mailchimpFormHTML); |
− | | |
− | //--------------------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'
| |
− | });
| |
| }); | | }); |