123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139 |
- <template>
- <div class="mb-3">
- <div v-if="status.media_attachments && status.media_attachments.length" class="list-group-item" style="gap:1rem;overflow:hidden;">
- <div class="text-center text-muted small font-weight-bold mb-3">Reported Post Media</div>
- <div v-if="status.media_attachments && status.media_attachments.length" class="d-flex flex-grow-1" style="gap: 1rem;overflow-x:auto;">
- <template
- v-for="media in status.media_attachments">
- <img
- v-if="media.type === 'image'"
- :src="media.url"
- width="70"
- height="70"
- class="rounded"
- style="object-fit: cover;"
- @click="toggleLightbox"
- onerror="this.src='/storage/no-preview.png';this.error=null;" />
- <video
- v-else-if="media.type === 'video'"
- width="140"
- height="90"
- playsinline
- @click.prevent="toggleVideoLightbox($event, media.url)"
- class="rounded"
- >
- <source :src="media.url" :type="media.mime">
- </video>
- </template>
- </div>
- </div>
- <div class="list-group-item d-flex flex-row flex-grow-1" style="gap:1rem;">
- <div class="flex-grow-1">
- <div v-if="status && status.in_reply_to_id && status.parent && status.parent.account" class="mb-3">
- <template v-if="showInReplyTo">
- <div class="mt-n1 text-center text-muted small font-weight-bold mb-1">Reply to</div>
- <div class="media" style="gap: 1rem;">
- <img
- :src="status.parent.account.avatar"
- width="40"
- height="40"
- class="rounded-lg"
- onerror="this.onerror=null;this.src='/storage/avatars/default.jpg?v=0';">
- <div class="d-flex flex-column">
- <p class="font-weight-bold mb-0" style="font-size: 11px;">
- <a :href="`/i/web/profile/${status.parent.account.id}`" target="_blank">{{ status.parent.account.acct }}</a>
- </p>
- <admin-read-more :content="status.parent.content_text" />
- <p class="mb-1">
- <a :href="`/i/web/post/${status.parent.id}`" target="_blank" class="text-muted" style="font-size: 11px;">
- <i class="far fa-link mr-1"></i> {{ formatDate(status.parent.created_at)}}
- </a>
- </p>
- </div>
- </div>
- <hr class="my-1">
- </template>
- <a v-else class="btn btn-dark font-weight-bold btn-block btn-sm" href="#" @click.prevent="showInReplyTo = true">Show parent post</a>
- </div>
- <div>
- <div class="mt-n1 text-center text-muted small font-weight-bold mb-1">Reported Post</div>
- <div class="media" style="gap: 1rem;">
- <img
- :src="status.account.avatar"
- width="40"
- height="40"
- class="rounded-lg"
- onerror="this.onerror=null;this.src='/storage/avatars/default.jpg?v=0';">
- <div class="d-flex flex-column">
- <p class="font-weight-bold mb-0" style="font-size: 11px;">
- <a :href="`/i/web/profile/${status.account.id}`" target="_blank">{{ status.account.acct }}</a>
- </p>
- <template v-if="status && status.content_text && status.content_text.length">
- <admin-read-more :content="status.content_text" />
- </template>
- <template v-else>
- <admin-read-more content="EMPTY CAPTION" class="font-weight-bold text-muted" />
- </template>
- <p class="mb-0">
- <a :href="`/i/web/post/${status.id}`" target="_blank" class="text-muted" style="font-size: 11px;">
- <i class="far fa-link mr-1"></i> {{ formatDate(status.created_at)}}
- </a>
- </p>
- </div>
- </div>
- </div>
- </div>
- </div>
- </div>
- </template>
- <script>
- import BigPicture from 'bigpicture';
- import AdminReadMore from './AdminReadMore.vue';
- export default {
- props: {
- status: {
- type: Object
- }
- },
- data() {
- return {
- showInReplyTo: false,
- }
- },
- components: {
- "admin-read-more": AdminReadMore
- },
- methods: {
- toggleLightbox(e) {
- BigPicture({
- el: e.target
- })
- },
- toggleVideoLightbox($event, src) {
- BigPicture({
- el: event.target,
- vidSrc: src
- })
- },
- formatDate(str) {
- let date = new Date(str);
- return new Intl.DateTimeFormat('default', {
- month: 'long',
- day: 'numeric',
- year: 'numeric',
- hour: 'numeric',
- minute: 'numeric'
- }).format(date);
- },
- }
- }
- </script>
|