(profile) embed code generator

This commit is contained in:
Andrea Vos 2025-09-15 10:28:29 +02:00
parent a8529c49b1
commit 5745dcc52f
31 changed files with 75 additions and 30 deletions

View File

@ -9,7 +9,7 @@ const onlyFirst = ref(true);
<template>
<div>
<ClipboardLinkButton :link="url + (onlyFirst ? '?only_first_days' : '')" :class="small ? 'btn-sm' : ''" />
<ClipboardLinkButton :link="url + (onlyFirst ? '?only_first_days' : '')" :class="small ? 'btn-sm' : ''" label="crud.copyLink" />
<a :href="url + (onlyFirst ? '?only_first_days' : '')" :class="['btn', 'btn-outline-primary', 'm-1', small ? 'btn-sm' : '']">
<Icon v="calendar-plus" />
<T :params="{ name: '.ics' }">crud.download</T>

View File

@ -3,6 +3,7 @@ import { useClipboard } from '@vueuse/core';
const props = defineProps<{
link: string;
label?: string;
}>();
const { copy, copied } = useClipboard({ source: props.link });
@ -11,6 +12,6 @@ const { copy, copied } = useClipboard({ source: props.link });
<template>
<button type="button" :class="['btn', copied ? 'btn-success' : 'btn-outline-primary', 'm-1']" @click="copy()">
<Icon :v="copied ? 'clipboard-check' : 'clipboard'" />
<T>crud.copy</T>
<T>{{ label || 'crud.copy'}}</T>
</button>
</template>

View File

