From 1a6eb7e2ff0bf551e1560c67170e90fa8ec2a8ea Mon Sep 17 00:00:00 2001
From: Joe Carstairs <118172583+jcarstairs-scottlogic@users.noreply.github.com>
Date: Thu, 25 Jan 2024 16:59:42 +0000
Subject: 33 / Pay annual subscription by PayPal (#68)
* Refactors paypal-buttons -> paypal-product-buttons WebComponent
* Pulls out address to data file
* Defines annual subscription prices data hash
* Styles paypal-product-buttons
* Styles
* Details have cursor:pointer on the summary
* Moves Jyne section to separate page
* Rewrites payment options using details components
* Reworks translation typing
* Defines MembershipType enum
* Adds translations for MembershipType enum
* Can pay annual subs by PayPal
* Styles tables better
---
.../furthsettins/lallans/[issueNumber]/index.astro | 1 +
.../furthsettins/scotsoun/[scotsounId]/index.astro | 1 +
src/pages/[locale]/index.astro | 27 +-----
src/pages/[locale]/jyne/index.astro | 104 +++++++++++++++++++++
.../jyne/paypal/[membershipType]/index.astro | 41 ++++++++
.../jyne/paypal/[membershipType]/success.astro | 30 ++++++
src/pages/[locale]/jyne/paypal/index.astro | 27 ++++++
7 files changed, 205 insertions(+), 26 deletions(-)
create mode 100644 src/pages/[locale]/jyne/index.astro
create mode 100644 src/pages/[locale]/jyne/paypal/[membershipType]/index.astro
create mode 100644 src/pages/[locale]/jyne/paypal/[membershipType]/success.astro
create mode 100644 src/pages/[locale]/jyne/paypal/index.astro
(limited to 'src/pages')
diff --git a/src/pages/[locale]/furthsettins/lallans/[issueNumber]/index.astro b/src/pages/[locale]/furthsettins/lallans/[issueNumber]/index.astro
index 48f1947..82fabf0 100644
--- a/src/pages/[locale]/furthsettins/lallans/[issueNumber]/index.astro
+++ b/src/pages/[locale]/furthsettins/lallans/[issueNumber]/index.astro
@@ -23,4 +23,5 @@ const issue = await getLallansIssue[issueNumber]();
+
diff --git a/src/pages/[locale]/furthsettins/scotsoun/[scotsounId]/index.astro b/src/pages/[locale]/furthsettins/scotsoun/[scotsounId]/index.astro
index 90053fe..4244f70 100644
--- a/src/pages/[locale]/furthsettins/scotsoun/[scotsounId]/index.astro
+++ b/src/pages/[locale]/furthsettins/scotsoun/[scotsounId]/index.astro
@@ -24,4 +24,5 @@ const scotsoun = await getScotsoun[scotsounId]();
+
diff --git a/src/pages/[locale]/index.astro b/src/pages/[locale]/index.astro
index e8b9cf0..d930c20 100644
--- a/src/pages/[locale]/index.astro
+++ b/src/pages/[locale]/index.astro
@@ -55,36 +55,11 @@ const mostRecentNewsItem = await getMostRecentNewsItem(locale);
-
-
diff --git a/src/pages/[locale]/jyne/index.astro b/src/pages/[locale]/jyne/index.astro
new file mode 100644
index 0000000..7a1b4f6
--- /dev/null
+++ b/src/pages/[locale]/jyne/index.astro
@@ -0,0 +1,104 @@
+---
+import type Locale from '$types/Locale';
+
+import { annualSubscriptionPrice } from '$data/subscriptionPrices';
+import contactDetails from '$data/contactDetails';
+import Page from '$layouts/Page.astro';
+import localeStaticPaths from '$lib/localeStaticPaths';
+import translate from '$i18n/translate';
+import tPage from '$i18n/translations/pages/jyne';
+import tMembershipType from '$i18n/translations/enums/membershipType';
+import { allMembershipTypes } from '$enums/MembershipType';
+
+export async function getStaticPaths() {
+ return localeStaticPaths;
+}
+
+const locale = Astro.params.locale as Locale;
+const t = translate(locale);
+---
+
+
+
+
+
+
+
+
+
+ {t(tPage, { key: 'subscription-price-table-caption' })}
+
+
+ {
+ allMembershipTypes.map((membershipType) => (
+ | {t(tMembershipType, { key: membershipType })} |
+ ))
+ }
+
+
+
+
+
+ {
+ allMembershipTypes.map((membershipType) => (
+ |
+ {new Intl.NumberFormat('en-GB', {
+ style: 'currency',
+ currency: 'GBP',
+ minimumFractionDigits: 2,
+ maximumFractionDigits: 2,
+ }).format(annualSubscriptionPrice[membershipType])}
+ |
+ ))
+ }
+
+
+
+
+
+ -
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pages/[locale]/jyne/paypal/[membershipType]/index.astro b/src/pages/[locale]/jyne/paypal/[membershipType]/index.astro
new file mode 100644
index 0000000..0934854
--- /dev/null
+++ b/src/pages/[locale]/jyne/paypal/[membershipType]/index.astro
@@ -0,0 +1,41 @@
+---
+import type Locale from '$types/Locale';
+import {
+ type MembershipTypeSnakeCase,
+ allMembershipTypesSnakeCase,
+ snakeCaseToMembershipType,
+} from '$enums/MembershipType';
+import { annualSubscriptionPrice } from '$data/subscriptionPrices';
+import Page from '$layouts/Page.astro';
+import PaypalProductButtons from '$components/PaypalProductButtons.astro';
+import localeStaticPaths from '$lib/localeStaticPaths';
+import translate from '$i18n/translate';
+import tJyne from '$i18n/translations/pages/jyne';
+
+export async function getStaticPaths() {
+ return allMembershipTypesSnakeCase.flatMap((membershipType) =>
+ localeStaticPaths.map((p) => ({ ...p, params: { ...p.params, membershipType } }))
+ );
+}
+
+const locale = Astro.params.locale as Locale;
+const t = translate(locale);
+
+const membershipType = Astro.params.membershipType as MembershipTypeSnakeCase;
+---
+
+
+
+ {t(tJyne, { key: `membership-type-${membershipType}` })}
+
+
+
+
+
+
+
diff --git a/src/pages/[locale]/jyne/paypal/[membershipType]/success.astro b/src/pages/[locale]/jyne/paypal/[membershipType]/success.astro
new file mode 100644
index 0000000..569e294
--- /dev/null
+++ b/src/pages/[locale]/jyne/paypal/[membershipType]/success.astro
@@ -0,0 +1,30 @@
+---
+import type Locale from '$types/Locale';
+import { type MembershipTypeSnakeCase } from '$enums/MembershipType';
+
+import Page from '$layouts/Page.astro';
+import { allMembershipTypesSnakeCase, snakeCaseToMembershipType } from '$enums/MembershipType';
+import localeStaticPaths from '$lib/localeStaticPaths';
+import translate from '$i18n/translate';
+import tJyne from '$i18n/translations/pages/jyne';
+
+export async function getStaticPaths() {
+ return allMembershipTypesSnakeCase.flatMap((membershipType) =>
+ localeStaticPaths.map((p) => ({ ...p, params: { ...p.params, membershipType } }))
+ );
+}
+
+const locale = Astro.params.locale as Locale;
+const t = translate(locale);
+
+const membershipTypeSnakeCase = Astro.params.membershipType as MembershipTypeSnakeCase;
+const membershipType = snakeCaseToMembershipType(membershipTypeSnakeCase);
+---
+
+
+
+ {t(tJyne, { key: 'success' })}
+
+
+
+
diff --git a/src/pages/[locale]/jyne/paypal/index.astro b/src/pages/[locale]/jyne/paypal/index.astro
new file mode 100644
index 0000000..55905d1
--- /dev/null
+++ b/src/pages/[locale]/jyne/paypal/index.astro
@@ -0,0 +1,27 @@
+---
+import type Locale from '$types/Locale';
+
+import Page from '$layouts/Page.astro';
+import localeStaticPaths from '$lib/localeStaticPaths';
+import translate from '$i18n/translate';
+import tJyne from '$i18n/translations/pages/jyne';
+
+export async function getStaticPaths() {
+ return localeStaticPaths;
+}
+
+const locale = Astro.params.locale as Locale;
+const t = translate(locale);
+---
+
+
+
+
--
cgit v1.2.3