mirror of
https://github.com/nextcloud/server.git
synced 2026-04-21 14:23:17 -04:00
AI admin settings: lint:fix
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
This commit is contained in:
parent
4ec150c9b6
commit
112268a48a
20 changed files with 99 additions and 56 deletions
|
|
@ -242,7 +242,7 @@ window.addEventListener('DOMContentLoaded', () => {
|
|||
OC.SetupChecks.checkSetup(),
|
||||
OC.SetupChecks.checkGeneric(),
|
||||
OC.SetupChecks.checkWOFF2Loading(OC.filePath('core', '', 'fonts/NotoSans-Regular-latin.woff2'), OC.theme.docPlaceholderUrl),
|
||||
OC.SetupChecks.checkDataProtected()
|
||||
OC.SetupChecks.checkDataProtected(),
|
||||
).then((check1, check2, check3, check4, check5, check6, check7, check8, check9, check10, check11) => {
|
||||
const messages = [].concat(check1, check2, check3, check4, check5, check6, check7, check8, check9, check10, check11)
|
||||
const $el = $('#postsetupchecks')
|
||||
|
|
|
|||
|
|
@ -88,7 +88,7 @@ export default {
|
|||
methods: {
|
||||
async saveChanges() {
|
||||
this.loading = true
|
||||
const data = {settings: this.settings}
|
||||
const data = { settings: this.settings }
|
||||
try {
|
||||
await axios.put(generateUrl('/settings/api/admin/ai'), data)
|
||||
} catch (err) {
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
<template>
|
||||
<NcSelect :input-id="setting.id"
|
||||
v-model="selected"
|
||||
<NcSelect v-model="selected"
|
||||
:input-id="setting.id"
|
||||
class="group-select"
|
||||
:placeholder="t('settings', 'None')"
|
||||
label="displayName"
|
||||
|
|
|
|||
|
|
@ -22,8 +22,8 @@
|
|||
<label for="enforcedGroups">
|
||||
<span>{{ t('settings', 'Enforced groups') }}</span>
|
||||
</label>
|
||||
<NcSelect input-id="enforcedGroups"
|
||||
v-model="enforcedGroups"
|
||||
<NcSelect v-model="enforcedGroups"
|
||||
input-id="enforcedGroups"
|
||||
:options="groups"
|
||||
:disabled="loading"
|
||||
:multiple="true"
|
||||
|
|
@ -38,8 +38,8 @@
|
|||
<label for="excludedGroups">
|
||||
<span>{{ t('settings', 'Excluded groups') }}</span>
|
||||
</label>
|
||||
<NcSelect input-id="excludedGroups"
|
||||
v-model="excludedGroups"
|
||||
<NcSelect v-model="excludedGroups"
|
||||
input-id="excludedGroups"
|
||||
:options="groups"
|
||||
:disabled="loading"
|
||||
:multiple="true"
|
||||
|
|
|
|||
|
|
@ -49,7 +49,7 @@ const confirm = () => {
|
|||
t('settings', 'Do you really want to wipe your data from this device?'),
|
||||
t('settings', 'Confirm wipe'),
|
||||
resolve,
|
||||
true
|
||||
true,
|
||||
)
|
||||
})
|
||||
}
|
||||
|
|
|
|||
|
|
@ -100,7 +100,7 @@ export default {
|
|||
'del',
|
||||
'blockquote',
|
||||
],
|
||||
}
|
||||
},
|
||||
)
|
||||
},
|
||||
},
|
||||
|
|
|
|||
|
|
@ -22,7 +22,9 @@
|
|||
|
||||
<template>
|
||||
<section id="vue-avatar-section">
|
||||
<h3 class="hidden-visually"> {{ t('settings', 'Your profile information') }} </h3>
|
||||
<h3 class="hidden-visually">
|
||||
{{ t('settings', 'Your profile information') }}
|
||||
</h3>
|
||||
<HeaderBar :input-id="avatarChangeSupported ? inputId : null"
|
||||
:readable="avatar.readable"
|
||||
:scope.sync="avatar.scope" />
|
||||
|
|
@ -30,13 +32,13 @@
|
|||
<div v-if="!showCropper" class="avatar__container">
|
||||
<div class="avatar__preview">
|
||||
<NcAvatar v-if="!loading"
|
||||
:key="version"
|
||||
:user="userId"
|
||||
:aria-label="t('settings', 'Your profile picture')"
|
||||
:disabled-menu="true"
|
||||
:disabled-tooltip="true"
|
||||
:show-user-status="false"
|
||||
:size="180"
|
||||
:key="version" />
|
||||
:size="180" />
|
||||
<div v-else class="icon-loading" />
|
||||
</div>
|
||||
<template v-if="avatarChangeSupported">
|
||||
|
|
@ -62,8 +64,8 @@
|
|||
</NcButton>
|
||||
</div>
|
||||
<span>{{ t('settings', 'The file must be a PNG or JPG') }}</span>
|
||||
<input ref="input"
|
||||
:id="inputId"
|
||||
<input :id="inputId"
|
||||
ref="input"
|
||||
type="file"
|
||||
:accept="validMimeTypes.join(',')"
|
||||
@change="onChange">
|
||||
|
|
|
|||
|
|
@ -29,7 +29,9 @@
|
|||
<Account :size="20" />
|
||||
<div class="details__groups-info">
|
||||
<p>{{ t('settings', 'You are a member of the following groups:') }}</p>
|
||||
<p class="details__groups-list">{{ groups.join(', ') }}</p>
|
||||
<p class="details__groups-list">
|
||||
{{ groups.join(', ') }}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="details__quota">
|
||||
|
|
@ -69,6 +71,13 @@ export default {
|
|||
NcProgressBar,
|
||||
},
|
||||
|
||||
data() {
|
||||
return {
|
||||
groups,
|
||||
usageRelative,
|
||||
}
|
||||
},
|
||||
|
||||
computed: {
|
||||
quotaText() {
|
||||
if (quota === SPACE_UNLIMITED) {
|
||||
|
|
@ -79,14 +88,7 @@ export default {
|
|||
'You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)',
|
||||
{ usage, totalSpace, usageRelative },
|
||||
)
|
||||
}
|
||||
},
|
||||
|
||||
data() {
|
||||
return {
|
||||
groups,
|
||||
usageRelative,
|
||||
}
|
||||
},
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
|
|
|||
|
|
@ -66,6 +66,6 @@ export default {
|
|||
}
|
||||
emit('settings:display-name:updated', value)
|
||||
},
|
||||
}
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
|
|
|||
|
|
@ -153,7 +153,7 @@ export default {
|
|||
this.handleResponse(
|
||||
'error',
|
||||
t('settings', 'Unable to update primary email address'),
|
||||
e
|
||||
e,
|
||||
)
|
||||
}
|
||||
},
|
||||
|
|
@ -166,7 +166,7 @@ export default {
|
|||
this.handleResponse(
|
||||
'error',
|
||||
t('settings', 'Unable to delete additional email address'),
|
||||
e
|
||||
e,
|
||||
)
|
||||
}
|
||||
},
|
||||
|
|
@ -178,7 +178,7 @@ export default {
|
|||
this.handleResponse(
|
||||
'error',
|
||||
t('settings', 'Unable to delete additional email address'),
|
||||
{}
|
||||
{},
|
||||
)
|
||||
}
|
||||
},
|
||||
|
|
|
|||
|
|
@ -88,7 +88,7 @@ export default {
|
|||
allLanguages() {
|
||||
return Object.freeze(
|
||||
[...this.commonLanguages, ...this.otherLanguages]
|
||||
.reduce((acc, { code, name }) => ({ ...acc, [code]: name }), {})
|
||||
.reduce((acc, { code, name }) => ({ ...acc, [code]: name }), {}),
|
||||
)
|
||||
},
|
||||
},
|
||||
|
|
|
|||
|
|
@ -50,7 +50,7 @@
|
|||
<span>{{ example.time }}</span>
|
||||
</p>
|
||||
<p>
|
||||
{{ t('settings', 'Week starts on {firstDayOfWeek}', { firstDayOfWeek: this.example.firstDayOfWeek }) }}
|
||||
{{ t('settings', 'Week starts on {firstDayOfWeek}', { firstDayOfWeek: example.firstDayOfWeek }) }}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -107,7 +107,7 @@ export default {
|
|||
allLocales() {
|
||||
return Object.freeze(
|
||||
[...this.localesForLanguage, ...this.otherLocales]
|
||||
.reduce((acc, { code, name }) => ({ ...acc, [code]: name }), {})
|
||||
.reduce((acc, { code, name }) => ({ ...acc, [code]: name }), {}),
|
||||
)
|
||||
},
|
||||
},
|
||||
|
|
|
|||
|
|
@ -38,8 +38,8 @@
|
|||
autocorrect="off"
|
||||
@input="onPropertyChange" />
|
||||
<input v-else
|
||||
ref="input"
|
||||
:id="inputId"
|
||||
ref="input"
|
||||
:placeholder="placeholder"
|
||||
:type="type"
|
||||
:value="value"
|
||||
|
|
|
|||
|
|
@ -100,7 +100,7 @@ export default {
|
|||
isHeading: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
}
|
||||
},
|
||||
},
|
||||
|
||||
data() {
|
||||
|
|
|
|||
|
|
@ -42,9 +42,9 @@
|
|||
</NcEmptyContent>
|
||||
|
||||
<RecycleScroller v-else
|
||||
ref="scroller"
|
||||
class="user-list"
|
||||
:style="style"
|
||||
ref="scroller"
|
||||
:items="filteredUsers"
|
||||
key-field="id"
|
||||
role="table"
|
||||
|
|
@ -55,7 +55,6 @@
|
|||
:item-size="rowHeight"
|
||||
@hook:mounted="handleMounted"
|
||||
@scroll-end="handleScrollEnd">
|
||||
|
||||
<template #before>
|
||||
<caption class="hidden-visually">
|
||||
{{ t('settings', 'List of users. This list is not fully rendered for performance reasons. The users will be rendered as you navigate through the list.') }}
|
||||
|
|
@ -79,7 +78,6 @@
|
|||
<UserListFooter :loading="loading.users"
|
||||
:filtered-users="filteredUsers" />
|
||||
</template>
|
||||
|
||||
</RecycleScroller>
|
||||
</Fragment>
|
||||
</template>
|
||||
|
|
|
|||
|
|
@ -29,8 +29,8 @@
|
|||
:disabled="loading.all"
|
||||
@submit.prevent="createUser">
|
||||
<h2>{{ t('settings', 'New user') }}</h2>
|
||||
<NcTextField class="modal__item"
|
||||
ref="username"
|
||||
<NcTextField ref="username"
|
||||
class="modal__item"
|
||||
data-test="username"
|
||||
:value.sync="newUser.id"
|
||||
:disabled="settings.newUserGenerateUserID"
|
||||
|
|
@ -50,12 +50,12 @@
|
|||
autocomplete="off"
|
||||
autocorrect="off" />
|
||||
<span v-if="!settings.newUserRequireEmail"
|
||||
class="modal__hint"
|
||||
id="password-email-hint">
|
||||
id="password-email-hint"
|
||||
class="modal__hint">
|
||||
{{ t('settings', 'Either password or email is required') }}
|
||||
</span>
|
||||
<NcPasswordField class="modal__item"
|
||||
ref="password"
|
||||
<NcPasswordField ref="password"
|
||||
class="modal__item"
|
||||
data-test="password"
|
||||
:value.sync="newUser.password"
|
||||
:minlength="minPasswordLength"
|
||||
|
|
@ -81,8 +81,8 @@
|
|||
<div class="modal__item">
|
||||
<!-- hidden input trick for vanilla html5 form validation -->
|
||||
<NcTextField v-if="!settings.isAdmin"
|
||||
tabindex="-1"
|
||||
id="new-user-groups-input"
|
||||
tabindex="-1"
|
||||
:class="{ 'icon-loading-small': loading.groups }"
|
||||
:value="newUser.groups"
|
||||
:required="!settings.isAdmin" />
|
||||
|
|
@ -112,11 +112,11 @@
|
|||
for="new-user-sub-admin">
|
||||
{{ t('settings', 'Administered groups') }}
|
||||
</label>
|
||||
<NcSelect class="modal__select"
|
||||
<NcSelect v-model="newUser.subAdminsGroups"
|
||||
class="modal__select"
|
||||
input-id="new-user-sub-admin"
|
||||
:placeholder="t('settings', 'Set user as admin for …')"
|
||||
:options="subAdminsGroups"
|
||||
v-model="newUser.subAdminsGroups"
|
||||
:close-on-select="false"
|
||||
:multiple="true"
|
||||
label="name" />
|
||||
|
|
@ -126,11 +126,11 @@
|
|||
for="new-user-quota">
|
||||
{{ t('settings', 'Quota') }}
|
||||
</label>
|
||||
<NcSelect class="modal__select"
|
||||
<NcSelect v-model="newUser.quota"
|
||||
class="modal__select"
|
||||
input-id="new-user-quota"
|
||||
:placeholder="t('settings', 'Set user quota')"
|
||||
:options="quotaOptions"
|
||||
v-model="newUser.quota"
|
||||
:clearable="false"
|
||||
:taggable="true"
|
||||
:create-option="validateQuota" />
|
||||
|
|
@ -141,14 +141,14 @@
|
|||
for="new-user-language">
|
||||
{{ t('settings', 'Language') }}
|
||||
</label>
|
||||
<NcSelect class="modal__select"
|
||||
<NcSelect v-model="newUser.language"
|
||||
class="modal__select"
|
||||
input-id="new-user-language"
|
||||
:placeholder="t('settings', 'Set default language')"
|
||||
:clearable="false"
|
||||
:selectable="option => !option.languages"
|
||||
:filter-by="languageFilterBy"
|
||||
:options="languages"
|
||||
v-model="newUser.language"
|
||||
label="name" />
|
||||
</div>
|
||||
<div :class="['modal__item managers', { 'icon-loading-small': loading.manager }]">
|
||||
|
|
@ -157,11 +157,11 @@
|
|||
<!-- TRANSLATORS This string describes a manager in the context of an organization -->
|
||||
{{ t('settings', 'Manager') }}
|
||||
</label>
|
||||
<NcSelect class="modal__select"
|
||||
<NcSelect v-model="newUser.manager"
|
||||
class="modal__select"
|
||||
input-id="new-user-manager"
|
||||
:placeholder="managerLabel"
|
||||
:options="possibleManagers"
|
||||
v-model="newUser.manager"
|
||||
:user-select="true"
|
||||
label="displayname"
|
||||
@search="searchUserManager" />
|
||||
|
|
@ -366,7 +366,7 @@ export default {
|
|||
// Show group header of the language
|
||||
if (option.languages) {
|
||||
return option.languages.some(
|
||||
({ name }) => name.toLocaleLowerCase().includes(search.toLocaleLowerCase())
|
||||
({ name }) => name.toLocaleLowerCase().includes(search.toLocaleLowerCase()),
|
||||
)
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -44,8 +44,8 @@
|
|||
{{ t('settings', 'Edit display name') }}
|
||||
</label>
|
||||
<NcTextField :id="'displayName' + uniqueId"
|
||||
data-test="displayNameField"
|
||||
ref="displayNameField"
|
||||
data-test="displayNameField"
|
||||
:show-trailing-button="true"
|
||||
class="user-row-text-field"
|
||||
:class="{ 'icon-loading-small': idState.loading.displayName }"
|
||||
|
|
@ -202,8 +202,8 @@
|
|||
</template>
|
||||
<template v-else-if="!isObfuscated">
|
||||
<label :for="'quota-progress' + uniqueId">{{ userQuota }} ({{ usedSpace }})</label>
|
||||
<NcProgressBar class="row__progress"
|
||||
:id="'quota-progress' + uniqueId"
|
||||
<NcProgressBar :id="'quota-progress' + uniqueId"
|
||||
class="row__progress"
|
||||
:class="{
|
||||
'row__progress--warn': usedQuota > 80,
|
||||
}"
|
||||
|
|
|
|||
39
apps/settings/src/main-admin-ai.js
Normal file
39
apps/settings/src/main-admin-ai.js
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
/**
|
||||
* @copyright Copyright (c) 2016 Christoph Wurst <christoph@winzerhof-wurst.at>
|
||||
*
|
||||
* @author Christoph Wurst <christoph@winzerhof-wurst.at>
|
||||
* @author John Molakvoæ <skjnldsv@protonmail.com>
|
||||
* @author Roeland Jago Douma <roeland@famdouma.nl>
|
||||
*
|
||||
* @license AGPL-3.0-or-later
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
import Vue from 'vue'
|
||||
|
||||
import ArtificialIntelligence from './components/AdminAI.vue'
|
||||
|
||||
// eslint-disable-next-line camelcase
|
||||
__webpack_nonce__ = btoa(OC.requestToken)
|
||||
|
||||
Vue.prototype.t = t
|
||||
|
||||
// Not used here but required for legacy templates
|
||||
window.OC = window.OC || {}
|
||||
window.OC.Settings = window.OC.Settings || {}
|
||||
|
||||
const View = Vue.extend(ArtificialIntelligence)
|
||||
new View().$mount('#ai-settings')
|
||||
|
|
@ -39,7 +39,7 @@ window.OC = window.OC || {}
|
|||
window.OC.Settings = window.OC.Settings || {}
|
||||
|
||||
store.replaceState(
|
||||
loadState('settings', 'mandatory2FAState')
|
||||
loadState('settings', 'mandatory2FAState'),
|
||||
)
|
||||
|
||||
const View = Vue.extend(AdminTwoFactor)
|
||||
|
|
|
|||
|
|
@ -33,6 +33,8 @@ export const defaultQuota = {
|
|||
/**
|
||||
* Return `true` if the logged in user does not have permissions to view the
|
||||
* data of `user`
|
||||
* @param user
|
||||
* @param user.id
|
||||
*/
|
||||
export const isObfuscated = (user: { id: string, [key: string]: any }) => {
|
||||
const keys = Object.keys(user)
|
||||
|
|
|
|||
Loading…
Reference in a new issue