summaryrefslogtreecommitdiff
path: root/packages/frontend/src
diff options
context:
space:
mode:
authorNila The Dragon <nilathedragon@pm.me>2024-01-09 21:32:47 +0100
committerNila The Dragon <nilathedragon@pm.me>2024-01-09 21:32:47 +0100
commit9ceb74b98d4f96d3b11e70d8a5e7293c2ae86618 (patch)
tree93a2317d6205862f3c99501f83b540f38a5eeab0 /packages/frontend/src
parentmerge: upstream (diff)
downloadsharkey-9ceb74b98d4f96d3b11e70d8a5e7293c2ae86618.tar.gz
sharkey-9ceb74b98d4f96d3b11e70d8a5e7293c2ae86618.tar.bz2
sharkey-9ceb74b98d4f96d3b11e70d8a5e7293c2ae86618.zip
feat: Implement Donation URL
Diffstat (limited to 'packages/frontend/src')
-rw-r--r--packages/frontend/src/components/MkDonation.vue10
-rw-r--r--packages/frontend/src/components/MkVisitorDashboard.vue8
-rw-r--r--packages/frontend/src/pages/about.vue1
-rw-r--r--packages/frontend/src/pages/admin/settings.vue8
-rw-r--r--packages/frontend/src/ui/_common_/common.ts8
5 files changed, 33 insertions, 2 deletions
diff --git a/packages/frontend/src/components/MkDonation.vue b/packages/frontend/src/components/MkDonation.vue
index a77ff42f94..92e4f14bbe 100644
--- a/packages/frontend/src/components/MkDonation.vue
+++ b/packages/frontend/src/components/MkDonation.vue
@@ -26,6 +26,16 @@ SPDX-License-Identifier: AGPL-3.0-only
<MkLink target="_blank" url="https://ko-fi.com/transfem">{{ i18n.ts.learnMore }}</MkLink>
</div>
</div>
+ <div v-if="instance.donationUrl" :class="$style.text">
+ <I18n :src="i18n.ts.pleaseDonateInstance" tag="span">
+ <template #host>
+ {{ instance.name ?? host }}
+ </template>
+ </I18n>
+ <div style="margin-top: 0.2em;">
+ <MkLink target="_blank" :url="instance.donationUrl">{{ i18n.ts.learnMore }}</MkLink>
+ </div>
+ </div>
<div class="_buttons">
<MkButton @click="close">{{ i18n.ts.remindMeLater }}</MkButton>
<MkButton @click="neverShow">{{ i18n.ts.neverShow }}</MkButton>
diff --git a/packages/frontend/src/components/MkVisitorDashboard.vue b/packages/frontend/src/components/MkVisitorDashboard.vue
index 9f4fc00938..8f15fa93a6 100644
--- a/packages/frontend/src/components/MkVisitorDashboard.vue
+++ b/packages/frontend/src/components/MkVisitorDashboard.vue
@@ -123,7 +123,13 @@ function showMenu(ev) {
action: () => {
window.open(instance.privacyPolicyUrl, '_blank', 'noopener');
},
- } : undefined, (!instance.impressumUrl && !instance.tosUrl && !instance.privacyPolicyUrl) ? undefined : { type: 'divider' }, {
+ } : undefined, (instance.donationUrl) ? {
+ text: i18n.ts.donation,
+ icon: 'ph-hand-coins ph-bold ph-lg',
+ action: () => {
+ window.open(instance.donationUrl, '_blank', 'noopener');
+ },
+ } : undefined, (!instance.impressumUrl && !instance.tosUrl && !instance.privacyPolicyUrl && !instance.donationUrl) ? undefined : { type: 'divider' }, {
text: i18n.ts.help,
icon: 'ph-question ph-bold ph-lg',
action: () => {
diff --git a/packages/frontend/src/pages/about.vue b/packages/frontend/src/pages/about.vue
index 8209515065..f0bbcebd56 100644
--- a/packages/frontend/src/pages/about.vue
+++ b/packages/frontend/src/pages/about.vue
@@ -47,6 +47,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</MkKeyValue>
</FormSplit>
<FormLink v-if="instance.impressumUrl" :to="instance.impressumUrl" external>{{ i18n.ts.impressum }}</FormLink>
+ <FormLink v-if="instance.donationUrl" :to="instance.donationUrl" external>{{ i18n.ts.donation }}</FormLink>
<div class="_gaps_s">
<MkFolder v-if="instance.serverRules.length > 0">
<template #label>{{ i18n.ts.serverRules }}</template>
diff --git a/packages/frontend/src/pages/admin/settings.vue b/packages/frontend/src/pages/admin/settings.vue
index d08bfac74a..f11d37ab23 100644
--- a/packages/frontend/src/pages/admin/settings.vue
+++ b/packages/frontend/src/pages/admin/settings.vue
@@ -40,6 +40,11 @@ SPDX-License-Identifier: AGPL-3.0-only
<template #caption>{{ i18n.ts.impressumDescription }}</template>
</MkInput>
+ <MkInput v-model="donationUrl" type="url">
+ <template #label>{{ i18n.ts.donationUrl }}</template>
+ <template #prefix><i class="ph-link ph-bold ph-lg"></i></template>
+ </MkInput>
+
<MkTextarea v-model="pinnedUsers">
<template #label>{{ i18n.ts.pinnedUsers }}</template>
<template #caption>{{ i18n.ts.pinnedUsersDescription }}</template>
@@ -170,6 +175,7 @@ const description = ref<string | null>(null);
const maintainerName = ref<string | null>(null);
const maintainerEmail = ref<string | null>(null);
const impressumUrl = ref<string | null>(null);
+const donationUrl = ref<string | null>(null);
const pinnedUsers = ref<string>('');
const cacheRemoteFiles = ref<boolean>(false);
const cacheRemoteSensitiveFiles = ref<boolean>(false);
@@ -192,6 +198,7 @@ async function init(): Promise<void> {
maintainerName.value = meta.maintainerName;
maintainerEmail.value = meta.maintainerEmail;
impressumUrl.value = meta.impressumUrl;
+ donationUrl.value = meta.donationUrl;
pinnedUsers.value = meta.pinnedUsers.join('\n');
cacheRemoteFiles.value = meta.cacheRemoteFiles;
cacheRemoteSensitiveFiles.value = meta.cacheRemoteSensitiveFiles;
@@ -215,6 +222,7 @@ async function save(): void {
maintainerName: maintainerName.value,
maintainerEmail: maintainerEmail.value,
impressumUrl: impressumUrl.value,
+ donationUrl: donationUrl.value,
pinnedUsers: pinnedUsers.value.split('\n'),
cacheRemoteFiles: cacheRemoteFiles.value,
cacheRemoteSensitiveFiles: cacheRemoteSensitiveFiles.value,
diff --git a/packages/frontend/src/ui/_common_/common.ts b/packages/frontend/src/ui/_common_/common.ts
index e7f24228b6..6e2f8b7e46 100644
--- a/packages/frontend/src/ui/_common_/common.ts
+++ b/packages/frontend/src/ui/_common_/common.ts
@@ -102,7 +102,13 @@ export function openInstanceMenu(ev: MouseEvent) {
action: () => {
window.open(instance.privacyPolicyUrl, '_blank', 'noopener');
},
- } : undefined, (!instance.impressumUrl && !instance.tosUrl && !instance.privacyPolicyUrl) ? undefined : { type: 'divider' }, {
+ } : undefined, (instance.donationUrl) ? {
+ text: i18n.ts.donation,
+ icon: 'ph-hand-coins ph-bold ph-lg',
+ action: () => {
+ window.open(instance.donationUrl, '_blank', 'noopener');
+ },
+ } : undefined, (!instance.impressumUrl && !instance.tosUrl && !instance.privacyPolicyUrl && !instance.donationUrl) ? undefined : { type: 'divider' }, {
text: i18n.ts.help,
icon: 'ph-question ph-bold ph-lg',
action: () => {