diff options
| author | Ron Lucke <lucke@elan-ev.de> | 2023-12-11 10:37:55 +0000 |
|---|---|---|
| committer | Ron Lucke <lucke@elan-ev.de> | 2023-12-11 10:37:55 +0000 |
| commit | f2767008ffcf723bc73a4ea8781b31f23c2b68e5 (patch) | |
| tree | 55d6c4b96b65f42545d9a624263089f5f5cb06a4 /lib/classes | |
| parent | 47e23c2e78b4cc099dc6217fa0827a033ef0dc9f (diff) | |
TIC #3111
Closes #3111
Merge request studip/studip!2295
Diffstat (limited to 'lib/classes')
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(), |
