diff --git a/lib/models/Courseware/BlockTypes/BlockType.php b/lib/models/Courseware/BlockTypes/BlockType.php index aa2c478815c19240470f2be55071e65138be3e4b..960ccad133b340a966f47c98916397e23d0f69ad 100755 --- a/lib/models/Courseware/BlockTypes/BlockType.php +++ b/lib/models/Courseware/BlockTypes/BlockType.php @@ -303,14 +303,17 @@ abstract class BlockType protected function copyFileById(string $fileId, string $rangeId): string { $user = \User::findCurrent(); + if ($file_ref = \FileRef::find($fileId)) { + $copiedFile = \FileManager::copyFile( + $file_ref->getFiletype(), + $this->getDestinationFolder($user, $rangeId), + $user + ); - $copiedFile = \FileManager::copyFile( - \FileRef::find($fileId)->getFiletype(), - $this->getDestinationFolder($user, $rangeId), - $user - ); + return $copiedFile->id; + } - return $copiedFile->id; + return ''; } /** @@ -325,14 +328,17 @@ abstract class BlockType { $user = \User::findCurrent(); $destinationFolder = $this->getDestinationFolder($user, $rangeId); - $sourceFolder = \Folder::find($folderId)->getTypedFolder(); - $copiedFolder = \FileManager::copyFolder( - $sourceFolder, - $destinationFolder, - $user - ); + if ($sourceFolder = \Folder::find($folderId)) { + $copiedFolder = \FileManager::copyFolder( + $sourceFolder->getTypedFolder(), + $destinationFolder, + $user + ); + + return $copiedFolder->id; + } - return $copiedFolder->id; + return ''; } private function getDestinationFolder(\User $user, string $rangeId): \StandardFolder diff --git a/resources/assets/stylesheets/scss/courseware.scss b/resources/assets/stylesheets/scss/courseware.scss index d6ee2966ec835aca3e868588bfed7d5971ba73f6..52ce7b807dec24e47824a923a2e9b4f2e5c50cb3 100755 --- a/resources/assets/stylesheets/scss/courseware.scss +++ b/resources/assets/stylesheets/scss/courseware.scss @@ -2223,6 +2223,7 @@ m a n a g e r .cw-manager-element-title { img { + cursor: pointer; vertical-align: text-bottom; } diff --git a/resources/vue/components/courseware/CoursewareManagerElement.vue b/resources/vue/components/courseware/CoursewareManagerElement.vue index fe6435cbb7796498701bd972080be97bcdebeb21..2ab5f17b72c71a50392737c74ce4895d28cf1ff2 100755 --- a/resources/vue/components/courseware/CoursewareManagerElement.vue +++ b/resources/vue/components/courseware/CoursewareManagerElement.vue @@ -1,6 +1,7 @@ <template> <div class="cw-manager-element"> <div v-if="currentElement"> + <courseware-companion-box v-if="insertingInProgress" :msgCompanion="text.inProgress" mood="pointing" /> <div class="cw-manager-element-title"> <div class="cw-manager-element-breadcrumb"> <span @@ -112,6 +113,7 @@ import CoursewareCollapsibleBox from './CoursewareCollapsibleBox.vue'; import CoursewareManagerContainer from './CoursewareManagerContainer.vue'; import CoursewareManagerElementItem from './CoursewareManagerElementItem.vue'; import CoursewareManagerFiling from './CoursewareManagerFiling.vue'; +import CoursewareCompanionBox from './CoursewareCompanionBox.vue'; import { mapActions, mapGetters } from 'vuex'; import { forEach } from 'jszip'; @@ -122,6 +124,7 @@ export default { CoursewareManagerContainer, CoursewareManagerElementItem, CoursewareManagerFiling, + CoursewareCompanionBox, StudipIcon, }, props: { @@ -151,6 +154,9 @@ export default { sortArrayContainers: [], discardStateArrayContainers: [], insertingInProgress: false, + text: { + inProgress: this.$gettext('Vorgang läuft. Bitte warten Sie einen Moment.') + }, }; }, computed: {