diff --git a/app/controllers/contents/courseware.php b/app/controllers/contents/courseware.php index 0dbc0b74ba1a31a35ddfeaf32f769fe56e4f9199..2e27077660bfb7594436df6f8b6e6eb5c593ab82 100755 --- a/app/controllers/contents/courseware.php +++ b/app/controllers/contents/courseware.php @@ -111,11 +111,10 @@ class Contents_CoursewareController extends AuthenticatedController [$this->entry_element_id, $this->user_id] ); } - $canExport = !empty($struct) ? $struct->canEdit($user) : false; - $this->setCoursewareSidebar($canExport); + $this->setCoursewareSidebar(); } - private function setCoursewareSidebar(bool $canExport) + private function setCoursewareSidebar() { $sidebar = \Sidebar::Get(); $actions = new TemplateWidget( @@ -130,13 +129,11 @@ class Contents_CoursewareController extends AuthenticatedController ); $sidebar->addWidget($views)->addLayoutCSSClass('courseware-view-widget'); - if ($canExport) { - $exports = new TemplateWidget( - _('Export '), - $this->get_template_factory()->open('course/courseware/export_widget') - ); - $sidebar->addWidget($exports)->addLayoutCSSClass('courseware-export-widget'); - } + $exports = new TemplateWidget( + _('Export '), + $this->get_template_factory()->open('course/courseware/export_widget') + ); + $sidebar->addWidget($exports)->addLayoutCSSClass('courseware-export-widget'); } private function getLicences() diff --git a/app/controllers/course/courseware.php b/app/controllers/course/courseware.php index e10e245eebee3bbdccd7d993712b8c8941feec99..2d14e2e1b3ae76d206d9af001d9f4cf01b6392d4 100755 --- a/app/controllers/course/courseware.php +++ b/app/controllers/course/courseware.php @@ -74,8 +74,7 @@ class Course_CoursewareController extends AuthenticatedController Context::getId(), ]); } - $canExport = !empty($struct) ? $struct->canEdit($GLOBALS['user']) : false; - $this->setIndexSidebar($canExport); + $this->setIndexSidebar(); } public function dashboard_action(): void @@ -107,7 +106,7 @@ class Course_CoursewareController extends AuthenticatedController $this->render_pdf($element->pdfExport($this->user), trim($element->title).'.pdf'); } - private function setIndexSidebar(bool $canExport): void + private function setIndexSidebar(): void { $sidebar = Sidebar::Get(); $actions = new TemplateWidget( @@ -122,13 +121,11 @@ class Course_CoursewareController extends AuthenticatedController ); $sidebar->addWidget($views)->addLayoutCSSClass('courseware-view-widget'); - if ($canExport) { - $exports = new TemplateWidget( - _('Export '), - $this->get_template_factory()->open('course/courseware/export_widget') - ); - $sidebar->addWidget($exports)->addLayoutCSSClass('courseware-export-widget'); - } + $exports = new TemplateWidget( + _('Export '), + $this->get_template_factory()->open('course/courseware/export_widget') + ); + $sidebar->addWidget($exports)->addLayoutCSSClass('courseware-export-widget'); } diff --git a/resources/vue/components/courseware/CoursewareExportWidget.vue b/resources/vue/components/courseware/CoursewareExportWidget.vue index e9c54dcda42f99dea4009d1b1d0c947a0d8c67a2..a4023b0ff4681e63007411afa4b786eed1d44a5f 100644 --- a/resources/vue/components/courseware/CoursewareExportWidget.vue +++ b/resources/vue/components/courseware/CoursewareExportWidget.vue @@ -1,20 +1,23 @@ <template> <ul class="widget-list widget-links cw-export-widget" v-if="structuralElement"> - <li class="cw-export-widget-export"> + <li v-if="showExportArchiv" class="cw-export-widget-export"> <a href="#" @click="exportElement"> <translate>Seite exportieren</translate> </a> </li> - <li v-if="canVisit" class="cw-export-widget-export-pdf"> - <a :href="pdfExportURL"> + <li v-if="showExportPdf" class="cw-export-widget-export-pdf"> + <a :href="pdfExportURL" target="_blank"> <translate>Seite als pdf-Dokument exportieren</translate> </a> </li> - <li v-if="oerEnabled" class="cw-export-widget-oer"> + <li v-if="showOer" class="cw-export-widget-oer"> <a href="#" @click="oerElement"> <translate>Seite auf %{oerTitle} veröffentlichen</translate> </a> </li> + <li v-if="!showExportArchiv && !showExportPdf && !showOer"> + <translate>Keine Exportoptionen verfügbar</translate> + </li> </ul> </template> @@ -31,6 +34,7 @@ export default { context: 'context', oerEnabled: 'oerEnabled', oerTitle: 'oerTitle', + userIsTeacher: 'userIsTeacher', }), pdfExportURL() { if (this.context.type === 'users') { @@ -42,6 +46,21 @@ export default { return ''; }, + canEdit() { + if (!this.structuralElement) { + return false; + } + return this.structuralElement.attributes['can-edit']; + }, + showExportArchiv() { + return this.canEdit; + }, + showExportPdf() { + return this.canVisit; + }, + showOer() { + return this.oerEnabled && this.userIsTeacher && this.canVisit + } }, methods: { ...mapActions({ diff --git a/resources/vue/components/courseware/IndexApp.vue b/resources/vue/components/courseware/IndexApp.vue index e1331a26d0023c437f529b599007c1f4fbcbad64..e24b5e64912bba5ed726313aefcb60e29d2189c2 100755 --- a/resources/vue/components/courseware/IndexApp.vue +++ b/resources/vue/components/courseware/IndexApp.vue @@ -10,7 +10,7 @@ <MountingPortal mountTo="#courseware-action-widget" name="sidebar-actions"> <courseware-action-widget :structural-element="selected" :canVisit="canVisit"></courseware-action-widget> </MountingPortal> - <MountingPortal mountTo="#courseware-export-widget" name="sidebar-actions" v-if="canExport"> + <MountingPortal mountTo="#courseware-export-widget" name="sidebar-actions"> <courseware-export-widget :structural-element="selected" :canVisit="canVisit"></courseware-export-widget> </MountingPortal> <MountingPortal mountTo="#courseware-view-widget" name="sidebar-views"> @@ -75,18 +75,7 @@ export default { default: return this.$gettext('Beim Laden der Seite ist ein Fehler aufgetreten.'); } - }, - canExport() { - if (!this.selected) { - return false; - } - - if (this.context.type === 'users') { - return true; - } - - return this.selected.attributes['can-edit'] && this.userIsTeacher; - }, + } }, methods: { ...mapActions({