Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

An error was caused because the key being passed to AjaxIM.l10n[] was incorrect. #47

Open
wants to merge 3 commits into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
67 changes: 41 additions & 26 deletions client/js/im.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,9 @@ AjaxIM = function(options, actions) {
// {{{theme.css}}}.
var defaults = {
pollServer: '',
theme: 'themes/default'
theme: 'themes/default',
hideOffline: true,
debug: false
};

// === {{{AjaxIM.}}}**{{{settings}}}** ===
Expand All @@ -27,6 +29,8 @@ AjaxIM = function(options, actions) {
// upon calling the initialization function, and not set directly.//
this.settings = $.extend(defaults, options);

AjaxIM.debug = this.settings.debug

// === {{{AjaxIM.}}}**{{{actions}}}** ===
//
// Each individual action that the IM engine can execute is predefined here.
Expand Down Expand Up @@ -118,7 +122,7 @@ AjaxIM = function(options, actions) {
$('.imjs-friend').live('click', function() {
var chatbox = self._createChatbox($(this).data('friend'));

if(chatbox.parents('.imjs-tab').data('state') != 'active') {
if(chatbox.parents('.imjs-tab').show().data('state') != 'active') {
chatbox.parents('.imjs-tab').click();
store.set(self.username + '-activeTab', $(this).data('friend'));
}
Expand Down Expand Up @@ -183,10 +187,10 @@ AjaxIM = function(options, actions) {
opacity: (status == 'away' ? 'show' : 'hide'),
height: (status == 'away' ? 'show' : 'hide')
}, 50);

$('#imjs-status-panel .imjs-button').removeClass('imjs-toggled');
$(this).addClass('imjs-toggled');

if(self.current_status[0] == 'away')
self._last_status_message = $('#imjs-away-message-text').val();

Expand All @@ -198,17 +202,17 @@ AjaxIM = function(options, actions) {
self.status(status, $('#imjs-away-message-text').val());
return false;
});

// Allow status message to be changed
$('#imjs-away-message-text')
.live('keyup', (function() {
var msg_type_timer = null;

return function() {
if(msg_type_timer) clearTimeout(msg_type_timer);

msg_type_timer = setTimeout(function() {
self._last_status_message =
self._last_status_message =
self.current_status[1] = $('#imjs-away-message-text')
.addClass('imjs-loading').val();
self.status.apply(self, self.current_status);
Expand All @@ -218,14 +222,14 @@ AjaxIM = function(options, actions) {
$(this).bind('changeStatusSuccessful changeStatusFailed', function() {
$('#imjs-away-message-text').removeClass('imjs-loading');
});

// Setup reconnect button
$('#imjs-reconnect').live('click', function() {
self.offline = false;
store.remove(self.username + '-offline');
$('#imjs-reconnect').hide();
$('.imjs-input').attr('disabled', false);

// Restore status to available
$('#imjs-status-panel .imjs-button').removeClass('imjs-toggled');
$('#imjs-button-available').addClass('imjs-toggled');
Expand All @@ -235,12 +239,12 @@ AjaxIM = function(options, actions) {
$('#imjs-friends').addClass('imjs-available');
$('#imjs-away-message-text, #imjs-away-message-text-arrow')
.css('display', 'none');

// Set status
self.current_status = ['available', ''];
store.set(self.username + '-status', ['available', '']);
self.status('available', '');

// Reconnect
self.storage();
self.listen();
Expand Down Expand Up @@ -273,7 +277,7 @@ $.extend(AjaxIM.prototype, {

if(this.username && store.get(this.username + '-offline') == true) {
this.offline = true;

var self = this;
setTimeout(function() { self._showReconnect(); }, 0);
return;
Expand Down Expand Up @@ -308,7 +312,7 @@ $.extend(AjaxIM.prototype, {

$('#imjs-friends').removeClass('imjs-not-connected')
.addClass('imjs-' + status[0]);

$('#imjs-button-' + status[0]).addClass('imjs-toggled');
if(status[0] == 'away') {
setTimeout(function() {
Expand Down Expand Up @@ -336,11 +340,11 @@ $.extend(AjaxIM.prototype, {

var activeTab = store.get(this.username + '-activeTab');
if(activeTab && activeTab in this.chats) {
this.chats[activeTab].parents('.imjs-tab').click();
this.chats[activeTab].parents('.imjs-tab').show().click();
var msglog = this.chats[activeTab].find('.imjs-msglog');
msglog[0].scrollTop = msglog[0].scrollHeight;
}

// Set username in Friends list
var header = $('#imjs-friends-panel .imjs-header');
header.html(header.html().replace('{username}', this.username));
Expand Down Expand Up @@ -401,6 +405,7 @@ $.extend(AjaxIM.prototype, {
// === //private// {{{AjaxIM.}}}**{{{_parseMessages(messages)}}}** ===
//
_parseMessage: function(message) {
_dbg(['_parseMessage', message]);
var self = this;
$(this).trigger('parseMessage', [message]);

Expand All @@ -423,11 +428,11 @@ $.extend(AjaxIM.prototype, {
self.addFriend(friend[0], friend[1], 'Friends');
});
store.set(this.username + '-friends', this.friends);

// Set username in Friends list
var header = $('#imjs-friends-panel .imjs-header');
header.html(header.html().replace('{username}', this.username));

// Set status available
$('#imjs-away-message-text, #imjs-away-message-text-arrow').hide();
$('#imjs-status-panel .imjs-button').removeClass('imjs-toggled');
Expand All @@ -446,7 +451,7 @@ $.extend(AjaxIM.prototype, {

case 'notice':
break;

case 'goodbye':
this._notConnected();
break;
Expand All @@ -468,13 +473,14 @@ $.extend(AjaxIM.prototype, {
// * {{{from}}} is the username of the sender.
// * {{{message}}} is the body.
incoming: function(from, message) {
_dbg(['incoming', from, message]);
// check if IM exists, otherwise create new window
// TODO: If friend is not on the buddylist,
// should add them to a temp list?
var chatbox = this._createChatbox(from),
tab = chatbox.parents('.imjs-tab');

if(!$('#imjs-bar .imjs-selected').length) {
if(!$('#imjs-bar .imjs-selected').show().length) {
tab.click();
} else if(tab.data('state') != 'active') {
this.notification(tab);
Expand Down Expand Up @@ -516,8 +522,11 @@ $.extend(AjaxIM.prototype, {
.attr('id', user_id)
.data('friend', username)
.appendTo(group_item.find('ul'));
if(status[0] == 'offline')
if(status[0] == 'offline'){
if(this.settings.hideOffline){
user_item.hide();
}
}
user_item.html(
user_item.html()
.replace('{username}', username)
Expand Down Expand Up @@ -597,7 +606,8 @@ $.extend(AjaxIM.prototype, {
chatbox.data('username', username);

if(username in this.friends) {
status = this.friends[username].status;
var status = this.friends[username].status;
if(typeof status != 'string'){status = status[0];}
tab.addClass('imjs-' + status);
}

Expand Down Expand Up @@ -819,6 +829,7 @@ $.extend(AjaxIM.prototype, {
// used should "you" send the user an IM while they are away, or if their status is viewed
// in another way (such as via the friends list [**not yet implemented**]).
_friendUpdate: function(friend, status, statusMessage) {
_dbg(['_friendUpdate', friend, status, statusMessage]);
if(this.chats[friend]) {
var tab = this.chats[friend].parents('.imjs-tab');
var tab_class = 'imjs-tab';
Expand All @@ -837,7 +848,7 @@ $.extend(AjaxIM.prototype, {

var date_stamp_date = date_stamp.find('.imjs-date-date').html(
AjaxIM.l10n[
'chat' + status.toUpperCase() + status.slice(1)
'chat' + status[0].toUpperCase() + status.slice(1)
].replace(/%s/g, friend));

var msglog = this.chats[friend].find('.imjs-msglog');
Expand All @@ -853,8 +864,10 @@ $.extend(AjaxIM.prototype, {
.attr('status', statusMessage);

if(status == 'offline') {
if(this.settings.hideOffline){
$('#' + friend_id + ':visible').slideUp();
$('#' + friend_id + ':hidden').hide();
}
} else if(!$('#' + friend_id + ':visible').length) {
$('#' + friend_id).slideDown();
}
Expand All @@ -876,7 +889,7 @@ $.extend(AjaxIM.prototype, {
if($('#imjs-friends').hasClass('imjs-selected'))
this.activateTab($('#imjs-friends'));
},

_showReconnect: function() {
$('#imjs-reconnect').show();
},
Expand Down Expand Up @@ -1002,7 +1015,7 @@ $.extend(AjaxIM.prototype, {
store.set(self.username + '-status',
self.current_status);
break;

case 'error':
default:
$(self).trigger('changeStatusFailed',
Expand Down Expand Up @@ -1377,6 +1390,7 @@ AjaxIM.get = function(url, data, successFunc, failureFunc) {
};

AjaxIM.request = function(url, type, data, successFunc, failureFunc) {
_dbg(['AjaxIM.request', type, url, data]);
var errorTypes = ['timeout', 'error', 'notmodified', 'parseerror'];
if(typeof failureFunc != 'function')
failureFunc = function(){};
Expand Down Expand Up @@ -1420,6 +1434,7 @@ AjaxIM.request = function(url, type, data, successFunc, failureFunc) {
// static function called outside of the initialized AjaxIM object; the other
// is only called within the initalized AjaxIM object.
AjaxIM.incoming = function(data) {
_dbg(['AjaxIM.incoming', data]);
if(!AjaxIM.client)
return false;

Expand Down Expand Up @@ -1457,7 +1472,7 @@ AjaxIM.l10n = {
notConnected: 'You are currently not connected or the server is not available. ' +
'Please ensure that you are signed in and try again.',
notConnectedTip: 'You are currently not connected.',

defaultAway: 'I\'m away.'
};

Expand Down