diff --git a/client/src/components/learningPath/LearningContent.vue b/client/src/components/learningPath/LearningContent.vue index e4ed2bef..b3ba7244 100644 --- a/client/src/components/learningPath/LearningContent.vue +++ b/client/src/components/learningPath/LearningContent.vue @@ -80,7 +80,10 @@ const block = computed(() => { -
+

{{ block.value.description }}

@@ -122,6 +125,10 @@ $content-height: $header-height + $footer-height; margin-bottom: 1.5rem; } + a { + text-decoration: underline; + } + h2 { margin-bottom: 2rem; } diff --git a/client/src/utils/typeMaps.ts b/client/src/utils/typeMaps.ts index c62429a7..790c6a6a 100644 --- a/client/src/utils/typeMaps.ts +++ b/client/src/utils/typeMaps.ts @@ -1,7 +1,7 @@ import type { LearningContentType } from "@/types"; export const learningContentTypesToName = new Map([ - ["assignment", "Auftrag"], + ["assignment", "Transferauftrag"], ["book", "Buch"], ["document", "Dokument"], ["exercise", "Übung"], @@ -9,6 +9,6 @@ export const learningContentTypesToName = new Map([ ["online_training", "Online-Training"], ["video", "Video"], ["test", "Test"], - ["resource", "Hilfsmittel"], + ["resource", "Seite"], ["placeholder", "In Umsetzung"], ]); diff --git a/server/vbv_lernwelt/learnpath/create_default_learning_path.py b/server/vbv_lernwelt/learnpath/create_default_learning_path.py index 5c0912a3..a3e93ec2 100644 --- a/server/vbv_lernwelt/learnpath/create_default_learning_path.py +++ b/server/vbv_lernwelt/learnpath/create_default_learning_path.py @@ -10,6 +10,7 @@ from vbv_lernwelt.core.admin import User from vbv_lernwelt.course.consts import COURSE_VERSICHERUNGSVERMITTLERIN_ID from vbv_lernwelt.course.models import CourseCategory, CoursePage from vbv_lernwelt.learnpath.tests.learning_path_factories import ( + AssignmentBlockFactory, CircleFactory, ExerciseBlockFactory, LearningContentFactory, @@ -328,10 +329,7 @@ wichtige Grundlage für eine erfolgreiche Beziehung. title="Mediathek", parent=circle, ) - LearningContentFactory( - title="Der erste Eindruck zählt", - parent=circle, - ) + create_learning_content_transferauftrag("Der erste Eindruck zählt", circle) LearningSequenceFactory(title="Beenden", parent=circle, icon="it-icon-ls-end") LearningUnitFactory(title="Circle beenden", parent=circle) @@ -514,10 +512,7 @@ def create_circle_loesung(lp): title="Mediathek", parent=circle, ) - LearningContentFactory( - title="Patrizia & Marco heiraten", - parent=circle, - ) + create_learning_content_transferauftrag("Patrizia & Marco heiraten", circle) LearningContentFactory( title="Fachcheck Heirat", parent=circle, @@ -686,11 +681,13 @@ def create_circle_betreuen(lp): "Blumenladen Fleur expandiert", parent=circle, category_name="Wohneigentum", + learning_unit_title="Bauen", ) create_standard_learning_unit( "Davide & Giulia verkaufen ihr Haus an Chiara", parent=circle, category_name="Wohneigentum", + learning_unit_title="Hausverkauf", ) LearningSequenceFactory(title="Beenden", parent=circle, icon="it-icon-ls-end") @@ -797,10 +794,13 @@ def create_circle_pruefung(lp): def create_standard_learning_unit( - title, parent, category_name, wbt_url=None, check_url=None + title, parent, category_name, wbt_url=None, check_url=None, learning_unit_title=None ): + if learning_unit_title is None: + learning_unit_title = category_name + LearningUnitFactory( - title=category_name, + title=learning_unit_title, parent=parent, course_category=CourseCategory.objects.get( course_id=COURSE_VERSICHERUNGSVERMITTLERIN_ID, title=category_name @@ -928,3 +928,39 @@ def create_learning_content_beenden(parent): ) ], ) + + +def create_learning_content_transferauftrag(title, parent): + LearningContentFactory( + title=title, + parent=parent, + contents=[ + ( + "assignment", + AssignmentBlockFactory( + url="https://www.vbv.ch/", + description="Platzhalter Text für Lernsequenz «üben»:", + text=RichText( + """ +

Hier entsteht die Lernsequenz «üben»

Praxisorientiert

+

Die Lernsequenz «üben» fordert die Teilnehmenden auf, in der eigenen Organisation anhand eines Transferauftrages eine entsprechende Handlungssituation durchzuführen.

+

Der Auftrag unterstützt den Transfer in die Praxis und nimmt einzelne Themen aus dem jeweiligen Circle nochmals auf.

+

Der Teilnehmende wird sein Ergebnis in MyVBV hochladen.

+

Feedback erfolgt durch die Lernbegleitung oder durch weitere vom Teilnehmenden definierte Personen.
Ein Abgleich mit Musterlösungen wird wo sinnvoll angeboten

+

Zusätzlich zum Auftrag wird auf das relevante Fachwissen aus der Mediathek verwiesen und wo sinnvoll Hilfsmittel zur Verfügung gestellt.

+

Hier siehst du ein Beispiel eines Transferauftrages mit einer entsprechenden Musterlösung.

+

Schnuppere mal rein. Viel Spass!

+

+ +

+

+ PDF Transferauftrag: Der erste Eindruck zählt
+ PDF Transferauftrag: Der erste Eindruck zählt - Lösung +

+ """ + ), + ), + ) + ], + ) diff --git a/server/vbv_lernwelt/learnpath/migrations/0004_circle_goal_description.py b/server/vbv_lernwelt/learnpath/migrations/0004_circle_goal_description.py index f6e5b0b2..ca2a9783 100644 --- a/server/vbv_lernwelt/learnpath/migrations/0004_circle_goal_description.py +++ b/server/vbv_lernwelt/learnpath/migrations/0004_circle_goal_description.py @@ -6,13 +6,13 @@ from django.db import migrations, models class Migration(migrations.Migration): dependencies = [ - ('learnpath', '0003_alter_learningcontent_contents'), + ("learnpath", "0003_alter_learningcontent_contents"), ] operations = [ migrations.AddField( - model_name='circle', - name='goal_description', - field=models.TextField(blank=True, default=''), + model_name="circle", + name="goal_description", + field=models.TextField(blank=True, default=""), ), ] diff --git a/server/vbv_lernwelt/learnpath/migrations/0005_circle_job_situation_description.py b/server/vbv_lernwelt/learnpath/migrations/0005_circle_job_situation_description.py index 8ac37fcb..41d326b8 100644 --- a/server/vbv_lernwelt/learnpath/migrations/0005_circle_job_situation_description.py +++ b/server/vbv_lernwelt/learnpath/migrations/0005_circle_job_situation_description.py @@ -6,13 +6,13 @@ from django.db import migrations, models class Migration(migrations.Migration): dependencies = [ - ('learnpath', '0004_circle_goal_description'), + ("learnpath", "0004_circle_goal_description"), ] operations = [ migrations.AddField( - model_name='circle', - name='job_situation_description', - field=models.TextField(blank=True, default=''), + model_name="circle", + name="job_situation_description", + field=models.TextField(blank=True, default=""), ), ] diff --git a/server/vbv_lernwelt/learnpath/migrations/0006_alter_learningcontent_contents.py b/server/vbv_lernwelt/learnpath/migrations/0006_alter_learningcontent_contents.py index 6e03aa99..0ca85659 100644 --- a/server/vbv_lernwelt/learnpath/migrations/0006_alter_learningcontent_contents.py +++ b/server/vbv_lernwelt/learnpath/migrations/0006_alter_learningcontent_contents.py @@ -1,20 +1,115 @@ # Generated by Django 3.2.13 on 2022-10-14 12:03 -from django.db import migrations import wagtail.blocks import wagtail.fields +from django.db import migrations class Migration(migrations.Migration): dependencies = [ - ('learnpath', '0005_circle_job_situation_description'), + ("learnpath", "0005_circle_job_situation_description"), ] operations = [ migrations.AlterField( - model_name='learningcontent', - name='contents', - field=wagtail.fields.StreamField([('video', wagtail.blocks.StructBlock([('description', wagtail.blocks.TextBlock()), ('url', wagtail.blocks.TextBlock())])), ('resource', wagtail.blocks.StructBlock([('description', wagtail.blocks.TextBlock()), ('url', wagtail.blocks.TextBlock()), ('text', wagtail.blocks.RichTextBlock())])), ('exercise', wagtail.blocks.StructBlock([('description', wagtail.blocks.TextBlock()), ('url', wagtail.blocks.TextBlock())])), ('online_training', wagtail.blocks.StructBlock([('description', wagtail.blocks.TextBlock()), ('url', wagtail.blocks.TextBlock())])), ('media_library', wagtail.blocks.StructBlock([('description', wagtail.blocks.TextBlock()), ('url', wagtail.blocks.TextBlock())])), ('document', wagtail.blocks.StructBlock([('description', wagtail.blocks.TextBlock()), ('url', wagtail.blocks.TextBlock())])), ('test', wagtail.blocks.StructBlock([('description', wagtail.blocks.TextBlock()), ('url', wagtail.blocks.TextBlock())])), ('book', wagtail.blocks.StructBlock([('description', wagtail.blocks.TextBlock()), ('url', wagtail.blocks.TextBlock())])), ('assignment', wagtail.blocks.StructBlock([('description', wagtail.blocks.TextBlock()), ('url', wagtail.blocks.TextBlock())])), ('placeholder', wagtail.blocks.StructBlock([('description', wagtail.blocks.TextBlock()), ('url', wagtail.blocks.TextBlock())]))], use_json_field=None), + model_name="learningcontent", + name="contents", + field=wagtail.fields.StreamField( + [ + ( + "video", + wagtail.blocks.StructBlock( + [ + ("description", wagtail.blocks.TextBlock()), + ("url", wagtail.blocks.TextBlock()), + ] + ), + ), + ( + "resource", + wagtail.blocks.StructBlock( + [ + ("description", wagtail.blocks.TextBlock()), + ("url", wagtail.blocks.TextBlock()), + ("text", wagtail.blocks.RichTextBlock()), + ] + ), + ), + ( + "exercise", + wagtail.blocks.StructBlock( + [ + ("description", wagtail.blocks.TextBlock()), + ("url", wagtail.blocks.TextBlock()), + ] + ), + ), + ( + "online_training", + wagtail.blocks.StructBlock( + [ + ("description", wagtail.blocks.TextBlock()), + ("url", wagtail.blocks.TextBlock()), + ] + ), + ), + ( + "media_library", + wagtail.blocks.StructBlock( + [ + ("description", wagtail.blocks.TextBlock()), + ("url", wagtail.blocks.TextBlock()), + ] + ), + ), + ( + "document", + wagtail.blocks.StructBlock( + [ + ("description", wagtail.blocks.TextBlock()), + ("url", wagtail.blocks.TextBlock()), + ] + ), + ), + ( + "test", + wagtail.blocks.StructBlock( + [ + ("description", wagtail.blocks.TextBlock()), + ("url", wagtail.blocks.TextBlock()), + ] + ), + ), + ( + "book", + wagtail.blocks.StructBlock( + [ + ("description", wagtail.blocks.TextBlock()), + ("url", wagtail.blocks.TextBlock()), + ] + ), + ), + ( + "assignment", + wagtail.blocks.StructBlock( + [ + ("description", wagtail.blocks.TextBlock()), + ("url", wagtail.blocks.TextBlock()), + ] + ), + ), + ( + "placeholder", + wagtail.blocks.StructBlock( + [ + ("description", wagtail.blocks.TextBlock()), + ("url", wagtail.blocks.TextBlock()), + ] + ), + ), + ], + use_json_field=None, + ), ), ] diff --git a/server/vbv_lernwelt/learnpath/migrations/0007_alter_learningcontent_contents.py b/server/vbv_lernwelt/learnpath/migrations/0007_alter_learningcontent_contents.py new file mode 100644 index 00000000..85c5dde2 --- /dev/null +++ b/server/vbv_lernwelt/learnpath/migrations/0007_alter_learningcontent_contents.py @@ -0,0 +1,116 @@ +# Generated by Django 3.2.13 on 2022-10-14 16:02 + +import wagtail.blocks +import wagtail.fields +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ("learnpath", "0006_alter_learningcontent_contents"), + ] + + operations = [ + migrations.AlterField( + model_name="learningcontent", + name="contents", + field=wagtail.fields.StreamField( + [ + ( + "video", + wagtail.blocks.StructBlock( + [ + ("description", wagtail.blocks.TextBlock()), + ("url", wagtail.blocks.TextBlock()), + ] + ), + ), + ( + "resource", + wagtail.blocks.StructBlock( + [ + ("description", wagtail.blocks.TextBlock()), + ("url", wagtail.blocks.TextBlock()), + ("text", wagtail.blocks.RichTextBlock(required=False)), + ] + ), + ), + ( + "exercise", + wagtail.blocks.StructBlock( + [ + ("description", wagtail.blocks.TextBlock()), + ("url", wagtail.blocks.TextBlock()), + ] + ), + ), + ( + "online_training", + wagtail.blocks.StructBlock( + [ + ("description", wagtail.blocks.TextBlock()), + ("url", wagtail.blocks.TextBlock()), + ] + ), + ), + ( + "media_library", + wagtail.blocks.StructBlock( + [ + ("description", wagtail.blocks.TextBlock()), + ("url", wagtail.blocks.TextBlock()), + ] + ), + ), + ( + "document", + wagtail.blocks.StructBlock( + [ + ("description", wagtail.blocks.TextBlock()), + ("url", wagtail.blocks.TextBlock()), + ] + ), + ), + ( + "test", + wagtail.blocks.StructBlock( + [ + ("description", wagtail.blocks.TextBlock()), + ("url", wagtail.blocks.TextBlock()), + ] + ), + ), + ( + "book", + wagtail.blocks.StructBlock( + [ + ("description", wagtail.blocks.TextBlock()), + ("url", wagtail.blocks.TextBlock()), + ] + ), + ), + ( + "assignment", + wagtail.blocks.StructBlock( + [ + ("description", wagtail.blocks.TextBlock()), + ("url", wagtail.blocks.TextBlock()), + ("text", wagtail.blocks.RichTextBlock(required=False)), + ] + ), + ), + ( + "placeholder", + wagtail.blocks.StructBlock( + [ + ("description", wagtail.blocks.TextBlock()), + ("url", wagtail.blocks.TextBlock()), + ] + ), + ), + ], + use_json_field=None, + ), + ), + ] diff --git a/server/vbv_lernwelt/learnpath/models_learning_unit_content.py b/server/vbv_lernwelt/learnpath/models_learning_unit_content.py index beb1894e..c1a0356f 100644 --- a/server/vbv_lernwelt/learnpath/models_learning_unit_content.py +++ b/server/vbv_lernwelt/learnpath/models_learning_unit_content.py @@ -4,6 +4,7 @@ from wagtail import blocks class AssignmentBlock(blocks.StructBlock): description = blocks.TextBlock() url = blocks.TextBlock() + text = blocks.RichTextBlock(required=False) class Meta: icon = "media" diff --git a/server/vbv_lernwelt/static/media/demo_oktober/Transferauftrag_Der_erste_Eindruck_zaehlt_de.pdf b/server/vbv_lernwelt/static/media/demo_oktober/Transferauftrag_Der_erste_Eindruck_zaehlt.pdf similarity index 100% rename from server/vbv_lernwelt/static/media/demo_oktober/Transferauftrag_Der_erste_Eindruck_zaehlt_de.pdf rename to server/vbv_lernwelt/static/media/demo_oktober/Transferauftrag_Der_erste_Eindruck_zaehlt.pdf diff --git a/server/vbv_lernwelt/static/media/demo_oktober/Transferauftrag_Der_erste_Eindruck_zaehlt_Musterlösung.pdf b/server/vbv_lernwelt/static/media/demo_oktober/Transferauftrag_Der_erste_Eindruck_zaehlt_Musterlösung.pdf new file mode 100644 index 00000000..568bb6ee Binary files /dev/null and b/server/vbv_lernwelt/static/media/demo_oktober/Transferauftrag_Der_erste_Eindruck_zaehlt_Musterlösung.pdf differ diff --git a/server/vbv_lernwelt/static/media/demo_oktober/der_erste_eindruck.jpg b/server/vbv_lernwelt/static/media/demo_oktober/der_erste_eindruck.jpg new file mode 100644 index 00000000..553ef1db Binary files /dev/null and b/server/vbv_lernwelt/static/media/demo_oktober/der_erste_eindruck.jpg differ