feat(systemtags): toggle for system tag creation in admin settings
Signed-off-by: nfebe <fenn25.fn@gmail.com>pull/49514/head
parent
b4e3eff078
commit
f7c46b6809
@ -0,0 +1,77 @@
|
|||||||
|
<!--
|
||||||
|
- SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
|
||||||
|
- SPDX-License-Identifier: AGPL-3.0-or-later
|
||||||
|
-->
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<div id="system-tags-creation-control">
|
||||||
|
<h4 class="inlineblock">
|
||||||
|
{{ t('settings', 'System tag creation') }}
|
||||||
|
</h4>
|
||||||
|
|
||||||
|
<p class="settings-hint">
|
||||||
|
{{ t('settings', 'If enabled, regular accounts will be restricted from creating new tags but will still be able to assign and remove them from their files.') }}
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<NcCheckboxRadioSwitch type="switch"
|
||||||
|
:checked.sync="systemTagsCreationRestrictedToAdmin"
|
||||||
|
@update:checked="updateSystemTagsDefault">
|
||||||
|
{{ t('settings', 'Restrict tag creation to admins only') }}
|
||||||
|
</NcCheckboxRadioSwitch>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts">
|
||||||
|
import { loadState } from '@nextcloud/initial-state'
|
||||||
|
import { showError, showSuccess } from '@nextcloud/dialogs'
|
||||||
|
import { t } from '@nextcloud/l10n'
|
||||||
|
import logger from '../logger.ts'
|
||||||
|
import { updateSystemTagsAdminRestriction } from '../services/api.js'
|
||||||
|
|
||||||
|
import NcCheckboxRadioSwitch from '@nextcloud/vue/dist/Components/NcCheckboxRadioSwitch.js'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'SystemTagsCreationControl',
|
||||||
|
|
||||||
|
components: {
|
||||||
|
NcCheckboxRadioSwitch,
|
||||||
|
},
|
||||||
|
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
systemTagsCreationRestrictedToAdmin: loadState('settings', 'restrictSystemTagsCreationToAdmin', '1') === '1',
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
t,
|
||||||
|
async updateSystemTagsDefault(isRestricted: boolean) {
|
||||||
|
try {
|
||||||
|
const responseData = await updateSystemTagsAdminRestriction(isRestricted)
|
||||||
|
console.debug('updateSystemTagsDefault', responseData)
|
||||||
|
this.handleResponse({
|
||||||
|
isRestricted,
|
||||||
|
status: responseData.ocs?.meta?.status,
|
||||||
|
})
|
||||||
|
} catch (e) {
|
||||||
|
this.handleResponse({
|
||||||
|
errorMessage: t('settings', 'Unable to update setting'),
|
||||||
|
error: e,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
handleResponse({ isRestricted, status, errorMessage, error }) {
|
||||||
|
if (status === 'ok') {
|
||||||
|
this.systemTagsCreationRestrictedToAdmin = isRestricted
|
||||||
|
showSuccess(t('settings', `System tag creation is now ${isRestricted ? 'restricted to administrators' : 'allowed for everybody'}`))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if (errorMessage) {
|
||||||
|
showError(errorMessage)
|
||||||
|
logger.error(errorMessage, error)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
||||||
Loading…
Reference in New Issue