Mercurial > prosody-modules
changeset 2919:0ea93da47db9
mod_conversejs: Allow passing arbitrary options trough to Converse.js
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Sat, 10 Mar 2018 00:05:30 +0100 (2018-03-09) |
parents | d2d0715f30d9 |
children | 4d03ac2737ab |
files | mod_conversejs/README.markdown mod_conversejs/mod_conversejs.lua |
diffstat | 2 files changed, 34 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/mod_conversejs/README.markdown Sat Mar 10 00:04:47 2018 +0100 +++ b/mod_conversejs/README.markdown Sat Mar 10 00:05:30 2018 +0100 @@ -47,5 +47,26 @@ See Prosodys [HTTP configuration][doc:http] for HTTP related options. +Other +----- +To pass [other Converse.js +options](https://conversejs.org/docs/html/configuration.html), or +override the derived settings, one can set `conversejs_options` like +this: +``` {.lua} +converse_options = { + debug = true; + view_mode = "fullscreen"; +} +``` + +Note that the following options are automatically provided, and +**overriding them may cause problems**: + +- `authentication` *based on Prosodys authentication settings* +- `jid` *the current `VirtualHost`* +- `bosh_service_url` +- `websocket_url` *if `mod_websocket` is available* +
--- a/mod_conversejs/mod_conversejs.lua Sat Mar 10 00:04:47 2018 +0100 +++ b/mod_conversejs/mod_conversejs.lua Sat Mar 10 00:05:30 2018 +0100 @@ -17,17 +17,26 @@ <body><script>converse.initialize(%s);</script> ]] +local more_options = module:get_option("conversejs_options"); + module:provides("http", { route = { GET = function (event) - event.response.headers.content_type = "text/html"; - return template:format(json_encode({ - -- debug = true, + local converse_options = { bosh_service_url = module:http_url("bosh","/http-bind"); websocket_url = has_ws and module:http_url("websocket","xmpp-websocket"):gsub("^http", "ws") or nil; authentication = module:get_option_string("authentication") == "anonymous" and "anonymous" or "login"; jid = module.host; - })); + }; + + if type(more_options) == "table" then + for k,v in pairs(more_options) do + converse_options[k] = v; + end + end + + event.response.headers.content_type = "text/html"; + return template:format(json_encode(converse_options)); end; } });