# HG changeset patch # User Kim Alvefur # Date 1520636730 -3600 # Node ID 0ea93da47db94ed26a4e3c9350c3db35d3b2bfa5 # Parent d2d0715f30d93ea11dadc789d0a265b9fda67410 mod_conversejs: Allow passing arbitrary options trough to Converse.js diff -r d2d0715f30d9 -r 0ea93da47db9 mod_conversejs/README.markdown --- 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* + diff -r d2d0715f30d9 -r 0ea93da47db9 mod_conversejs/mod_conversejs.lua --- 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 @@ ]] +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; } });