Changeset - 0add4633c153
[Not reviewed]
0 3 0
Brett Smith (brett) - 7 years ago 2017-11-27 18:08:21
brett@sfconservancy.org
base_conservancy: Activate progressbar for new match.
3 files changed with 24 insertions and 20 deletions:
0 comments (0 inline, 0 general)
www/conservancy/local_context_processors.py
Show inline comments
 
import conservancy.settings
 
from conservancy.apps.fundgoal.models import FundraisingGoal as FundraisingGoal
 

	
 
def fundgoal_lookup(fundraiser_sought):
 
    try:
 
        return FundraisingGoal.objects.get(fundraiser_code_name=fundraiser_sought)
 
    except FundraisingGoal.DoesNotExist:
 
        # we have no object!  do something
 
        return None
 

	
 
def sitefundraiser(request):
 
    return {'sitefundgoal': fundgoal_lookup('supporterrun') }
 
    return {'sitefundgoal': fundgoal_lookup('fy-2018-main-match') }
 

	
 
if conservancy.settings.FORCE_CANONICAL_HOSTNAME:
 
    _HOST_URL_VAR = {'host_url': 'https://' + conservancy.settings.FORCE_CANONICAL_HOSTNAME}
 
    def host_url(request):
 
        return _HOST_URL_VAR
 
else:
 
    def host_url(request):
 
        return {'host_url': request.build_absolute_uri('/').rstrip('/')}
www/conservancy/static/js/conservancy.js
Show inline comments
 
