diff --git a/CHANGES.md b/CHANGES.md index 3c0aa8c08..fd7fc1f4d 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -23,8 +23,6 @@ Soon we'll deprecate the latter, so prepare now. - #1963: Mentions are visually incorrect when used in message replies - Allow ignoring of bootstrap modules at build using environment variable. For xample: `export BOOTSTRAP_IGNORE_MODULES="Modal,Dropdown" && make dist` - Bugfix. Handle stanza that clears the MUC subject -- New config option [modtools_disable_assign](https://conversejs.org/docs/html/configuration.html#modtools-disable-assign) -- New config option [modtools_disable_query](https://conversejs.org/docs/html/configuration.html#modtools-disable-query) - Replace Backbone with [Skeletor](https://github.com/skeletorjs/skeletor) - Start using [lit-html](https://lit-html.polymer-project.org/) instead of lodash for templating. - [muc_fetch_members](https://conversejs.org/docs/html/configuration.html#muc-fetch-members) now also accepts an array of affiliations to fetch. @@ -32,8 +30,11 @@ Soon we'll deprecate the latter, so prepare now. - Support for XEP-0156 is now enabled by default (which means that [discover_connection_methods](https://conversejs.org/docs/html/configuration.html#discover-connection-methods) now has a default value of `true`). - [show_send_button](https://conversejs.org/docs/html/configuration.html#show-send-button) now has a default value of `true`. -- New configuration setting [muc_hats_from_vcard](https://conversejs.org/docs/html/configuration.html#muc-hats-from-vcard). - The [api.confirm](https://conversejs.org/docs/html/api/-_converse.api.html#.confirm) method now accepts a list of fields and returns the filled in list upon confirmation. +- New config option [modtools_disable_assign](https://conversejs.org/docs/html/configuration.html#modtools-disable-assign) +- New config option [modtools_disable_query](https://conversejs.org/docs/html/configuration.html#modtools-disable-query) +- New config option [allow_adhoc_commands](https://conversejs.org/docs/html/configuration.html#allow-adhoc-commands) +- New config option [muc_hats_from_vcard](https://conversejs.org/docs/html/configuration.html#muc-hats-from-vcard). ## 6.0.0 (2020-01-09) diff --git a/docs/source/configuration.rst b/docs/source/configuration.rst index d7720906e..ca85c06d0 100644 --- a/docs/source/configuration.rst +++ b/docs/source/configuration.rst @@ -98,6 +98,15 @@ Here's an example of Converse being initialized with these options: allow_logout: false }); + +allow_adhoc_commands +-------------------- + +* Default: ``true`` + +Allows privileged users to run XEP-0050 Ad-Hoc commands via the settings modal. + + allow_bookmarks --------------- diff --git a/package-lock.json b/package-lock.json index 2d6ede0d6..27a2eac6f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2244,7 +2244,8 @@ "dependencies": { "filesize": { "version": "6.1.0", - "resolved": false + "resolved": "https://registry.npmjs.org/filesize/-/filesize-6.1.0.tgz", + "integrity": "sha512-LpCHtPQ3sFx67z+uh2HnSyWSLLu5Jxo21795uRDuar/EOuYWXib5EmPaGIBuSnRqH2IODiKA2k5re/K9OnN/Yg==" }, "fs-extra": { "version": "8.1.0", @@ -2278,7 +2279,8 @@ }, "jed": { "version": "1.1.1", - "resolved": false + "resolved": "https://registry.npmjs.org/jed/-/jed-1.1.1.tgz", + "integrity": "sha1-elSbvZ/+FYWwzQoZHiAwVb7ldLQ=" }, "jsonfile": { "version": "5.0.0", @@ -2299,18 +2301,21 @@ }, "localforage": { "version": "1.7.3", - "resolved": false, + "resolved": "https://registry.npmjs.org/localforage/-/localforage-1.7.3.tgz", + "integrity": "sha512-1TulyYfc4udS7ECSBT2vwJksWbkwwTX8BzeUIiq8Y07Riy7bDAAnxDaPU/tWyOVmQAcWJIEIFP9lPfBGqVoPgQ==", "requires": { "lie": "3.1.1" } }, "lodash": { "version": "4.17.15", - "resolved": false + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" }, "pluggable.js": { "version": "2.0.1", - "resolved": false, + "resolved": "https://registry.npmjs.org/pluggable.js/-/pluggable.js-2.0.1.tgz", + "integrity": "sha512-SBt6v6Tbp20Jf8hU0cpcc/+HBHGMY8/Q+yA6Ih0tBQE8tfdZ6U4PRG0iNvUUjLx/hVyOP53n0UfGBymlfaaXCg==", "requires": { "lodash": "^4.17.11" } @@ -2324,11 +2329,13 @@ }, "strophe.js": { "version": "1.3.4", - "resolved": false + "resolved": "https://registry.npmjs.org/strophe.js/-/strophe.js-1.3.4.tgz", + "integrity": "sha512-jSLDG8jolhAwGOSgiJ7DTMSYK3wVoEJHKtpVRyEacQZ6CWA6z2WRPJpcFMjsIweq5aP9/XIvKUQqHBu/ZhvESA==" }, "twemoji": { "version": "12.1.5", - "resolved": false, + "resolved": "https://registry.npmjs.org/twemoji/-/twemoji-12.1.5.tgz", + "integrity": "sha512-B0PBVy5xomwb1M/WZxf/IqPZfnoIYy1skXnlHjMwLwTNfZ9ljh8VgWQktAPcJXu8080WoEh6YwQGPVhDVqvrVQ==", "requires": { "fs-extra": "^8.0.1", "jsonfile": "^5.0.0", @@ -12325,7 +12332,7 @@ }, "camelcase-keys": { "version": "2.1.0", - "resolved": "http://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", "dev": true, "requires": { @@ -12335,7 +12342,7 @@ }, "chalk": { "version": "1.1.3", - "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { @@ -12377,7 +12384,7 @@ }, "load-json-file": { "version": "1.1.0", - "resolved": "http://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", "dev": true, "requires": { @@ -12396,7 +12403,7 @@ }, "meow": { "version": "3.7.0", - "resolved": "http://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", "dev": true, "requires": { @@ -17344,7 +17351,7 @@ }, "pinkie-promise": { "version": "2.0.1", - "resolved": "http://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", "dev": true, "requires": { @@ -19056,7 +19063,7 @@ }, "load-json-file": { "version": "1.1.0", - "resolved": "http://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", "dev": true, "requires": { @@ -19069,7 +19076,7 @@ }, "os-locale": { "version": "1.4.0", - "resolved": "http://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", "dev": true, "requires": { diff --git a/src/converse-profile.js b/src/converse-profile.js index 8b012360b..164831195 100644 --- a/src/converse-profile.js +++ b/src/converse-profile.js @@ -32,6 +32,7 @@ converse.plugins.add('converse-profile', { const { __ } = _converse; api.settings.update({ + 'allow_adhoc_commands': true, 'show_client_info': true }); @@ -200,7 +201,6 @@ converse.plugins.add('converse-profile', { return tpl_profile(Object.assign( this.model.toJSON(), this.model.vcard.toJSON(), { - _converse, chat_status, 'fullname': this.model.vcard.get('fullname') || _converse.bare_jid, "showUserSettingsModal": ev => this.showUserSettingsModal(ev), diff --git a/src/templates/profile.js b/src/templates/profile.js index 088e040de..96f1fd011 100644 --- a/src/templates/profile.js +++ b/src/templates/profile.js @@ -1,21 +1,23 @@ -import { html } from "lit-html"; import { __ } from '@converse/headless/i18n'; - +import { api } from "@converse/headless/converse-core"; +import { html } from "lit-html"; const i18n_logout = __('Log out'); const i18n_change_status = __('Click to change your chat status'); const i18n_details = __('Show details about this chat client'); -export default (o) => html` +export default (o) => { + const show_settings_button = api.settings.get('show_client_info') || api.settings.get('allow_adhoc_commands'); + return html`
${o.fullname} - ${o._converse.api.settings.get('show_client_info') ? html`` : ''} - ${o._converse.api.settings.get('allow_logout') ? html`` : ''} + ${show_settings_button ? html`` : ''} + ${api.settings.get('allow_logout') ? html`` : ''}
@@ -29,4 +31,4 @@ export default (o) => html`
-`; +`}; diff --git a/src/templates/user_settings_modal.js b/src/templates/user_settings_modal.js index c5dccd4e7..3995cd133 100644 --- a/src/templates/user_settings_modal.js +++ b/src/templates/user_settings_modal.js @@ -1,9 +1,10 @@ +import '../components/adhoc-commands.js'; +import xss from "xss/dist/xss"; import { __ } from '@converse/headless/i18n'; +import { api } from "@converse/headless/converse-core"; import { html } from "lit-html"; import { modal_header_close_button } from "./buttons" import { unsafeHTML } from 'lit-html/directives/unsafe-html.js'; -import '../components/adhoc-commands.js'; -import xss from "xss/dist/xss"; const i18n_modal_title = __('Settings'); @@ -35,7 +36,11 @@ const tpl_navigation = (o) => html` `; -export default (o) => html` +export default (o) => { + const show_client_info = api.settings.get('show_client_info'); + const allow_adhoc_commands = api.settings.get('allow_adhoc_commands'); + const show_both_tabs = show_client_info && allow_adhoc_commands; + return html`