|
|
|
@ -56,23 +56,23 @@
|
|
|
|
:user="user"
|
|
|
|
:user="user"
|
|
|
|
:is-dark-theme="isDarkTheme"
|
|
|
|
:is-dark-theme="isDarkTheme"
|
|
|
|
:class="{'row--menu-opened': openedMenu}" />
|
|
|
|
:class="{'row--menu-opened': openedMenu}" />
|
|
|
|
<div v-else
|
|
|
|
<tr v-else
|
|
|
|
:class="{
|
|
|
|
:class="{
|
|
|
|
'disabled': loading.delete || loading.disable,
|
|
|
|
'disabled': loading.delete || loading.disable,
|
|
|
|
'row--menu-opened': openedMenu
|
|
|
|
'row--menu-opened': openedMenu
|
|
|
|
}"
|
|
|
|
}"
|
|
|
|
:data-id="user.id"
|
|
|
|
:data-id="user.id"
|
|
|
|
class="row row--editable">
|
|
|
|
class="row row--editable">
|
|
|
|
<div :class="{'icon-loading-small': loading.delete || loading.disable || loading.wipe}"
|
|
|
|
<td :class="{'icon-loading-small': loading.delete || loading.disable || loading.wipe}"
|
|
|
|
class="avatar">
|
|
|
|
class="avatar">
|
|
|
|
<img v-if="!loading.delete && !loading.disable && !loading.wipe"
|
|
|
|
<img v-if="!loading.delete && !loading.disable && !loading.wipe"
|
|
|
|
:src="generateAvatar(user.id, isDarkTheme)"
|
|
|
|
:src="generateAvatar(user.id, isDarkTheme)"
|
|
|
|
alt=""
|
|
|
|
alt=""
|
|
|
|
height="32"
|
|
|
|
height="32"
|
|
|
|
width="32">
|
|
|
|
width="32">
|
|
|
|
</div>
|
|
|
|
</td>
|
|
|
|
<!-- dirty hack to ellipsis on two lines -->
|
|
|
|
<!-- dirty hack to ellipsis on two lines -->
|
|
|
|
<div v-if="user.backendCapabilities.setDisplayName" class="displayName">
|
|
|
|
<td v-if="user.backendCapabilities.setDisplayName" class="displayName">
|
|
|
|
<form :class="{'icon-loading-small': loading.displayName}"
|
|
|
|
<form :class="{'icon-loading-small': loading.displayName}"
|
|
|
|
class="displayName"
|
|
|
|
class="displayName"
|
|
|
|
@submit.prevent="updateDisplayName">
|
|
|
|
@submit.prevent="updateDisplayName">
|
|
|
|
@ -90,17 +90,17 @@
|
|
|
|
type="submit"
|
|
|
|
type="submit"
|
|
|
|
value="">
|
|
|
|
value="">
|
|
|
|
</form>
|
|
|
|
</form>
|
|
|
|
</div>
|
|
|
|
</td>
|
|
|
|
<div v-else class="name">
|
|
|
|
<td v-else class="name">
|
|
|
|
{{ user.id }}
|
|
|
|
{{ user.id }}
|
|
|
|
<div class="displayName subtitle">
|
|
|
|
<div class="displayName subtitle">
|
|
|
|
<div :title="user.displayname.length > 20 ? user.displayname : ''" class="cellText">
|
|
|
|
<div :title="user.displayname.length > 20 ? user.displayname : ''" class="cellText">
|
|
|
|
{{ user.displayname }}
|
|
|
|
{{ user.displayname }}
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</td>
|
|
|
|
<form v-if="settings.canChangePassword && user.backendCapabilities.setPassword"
|
|
|
|
<td v-if="settings.canChangePassword && user.backendCapabilities.setPassword">
|
|
|
|
:class="{'icon-loading-small': loading.password}"
|
|
|
|
<form :class="{'icon-loading-small': loading.password}"
|
|
|
|
class="password"
|
|
|
|
class="password"
|
|
|
|
@submit.prevent="updatePassword">
|
|
|
|
@submit.prevent="updatePassword">
|
|
|
|
<label class="hidden-visually" :for="'password'+user.id+rand">{{ t('settings', 'Add new password') }}</label>
|
|
|
|
<label class="hidden-visually" :for="'password'+user.id+rand">{{ t('settings', 'Add new password') }}</label>
|
|
|
|
@ -119,7 +119,9 @@
|
|
|
|
value="">
|
|
|
|
value="">
|
|
|
|
<input class="icon-confirm" type="submit" value="">
|
|
|
|
<input class="icon-confirm" type="submit" value="">
|
|
|
|
</form>
|
|
|
|
</form>
|
|
|
|
<div v-else />
|
|
|
|
</td>
|
|
|
|
|
|
|
|
<td v-else />
|
|
|
|
|
|
|
|
<td>
|
|
|
|
<form :class="{'icon-loading-small': loading.mailAddress}"
|
|
|
|
<form :class="{'icon-loading-small': loading.mailAddress}"
|
|
|
|
class="mailAddress"
|
|
|
|
class="mailAddress"
|
|
|
|
@submit.prevent="updateEmail">
|
|
|
|
@submit.prevent="updateEmail">
|
|
|
|
@ -136,7 +138,8 @@
|
|
|
|
type="email">
|
|
|
|
type="email">
|
|
|
|
<input class="icon-confirm" type="submit" value="">
|
|
|
|
<input class="icon-confirm" type="submit" value="">
|
|
|
|
</form>
|
|
|
|
</form>
|
|
|
|
<div :class="{'icon-loading-small': loading.groups}" class="groups">
|
|
|
|
</td>
|
|
|
|
|
|
|
|
<td :class="{'icon-loading-small': loading.groups}" class="groups">
|
|
|
|
<label class="hidden-visually" :for="'groups'+user.id+rand">{{ t('settings', 'Add user to group') }}</label>
|
|
|
|
<label class="hidden-visually" :for="'groups'+user.id+rand">{{ t('settings', 'Add user to group') }}</label>
|
|
|
|
<NcMultiselect :id="'groups'+user.id+rand"
|
|
|
|
<NcMultiselect :id="'groups'+user.id+rand"
|
|
|
|
:close-on-select="false"
|
|
|
|
:close-on-select="false"
|
|
|
|
@ -157,8 +160,8 @@
|
|
|
|
@tag="createGroup">
|
|
|
|
@tag="createGroup">
|
|
|
|
<span slot="noResult">{{ t('settings', 'No results') }}</span>
|
|
|
|
<span slot="noResult">{{ t('settings', 'No results') }}</span>
|
|
|
|
</NcMultiselect>
|
|
|
|
</NcMultiselect>
|
|
|
|
</div>
|
|
|
|
</td>
|
|
|
|
<div v-if="subAdminsGroups.length>0 && settings.isAdmin"
|
|
|
|
<td v-if="subAdminsGroups.length>0 && settings.isAdmin"
|
|
|
|
:class="{'icon-loading-small': loading.subadmins}"
|
|
|
|
:class="{'icon-loading-small': loading.subadmins}"
|
|
|
|
class="subadmins">
|
|
|
|
class="subadmins">
|
|
|
|
<label class="hidden-visually" :for="'subadmins'+user.id+rand">{{ t('settings', 'Set user as admin for') }}</label>
|
|
|
|
<label class="hidden-visually" :for="'subadmins'+user.id+rand">{{ t('settings', 'Set user as admin for') }}</label>
|
|
|
|
@ -178,8 +181,8 @@
|
|
|
|
@select="addUserSubAdmin">
|
|
|
|
@select="addUserSubAdmin">
|
|
|
|
<span slot="noResult">{{ t('settings', 'No results') }}</span>
|
|
|
|
<span slot="noResult">{{ t('settings', 'No results') }}</span>
|
|
|
|
</NcMultiselect>
|
|
|
|
</NcMultiselect>
|
|
|
|
</div>
|
|
|
|
</td>
|
|
|
|
<div :title="usedSpace"
|
|
|
|
<td :title="usedSpace"
|
|
|
|
:class="{'icon-loading-small': loading.quota}"
|
|
|
|
:class="{'icon-loading-small': loading.quota}"
|
|
|
|
class="quota">
|
|
|
|
class="quota">
|
|
|
|
<label class="hidden-visually" :for="'quota'+user.id+rand">{{ t('settings', 'Select user quota') }}</label>
|
|
|
|
<label class="hidden-visually" :for="'quota'+user.id+rand">{{ t('settings', 'Select user quota') }}</label>
|
|
|
|
@ -196,8 +199,8 @@
|
|
|
|
track-by="id"
|
|
|
|
track-by="id"
|
|
|
|
@input="setUserQuota"
|
|
|
|
@input="setUserQuota"
|
|
|
|
@tag="validateQuota" />
|
|
|
|
@tag="validateQuota" />
|
|
|
|
</div>
|
|
|
|
</td>
|
|
|
|
<div v-if="showConfig.showLanguages"
|
|
|
|
<td v-if="showConfig.showLanguages"
|
|
|
|
:class="{'icon-loading-small': loading.languages}"
|
|
|
|
:class="{'icon-loading-small': loading.languages}"
|
|
|
|
class="languages">
|
|
|
|
class="languages">
|
|
|
|
<label class="hidden-visually" :for="'language'+user.id+rand">{{ t('settings', 'Set the language') }}</label>
|
|
|
|
<label class="hidden-visually" :for="'language'+user.id+rand">{{ t('settings', 'Set the language') }}</label>
|
|
|
|
@ -213,14 +216,14 @@
|
|
|
|
label="name"
|
|
|
|
label="name"
|
|
|
|
track-by="code"
|
|
|
|
track-by="code"
|
|
|
|
@input="setUserLanguage" />
|
|
|
|
@input="setUserLanguage" />
|
|
|
|
</div>
|
|
|
|
</td>
|
|
|
|
|
|
|
|
|
|
|
|
<!-- don't show this on edit mode -->
|
|
|
|
<!-- don't show this on edit mode -->
|
|
|
|
<div v-if="showConfig.showStoragePath || showConfig.showUserBackend"
|
|
|
|
<td v-if="showConfig.showStoragePath || showConfig.showUserBackend"
|
|
|
|
class="storageLocation" />
|
|
|
|
class="storageLocation" />
|
|
|
|
<div v-if="showConfig.showLastLogin" />
|
|
|
|
<td v-if="showConfig.showLastLogin" />
|
|
|
|
|
|
|
|
|
|
|
|
<div class="userActions">
|
|
|
|
<td class="userActions">
|
|
|
|
<div v-if="!loading.all"
|
|
|
|
<div v-if="!loading.all"
|
|
|
|
class="toggleUserActions">
|
|
|
|
class="toggleUserActions">
|
|
|
|
<NcActions>
|
|
|
|
<NcActions>
|
|
|
|
@ -242,8 +245,8 @@
|
|
|
|
<div class="icon-checkmark" />
|
|
|
|
<div class="icon-checkmark" />
|
|
|
|
{{ feedbackMessage }}
|
|
|
|
{{ feedbackMessage }}
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</td>
|
|
|
|
</div>
|
|
|
|
</tr>
|
|
|
|
</template>
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
|
|
<script>
|
|
|
|
<script>
|
|
|
|
@ -697,4 +700,11 @@ export default {
|
|
|
|
.row::v-deep .multiselect__single {
|
|
|
|
.row::v-deep .multiselect__single {
|
|
|
|
z-index: auto !important;
|
|
|
|
z-index: auto !important;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
.displayName input,
|
|
|
|
|
|
|
|
.password input,
|
|
|
|
|
|
|
|
.mailAddress input {
|
|
|
|
|
|
|
|
width: 100%;
|
|
|
|
|
|
|
|
height: 44px!important;
|
|
|
|
|
|
|
|
border: 2px solid var(--color-border-dark);
|
|
|
|
|
|
|
|
}
|
|
|
|
</style>
|
|
|
|
</style>
|
|
|
|
|