Files @ a8710b4b9f2a
Branch filter:

Location: website/www/conservancy/static/js/conservancy.js

a8710b4b9f2a 4.3 KiB application/javascript Show Annotation Show as Raw Download as Raw
Denver Gingerich
Copyleft Compliance: mostly minor fixes to new pgs

These are mostly minor edits (typo fixes, etc.) to the enforcement
strategy and firmware liberation pages that were just added.

The one large change was to replace the first paragraph of the
enforcement strategy page with the full Conservancy description used
previously. The glue text used to shorten it appeared unsalvageable
and it wasn't immediately obvious how to replace it with something
better, so we used the full description instead.
/* Copyright (C) 2012-2013 Denver Gingerich,
** Copyright (C) 2013-2014 Bradley M. Kuhn,
** Copyright (C) 2016 Brett Smith.
** License: GPLv3-or-later
**  Find a copy of GPL at https://sfconservancy.org/GPLv3
*/

$(document).ready(function() {
    /* When the browser doesn't support any video source, replace it
       with the HTML inside the <video> element. */
    var showVideoInnerHTML = function(event) {
        var video = event.target.parentNode;
        var div = document.createElement('div');
        div.classList = video.classList;
        div.innerHTML = video.innerHTML;
        video.parentNode.replaceChild(div, video);
    }
    $('video').each(function(index, video) {
        $('source', video).last().on('error', showVideoInnerHTML);
    });

    /* Set up the fundraiser multiprogressbar near the top of each page. */
    var siteFinalGoal = $('span#site-fundraiser-final-goal').text();
    var noCommaSiteFinalGoal = parseInt(siteFinalGoal.replace(/,/g, ""));
    var siteMatchCount = $('span#site-fundraiser-match-count').text();
    var noCommaSiteMatchCount = parseInt(siteMatchCount.replace(/,/g, ""));
    if (! noCommaSiteMatchCount) {
        noCommaSiteMatchCount = "0";
    }
    var barParts = [{
        value: (noCommaSiteMatchCount / noCommaSiteFinalGoal) * 100,
        text: "$" + noCommaSiteMatchCount.toLocaleString() + " matched!",
        barClass: "progress",
        textClass: "soFarText",
    }];
    if (barParts[0].value < 100) {
        var matchesLeft = noCommaSiteFinalGoal - noCommaSiteMatchCount;
        barParts.push({
            value: 100,
            text: "$" + matchesLeft.toLocaleString() + " to go!",
            barClass: "final-goal",
            textClass: "goalText",
        });
    }
    $('#siteprogressbar').empty().multiprogressbar({parts: barParts});

    $('span#fundraiser-percentage').css({ 'color'        : 'green',
                                          'font-weight'  : 'bold',
                                          'float'        : 'right',
                                          'margin-right' : '40%',
                                          'margin-top'   : '2.5%',
                                          'text-align'   : 'inherit'});

    /* Set up donation form elements used across the whole site. */
    $('.toggle-content').hide();
    $('.toggle-control')
     .addClass('clickable')
     .bind('click', function() {
        var $control = $(this);
        var $parent = $control.parents('.toggle-unit');

        $parent.toggleClass('expanded');
        $parent.find('.toggle-content').slideToggle();

        // if control has HTML5 data attributes, use to update text
        if ($parent.hasClass('expanded')) {
            $control.html($control.attr('data-expanded-text'));
        } else {
            $control.html($control.attr('data-text'));
        }
    });
    $('a.donate-now')
      .addClass('clickable')
      .bind('click', function() {
        var $control = $('#donate-box');
        var $otherTextControl = $('.donate-sidebar');

        setTimeout(function() { $control.find('.toggle-content').slideUp(100);
                                $control.toggleClass('expanded');
                                $control.find('.toggle-content').slideDown(800).fadeOut(10);
                                $otherTextControl.find('.donate-box-highlight').fadeOut(100);
                              }, 300);
          setTimeout(function() { $control.find('.toggle-content').fadeIn(2000);
                                  $otherTextControl.find('.donate-box-highlight')
                                  .css({'font-weight': 'bold', 'font-size' : '110%' });
                                  $otherTextControl.find('.donate-box-highlight').fadeIn(10000);
                                }, 500);
    });

    $('input[name=on0]:radio').on('change', function(event, duration) {
        var $input = $(this);
        var wantShirt = $input.val() == "wantGiftYes";
        var $form = $input.parents('form').last();
        var $tShirtSelector = $('.t-shirt-size-selector', $form);
        $('input', $tShirtSelector).prop('disabled', wantShirt);
        $('input[name=no_shipping]', $form).val(wantShirt ? '2' : '0');
        if (wantShirt) {
            $tShirtSelector.slideDown(duration);
        } else {
            $tShirtSelector.slideUp(duration);
        }
    }).filter(':checked').trigger('change', 0);
});