Compare commits

...

2 Commits

Author SHA1 Message Date
Maxim Lebedev 7bf8eb47fc
Added DonationAlerts processor support
/ docker (push) Successful in 1m13s Details
2023-12-16 21:35:42 +06:00
Maxim Lebedev b407086e2b
Added Ko-fi processor support 2023-12-16 20:43:22 +06:00
5 changed files with 614 additions and 379 deletions

View File

@ -12,8 +12,10 @@ type (
}
ConfigProcessors struct {
PayPal string `env:"PAYPAL"`
Liberapay string `env:"LIBERAPAY"`
YooMoney string `env:"YOOMONEY"`
PayPal string `env:"PAYPAL"`
Liberapay string `env:"LIBERAPAY"`
YooMoney string `env:"YOOMONEY"`
Kofi string `env:"KOFI"`
DonationAlerts string `env:"DONATION_ALERTS"`
}
)

View File

@ -41,8 +41,9 @@ async function updateButtons() {
let inAmount = (!el.dataset.amountMin || el.dataset.amountMin <= form.amount) &&
(!el.dataset.amountMax || form.amount <= +el.dataset.amountMax);
let inPeriod = (!el.dataset.periodMin || +el.dataset.periodMin <= form.period) &&
(!el.dataset.periodMax || form.period <= +el.dataset.periodMax);
let inRegion = Boolean(el.dataset.inRussia) == form.inRussia;
(!el.dataset.periodMax || form.period <= +el.dataset.periodMax) &&
(!el.dataset.periodExcept || form.period != +el.dataset.periodExcept);
let inRegion = !el.dataset.inRussia || (el.dataset.inRussia == 'true') == form.inRussia;
if (form.amount == 0.0 || inAmount && inPeriod && inRegion) {
el.href = el.dataset.pattern.

View File

@ -99,6 +99,18 @@ button[href*='yoomoney.ru'] {
--color: hsl(0, 0%, 100%);
}
.button[href*='ko-fi.com'],
button[href*='ko-fi.com'] {
--background: hsl(199, 100%, 42%);
--color: hsl(0, 0%, 100%);
}
.button[href*='donationalerts.com'],
button[href*='donationalerts.com'] {
--background: hsl(30, 94%, 49%);
--color: hsl(0, 0%, 95%);
}
.with-icon .icon,
.button .icon,
.button svg,

View File

@ -101,6 +101,7 @@ func NewContext(processors domain.ConfigProcessors, lang language.Tag, amount ui
<a class="[ button ][ js-button ]"{% space %}
data-period-min="1"{% space %}
data-period-max="365"{% space %}
data-in-russia="false"{% space %}
data-pattern="https://liberapay.com/{%s ctx.processors.Liberapay %}/donate?amount=%f&currency=USD&period=%p"{% space %}
rel="noopener noreferrer payment"{% space %}
href="https://liberapay.com/{%s ctx.processors.Liberapay %}/donate{% if ctx.amount > 0 %}?amount={%f.2 float64(ctx.amount) / 100 %}&currency=USD&period=monthly{% endif %}">
@ -114,6 +115,7 @@ func NewContext(processors domain.ConfigProcessors, lang language.Tag, amount ui
<li>
<a class="[ button ][ js-button ]"{% space %}
data-period-max="1"{% space %}
data-in-russia="false"{% space %}
data-pattern="https://www.paypal.me/{%s ctx.processors.PayPal %}/%fUSD"{% space %}
rel="noopener noreferrer payment"{% space %}
href="https://www.paypal.me/{%s ctx.processors.PayPal %}{% if ctx.amount > 0 %}/{%f.2 float64(ctx.amount) / 100 %}USD{% endif %}">
@ -139,6 +141,36 @@ func NewContext(processors domain.ConfigProcessors, lang language.Tag, amount ui
</a>
</li>
{% endif %}
{% if ctx.processors.Kofi != "" %}
<li>
<a class="[ button ][ js-button ]"{% space %}
data-amount-min="200"{% space %}
data-period-max="30"{% space %}
data-period-except="7"{% space %}
data-in-russia="false"{% space %}
data-pattern="https://ko-fi.com/{%s ctx.processors.Kofi %}/%d"{% space %}
rel="noopener noreferrer payment"{% space %}
href="https://ko-fi.com/{%s ctx.processors.Kofi %}{% if ctx.amount > 0 %}/{%f.2 float64(ctx.amount) / 100 %}{% endif %}">
{%= icon("kofi") %}
Ko-fi
</a>
</li>
{% endif %}
{% if ctx.processors.DonationAlerts != "" %}
<li>
<a class="[ button ][ js-button ]"{% space %}
data-amount-min="1"{% space %}
data-period-max="1"{% space %}
data-pattern="https://www.donationalerts.com/r/{%s ctx.processors.DonationAlerts %}"{% space %}
rel="noopener noreferrer payment"{% space %}
href="https://www.donationalerts.com/r/{%s ctx.processors.DonationAlerts %}">
{%= icon("da") %}
DonationAlerts
</a>
</li>
{% endif %}
</ul>
{% endfunc %}
@ -229,6 +261,38 @@ func NewContext(processors domain.ConfigProcessors, lang language.Tag, amount ui
<path fill="#fff" d="M109 0a59.9 59.9 0 1 0 0 120c33 0 60-27 60-60S142 0 109 0Zm0 82.4A22.7 22.7 0 0 1 86.6 60 22.7 22.7 0 0 1 109 37.6 22.7 22.7 0 0 1 131.4 60 23 23 0 0 1 109 82.4Z"/>
<path fill="#fff" d="M48.6 17.5v87.3H27.3L0 17.5h48.6Z"/>
</svg>
{% case "kofi" %}
<svg class="icon"{% space %}
width="32"{% space %}
height="32"{% space %}
viewBox="0 0 665.2 436.4"{% space %}
aria-hidden="true"{% space %}
focusable="false"{% space %}
xmlns="http://www.w3.org/2000/svg">
<defs>
<linearGradient id="a" x1="336" x2="421.7" y1="4124.6" y2="3861.6" gradientTransform="matrix(1 0 0 -1 4.1 4362.6)" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#ff4ea3"/>
<stop offset="1" stop-color="#ff5e5b"/>
</linearGradient>
</defs>
<path fill="#fff" d="M516.5 242c-23.9 2.6-43.7 1.2-43.7 1.2V93.6h30.5a67.4 67.4 0 0 1 67.5 70.3c0 49-25.2 68.8-54.3 78zM645 137.3c-9.2-46.4-33-75.5-59.5-92.7a157 157 0 0 0-90.1-27.8H39.6c-16 0-22.5 16-22.5 23.9V46s-1.3 201.3 1.2 310c4 63.6 67.6 63.6 67.6 63.6s208 0 308.6-1.3c5.3 0 9.2 0 14.5-1.3 57-14.5 62.3-67.5 62.3-96.7 114 5.1 194.9-75.7 173.7-183z"/>
<path d="M661.5 134.2v-.2C650.2 77.2 619 46.5 594.9 30.7A174.7 174.7 0 0 0 495.4 0H39.6C14 0 .3 23.6.3 40.7v5.2c0 2-1.2 202.7 1.3 310.5v.6c2.5 41 25.7 60.5 44.7 69.7 19.6 9.5 38.8 9.7 39.6 9.7 8.6 0 210 0 308.7-1.3 5.7 0 11.2 0 18.4-1.7l.2-.1a91 91 0 0 0 63.6-52.2c5.8-12.8 9.3-27.2 10.6-43.9 27.6-.7 53.5-6.1 77-16.2a168 168 0 0 0 62.7-45.1c32.7-38 45-88.3 34.4-141.7zm-626.4 221C32.6 249.4 33.8 54.2 34 46v-5.2c0-.5 1.2-7.3 5.7-7.3h455.8a140.8 140.8 0 0 1 81 25.2c27.3 17.8 45 45.4 52.2 81.9 8.5 43-1.1 83.3-27 113.4-29.1 33.9-76.3 52-129.5 49.5a16.8 16.8 0 0 0-17.6 16.8c0 45.6-16.2 71.9-49.4 80.4-3.3.8-5.7.8-10.5.8h-.3c-87.6 1.1-256.8 1.3-306.6 1.3H86s-12.6-.3-25-6.3c-15.8-7.7-24.5-21.6-25.8-41.3z"/>
<path d="M471.6 260c.6 0 6 .4 14.5.4 11 0 21.9-.6 32.3-1.8 1-.1 2.1-.3 3.2-.7 43.8-13.9 66-45.5 66-94a84 84 0 0 0-20-57.2 82.2 82.2 0 0 0-64.4-29.9h-30.4c-9.3 0-16.8 7.5-16.8 16.8v149.6c0 8.8 6.8 16.2 15.6 16.8zm18-33.2V110.4h13.7c15.4 0 29.1 6.3 38.7 17.8l.2.3c8 9.1 11.8 20.7 11.8 35.4 0 33.5-12.3 52-41 61.5a258 258 0 0 1-23.5 1.4z"/>
<path fill="#ff5e5b" d="M241 334.7c5.2 2.6 7.9 0 7.9 0s72.9-66.3 106-104.6c29-34.5 30.5-91.5-18.6-112.6C286 96.2 245 142.6 245 142.6c-35.8-39.7-90-37-115.3-10.6-25.1 26.5-15.9 71.6 2.7 98 17.2 24 94 92.8 106 103.4 0-1.4 1.3 0 2.6 1.3z"/>
<path fill="url(#a)" d="M410.8 618.4c3 .6 5.5-2 5.5-2s72.9-66.2 106-104.5c29.1-34.5 30.5-91.5-18.6-112.6-50.3-21.3-91.4 25.1-91.4 25.1-35.8-39.7-90-37-115.2-10.6-25.2 26.5-16 71.6 2.6 98 16.2 22.6 97.5 95.7 107.7 104.9 1 .8 2.1 1.5 3.4 1.7z" transform="translate(-167.4 -281.8)"/>
</svg>
{% case "da" %}
<svg class="icon"{% space %}
width="32"{% space %}
height="32"{% space %}
viewBox="0 0 69 80"{% space %}
aria-hidden="true"{% space %}
focusable="false"{% space %}
xmlns="http://www.w3.org/2000/svg">
<path fill="#FFF" d="M34.9 46.6h-5.5c-.3 0-.6-.1-.8-.3a1 1 0 0 1-.3-.8l.5-4.9c0-.5.5-1 1.1-1h5.4c.4 0 .7.2.9.4.2.2.3.5.3.8l-.5 4.9c0 .5-.6.9-1.1.9Zm.8-9.6h-5.5a1 1 0 0 1-1.1-1l1.5-16.6c0-.5.5-.9 1.1-.9h5.5a1 1 0 0 1 1.1 1l-1.5 16.6c0 .5-.5.9-1 1Zm32.5-19.2c.6.6.9 1.5.8 2.4l-2.2 24.6c0 .8-.4 1.5-1 2L48.2 64c-.7.6-1.5 1-2.4 1H27L10.5 80l1.3-15.2H3.4A3.4 3.4 0 0 1 0 61.2L5.1 3c.2-1.7 1.7-3 3.4-3h42.8c1 0 2 .4 2.6 1.2l14.3 16.6ZM55.2 40l1.3-15.2c0-.9-.3-1.7-.9-2.4l-8-9.3A3.4 3.4 0 0 0 45 12H19.6a3.4 3.4 0 0 0-3.4 3l-3 34a3.4 3.4 0 0 0 3.4 3.7h25a3 3 0 0 0 2.3-1L54 42.3a3 3 0 0 0 1-2.1Z"/>
</svg>
{% endswitch %}
{% endfunc %}
{% endstripspace %}

File diff suppressed because it is too large Load Diff