diff --git a/chatroom/chatroom.js b/chatroom/chatroom.js index df3d7c4..d98abed 100644 --- a/chatroom/chatroom.js +++ b/chatroom/chatroom.js @@ -1,4 +1,3 @@ - (function ($) { Drupal.chatroom = Drupal.chatroom || {'initialised' : false, chats: {}}; @@ -74,12 +73,20 @@ Drupal.chatroom.createChat = function(options, callback) { /** * We depend on the Nodejs module successfully create a socket for us. + * + * If there are multiple chats on a page PHP will tell + * Drupal.settings.chatroom.chats to be an array of chat objects. Here + * we ensure that it is a single object keyed by cid. */ Drupal.Nodejs.connectionSetupHandlers.chatroom = { connect: function () { - for (var cid in Drupal.settings.chatroom.chats) { - Drupal.chatroom.initialiseChat(Drupal.settings.chatroom.chats[cid]); + var chatObj = {}; + for (var i in Drupal.settings.chatroom.chats) { + var chat = Drupal.settings.chatroom.chats[i]; + chatObj[chat.cid] = chat; + Drupal.chatroom.initialiseChat(chat); } + Drupal.settings.chatroom.chats = chatObj; Drupal.chatroom.initialised = true; } }; diff --git a/chatroom/chatroom.module b/chatroom/chatroom.module index c442dbb..f3e9fb0 100644 --- a/chatroom/chatroom.module +++ b/chatroom/chatroom.module @@ -543,7 +543,7 @@ function chatroom_add_js($chatroom = NULL) { drupal_add_js(array('chatroom' => $js), 'setting'); } - if ($chatroom instanceof Chatroom) { + if ($chatroom instanceof Chatroom && $chatroom->userHasAccess($user, 'read')) { $latest_message = $chatroom->get('latestMessage'); $previous_message_id = $chatroom->loadPrevMsgId(); $chatroom_settings = array(