Merge branch 'pre-release/1.3.0' into develop

This commit is contained in:
Georg krause 2023-03-24 18:14:43 +01:00
commit b0d6a0407a
1122 changed files with 76173 additions and 66002 deletions

View file

@ -85,8 +85,15 @@ server {
proxy_pass http://funkwhale-api;
}
location /media/ {
alias ${MEDIA_ROOT}/;
# Allow direct access to only specific subdirectories in /media
location /media/__sized__/ {
alias ${MEDIA_ROOT}/__sized__/;
add_header Access-Control-Allow-Origin '*';
}
# Allow direct access to only specific subdirectories in /media
location /media/attachments/ {
alias ${MEDIA_ROOT}/attachments/;
add_header Access-Control-Allow-Origin '*';
}

View file

@ -1,4 +1,4 @@
{
"additionalStylesheets": ["/front/custom.css"],
"additionalStylesheets": ["/custom.css"],
"defaultServerUrl": null
}

View file

@ -1,7 +1,7 @@
<script setup lang="ts">
import type { QueueTrack } from '~/composables/audio/queue'
import { useIntervalFn, useToggle, useWindowSize } from '@vueuse/core'
import { useIntervalFn, useStyleTag, useToggle, useWindowSize } from '@vueuse/core'
import { computed, nextTick, onMounted, ref, watchEffect, defineAsyncComponent } from 'vue'
import { useQueue } from '~/composables/audio/queue'
@ -49,6 +49,8 @@ const customStylesheets = computed(() => {
return store.state.instance.frontSettings.additionalStylesheets ?? []
})
useStyleTag(computed(() => store.state.instance.settings.ui.custom_css.value))
// Fake content
onMounted(async () => {
await nextTick()

View file

@ -29,7 +29,7 @@ const submit = async () => {
errors.value = []
try {
const response = await axios.post('manage/users/invitations/', { code: code.value })
const response = await axios.post('manage/users/invitations/', { code: code.value || undefined })
invitations.unshift(response.data)
code.value = ''
} catch (error) {

File diff suppressed because it is too large Load diff

View file

@ -246,6 +246,7 @@
"url": "Pod-Adresse"
},
"message": {
"currentConnection": "Du bist aktuell mit { 0 } verbunden. Wenn du fortfährst, wird die Verbindung unterbrochen und alle lokalen Daten werden gelöscht.",
"newUrl": "Du verwendest jetzt den Funkwhale-Pod unter { url }"
}
},
@ -299,6 +300,7 @@
"language": "Sprache",
"main": "Hauptmenü",
"play": "Diesen Titel abspielen",
"reports": "Ausstehende Überprüfungen",
"theme": "Theme"
},
"link": {
@ -318,6 +320,7 @@
"radios": "Radios",
"search": "Suchen",
"settings": "Einstellungen",
"switchInstance": "Ändere die Instanz",
"users": "Nutzende"
}
},
@ -513,7 +516,17 @@
"unmute": "Stummschaltung aufheben"
},
"meta": {
"position": "{ index } von { length }"
"position": "{ index } von { length }",
"unknownAlbum": "Unbekanntes Album",
"unknownArtist": "Unbekannte*r Künstler*in"
}
},
"PlayerControls": {
"labels": {
"next": "Nächster Titel",
"pause": "Pause",
"play": "Abspielen",
"previous": "Vorheriger Titel"
}
},
"Search": {
@ -664,6 +677,7 @@
},
"header": {
"appDetails": "Anwendungsdetails",
"appSecretWarning": "Stelle sicher, dass dieser Token sicher gespeichert ist.",
"editApp": "Anwendung bearbeiten"
},
"help": {
@ -677,6 +691,9 @@
"link": {
"settings": "Zurück zu den Einstellungen"
},
"message": {
"appSecretWarning": "Du wirst es nie wieder angezeigt bekommen, nachdem du diese Ansicht verlassen hast."
},
"title": "Anwendung bearbeiten"
},
"ApplicationForm": {
@ -695,6 +712,7 @@
"redirectUri": "Umleitungs-URI",
"scopes": {
"description": "Beim Aktivieren der übergeordneten Bereiche \"Lesen\" oder \"Schreiben\" erhältst du Zugriff auf alle entsprechenden untergeordneten Bereiche.",
"label": "Bereiche",
"read": {
"description": "Lesezugriff auf Benutzerdaten",
"label": "Lesen"
@ -754,6 +772,9 @@
"createAccount": "Konto erstellen",
"resetPassword": "Kennwort zurücksetzen"
},
"message": {
"redirect": "Du wirst jetzt zu {domain} weitergeleitet, um dich zu authentifizieren"
},
"placeholder": {
"username": "Benutzername oder E-Mail-Adresse eingeben"
}
@ -925,6 +946,7 @@
},
"label": {
"email": "E-Mail-Adresse",
"invitation": "Einladung",
"password": "Kennwort",
"username": "Benutzername"
},
@ -1247,6 +1269,11 @@
"failure": "Fehler beim Aktualisieren der Beschreibung"
}
},
"UserLink": {
"link": {
"username": "{'@'}{username}"
}
},
"UserMenu": {
"label": {
"language": "Sprache",
@ -1283,6 +1310,7 @@
"link": {
"about": "Über",
"chat": "Chat-Raum",
"docs": "Dokumentation",
"forum": "Forum",
"git": "Bugtracker",
"login": "Anmelden",
@ -1402,7 +1430,8 @@
"meta": {
"episodes": "{ n } Folge | { n } Folgen",
"tracks": "{ n } Titel | { n } Titel"
}
},
"title": "Album"
},
"AlbumDetail": {
"description": {
@ -1651,6 +1680,9 @@
"import": "Import-Ergebnisse:",
"previousImport": "Ergebnisse des letzten Imports:"
},
"empty": {
"noFiles": "0"
},
"header": {
"failure": "Fehler beim Starten des Imports",
"local": "Musik aus deinem Computer importieren",
@ -1668,6 +1700,7 @@
"uploading": "Hochladen läuft"
},
"message": {
"listener": "Willst Du diese Seite wirklich verlassen? Eingegebene Daten werden gegebenenfalls nicht gespeichert.",
"local": {
"copyright": "Die lädst kein urheberrechtlich geschütztes Material in eine öffentliche Mediathek hoch. Wenn doch, missachtest du das Gesetz",
"format": "Die Dateien, die du hochlädst, sind im OGG-, Flac-, MP3- oder AIFF-Format",
@ -1683,6 +1716,7 @@
"size": "Größe",
"status": "Status"
},
"progress": "{percent}%",
"status": {
"pending": "Ausstehend",
"uploaded": "Hochgeladen",
@ -1799,7 +1833,8 @@
"Radios": {
"button": {
"add": "Ein Radio erstellen",
"create": "Dein eigenes Radio erstellen"
"create": "Dein eigenes Radio erstellen",
"search": "Suche"
},
"empty": {
"noResults": "Keine Ergebnisse zu deiner Anfrage"
@ -1872,6 +1907,10 @@
"header": "Bette diesen Titel in deine Webseite ein"
}
},
"subtitle": {
"with-uploader": "Hochgeladen von {0} auf {1}",
"without-uploader": "Hochgeladen auf {0}"
},
"title": "Titel"
},
"TrackDetail": {
@ -1901,7 +1940,8 @@
},
"track": {
"bitrate": {
"label": "Bitrate"
"label": "Bitrate",
"value": "{bitrate}/s"
},
"codec": "Codec",
"downloads": "Downloads",
@ -1963,6 +2003,7 @@
"Filter": {
"cancelButton": "Abbrechen",
"excludeLabel": "Ausschließen",
"matchingTracks": "Kein Titel passt zu den Kriterien | {n} zu den Kriterien passender Titel | {n} zu den Kriterien passende Titel",
"matchingTracksModalHeader": "Titel, die dem Filter entsprechen",
"removeButton": "Entfernen"
}
@ -2096,6 +2137,7 @@
},
"EditsCardList": {
"label": {
"search": "Suche",
"status": "Status"
},
"option": {
@ -2568,6 +2610,7 @@
"internalNotes": "Interne Notizen",
"pending": "Ausstehend",
"refused": "Abgelehnt",
"resolutionDate": "Datum des Beschlusses",
"status": "Status"
}
}
@ -2629,12 +2672,16 @@
"creationDate": "Erstellungsdatum",
"expirationDate": "Ablaufdatum",
"owner": "Besitzer·in",
"status": "Status"
"status": "Status",
"user": "Benutzer*in"
}
}
}
},
"UsersTable": {
"label": {
"search": "Suche"
},
"notApplicable": "k. A.",
"ordering": {
"direction": {
@ -2725,6 +2772,9 @@
"message": "Verwende dieses Feld, um dem Moderationsteam zusätzlichen Kontext bereitzustellen.",
"modal": "Mithilfe dieses Formulars kannst du einen Bericht an unser Moderationsteam senden."
},
"error": {
"nodeinfoFetch": "Informationen über diese Instanz können nicht abgerufen werden: {error}"
},
"header": {
"disabled": "Anonyme Meldungen sind deaktiviert. Melde dich an, um eine Meldung einzureichen.",
"modal": "Möchtest du dieses Objekt melden?",
@ -2751,7 +2801,8 @@
"message": {
"libraryAcceptFollow": "Das Abonnieren der Mediathek \"{ library }\" wurde von { username } bestätigt",
"libraryFollow": "{ username } hat deine Mediathek \"{ library }\" abonniert",
"libraryPendingFollow": "{ username } möchte deine Mediathek \"{ library }\" abonnieren"
"libraryPendingFollow": "{ username } möchte deine Mediathek \"{ library }\" abonnieren",
"libraryReject": "Du hast {username}s Anfrage, \"{library}\" zu folgen, abgelehnt"
}
}
},
@ -2830,7 +2881,8 @@
"addToPlaylist": "Zur Wiedergabeliste hinzufügen",
"available": "Verfügbare Wiedergabelisten",
"manage": "Wiedergabelisten verwalten",
"noResults": "Keine Ergebnisse für diesen Filter"
"noResults": "Keine Ergebnisse für diesen Filter",
"track": "{title}, von {artist}"
},
"label": {
"filter": "Filter"
@ -2869,8 +2921,12 @@
},
"radios": {
"Button": {
"startArtistsRadio": "Start Künstler*innen Radio",
"startRadio": "Radio abspielen",
"stopRadio": "Radio ausschalten"
"startTagsRadio": "Starte Tag Radio",
"stopArtistsRadio": "Stoppe Künstler*innen Radio",
"stopRadio": "Radio ausschalten",
"stopTagsRadio": "Stoppe Tag Radio"
},
"Card": {
"button": {

View file

@ -1458,7 +1458,7 @@
"discogs": "Rechercher sur Discogs",
"django": "Voir dans l'administration Django",
"domain": "Voir sur { domaine }",
"moderation": "Ouvrir dans l'interface de modérations",
"moderation": "Ouvrir dans l'interface de modération",
"musicbrainz": "Voir sur MusicBrainz"
},
"modal": {
@ -1527,7 +1527,7 @@
"discogs": "Rechercher sur Discogs",
"django": "Voir dans l'administration Django",
"domain": "Voir sur { domaine }",
"moderation": "Ouvrir dans l'interface de modérations",
"moderation": "Ouvrir dans l'interface de modération",
"musicbrainz": "Voir sur MusicBrainz",
"wikipedia": "Rechercher sur Wikipédia"
},
@ -1871,7 +1871,7 @@
"link": {
"albums": "Albums",
"artists": "Artistes",
"moderation": "Ouvrir dans l'interface de modérations"
"moderation": "Ouvrir dans l'interface de modération"
}
},
"TagSelector": {
@ -1893,7 +1893,7 @@
"discogs": "Rechercher sur Discogs",
"django": "Voir dans l'administration Django",
"domain": "Voir sur { domaine }",
"moderation": "Ouvrir dans l'interface de modérations",
"moderation": "Ouvrir dans l'interface de modération",
"wikipedia": "Rechercher sur Wikipédia"
},
"modal": {
@ -2543,7 +2543,7 @@
"reportedObject": "Élément signalé"
},
"link": {
"moderation": "Ouvrir dans l'interface de modérations",
"moderation": "Ouvrir dans l'interface de modération",
"publicPage": "Voir la page publique",
"report": "Signaler { id }"
},
@ -4024,7 +4024,7 @@
"link": {
"activity": "Activité",
"domainView": "Voir sur { domaine }",
"moderation": "Ouvrir dans l'interface de modérations",
"moderation": "Ouvrir dans l'interface de modération",
"overview": "Aperçu"
},
"title": "Profil de { username }"
@ -4085,7 +4085,7 @@
"channelTracks": "Pistes",
"domainView": "Voir sur { domaine }",
"mirrored": "Redondé depuis { domain }",
"moderation": "Ouvrir dans l'interface de modérations"
"moderation": "Ouvrir dans l'interface de modération"
},
"meta": {
"episodes": "{ n } épisode | { n } épisodes",
@ -4505,7 +4505,7 @@
"albums": "Albums",
"artists": "Artistes",
"domain": "Voir sur { domaine }",
"moderation": "Ouvrir dans l'interface de modérations",
"moderation": "Ouvrir dans l'interface de modération",
"owner": "Appartient à { username }",
"tracks": "Pistes"
},

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -18,6 +18,9 @@
"publicContent": "浏览公开内容",
"signup": "注册"
},
"help": {
"closedRegistrations": "本实例已关闭注册。您可以使用以下链接在其他实例注册。"
},
"link": {
"findOtherPod": "查看其他实例",
"learnMore": "查看更多"
@ -144,7 +147,7 @@
"message": {
"pageNotFound": "抱歉,您访问的页面不存在:"
},
"title": "到页面"
"title": "找到页面"
},
"Queue": {
"button": {
@ -159,6 +162,9 @@
"label": {
"addArtistContentFilter": "隐藏这个歌手的相关内容…",
"duration": "时长",
"enterFullscreen": "进入全屏模式",
"exitFullscreen": "退出全屏模式",
"favorite": "收藏歌曲",
"next": "下一首",
"pause": "暂停",
"play": "播放",

View file

@ -108,11 +108,16 @@ interface SubsonicSettings {
enabled: { value: boolean }
}
interface UISettings {
custom_css: { value: string }
}
interface Settings {
instance: InstanceSettings
users: UsersSettings
moderation: ModerationSettings
subsonic: SubsonicSettings
ui: UISettings
}
const logger = useLogger()
@ -169,6 +174,11 @@ const store: Module<State, RootState> = {
enabled: {
value: true
}
},
ui: {
custom_css: {
value: ''
}
}
}
},

View file

@ -112,7 +112,7 @@ $tooltip-background: var(--site-background) !default;
$tooltip-color: var(--text-color) !default;
$card-background: var(--site-background) !default;
$card-text-colar: var(-text-color) !default;
$card-text-color: var(--text-color) !default;
$card-box-shadow: 0 1px 3px 0 #D4D4D5, 0 0 0 1px #D4D4D5 !default;
$dimmer-background: rgba(255, 255, 255, 0.85) !default;

View file

@ -459,5 +459,5 @@
.drag-container:not(.dragging) .hover .queue-item {
background: rgba(0,0,0,.05);
color: #000000f2;
color: var(--text-color);
}

File diff suppressed because it is too large Load diff