@ -91,6 +91,7 @@ const user = userAsyncData.data;
const terms = ref<TermsEntryRaw[]>([]);
const cardMenuVisible = ref(false);
const embedMenuVisible = ref(false);
const icsMenuVisible = ref(false);
const cardsEnabled = ref(true);
@ -224,6 +225,10 @@ const { data: latestPosts } = useAsyncData('latest-posts', async () => {
}, {
lazy: true,
});
const embedCode = computed(() => {
return `<iframe src="${getUrlForLocale(config.locale)}/card/@${username.value}" style="border:0; width:100%; height:400px;" loading="lazy" referrerpolicy="no-referrer"><a href="${getUrlForLocale(config.locale)}/@${username.value}" target="_blank" rel="noopener">@${username.value}</a></iframe>`;
});
</script>
<template>
@ -385,6 +390,18 @@ const { data: latestPosts } = useAsyncData('latest-posts', async () => {
</span>
</div>
</template>
<a v-if="!embedMenuVisible" href="#" class="list-group-item list-group-item-action list-group-item-hoverable" @click.prevent="embedMenuVisible = true">
<Icon v="box-full" />
<T>profile.embed.header</T>
</a>
<div v-else class="list-group-item">
<p class="small">
<Icon v="box-full" />
<T>profile.embed.header</T><T>quotation.colon</T>
</p>
<textarea class="form-control form-control-sm mb-2" rows="3" readonly v-model="embedCode"></textarea>
<ClipboardLinkButton :link="embedCode" class="w-100" />
</div>
<template v-if="(profile.events?.length ?? 0) + (profile.customEvents?.length ?? 0) > 0">
<a
v-if="!icsMenuVisible"

View File

@ -987,7 +987,8 @@ crud:
author: 'Added by'
saved: 'Changes saved successfully!'
loginRequired: '{/account=Log in} to submit an entry'
copy: 'Copy link'
copyLink: 'Copy link'
copy: 'Copy'
download: 'Download %name%'
loadAll: 'Load all…'
validation:

View File

@ -848,7 +848,8 @@ crud:
all: 'الجميع'
saved: 'التغييرات تم حفظها بنجاح!'
loginRequired: 'يجب عليك {/الحساب=تسجيل الدخول} لإرسال إدخال'
copy: 'نسخ الرابط'
copyLink: 'نسخ الرابط'
copy: 'نسخ'
download: 'تحميل %name%'
loadAll: 'تحميل الكل...'
validation:

View File

@ -1107,7 +1107,8 @@ crud:
author: 'Hinzugefügt von'
saved: 'Änderungen erfolgreich gespeichert!'
loginRequired: '{/account=Log dich ein} um Eintrag einzureichen'
copy: 'Link kopieren'
copyLink: 'Link kopieren'
copy: 'Kopieren'
download: '%name% herunterladen'
loadAll: 'Alle laden...'
validation:

View File

@ -1169,6 +1169,8 @@ profile:
description: 'Only logged in users can see your full card.'
always: 'Your username, avatar and pronouns will remain public regardless of the visibility settings.'
accessDenied: 'This card is only visible to logged in users.'
embed:
header: 'Embed code'
share: 'Share'
@ -1187,7 +1189,8 @@ crud:
author: 'Added by'
saved: 'Changes saved successfully!'
loginRequired: '{/account=Log in} to submit an entry'
copy: 'Copy link'
copyLink: 'Copy link'
copy: 'Copy'
download: 'Download %name%'
loadAll: 'Load all…'
validation:

View File

@ -880,7 +880,8 @@ crud:
listMaxLength: 'La maksimuma kvanto de elementoj en ĉi tiu listo estas %maxlength%.'
invalidLink: 'Nevalida URL-aranĝo'
genericForm: 'La alsendita folmuralo estas nevalida. Bonvolu korekti la erarojn kaj realsendi ĝin.'
copy: 'Kopii ligilon'
copyLink: 'Kopii ligilon'
copy: 'Kopii'
alt: 'Alternativa teksto'
search:

View File

@ -913,7 +913,8 @@ crud:
author: 'Añadido por'
saved: 'Los cambios se guardaron exitosamente!'
loginRequired: '{/cuenta=Iniciar sesión} para enviar un ítem'
copy: 'Copiar enlace'
copyLink: 'Copiar enlace'
copy: 'Copiar'
download: 'Descargar %name%'
loadAll: 'Cargar todo…'
validation:

View File

@ -744,7 +744,8 @@ crud:
author: 'Lisas'
saved: 'Muudatused edukalt salvestatud!'
loginRequired: 'Kirjete esitamiseks {/account=logi sisse}'
copy: 'Kopeeri link'
copyLink: 'Kopeeri link'
copy: 'Kopeeri'
download: 'Laadi alla %name%'
loadAll: 'Laadi kõik…'
validation:

View File

@ -1209,7 +1209,8 @@ crud:
author: 'Lagt aftrat av'
saved: 'Broytingar vóru goymdar!'
loginRequired: '{/brúkari=Rita in} fyri at senda uppskot inn'
copy: 'Avrita leinkið'
copyLink: 'Avrita leinkið'
copy: 'Avrita'
download: 'Tak niður %name%'
loadAll: 'Heinta alt…'
validation:

View File

@ -671,7 +671,8 @@ crud:
author: 'Ajouté par'
saved: 'Modifications enregistrées !'
loginRequired: '{/compte=Connectez-vous} pour proposer un mot'
copy: 'Copier le lien'
copyLink: 'Copier le lien'
copy: 'Copier'
download: 'Télécharger %name%'
alt: 'Texte alternatif'

View File

@ -495,7 +495,8 @@ crud:
author: 'Adicionado por'
saved: 'Alterações salvas com sucesso!'
loginRequired: 'Faça {/conta=login} para participar do nosso banco de dados'
copy: 'Copiar link'
copyLink: 'Copiar link'
copy: 'Copiar'
download: 'Baixar %name%'
footer:

View File

@ -850,7 +850,8 @@ crud:
author: 'által hozzáadott'
saved: 'A változtatások sikeresen el lettek mentve!'
loginRequired: '{/fiók=Jelentkezzen be} ahoz hogy egy elemet küldhessen'
copy: 'Link másolása'
copyLink: 'Link másolása'
copy: 'Másolása'
download: 'Letöltés %name%'
loadAll: 'Minden betöltése…'
validation:

View File

@ -1075,7 +1075,8 @@ crud:
author: 'Aggiunto da'
saved: 'Modifiche salvate con successo!'
loginRequired: '{/account=Log in} per inviare una proposta'
copy: 'Copia link'
copyLink: 'Copia link'
copy: 'Copia'
download: 'Download %name%'
loadAll: 'Carica tutti...'
validation:

View File

@ -678,7 +678,7 @@ crud:
author: 'によって追加'
saved: '変更の保存に成功しました!'
loginRequired: '記入を送信するには、{/アカウント=ログイン}する必要があります。'
copy: 'リンクをコピー'
copyLink: 'リンクをコピー'
download: 'ダウンロード %name%'
alt: '代替テキスト'

View File

@ -696,7 +696,7 @@ crud:
author: '추가한 사람'
saved: '저장 성공!'
loginRequired: '{/account=로그인}하고 항목 제출하세요'
copy: '링크 복사'
copyLink: '링크 복사'
download: '다운로드 %name%'
loadAll: '모두 보기…'
validation:

View File

@ -532,7 +532,8 @@ crud:
author: 'Adisyonado por'
saved: 'Los trokamientos se guadraron kon sukseso!'
loginRequired: '{/kuento=Konektarte} para embiar una propozision'
copy: 'Kopiar atadijo'
copyLink: 'Kopiar atadijo'
copy: 'Kopiar'
download: 'Abashar %name%'
footer:

View File

@ -1132,7 +1132,8 @@ crud:
author: 'Lagt til av'
saved: 'Endringer er lagret!'
loginRequired: '{/konto=Logg in} for å sende inn et bidrag'
copy: 'Kopier lenke'
copyLink: 'Kopier lenke'
copy: 'Kopier'
download: 'Last ned %name%'
loadAll: 'Last inn alle…'
validation:

View File

@ -614,7 +614,8 @@ crud:
author: 'Toegevoegd door'
saved: 'Veranderingen succesvol opgeslagen!'
loginRequired: '{/account=Login} om een toevoeging in te dienen'
copy: 'Kopieer link'
copyLink: 'Kopieer link'
copy: 'Kopieer'
download: 'Download %name%'
footer:

View File

@ -1134,7 +1134,8 @@ crud:
author: 'Lagt til av'
saved: 'Endringar er lagra!'
loginRequired: '{/konto=Logg in} for å sende inn eit bidrag'
copy: 'Kopier lenkje'
copyLink: 'Kopier lenkje'
copy: 'Kopier'
download: 'Last ned %name%'
loadAll: 'Last inn alle…'
validation:

View File

@ -1806,6 +1806,8 @@ profile:
description: 'Tylko zalogowane osoby mogą zobaczyć Twoją pełną wizytówkę.'
always: 'Twoja nazwa użytkownicza, awatar i zaimki pozostaną widoczne niezależnie od ustawień widoczności.'
accessDenied: 'Ta wizytówka jest widoczna wyłącznie dla zalogowanych osób.'
embed:
header: 'Kod osadzania'
pronunciation:
play: 'Odtwórz dźwięk'
@ -1909,7 +1911,8 @@ crud:
author: 'Dodane przez'
saved: 'Zmiany zapisane!'
loginRequired: '{/konto=Zaloguj się}, aby zgłosić wpis'
copy: 'Skopiuj link'
copyLink: 'Skopiuj link'
copy: 'Skopiuj'
download: 'Ściągnij %name%'
loadAll: 'Załaduj wszystko…'
validation:

View File

@ -871,7 +871,8 @@ crud:
author: 'Adicionado por'
saved: 'Alterações salvas com sucesso!'
loginRequired: 'Faça {/conta=login} para participar do nosso banco de dados'
copy: 'Copiar link'
copyLink: 'Copiar link'
copy: 'Copiar'
download: 'Baixar %name%'
loadAll: 'Carregar tudo…'
validation:

View File

@ -1011,7 +1011,8 @@ crud:
author: 'Adăugat de'
saved: 'Schimbările s-au salvat cu succes!'
loginRequired: '{/cont=Loghează-te} pentru a trimite o intrare'
copy: 'Copiază linkul'
copyLink: 'Copiază linkul'
copy: 'Copiază'
download: 'Descarcă %name%'
loadAll: 'Încarcă tot…'
validation:

View File

@ -937,7 +937,8 @@ crud:
author: 'Добавлено'
saved: 'Изменения успешно сохранены!'
loginRequired: '{/account=Авторизируйтесь}, чтобы подтвердить вход в систему'
copy: 'Скопировать ссылку'
copyLink: 'Скопировать ссылку'
copy: 'Скопировать'
download: 'Скачать %name%'
validation:
listMaxLength: 'В этом списке может быть максимум %maxlength% элементов.'

View File

@ -769,7 +769,8 @@ crud:
author: 'Tillagd av'
saved: 'Ändringarna har sparats!'
loginRequired: '{/konto=Logga in} För att skicka in ett nytt inlägg'
copy: 'Kopiera länk'
copyLink: 'Kopiera länk'
copy: 'Kopiera'
download: 'Ladda ner %name%'
loadAll: 'Ladda alla...'
validation:

View File

@ -416,7 +416,7 @@ crud:
filter: 'o alasa…'
filterLong: 'o alasa…'
search: 'o alasa…'
copy: 'o jo e nasin pi lipu ni'
copyLink: 'o jo e nasin pi lipu ni'
download: 'o kama jo %name%'
alt: 'toki sitelen:'

View File

@ -1049,7 +1049,8 @@ crud:
author: 'Tarafından eklendi'
saved: 'Değişiklikler başarıyla kaydedildi!'
loginRequired: 'Bir girdi açmak için {/hesap=Kayıt ol}'
copy: 'Bağlantı kopyala'
copyLink: 'Bağlantı kopyala'
copy: 'Kopyala'
download: 'İndir %name%'
loadAll: 'Hepsini yükle…'
validation:

View File

@ -1022,7 +1022,8 @@ crud:
author: 'Додано'
saved: 'Зміни успішно збережені!'
loginRequired: '{/account=Авторизуйтеся}, щоб підтвердити вхід до системи'
copy: 'Копіювати посилання'
copyLink: 'Копіювати посилання'
copy: 'Копіювати'
download: 'Завантажити %name%'
loadAll: 'Завантажити все...'
validation:

View File

@ -861,7 +861,7 @@ crud:
author: 'Đã được thêm bởi'
saved: 'Đã lưu thay đổi thành công!'
loginRequired: '{/tài-khoản=Đăng nhập} để gửi mục'
copy: 'Sao chép đường link'
copyLink: 'Sao chép đường link'
download: 'Tải xuống %name%'
loadAll: 'Hiện tất cả…'
validation:

View File

@ -645,7 +645,7 @@ crud:
author: '提交者'
saved: '更改保存成功'
loginRequired: '提交項目前請先{/account=登入}'
copy: '複製連結'
copyLink: '複製連結'
download: '下載 %name%'
loadAll: '載入全部…'
validation: