From c9e9775eb1bbac4bb3c57d6730a35ff9567e0c8e Mon Sep 17 00:00:00 2001 From: Angelina Filippova <linakirsanova@gmail.com> Date: Thu, 3 Dec 2020 01:49:39 +0300 Subject: [PATCH] Render links for reports on mod log page --- src/views/moderation_log/LogEntryMessage.vue | 23 ++++++++++---------- src/views/moderation_log/ReportLink.vue | 20 +++++++++++++++++ src/views/moderation_log/UserLink.vue | 4 +--- 3 files changed, 32 insertions(+), 15 deletions(-) create mode 100644 src/views/moderation_log/ReportLink.vue diff --git a/src/views/moderation_log/LogEntryMessage.vue b/src/views/moderation_log/LogEntryMessage.vue index cf5ab63e..b0e3a6e8 100644 --- a/src/views/moderation_log/LogEntryMessage.vue +++ b/src/views/moderation_log/LogEntryMessage.vue @@ -1,22 +1,15 @@ <template> <span> <component :is="processedHtml"/> - <!-- <span v-if="subject.type === 'report' && propertyExists(subject, 'id')"> - {{ logEntryMessageWithoutId[0] }} - <router-link - :to="{ name: 'ReportsShow', params: { id: subject.id }}" - class="router-link"> - <span style="font-weight: 600">#{{ subject.id }}</span> - </router-link> - {{ logEntryMessageWithoutId[1] }} - </span> --> </span> </template> <script> +import ReportLink from './ReportLink' import UserLink from './UserLink' import Vue from 'vue' Vue.component('user-link', UserLink) +Vue.component('report-link', ReportLink) export default { name: 'LogEntryMessage', @@ -38,14 +31,20 @@ export default { } }, computed: { - // logEntryMessageWithoutId() { - // return this.logEntryMessage.split(`#${this.subject.id}`) - // }, processedHtml() { const html = [...this.message.matchAll(/\@(?<nickname>([\w-]+))/g)].map(res => res.groups.nickname) .reduce((acc, nickname) => { return acc.replace(`@${nickname}`, `<user-link actor="${nickname}"/>`) }, this.message) + if (this.subject.type === 'report' && this.subject.id) { + const updatedHtml = [...html.matchAll(/\#(?<reportId>([\w]+))/g)].map(res => res.groups.reportId) + .reduce((acc, id) => { + return acc.replace(`#${id}`, `<report-link id="${id}"/>`) + }, html) + return { + template: '<div>' + updatedHtml + '</div>' + } + } return { template: '<div>' + html + '</div>' } diff --git a/src/views/moderation_log/ReportLink.vue b/src/views/moderation_log/ReportLink.vue new file mode 100644 index 00000000..bfbd210a --- /dev/null +++ b/src/views/moderation_log/ReportLink.vue @@ -0,0 +1,20 @@ +<template> + <router-link + :to="{ name: 'ReportsShow', params: { id }}" + class="router-link"> + <span style="font-weight: 600">#{{ id }}</span> + </router-link> +</template> + +<script> + +export default { + name: 'UserLink', + props: { + id: { + type: String, + required: true + } + } +} +</script> diff --git a/src/views/moderation_log/UserLink.vue b/src/views/moderation_log/UserLink.vue index cacfb1b1..77ab82a4 100644 --- a/src/views/moderation_log/UserLink.vue +++ b/src/views/moderation_log/UserLink.vue @@ -2,9 +2,7 @@ <router-link :to="{ name: 'UsersShow', params: { id: actor }}" class="router-link"> - <span style="font-weight: 600;margin-right: -3px;"> - @{{ actor }} - </span> + <span style="font-weight: 600">@{{ actor }}</span> </router-link> </template> -- GitLab