Merge branch 'develop' of codeberg.org:calckey/calckey into develop
This commit is contained in:
commit
afd244351b
|
@ -1704,7 +1704,9 @@ oneWeek: Una setmana
|
|||
reflectMayTakeTime: Pot trigar una mica a reflectir-se.
|
||||
thereIsUnresolvedAbuseReportWarning: Hi ha informes sense resoldre.
|
||||
driveCapOverrideLabel: Canvieu la capacitat del disc per a aquest usuari
|
||||
isSystemAccount: Un compte creat i operat automàticament pel sistema.
|
||||
isSystemAccount: Aquest compte és creat i operat automàticament pel sistema. Si us
|
||||
plau, no modereu, editeu, suprimiu o modifiqueu aquest compte de cap forma, o podria
|
||||
trencar el vostre servidor.
|
||||
typeToConfirm: Introduïu {x} per confirmar
|
||||
deleteAccount: Suprimeix el compte
|
||||
document: Documentació
|
||||
|
@ -2056,3 +2058,4 @@ newer: Més nou
|
|||
older: Més antic
|
||||
silencedWarning: S'està mostrant aquesta pàgina per què aquest usuari és d'un servidor
|
||||
que l'administrador a silenciat, així que pot ser spam.
|
||||
jumpToPrevious: Vés a l'anterior
|
||||
|
|
|
@ -69,6 +69,7 @@ followRequestAccepted: "Follow request accepted"
|
|||
mention: "Mention"
|
||||
mentions: "Mentions"
|
||||
directNotes: "Direct messages"
|
||||
cw: "Content warning"
|
||||
importAndExport: "Import/Export Data"
|
||||
import: "Import"
|
||||
export: "Export"
|
||||
|
|
|
@ -47,8 +47,8 @@ copyContent: "Kopiëren inhoud"
|
|||
copyLink: "Kopiëren link"
|
||||
delete: "Verwijderen"
|
||||
deleteAndEdit: "Verwijderen en bewerken"
|
||||
deleteAndEditConfirm: "Weet je zeker dat je deze notitie wilt verwijderen en dan bewerken?
|
||||
Je verliest alle reacties, herdelingen en antwoorden erop."
|
||||
deleteAndEditConfirm: "Weet je zeker dat je deze post wilt verwijderen en dan bewerken?
|
||||
Je verliest alle reacties, boosts en antwoorden erop."
|
||||
addToList: "Aan lijst toevoegen"
|
||||
sendMessage: "Verstuur bericht"
|
||||
copyUsername: "Kopiëren gebruikersnaam "
|
||||
|
@ -68,7 +68,7 @@ export: "Export"
|
|||
files: "Bestanden"
|
||||
download: "Downloaden"
|
||||
driveFileDeleteConfirm: "Weet je zeker dat je het bestand \"{name}\" wilt verwijderen?
|
||||
Notities met dit bestand als bijlage worden ook verwijderd."
|
||||
Posts met dit bestand als bijlage worden ook verwijderd."
|
||||
unfollowConfirm: "Weet je zeker dat je {name} wilt ontvolgen?"
|
||||
exportRequested: "Je hebt een export aangevraagd. Dit kan een tijdje duren. Het wordt
|
||||
toegevoegd aan je Drive zodra het is voltooid."
|
||||
|
@ -101,13 +101,13 @@ followRequests: "Volgverzoeken"
|
|||
unfollow: "Ontvolgen"
|
||||
followRequestPending: "Wachten op goedkeuring volgverzoek"
|
||||
enterEmoji: "Voer een emoji in"
|
||||
renote: "Herdelen"
|
||||
renote: "Boost"
|
||||
unrenote: "Stop herdelen"
|
||||
renoted: "Herdeeld"
|
||||
cantRenote: "Dit bericht kan niet worden herdeeld"
|
||||
cantReRenote: "Een herdeling kan niet worden herdeeld"
|
||||
renoted: "Boosted."
|
||||
cantRenote: "Dit bericht kan niet worden geboost."
|
||||
cantReRenote: "Een boost kan niet worden geboost."
|
||||
quote: "Quote"
|
||||
pinnedNote: "Vastgemaakte notitie"
|
||||
pinnedNote: "Vastgemaakte post"
|
||||
pinned: "Vastmaken aan profielpagina"
|
||||
you: "Jij"
|
||||
clickToShow: "Klik om te bekijken"
|
||||
|
@ -116,7 +116,7 @@ add: "Toevoegen"
|
|||
reaction: "Reacties"
|
||||
reactionSettingDescription2: "Sleep om opnieuw te ordenen, Klik om te verwijderen,
|
||||
Druk op \"+\" om toe te voegen"
|
||||
rememberNoteVisibility: "Vergeet niet de notitie zichtbaarheidsinstellingen"
|
||||
rememberNoteVisibility: "Onthoud post zichtbaarheidsinstellingen"
|
||||
attachCancel: "Verwijder bijlage"
|
||||
markAsSensitive: "Markeren als NSFW"
|
||||
unmarkAsSensitive: "Geen NSFW"
|
||||
|
@ -139,8 +139,8 @@ flagAsCat: "Markeer dit account als een kat."
|
|||
flagAsCatDescription: "Zet deze vlag aan als je wilt aangeven dat dit account een
|
||||
kat is."
|
||||
flagShowTimelineReplies: "Toon antwoorden op de tijdlijn"
|
||||
flagShowTimelineRepliesDescription: "Als je dit vlag aanzet, toont de tijdlijn ook
|
||||
antwoorden op andere en niet alleen jouw eigen notities."
|
||||
flagShowTimelineRepliesDescription: "Als je deze vlag aanzet, toont de tijdlijn ook
|
||||
antwoorden op andere en niet alleen jouw eigen post."
|
||||
autoAcceptFollowed: "Accepteer verzoeken om jezelf te volgen vanzelf als je de verzoeker
|
||||
al volgt"
|
||||
addAccount: "Account toevoegen"
|
||||
|
@ -203,8 +203,8 @@ mutedUsers: "Gedempte gebruikers"
|
|||
blockedUsers: "Geblokkeerde gebruikers"
|
||||
noUsers: "Er zijn geen gebruikers."
|
||||
editProfile: "Bewerk Profiel"
|
||||
noteDeleteConfirm: "Ben je zeker dat je dit bericht wil verwijderen?"
|
||||
pinLimitExceeded: "Je kunt geen berichten meer vastprikken"
|
||||
noteDeleteConfirm: "Ben je zeker dat je deze post wil verwijderen?"
|
||||
pinLimitExceeded: "Je kunt geen posts meer vastprikken"
|
||||
intro: "Installatie van Calckey geëindigd! Maak nu een beheerder aan."
|
||||
done: "Klaar"
|
||||
processing: "Bezig met verwerken"
|
||||
|
@ -499,3 +499,21 @@ manageGroups: Beheer groepen
|
|||
subscribePushNotification: Pushmeldingen inschakelen
|
||||
unsubscribePushNotification: Pushmeldingen uitschakelen
|
||||
pushNotificationAlreadySubscribed: Pushmeldingen zijn al ingeschakeld
|
||||
antennaSource: Antenne bron
|
||||
antennaKeywords: Trefwoorden om naar te luisteren
|
||||
antennaExcludeKeywords: Trefwoorden om te negeren
|
||||
driveCapacityPerRemoteAccount: Schijfruimte per externe gebruiker
|
||||
backgroundImageUrl: Achtergrondafbeelding URL
|
||||
basicInfo: Basis informatie
|
||||
pinnedUsers: Vastgezette gebruikers
|
||||
pinnedPages: Vastgezette Pagina's
|
||||
driveCapacityPerLocalAccount: Schijfruimte per lokale gebruiker
|
||||
iconUrl: Icoon URL
|
||||
bannerUrl: Banner afbeelding URL
|
||||
manageAntennas: Beheer Antennes
|
||||
name: Naam
|
||||
notifyAntenna: Meld nieuwe posts
|
||||
withFileAntenna: Alleen posts met bestanden
|
||||
enableServiceworker: Schakel pushmeldingen voor je browser in
|
||||
renoteUnmute: Ontdemp boosts
|
||||
jumpToPrevious: Spring naar vorige
|
||||
|
|
|
@ -1,19 +1,8 @@
|
|||
<template>
|
||||
<div
|
||||
v-if="!muted.muted"
|
||||
v-show="!isDeleted"
|
||||
ref="el"
|
||||
v-hotkey="keymap"
|
||||
v-size="{ max: [500, 450, 350, 300] }"
|
||||
class="tkcbzcuz note-container"
|
||||
:tabindex="!isDeleted ? '-1' : null"
|
||||
:class="{ renote: isRenote }"
|
||||
>
|
||||
<MkNoteSub
|
||||
v-if="appearNote.reply && !detailedView"
|
||||
:note="appearNote.reply"
|
||||
class="reply-to"
|
||||
/>
|
||||
<div :aria-label="accessibleLabel" v-if="!muted.muted" v-show="!isDeleted" ref="el" v-hotkey="keymap"
|
||||
v-size="{ max: [500, 450, 350, 300] }" class="tkcbzcuz note-container" :tabindex="!isDeleted ? '-1' : null"
|
||||
:class="{ renote: isRenote }">
|
||||
<MkNoteSub v-if="appearNote.reply && !detailedView" :note="appearNote.reply" class="reply-to" />
|
||||
<div v-if="!detailedView" class="note-context" @click="noteClick">
|
||||
<div class="line"></div>
|
||||
<div v-if="appearNote._prId_" class="info">
|
||||
|
@ -29,79 +18,47 @@
|
|||
{{ i18n.ts.featured }}
|
||||
</div>
|
||||
<div v-if="pinned" class="info">
|
||||
<i class="ph-push-pin ph-bold ph-lg"></i
|
||||
>{{ i18n.ts.pinnedNote }}
|
||||
<i class="ph-push-pin ph-bold ph-lg"></i>{{ i18n.ts.pinnedNote }}
|
||||
</div>
|
||||
<div v-if="isRenote" class="renote">
|
||||
<i class="ph-repeat ph-bold ph-lg"></i>
|
||||
<I18n :src="i18n.ts.renotedBy" tag="span">
|
||||
<template #user>
|
||||
<MkA
|
||||
v-user-preview="note.userId"
|
||||
class="name"
|
||||
:to="userPage(note.user)"
|
||||
@click.stop
|
||||
>
|
||||
<MkA v-user-preview="note.userId" class="name" :to="userPage(note.user)" @click.stop>
|
||||
<MkUserName :user="note.user" />
|
||||
</MkA>
|
||||
</template>
|
||||
</I18n>
|
||||
<div class="info">
|
||||
<button
|
||||
ref="renoteTime"
|
||||
class="_button time"
|
||||
@click.stop="showRenoteMenu()"
|
||||
>
|
||||
<i
|
||||
v-if="isMyRenote"
|
||||
class="ph-dots-three-outline ph-bold ph-lg dropdownIcon"
|
||||
></i>
|
||||
<button ref="renoteTime" class="_button time" @click.stop="showRenoteMenu()">
|
||||
<i v-if="isMyRenote" class="ph-dots-three-outline ph-bold ph-lg dropdownIcon"></i>
|
||||
<MkTime :time="note.createdAt" />
|
||||
</button>
|
||||
<MkVisibility :note="note" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<article
|
||||
class="article"
|
||||
@contextmenu.stop="onContextmenu"
|
||||
@click="noteClick"
|
||||
>
|
||||
<article class="article" @contextmenu.stop="onContextmenu" @click="noteClick">
|
||||
<div class="main">
|
||||
<div class="header-container">
|
||||
<MkAvatar class="avatar" :user="appearNote.user" />
|
||||
<XNoteHeader
|
||||
class="header"
|
||||
:note="appearNote"
|
||||
:mini="true"
|
||||
/>
|
||||
<XNoteHeader class="header" :note="appearNote" :mini="true" />
|
||||
</div>
|
||||
<div class="body">
|
||||
<MkSubNoteContent
|
||||
class="text"
|
||||
:note="appearNote"
|
||||
:detailed="true"
|
||||
:detailedView="detailedView"
|
||||
:parentId="appearNote.parentId"
|
||||
@push="(e) => router.push(notePage(e))"
|
||||
@focusfooter="footerEl.focus()"
|
||||
></MkSubNoteContent>
|
||||
<MkSubNoteContent class="text" :note="appearNote" :detailed="true" :detailedView="detailedView"
|
||||
:parentId="appearNote.parentId" @push="(e) => router.push(notePage(e))"
|
||||
@focusfooter="footerEl.focus()" @expanded="(e) => setPostExpanded(e)"></MkSubNoteContent>
|
||||
<div v-if="translating || translation" class="translation">
|
||||
<MkLoading v-if="translating" mini />
|
||||
<div v-else class="translated">
|
||||
<b
|
||||
>{{
|
||||
<b>{{
|
||||
i18n.t("translatedFrom", {
|
||||
x: translation.sourceLang,
|
||||
})
|
||||
}}:
|
||||
</b>
|
||||
<Mfm
|
||||
:text="translation.text"
|
||||
:author="appearNote.user"
|
||||
:i="$i"
|
||||
:custom-emojis="appearNote.emojis"
|
||||
/>
|
||||
<Mfm :text="translation.text" :author="appearNote.user" :i="$i"
|
||||
:custom-emojis="appearNote.emojis" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -472,6 +429,39 @@ function readPromo() {
|
|||
isDeleted.value = true;
|
||||
}
|
||||
|
||||
let postIsExpanded = ref(false);
|
||||
|
||||
function setPostExpanded(val: boolean) {
|
||||
postIsExpanded.value = val;
|
||||
}
|
||||
|
||||
const accessibleLabel = computed(() => {
|
||||
let label = `${props.note.user.username}; `;
|
||||
if (props.note.renote) {
|
||||
label += `${i18n.t("renoted")} ${props.note.renote.user.username}; `;
|
||||
if (props.note.renote.cw) {
|
||||
label += `${i18n.t('cw')}: ${props.note.renote.cw}; `;
|
||||
if (postIsExpanded.value) {
|
||||
label += `${props.note.renote.text}; `;
|
||||
}
|
||||
} else {
|
||||
label += `${props.note.renote.text}; `;
|
||||
}
|
||||
} else {
|
||||
if (props.note.cw) {
|
||||
label += `${i18n.t("cw")}: ${props.note.cw}; `;
|
||||
if (postIsExpanded.value) {
|
||||
label += `${props.note.text}; `;
|
||||
}
|
||||
} else {
|
||||
label += `${props.note.text}; `;
|
||||
}
|
||||
}
|
||||
const date = new Date(props.note.createdAt);
|
||||
label += `${date.toLocaleTimeString()}`;
|
||||
return label;
|
||||
})
|
||||
|
||||
defineExpose({
|
||||
focus,
|
||||
blur,
|
||||
|
|
|
@ -35,39 +35,31 @@
|
|||
|
||||
<MkTab
|
||||
v-model="tab"
|
||||
:style="
|
||||
appearNote.repliesCount > 0 &&
|
||||
appearNote.renoteCount > 0 &&
|
||||
reactionsCount > 0 &&
|
||||
directQuotes?.length > 0 &&
|
||||
clips?.length > 0
|
||||
? 'underline'
|
||||
: ''
|
||||
"
|
||||
:style="'underline'"
|
||||
@update:modelValue="loadTab"
|
||||
>
|
||||
<option value="replies" v-if="appearNote.repliesCount > 0">
|
||||
<i class="ph-arrow-u-up-left ph-bold ph-lg"></i>
|
||||
<span class="count">{{ appearNote.repliesCount }}</span>
|
||||
<option value="replies">
|
||||
<!-- <i class="ph-arrow-u-up-left ph-bold ph-lg"></i> -->
|
||||
<span v-if="appearNote.repliesCount > 0" class="count">{{ appearNote.repliesCount }}</span>
|
||||
{{ i18n.ts._notification._types.reply }}
|
||||
</option>
|
||||
<option value="renotes" v-if="appearNote.renoteCount > 0">
|
||||
<i class="ph-repeat ph-bold ph-lg"></i>
|
||||
<!-- <i class="ph-repeat ph-bold ph-lg"></i> -->
|
||||
<span class="count">{{ appearNote.renoteCount }}</span>
|
||||
{{ i18n.ts._notification._types.renote }}
|
||||
</option>
|
||||
<option value="reactions" v-if="reactionsCount > 0">
|
||||
<i class="ph-smiley ph-bold ph-lg"></i>
|
||||
<!-- <i class="ph-smiley ph-bold ph-lg"></i> -->
|
||||
<span class="count">{{ reactionsCount }}</span>
|
||||
{{ i18n.ts.reaction }}
|
||||
</option>
|
||||
<option value="quotes" v-if="directQuotes?.length > 0">
|
||||
<i class="ph-quotes ph-bold ph-lg"></i>
|
||||
<!-- <i class="ph-quotes ph-bold ph-lg"></i> -->
|
||||
<span class="count">{{ directQuotes.length }}</span>
|
||||
{{ i18n.ts._notification._types.quote }}
|
||||
</option>
|
||||
<option value="clips" v-if="clips?.length > 0">
|
||||
<i class="ph-paperclip ph-bold ph-lg"></i>
|
||||
<!-- <i class="ph-paperclip ph-bold ph-lg"></i> -->
|
||||
<span class="count">{{ clips.length }}</span>
|
||||
{{ i18n.ts.clips }}
|
||||
</option>
|
||||
|
|
|
@ -54,11 +54,12 @@
|
|||
v-model="showContent"
|
||||
:note="note"
|
||||
v-on:keydown="focusFooter"
|
||||
v-on:update:model-value="(val) => emit('expanded', val)"
|
||||
/>
|
||||
<div
|
||||
class="body"
|
||||
v-bind="{
|
||||
'aria-hidden': !showContent ? 'true' : null,
|
||||
'aria-hidden': note.cw && !showContent ? 'true' : null,
|
||||
tabindex: !showContent ? '-1' : null,
|
||||
}"
|
||||
>
|
||||
|
@ -190,6 +191,7 @@ const props = defineProps<{
|
|||
const emit = defineEmits<{
|
||||
(ev: "push", v): void;
|
||||
(ev: "focusfooter"): void;
|
||||
(ev: "expanded", v): void;
|
||||
}>();
|
||||
|
||||
const cwButton = ref<HTMLElement>();
|
||||
|
|
|
@ -111,6 +111,7 @@
|
|||
|
||||
<div v-if="isMobile" class="buttons">
|
||||
<button
|
||||
:aria-label="i18n.t('menu')"
|
||||
class="button nav _button"
|
||||
@click="drawerMenuShowing = true"
|
||||
>
|
||||
|
@ -119,10 +120,11 @@
|
|||
><i class="ph-circle ph-fill"></i
|
||||
></span>
|
||||
</button>
|
||||
<button class="button home _button" @click="mainRouter.push('/')">
|
||||
<button :aria-label="i18n.t('home')" class="button home _button" @click="mainRouter.push('/')">
|
||||
<i class="ph-house ph-bold ph-lg"></i>
|
||||
</button>
|
||||
<button
|
||||
:aria-label="i18n.t('notifications')"
|
||||
class="button notifications _button"
|
||||
@click="mainRouter.push('/my/notifications')"
|
||||
>
|
||||
|
@ -131,7 +133,7 @@
|
|||
><i class="ph-circle ph-fill"></i
|
||||
></span>
|
||||
</button>
|
||||
<button class="button post _button" @click="os.post()">
|
||||
<button :aria-label="i18n.t('note')" class="button post _button" @click="os.post()">
|
||||
<i class="ph-pencil ph-bold ph-lg"></i>
|
||||
</button>
|
||||
</div>
|
||||
|
|
|
@ -36,6 +36,7 @@
|
|||
|
||||
<div v-if="isMobile" class="buttons">
|
||||
<button
|
||||
:aria-label="i18n.t('menu')"
|
||||
class="button nav _button"
|
||||
@click="drawerMenuShowing = true"
|
||||
>
|
||||
|
@ -47,6 +48,7 @@
|
|||
</div>
|
||||
</button>
|
||||
<button
|
||||
:aria-label="i18n.t('home')"
|
||||
class="button home _button"
|
||||
@click="
|
||||
mainRouter.currentRoute.value.name === 'index'
|
||||
|
@ -63,6 +65,7 @@
|
|||
</div>
|
||||
</button>
|
||||
<button
|
||||
:aria-label="i18n.t('notifications')"
|
||||
class="button notifications _button"
|
||||
@click="
|
||||
mainRouter.push('/my/notifications');
|
||||
|
@ -80,6 +83,7 @@
|
|||
</div>
|
||||
</button>
|
||||
<button
|
||||
:aria-label="i18n.t('messaging')"
|
||||
class="button messaging _button"
|
||||
@click="
|
||||
mainRouter.push('/my/messaging');
|
||||
|
@ -99,6 +103,7 @@
|
|||
</div>
|
||||
</button>
|
||||
<button
|
||||
:aria-label="i18n.t('_deck._columns.widgets')"
|
||||
class="button widget _button"
|
||||
@click="widgetsShowing = true"
|
||||
>
|
||||
|
@ -111,6 +116,7 @@
|
|||
<button
|
||||
v-if="isMobile && mainRouter.currentRoute.value.name === 'index'"
|
||||
ref="postButton"
|
||||
:aria-label="i18n.t('note')"
|
||||
class="postButton button post _button"
|
||||
@click="os.post()"
|
||||
>
|
||||
|
@ -122,6 +128,7 @@
|
|||
"
|
||||
ref="postButton"
|
||||
class="postButton button post _button"
|
||||
:aria-label="i18n.t('startMessaging')"
|
||||
@click="messagingStart"
|
||||
>
|
||||
<i class="ph-user-plus ph-bold ph-lg"></i>
|
||||
|
|
Loading…
Reference in New Issue