ねこのurl変えた

This commit is contained in:
nullnyat 2022-02-03 09:06:54 +09:00
parent 05c2db1dc0
commit 7c75e6666e
No known key found for this signature in database
GPG Key ID: 5EDC2816C3AE007A
3 changed files with 832 additions and 832 deletions

View File

@ -688,8 +688,8 @@ reloadToApplySetting: "設定はページリロード後に反映されるよ。
needReloadToApply: "反映には再起動が必要だよ。" needReloadToApply: "反映には再起動が必要だよ。"
showTitlebar: "タイトルバーを表示する" showTitlebar: "タイトルバーを表示する"
clearCache: "キャッシュをクリア" clearCache: "キャッシュをクリア"
onlineUsersCount: "{n}人がいる" onlineUsersCount: "{n}匹起きてる"
nUsers: "{n}ユーザー" nUsers: "{n}匹住んでる"
nNotes: "{n}ノート" nNotes: "{n}ノート"
sendErrorReports: "エラーリポートを送信" sendErrorReports: "エラーリポートを送信"
sendErrorReportsDescription: "オンにすると、問題が発生したときにエラーの詳細情報がMisskeyに共有され、ソフトウェアの品質向上に役立てることができるよ。エラー情報には、OSのバージョン、ブラウザの種類、行動履歴にゃどが含まれます。" sendErrorReportsDescription: "オンにすると、問題が発生したときにエラーの詳細情報がMisskeyに共有され、ソフトウェアの品質向上に役立てることができるよ。エラー情報には、OSのバージョン、ブラウザの種類、行動履歴にゃどが含まれます。"

View File

