Bradley M. Kuhn
0680c58853
The fundgoal section is now always included, but an if statement now wraps the entire (partial) file, which will only generate any content if it's not more than one week after the fundraiser has ended. Add an else that indicates these are results if it is past the end of the fundraiser.
81 lines
3.9 KiB
HTML
81 lines
3.9 KiB
HTML
{% load humanize %}
|
|
{% load subtract %}
|
|
|
|
{% comment %}
|
|
# FUNDRAISER VARIABLES AND CONSTANTS GUIDE
|
|
|
|
## From Local Context
|
|
|
|
* datetime_now: Current DateTime in UTC
|
|
* sitefundgoal: The current FundraisingGoal. 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: The number of new Sustainers that can be double-matched this fundraiser.
|
|
(No, this name makes no sense. We're repurposing an existing model field for this new reason.)
|
|
* sitefundgoal_endtime: DateTime when sitefundgoal ends.
|
|
|
|
## Local convenience variables
|
|
|
|
* sitefundgoal_timeleft: TimeDelta for how much time remains in the current fundraiser
|
|
* 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
|
|
* this_match_exceeded: this_match_so_far - this_match_goal
|
|
|
|
{% endcomment %}
|
|
{% 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 sitefundgoal_timeleft=sitefundgoal.fundraiser_endtime|subtract:datetime_now this_match_exceeded=this_match_so_far|subtract:this_match_goal %}
|
|
{% if sitefundgoal_timeleft.total_seconds >= -604800 %}
|
|
<div class="fundraiser-top-text ph3 pt2 pb3 mb2 mb3-ns">
|
|
<div class="mw8 center ph2 ph4-ns">
|
|
<div class="mt2 mb3 tc">
|
|
{% if datetime_now < sitefundgoal.fundraiser_endtime %}
|
|
{% if this_match_remaining <= 0 %}
|
|
Thanks to so many donors, we earned our full match!
|
|
Help us go further to stand up for software freedom — <a href="/sustainer">sign up now</a>!
|
|
{% else %}
|
|
{% if sitefundgoal_timeleft.days == 0 %}
|
|
For the next {% widthratio sitefundgoal_timeleft.total_seconds 3600 1 %} hours <strong>only</strong>, the
|
|
{% elif sitefundgoal_timeleft.days == 1 %}
|
|
Through tomorrow only, the
|
|
{% elif sitefundgoal_timeleft.days < 14 %}
|
|
For only {{ sitefundgoal_timeleft.days }} more days, the
|
|
{% else %}
|
|
Until January 15, the
|
|
{% endif %}
|
|
next ${{ this_match_remaining|floatformat:0|intcomma }} of <a href="/sustainer/">support we receive</a> will be matched!
|
|
|
|
{% endif %}
|
|
{% else %}
|
|
Thank you so much to all our donors who participated in our donation match challenge! Here are the results:
|
|
{% endif %}
|
|
</div>
|
|
|
|
{% if 1 %}
|
|
<a href="/sustainer/" style="text-decoration: none !important">
|
|
<div id="siteprogressbar" class="flex items-stretch w-100">
|
|
{% if this_match_remaining <= 0 %}
|
|
<div class="progress matched pv1 b flex items-center" style="flex-basis: {{ this_match_so_far }}px">
|
|
<span id="site-fundraiser-match-count" class="soFarText tc w-100">${{ this_match_goal|floatformat:0|intcomma }} fully matched!</span>
|
|
</div>
|
|
<div class="progress exceeded pv1 b flex items-center" style="flex-basis: {{ this_match_exceeded }}px">
|
|
<span id="site-fundraiser-match-count" class="soFarText tc w-100 exceeded">${{this_match_exceeded|floatformat:0|intcomma }} additional<br> raised!<br></span>
|
|
</div>
|
|
{% else %}
|
|
<div class="progress pv1 b flex items-center" style="flex-basis: {{ this_match_so_far }}px">
|
|
<span id="site-fundraiser-match-count" class="soFarText tc w-100">${{ this_match_so_far|floatformat:0|intcomma }} matched!</span>
|
|
</div>
|
|
<div class="final-goal pv1 b flex items-center" style="flex-basis: {{ this_match_remaining }}px">
|
|
<span id="site-fundraiser-final-goal" class="goalText tc w-100">${{ this_match_remaining|floatformat:0|intcomma }} to go!</span>
|
|
</div>
|
|
{% endif %}
|
|
</div>
|
|
</a>
|
|
{% endif %}
|
|
|
|
</div>
|
|
</div>
|
|
{% endif %}
|
|
{% endwith %}
|
|
{% endwith %}
|