Index: lams_central/src/java/org/lamsfoundation/lams/webservice/PresenceChatAction.java
===================================================================
RCS file: /usr/local/cvsroot/lams_central/src/java/org/lamsfoundation/lams/webservice/PresenceChatAction.java,v
diff -u -r1.1 -r1.2
--- lams_central/src/java/org/lamsfoundation/lams/webservice/PresenceChatAction.java 30 Oct 2012 17:46:54 -0000 1.1
+++ lams_central/src/java/org/lamsfoundation/lams/webservice/PresenceChatAction.java 5 Jul 2013 13:54:39 -0000 1.2
@@ -88,7 +88,11 @@
// roster is used also to get messages by other users, so we need to synchronise on it
synchronized (roster) {
Date currentDate = new Date(currentTime);
- activeUsers.put(nickname, currentDate);
+
+ if (!StringUtils.isBlank(nickname)) {
+ // blank nickname means this is just check but user is not really using chat
+ activeUsers.put(nickname, currentDate);
+ }
if (currentTime - lastCheckTime > IPresenceChatService.PRESENCE_IDLE_TIMEOUT) {
// store active users
@@ -104,7 +108,7 @@
}
lastCheckTime = currentTime;
- } else {
+ } else if (!StringUtils.isBlank(nickname)) {
roster.put(nickname, currentDate);
}
@@ -123,13 +127,13 @@
HttpServletResponse response) {
try {
long lessonId = WebUtil.readLongParam(request, AttributeNames.PARAM_LESSON_ID);
- boolean presenceShown = Boolean.parseBoolean(request.getParameter("presenceShown"));
+ boolean getMessages = Boolean.parseBoolean(request.getParameter("getMessages"));
// this is the current user
String nickname = request.getParameter("to");
-
+
JSONObject responseJSON = new JSONObject();
// no need to fetch messages if presence is collapsed
- if (presenceShown) {
+ if (getMessages && !StringUtils.isBlank(nickname)) {
// this is the other user from opened tab, null if it is group chat
String from = request.getParameter("from");
if (StringUtils.isBlank(from)) {
Index: lams_learning/web/presenceChat.jsp
===================================================================
RCS file: /usr/local/cvsroot/lams_learning/web/presenceChat.jsp,v
diff -u -r1.1 -r1.2
--- lams_learning/web/presenceChat.jsp 30 Oct 2012 17:46:52 -0000 1.1
+++ lams_learning/web/presenceChat.jsp 5 Jul 2013 13:54:41 -0000 1.2
@@ -12,9 +12,9 @@
var lamsUrl = "";
var actionUrl = lamsUrl + "PresenceChat.do";
var lessonId = "${param.lessonID}";
- var presenceEnabled = "${param.presenceEnabledPatch}";
- var presenceShown = ${param.presenceShown == 'true'};
- var presenceImEnabled = "${param.presenceImEnabled}";
+ var presenceEnabled = ${param.presenceEnabledPatch eq 'true'};
+ var presenceShown = ${param.presenceShown eq 'true'};
+ var presenceImEnabled = ${param.presenceImEnabled eq 'true'};
var nickname = "" + " " + "";
// labels used in JS file
@@ -37,34 +37,28 @@
// otherwise enable presence chat
else {
// if presence im is enabled
- if (presenceEnabled == 'true') {
+ if (presenceEnabled) {
// make visible
presenceChat.removeClass("startHidden");
// create chat tabs
- presenceChatTabs = $("#presenceChatTabs").tabs({'scrollable' : true,
- // set default class for new panel
- 'panelTemplate' : '
'
- });
-
- // bind the select function to do extra stuff
- presenceChatTabs.bind('tabsselect', function(event, ui) {
- lastMessageUid = null;
- // remove visual indicators of new message
- var nick = getUserFromTabIndex(ui.index);
- var tag = nickToTag(nick);
- $("#" + tagToTabLabel(tag)).removeClass('presenceTabNewMessage');
-
- if (nick != groupChatInfo.nick) {
- $("#" + tagToListing(tag)).removeClass('presenceListingNewMessage');
+ presenceChatTabs = $("#presenceChatTabs").tabs({
+ 'scrollable' : true,
+ // set default class for new panel
+ 'panelTemplate' : '',
+ 'activate' : function(event, ui) {
+ // remove visual indicators of new message
+ var nick = getUserFromTabIndex(presenceChatTabs.tabs('option','active'));
+ var tag = nickToTag(nick);
+ $("#" + tagToTabLabel(tag)).removeClass('presenceTabNewMessage');
+
+ if (nick != groupChatInfo.nick) {
+ $("#" + tagToListing(tag)).removeClass('presenceListingNewMessage');
+ }
+
+ updateChat();
}
-
- // scroll to the clicked tab
- presenceChatTabs.tabs('scrollTo', ui.tab.offsetLeft);
- });
-
- // bind the show function to do extra stuff
- presenceChatTabs.bind('tabsshow', updateChat);
+ });
}
// create roster tab
Index: lams_learning/web/includes/javascript/presence.js
===================================================================
RCS file: /usr/local/cvsroot/lams_learning/web/includes/javascript/presence.js,v
diff -u -r1.1 -r1.2
--- lams_learning/web/includes/javascript/presence.js 30 Oct 2012 17:46:52 -0000 1.1
+++ lams_learning/web/includes/javascript/presence.js 5 Jul 2013 13:54:41 -0000 1.2
@@ -214,18 +214,25 @@
// skip another attempt if previous did not return yet (slow server?)
if (!pollInProgress) {
pollInProgress = true;
- var selected = presenceChatTabs.tabs('option','selected');
- var from = getUserFromTabIndex(selected);
- if (groupChatInfo.nick == from) {
- from = null;
+ var from = null;
+ var selected = null;
+ var lastMessageUid = null;
+ var getMessages = presenceShown && presenceImEnabled;
+ if (getMessages) {
+ selected = presenceChatTabs.tabs('option','active');
+ from = getUserFromTabIndex(selected);
+ if (groupChatInfo.nick == from) {
+ from = null;
+ }
+ lastMessageUid = roster.lastMessageUids[from ? from : 'group'];
}
-
+
$.ajax({
url : actionUrl,
data : {'method' : 'getChatContent',
'lessonID' : lessonId,
- 'presenceShown' : presenceShown,
- 'lastMessageUid' : roster.lastMessageUids[from ? from : 'group'],
+ 'getMessages' : getMessages,
+ 'lastMessageUid' : lastMessageUid,
'to' : nickname,
'from' : from
},