Commit c07c0f56 authored by JC Brand's avatar JC Brand

Communicate status code information to chatroom users.

Also bugfix that showed the wrong time for delayed messages.
parent dd1d56b9
......@@ -702,7 +702,7 @@
template: _.template(
'<form class="add-chatroom" action="" method="post">'+
'<input type="text" name="chatroom" class="new-chatroom-name" placeholder="Room name"/>'+
'<input type="text" name="server" class="new-chatroom-server" placeholder="Server" value="{{server_name}}"/>'+
'<input type="text" name="server" class="new-chatroom-server" placeholder="Server"/>'+
'<button type="submit">Join</button>'+
'</form>'+
'<dl id="available-chatrooms">'+
......@@ -711,8 +711,7 @@
render: function () {
this.$parent.find('#controlbox-tabs').append(this.tab_template());
var server_name = this.muc_domain;
this.$parent.find('#controlbox-panes').append(this.$el.html(this.template({server_name:server_name})).hide());
this.$parent.find('#controlbox-panes').append(this.$el.html(this.template()).hide());
return this;
},
......@@ -813,12 +812,12 @@
featureAdded: function (feature) {
if (feature.get('var') == 'http://jabber.org/protocol/muc') {
if (!this.roomspanel) {
this.roomspanel = new converse.RoomsPanel();
this.roomspanel.muc_domain = feature.get('from');
this.roomspanel.$parent = this.$el;
this.roomspanel.render().trigger('update-rooms-list');
this.roomspanel.muc_domain = feature.get('from');
var $server= this.$el.find('input.new-chatroom-server');
if (! $server.is(':focus')) {
$server.val(this.roomspanel.muc_domain);
}
this.roomspanel.trigger('update-rooms-list');
}
},
......@@ -861,6 +860,9 @@
this.contactspanel = new converse.ContactsPanel();
this.contactspanel.$parent = this.$el;
this.contactspanel.render();
this.roomspanel = new converse.RoomsPanel();
this.roomspanel.$parent = this.$el;
this.roomspanel.render();
}
return this;
}
......@@ -874,7 +876,6 @@
'click a.close-chatbox-button': 'closeChat',
'keypress textarea.chat-textarea': 'keyPressed'
},
info_template: _.template('<div class="chat-event">{{message}}</div>'),
sendChatRoomMessage: function (body) {
......@@ -985,15 +986,42 @@
return true;
},
communicateStatusCodes: function ($message, $chat_content) {
/* Parse the message for status codes and communicate their purpose
* to the user.
* See: http://xmpp.org/registrar/mucstatus.html
*/
var status_messages = {
100: 'This room is not anonymous',
102: 'This room now shows unavailable members',
103: 'This room does not show unavailable members',
104: 'Non-privacy-related room configuration has changed',
170: 'Room logging is now enabled',
171: 'Room logging is now disabled',
172: 'This room is now non-anonymous',
173: 'This room is now semi-anonymous',
174: 'This room is now fully-anonymous'
};
$message.find('x').find('status').each($.proxy(function (idx, item) {
var code = $(item).attr('code');
var message = code && status_messages[code] || null;
if (message) {
$chat_content.append(this.info_template({message: message}));
}
}, this));
},
onChatRoomMessage: function (message) {
var $message = $(message),
body = $message.children('body').text(),
jid = $message.attr('from'),
$chat_content = this.$el.find('.chat-content'),
sender = Strophe.unescapeNode(Strophe.getResourceFromJid(jid)),
resource = Strophe.getResourceFromJid(jid),
sender = resource && Strophe.unescapeNode(resource) || '',
delayed = $message.find('delay').length > 0,
subject = $message.children('subject').text(),
match, template, message_datetime, message_date, dates, isodate;
match, template, message_datetime, message_date, dates, isodate, stamp;
if (delayed) {
stamp = $message.find('delay').attr('stamp');
message_datetime = converse.parseISO8601(stamp);
......@@ -1003,7 +1031,7 @@
// If this message is on a different day than the one received
// prior, then indicate it on the chatbox.
dates = $chat_content.find("time").map(function(){return $(this).attr("datetime");}).get();
message_date = message_datetime;
message_date = new Date(message_datetime.getTime());
message_date.setUTCHours(0,0,0,0);
isodate = converse.toISOString(message_date);
if (_.indexOf(dates, isodate) == -1) {
......@@ -1012,6 +1040,7 @@
datestring: message_date.toString().substring(0,15)
}));
}
this.communicateStatusCodes($message, $chat_content);
if (subject) {
this.$el.find('.chatroom-topic').text(subject).attr('title', subject);
$chat_content.append(this.info_template({'message': 'Topic set by '+sender+' to: '+subject }));
......@@ -1030,7 +1059,7 @@
$chat_content.append(
template({
'sender': sender == 'me' && sender || 'room',
'time': message_date.toLocaleTimeString().substring(0,5),
'time': message_datetime.toLocaleTimeString().substring(0,5),
'message': body,
'username': sender,
'extra_classes': delayed && 'delayed' || ''
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment