Move fundraising goal banner into a template include

This commit is contained in:
Ben Sturmfels 2023-10-20 12:47:58 +11:00
parent e9bdb18b7e
commit 838fdcbfa4
Signed by: bsturmfels
GPG key ID: 023C05E2C9C068F0
2 changed files with 78 additions and 76 deletions

View file

@ -0,0 +1,77 @@
{% 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 %}
<div class="fundraiser-top-text ph3 pt2 pb3 mb2 mb3-ns">
<div class="mw8 center ph2 ph4-ns">
<div class="mt2 mb3 tc">
{% 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 &mdash; <a href="/sustainer">sign up now</a>!
{% else %}
{% if sitefundgoal_timeleft.total_seconds <= 0 %}
The
{% elif sitefundgoal_timeleft.days == 0 %}
Through today only, 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 %}
</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>
{% endwith %}
{% endwith %}

View file

@ -1,5 +1,3 @@
{% load humanize %}
{% load subtract %}
{% load min %}
{% load static %}
@ -83,81 +81,8 @@
</div>
{% 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 %}
{% if datetime_now < sitefundgoal.fundraiser_endtime %}
{% 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 %}
<div class="fundraiser-top-text ph3 pt2 pb3">
<div class="mw8 center ph2 ph4-ns">
<div class="mt2 mb3 tc">
{% 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 &mdash; <a href="/sustainer">sign up now</a>!
{% else %}
{% if sitefundgoal_timeleft.total_seconds <= 0 %}
The
{% elif sitefundgoal_timeleft.days == 0 %}
Through today only, 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 %}
</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>
{% endwith %}
{% endwith %}
{% include "fundgoal/fundraiser_goal_banner_partial.html" %}
{% endif %}
<div class="mw8 center ph2 ph3">