/* 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!",
 
        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!",
 
            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);
 
});
www/conservancy/templates/base_conservancy.html
Show inline comments
 
{% load humanize %}
 
{% load subtract %}
 
{% load min %}
 

	
 
<!DOCTYPE html>
 

	
 
<html lang="en" prefix="og: http://ogp.me/ns#">
 

	
 
  <head>
 
    <title>{% block title %}{% block subtitle %}{% endblock %}Software Freedom Conservancy{% endblock %}</title>
 
    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
 
    <meta name="description" content="The Software Freedom Conservancy provides a non-profit home and services to Free, Libre and Open Source Software (FLOSS) projects." />
 
    <meta name="keywords" content="software, freedom, conservancy, open source, gnu, GNU, Open Source, Free and Open Source, Free and Open Source Software, FLOSS, FOSS, protect, protection, help, policy, linux, non-profit" />
 
    <link rel="shortcut icon" href="/favicon.ico" type="image/x-icon" />
 
    <link rel="stylesheet" type="text/css" media="screen" href="/css/conservancy.css" />
 
    <link rel="stylesheet" type="text/css" media="(min-width: 67em)" href="/css/conservancy-bigscreen.css" />
 
    <link rel="stylesheet" href="/css/jquery-ui-1.8.22.custom.css" />
 
    <link rel="stylesheet" href="/css/jquery.ui.multiprogressbar.css" />
 
    <script type="text/javascript" src="/js/jquery-1.7.2.js"></script>
 
    <script type="text/javascript" src="/js/jquery-ui-1.8.22.custom.min.js"></script>
 
    <script type="text/javascript" src="/js/jquery.outerhtml.js"></script>
 
    <script type="text/javascript" src="/js/jquery.ui.multiprogressbar.js"></script>
 
    <script type="text/javascript" src="/js/conservancy.js"></script>
 
    {% block head %}{% endblock %}
 
  </head>
 

	
 
  <body class="conservancy-{% block category %}other{% endblock %}">
 
    <h1 id="conservancyheader"><a id="logobutton" href="/">Software Freedom Conservancy</a></h1>
 
    <div id="navbar-outer">
 
      <div id="navbar">
 
	<ul>
 
      <li class="supporter"><a href="/supporter/">Become a Supporter!</a></li>
 
      <li class="donate"><a href="/donate/">Donate</a></li>
 
      <li class="news"><a href="/news/">News</a></li>
 
      <li class="blog"><a href="/blog/">Blog</a></li>
 
      <li class="Projects"><a href="/projects/">Projects</a></li>
 
      <li class="compliance"><a href="/copyleft-compliance/">Copyleft Compliance</a></li>
 
      <li class="npoacct"><a href="/npoacct/">NPOAcct</a></li>
 
      <li class="sponsors"><a href="/sponsors/">Sponsors</a></li>
 
      <li class="About"><a href="/about/">About</a></li>
 
    </ul>
 
      </div>
 
      <div id="navbar-clear"></div>
 

	
 
    </div>
 

	
 
{% comment %}
 
FUNDRAISER VARIABLES AND CONSTANTS GUIDE
 

	
 
fundraiser_goal_amount: The highest number of Supporters we want
 
fundraiser_so_far_amount: The number of Supporters we have
 
fundraiser_donation_count: The "minimum" number of Supporters we want (not currently used)
 
fundraiser_donation_count_disclose_threshold: The number of Supporters that have been matched
 
sitefundgoal attributes:
 

	
 
fundraiser_goal_amount: The amount being matched
 
fundraiser_so_far_amount: The amount contributed so far
 
fundraiser_donation_count: The number of people who have contributed so far
 
fundraiser_donation_count_disclose_threshold: Not used
 

	
 
Local convenience variables:
 

	
 
this_match_goal: The amount being matched
 
this_match_so_far: The amount contributed so far
 
this_match_remaining: this_match_goal - this_match_so_far
 

	
 
When we started this match, we had 1076 Supporters matched, so we subtract
 
that from count_disclose_threshold to determine how many happened in the
 
current match.
 
{% endcomment %}
 

	
 
{% comment %}
 
{% with this_match_goal=150 this_match_so_far=sitefundgoal.fundraiser_donation_count_disclose_threshold|subtract:1076 %}
 
{% with this_match_goal=sitefundgoal.fundraiser_goal_amount this_match_so_far=sitefundgoal.fundraiser_so_far_amount %}
 
{% with this_match_remaining=this_match_goal|subtract:this_match_so_far %}
 
    <div class="fundraiser-top-text">
 
      <em>
 
        {% if this_match_remaining <= 0 %}
 
        Thanks to {{ this_match_goal|intcomma }} Supporters we earned our full match!  Help us go further to stand up for software
 
        Thanks to {{ sitegoal.fundraiser_donation_count|intcomma }} Supporters we earned our full match!  Help us go further to stand up for software
 
        freedom &mdash; <a href="/supporter">sign up now</a>!
 
        {% else %}
 
        Let's stand up for software freedom together!
 
        The next {{ this_match_remaining|intcomma }} Supporters who join or
 
        renew by February 28th will be matched by an anonymous donor!  <a href="/supporter/">Join today!</a>
 
        The next ${{ this_match_remaining|floatformat:0|intcomma }} we receive from Supporters and donors will be matched!  <a href="/supporter/">Join today!</a>
 
        {% endif %}
 
      </em>
 
<div id="siteprogressbar">
 
<a href="/supporter">
 
  We've matched
 
  {% if this_match_remaining <= 0 %}
 
  <span id="site-fundraiser-match-count">{{ this_match_goal|intcomma }}</span>
 
  $<span id="site-fundraiser-match-count">{{ this_match_goal|intcomma }}</span>
 
  {% else %}
 
  <span id="site-fundraiser-match-count">{{ this_match_so_far|intcomma }}</span>
 
  $<span id="site-fundraiser-match-count">{{ this_match_so_far|intcomma }}</span>
 
  {% endif %}
 
  Supporters have been matched, out of
 
  <span id="site-fundraiser-final-goal">{{ this_match_goal|intcomma }}</span> possible.
 
  of
 
  $<span id="site-fundraiser-final-goal">{{ this_match_goal|intcomma }}</span>
 
  so far!
 
</a>
 
</div>
 
</div>
 
{% endwith %}
 
{% endwith %}
 
{% endcomment %}
 

	
 
      {% block outercontent %}<div id="mainContent"> {% block content %}{% endblock %}</div>{% endblock %}
 
    <div id="conservancyfooter">
 
      <p>Connect with Conservancy on
 
        <a href="https://mastodon.technology/@conservancy">Mastodon</a>,
 
        <a href="https://twitter.com/conservancy">Twitter</a>,
 
        <a href="https://identi.ca/conservancy">pump.io</a>,
 
        <a href="https://plus.google.com/104268783278405704634/">Google+</a>,
 
        <a href="https://www.facebook.com/SoftwareFreedomConservancy/">Facebook</a>,
 
        and <a href="https://www.youtube.com/channel/UCUEeuNvX2UyTTyTYXR9dm_A">YouTube</a>.</p>
 

	
 
      <p><a href="/">Main Page</a> | <a href="/about/contact/">Contact</a> | <a href="/sponsors/">Sponsors</a> | <a href="/privacy-policy/">Privacy Policy</a> | <a href="/feeds/omnibus/">RSS Feed</a></p>
 

	
 
      <p class="copyright_info">
 
      <a rel="license" href="https://creativecommons.org/licenses/by-sa/4.0"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by-sa/4.0/88x31.png" /></a> 
 
      <br />This page, and all contents herein, unless a license is otherwise
 
      specified, are licensed under a
 
      <a rel="license" href="https://creativecommons.org/licenses/by-sa/4.0">Creative
 
      Commons Attribution-ShareAlike 4.0 International License</a>.</p>
 
    </div>
 
  </body>
 
</html>
0 comments (0 inline, 0 general)