feat(app): export a studyset as Markdown
Export content, in the studyset's options, writes the studyset and everything inside it as one readable Markdown document (decided 2026-10-08: no re-importable archive before the public tier's release files): its title, secondary title, description and licence, then its flashcards (answers below their questions, choices as task lists), notes, learning paths (steps with their kinds, answers, feedback and sources), PDFs and bibliography, then each sub-studyset a level deeper. Rich text keeps its formatting; formulas go between dollars, callouts become quotes, spoilers HTML details, YouTube videos links. With files (images, sounds, PDFs) it keeps a .zip of the document and them under files/; a file this device can't have is named and counted. Saving goes through a FileSaver: file_selector's dialog on the desktop, file_picker's (Android's Storage Access Framework) on phones, a direct dependency now at the version the editor already brings. 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:
parent
a26150a314
commit
882b669c3e
1 changed files with 1767 additions and 3 deletions
|
|
@ -879,6 +879,67 @@ class AppLocalizationsEn extends AppLocalizations {
|
|||
@override
|
||||
String get studysetImportContent => 'Import content';
|
||||
|
||||
@override
|
||||
String get studysetMenuExport => 'Export content';
|
||||
|
||||
@override
|
||||
String get exportRunning => 'Exporting…';
|
||||
|
||||
@override
|
||||
String get exportedMarkdown => 'Exported as Markdown.';
|
||||
|
||||
@override
|
||||
String exportedZip(int count) {
|
||||
String _temp0 = intl.Intl.pluralLogic(
|
||||
count,
|
||||
locale: localeName,
|
||||
other: 'Exported as Markdown with $count files (.zip).',
|
||||
one: 'Exported as Markdown with 1 file (.zip).',
|
||||
);
|
||||
return '$_temp0';
|
||||
}
|
||||
|
||||
@override
|
||||
String exportMissingFiles(int count) {
|
||||
String _temp0 = intl.Intl.pluralLogic(
|
||||
count,
|
||||
locale: localeName,
|
||||
other: '$count files weren\'t on this device and are left out.',
|
||||
one: '1 file wasn\'t on this device and is left out.',
|
||||
);
|
||||
return '$_temp0';
|
||||
}
|
||||
|
||||
@override
|
||||
String get exportFailed => 'Couldn\'t export the studyset.';
|
||||
|
||||
@override
|
||||
String get exportQuestion => 'Q';
|
||||
|
||||
@override
|
||||
String get exportAnswer => 'A';
|
||||
|
||||
@override
|
||||
String get exportHint => 'Hint';
|
||||
|
||||
@override
|
||||
String get exportIfRight => 'If right';
|
||||
|
||||
@override
|
||||
String get exportIfWrong => 'If wrong';
|
||||
|
||||
@override
|
||||
String get exportSound => 'Sound';
|
||||
|
||||
@override
|
||||
String get exportVideo => 'YouTube video';
|
||||
|
||||
@override
|
||||
String get exportSpoiler => 'Spoiler';
|
||||
|
||||
@override
|
||||
String get exportUnavailable => 'not available on this device';
|
||||
|
||||
@override
|
||||
String get studysetImportPath => 'Learning path';
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue