diff options
author | Carl Schwan <carl@carlschwan.eu> | 2022-05-17 18:33:38 +0200 |
---|---|---|
committer | Carl Schwan <carl@carlschwan.eu> | 2022-05-19 15:45:44 +0200 |
commit | da49e3f3e07158e3aec22efec26ff758c0f04598 (patch) | |
tree | f35da39cf5c42eba34416180f2863a27bda0ed78 /apps/sharebymail/src | |
parent | 18dd460720b762ff644f3292724c7aad2c9e551d (diff) | |
download | nextcloud-server-da49e3f3e07158e3aec22efec26ff758c0f04598.tar.gz nextcloud-server-da49e3f3e07158e3aec22efec26ff758c0f04598.zip |
Port share by mail settings to vue
Signed-off-by: Carl Schwan <carl@carlschwan.eu>
Diffstat (limited to 'apps/sharebymail/src')
-rw-r--r-- | apps/sharebymail/src/components/AdminSettings.vue | 91 | ||||
-rw-r--r-- | apps/sharebymail/src/main-admin.js | 39 |
2 files changed, 130 insertions, 0 deletions
diff --git a/apps/sharebymail/src/components/AdminSettings.vue b/apps/sharebymail/src/components/AdminSettings.vue new file mode 100644 index 00000000000..29b7f051a4b --- /dev/null +++ b/apps/sharebymail/src/components/AdminSettings.vue @@ -0,0 +1,91 @@ +<!-- + - @copyright 2022 Carl Schwan <carl@carlschwan.eu> + - + - @author Carl Schwan <carl@carlschwan.eu> + - + - @license GNU AGPL version 3 or any later version + - + - 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/>. + - +--> + +<template> + <SettingsSection :title="t('sharebymail', 'Share by mail')" + :description="t('sharebymail', 'Allows users to share a personalized link to a file or folder by putting in an email address.')"> + <CheckboxRadioSwitch type="switch" + :checked.sync="sendPasswordMail" + @update:checked="update('sendpasswordmail', sendPasswordMail)"> + {{ t('sharebymail', 'Send password by mail') }} + </CheckboxRadioSwitch> + + <CheckboxRadioSwitch type="switch" + :checked.sync="replyToInitiator" + @update:checked="update('replyToInitiator', replyToInitiator)"> + {{ t('sharebymail', 'Reply to initiator') }} + </CheckboxRadioSwitch> + </SettingsSection> +</template> + +<script> +import CheckboxRadioSwitch from '@nextcloud/vue/dist/Components/CheckboxRadioSwitch' +import SettingsSection from '@nextcloud/vue/dist/Components/SettingsSection' +import { loadState } from '@nextcloud/initial-state' +import { showError } from '@nextcloud/dialogs' +import axios from '@nextcloud/axios' +import { generateOcsUrl } from '@nextcloud/router' +import confirmPassword from '@nextcloud/password-confirmation' + +export default { + name: 'AdminSettings', + components: { + CheckboxRadioSwitch, + SettingsSection, + }, + data() { + return { + sendPasswordMail: loadState('sharebymail', 'sendPasswordMail'), + replyToInitiator: loadState('sharebymail', 'replyToInitiator'), + } + }, + methods: { + async update(key, value) { + await confirmPassword() + const url = generateOcsUrl('/apps/provisioning_api/api/v1/config/apps/{appId}/{key}', { + appId: 'sharebymail', + key, + }) + const stringValue = value ? 'yes' : 'no' + try { + const { data } = await axios.post(url, { + value: stringValue, + }) + this.handleResponse({ + status: data.ocs?.meta?.status + }) + } catch (e) { + this.handleResponse({ + errorMessage: t('sharebymail', 'Unable to update share by mail config'), + error: e, + }) + } + }, + async handleResponse({ status, errorMessage, error }) { + if (status !== 'ok') { + showError(errorMessage) + console.error(errorMessage, error) + } + }, + } +} +</script> diff --git a/apps/sharebymail/src/main-admin.js b/apps/sharebymail/src/main-admin.js new file mode 100644 index 00000000000..18b31a54e06 --- /dev/null +++ b/apps/sharebymail/src/main-admin.js @@ -0,0 +1,39 @@ +/** + * @copyright 2022 Carl Schwan <carl@carlschwan.eu> + * + * @author Carl Schwan <carl@carlschwan.eu> + * + * @license GNU AGPL version 3 or any later version + * + * 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 { getRequestToken } from '@nextcloud/auth' +import { translate as t } from '@nextcloud/l10n' +import '@nextcloud/dialogs/styles/toast.scss' + +import AdminSettings from './components/AdminSettings' + +__webpack_nonce__ = btoa(getRequestToken()) + +Vue.mixin({ + methods: { + t, + }, +}) + +const AdminSettingsView = Vue.extend(AdminSettings) +new AdminSettingsView().$mount('#vue-admin-sharebymail') |