Commit 1323c0fc authored by JC Brand's avatar JC Brand

Merge pull request #103 from Aupajo/call-button

Option to enable toolbar call button
parents e3e8bf6c 0b4fe330
...@@ -1083,6 +1083,10 @@ ul.chat-toolbar { ...@@ -1083,6 +1083,10 @@ ul.chat-toolbar {
float: right; float: right;
} }
.chat-toolbar .toggle-call {
color: rgb(79, 79, 79);
}
.chat-toolbar ul li a { .chat-toolbar ul li a {
color: rgb(79, 79, 79); color: rgb(79, 79, 79);
} }
......
...@@ -137,6 +137,7 @@ ...@@ -137,6 +137,7 @@
this.prebind = false; this.prebind = false;
this.show_controlbox_by_default = false; this.show_controlbox_by_default = false;
this.show_only_online_users = false; this.show_only_online_users = false;
this.show_call_button = false;
this.show_emoticons = true; this.show_emoticons = true;
this.show_toolbar = true; this.show_toolbar = true;
this.use_vcards = true; this.use_vcards = true;
...@@ -166,6 +167,7 @@ ...@@ -166,6 +167,7 @@
'show_emoticons', 'show_emoticons',
'show_only_online_users', 'show_only_online_users',
'show_toolbar', 'show_toolbar',
'show_call_button',
'sid', 'sid',
'use_vcards', 'use_vcards',
'xhr_custom_status', 'xhr_custom_status',
...@@ -725,7 +727,8 @@ ...@@ -725,7 +727,8 @@
'click .toggle-otr': 'toggleOTRMenu', 'click .toggle-otr': 'toggleOTRMenu',
'click .start-otr': 'startOTRFromToolbar', 'click .start-otr': 'startOTRFromToolbar',
'click .end-otr': 'endOTR', 'click .end-otr': 'endOTR',
'click .auth-otr': 'authOTR' 'click .auth-otr': 'authOTR',
'click .toggle-call': 'toggleCall'
}, },
template: _.template( template: _.template(
...@@ -769,6 +772,9 @@ ...@@ -769,6 +772,9 @@
'</ul>' + '</ul>' +
'</li>' + '</li>' +
'{[ } ]}' + '{[ } ]}' +
'{[ if (' + converse.show_call_button + ') { ]}' +
'<li><a class="toggle-call icon-phone" title="Start a call"></a></li>' +
'{[ } ]}' +
'{[ if (allow_otr) { ]}' + '{[ if (allow_otr) { ]}' +
'<li class="toggle-otr {{otr_status_class}}" title="{{otr_tooltip}}">'+ '<li class="toggle-otr {{otr_status_class}}" title="{{otr_tooltip}}">'+
'<span class="chat-toolbar-text">{{otr_translated_status}}</span>'+ '<span class="chat-toolbar-text">{{otr_translated_status}}</span>'+
...@@ -1162,6 +1168,15 @@ ...@@ -1162,6 +1168,15 @@
} }
}, },
toggleCall: function (ev) {
ev.stopPropagation();
converse.emit('onCallButtonClicked', {
connection: converse.connection,
model: this.model
});
},
onChange: function (item, changed) { onChange: function (item, changed) {
if (_.has(item.changed, 'chat_status')) { if (_.has(item.changed, 'chat_status')) {
var chat_status = item.get('chat_status'), var chat_status = item.get('chat_status'),
......
Changelog Changelog
========= =========
Unreleased
----------
* Option to display a call button in the chatbox toolbar, to allow third-party libraries to provide a calling feature. [Aupajo]
0.7.2 (2013-12-18) 0.7.2 (2013-12-18)
------------------ ------------------
......
...@@ -813,6 +813,28 @@ the page with class *toggle-online-users*. ...@@ -813,6 +813,28 @@ the page with class *toggle-online-users*.
If this options is set to true, the controlbox will by default be shown upon If this options is set to true, the controlbox will by default be shown upon
page load. page load.
show_call_button
----------------
Default = ``false``
Enable to display a call button on the chatbox toolbar.
When the call button is pressed, it will emit an event that can be used by a third-party library to initiate a call.
::
converse.on('onCallButtonClicked', function(event, data) {
console.log('Call button was clicked.');
console.log('Strophe connection is', data.connection);
console.log('Bare buddy JID is', data.model.get('jid'));
// ... Third-party library code ...
});
show_only_online_users show_only_online_users
---------------------- ----------------------
......
...@@ -109,7 +109,7 @@ ...@@ -109,7 +109,7 @@
expect(view).toBeDefined(); expect(view).toBeDefined();
var $toolbar = view.$el.find('ul.chat-toolbar'); var $toolbar = view.$el.find('ul.chat-toolbar');
expect($toolbar.length).toBe(1); expect($toolbar.length).toBe(1);
expect($toolbar.children('li').length).toBe(2); expect($toolbar.children('li').length).toBe(3);
}, converse)); }, converse));
it("contains a button for inserting emoticons", $.proxy(function () { it("contains a button for inserting emoticons", $.proxy(function () {
...@@ -195,6 +195,24 @@ ...@@ -195,6 +195,24 @@
}); });
}, converse)); }, converse));
it("contains a button for starting a call", $.proxy(function () {
spyOn(converse, 'emit');
var contact_jid = mock.cur_names[2].replace(' ','.').toLowerCase() + '@localhost';
utils.openChatBoxFor(contact_jid);
var chatbox = this.chatboxes.get(contact_jid);
var view = this.chatboxesview.views[contact_jid];
var $toolbar = view.$el.find('ul.chat-toolbar');
var callButton = $toolbar.find('.toggle-call');
expect(callButton.length).toBe(1);
runs(function () {
callButton.click();
expect(converse.emit).toHaveBeenCalledWith('onCallButtonClicked', jasmine.any(Object));
});
}, converse));
}, converse)); }, converse));
describe("A Chat Message", $.proxy(function () { describe("A Chat Message", $.proxy(function () {
......
...@@ -106,6 +106,7 @@ require([ ...@@ -106,6 +106,7 @@ require([
xhr_user_search: false, xhr_user_search: false,
auto_subscribe: false, auto_subscribe: false,
animate: false, animate: false,
show_call_button: true,
connection: mock.mock_connection, connection: mock.mock_connection,
testing: true testing: true
}, function (converse) { }, function (converse) {
......
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