mirror of
https://github.com/MrUnknownDE/VRCX.git
synced 2026-05-05 06:16:05 +02:00
refactor: Group Dialog (#1207)
This commit is contained in:
@@ -1,758 +0,0 @@
|
||||
mixin groupDialog
|
||||
el-dialog.x-dialog.x-group-dialog(
|
||||
:before-close='beforeDialogClose'
|
||||
@mousedown.native='dialogMouseDown'
|
||||
@mouseup.native='dialogMouseUp'
|
||||
ref='groupDialog'
|
||||
:visible.sync='groupDialog.visible'
|
||||
:show-close='false'
|
||||
width='770px'
|
||||
top='10vh')
|
||||
.group-banner-image
|
||||
el-popover(placement='right' width='500px' trigger='click')
|
||||
img.x-link(
|
||||
slot='reference'
|
||||
v-lazy='groupDialog.ref.bannerUrl'
|
||||
style='flex: none; width: 100%; aspect-ratio: 6/1; object-fit: cover; border-radius: 4px')
|
||||
img.x-link(
|
||||
v-lazy='groupDialog.ref.bannerUrl'
|
||||
style='width: 854px; height: 480px'
|
||||
@click='showFullscreenImageDialog(groupDialog.ref.bannerUrl)')
|
||||
.group-body(v-loading='groupDialog.loading')
|
||||
div(style='display: flex')
|
||||
el-popover(placement='right' width='500px' trigger='click')
|
||||
img.x-link(
|
||||
slot='reference'
|
||||
v-lazy='groupDialog.ref.iconUrl'
|
||||
style='flex: none; width: 120px; height: 120px; border-radius: 12px')
|
||||
img.x-link(
|
||||
v-lazy='groupDialog.ref.iconUrl'
|
||||
style='width: 500px; height: 500px'
|
||||
@click='showFullscreenImageDialog(groupDialog.ref.iconUrl)')
|
||||
div(style='flex: 1; display: flex; align-items: center; margin-left: 15px')
|
||||
.group-header(style='flex: 1')
|
||||
span(v-if='groupDialog.ref.ownerId === API.currentUser.id' style='margin-right: 5px') 👑
|
||||
span.dialog-title(v-text='groupDialog.ref.name' style='margin-right: 5px')
|
||||
span.group-discriminator.x-grey(
|
||||
style='font-family: monospace; font-size: 12px; margin-right: 5px') {{ groupDialog.ref.shortCode }}.{{ groupDialog.ref.discriminator }}
|
||||
el-tooltip(v-for='item in groupDialog.ref.$languages' :key='item.key' placement='top')
|
||||
template(#content)
|
||||
span {{ item.value }} ({{ item.key }})
|
||||
span.flags(
|
||||
:class='languageClass(item.key)'
|
||||
style='display: inline-block; margin-right: 5px')
|
||||
div(style='margin-top: 5px')
|
||||
span.x-link.x-grey(
|
||||
v-text='groupDialog.ownerDisplayName'
|
||||
@click='showUserDialog(groupDialog.ref.ownerId)'
|
||||
style='font-family: monospace')
|
||||
.group-tags
|
||||
el-tag(
|
||||
v-if='groupDialog.ref.isVerified'
|
||||
type='info'
|
||||
effect='plain'
|
||||
size='mini'
|
||||
style='margin-right: 5px; margin-top: 5px') {{ $t('dialog.group.tags.verified') }}
|
||||
|
||||
el-tag(
|
||||
v-if='groupDialog.ref.privacy === "private"'
|
||||
type='danger'
|
||||
effect='plain'
|
||||
size='mini'
|
||||
style='margin-right: 5px; margin-top: 5px') {{ $t('dialog.group.tags.private') }}
|
||||
el-tag(
|
||||
v-if='groupDialog.ref.privacy === "default"'
|
||||
type='success'
|
||||
effect='plain'
|
||||
size='mini'
|
||||
style='margin-right: 5px; margin-top: 5px') {{ $t('dialog.group.tags.public') }}
|
||||
|
||||
el-tag(
|
||||
v-if='groupDialog.ref.joinState === "open"'
|
||||
type='success'
|
||||
effect='plain'
|
||||
size='mini'
|
||||
style='margin-right: 5px; margin-top: 5px') {{ $t('dialog.group.tags.open') }}
|
||||
el-tag(
|
||||
v-else-if='groupDialog.ref.joinState === "request"'
|
||||
type='warning'
|
||||
effect='plain'
|
||||
size='mini'
|
||||
style='margin-right: 5px; margin-top: 5px') {{ $t('dialog.group.tags.request') }}
|
||||
el-tag(
|
||||
v-else-if='groupDialog.ref.joinState === "invite"'
|
||||
type='danger'
|
||||
effect='plain'
|
||||
size='mini'
|
||||
style='margin-right: 5px; margin-top: 5px') {{ $t('dialog.group.tags.invite') }}
|
||||
el-tag(
|
||||
v-else-if='groupDialog.ref.joinState === "closed"'
|
||||
type='danger'
|
||||
effect='plain'
|
||||
size='mini'
|
||||
style='margin-right: 5px; margin-top: 5px') {{ $t('dialog.group.tags.closed') }}
|
||||
|
||||
el-tag(
|
||||
v-if='groupDialog.inGroup'
|
||||
type='info'
|
||||
effect='plain'
|
||||
size='mini'
|
||||
style='margin-right: 5px; margin-top: 5px') {{ $t('dialog.group.tags.joined') }}
|
||||
el-tag(
|
||||
v-if='groupDialog.ref.myMember && groupDialog.ref.myMember.bannedAt'
|
||||
type='danger'
|
||||
effect='plain'
|
||||
size='mini'
|
||||
style='margin-right: 5px; margin-top: 5px') {{ $t('dialog.group.tags.banned') }}
|
||||
|
||||
template(v-if='groupDialog.inGroup && groupDialog.ref.myMember')
|
||||
el-tag(
|
||||
v-if='groupDialog.ref.myMember.visibility === "visible"'
|
||||
type='info'
|
||||
effect='plain'
|
||||
size='mini'
|
||||
style='margin-right: 5px; margin-top: 5px') {{ $t('dialog.group.tags.visible') }}
|
||||
el-tag(
|
||||
v-else-if='groupDialog.ref.myMember.visibility === "friends"'
|
||||
type='info'
|
||||
effect='plain'
|
||||
size='mini'
|
||||
style='margin-right: 5px; margin-top: 5px') {{ $t('dialog.group.tags.friends') }}
|
||||
el-tag(
|
||||
v-else-if='groupDialog.ref.myMember.visibility === "hidden"'
|
||||
type='info'
|
||||
effect='plain'
|
||||
size='mini'
|
||||
style='margin-right: 5px; margin-top: 5px') {{ $t('dialog.group.tags.hidden') }}
|
||||
el-tag(
|
||||
v-if='groupDialog.ref.myMember.isSubscribedToAnnouncements'
|
||||
type='info'
|
||||
effect='plain'
|
||||
size='mini'
|
||||
style='margin-right: 5px; margin-top: 5px') {{ $t('dialog.group.tags.subscribed') }}
|
||||
|
||||
.group-description(style='margin-top: 5px')
|
||||
span(
|
||||
v-show='groupDialog.ref.name !== groupDialog.ref.description'
|
||||
v-text='groupDialog.ref.description'
|
||||
style='font-size: 12px')
|
||||
div(style='flex: none; margin-left: 10px')
|
||||
template(v-if='groupDialog.inGroup && groupDialog.ref?.myMember')
|
||||
el-tooltip(
|
||||
v-if='groupDialog.ref.myMember?.isRepresenting'
|
||||
placement='top'
|
||||
:content='$t("dialog.group.actions.unrepresent_tooltip")'
|
||||
:disabled='hideTooltips')
|
||||
el-button(
|
||||
type='warning'
|
||||
icon='el-icon-star-on'
|
||||
circle
|
||||
@click='clearGroupRepresentation(groupDialog.id)'
|
||||
style='margin-left: 5px')
|
||||
el-tooltip(
|
||||
v-else
|
||||
placement='top'
|
||||
:content='$t("dialog.group.actions.represent_tooltip")'
|
||||
:disabled='hideTooltips')
|
||||
span
|
||||
el-button(
|
||||
type='default'
|
||||
icon='el-icon-star-off'
|
||||
circle
|
||||
@click='setGroupRepresentation(groupDialog.id)'
|
||||
style='margin-left: 5px'
|
||||
:disabled='groupDialog.ref.privacy === "private"')
|
||||
template(v-else-if='groupDialog.ref.myMember?.membershipStatus === "requested"')
|
||||
el-tooltip(
|
||||
placement='top'
|
||||
:content='$t("dialog.group.actions.cancel_join_request_tooltip")'
|
||||
:disabled='hideTooltips')
|
||||
span
|
||||
el-button(
|
||||
type='default'
|
||||
icon='el-icon-close'
|
||||
circle
|
||||
@click='cancelGroupRequest(groupDialog.id)'
|
||||
style='margin-left: 5px')
|
||||
template(v-else-if='groupDialog.ref.myMember?.membershipStatus === "invited"')
|
||||
el-tooltip(
|
||||
placement='top'
|
||||
:content='$t("dialog.group.actions.pending_request_tooltip")'
|
||||
:disabled='hideTooltips')
|
||||
span
|
||||
el-button(
|
||||
type='default'
|
||||
icon='el-icon-check'
|
||||
circle
|
||||
@click='joinGroup(groupDialog.id)'
|
||||
style='margin-left: 5px')
|
||||
template(v-else)
|
||||
el-tooltip(
|
||||
v-if='groupDialog.ref.joinState === "request"'
|
||||
placement='top'
|
||||
:content='$t("dialog.group.actions.request_join_tooltip")'
|
||||
:disabled='hideTooltips')
|
||||
el-button(
|
||||
type='default'
|
||||
icon='el-icon-message'
|
||||
circle
|
||||
@click='joinGroup(groupDialog.id)'
|
||||
style='margin-left: 5px')
|
||||
el-tooltip(
|
||||
v-if='groupDialog.ref.joinState === "invite"'
|
||||
placement='top'
|
||||
:content='$t("dialog.group.actions.invite_required_tooltip")'
|
||||
:disabled='hideTooltips')
|
||||
span
|
||||
el-button(
|
||||
type='default'
|
||||
icon='el-icon-message'
|
||||
disabled
|
||||
circle
|
||||
style='margin-left: 5px')
|
||||
el-tooltip(
|
||||
v-if='groupDialog.ref.joinState === "open"'
|
||||
placement='top'
|
||||
:content='$t("dialog.group.actions.join_group_tooltip")'
|
||||
:disabled='hideTooltips')
|
||||
el-button(
|
||||
type='default'
|
||||
icon='el-icon-check'
|
||||
circle
|
||||
@click='joinGroup(groupDialog.id)'
|
||||
style='margin-left: 5px')
|
||||
el-dropdown(
|
||||
trigger='click'
|
||||
@command='groupDialogCommand'
|
||||
size='small'
|
||||
style='margin-left: 5px')
|
||||
el-button(
|
||||
:type='groupDialog.ref.membershipStatus === "userblocked" ? "danger" : "default"'
|
||||
icon='el-icon-more'
|
||||
circle)
|
||||
el-dropdown-menu(#default='dropdown')
|
||||
el-dropdown-item(icon='el-icon-refresh' command='Refresh') {{ $t('dialog.group.actions.refresh') }}
|
||||
el-dropdown-item(icon='el-icon-share' command='Share') {{ $t('dialog.group.actions.share') }}
|
||||
template(v-if='groupDialog.inGroup')
|
||||
template(v-if='groupDialog.ref.myMember')
|
||||
el-dropdown-item(
|
||||
v-if='groupDialog.ref.myMember.isSubscribedToAnnouncements'
|
||||
icon='el-icon-close'
|
||||
command='Unsubscribe To Announcements'
|
||||
divided) {{ $t('dialog.group.actions.unsubscribe') }}
|
||||
el-dropdown-item(
|
||||
v-else
|
||||
icon='el-icon-check'
|
||||
command='Subscribe To Announcements'
|
||||
divided) {{ $t('dialog.group.actions.subscribe') }}
|
||||
el-dropdown-item(
|
||||
v-if='hasGroupPermission(groupDialog.ref, "group-invites-manage")'
|
||||
icon='el-icon-message'
|
||||
command='Invite To Group') {{ $t('dialog.group.actions.invite_to_group') }}
|
||||
template(v-if='hasGroupPermission(groupDialog.ref, "group-announcement-manage")')
|
||||
el-dropdown-item(icon='el-icon-tickets' command='Create Post') {{ $t('dialog.group.actions.create_post') }}
|
||||
//- template(v-if="hasGroupPermission(groupDialog.ref, 'group-members-manage')")
|
||||
el-dropdown-item(icon='el-icon-s-operation' command='Moderation Tools') {{ $t('dialog.group.actions.moderation_tools') }}
|
||||
template(v-if='groupDialog.ref.myMember && groupDialog.ref.privacy === "default"')
|
||||
el-dropdown-item(icon='el-icon-view' command='Visibility Everyone' divided) #[i.el-icon-check(v-if='groupDialog.ref.myMember.visibility === "visible"')] {{ $t('dialog.group.actions.visibility_everyone') }}
|
||||
el-dropdown-item(icon='el-icon-view' command='Visibility Friends') #[i.el-icon-check(v-if='groupDialog.ref.myMember.visibility === "friends"')] {{ $t('dialog.group.actions.visibility_friends') }}
|
||||
el-dropdown-item(icon='el-icon-view' command='Visibility Hidden') #[i.el-icon-check(v-if='groupDialog.ref.myMember.visibility === "hidden"')] {{ $t('dialog.group.actions.visibility_hidden') }}
|
||||
el-dropdown-item(
|
||||
icon='el-icon-delete'
|
||||
command='Leave Group'
|
||||
style='color: #f56c6c'
|
||||
divided) {{ $t('dialog.group.actions.leave') }}
|
||||
template(v-else)
|
||||
el-dropdown-item(
|
||||
v-if='groupDialog.ref.membershipStatus === "userblocked"'
|
||||
icon='el-icon-circle-check'
|
||||
command='Unblock Group'
|
||||
style='color: #f56c6c'
|
||||
divided) {{ $t('dialog.group.actions.unblock') }}
|
||||
el-dropdown-item(v-else icon='el-icon-circle-close' command='Block Group' divided) {{ $t('dialog.group.actions.block') }}
|
||||
el-tabs(ref='groupDialogTabs' @tab-click='groupDialogTabClick')
|
||||
el-tab-pane(:label='$t("dialog.group.info.header")')
|
||||
.group-banner-image-info
|
||||
el-popover(placement='right' width='500px' trigger='click')
|
||||
img.x-link(
|
||||
slot='reference'
|
||||
v-lazy='groupDialog.ref.bannerUrl'
|
||||
style='flex: none; width: 100%; aspect-ratio: 6/1; object-fit: cover; border-radius: 4px')
|
||||
img.x-link(
|
||||
v-lazy='groupDialog.ref.bannerUrl'
|
||||
style='width: 854px; height: 480px'
|
||||
@click='showFullscreenImageDialog(groupDialog.ref.bannerUrl)')
|
||||
.x-friend-list(style='max-height: none')
|
||||
span(
|
||||
v-if='groupDialog.instances.length'
|
||||
style='font-size: 12px; font-weight: bold; margin: 5px') {{ $t('dialog.group.info.instances') }}
|
||||
div(v-for='room in groupDialog.instances' :key='room.tag' style='width: 100%')
|
||||
div(style='margin: 5px 0')
|
||||
location(:location='room.tag' style='display: inline-block')
|
||||
el-tooltip(placement='top' content='Invite yourself' :disabled='hideTooltips')
|
||||
invite-yourself(:location='room.tag' style='margin-left: 5px')
|
||||
el-tooltip(placement='top' content='Refresh player count' :disabled='hideTooltips')
|
||||
el-button(
|
||||
@click='refreshInstancePlayerCount(room.tag)'
|
||||
size='mini'
|
||||
icon='el-icon-refresh'
|
||||
style='margin-left: 5px'
|
||||
circle)
|
||||
last-join(:location='room.tag' :currentlocation='lastLocation.location')
|
||||
instance-info(
|
||||
:location='room.tag'
|
||||
:instance='room.ref'
|
||||
:friendcount='room.friendCount'
|
||||
:updateelement='updateInstanceInfo')
|
||||
.x-friend-list(
|
||||
style='margin: 10px 0; padding: 0; max-height: unset'
|
||||
v-if='room.users.length')
|
||||
.x-friend-item.x-friend-item-border(
|
||||
v-for='user in room.users'
|
||||
:key='user.id'
|
||||
@click='showUserDialog(user.id)')
|
||||
.avatar(:class='userStatusClass(user)')
|
||||
img(v-lazy='userImage(user)')
|
||||
.detail
|
||||
span.name(v-text='user.displayName' :style='{ color: user.$userColour }')
|
||||
span.extra(v-if='user.location === "traveling"')
|
||||
i.el-icon-loading(style='margin-right: 5px')
|
||||
timer(:epoch='user.$travelingToTime')
|
||||
span.extra(v-else)
|
||||
timer(:epoch='user.$location_at')
|
||||
.x-friend-item(style='width: 100%; cursor: default')
|
||||
.detail
|
||||
span.name {{ $t('dialog.group.info.announcement') }}
|
||||
span(style='display: block' v-text='groupDialog.announcement.title')
|
||||
div(
|
||||
v-if='groupDialog.announcement.imageUrl'
|
||||
style='display: inline-block; margin-right: 5px')
|
||||
el-popover(placement='right' width='500px' trigger='click')
|
||||
img.x-link(
|
||||
slot='reference'
|
||||
v-lazy='groupDialog.announcement.imageUrl'
|
||||
style='flex: none; width: 60px; height: 60px; border-radius: 4px; object-fit: cover')
|
||||
img.x-link(
|
||||
v-lazy='groupDialog.announcement.imageUrl'
|
||||
style='height: 500px'
|
||||
@click='showFullscreenImageDialog(groupDialog.announcement.imageUrl)')
|
||||
pre.extra(
|
||||
style='display: inline-block; vertical-align: top; font-family: inherit; font-size: 12px; white-space: pre-wrap; margin: 0') {{ groupDialog.announcement.text || '-' }}
|
||||
br
|
||||
.extra(v-if='groupDialog.announcement.id' style='float: right; margin-left: 5px')
|
||||
el-tooltip(v-if='groupDialog.announcement.roleIds.length' placement='top')
|
||||
template(#content)
|
||||
span {{ $t('dialog.group.posts.visibility') }}
|
||||
br
|
||||
template(v-for='roleId in groupDialog.announcement.roleIds')
|
||||
span(
|
||||
v-for='(role, rIndex) in groupDialog.ref.roles'
|
||||
:key='rIndex'
|
||||
v-if='role.id === roleId'
|
||||
v-text='role.name')
|
||||
span(
|
||||
v-if='groupDialog.announcement.roleIds.indexOf(roleId) < groupDialog.announcement.roleIds.length - 1') ,
|
||||
i.el-icon-view(style='margin-right: 5px')
|
||||
display-name(:userid='groupDialog.announcement.authorId' style='margin-right: 5px')
|
||||
span(v-if='groupDialog.announcement.editorId' style='margin-right: 5px') ({{ $t('dialog.group.posts.edited_by') }} #[display-name(:userid='groupDialog.announcement.editorId')])
|
||||
el-tooltip(placement='bottom')
|
||||
template(#content)
|
||||
span {{ $t('dialog.group.posts.created_at') }} {{ groupDialog.announcement.createdAt | formatDate('long') }}
|
||||
template(
|
||||
v-if='groupDialog.announcement.updatedAt !== groupDialog.announcement.createdAt')
|
||||
br
|
||||
span {{ $t('dialog.group.posts.edited_at') }} {{ groupDialog.announcement.updatedAt | formatDate('long') }}
|
||||
timer(:epoch='Date.parse(groupDialog.announcement.updatedAt)')
|
||||
template(v-if='hasGroupPermission(groupDialog.ref, "group-announcement-manage")')
|
||||
el-tooltip(
|
||||
placement='top'
|
||||
:content='$t("dialog.group.posts.edit_tooltip")'
|
||||
:disabled='hideTooltips')
|
||||
el-button(
|
||||
type='text'
|
||||
icon='el-icon-edit'
|
||||
size='mini'
|
||||
style='margin-left: 5px'
|
||||
@click='showGroupPostEditDialog(groupDialog.id, groupDialog.announcement)')
|
||||
el-tooltip(
|
||||
placement='top'
|
||||
:content='$t("dialog.group.posts.delete_tooltip")'
|
||||
:disabled='hideTooltips')
|
||||
el-button(
|
||||
type='text'
|
||||
icon='el-icon-delete'
|
||||
size='mini'
|
||||
style='margin-left: 5px'
|
||||
@click='confirmDeleteGroupPost(groupDialog.announcement)')
|
||||
.x-friend-item(style='width: 100%; cursor: default')
|
||||
.detail
|
||||
span.name {{ $t('dialog.group.info.rules') }}
|
||||
pre.extra(
|
||||
style='font-family: inherit; font-size: 12px; white-space: pre-wrap; margin: 0 0.5em 0 0') {{ groupDialog.ref.rules || '-' }}
|
||||
.x-friend-item(style='cursor: default')
|
||||
.detail
|
||||
span.name {{ $t('dialog.group.info.members') }}
|
||||
.extra {{ groupDialog.ref.memberCount }} ({{ groupDialog.ref.onlineMemberCount }})
|
||||
.x-friend-item(style='cursor: default')
|
||||
.detail
|
||||
span.name {{ $t('dialog.group.info.created_at') }}
|
||||
span.extra {{ groupDialog.ref.createdAt | formatDate('long') }}
|
||||
.x-friend-item(style='cursor: default')
|
||||
.detail
|
||||
span.name {{ $t('dialog.group.info.links') }}
|
||||
div(
|
||||
v-if='groupDialog.ref.links && groupDialog.ref.links.length > 0'
|
||||
style='margin-top: 5px')
|
||||
el-tooltip(v-if='link' v-for='(link, index) in groupDialog.ref.links' :key='index')
|
||||
template(#content)
|
||||
span(v-text='link')
|
||||
img(
|
||||
:src='getFaviconUrl(link)'
|
||||
style='width: 16px; height: 16px; vertical-align: middle; margin-right: 5px; cursor: pointer'
|
||||
@click.stop='openExternalLink(link)')
|
||||
.extra(v-else) -
|
||||
.x-friend-item(style='width: 350px; cursor: default')
|
||||
.detail
|
||||
span.name {{ $t('dialog.group.info.url') }}
|
||||
span.extra {{ groupDialog.ref.$url }}
|
||||
el-tooltip(
|
||||
placement='top'
|
||||
:content='$t("dialog.group.info.url_tooltip")'
|
||||
:disabled='hideTooltips')
|
||||
el-button(
|
||||
type='default'
|
||||
@click='copyGroupUrl(groupDialog.ref.$url)'
|
||||
size='mini'
|
||||
icon='el-icon-s-order'
|
||||
circle
|
||||
style='margin-left: 5px')
|
||||
.x-friend-item(style='width: 350px; cursor: default')
|
||||
.detail
|
||||
span.name {{ $t('dialog.group.info.id') }}
|
||||
span.extra {{ groupDialog.id }}
|
||||
el-tooltip(
|
||||
placement='top'
|
||||
:content='$t("dialog.group.info.id_tooltip")'
|
||||
:disabled='hideTooltips')
|
||||
el-button(
|
||||
type='default'
|
||||
@click='copyGroupId(groupDialog.id)'
|
||||
size='mini'
|
||||
icon='el-icon-s-order'
|
||||
circle
|
||||
style='margin-left: 5px')
|
||||
div(
|
||||
v-if='groupDialog.ref.membershipStatus === "member"'
|
||||
style='width: 100%; margin-top: 10px; border-top: 1px solid #e4e7ed14')
|
||||
div(style='width: 100%; display: flex; margin-top: 10px')
|
||||
.x-friend-item(style='cursor: default')
|
||||
.detail
|
||||
span.name {{ $t('dialog.group.info.joined_at') }}
|
||||
span.extra {{ groupDialog.ref.myMember.joinedAt | formatDate('long') }}
|
||||
.x-friend-item(style='cursor: default')
|
||||
.detail
|
||||
span.name {{ $t('dialog.group.info.roles') }}
|
||||
span.extra(v-if='groupDialog.memberRoles.length === 0') -
|
||||
span.extra(v-else)
|
||||
template(v-for='(role, rIndex) in groupDialog.memberRoles')
|
||||
el-tooltip(:key='rIndex' placement='top')
|
||||
template(#content)
|
||||
span {{ $t('dialog.group.info.role') }} {{ role.name }}
|
||||
br
|
||||
span {{ $t('dialog.group.info.role_description') }} {{ role.description }}
|
||||
br
|
||||
span(v-if='role.updatedAt') {{ $t('dialog.group.info.role_updated_at') }} {{ role.updatedAt | formatDate('long') }}
|
||||
span(v-else) {{ $t('dialog.group.info.role_created_at') }} {{ role.createdAt | formatDate('long') }}
|
||||
br
|
||||
span {{ $t('dialog.group.info.role_permissions') }}
|
||||
br
|
||||
template(v-for='(permission, pIndex) in role.permissions')
|
||||
span(:key='pIndex') {{ permission }}
|
||||
br
|
||||
span {{ role.name }}{{ rIndex < groupDialog.memberRoles.length - 1 ? ', ' : '' }}
|
||||
el-tab-pane(:label='$t("dialog.group.posts.header")' lazy)
|
||||
template(v-if='groupDialog.visible')
|
||||
span(style='margin-right: 10px') {{ $t('dialog.group.posts.posts_count') }} {{ groupDialog.posts.length }}
|
||||
el-input(
|
||||
v-model='groupDialog.postsSearch'
|
||||
@input='updateGroupPostSearch'
|
||||
clearable
|
||||
size='mini'
|
||||
:placeholder='$t("dialog.group.posts.search_placeholder")'
|
||||
style='width: 89%; margin-bottom: 10px')
|
||||
.x-friend-list
|
||||
.x-friend-item(
|
||||
v-for='post in groupDialog.postsFiltered'
|
||||
:key='post.id'
|
||||
style='width: 100%; cursor: default')
|
||||
.detail
|
||||
span(style='display: block' v-text='post.title')
|
||||
div(v-if='post.imageUrl' style='display: inline-block; margin-right: 5px')
|
||||
el-popover(placement='right' width='500px' trigger='click')
|
||||
img.x-link(
|
||||
slot='reference'
|
||||
v-lazy='post.imageUrl'
|
||||
style='flex: none; width: 60px; height: 60px; border-radius: 4px; object-fit: cover')
|
||||
img.x-link(
|
||||
v-lazy='post.imageUrl'
|
||||
style='height: 500px'
|
||||
@click='showFullscreenImageDialog(post.imageUrl)')
|
||||
pre.extra(
|
||||
style='display: inline-block; vertical-align: top; font-family: inherit; font-size: 12px; white-space: pre-wrap; margin: 0') {{ post.text || '-' }}
|
||||
br
|
||||
.extra(v-if='post.authorId' style='float: right; margin-left: 5px')
|
||||
el-tooltip(v-if='post.roleIds.length' placement='top')
|
||||
template(#content)
|
||||
span {{ $t('dialog.group.posts.visibility') }}
|
||||
br
|
||||
template(v-for='roleId in post.roleIds')
|
||||
span(
|
||||
v-for='(role, rIndex) in groupDialog.ref.roles'
|
||||
:key='rIndex'
|
||||
v-if='role.id === roleId'
|
||||
v-text='role.name')
|
||||
span(v-if='post.roleIds.indexOf(roleId) < post.roleIds.length - 1') ,
|
||||
i.el-icon-view(style='margin-right: 5px')
|
||||
display-name(:userid='post.authorId' style='margin-right: 5px')
|
||||
span(v-if='post.editorId' style='margin-right: 5px') ({{ $t('dialog.group.posts.edited_by') }} #[display-name(:userid='post.editorId')])
|
||||
el-tooltip(placement='bottom')
|
||||
template(#content)
|
||||
span {{ $t('dialog.group.posts.created_at') }} {{ post.createdAt | formatDate('long') }}
|
||||
template(v-if='post.updatedAt !== post.createdAt')
|
||||
br
|
||||
span {{ $t('dialog.group.posts.edited_at') }} {{ post.updatedAt | formatDate('long') }}
|
||||
timer(:epoch='Date.parse(post.updatedAt)')
|
||||
template(
|
||||
v-if='hasGroupPermission(groupDialog.ref, "group-announcement-manage")')
|
||||
el-tooltip(
|
||||
placement='top'
|
||||
:content='$t("dialog.group.posts.edit_tooltip")'
|
||||
:disabled='hideTooltips')
|
||||
el-button(
|
||||
type='text'
|
||||
icon='el-icon-edit'
|
||||
size='mini'
|
||||
style='margin-left: 5px'
|
||||
@click='showGroupPostEditDialog(groupDialog.id, post)')
|
||||
el-tooltip(
|
||||
placement='top'
|
||||
:content='$t("dialog.group.posts.delete_tooltip")'
|
||||
:disabled='hideTooltips')
|
||||
el-button(
|
||||
type='text'
|
||||
icon='el-icon-delete'
|
||||
size='mini'
|
||||
style='margin-left: 5px'
|
||||
@click='confirmDeleteGroupPost(post)')
|
||||
el-tab-pane(:label='$t("dialog.group.members.header")' lazy)
|
||||
template(v-if='groupDialog.visible')
|
||||
span(
|
||||
v-if='hasGroupPermission(groupDialog.ref, "group-members-viewall")'
|
||||
style='font-weight: bold; font-size: 16px') {{ $t('dialog.group.members.all_members') }}
|
||||
span(v-else style='font-weight: bold; font-size: 16px') {{ $t('dialog.group.members.friends_only') }}
|
||||
div(style='margin-top: 10px')
|
||||
el-button(
|
||||
type='default'
|
||||
@click='loadAllGroupMembers'
|
||||
size='mini'
|
||||
icon='el-icon-refresh'
|
||||
:loading='isGroupMembersLoading'
|
||||
circle)
|
||||
el-button(
|
||||
type='default'
|
||||
@click='downloadAndSaveJson(`${groupDialog.id}_members`, groupDialog.members)'
|
||||
size='mini'
|
||||
icon='el-icon-download'
|
||||
circle
|
||||
style='margin-left: 5px')
|
||||
span(
|
||||
v-if='groupDialog.memberSearch.length'
|
||||
style='font-size: 14px; margin-left: 5px; margin-right: 5px') {{ groupDialog.memberSearchResults.length }}/{{ groupDialog.ref.memberCount }}
|
||||
span(v-else style='font-size: 14px; margin-left: 5px; margin-right: 5px') {{ groupDialog.members.length }}/{{ groupDialog.ref.memberCount }}
|
||||
div(
|
||||
v-if='hasGroupPermission(groupDialog.ref, "group-members-manage")'
|
||||
style='float: right')
|
||||
span(style='margin-right: 5px') {{ $t('dialog.group.members.sort_by') }}
|
||||
el-dropdown(
|
||||
@click.native.stop
|
||||
trigger='click'
|
||||
size='small'
|
||||
style='margin-right: 5px'
|
||||
:disabled='isGroupMembersLoading || groupDialog.memberSearch.length')
|
||||
el-button(size='mini')
|
||||
span {{ groupDialog.memberSortOrder.name }} #[i.el-icon-arrow-down.el-icon--right]
|
||||
el-dropdown-menu(#default='dropdown')
|
||||
el-dropdown-item(
|
||||
v-for='item in groupDialogSortingOptions'
|
||||
:key='item.name'
|
||||
v-text='item.name'
|
||||
@click.native='setGroupMemberSortOrder(item)')
|
||||
span(style='margin-right: 5px') {{ $t('dialog.group.members.filter') }}
|
||||
el-dropdown(
|
||||
@click.native.stop
|
||||
trigger='click'
|
||||
size='small'
|
||||
style='margin-right: 5px'
|
||||
:disabled='isGroupMembersLoading || groupDialog.memberSearch.length')
|
||||
el-button(size='mini')
|
||||
span {{ groupDialog.memberFilter.name }} #[i.el-icon-arrow-down.el-icon--right]
|
||||
el-dropdown-menu(#default='dropdown')
|
||||
el-dropdown-item(
|
||||
v-for='item in groupDialogFilterOptions'
|
||||
:key='item.name'
|
||||
v-text='item.name'
|
||||
@click.native='setGroupMemberFilter(item)')
|
||||
el-dropdown-item(
|
||||
v-for='item in groupDialog.ref.roles'
|
||||
:key='item.name'
|
||||
v-if='!item.defaultRole'
|
||||
v-text='item.name'
|
||||
@click.native='setGroupMemberFilter(item)')
|
||||
el-input(
|
||||
v-model='groupDialog.memberSearch'
|
||||
@input='groupMembersSearch'
|
||||
clearable
|
||||
size='mini'
|
||||
:placeholder='$t("dialog.group.members.search")'
|
||||
style='margin-top: 10px; margin-bottom: 10px')
|
||||
.x-friend-list(
|
||||
v-if='groupDialog.memberSearch.length'
|
||||
v-loading='isGroupMembersLoading'
|
||||
style='margin-top: 10px; overflow: auto; max-height: 250px; min-width: 130px')
|
||||
.x-friend-item.x-friend-item-border(
|
||||
v-for='user in groupDialog.memberSearchResults'
|
||||
:key='user.id'
|
||||
@click='showUserDialog(user.userId)')
|
||||
.avatar
|
||||
img(v-lazy='userImage(user.user)')
|
||||
.detail
|
||||
span.name(v-text='user.user.displayName' :style='{ color: user.user.$userColour }')
|
||||
span.extra
|
||||
template(v-if='hasGroupPermission(groupDialog.ref, "group-members-manage")')
|
||||
el-tooltip(
|
||||
v-if='user.isRepresenting'
|
||||
placement='top'
|
||||
:content='$t("dialog.group.members.representing")')
|
||||
i.el-icon-collection-tag(style='margin-right: 5px')
|
||||
el-tooltip(v-if='user.visibility !== "visible"' placement='top')
|
||||
template(#content)
|
||||
span {{ $t('dialog.group.members.visibility') }} {{ user.visibility }}
|
||||
i.el-icon-view(style='margin-right: 5px')
|
||||
el-tooltip(
|
||||
v-if='!user.isSubscribedToAnnouncements'
|
||||
placement='top'
|
||||
:content='$t("dialog.group.members.unsubscribed_announcements")')
|
||||
i.el-icon-chat-line-square(style='margin-right: 5px')
|
||||
el-tooltip(v-if='user.managerNotes' placement='top')
|
||||
template(#content)
|
||||
span {{ $t('dialog.group.members.manager_notes') }}
|
||||
br
|
||||
span {{ user.managerNotes }}
|
||||
i.el-icon-edit-outline(style='margin-right: 5px')
|
||||
template(v-for='roleId in user.roleIds')
|
||||
span(
|
||||
v-for='(role, rIndex) in groupDialog.ref.roles'
|
||||
:key='rIndex'
|
||||
v-if='role.id === roleId'
|
||||
v-text='role.name')
|
||||
span(v-if='user.roleIds.indexOf(roleId) < user.roleIds.length - 1') ,
|
||||
ul.infinite-list.x-friend-list(
|
||||
v-else-if='groupDialog.members.length > 0'
|
||||
v-infinite-scroll='loadMoreGroupMembers'
|
||||
style='margin-top: 10px; overflow: auto; max-height: 250px; min-width: 130px')
|
||||
li.infinite-list-item.x-friend-item.x-friend-item-border(
|
||||
v-for='user in groupDialog.members'
|
||||
:key='user.id'
|
||||
@click='showUserDialog(user.userId)')
|
||||
.avatar
|
||||
img(v-lazy='userImage(user.user)')
|
||||
.detail
|
||||
span.name(v-text='user.user.displayName' :style='{ color: user.user.$userColour }')
|
||||
span.extra
|
||||
template(v-if='hasGroupPermission(groupDialog.ref, "group-members-manage")')
|
||||
el-tooltip(
|
||||
v-if='user.isRepresenting'
|
||||
placement='top'
|
||||
:content='$t("dialog.group.members.representing")')
|
||||
i.el-icon-collection-tag(style='margin-right: 5px')
|
||||
el-tooltip(v-if='user.visibility !== "visible"' placement='top')
|
||||
template(#content)
|
||||
span {{ $t('dialog.group.members.visibility') }} {{ user.visibility }}
|
||||
i.el-icon-view(style='margin-right: 5px')
|
||||
el-tooltip(
|
||||
v-if='!user.isSubscribedToAnnouncements'
|
||||
placement='top'
|
||||
:content='$t("dialog.group.members.unsubscribed_announcements")')
|
||||
i.el-icon-chat-line-square(style='margin-right: 5px')
|
||||
el-tooltip(v-if='user.managerNotes' placement='top')
|
||||
template(#content)
|
||||
span {{ $t('dialog.group.members.manager_notes') }}
|
||||
br
|
||||
span {{ user.managerNotes }}
|
||||
i.el-icon-edit-outline(style='margin-right: 5px')
|
||||
template(v-for='roleId in user.roleIds')
|
||||
span(
|
||||
v-for='(role, rIndex) in groupDialog.ref.roles'
|
||||
:key='rIndex'
|
||||
v-if='role.id === roleId'
|
||||
v-text='role.name')
|
||||
span(v-if='user.roleIds.indexOf(roleId) < user.roleIds.length - 1') ,
|
||||
.x-friend-item(
|
||||
v-if='!isGroupMembersDone'
|
||||
v-loading='isGroupMembersLoading'
|
||||
style='width: 100%; height: 45px; text-align: center'
|
||||
@click='loadMoreGroupMembers')
|
||||
.detail(v-if='!isGroupMembersLoading')
|
||||
span.name {{ $t('dialog.group.members.load_more') }}
|
||||
el-tab-pane(:label='$t("dialog.group.gallery.header")' lazy)
|
||||
el-button(
|
||||
type='default'
|
||||
size='mini'
|
||||
icon='el-icon-refresh'
|
||||
@click='getGroupGalleries'
|
||||
:loading='isGroupGalleryLoading'
|
||||
circle)
|
||||
el-tabs(
|
||||
type='card'
|
||||
v-loading='isGroupGalleryLoading'
|
||||
ref='groupDialogGallery'
|
||||
style='margin-top: 10px')
|
||||
template(v-for='(gallery, index) in groupDialog.ref.galleries')
|
||||
el-tab-pane
|
||||
span(slot='label')
|
||||
span(v-text='gallery.name' style='font-weight: bold; font-size: 16px')
|
||||
i.x-status-icon(style='margin-left: 5px' :class='groupGalleryStatus(gallery)')
|
||||
span(style='color: #909399; font-size: 12px; margin-left: 5px') {{ groupDialog.galleries[gallery.id] ? groupDialog.galleries[gallery.id].length : 0 }}
|
||||
span(v-text='gallery.description' style='color: #c7c7c7; padding: 10px')
|
||||
el-carousel(:interval='0' height='600px' style='margin-top: 10px')
|
||||
el-carousel-item(
|
||||
v-for='image in groupDialog.galleries[gallery.id]'
|
||||
:key='image.id')
|
||||
el-popover(placement='top' width='700px' trigger='click')
|
||||
img.x-link(
|
||||
slot='reference'
|
||||
v-lazy='image.imageUrl'
|
||||
style='width: 100%; height: 100%; object-fit: contain')
|
||||
img.x-link(
|
||||
v-lazy='image.imageUrl'
|
||||
style='height: 700px'
|
||||
@click='showFullscreenImageDialog(image.imageUrl)')
|
||||
el-tab-pane(:label='$t("dialog.group.json.header")' lazy)
|
||||
el-button(
|
||||
type='default'
|
||||
@click='refreshGroupDialogTreeData()'
|
||||
size='mini'
|
||||
icon='el-icon-refresh'
|
||||
circle)
|
||||
el-button(
|
||||
type='default'
|
||||
@click='downloadAndSaveJson(groupDialog.id, groupDialog.ref)'
|
||||
size='mini'
|
||||
icon='el-icon-download'
|
||||
circle
|
||||
style='margin-left: 5px')
|
||||
el-tree(:data='groupDialog.treeData' style='margin-top: 5px; font-size: 12px')
|
||||
template(#default='scope')
|
||||
span
|
||||
span(v-text='scope.data.key' style='font-weight: bold; margin-right: 5px')
|
||||
span(v-if='!scope.data.children' v-text='scope.data.value')
|
||||
@@ -1,743 +0,0 @@
|
||||
mixin groups
|
||||
//- dialog: invite group
|
||||
el-dialog.x-dialog(
|
||||
:before-close='beforeDialogClose'
|
||||
@mousedown.native='dialogMouseDown'
|
||||
@mouseup.native='dialogMouseUp'
|
||||
ref='inviteGroupDialog'
|
||||
:visible.sync='inviteGroupDialog.visible'
|
||||
:title='$t("dialog.invite_to_group.header")'
|
||||
width='450px')
|
||||
div(v-if='inviteGroupDialog.visible' v-loading='inviteGroupDialog.loading')
|
||||
span {{ $t('dialog.invite_to_group.description') }}
|
||||
br
|
||||
el-select(
|
||||
v-model='inviteGroupDialog.groupId'
|
||||
clearable
|
||||
:placeholder='$t("dialog.invite_to_group.choose_group_placeholder")'
|
||||
filterable
|
||||
:disabled='inviteGroupDialog.loading'
|
||||
@change='isAllowedToInviteToGroup'
|
||||
style='margin-top: 15px')
|
||||
el-option-group(
|
||||
v-if='API.currentUserGroups.size'
|
||||
:label='$t("dialog.invite_to_group.groups")'
|
||||
style='width: 410px')
|
||||
el-option.x-friend-item(
|
||||
v-for='group in API.currentUserGroups.values()'
|
||||
:key='group.id'
|
||||
:label='group.name'
|
||||
:value='group.id'
|
||||
style='height: auto')
|
||||
.avatar
|
||||
img(v-lazy='group.iconUrl')
|
||||
.detail
|
||||
span.name(v-text='group.name')
|
||||
el-select(
|
||||
v-model='inviteGroupDialog.userIds'
|
||||
multiple
|
||||
clearable
|
||||
:placeholder='$t("dialog.invite_to_group.choose_friends_placeholder")'
|
||||
filterable
|
||||
:disabled='inviteGroupDialog.loading'
|
||||
style='width: 100%; margin-top: 15px')
|
||||
el-option-group(v-if='inviteGroupDialog.userId' :label='$t("dialog.invite_to_group.selected_users")')
|
||||
el-option.x-friend-item(
|
||||
:key='inviteGroupDialog.userObject.id'
|
||||
:label='inviteGroupDialog.userObject.displayName'
|
||||
:value='inviteGroupDialog.userObject.id'
|
||||
style='height: auto')
|
||||
template(v-if='inviteGroupDialog.userObject.id')
|
||||
.avatar(:class='userStatusClass(inviteGroupDialog.userObject)')
|
||||
img(v-lazy='userImage(inviteGroupDialog.userObject)')
|
||||
.detail
|
||||
span.name(
|
||||
v-text='inviteGroupDialog.userObject.displayName'
|
||||
:style='{ color: inviteGroupDialog.userObject.$userColour }')
|
||||
span(v-else v-text='inviteGroupDialog.userId')
|
||||
el-option-group(v-if='vipFriends.length' :label='$t("side_panel.favorite")')
|
||||
el-option.x-friend-item(
|
||||
v-for='friend in vipFriends'
|
||||
:key='friend.id'
|
||||
:label='friend.name'
|
||||
:value='friend.id'
|
||||
style='height: auto')
|
||||
template(v-if='friend.ref')
|
||||
.avatar(:class='userStatusClass(friend.ref)')
|
||||
img(v-lazy='userImage(friend.ref)')
|
||||
.detail
|
||||
span.name(v-text='friend.ref.displayName' :style='{ color: friend.ref.$userColour }')
|
||||
span(v-else v-text='friend.id')
|
||||
el-option-group(v-if='onlineFriends.length' :label='$t("side_panel.online")')
|
||||
el-option.x-friend-item(
|
||||
v-for='friend in onlineFriends'
|
||||
:key='friend.id'
|
||||
:label='friend.name'
|
||||
:value='friend.id'
|
||||
style='height: auto')
|
||||
template(v-if='friend.ref')
|
||||
.avatar(:class='userStatusClass(friend.ref)')
|
||||
img(v-lazy='userImage(friend.ref)')
|
||||
.detail
|
||||
span.name(v-text='friend.ref.displayName' :style='{ color: friend.ref.$userColour }')
|
||||
span(v-else v-text='friend.id')
|
||||
el-option-group(v-if='activeFriends.length' :label='$t("side_panel.active")')
|
||||
el-option.x-friend-item(
|
||||
v-for='friend in activeFriends'
|
||||
:key='friend.id'
|
||||
:label='friend.name'
|
||||
:value='friend.id'
|
||||
style='height: auto')
|
||||
template(v-if='friend.ref')
|
||||
.avatar
|
||||
img(v-lazy='userImage(friend.ref)')
|
||||
.detail
|
||||
span.name(v-text='friend.ref.displayName' :style='{ color: friend.ref.$userColour }')
|
||||
span(v-else v-text='friend.id')
|
||||
el-option-group(v-if='offlineFriends.length' :label='$t("side_panel.offline")')
|
||||
el-option.x-friend-item(
|
||||
v-for='friend in offlineFriends'
|
||||
:key='friend.id'
|
||||
:label='friend.name'
|
||||
:value='friend.id'
|
||||
style='height: auto')
|
||||
template(v-if='friend.ref')
|
||||
.avatar
|
||||
img(v-lazy='userImage(friend.ref)')
|
||||
.detail
|
||||
span.name(v-text='friend.ref.displayName' :style='{ color: friend.ref.$userColour }')
|
||||
span(v-else v-text='friend.id')
|
||||
template(#footer)
|
||||
el-button(
|
||||
type='primary'
|
||||
size='small'
|
||||
:disabled='inviteGroupDialog.loading || !inviteGroupDialog.userIds.length'
|
||||
@click='sendGroupInvite()') Invite
|
||||
|
||||
//- dialog: group moderation
|
||||
el-dialog.x-dialog(
|
||||
:before-close='beforeDialogClose'
|
||||
@mousedown.native='dialogMouseDown'
|
||||
@mouseup.native='dialogMouseUp'
|
||||
ref='groupMemberModeration'
|
||||
:visible.sync='groupMemberModeration.visible'
|
||||
:title='$t("dialog.group_member_moderation.header")'
|
||||
width='90vw')
|
||||
div(v-if='groupMemberModeration.visible')
|
||||
h3(v-text='groupMemberModeration.groupRef.name')
|
||||
el-tabs(type='card' style='height: 100%')
|
||||
el-tab-pane(:label='$t("dialog.group_member_moderation.members")')
|
||||
div(style='margin-top: 10px')
|
||||
el-button(
|
||||
type='default'
|
||||
@click='loadAllGroupMembers'
|
||||
size='mini'
|
||||
icon='el-icon-refresh'
|
||||
:loading='isGroupMembersLoading'
|
||||
circle)
|
||||
span(style='font-size: 14px; margin-left: 5px; margin-right: 5px') {{ groupMemberModerationTable.data.length }}/{{ groupMemberModeration.groupRef.memberCount }}
|
||||
div(style='float: right; margin-top: 5px')
|
||||
span(style='margin-right: 5px') {{ $t('dialog.group.members.sort_by') }}
|
||||
el-dropdown(
|
||||
@click.native.stop
|
||||
trigger='click'
|
||||
size='small'
|
||||
style='margin-right: 5px'
|
||||
:disabled='isGroupMembersLoading || groupDialog.memberSearch.length || !hasGroupPermission(groupDialog.ref, "group-bans-manage")')
|
||||
el-button(size='mini')
|
||||
span {{ groupDialog.memberSortOrder.name }} #[i.el-icon-arrow-down.el-icon--right]
|
||||
el-dropdown-menu(#default='dropdown')
|
||||
el-dropdown-item(
|
||||
v-for='item in groupDialogSortingOptions'
|
||||
:key='item.name'
|
||||
v-text='item.name'
|
||||
@click.native='setGroupMemberSortOrder(item)')
|
||||
span(style='margin-right: 5px') {{ $t('dialog.group.members.filter') }}
|
||||
el-dropdown(
|
||||
@click.native.stop
|
||||
trigger='click'
|
||||
size='small'
|
||||
style='margin-right: 5px'
|
||||
:disabled='isGroupMembersLoading || groupDialog.memberSearch.length || !hasGroupPermission(groupDialog.ref, "group-bans-manage")')
|
||||
el-button(size='mini')
|
||||
span {{ groupDialog.memberFilter.name }} #[i.el-icon-arrow-down.el-icon--right]
|
||||
el-dropdown-menu(#default='dropdown')
|
||||
el-dropdown-item(
|
||||
v-for='item in groupDialogFilterOptions'
|
||||
:key='item.name'
|
||||
v-text='item.name'
|
||||
@click.native='setGroupMemberFilter(item)')
|
||||
el-dropdown-item(
|
||||
v-for='item in groupDialog.ref.roles'
|
||||
:key='item.name'
|
||||
v-if='!item.defaultRole'
|
||||
v-text='item.name'
|
||||
@click.native='setGroupMemberFilter(item)')
|
||||
el-input(
|
||||
v-model='groupDialog.memberSearch'
|
||||
:disabled='!hasGroupPermission(groupDialog.ref, "group-bans-manage")'
|
||||
@input='groupMembersSearch'
|
||||
clearable
|
||||
size='mini'
|
||||
:placeholder='$t("dialog.group.members.search")'
|
||||
style='margin-top: 10px; margin-bottom: 10px')
|
||||
br
|
||||
el-button(size='small' @click='selectAllGroupMembers') {{ $t('dialog.group_member_moderation.select_all') }}
|
||||
data-tables(v-bind='groupMemberModerationTable' style='margin-top: 10px')
|
||||
el-table-column(width='55' prop='$selected' :key='groupMemberModerationTableForceUpdate')
|
||||
template(#default='scope')
|
||||
el-button(type='text' size='mini' @click.stop)
|
||||
el-checkbox(
|
||||
v-model='scope.row.$selected'
|
||||
@change='groupMemberModerationTableSelectionChange(scope.row)')
|
||||
el-table-column(:label='$t("dialog.group_member_moderation.avatar")' width='70' prop='photo')
|
||||
template(#default='scope')
|
||||
el-popover(placement='right' height='500px' trigger='hover')
|
||||
img.friends-list-avatar(slot='reference' v-lazy='userImage(scope.row.user)')
|
||||
img.friends-list-avatar(
|
||||
v-lazy='userImageFull(scope.row.user)'
|
||||
style='height: 500px; cursor: pointer'
|
||||
@click='showFullscreenImageDialog(userImageFull(scope.row.user))')
|
||||
el-table-column(
|
||||
:label='$t("dialog.group_member_moderation.display_name")'
|
||||
width='160'
|
||||
prop='$displayName'
|
||||
sortable)
|
||||
template(#default='scope')
|
||||
span(style='cursor: pointer' @click='showUserDialog(scope.row.userId)')
|
||||
span(
|
||||
v-if='randomUserColours'
|
||||
v-text='scope.row.user.displayName'
|
||||
:style='{ color: scope.row.user.$userColour }')
|
||||
span(v-else v-text='scope.row.user.displayName')
|
||||
el-table-column(:label='$t("dialog.group_member_moderation.roles")' prop='roleIds' sortable)
|
||||
template(#default='scope')
|
||||
template(v-for='roleId in scope.row.roleIds')
|
||||
span(
|
||||
v-for='(role, rIndex) in groupMemberModeration.groupRef.roles'
|
||||
:key='rIndex'
|
||||
v-if='role.id === roleId'
|
||||
v-text='role.name')
|
||||
span(v-if='scope.row.roleIds.indexOf(roleId) < scope.row.roleIds.length - 1') ,
|
||||
el-table-column(
|
||||
:label='$t("dialog.group_member_moderation.notes")'
|
||||
prop='managerNotes'
|
||||
sortable)
|
||||
template(#default='scope')
|
||||
span(v-text='scope.row.managerNotes' @click.stop)
|
||||
el-table-column(
|
||||
:label='$t("dialog.group_member_moderation.joined_at")'
|
||||
width='170'
|
||||
prop='joinedAt'
|
||||
sortable)
|
||||
template(#default='scope')
|
||||
span {{ scope.row.joinedAt | formatDate('long') }}
|
||||
el-table-column(
|
||||
:label='$t("dialog.group_member_moderation.visibility")'
|
||||
width='120'
|
||||
prop='visibility'
|
||||
sortable)
|
||||
template(#default='scope')
|
||||
span(v-text='scope.row.visibility')
|
||||
el-tab-pane(
|
||||
:label='$t("dialog.group_member_moderation.bans")'
|
||||
:disabled='!hasGroupPermission(groupDialog.ref, "group-bans-manage")')
|
||||
div(style='margin-top: 10px')
|
||||
el-button(
|
||||
type='default'
|
||||
@click='getAllGroupBans(groupMemberModeration.id)'
|
||||
size='mini'
|
||||
icon='el-icon-refresh'
|
||||
:loading='isGroupMembersLoading'
|
||||
circle)
|
||||
span(style='font-size: 14px; margin-left: 5px; margin-right: 5px') {{ groupBansModerationTable.data.length }}
|
||||
br
|
||||
el-input(
|
||||
v-model='groupBansModerationTable.filters[0].value'
|
||||
clearable
|
||||
size='mini'
|
||||
:placeholder='$t("dialog.group.members.search")'
|
||||
style='margin-top: 10px; margin-bottom: 10px')
|
||||
br
|
||||
el-button(size='small' @click='selectAllGroupBans') {{ $t('dialog.group_member_moderation.select_all') }}
|
||||
data-tables(v-bind='groupBansModerationTable' style='margin-top: 10px')
|
||||
el-table-column(width='55' prop='$selected' :key='groupMemberModerationTableForceUpdate')
|
||||
template(#default='scope')
|
||||
el-button(type='text' size='mini' @click.stop)
|
||||
el-checkbox(
|
||||
v-model='scope.row.$selected'
|
||||
@change='groupMemberModerationTableSelectionChange(scope.row)')
|
||||
el-table-column(:label='$t("dialog.group_member_moderation.avatar")' width='70' prop='photo')
|
||||
template(#default='scope')
|
||||
el-popover(placement='right' height='500px' trigger='hover')
|
||||
img.friends-list-avatar(slot='reference' v-lazy='userImage(scope.row.user)')
|
||||
img.friends-list-avatar(
|
||||
v-lazy='userImageFull(scope.row.user)'
|
||||
style='height: 500px; cursor: pointer'
|
||||
@click='showFullscreenImageDialog(userImageFull(scope.row.user))')
|
||||
el-table-column(
|
||||
:label='$t("dialog.group_member_moderation.display_name")'
|
||||
width='160'
|
||||
prop='$displayName'
|
||||
sortable)
|
||||
template(#default='scope')
|
||||
span(style='cursor: pointer' @click='showUserDialog(scope.row.userId)')
|
||||
span(
|
||||
v-if='randomUserColours'
|
||||
v-text='scope.row.user.displayName'
|
||||
:style='{ color: scope.row.user.$userColour }')
|
||||
span(v-else v-text='scope.row.user.displayName')
|
||||
el-table-column(:label='$t("dialog.group_member_moderation.roles")' prop='roleIds' sortable)
|
||||
template(#default='scope')
|
||||
template(v-for='roleId in scope.row.roleIds')
|
||||
span(
|
||||
v-for='(role, rIndex) in groupMemberModeration.groupRef.roles'
|
||||
:key='rIndex'
|
||||
v-if='role.id === roleId'
|
||||
v-text='role.name')
|
||||
span(v-if='scope.row.roleIds.indexOf(roleId) < scope.row.roleIds.length - 1') ,
|
||||
el-table-column(
|
||||
:label='$t("dialog.group_member_moderation.notes")'
|
||||
prop='managerNotes'
|
||||
sortable)
|
||||
template(#default='scope')
|
||||
span(v-text='scope.row.managerNotes' @click.stop)
|
||||
el-table-column(
|
||||
:label='$t("dialog.group_member_moderation.joined_at")'
|
||||
width='170'
|
||||
prop='joinedAt'
|
||||
sortable)
|
||||
template(#default='scope')
|
||||
span {{ scope.row.joinedAt | formatDate('long') }}
|
||||
el-table-column(
|
||||
:label='$t("dialog.group_member_moderation.banned_at")'
|
||||
width='170'
|
||||
prop='joinedAt'
|
||||
sortable)
|
||||
template(#default='scope')
|
||||
span {{ scope.row.bannedAt | formatDate('long') }}
|
||||
el-tab-pane(
|
||||
:label='$t("dialog.group_member_moderation.invites")'
|
||||
:disabled='!hasGroupPermission(groupDialog.ref, "group-invites-manage")')
|
||||
div(style='margin-top: 10px')
|
||||
el-button(
|
||||
type='default'
|
||||
@click='getAllGroupInvitesAndJoinRequests(groupMemberModeration.id)'
|
||||
size='mini'
|
||||
icon='el-icon-refresh'
|
||||
:loading='isGroupMembersLoading'
|
||||
circle)
|
||||
br
|
||||
el-tabs
|
||||
el-tab-pane
|
||||
span(slot='label')
|
||||
span(
|
||||
v-text='$t("dialog.group_member_moderation.sent_invites")'
|
||||
style='font-weight: bold; font-size: 16px')
|
||||
span(style='color: #909399; font-size: 12px; margin-left: 5px') {{ groupInvitesModerationTable.data.length }}
|
||||
el-button(size='small' @click='selectAllGroupInvites') {{ $t('dialog.group_member_moderation.select_all') }}
|
||||
data-tables(v-bind='groupInvitesModerationTable' style='margin-top: 10px')
|
||||
el-table-column(
|
||||
width='55'
|
||||
prop='$selected'
|
||||
:key='groupMemberModerationTableForceUpdate')
|
||||
template(#default='scope')
|
||||
el-button(type='text' size='mini' @click.stop)
|
||||
el-checkbox(
|
||||
v-model='scope.row.$selected'
|
||||
@change='groupMemberModerationTableSelectionChange(scope.row)')
|
||||
el-table-column(
|
||||
:label='$t("dialog.group_member_moderation.avatar")'
|
||||
width='70'
|
||||
prop='photo')
|
||||
template(#default='scope')
|
||||
el-popover(placement='right' height='500px' trigger='hover')
|
||||
img.friends-list-avatar(
|
||||
slot='reference'
|
||||
v-lazy='userImage(scope.row.user)')
|
||||
img.friends-list-avatar(
|
||||
v-lazy='userImageFull(scope.row.user)'
|
||||
style='height: 500px; cursor: pointer'
|
||||
@click='showFullscreenImageDialog(userImageFull(scope.row.user))')
|
||||
el-table-column(
|
||||
:label='$t("dialog.group_member_moderation.display_name")'
|
||||
width='160'
|
||||
prop='$displayName'
|
||||
sortable)
|
||||
template(#default='scope')
|
||||
span(style='cursor: pointer' @click='showUserDialog(scope.row.userId)')
|
||||
span(
|
||||
v-if='randomUserColours'
|
||||
v-text='scope.row.user.displayName'
|
||||
:style='{ color: scope.row.user.$userColour }')
|
||||
span(v-else v-text='scope.row.user.displayName')
|
||||
el-table-column(
|
||||
:label='$t("dialog.group_member_moderation.notes")'
|
||||
prop='managerNotes'
|
||||
sortable)
|
||||
template(#default='scope')
|
||||
span(v-text='scope.row.managerNotes' @click.stop)
|
||||
br
|
||||
el-button(
|
||||
@click='groupMembersDeleteSentInvite'
|
||||
:disabled='groupMemberModeration.progressCurrent || !hasGroupPermission(groupDialog.ref, "group-invites-manage")') {{ $t('dialog.group_member_moderation.delete_sent_invite') }}
|
||||
el-tab-pane
|
||||
span(slot='label')
|
||||
span(
|
||||
v-text='$t("dialog.group_member_moderation.join_requests")'
|
||||
style='font-weight: bold; font-size: 16px')
|
||||
span(style='color: #909399; font-size: 12px; margin-left: 5px') {{ groupJoinRequestsModerationTable.data.length }}
|
||||
el-button(size='small' @click='selectAllGroupJoinRequests') {{ $t('dialog.group_member_moderation.select_all') }}
|
||||
data-tables(v-bind='groupJoinRequestsModerationTable' style='margin-top: 10px')
|
||||
el-table-column(
|
||||
width='55'
|
||||
prop='$selected'
|
||||
:key='groupMemberModerationTableForceUpdate')
|
||||
template(#default='scope')
|
||||
el-button(type='text' size='mini' @click.stop)
|
||||
el-checkbox(
|
||||
v-model='scope.row.$selected'
|
||||
@change='groupMemberModerationTableSelectionChange(scope.row)')
|
||||
el-table-column(
|
||||
:label='$t("dialog.group_member_moderation.avatar")'
|
||||
width='70'
|
||||
prop='photo')
|
||||
template(#default='scope')
|
||||
el-popover(placement='right' height='500px' trigger='hover')
|
||||
img.friends-list-avatar(
|
||||
slot='reference'
|
||||
v-lazy='userImage(scope.row.user)')
|
||||
img.friends-list-avatar(
|
||||
v-lazy='userImageFull(scope.row.user)'
|
||||
style='height: 500px; cursor: pointer'
|
||||
@click='showFullscreenImageDialog(userImageFull(scope.row.user))')
|
||||
el-table-column(
|
||||
:label='$t("dialog.group_member_moderation.display_name")'
|
||||
width='160'
|
||||
prop='$displayName'
|
||||
sortable)
|
||||
template(#default='scope')
|
||||
span(style='cursor: pointer' @click='showUserDialog(scope.row.userId)')
|
||||
span(
|
||||
v-if='randomUserColours'
|
||||
v-text='scope.row.user.displayName'
|
||||
:style='{ color: scope.row.user.$userColour }')
|
||||
span(v-else v-text='scope.row.user.displayName')
|
||||
el-table-column(
|
||||
:label='$t("dialog.group_member_moderation.notes")'
|
||||
prop='managerNotes'
|
||||
sortable)
|
||||
template(#default='scope')
|
||||
span(v-text='scope.row.managerNotes' @click.stop)
|
||||
br
|
||||
el-button(
|
||||
@click='groupMembersAcceptInviteRequest'
|
||||
:disabled='groupMemberModeration.progressCurrent || !hasGroupPermission(groupDialog.ref, "group-invites-manage")') {{ $t('dialog.group_member_moderation.accept_join_requests') }}
|
||||
el-button(
|
||||
@click='groupMembersRejectInviteRequest'
|
||||
:disabled='groupMemberModeration.progressCurrent || !hasGroupPermission(groupDialog.ref, "group-invites-manage")') {{ $t('dialog.group_member_moderation.reject_join_requests') }}
|
||||
el-button(
|
||||
@click='groupMembersBlockJoinRequest'
|
||||
:disabled='groupMemberModeration.progressCurrent || !hasGroupPermission(groupDialog.ref, "group-invites-manage")') {{ $t('dialog.group_member_moderation.block_join_requests') }}
|
||||
el-tab-pane
|
||||
span(slot='label')
|
||||
span(
|
||||
v-text='$t("dialog.group_member_moderation.blocked_requests")'
|
||||
style='font-weight: bold; font-size: 16px')
|
||||
span(style='color: #909399; font-size: 12px; margin-left: 5px') {{ groupBlockedModerationTable.data.length }}
|
||||
el-button(size='small' @click='selectAllGroupBlocked') {{ $t('dialog.group_member_moderation.select_all') }}
|
||||
data-tables(v-bind='groupBlockedModerationTable' style='margin-top: 10px')
|
||||
el-table-column(
|
||||
width='55'
|
||||
prop='$selected'
|
||||
:key='groupMemberModerationTableForceUpdate')
|
||||
template(#default='scope')
|
||||
el-button(type='text' size='mini' @click.stop)
|
||||
el-checkbox(
|
||||
v-model='scope.row.$selected'
|
||||
@change='groupMemberModerationTableSelectionChange(scope.row)')
|
||||
el-table-column(
|
||||
:label='$t("dialog.group_member_moderation.avatar")'
|
||||
width='70'
|
||||
prop='photo')
|
||||
template(#default='scope')
|
||||
el-popover(placement='right' height='500px' trigger='hover')
|
||||
img.friends-list-avatar(
|
||||
slot='reference'
|
||||
v-lazy='userImage(scope.row.user)')
|
||||
img.friends-list-avatar(
|
||||
v-lazy='userImageFull(scope.row.user)'
|
||||
style='height: 500px; cursor: pointer'
|
||||
@click='showFullscreenImageDialog(userImageFull(scope.row.user))')
|
||||
el-table-column(
|
||||
:label='$t("dialog.group_member_moderation.display_name")'
|
||||
width='160'
|
||||
prop='$displayName'
|
||||
sortable)
|
||||
template(#default='scope')
|
||||
span(style='cursor: pointer' @click='showUserDialog(scope.row.userId)')
|
||||
span(
|
||||
v-if='randomUserColours'
|
||||
v-text='scope.row.user.displayName'
|
||||
:style='{ color: scope.row.user.$userColour }')
|
||||
span(v-else v-text='scope.row.user.displayName')
|
||||
el-table-column(
|
||||
:label='$t("dialog.group_member_moderation.notes")'
|
||||
prop='managerNotes'
|
||||
sortable)
|
||||
template(#default='scope')
|
||||
span(v-text='scope.row.managerNotes' @click.stop)
|
||||
br
|
||||
el-button(
|
||||
@click='groupMembersDeleteBlockedRequest'
|
||||
:disabled='groupMemberModeration.progressCurrent || !hasGroupPermission(groupDialog.ref, "group-invites-manage")') {{ $t('dialog.group_member_moderation.delete_blocked_requests') }}
|
||||
el-tab-pane(
|
||||
:label='$t("dialog.group_member_moderation.logs")'
|
||||
:disabled='!hasGroupPermission(groupDialog.ref, "group-audit-view")')
|
||||
div(style='margin-top: 10px')
|
||||
el-button(
|
||||
type='default'
|
||||
@click='getAllGroupLogs(groupMemberModeration.id)'
|
||||
size='mini'
|
||||
icon='el-icon-refresh'
|
||||
:loading='isGroupMembersLoading'
|
||||
circle)
|
||||
span(style='font-size: 14px; margin-left: 5px; margin-right: 5px') {{ groupLogsModerationTable.data.length }}
|
||||
br
|
||||
div(style='display: flex; justify-content: space-between; align-items: center')
|
||||
div
|
||||
el-select(
|
||||
v-model='groupMemberModeration.selectedAuditLogTypes'
|
||||
multiple
|
||||
collapse-tags
|
||||
:placeholder='$t("dialog.group_member_moderation.filter_type")')
|
||||
el-option-group(:label='$t("dialog.group_member_moderation.select_type")')
|
||||
el-option.x-friend-item(
|
||||
v-for='type in groupMemberModeration.auditLogTypes'
|
||||
:key='type'
|
||||
:label='getAuditLogTypeName(type)'
|
||||
:value='type')
|
||||
.detail
|
||||
span.name(v-text='getAuditLogTypeName(type)')
|
||||
el-input(
|
||||
v-model='groupLogsModerationTable.filters[0].value'
|
||||
:placeholder='$t("dialog.group_member_moderation.search_placeholder")'
|
||||
style='display: inline-block; width: 150px; margin: 10px')
|
||||
div
|
||||
el-button(@click='showGroupLogsExportDialog') {{ $t('dialog.group_member_moderation.export_logs') }}
|
||||
br
|
||||
data-tables(v-bind='groupLogsModerationTable' style='margin-top: 10px')
|
||||
el-table-column(
|
||||
:label='$t("dialog.group_member_moderation.created_at")'
|
||||
width='170'
|
||||
prop='created_at'
|
||||
sortable)
|
||||
template(#default='scope')
|
||||
span {{ scope.row.created_at | formatDate('long') }}
|
||||
el-table-column(
|
||||
:label='$t("dialog.group_member_moderation.type")'
|
||||
width='190'
|
||||
prop='eventType'
|
||||
sortable)
|
||||
template(#default='scope')
|
||||
span(v-text='scope.row.eventType')
|
||||
el-table-column(
|
||||
:label='$t("dialog.group_member_moderation.display_name")'
|
||||
width='160'
|
||||
prop='actorDisplayName'
|
||||
sortable)
|
||||
template(#default='scope')
|
||||
span(style='cursor: pointer' @click='showUserDialog(scope.row.actorId)')
|
||||
span(v-text='scope.row.actorDisplayName')
|
||||
el-table-column(:label='$t("dialog.group_member_moderation.description")' prop='description')
|
||||
template(#default='scope')
|
||||
span(v-text='scope.row.description')
|
||||
el-table-column(:label='$t("dialog.group_member_moderation.data")' prop='data')
|
||||
template(#default='scope')
|
||||
span(v-if='Object.keys(scope.row.data).length' v-text='JSON.stringify(scope.row.data)')
|
||||
br
|
||||
br
|
||||
span.name {{ $t('dialog.group_member_moderation.user_id') }}
|
||||
br
|
||||
el-input(
|
||||
v-model='groupMemberModeration.selectUserId'
|
||||
size='mini'
|
||||
style='margin-top: 5px; width: 340px'
|
||||
:placeholder='$t("dialog.group_member_moderation.user_id_placeholder")'
|
||||
clearable)
|
||||
el-button(size='small' @click='selectGroupMemberUserId' :disabled='!groupMemberModeration.selectUserId') {{ $t('dialog.group_member_moderation.select_user') }}
|
||||
br
|
||||
br
|
||||
span.name {{ $t('dialog.group_member_moderation.selected_users') }}
|
||||
el-button(
|
||||
type='default'
|
||||
@click='clearSelectedGroupMembers'
|
||||
size='mini'
|
||||
icon='el-icon-delete'
|
||||
circle
|
||||
style='margin-left: 5px')
|
||||
br
|
||||
el-tag(
|
||||
v-for='user in groupMemberModeration.selectedUsersArray'
|
||||
type='info'
|
||||
disable-transitions='true'
|
||||
:key='user.id'
|
||||
style='margin-right: 5px; margin-top: 5px'
|
||||
closable
|
||||
@close='deleteSelectedGroupMember(user)')
|
||||
span {{ user.user?.displayName }} #[i.el-icon-warning(v-if='user.membershipStatus !== "member"' style='margin-left: 5px')]
|
||||
br
|
||||
br
|
||||
span.name {{ $t('dialog.group_member_moderation.notes') }}
|
||||
el-input.extra(
|
||||
v-model='groupMemberModeration.note'
|
||||
type='textarea'
|
||||
:rows='2'
|
||||
:autosize='{ minRows: 1, maxRows: 20 }'
|
||||
:placeholder='$t("dialog.group_member_moderation.note_placeholder")'
|
||||
size='mini'
|
||||
resize='none'
|
||||
style='margin-top: 5px')
|
||||
br
|
||||
br
|
||||
span.name {{ $t('dialog.group_member_moderation.selected_roles') }}
|
||||
br
|
||||
el-select(
|
||||
v-model='groupMemberModeration.selectedRoles'
|
||||
clearable
|
||||
multiple
|
||||
:placeholder='$t("dialog.group_member_moderation.choose_roles_placeholder")'
|
||||
filterable
|
||||
style='margin-top: 5px')
|
||||
el-option-group(:label='$t("dialog.group_member_moderation.roles")')
|
||||
el-option.x-friend-item(
|
||||
v-for='role in groupMemberModeration.groupRef.roles'
|
||||
:key='role.id'
|
||||
:label='role.name'
|
||||
:value='role.id'
|
||||
style='height: auto')
|
||||
.detail
|
||||
span.name(v-text='role.name')
|
||||
br
|
||||
br
|
||||
span.name {{ $t('dialog.group_member_moderation.actions') }}
|
||||
br
|
||||
el-button(
|
||||
@click='groupMembersAddRoles'
|
||||
:disabled='!groupMemberModeration.selectedRoles.length || groupMemberModeration.progressCurrent || !hasGroupPermission(groupDialog.ref, "group-roles-assign")') {{ $t('dialog.group_member_moderation.add_roles') }}
|
||||
el-button(
|
||||
@click='groupMembersRemoveRoles'
|
||||
:disabled='!groupMemberModeration.selectedRoles.length || groupMemberModeration.progressCurrent || !hasGroupPermission(groupDialog.ref, "group-roles-assign")') {{ $t('dialog.group_member_moderation.remove_roles') }}
|
||||
el-button(
|
||||
@click='groupMembersSaveNote'
|
||||
:disabled='groupMemberModeration.progressCurrent || !hasGroupPermission(groupDialog.ref, "group-members-manage")') {{ $t('dialog.group_member_moderation.save_note') }}
|
||||
el-button(
|
||||
@click='groupMembersKick'
|
||||
:disabled='groupMemberModeration.progressCurrent || !hasGroupPermission(groupDialog.ref, "group-members-remove")') {{ $t('dialog.group_member_moderation.kick') }}
|
||||
el-button(
|
||||
@click='groupMembersBan'
|
||||
:disabled='groupMemberModeration.progressCurrent || !hasGroupPermission(groupDialog.ref, "group-bans-manage")') {{ $t('dialog.group_member_moderation.ban') }}
|
||||
el-button(
|
||||
@click='groupMembersUnban'
|
||||
:disabled='groupMemberModeration.progressCurrent || !hasGroupPermission(groupDialog.ref, "group-bans-manage")') {{ $t('dialog.group_member_moderation.unban') }}
|
||||
span(v-if='groupMemberModeration.progressCurrent' style='margin-top: 10px') #[i.el-icon-loading(style='margin-left: 5px; margin-right: 5px')] {{ $t('dialog.group_member_moderation.progress') }} {{ groupMemberModeration.progressCurrent }}/{{ groupMemberModeration.progressTotal }}
|
||||
el-button(
|
||||
v-if='groupMemberModeration.progressCurrent'
|
||||
@click='groupMemberModeration.progressTotal = 0'
|
||||
style='margin-left: 5px') {{ $t('dialog.group_member_moderation.cancel') }}
|
||||
|
||||
//- dialog: group posts
|
||||
el-dialog.x-dialog(
|
||||
:before-close='beforeDialogClose'
|
||||
@mousedown.native='dialogMouseDown'
|
||||
@mouseup.native='dialogMouseUp'
|
||||
ref='groupPostEditDialog'
|
||||
:visible.sync='groupPostEditDialog.visible'
|
||||
:title='$t("dialog.group_post_edit.header")'
|
||||
width='650px')
|
||||
div(v-if='groupPostEditDialog.visible')
|
||||
h3(v-text='groupPostEditDialog.groupRef.name')
|
||||
el-form(:model='groupPostEditDialog' label-width='150px')
|
||||
el-form-item(:label='$t("dialog.group_post_edit.title")')
|
||||
el-input(v-model='groupPostEditDialog.title' size='mini')
|
||||
el-form-item(:label='$t("dialog.group_post_edit.message")')
|
||||
el-input(
|
||||
v-model='groupPostEditDialog.text'
|
||||
type='textarea'
|
||||
:rows='4'
|
||||
:autosize='{ minRows: 4, maxRows: 20 }'
|
||||
style='margin-top: 10px'
|
||||
resize='none')
|
||||
el-form-item
|
||||
el-checkbox(
|
||||
v-if='!groupPostEditDialog.postId'
|
||||
v-model='groupPostEditDialog.sendNotification'
|
||||
size='small') {{ $t('dialog.group_post_edit.send_notification') }}
|
||||
el-form-item(:label='$t("dialog.group_post_edit.post_visibility")')
|
||||
el-radio-group(v-model='groupPostEditDialog.visibility' size='small')
|
||||
el-radio(label='public') {{ $t('dialog.group_post_edit.visibility_public') }}
|
||||
el-radio(label='group') {{ $t('dialog.group_post_edit.visibility_group') }}
|
||||
el-form-item(
|
||||
v-if='groupPostEditDialog.visibility === "group"'
|
||||
:label='$t("dialog.new_instance.roles")')
|
||||
el-select(
|
||||
v-model='groupPostEditDialog.roleIds'
|
||||
multiple
|
||||
clearable
|
||||
:placeholder='$t("dialog.new_instance.role_placeholder")'
|
||||
style='width: 100%')
|
||||
el-option-group(:label='$t("dialog.new_instance.role_placeholder")')
|
||||
el-option.x-friend-item(
|
||||
v-for='role in groupPostEditDialog.groupRef?.roles'
|
||||
:key='role.id'
|
||||
:label='role.name'
|
||||
:value='role.id'
|
||||
style='height: auto; width: 478px')
|
||||
.detail
|
||||
span.name(v-text='role.name')
|
||||
el-form-item(:label='$t("dialog.group_post_edit.image")')
|
||||
template(v-if='gallerySelectDialog.selectedFileId')
|
||||
div(style='display: inline-block; flex: none; margin-right: 5px')
|
||||
el-popover(placement='right' width='500px' trigger='click')
|
||||
img.x-link(
|
||||
slot='reference'
|
||||
v-lazy='gallerySelectDialog.selectedImageUrl'
|
||||
style='flex: none; width: 60px; height: 60px; border-radius: 4px; object-fit: cover')
|
||||
img.x-link(
|
||||
v-lazy='gallerySelectDialog.selectedImageUrl'
|
||||
style='height: 500px'
|
||||
@click='showFullscreenImageDialog(gallerySelectDialog.selectedImageUrl)')
|
||||
el-button(size='mini' @click='clearImageGallerySelect' style='vertical-align: top') {{ $t('dialog.invite_message.clear_selected_image') }}
|
||||
template(v-else)
|
||||
el-button(size='mini' @click='showGallerySelectDialog' style='margin-right: 5px') {{ $t('dialog.invite_message.select_image') }}
|
||||
|
||||
template(#footer)
|
||||
el-button(size='small' @click='groupPostEditDialog.visible = false') {{ $t('dialog.group_post_edit.cancel') }}
|
||||
el-button(v-if='groupPostEditDialog.postId' size='small' @click='editGroupPost') {{ $t('dialog.group_post_edit.edit_post') }}
|
||||
el-button(v-else size='small' @click='createGroupPost') {{ $t('dialog.group_post_edit.create_post') }}
|
||||
|
||||
//- dialog: export logs
|
||||
el-dialog.x-dialog(
|
||||
:before-close='beforeDialogClose'
|
||||
@mousedown.native='dialogMouseDown'
|
||||
@mouseup.native='dialogMouseUp'
|
||||
:visible.sync='isGroupLogsExportDialogVisible'
|
||||
:title='$t("dialog.group_member_moderation.export_logs")'
|
||||
width='650px'
|
||||
ref='groupLogsExportDialogRef')
|
||||
el-checkbox-group(
|
||||
v-model='checkedGroupLogsExportLogsOptions'
|
||||
@change='updateGrouptLogsExporContent()'
|
||||
style='margin-bottom: 10px')
|
||||
template(v-for='option in checkGroupsLogsExportLogsOptions')
|
||||
el-checkbox(:key='option.label' :label='option.label') {{ $t(option.text) }}
|
||||
br
|
||||
el-input(
|
||||
type='textarea'
|
||||
v-model='groupLogsExportContent'
|
||||
size='mini'
|
||||
rows='15'
|
||||
resize='none'
|
||||
readonly
|
||||
style='margin-top: 15px'
|
||||
@click.native='handleCopyGroupLogsExportContent')
|
||||
@@ -106,9 +106,13 @@ mixin notificationsTab
|
||||
:grouphint='scope.row.details.groupName'
|
||||
:link='true')
|
||||
br
|
||||
span(
|
||||
el-tooltip(
|
||||
v-if='scope.row.message && scope.row.message !== `This is a generated invite to ${scope.row.details?.worldName}`'
|
||||
v-text='scope.row.message')
|
||||
placement='top')
|
||||
template(#content)
|
||||
pre.extra(
|
||||
style='display: inline-block; vertical-align: top; font-family: inherit; font-size: 12px; white-space: pre-wrap; margin: 0') {{ scope.row.message || '-' }}
|
||||
div(v-text='scope.row.message')
|
||||
span(
|
||||
v-else-if='scope.row.details && scope.row.details.inviteMessage'
|
||||
v-text='scope.row.details.inviteMessage')
|
||||
|
||||
Reference in New Issue
Block a user