From ef8f85c9bd02675a3e250e48ecdc22cd66af4a9b Mon Sep 17 00:00:00 2001
From: Ron Lucke <lucke@elan-ev.de>
Date: Tue, 31 Jan 2023 09:02:38 +0000
Subject: [PATCH] Vererbung von Lese- und Schreibrechten in CW

Closes #2102 and #2094

Merge request studip/studip!1360
---
 .../JsonApi/Routes/Courseware/StructuralElementsCreate.php  | 4 ++--
 lib/models/Courseware/StructuralElement.php                 | 4 ++++
 .../components/courseware/CoursewareStructuralElement.vue   | 6 ------
 3 files changed, 6 insertions(+), 8 deletions(-)

diff --git a/lib/classes/JsonApi/Routes/Courseware/StructuralElementsCreate.php b/lib/classes/JsonApi/Routes/Courseware/StructuralElementsCreate.php
index 47ada639982..42831116d79 100644
--- a/lib/classes/JsonApi/Routes/Courseware/StructuralElementsCreate.php
+++ b/lib/classes/JsonApi/Routes/Courseware/StructuralElementsCreate.php
@@ -81,8 +81,8 @@ class StructuralElementsCreate extends JsonApiController
             'title' => self::arrayGet($json, 'data.attributes.title', ''),
             'purpose' => self::arrayGet($json, 'data.attributes.purpose', $parent->purpose),
             'payload' => self::arrayGet($json, 'data.attributes.payload', ''),
-            'read_approval' => self::arrayGet($json, 'data.attributes.read-approval', []),
-            'write_approval' => self::arrayGet($json, 'data.attributes.write-approval', []),
+            'read_approval' => $parent->read_approval,
+            'write_approval' => $parent->write_approval,
             'position' => $parent->countChildren()
         ]);
 
diff --git a/lib/models/Courseware/StructuralElement.php b/lib/models/Courseware/StructuralElement.php
index ba5123883a3..c7087a767b6 100644
--- a/lib/models/Courseware/StructuralElement.php
+++ b/lib/models/Courseware/StructuralElement.php
@@ -837,6 +837,8 @@ SQL;
             'position' => $parent->countChildren(),
             'payload' => $this->payload,
             'image_id' => $file_ref_id,
+            'read_approval' => $parent->read_approval,
+            'write_approval' => $parent->write_approval
         ]);
 
         $element->store();
@@ -944,6 +946,8 @@ SQL;
             'purpose' => $this->purpose,
             'position' => $parent->countChildren(),
             'payload' => $this->payload,
+            'read_approval' => $parent->read_approval,
+            'write_approval' => $parent->write_approval
         ]);
 
         $element->store();
diff --git a/resources/vue/components/courseware/CoursewareStructuralElement.vue b/resources/vue/components/courseware/CoursewareStructuralElement.vue
index af5331b2db9..53322266050 100644
--- a/resources/vue/components/courseware/CoursewareStructuralElement.vue
+++ b/resources/vue/components/courseware/CoursewareStructuralElement.vue
@@ -1518,8 +1518,6 @@ export default {
             const title = this.newChapterName; // this is the title of the new element
             const purpose = this.newChapterPurpose;
             let parent_id = this.currentId; // new page is descandant as default
-            let writeApproval = this.currentElement.attributes['write-approval'];
-            let readApproval = this.currentElement.attributes['read-approval'];
 
             this.errorEmptyChapterName = title.trim();
             if (this.errorEmptyChapterName === '') {
@@ -1527,16 +1525,12 @@ export default {
             }
             if (this.newChapterParent === 'sibling') {
                 parent_id = this.structuralElement.relationships.parent.data.id;
-                writeApproval = [];
-                readApproval = [];
             }
             this.showElementAddDialog(false);
             this.createStructuralElement({
                 attributes: {
                     title: title,
                     purpose: purpose,
-                    'write-approval':  writeApproval,
-                    'read-approval': readApproval
                 },
                 templateId: this.newChapterTemplate ? this.newChapterTemplate.id : null,
                 parentId: parent_id,
-- 
GitLab