diff --git a/converse.js b/converse.js index b58ff2c96..925df1d74 100644 --- a/converse.js +++ b/converse.js @@ -198,89 +198,53 @@ // Default configuration values // ---------------------------- - this.allow_contact_requests = true; - this.allow_dragresize = true; - this.allow_logout = true; - this.allow_muc = true; - this.allow_otr = true; - this.animate = true; - this.auto_list_rooms = false; - this.auto_reconnect = false; - this.auto_subscribe = false; - this.bosh_service_url = undefined; // The BOSH connection manager URL. - this.cache_otr_key = false; - this.debug = false; - this.default_box_height = 324; // The default height, in pixels, for the control box, chat boxes and chatrooms. - this.expose_rid_and_sid = false; - this.forward_messages = false; - this.hide_muc_server = false; - this.hide_offline_users = false; - this.i18n = locales.en; - this.keepalive = false; - this.message_carbons = false; - this.no_trimming = false; // Set to true for phantomjs tests (where browser apparently has no width) - this.play_sounds = false; - this.prebind = false; - this.roster_groups = false; - this.show_controlbox_by_default = false; - this.show_only_online_users = false; - this.show_toolbar = true; - this.storage = 'session'; - this.use_otr_by_default = false; - this.use_vcards = true; - this.visible_toolbar_buttons = { - 'emoticons': true, - 'call': false, - 'clear': true, - 'toggle_participants': true + var default_settings = { + allow_contact_requests: true, + allow_dragresize: true, + allow_logout: true, + allow_muc: true, + allow_otr: true, + allow_registration: true, + animate: true, + auto_list_rooms: false, + auto_reconnect: false, + auto_subscribe: false, + bosh_service_url: undefined, // The BOSH connection manager URL. + cache_otr_key: false, + debug: false, + default_box_height: 324, // The default height, in pixels, for the control box, chat boxes and chatrooms. + expose_rid_and_sid: false, + forward_messages: false, + hide_muc_server: false, + hide_offline_users: false, + i18n: locales.en, + keepalive: false, + message_carbons: false, + no_trimming: false, // Set to true for phantomjs tests (where browser apparently has no width) + play_sounds: false, + prebind: false, + roster_groups: false, + show_controlbox_by_default: false, + show_only_online_users: false, + show_toolbar: true, + storage: 'session', + use_otr_by_default: false, + use_vcards: true, + visible_toolbar_buttons: { + 'emoticons': true, + 'call': false, + 'clear': true, + 'toggle_participants': true + }, + xhr_custom_status: false, + xhr_custom_status_url: '', + xhr_user_search: false, + xhr_user_search_url: '' }; - this.xhr_custom_status = false; - this.xhr_custom_status_url = ''; - this.xhr_user_search = false; - this.xhr_user_search_url = ''; - + _.extend(this, default_settings); // Allow only whitelisted configuration attributes to be overwritten - _.extend(this, _.pick(settings, [ - 'allow_contact_requests', - 'allow_dragresize', - 'allow_logout', - 'allow_muc', - 'allow_otr', - 'animate', - 'auto_list_rooms', - 'auto_reconnect', - 'auto_subscribe', - 'bosh_service_url', - 'cache_otr_key', - 'connection', - 'debug', - 'default_box_height', - 'expose_rid_and_sid', - 'forward_messages', - 'fullname', - 'hide_muc_server', - 'hide_offline_users', - 'i18n', - 'jid', - 'keepalive', - 'message_carbons', - 'no_trimming', - 'play_sounds', - 'prebind', - 'rid', - 'roster_groups', - 'show_controlbox_by_default', - 'show_only_online_users', - 'show_toolbar', - 'sid', - 'storage', - 'use_otr_by_default', - 'use_vcards', - 'xhr_custom_status', - 'xhr_custom_status_url', - 'xhr_user_search', - 'xhr_user_search_url' - ])); + _.extend(this, _.pick(settings, Object.keys(default_settings))); + if (settings.visible_toolbar_buttons) { _.extend( this.visible_toolbar_buttons,