@ -1,239 +1,239 @@
<template> <template>
<div class="lknzcolw"> <div class="lknzcolw">
<div class="users"> <div class="users">
<div class="inputs"> <div class="inputs">
<MkSelect v-model="sort" style="flex: 1;"> <MkSelect v-model="sort" style="flex: 1;">
<template #label>{{ $ts.sort }}</template> <template #label>{{ $ts.sort }}</template>
<option value="-createdAt">{{ $ts.registeredDate }} ({{ $ts.ascendingOrder }})</option> <option value="-createdAt">{{ $ts.registeredDate }} ({{ $ts.ascendingOrder }})</option>
<option value="+createdAt">{{ $ts.registeredDate }} ({{ $ts.descendingOrder }})</option> <option value="+createdAt">{{ $ts.registeredDate }} ({{ $ts.descendingOrder }})</option>
<option value="-updatedAt">{{ $ts.lastUsed }} ({{ $ts.ascendingOrder }})</option> <option value="-updatedAt">{{ $ts.lastUsed }} ({{ $ts.ascendingOrder }})</option>
<option value="+updatedAt">{{ $ts.lastUsed }} ({{ $ts.descendingOrder }})</option> <option value="+updatedAt">{{ $ts.lastUsed }} ({{ $ts.descendingOrder }})</option>
</MkSelect> </MkSelect>
<MkSelect v-model="state" style="flex: 1;"> <MkSelect v-model="state" style="flex: 1;">
<template #label>{{ $ts.state }}</template> <template #label>{{ $ts.state }}</template>
<option value="all">{{ $ts.all }}</option> <option value="all">{{ $ts.all }}</option>
<option value="available">{{ $ts.normal }}</option> <option value="available">{{ $ts.normal }}</option>
<option value="admin">{{ $ts.administrator }}</option> <option value="admin">{{ $ts.administrator }}</option>
<option value="moderator">{{ $ts.moderator }}</option> <option value="moderator">{{ $ts.moderator }}</option>
<option value="silenced">{{ $ts.silence }}</option> <option value="silenced">{{ $ts.silence }}</option>
<option value="suspended">{{ $ts.suspend }}</option> <option value="suspended">{{ $ts.suspend }}</option>
</MkSelect> </MkSelect>
<MkSelect v-model="origin" style="flex: 1;"> <MkSelect v-model="origin" style="flex: 1;">
<template #label>{{ $ts.instance }}</template> <template #label>{{ $ts.instance }}</template>
<option value="combined">{{ $ts.all }}</option> <option value="combined">{{ $ts.all }}</option>
<option value="local">{{ $ts.local }}</option> <option value="local">{{ $ts.local }}</option>
<option value="remote">{{ $ts.remote }}</option> <option value="remote">{{ $ts.remote }}</option>
</MkSelect> </MkSelect>
</div> </div>
<div class="inputs"> <div class="inputs">
<MkInput v-model="searchUsername" style="flex: 1;" type="text" spellcheck="false" @update:modelValue="$refs.users.reload()"> <MkInput v-model="searchUsername" style="flex: 1;" type="text" spellcheck="false" @update:modelValue="$refs.users.reload()">
<template #prefix>@</template> <template #prefix>@</template>
<template #label>{{ $ts.username }}</template> <template #label>{{ $ts.username }}</template>
</MkInput> </MkInput>
<MkInput v-model="searchHost" style="flex: 1;" type="text" spellcheck="false" :disabled="pagination.params.origin === 'local'" @update:modelValue="$refs.users.reload()"> <MkInput v-model="searchHost" style="flex: 1;" type="text" spellcheck="false" :disabled="pagination.params.origin === 'local'" @update:modelValue="$refs.users.reload()">
<template #prefix>@</template> <template #prefix>@</template>
<template #label>{{ $ts.host }}</template> <template #label>{{ $ts.host }}</template>
</MkInput> </MkInput>
</div> </div>
<MkPagination v-slot="{items}" ref="users" :pagination="pagination" class="users"> <MkPagination v-slot="{items}" ref="users" :pagination="pagination" class="users">
<button v-for="user in items" :key="user.id" class="user _panel _button _gap" @click="show(user)"> <button v-for="user in items" :key="user.id" class="user _panel _button _gap" @click="show(user)">
<MkAvatar class="avatar" :user="user" :disable-link="true" :show-indicator="true"/> <MkAvatar class="avatar" :user="user" :disable-link="true" :show-indicator="true"/>
<div class="body"> <div class="body">
<header> <header>
<MkUserName class="name" :user="user"/> <MkUserName class="name" :user="user"/>
<span class="acct">@{{ acct(user) }}</span> <span class="acct">@{{ acct(user) }}</span>
<span v-if="user.isAdmin" class="staff"><img style="height: 20px;transform: translateY(4px);" src="https://s3.nca10.net/misskey/4433f6ad-4261-4302-9856-dcbc71395099"/></span> <span v-if="user.isAdmin" class="staff"><img style="height: 20px;transform: translateY(4px);" src="https://s3.nca10.net/misskey/cb40a22b-cccf-490d-b224-bffa359a3462.png"/></span>
<span v-if="user.isModerator" class="staff"><img style="height: 20px;transform: translateY(4px);" src="https://s3.nca10.net/misskey/4433f6ad-4261-4302-9856-dcbc71395099"/></span> <span v-if="user.isModerator" class="staff"><img style="height: 20px;transform: translateY(4px);" src="https://s3.nca10.net/misskey/cb40a22b-cccf-490d-b224-bffa359a3462.png"/></span>
<span v-if="user.isSilenced" class="punished"><i class="fas fa-microphone-slash"></i></span> <span v-if="user.isSilenced" class="punished"><i class="fas fa-microphone-slash"></i></span>
<span v-if="user.isSuspended" class="punished"><i class="fas fa-snowflake"></i></span> <span v-if="user.isSuspended" class="punished"><i class="fas fa-snowflake"></i></span>
</header> </header>
<div> <div>
<span>{{ $ts.lastUsed }}: <MkTime v-if="user.updatedAt" :time="user.updatedAt" mode="detail"/></span> <span>{{ $ts.lastUsed }}: <MkTime v-if="user.updatedAt" :time="user.updatedAt" mode="detail"/></span>
</div> </div>
<div> <div>
<span>{{ $ts.registeredDate }}: <MkTime :time="user.createdAt" mode="detail"/></span> <span>{{ $ts.registeredDate }}: <MkTime :time="user.createdAt" mode="detail"/></span>
</div> </div>
</div> </div>
</button> </button>
</MkPagination> </MkPagination>
</div> </div>
</div> </div>
</template> </template>
<script lang="ts"> <script lang="ts">
import { computed, defineComponent } from 'vue'; import { computed, defineComponent } from 'vue';
import MkButton from '@/components/ui/button.vue'; import MkButton from '@/components/ui/button.vue';
import MkInput from '@/components/form/input.vue'; import MkInput from '@/components/form/input.vue';
import MkSelect from '@/components/form/select.vue'; import MkSelect from '@/components/form/select.vue';
import MkPagination from '@/components/ui/pagination.vue'; import MkPagination from '@/components/ui/pagination.vue';
import { acct } from '@/filters/user'; import { acct } from '@/filters/user';
import * as os from '@/os'; import * as os from '@/os';
import * as symbols from '@/symbols'; import * as symbols from '@/symbols';
import { lookupUser } from '@/scripts/lookup-user'; import { lookupUser } from '@/scripts/lookup-user';
export default defineComponent({ export default defineComponent({
components: { components: {
MkButton, MkButton,
MkInput, MkInput,
MkSelect, MkSelect,
MkPagination, MkPagination,
}, },
emits: ['info'], emits: ['info'],
data() { data() {
return { return {
[symbols.PAGE_INFO]: { [symbols.PAGE_INFO]: {
title: this.$ts.users, title: this.$ts.users,
icon: 'fas fa-users', icon: 'fas fa-users',
bg: 'var(--bg)', bg: 'var(--bg)',
actions: [{ actions: [{
icon: 'fas fa-search', icon: 'fas fa-search',
text: this.$ts.search, text: this.$ts.search,
handler: this.searchUser handler: this.searchUser
}, { }, {
asFullButton: true, asFullButton: true,
icon: 'fas fa-plus', icon: 'fas fa-plus',
text: this.$ts.addUser, text: this.$ts.addUser,
handler: this.addUser handler: this.addUser
}, { }, {
asFullButton: true, asFullButton: true,
icon: 'fas fa-search', icon: 'fas fa-search',
text: this.$ts.lookup, text: this.$ts.lookup,
handler: this.lookupUser handler: this.lookupUser
}], }],
}, },
sort: '+createdAt', sort: '+createdAt',
state: 'all', state: 'all',
origin: 'local', origin: 'local',
searchUsername: '', searchUsername: '',
searchHost: '', searchHost: '',
pagination: { pagination: {
endpoint: 'admin/show-users' as const, endpoint: 'admin/show-users' as const,
limit: 10, limit: 10,
params: computed(() => ({ params: computed(() => ({
sort: this.sort, sort: this.sort,
state: this.state, state: this.state,
origin: this.origin, origin: this.origin,
username: this.searchUsername, username: this.searchUsername,
hostname: this.searchHost, hostname: this.searchHost,
})), })),
offsetMode: true offsetMode: true
}, },
} }
}, },
methods: { methods: {
lookupUser, lookupUser,
searchUser() { searchUser() {
os.selectUser().then(user => { os.selectUser().then(user => {
this.show(user); this.show(user);
}); });
}, },
async addUser() { async addUser() {
const { canceled: canceled1, result: username } = await os.inputText({ const { canceled: canceled1, result: username } = await os.inputText({
title: this.$ts.username, title: this.$ts.username,
}); });
if (canceled1) return; if (canceled1) return;
const { canceled: canceled2, result: password } = await os.inputText({ const { canceled: canceled2, result: password } = await os.inputText({
title: this.$ts.password, title: this.$ts.password,
type: 'password' type: 'password'
}); });
if (canceled2) return; if (canceled2) return;
os.apiWithDialog('admin/accounts/create', { os.apiWithDialog('admin/accounts/create', {
username: username, username: username,
password: password, password: password,
}).then(res => { }).then(res => {
this.$refs.users.reload(); this.$refs.users.reload();
}); });
}, },
show(user) { show(user) {
os.pageWindow(`/user-info/${user.id}`); os.pageWindow(`/user-info/${user.id}`);
}, },
acct acct
} }
}); });
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.lknzcolw { .lknzcolw {
> .users { > .users {
margin: var(--margin); margin: var(--margin);
> .inputs { > .inputs {
display: flex; display: flex;
margin-bottom: 16px; margin-bottom: 16px;
> * { > * {
margin-right: 16px; margin-right: 16px;
&:last-child { &:last-child {
margin-right: 0; margin-right: 0;
} }
} }
} }
> .users { > .users {
margin-top: var(--margin); margin-top: var(--margin);
> .user { > .user {
display: flex; display: flex;
width: 100%; width: 100%;
box-sizing: border-box; box-sizing: border-box;
text-align: left; text-align: left;
align-items: center; align-items: center;
padding: 16px; padding: 16px;
&:hover { &:hover {
color: var(--accent); color: var(--accent);
} }
> .avatar { > .avatar {
width: 60px; width: 60px;
height: 60px; height: 60px;
} }
> .body { > .body {
margin-left: 0.3em; margin-left: 0.3em;
padding: 0 8px; padding: 0 8px;
flex: 1; flex: 1;
@media (max-width: 500px) { @media (max-width: 500px) {
font-size: 14px; font-size: 14px;
} }
> header { > header {
> .name { > .name {
font-weight: bold; font-weight: bold;
} }
> .acct { > .acct {
margin-left: 8px; margin-left: 8px;
opacity: 0.7; opacity: 0.7;
} }
> .staff { > .staff {
margin-left: 0.5em; margin-left: 0.5em;
color: var(--badge); color: var(--badge);
height: 20px; height: 20px;
transform: translateY(4px); transform: translateY(4px);
} }
> .punished { > .punished {
margin-left: 0.5em; margin-left: 0.5em;
color: #4dabf7; color: #4dabf7;
} }
} }
} }
} }
} }
} }
} }
</style> </style>

File diff suppressed because it is too large Load Diff