Changeset View
Changeset View
Standalone View
Standalone View
src/resources/vue/Admin/User.vue
Show First 20 Lines • Show All 178 Lines • ▼ Show 20 Lines | <div class="container"> | ||||
</div> | </div> | ||||
<h2 class="card-title mt-4">{{ $t('wallet.transactions') }}</h2> | <h2 class="card-title mt-4">{{ $t('wallet.transactions') }}</h2> | ||||
<transaction-log v-if="wallet.id && !walletReload" class="card-text" :wallet-id="wallet.id" :is-admin="true"></transaction-log> | <transaction-log v-if="wallet.id && !walletReload" class="card-text" :wallet-id="wallet.id" :is-admin="true"></transaction-log> | ||||
</div> | </div> | ||||
</div> | </div> | ||||
<div class="tab-pane" id="user-aliases" role="tabpanel" aria-labelledby="tab-aliases"> | <div class="tab-pane" id="user-aliases" role="tabpanel" aria-labelledby="tab-aliases"> | ||||
<div class="card-body"> | <div class="card-body"> | ||||
<div class="card-text"> | <div class="card-text"> | ||||
<table class="table table-sm table-hover mb-0"> | <list-table :list="user.aliases" :setup="aliasesListSetup" class="mb-0"></list-table> | ||||
<thead> | |||||
<tr> | |||||
<th scope="col">{{ $t('form.email') }}</th> | |||||
</tr> | |||||
</thead> | |||||
<tbody> | |||||
<tr v-for="(alias, index) in user.aliases" :id="'alias' + index" :key="index"> | |||||
<td>{{ alias }}</td> | |||||
</tr> | |||||
</tbody> | |||||
<tfoot class="table-fake-body"> | |||||
<tr> | |||||
<td>{{ $t('user.aliases-none') }}</td> | |||||
</tr> | |||||
</tfoot> | |||||
</table> | |||||
</div> | </div> | ||||
</div> | </div> | ||||
</div> | </div> | ||||
<div class="tab-pane" id="user-subscriptions" role="tabpanel" aria-labelledby="tab-subscriptions"> | <div class="tab-pane" id="user-subscriptions" role="tabpanel" aria-labelledby="tab-subscriptions"> | ||||
<div class="card-body"> | <div class="card-body"> | ||||
<div class="card-text"> | <div class="card-text"> | ||||
<table class="table table-sm table-hover mb-0"> | <list-table :list="skus" :setup="skusListSetup" class="mb-0"></list-table> | ||||
<thead> | |||||
<tr> | |||||
<th scope="col">{{ $t('user.subscription') }}</th> | |||||
<th scope="col">{{ $t('user.price') }}</th> | |||||
</tr> | |||||
</thead> | |||||
<tbody> | |||||
<tr v-for="(sku, sku_id) in skus" :id="'sku' + sku.id" :key="sku_id"> | |||||
<td>{{ sku.name }}</td> | |||||
<td class="price">{{ sku.price }}</td> | |||||
</tr> | |||||
</tbody> | |||||
<tfoot class="table-fake-body"> | |||||
<tr> | |||||
<td colspan="2">{{ $t('user.subscriptions-none') }}</td> | |||||
</tr> | |||||
</tfoot> | |||||
</table> | |||||
<small v-if="discount > 0" class="hint"> | <small v-if="discount > 0" class="hint"> | ||||
<hr class="m-0"> | <hr class="m-0"> | ||||
¹ {{ $t('user.discount-hint') }}: {{ discount }}% - {{ discount_description }} | ¹ {{ $t('user.discount-hint') }}: {{ discount }}% - {{ discount_description }} | ||||
</small> | </small> | ||||
<div class="mt-2 buttons"> | <div class="mt-2 buttons"> | ||||
<btn class="btn-danger" id="reset2fa" v-if="has2FA" @click="reset2FADialog">{{ $t('user.reset-2fa') }}</btn> | <btn class="btn-danger" id="reset2fa" v-if="has2FA" @click="reset2FADialog">{{ $t('user.reset-2fa') }}</btn> | ||||
<btn class="btn-secondary" id="addbetasku" v-if="!hasBeta" @click="addBetaSku">{{ $t('user.add-beta') }}</btn> | <btn class="btn-secondary" id="addbetasku" v-if="!hasBeta" @click="addBetaSku">{{ $t('user.add-beta') }}</btn> | ||||
</div> | </div> | ||||
Show All 26 Lines | <div class="container"> | ||||
<div class="card-text"> | <div class="card-text"> | ||||
<resource-list :list="resources" class="mb-0"></resource-list> | <resource-list :list="resources" class="mb-0"></resource-list> | ||||
</div> | </div> | ||||
</div> | </div> | ||||
</div> | </div> | ||||
<div class="tab-pane" id="user-shared-folders" role="tabpanel" aria-labelledby="tab-shared-folders"> | <div class="tab-pane" id="user-shared-folders" role="tabpanel" aria-labelledby="tab-shared-folders"> | ||||
<div class="card-body"> | <div class="card-body"> | ||||
<div class="card-text"> | <div class="card-text"> | ||||
<shared-folder-list :list="folders" :email="true" class="mb-0"></shared-folder-list> | <shared-folder-list :list="folders" :with-email="true" class="mb-0"></shared-folder-list> | ||||
</div> | </div> | ||||
</div> | </div> | ||||
</div> | </div> | ||||
<div class="tab-pane" id="user-settings" role="tabpanel" aria-labelledby="tab-settings"> | <div class="tab-pane" id="user-settings" role="tabpanel" aria-labelledby="tab-settings"> | ||||
<div class="card-body"> | <div class="card-body"> | ||||
<div class="card-text"> | <div class="card-text"> | ||||
<form class="read-only short"> | <form class="read-only short"> | ||||
<div class="row plaintext"> | <div class="row plaintext"> | ||||
▲ Show 20 Lines • Show All 103 Lines • ▼ Show 20 Lines | <div class="container"> | ||||
</div> | </div> | ||||
</div> | </div> | ||||
</div> | </div> | ||||
</template> | </template> | ||||
<script> | <script> | ||||
import { Modal } from 'bootstrap' | import { Modal } from 'bootstrap' | ||||
import TransactionLog from '../Widgets/TransactionLog' | import TransactionLog from '../Widgets/TransactionLog' | ||||
import { ListTable } from '../Widgets/ListTools' | |||||
import { default as DistlistList } from '../Distlist/ListWidget' | import { default as DistlistList } from '../Distlist/ListWidget' | ||||
import { default as DomainList } from '../Domain/ListWidget' | import { default as DomainList } from '../Domain/ListWidget' | ||||
import { default as ResourceList } from '../Resource/ListWidget' | import { default as ResourceList } from '../Resource/ListWidget' | ||||
import { default as SharedFolderList } from '../SharedFolder/ListWidget' | import { default as SharedFolderList } from '../SharedFolder/ListWidget' | ||||
import { default as UserList } from '../User/ListWidget' | import { default as UserList } from '../User/ListWidget' | ||||
import { library } from '@fortawesome/fontawesome-svg-core' | import { library } from '@fortawesome/fontawesome-svg-core' | ||||
library.add( | library.add( | ||||
require('@fortawesome/free-solid-svg-icons/faFolderOpen').definition, | require('@fortawesome/free-solid-svg-icons/faFolderOpen').definition, | ||||
require('@fortawesome/free-solid-svg-icons/faGear').definition, | require('@fortawesome/free-solid-svg-icons/faGear').definition, | ||||
require('@fortawesome/free-solid-svg-icons/faGlobe').definition, | require('@fortawesome/free-solid-svg-icons/faGlobe').definition, | ||||
require('@fortawesome/free-solid-svg-icons/faUsers').definition, | require('@fortawesome/free-solid-svg-icons/faUsers').definition, | ||||
) | ) | ||||
export default { | export default { | ||||
components: { | components: { | ||||
DistlistList, | DistlistList, | ||||
DomainList, | DomainList, | ||||
ListTable, | |||||
ResourceList, | ResourceList, | ||||
SharedFolderList, | SharedFolderList, | ||||
TransactionLog, | TransactionLog, | ||||
UserList | UserList | ||||
}, | }, | ||||
beforeRouteUpdate (to, from, next) { | beforeRouteUpdate (to, from, next) { | ||||
// An event called when the route that renders this component has changed, | // An event called when the route that renders this component has changed, | ||||
// but this component is reused in the new route. | // but this component is reused in the new route. | ||||
// Required to handle links from /user/XXX to /user/YYY | // Required to handle links from /user/XXX to /user/YYY | ||||
next() | next() | ||||
this.$parent.routerReload() | this.$parent.routerReload() | ||||
}, | }, | ||||
data() { | data() { | ||||
return { | return { | ||||
aliasesListSetup: { | |||||
columns: [ | |||||
{ | |||||
prop: 'email', | |||||
content: item => item | |||||
}, | |||||
], | |||||
footLabel: 'user.aliases-none' | |||||
}, | |||||
oneoff_amount: '', | oneoff_amount: '', | ||||
oneoff_description: '', | oneoff_description: '', | ||||
oneoff_negative: false, | oneoff_negative: false, | ||||
discount: 0, | discount: 0, | ||||
discount_description: '', | discount_description: '', | ||||
discounts: [], | discounts: [], | ||||
external_email: '', | external_email: '', | ||||
folders: [], | folders: [], | ||||
has2FA: false, | has2FA: false, | ||||
hasBeta: false, | hasBeta: false, | ||||
wallet: {}, | wallet: {}, | ||||
walletReload: false, | walletReload: false, | ||||
distlists: [], | distlists: [], | ||||
domains: [], | domains: [], | ||||
resources: [], | resources: [], | ||||
skus: [], | |||||
sku2FA: null, | sku2FA: null, | ||||
skus: [], | |||||
skusListSetup: { | |||||
columns: [ | |||||
{ | |||||
prop: 'name', | |||||
label: 'user.subscription' | |||||
}, | |||||
{ | |||||
prop: 'price', | |||||
className: 'price', | |||||
label: 'user.price' | |||||
} | |||||
], | |||||
footLabel: 'user.subscriptions-none', | |||||
model: 'sku' | |||||
}, | |||||
users: [], | users: [], | ||||
user: { | user: { | ||||
aliases: [], | aliases: [], | ||||
config: {}, | config: {}, | ||||
wallet: {}, | wallet: {}, | ||||
skus: {}, | skus: {}, | ||||
} | } | ||||
} | } | ||||
▲ Show 20 Lines • Show All 286 Lines • Show Last 20 Lines |