From 83c65df4a5470a0782491eab827c339fe6b28599 Mon Sep 17 00:00:00 2001
From: Ron Lucke <lucke@elan-ev.de>
Date: Thu, 14 Sep 2023 10:58:52 +0000
Subject: [PATCH] fix #3179

Closes #3179

Merge request studip/studip!2154
---
 .../courseware/CoursewareDashboardTasks.vue   | 69 +++++++++----------
 1 file changed, 34 insertions(+), 35 deletions(-)

diff --git a/resources/vue/components/courseware/CoursewareDashboardTasks.vue b/resources/vue/components/courseware/CoursewareDashboardTasks.vue
index 6535272b4b4..8bee6f552c4 100644
--- a/resources/vue/components/courseware/CoursewareDashboardTasks.vue
+++ b/resources/vue/components/courseware/CoursewareDashboardTasks.vue
@@ -6,15 +6,14 @@
             </colgroup>
             <thead>
                 <tr>
-                    <th><translate>Status</translate></th>
-                    <th class="responsive-hidden"><translate>Aufgabentitel</translate></th>
-                    <th><translate>Seite</translate></th>
-                    <th><translate>bearbeitet</translate></th>
-                    <th><translate>Abgabefrist</translate></th>
-                    <th><translate>Abgabe</translate></th>
-                    <th class="responsive-hidden"><translate>Verlängerungsanfrage</translate></th>
-                    <th class="responsive-hidden"><translate>Feedback</translate></th>
-                    <th><translate>Aktionen</translate></th>
+                    <th>{{ $gettext('Status') }}</th>
+                    <th>{{ $gettext('Aufgabe') }}</th>
+                    <th>{{ $gettext('bearbeitet') }}</th>
+                    <th>{{ $gettext('Abgabefrist') }}</th>
+                    <th>{{ $gettext('Abgabe') }}</th>
+                    <th class="responsive-hidden">{{ $gettext('Verlängerungsanfrage') }}</th>
+                    <th class="responsive-hidden">{{ $gettext('Feedback') }}</th>
+                    <th class="actions">{{ $gettext('Aktionen') }}</th>
                 </tr>
             </thead>
             <tbody>
@@ -27,19 +26,17 @@
                             :title="status.description"
                         />
                     </td>
-                    <td class="responsive-hidden">
-                        <studip-icon
-                            v-if="task.attributes['solver-type'] === 'group'"
-                            shape="group2"
-                            role="info"
-                            :title="$gettext('Gruppenaufgabe')"
-                        />
-                        {{ taskGroup.attributes.title }}
-                    </td>
                     <td>
-                        <a :href="getLinkToElement(element)">{{ element.attributes.title }}</a>
+                        <a :href="getLinkToElement(element)">
+                            <studip-icon
+                                v-if="task.attributes['solver-type'] === 'group'"
+                                shape="group2"
+                                :title="$gettext('Gruppenaufgabe')"
+                            />
+                            {{ taskGroup.attributes.title }}
+                        </a>
                     </td>
-                    <td>{{ task.attributes?.progress?.toFixed(2) || '-'}}%</td>
+                    <td>{{ task.attributes?.progress?.toFixed(0) || '-' }}%</td>
                     <td>{{ getReadableDate(task.attributes['submission-date']) }}</td>
                     <td>
                         <studip-icon v-if="task.attributes.submitted" shape="accept" role="status-green" />
@@ -47,14 +44,14 @@
                     <td class="responsive-hidden">
                         <span v-show="task.attributes.renewal === 'declined'">
                             <studip-icon shape="decline" role="status-red" />
-                            <translate>Anfrage abgelehnt</translate>
+                            {{ $gettext('Anfrage abgelehnt') }}
                         </span>
                         <span v-show="task.attributes.renewal === 'pending'">
                             <studip-icon shape="date" role="status-yellow" />
-                            <translate>Anfrage wird bearbeitet</translate>
+                            {{ $gettext('Anfrage wird bearbeitet') }}
                         </span>
                         <span v-show="task.attributes.renewal === 'granted'">
-                            <translate>verlängert bis</translate>: {{getReadableDate(task.attributes['renewal-date'])}}
+                            {{ $gettext('verlängert bis') }}: {{ getReadableDate(task.attributes['renewal-date']) }}
                         </span>
                     </td>
                     <td class="responsive-hidden">
@@ -69,7 +66,7 @@
                     </td>
                     <td class="actions">
                         <studip-action-menu
-                            :items="getTaskMenuItems(task, status)"
+                            :items="getTaskMenuItems(task, status, element)"
                             @submitTask="displaySubmitDialog(task)"
                             @renewalRequest="renewalRequest(task)"
                             @copyContent="copyContent(element)"
@@ -79,7 +76,7 @@
             </tbody>
         </table>
         <div v-else>
-            <courseware-companion-box 
+            <courseware-companion-box
                 mood="sad"
                 :msgCompanion="$gettext('Es wurden bisher keine Aufgaben gestellt.')"
             />
@@ -177,22 +174,28 @@ export default {
             companionSuccess: 'companionSuccess',
             companionError: 'companionError',
         }),
-        getTaskMenuItems(task, status) {
+        getTaskMenuItems(task, status, element) {
             let menuItems = [];
             if (!task.attributes.submitted && status.canSubmit) {
-                menuItems.push({ id: 1, label: this.$gettext('Aufgabe abgeben'), icon: 'service', emit: 'submitTask' });
+                menuItems.push({
+                    id: 1,
+                    label: this.$gettext('Aufgabe bearbeiten'),
+                    icon: 'edit',
+                    url: this.getLinkToElement(element),
+                });
+                menuItems.push({ id: 2, label: this.$gettext('Aufgabe abgeben'), icon: 'service', emit: 'submitTask' });
             }
 
             if (!task.attributes.submitted && !task.attributes.renewal) {
                 menuItems.push({
-                    id: 2,
+                    id: 3,
                     label: this.$gettext('Verlängerung beantragen'),
                     icon: 'date',
                     emit: 'renewalRequest',
                 });
             }
             if (task.attributes.submitted) {
-                menuItems.push({ id: 3, label: this.$gettext('Inhalt kopieren'), icon: 'export', emit: 'copyContent' });
+                menuItems.push({ id: 4, label: this.$gettext('Inhalt kopieren'), icon: 'export', emit: 'copyContent' });
             }
 
             return menuItems;
@@ -225,11 +228,7 @@ export default {
                 taskId: this.currentTask.id,
             });
             this.companionSuccess({
-                info:
-                    '"' +
-                    this.currentTask.attributes.title +
-                    '" ' +
-                    this.$gettext('wurde erfolgreich abgegeben.'),
+                info: '"' + this.currentTask.attributes.title + '" ' + this.$gettext('wurde erfolgreich abgegeben.'),
             });
             this.currentTask = null;
         },
@@ -243,7 +242,7 @@ export default {
                     parentId: ownCoursewareInstance.relationships.root.data.id,
                     elementId: element.id,
                     removeType: true,
-                    migrate: false
+                    migrate: false,
                 });
                 this.companionSuccess({
                     info: this.$gettext('Die Inhalte wurden zu Ihren persönlichen Lernmaterialien hinzugefügt.'),
-- 
GitLab