feat(citation): sources are books and articles, websites or YouTube videos

A source was a book's or an article's parts, however a website or a
video had to be squeezed into them. Adding one to a bibliography or a
step now asks what it is, and its form asks for what cites it: a book
or an article its parts as before; a website the page's link, title,
the site's name, authors and year; a YouTube video its link (checked to
be one), title, channel and year. Websites and videos need their link,
marked as required. A video is cited as APA cites one ("[Video]", a
part of YouTube) and plays in the app where it can, else on YouTube.

The kind is kept in the source's JSON, left out for a book or an
article; a kind this app doesn't know reads as a work. The studyset's
payload goes to schema 6 and a step's to schema 4 for it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MMm7usAo6q9ZZRoPkWjoxi
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
This commit is contained in:
Tizian 「ティツィアーン」 2026-10-12 23:55:39 +02:00
commit 61bf7b2fa0
Signed by: raisondetredev
GPG key ID: 07F6FCF405488B64

View file

@ -206,6 +206,19 @@
"sourceDiscardTitle": "Änderungen verwerfen?",
"sourceDiscardMessage": "Was du für diese Quelle eingegeben hast, geht verloren.",
"sourceDiscardConfirm": "Verwerfen",
"sourceKind": "Art der Quelle",
"sourceKindWork": "Buch oder Artikel",
"sourceKindWebsite": "Website",
"sourceKindVideo": "YouTube-Video",
"sourceWebsiteName": "Website",
"sourceWebsiteNameHint": "Ihr Name, z. B. Wikipedia",
"sourcePageTitleHint": "Titel der Seite",
"sourceChannel": "Kanal",
"sourceChannelHint": "Wer es auf YouTube veröffentlicht hat",
"sourceVideoTitleHint": "Titel des Videos",
"sourceVideoLink": "Link zum Video",
"sourceVideoLinkInvalid": "Kein Link zu einem YouTube-Video",
"sourcePlay": "Video abspielen",
"stepConflict": "Dieser Schritt wurde auf einem anderen Gerät anders geändert. Behalte eine Version, um weiterzuschreiben.",
"stepFieldTitle": "Titel",
"stepFieldBody": "Text",