aboutsummaryrefslogtreecommitdiff
path: root/resources/vue/apps/forum/discussions/Show.vue
diff options
context:
space:
mode:
Diffstat (limited to 'resources/vue/apps/forum/discussions/Show.vue')
-rw-r--r--resources/vue/apps/forum/discussions/Show.vue114
1 files changed, 26 insertions, 88 deletions
diff --git a/resources/vue/apps/forum/discussions/Show.vue b/resources/vue/apps/forum/discussions/Show.vue
index 1b09a7b..b0a6f66 100644
--- a/resources/vue/apps/forum/discussions/Show.vue
+++ b/resources/vue/apps/forum/discussions/Show.vue
@@ -1,8 +1,6 @@
<script setup>
import {onMounted, computed, ref} from "vue";
import ForumApp from "@/vue/components/forum/ForumApp.vue";
-import ForumMembers from "@/vue/components/forum/ForumMembers.vue";
-import {numberFormatter} from "../../../../assets/javascripts/lib/number_formatter";
import {useForumPost} from "../../../store/pinia/forum/ForumPost";
import {$gettext} from "../../../../assets/javascripts/lib/gettext";
import Post from "@/vue/components/forum/posts/Post.vue";
@@ -15,6 +13,7 @@ import SubscriptionDropdown from "@/vue/components/forum/SubscriptionDropdown.vu
import {highlightText, removeHighlight} from "@/vue/components/forum/helpers";
import {getSearchURL, getTopicURL, getDiscussionIndexURL} from "@/vue/components/forum/helpers/urls";
import {deserializeJSONAPIResponse} from "../../../../assets/javascripts/lib/jsonapiUtils";
+import DiscussionFooter from "../../../components/forum/discussions/DiscussionFooter.vue";
const forumConfig = useForumConfig();
const forumPostStore = useForumPost();
@@ -115,7 +114,6 @@ const fetchPostings = async () => {
};
-
onMounted(async () => {
isLoading.value = true;
@@ -194,17 +192,19 @@ onMounted(async () => {
</em>
<StudipIcon shape="lock-locked2" :size="20" role="inactive" />
</div>
- <button v-if="canEditDiscussion" @click="editDiscussion(discussion.discussion_id)" type="button" :title="$gettext('Diskussion bearbeiten')" class="button button--icon-only">
- <StudipIcon shape="edit" :size="20" />
- </button>
- <SubscriptionDropdown
- v-if="!discussion.closed_at"
- :subject="{
- id: discussion.discussion_id,
- type: 'forum-discussions'
- }"
- :user_subscription="auth_user.subscription"
- />
+ <template v-if="!forumConfig.allowGuestAccess">
+ <button v-if="canEditDiscussion" @click="editDiscussion(discussion.discussion_id)" type="button" :title="$gettext('Diskussion bearbeiten')" class="button button--icon-only">
+ <StudipIcon shape="edit" :size="20" />
+ </button>
+ <SubscriptionDropdown
+ v-if="!discussion.closed_at"
+ :subject="{
+ id: discussion.discussion_id,
+ type: 'forum-discussions'
+ }"
+ :user_subscription="auth_user.subscription"
+ />
+ </template>
</div>
</div>
</header>
@@ -219,43 +219,12 @@ onMounted(async () => {
</p>
</div>
<hr />
- <div class="discussion__status">
- <div class="flex items-start gap-20">
- <div class="text-center">
- <p>{{ $gettext('Erstellt') }}</p>
- <StudipDateTime :iso="discussion.mkdate" :date_only="true"/>
- </div>
- <div class="text-center">
- <p>{{ $gettext('Beiträge') }}</p>
- <p>{{ posts.length }}</p>
- </div>
- <div class="text-center">
- <p>{{ $gettext('Aufrufe') }}</p>
- <p>{{ numberFormatter(discussion.view_count, 1) }}</p>
- </div>
- <div class="text-center">
- <p>{{ $gettext('Aktivität') }}</p>
- <StudipDateTime v-if="posts[posts.length -1]" :iso="posts[posts.length -1].mkdate" :relative="true" />
- <StudipDateTime v-else :iso="discussion.mkdate" :relative="true"/>
- </div>
- </div>
- <ForumMembers :members="discussion.members" :limit="5" size="35px" />
- <a
- v-if="!discussion.closed_at"
- href="#new-post"
- class="button button--icon-label"
- role="button"
- :title="$gettext('Antworten')"
- :aria-label="$gettext('Antworten')"
- :class="{
- 'disabled': postCreateForm
- }"
- @click="postCreateForm = true"
- >
- <StudipIcon shape="reply" :size="20" aria-hidden="true" />
- {{ $gettext('Antworten') }}
- </a>
- </div>
+ <DiscussionFooter
+ :discussion="discussion"
+ :posts_count="posts.length"
+ :recent_activity="posts[posts.length - 1] ? posts[posts.length - 1].mkdate : null"
+ v-model:postCreateForm="postCreateForm"
+ />
<hr />
</div>
<div class="posts-container">
@@ -271,43 +240,12 @@ onMounted(async () => {
</div>
<div v-if="posts.length > 3" class="discussion">
- <div class="discussion__status">
- <div class="flex items-start gap-20">
- <div class="text-center">
- <p>{{ $gettext('Erstellt') }}</p>
- <StudipDateTime :iso="discussion.mkdate" :date_only="true"/>
- </div>
- <div class="text-center">
- <p>{{ $gettext('Beiträge') }}</p>
- <p>{{ posts.length }}</p>
- </div>
- <div class="text-center">
- <p>{{ $gettext('Aufrufe') }}</p>
- <p>{{ numberFormatter(discussion.view_count, 1) }}</p>
- </div>
- <div class="text-center">
- <p>{{ $gettext('Aktivität') }}</p>
- <StudipDateTime v-if="posts[posts.length -1]" :iso="posts[posts.length -1].mkdate" :relative="true" />
- <StudipDateTime v-else :iso="discussion.mkdate" :relative="true"/>
- </div>
- </div>
- <ForumMembers :members="discussion.members" :limit="5" size="35px" />
- <a
- v-if="!discussion.closed_at"
- href="#new-post"
- class="button button--icon-label"
- role="button"
- :title="$gettext('Antworten')"
- :aria-label="$gettext('Antworten')"
- :class="{
- 'disabled': postCreateForm
- }"
- @click="postCreateForm = true"
- >
- <StudipIcon shape="reply" :size="20" aria-hidden="true" />
- {{ $gettext('Antworten') }}
- </a>
- </div>
+ <DiscussionFooter
+ :discussion="discussion"
+ :posts_count="posts.length"
+ :recent_activity="posts[posts.length - 1].mkdate"
+ v-model:postCreateForm="postCreateForm"
+ />
</div>
<div id="new-post" class="post-form-container">