diff options
Diffstat (limited to 'resources/vue/apps')
| -rw-r--r-- | resources/vue/apps/forum/categories/Index.vue | 3 | ||||
| -rw-r--r-- | resources/vue/apps/forum/discussions/Show.vue | 114 | ||||
| -rw-r--r-- | resources/vue/apps/forum/topics/Index.vue | 6 | ||||
| -rw-r--r-- | resources/vue/apps/forum/topics/Show.vue | 7 |
4 files changed, 34 insertions, 96 deletions
diff --git a/resources/vue/apps/forum/categories/Index.vue b/resources/vue/apps/forum/categories/Index.vue index 93977cf..647a6a5 100644 --- a/resources/vue/apps/forum/categories/Index.vue +++ b/resources/vue/apps/forum/categories/Index.vue @@ -122,7 +122,7 @@ const swapCategory = (categoryId, step) => { </div> <div class="actions"> - <CreateCategory v-if="forumConfig.isModerator" /> + <CreateCategory /> <button v-if="forumConfig.tileLayout" @click="forumConfig.toggleForumLayout()" @@ -176,7 +176,6 @@ const swapCategory = (categoryId, step) => { <div v-else-if="forumConfig.isModerator" class="topic-cards-container"> <div class="topic-card --new-topic"> <CreateCategory - v-if="forumConfig.isModerator" class="--with-label" :label="$gettext('Neue Kategorie anlegen')" /> 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"> diff --git a/resources/vue/apps/forum/topics/Index.vue b/resources/vue/apps/forum/topics/Index.vue index 9df0a78..75c5267 100644 --- a/resources/vue/apps/forum/topics/Index.vue +++ b/resources/vue/apps/forum/topics/Index.vue @@ -49,8 +49,8 @@ const fetchTopics = async (_, offset = 0) => { } onMounted(async () => { - await fetchTopics() -}) + await fetchTopics(); +}); </script> <template> @@ -63,7 +63,7 @@ onMounted(async () => { {{ $gettext('Themen') }} </h2> <div class="actions"> - <CreateTopic v-if="forumConfig.isModerator" /> + <CreateTopic /> <button v-if="forumConfig.tileLayout" @click="forumConfig.toggleForumLayout();" diff --git a/resources/vue/apps/forum/topics/Show.vue b/resources/vue/apps/forum/topics/Show.vue index 619df47..58319fa 100644 --- a/resources/vue/apps/forum/topics/Show.vue +++ b/resources/vue/apps/forum/topics/Show.vue @@ -10,7 +10,9 @@ import StudipDateTime from "../../../components/StudipDateTime.vue"; import SubscriptionDropdown from "@/vue/components/forum/SubscriptionDropdown.vue"; import {deserializeJSONAPIResponse} from "../../../../assets/javascripts/lib/jsonapiUtils"; import StudipPagination from "../../../components/StudipPagination.vue"; +import {useForumConfig} from "../../../store/pinia/forum/ForumConfig"; +const forumConfig = useForumConfig(); const props = defineProps({ topic: { type: Object, @@ -25,8 +27,7 @@ const props = defineProps({ required: true, }, user_subscription: { - type: Object, - required: true + type: Object }, }); @@ -96,7 +97,7 @@ onMounted(async () => { </div> </div> - <div class="actions"> + <div v-if="!forumConfig.allowGuestAccess" class="actions"> <CreateDiscussion :topic_id="topic.topic_id" /> <SubscriptionDropdown :title="$gettext('Thema abonnieren')" |
