From 40c99e962009cc21a1475048fbd33c0db905d2a1 Mon Sep 17 00:00:00 2001 From: Ron Lucke <lucke@elan-ev.de> Date: Thu, 14 Sep 2023 11:14:41 +0000 Subject: [PATCH] fix #3065 Closes #3065 Merge request studip/studip!2092 --- .../assets/stylesheets/scss/courseware.scss | 13 ++-- .../components/courseware/CoursewareTile.vue | 12 +++- .../courseware/CoursewareUnitItem.vue | 5 +- .../courseware/CoursewareUnitProgress.vue | 61 ++++++++++--------- 4 files changed, 48 insertions(+), 43 deletions(-) diff --git a/resources/assets/stylesheets/scss/courseware.scss b/resources/assets/stylesheets/scss/courseware.scss index 8d8ac672464..195ee15a2be 100644 --- a/resources/assets/stylesheets/scss/courseware.scss +++ b/resources/assets/stylesheets/scss/courseware.scss @@ -2578,14 +2578,9 @@ d a s h b o a r d e n d * * * * * * * * * * * */ .cw-unit-progress { .cw-unit-progress-breadcrumb { - padding: 10px; - span { - color: $base-color; - cursor: pointer; - - &:hover { - color: $active-color; - } + padding: 10px 0; + a img { + vertical-align: top; } } @@ -2615,7 +2610,7 @@ d a s h b o a r d e n d border-top: solid thin $content-color-40; padding: 0 1em 0 1em; - .cw-dashboard-empty-info { + .cw-unit-empty-info { margin-top: 10px; } } diff --git a/resources/vue/components/courseware/CoursewareTile.vue b/resources/vue/components/courseware/CoursewareTile.vue index 6976acec1d7..f396769eb93 100644 --- a/resources/vue/components/courseware/CoursewareTile.vue +++ b/resources/vue/components/courseware/CoursewareTile.vue @@ -40,6 +40,8 @@ </template> <script> +import { mapGetters } from 'vuex'; + export default { name: "courseware-tile", props: { @@ -103,6 +105,9 @@ export default { } }, computed: { + ...mapGetters({ + userIsTeacher: 'userIsTeacher' + }), hasImage() { return this.imageUrl !== "" && this.imageUrl !== undefined; }, @@ -121,7 +126,10 @@ export default { } }, progressTitle() { - return this.$gettextInterpolate(this.$gettext("Fortschritt: %{progress}%"), { progress: this.progress }); + if (this.userIsTeacher) { + return this.$gettextInterpolate(this.$gettext("Fortschritt aller Teilnehmenden: %{progress}%"), { progress: this.progress }); + } + return this.$gettextInterpolate(this.$gettext("Mein Fortschritt: %{progress}%"), { progress: this.progress }); }, hasDescriptionLink() { return this.descriptionLink !== ''; @@ -134,4 +142,4 @@ export default { } }, } -</script> \ No newline at end of file +</script> diff --git a/resources/vue/components/courseware/CoursewareUnitItem.vue b/resources/vue/components/courseware/CoursewareUnitItem.vue index 67c1279031b..91b94a2e6b1 100644 --- a/resources/vue/components/courseware/CoursewareUnitItem.vue +++ b/resources/vue/components/courseware/CoursewareUnitItem.vue @@ -15,6 +15,7 @@ class="cw-unit-action-menu" :items="menuItems" :context="title" + :collapseAt="0" @showDelete="openDeleteDialog" @showExport="openExportDialog" @showProgress="openProgressDialog" @@ -41,7 +42,7 @@ <studip-dialog v-if="showProgressDialog" - :title="$gettext('Fortschritt')" + :title="userIsTeacher ? $gettext('Fortschritt aller Teilnehmenden') : $gettext('Mein Fortschritt')" :closeText="$gettext('Schließen')" closeClass="cancel" width="800" @@ -49,7 +50,7 @@ @close="closeProgressDialog" > <template v-slot:dialogContent> - <courseware-unit-progress :progressData="progresses" :unitId="unit.id" :rootId="unitElement.id"/> + <courseware-unit-progress :progressData="progresses" :unitId="unit.id" :rootId="parseInt(unitElement.id)"/> </template> </studip-dialog> diff --git a/resources/vue/components/courseware/CoursewareUnitProgress.vue b/resources/vue/components/courseware/CoursewareUnitProgress.vue index 61b53500a6b..6c7528ff281 100644 --- a/resources/vue/components/courseware/CoursewareUnitProgress.vue +++ b/resources/vue/components/courseware/CoursewareUnitProgress.vue @@ -1,29 +1,29 @@ <template> <div class="cw-unit-progress"> + <p v-if="userIsTeacher"> + {{ + $gettext('Die Fortschrittsanzeige bezieht sich auf den Anteil der Teilnehmenden, die eine Seite aufgerufen haben.') + }} + </p> <nav aria-label="Breadcrumb" class="cw-unit-progress-breadcrumb"> - <a - v-if="parent" - href="#" - :title="$gettext('Hauptseite')" - @click="visitRoot" - > + <a v-if="parent" href="#" :title="$gettext('Hauptseite')" @click="visitRoot"> <studip-icon shape="home" /> </a> - <a - v-if="parent" - href="#" - :title="parent.name" - @click="selectChapter(parent.id)" - > - / {{ parent.name }} + <a v-if="parent && parent.id !== rootId" href="#" :title="parent.name" @click="selectChapter(parent.id)"> + | {{ parent.name }} </a> </nav> <div v-if="selected" class="cw-unit-progress-chapter"> - <a :href="chapterUrl" :title="$gettextInterpolate('%{ pageTitle } öffnen', {pageTitle: selected.name})"> - <h1>{{ selected.name }}</h1> - </a> + <h1> + <a + :href="chapterUrl" + :title="$gettextInterpolate('%{ pageTitle } öffnen', { pageTitle: selected.name })" + > + {{ selected.name }} + </a> + </h1> <courseware-progress-circle - :title="$gettext('diese Seite inkl. darunter liegende Seiten')" + :title="selected.id === rootId ? $gettext('Gesamtes Lernmaterial') : $gettext('diese Seite inkl. darunter liegender Seiten')" :value="parseInt(selected.progress.cumulative)" /> <courseware-progress-circle @@ -32,7 +32,7 @@ :value="parseInt(selected.progress.self)" /> </div> - <div class="cw-unit-progress-subchapter-list"> + <div v-if="children.length > 0" class="cw-unit-progress-subchapter-list"> <courseware-unit-progress-item v-for="chapter in children" :key="chapter.id" @@ -41,12 +41,12 @@ :chapterId="chapter.id" @selectChapter="selectChapter" /> - <div v-if="!children.length" class="cw-unit-empty-info"> - <courseware-companion-box - mood="sad" - :msgCompanion="$gettext('Diese Seite enthält keine darunter liegenden Seiten.')" - /> - </div> + </div> + <div v-else class="cw-unit-empty-info"> + <courseware-companion-box + mood="sad" + :msgCompanion="$gettext('Diese Seite enthält keine darunter liegenden Seiten.')" + /> </div> </div> </template> @@ -57,6 +57,8 @@ import CoursewareUnitProgressItem from './CoursewareUnitProgressItem.vue'; import CoursewareProgressCircle from './CoursewareProgressCircle.vue'; import StudipIcon from '../StudipIcon.vue'; +import { mapGetters } from 'vuex'; + export default { name: 'courseware-unit-progress', components: { @@ -68,7 +70,7 @@ export default { props: { progressData: Object, unitId: String, - rootId: String + rootId: Number, }, data() { return { @@ -76,13 +78,12 @@ export default { }; }, computed: { + ...mapGetters({ + userIsTeacher: 'userIsTeacher', + }), chapterUrl() { return ( - STUDIP.URLHelper.base_url + - 'dispatch.php/course/courseware/courseware/'+ - this.unitId + - '?cid=' + - STUDIP.URLHelper.parameters.cid + + STUDIP.URLHelper.getURL('dispatch.php/course/courseware/courseware/' + this.unitId) + '#/structural_element/' + this.selected.id ); -- GitLab