aboutsummaryrefslogtreecommitdiff
path: root/lib/classes
diff options
context:
space:
mode:
authorRon Lucke <lucke@elan-ev.de>2023-12-11 10:37:55 +0000
committerRon Lucke <lucke@elan-ev.de>2023-12-11 10:37:55 +0000
commitf2767008ffcf723bc73a4ea8781b31f23c2b68e5 (patch)
tree55d6c4b96b65f42545d9a624263089f5f5cb06a4 /lib/classes
parent47e23c2e78b4cc099dc6217fa0827a033ef0dc9f (diff)
TIC #3111
Closes #3111 Merge request studip/studip!2295
Diffstat (limited to 'lib/classes')
-rw-r--r--lib/classes/JsonApi/Routes/Courseware/CoursewareInstancesUpdate.php13
-rw-r--r--lib/classes/JsonApi/Routes/Courseware/UnitsCreate.php6
-rw-r--r--lib/classes/JsonApi/Schemas/Courseware/Instance.php1
3 files changed, 20 insertions, 0 deletions
diff --git a/lib/classes/JsonApi/Routes/Courseware/CoursewareInstancesUpdate.php b/lib/classes/JsonApi/Routes/Courseware/CoursewareInstancesUpdate.php
index c5ef250..8bb0196 100644
--- a/lib/classes/JsonApi/Routes/Courseware/CoursewareInstancesUpdate.php
+++ b/lib/classes/JsonApi/Routes/Courseware/CoursewareInstancesUpdate.php
@@ -74,6 +74,16 @@ class CoursewareInstancesUpdate extends JsonApiController
}
}
+ if (self::arrayHas($json, 'data.attributes.root-layout')) {
+ $rootLayout = self::arrayGet($json, 'data.attributes.root-layout');
+ if (!is_string($rootLayout)) {
+ return 'Attribute `root-layout` must be a string.';
+ }
+ if (!$data->isValidRootLayout($rootLayout)) {
+ return 'Attribute `root-layout` contains an invalid value.';
+ }
+ }
+
if (self::arrayHas($json, 'data.attributes.editing-permission-level')) {
$editingPermissionLevel = self::arrayGet($json, 'data.attributes.editing-permission-level');
if (!is_string($editingPermissionLevel)) {
@@ -118,6 +128,9 @@ class CoursewareInstancesUpdate extends JsonApiController
$favorites = $get('data.attributes.favorite-block-types');
$instance->setFavoriteBlockTypes($user, $favorites);
+ $rootLayout = $get('data.attributes.root-layout');
+ $instance->setRootLayout($rootLayout);
+
$sequentialProgression = $get('data.attributes.sequential-progression');
$instance->setSequentialProgression($sequentialProgression);
diff --git a/lib/classes/JsonApi/Routes/Courseware/UnitsCreate.php b/lib/classes/JsonApi/Routes/Courseware/UnitsCreate.php
index 6f88bca..f55fd6a 100644
--- a/lib/classes/JsonApi/Routes/Courseware/UnitsCreate.php
+++ b/lib/classes/JsonApi/Routes/Courseware/UnitsCreate.php
@@ -111,6 +111,12 @@ class UnitsCreate extends JsonApiController
'withdraw_date' => self::arrayGet($json, 'data.attributes.withdraw-date'),
]);
+ $instance = new \Courseware\Instance($struct);
+
+ $instance->setRootLayout(self::arrayGet($json, 'data.attributes.settings.root-layout'));
+
+ $instance->getUnit()->store();
+
return $unit;
}
diff --git a/lib/classes/JsonApi/Schemas/Courseware/Instance.php b/lib/classes/JsonApi/Schemas/Courseware/Instance.php
index d943759..7df0cf6 100644
--- a/lib/classes/JsonApi/Schemas/Courseware/Instance.php
+++ b/lib/classes/JsonApi/Schemas/Courseware/Instance.php
@@ -37,6 +37,7 @@ class Instance extends SchemaProvider
'block-types' => array_map([$this, 'mapBlockType'], $resource->getBlockTypes()),
'container-types' => array_map([$this, 'mapContainerType'], $resource->getContainerTypes()),
'favorite-block-types' => $resource->getFavoriteBlockTypes($user),
+ 'root-layout' => $resource->getRootLayout(),
'sequential-progression' => $resource->getSequentialProgression(),
'editing-permission-level' => $resource->getEditingPermissionLevel(),
'certificate-settings' => $resource->getCertificateSettings(),