aboutsummaryrefslogtreecommitdiffstats
path: root/apps/settings/src/admin.js
diff options
context:
space:
mode:
Diffstat (limited to 'apps/settings/src/admin.js')
-rw-r--r--apps/settings/src/admin.js153
1 files changed, 153 insertions, 0 deletions
diff --git a/apps/settings/src/admin.js b/apps/settings/src/admin.js
new file mode 100644
index 00000000000..66848162d28
--- /dev/null
+++ b/apps/settings/src/admin.js
@@ -0,0 +1,153 @@
+/**
+ * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+
+import { generateUrl } from '@nextcloud/router'
+import $ from 'jquery'
+import axios from '@nextcloud/axios'
+
+window.addEventListener('DOMContentLoaded', () => {
+ $('#loglevel').change(function() {
+ $.post(generateUrl('/settings/admin/log/level'), { level: $(this).val() }, () => {
+ OC.Log.reload()
+ })
+ })
+
+ $('#mail_smtpauth').change(function() {
+ if (!this.checked) {
+ $('#mail_credentials').addClass('hidden')
+ } else {
+ $('#mail_credentials').removeClass('hidden')
+ }
+ })
+
+ $('#mail_smtpmode').change(function() {
+ if ($(this).val() !== 'smtp') {
+ $('#setting_smtpauth').addClass('hidden')
+ $('#setting_smtphost').addClass('hidden')
+ $('#mail_smtpsecure_label').addClass('hidden')
+ $('#mail_smtpsecure').addClass('hidden')
+ $('#mail_credentials').addClass('hidden')
+ $('#mail_sendmailmode_label, #mail_sendmailmode').removeClass('hidden')
+ } else {
+ $('#setting_smtpauth').removeClass('hidden')
+ $('#setting_smtphost').removeClass('hidden')
+ $('#mail_smtpsecure_label').removeClass('hidden')
+ $('#mail_smtpsecure').removeClass('hidden')
+ if ($('#mail_smtpauth').is(':checked')) {
+ $('#mail_credentials').removeClass('hidden')
+ }
+ $('#mail_sendmailmode_label, #mail_sendmailmode').addClass('hidden')
+ }
+ })
+
+ const changeEmailSettings = function() {
+ if (OC.PasswordConfirmation.requiresPasswordConfirmation()) {
+ OC.PasswordConfirmation.requirePasswordConfirmation(changeEmailSettings)
+ return
+ }
+
+ OC.msg.startSaving('#mail_settings_msg')
+ axios.post(generateUrl('/settings/admin/mailsettings'), $('#mail_general_settings_form').serialize())
+ .then(() => {
+ OC.msg.finishedSuccess('#mail_settings_msg', t('settings', 'Saved'))
+ }).catch((error) => {
+ OC.msg.finishedError('#mail_settings_msg', error)
+ })
+ }
+
+ const toggleEmailCredentials = function() {
+ if (OC.PasswordConfirmation.requiresPasswordConfirmation()) {
+ OC.PasswordConfirmation.requirePasswordConfirmation(toggleEmailCredentials)
+ return
+ }
+
+ OC.msg.startSaving('#mail_settings_msg')
+ axios.post(generateUrl('/settings/admin/mailsettings/credentials'), $('#mail_credentials_settings').serialize())
+ .then(() => {
+ OC.msg.finishedSuccess('#mail_settings_msg', t('settings', 'Saved'))
+ }).catch((error) => {
+ OC.msg.finishedError('#mail_settings_msg', error)
+ })
+ }
+
+ $('#mail_general_settings_form').change(changeEmailSettings)
+ $('#mail_credentials_settings_submit').click(toggleEmailCredentials)
+ $('#mail_smtppassword').click(() => {
+ if (this.type === 'text' && this.value === '********') {
+ this.type = 'password'
+ this.value = ''
+ }
+ })
+
+ $('#sendtestemail').click((event) => {
+ event.preventDefault()
+ OC.msg.startAction('#sendtestmail_msg', t('settings', 'Sending…'))
+
+ axios.post(generateUrl('/settings/admin/mailtest'))
+ .then(() => {
+ OC.msg.finishedSuccess('#sendtestmail_msg', t('settings', 'Email sent'))
+ }).catch((error) => {
+ OC.msg.finishedError('#sendtestmail_msg', error)
+ })
+ })
+
+ const setupChecks = () => {
+ // run setup checks then gather error messages
+ $.when(
+ OC.SetupChecks.checkSetup(),
+ ).then((messages) => {
+ const $el = $('#postsetupchecks')
+ $('#security-warning-state-loading').addClass('hidden')
+
+ const $errorsEl = $el.find('.errors')
+ const $warningsEl = $el.find('.warnings')
+ const $infoEl = $el.find('.info')
+
+ for (let i = 0; i < messages.length; i++) {
+ switch (messages[i].type) {
+ case OC.SetupChecks.MESSAGE_TYPE_INFO:
+ $infoEl.append('<li>' + messages[i].msg + '</li>')
+ break
+ case OC.SetupChecks.MESSAGE_TYPE_WARNING:
+ $warningsEl.append('<li>' + messages[i].msg + '</li>')
+ break
+ case OC.SetupChecks.MESSAGE_TYPE_ERROR:
+ default:
+ $errorsEl.append('<li>' + messages[i].msg + '</li>')
+ }
+ }
+
+ let hasErrors = false
+ let hasWarnings = false
+
+ if ($errorsEl.find('li').length > 0) {
+ $errorsEl.removeClass('hidden')
+ hasErrors = true
+ }
+ if ($warningsEl.find('li').length > 0) {
+ $warningsEl.removeClass('hidden')
+ hasWarnings = true
+ }
+ if ($infoEl.find('li').length > 0) {
+ $infoEl.removeClass('hidden')
+ }
+
+ if (hasErrors || hasWarnings) {
+ $('#postsetupchecks-hint').removeClass('hidden')
+ if (hasErrors) {
+ $('#security-warning-state-failure').removeClass('hidden')
+ } else {
+ $('#security-warning-state-warning').removeClass('hidden')
+ }
+ } else {
+ $('#security-warning-state-ok').removeClass('hidden')
+ }
+ })
+ }
+
+ if (document.getElementById('security-warning') !== null) {
+ setupChecks()
+ }
+})