summaryrefslogtreecommitdiffstats
path: root/roles/reverseproxy/files/conversejs/src/plugins/muc-views/templates/muc-config-form.js
diff options
context:
space:
mode:
Diffstat (limited to 'roles/reverseproxy/files/conversejs/src/plugins/muc-views/templates/muc-config-form.js')
-rw-r--r--roles/reverseproxy/files/conversejs/src/plugins/muc-views/templates/muc-config-form.js51
1 files changed, 51 insertions, 0 deletions
diff --git a/roles/reverseproxy/files/conversejs/src/plugins/muc-views/templates/muc-config-form.js b/roles/reverseproxy/files/conversejs/src/plugins/muc-views/templates/muc-config-form.js
new file mode 100644
index 0000000..b6496a1
--- /dev/null
+++ b/roles/reverseproxy/files/conversejs/src/plugins/muc-views/templates/muc-config-form.js
@@ -0,0 +1,51 @@
+import tplSpinner from 'templates/spinner.js';
+import { __ } from 'i18n';
+import { api, converse } from "@converse/headless/core";
+import { html } from "lit";
+
+const { sizzle } = converse.env;
+const u = converse.env.utils;
+
+export default (o) => {
+ const whitelist = api.settings.get('roomconfig_whitelist');
+ const config_stanza = o.model.session.get('config_stanza');
+ let fields = [];
+ let instructions = '';
+ let title;
+ if (config_stanza) {
+ const stanza = u.toStanza(config_stanza);
+ fields = sizzle('field', stanza);
+ if (whitelist.length) {
+ fields = fields.filter(f => whitelist.includes(f.getAttribute('var')));
+ }
+ const password_protected = o.model.features.get('passwordprotected');
+ const options = {
+ 'new_password': !password_protected,
+ 'fixed_username': o.model.get('jid')
+ };
+ fields = fields.map(f => u.xForm2TemplateResult(f, stanza, options));
+ instructions = stanza.querySelector('instructions')?.textContent;
+ title = stanza.querySelector('title')?.textContent;
+ } else {
+ title = __('Loading configuration form');
+ }
+ const i18n_save = __('Save');
+ const i18n_cancel = __('Cancel');
+ return html`
+ <form class="converse-form chatroom-form ${fields.length ? '' : 'converse-form--spinner'}"
+ autocomplete="off"
+ @submit=${o.submitConfigForm}>
+
+ <fieldset class="form-group">
+ <legend class="centered">${title}</legend>
+ ${ (title !== instructions) ? html`<p class="form-help">${instructions}</p>` : '' }
+ ${ fields.length ? fields : tplSpinner({'classes': 'hor_centered'}) }
+ </fieldset>
+ ${ fields.length ? html`
+ <fieldset>
+ <input type="submit" class="btn btn-primary" value="${i18n_save}">
+ <input type="button" class="btn btn-secondary button-cancel" value="${i18n_cancel}" @click=${o.closeConfigForm}>
+ </fieldset>` : '' }
+ </form>
+ `;
+}