Comparar commits

...

19 Commits

Autor SHA1 Mensagem Data
sualko 0c5f405503 build v2.0.1 2015-05-23 16:05:53 +02:00
sualko 499804d53b fix login with different username after dirty logout 2015-05-23 16:02:58 +02:00
sualko 49a6782244 remove ie gradient 2015-05-22 17:22:50 +02:00
sualko 2c9efba0bd some webrtc fixes (fix jsxc/jsxc#173)
- improve video icon update
- fix ff support
2015-05-22 17:01:41 +02:00
sualko b73aeafb5c handle browsers without CSPRNG generator (fix #172) 2015-05-22 14:21:58 +02:00
sualko 616085d2a5 fix ajax login after credential failure 2015-05-22 07:07:05 -04:00
sualko 42c7939474 fix login option, add connecting event, fix template 404 2015-05-20 12:30:36 +02:00
sualko 3538a0ad62 improve login box 2015-05-19 14:51:34 +02:00
sualko 6925034cf3 remove broken mitm detection 2015-05-19 13:25:55 +02:00
sualko c242f05afe build v2.0.0 2015-05-08 13:07:02 +02:00
sualko 3b23f20268 fix template variable replacement 2015-05-08 13:04:38 +02:00
sualko 3fba657d40 minor muc style fixes 2015-05-08 12:35:56 +02:00
sualko 3c1ef25e2c update translation 2015-05-08 11:23:16 +02:00
sualko 569ab66016 add missing segment 2015-05-08 11:09:49 +02:00
sualko 84aab421a0 add library credit 2015-05-08 10:56:10 +02:00
sualko 86ad16ef4b fix dependency concatination 2015-05-08 10:21:27 +02:00
sualko 2fe742f169 add missing segment 2015-05-06 15:50:18 +02:00
Klaus ee93f36a4c Merge pull request #157 from anonimal/bugs/beta
Update jsxc*.js <script src= location in ./example
2015-05-01 13:43:42 +02:00
anonimal bdd4236d1a Update jsxc*.js <script src= location in ./example 2015-04-30 21:26:56 +00:00
71 arquivos alterados com 13438 adições e 7159 exclusões
+33
Ver Arquivo
@@ -1,3 +1,36 @@
v2.0.1 / 2015-05-23
===
- improve login box
- fix browsers without CSPRNG generator
- fix ajax login after credential failure
- fix some webrtc issues
- fix login with different username after dirty logout
- remove ie (<11) gradient
- remove broken mitm detection
- fix temporary template 404
- fix login option
- add connecting event
v2.0.0 / 2015-05-08
===
- add multi-user chat (XEP-0045)
- add window resize handle
- add username autocomplete
- add offline state
- add Italian, French, Polish, Portuguese/Brazil
- use user avatar as notification icon
- show notifications if tabs has no focus
- split files into namespaces
- sass improvements
- replace own translation engine with i18next
- fix login from login box
- fix selection of chat messages
- fix video calls
- fix emoticons
- fix duplicated roster items
- fix notification request
- fix logout
v1.1.0a / 2015-02-25
===
- fix css url path
+24 -5
Ver Arquivo
@@ -59,6 +59,25 @@ module.exports = function(grunt) {
}
]
},
libraries: {
src: ['<%= target %>/jsxc.js'],
overwrite: true,
replacements: [{
from: '< $ dep.libraries $ >',
to: function() {
var i, d, libraries = '';
for(i = 0; i < dep.length; i++) {
d = dep[i];
if (typeof d.name === 'string') {
libraries += '<a href="' + d.url + '">' + d.name + '</a> (' + d.license + '), ';
}
}
return libraries.replace(/, $/, '');
}
}]
},
locales: {
src: [ '<%= target %>/lib/translation.js' ],
overwrite: true,
@@ -96,10 +115,10 @@ module.exports = function(grunt) {
src += ';';
}
var data = dep[dep_files.indexOf(filepath)];
var data = dep[dep_files.indexOf('<%= target %>/' + filepath)];
if (data) {
return '/*!\n * Source: ' + filepath + ', license: ' + data.license + ', url: ' + data.url + ' */\n' + src;
return '\n/*!\n * Source: ' + filepath + ', license: ' + data.license + ', url: ' + data.url + '\n */\n' + src;
} else {
return src;
}
@@ -249,13 +268,13 @@ module.exports = function(grunt) {
grunt.registerTask('build', ['jshint', 'clean', 'sass', 'autoprefixer', 'copy', 'merge_data', 'replace:locales', 'concat']);
grunt.registerTask('build:prerelease', 'Build a new pre-release', function(){
grunt.config.set('target', 'build/');
grunt.config.set('target', 'build');
grunt.task.run([ 'search:console', 'build', 'dataUri', 'usebanner', 'replace:version', 'uglify', 'compress' ]);
grunt.task.run([ 'search:console', 'build', 'dataUri', 'usebanner', 'replace:version', 'replace:libraries', 'uglify', 'compress' ]);
});
grunt.registerTask('build:release', 'Build a new release', function(){
grunt.config.set('target', 'build/');
grunt.config.set('target', 'build');
grunt.task.run([ 'search:changelog', 'build:prerelease', 'jsdoc' ]);
});
+117 -10
Ver Arquivo
@@ -397,6 +397,82 @@ div.jsxc_transfer, div.jsxc_transfer.jsxc_disabled:hover {
#jsxc_roster > .jsxc_bottom > div:hover {
color: #fff; }
.jsxc_windowItem.jsxc_groupchat .jsxc_bar .jsxc_avatar, li[data-type="groupchat"] .jsxc_avatar {
text-indent: 999px;
background-image: url("../img/group_white.svg");
background-size: 70% 70% !important;
background-repeat: no-repeat; }
.jsxc_windowItem.jsxc_groupchat .jsxc_fade {
padding-top: 30px; }
.jsxc_windowItem.jsxc_groupchat .jsxc_video {
display: none; }
.jsxc_windowItem.jsxc_groupchat .jsxc_transfer {
display: none; }
.jsxc_windowItem.jsxc_groupchat .jsxc_fingerprints, .jsxc_windowItem.jsxc_groupchat .jsxc_verification, .jsxc_windowItem.jsxc_groupchat .jsxc_transfer {
display: none; }
.jsxc_windowItem.jsxc_groupchat .jsxc_members {
background-image: url("../img/group_grey.svg");
background-size: 90%;
background-repeat: no-repeat;
background-position: center; }
.jsxc_windowItem.jsxc_groupchat .jsxc_members:hover {
background-image: url("../img/group_white.svg"); }
.jsxc_windowItem.jsxc_groupchat .jsxc_chatmessage.jsxc_in {
margin-left: 40px; }
.jsxc_windowItem.jsxc_groupchat .jsxc_chatmessage.jsxc_in .jsxc_avatar {
display: block;
position: absolute;
bottom: 0px;
left: -37px;
background-color: #777; }
.jsxc_windowItem .jsxc_memberlist {
height: 30px;
width: 100%;
background-color: #1a1a1a;
overflow: hidden;
position: absolute;
top: 0px;
-webkit-transition: height 400ms;
transition: height 400ms;
z-index: 100; }
.jsxc_windowItem .jsxc_memberlist ul {
white-space: nowrap;
position: absolute;
background-color: #1a1a1a;
color: gray;
overflow: hidden;
-webkit-transition: left 400ms;
transition: left 400ms;
padding: 0px; }
.jsxc_windowItem .jsxc_memberlist ul > li {
display: inline-block;
white-space: normal; }
.jsxc_windowItem .jsxc_memberlist ul > li:last-child {
margin-right: 2px; }
.jsxc_windowItem .jsxc_memberlist ul > li .jsxc_name {
display: none; }
.jsxc_windowItem .jsxc_memberlist ul > li .jsxc_avatar {
margin-left: 2px;
margin-right: 0px; }
.jsxc_windowItem .jsxc_memberlist.jsxc_expand ul {
white-space: normal; }
.jsxc_windowItem .jsxc_memberlist.jsxc_expand ul > li {
display: block;
width: 100%;
height: 27px;
line-height: 27px; }
.jsxc_windowItem .jsxc_memberlist.jsxc_expand ul > li .jsxc_name {
display: block;
cursor: default; }
.jsxc_windowItem .jsxc_memberlist.jsxc_expand ul > li .jsxc_name:hover {
color: inherit; }
.jsxc_windowItem .jsxc_memberlist.jsxc_expand ul > li .jsxc_avatar {
margin-right: 4px; }
li[data-type="groupchat"] .jsxc_video {
display: none; }
.jsxc_right {
text-align: right; }
@@ -482,6 +558,8 @@ div.jsxc_transfer, div.jsxc_transfer.jsxc_disabled:hover {
background-size: 100%;
margin: 0 3px 0 0;
background-image: url("../img/loading.gif"); }
#jsxc_dialog .jsxc_libraries {
max-width: 300px; }
.jsxc_avatar img {
display: block;
@@ -565,6 +643,7 @@ ul.jsxc_vCard {
background-position: center center; }
@-webkit-keyframes bounce {
0% {
bottom: 0;
-webkit-animation-timing-function: ease-in;
@@ -784,8 +863,7 @@ ul.jsxc_vCard {
height: 15px;
z-index: 100;
background: -webkit-linear-gradient(top, #999999 0, rgba(0, 0, 0, 0) 100%);
background: linear-gradient(to bottom, #999999 0, rgba(0, 0, 0, 0) 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='$window_gradient', endColorstr='#00282323', GradientType=0); }
background: linear-gradient(to bottom, #999999 0, rgba(0, 0, 0, 0) 100%); }
.jsxc_window .jsxc_avatar {
margin-top: 1px; }
.jsxc_window .jsxc_textarea {
@@ -807,14 +885,14 @@ ul.jsxc_vCard {
box-sizing: border-box;
text-align: right; }
.jsxc_window input::-webkit-input-placeholder {
color: #000;
opacity: 0.3; }
color: #000;
opacity: 0.3; }
.jsxc_window input::-moz-placeholder {
color: #000;
opacity: 0.3; }
color: #000;
opacity: 0.3; }
.jsxc_window input:-ms-input-placeholder {
color: #000;
opacity: 0.3; }
color: #000;
opacity: 0.3; }
.jsxc_window input::placeholder {
color: #000;
opacity: 0.3; }
@@ -852,8 +930,7 @@ ul.jsxc_vCard {
height: 15px;
z-index: 100;
background: -webkit-linear-gradient(top, #999999 0, rgba(40, 35, 35, 0) 100%);
background: linear-gradient(to bottom, #999999 0, rgba(40, 35, 35, 0) 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='$window_gradient', endColorstr='#00282323', GradientType=0); }
background: linear-gradient(to bottom, #999999 0, rgba(40, 35, 35, 0) 100%); }
.jsxc_chatmessage {
margin: 3px;
@@ -1047,3 +1124,33 @@ img.jsxc_vCard {
max-height: 200px;
border: 5px solid #fff;
border-radius: 2px; }
.jsxc_alert {
padding: 15px;
margin-bottom: 20px;
border: 1px solid transparent;
border-radius: 4px; }
.jsxc_alert.jsxc_alert-warning {
color: #8a6d3b;
background-color: #fcf8e3;
border-color: #faebcc; }
.jsxc_btn {
width: auto;
min-width: 25px;
padding: 5px;
background-color: rgba(240, 240, 240, 0.9);
font-weight: bold;
color: #555;
border: 1px solid rgba(190, 190, 190, 0.9);
cursor: pointer; }
.jsxc_btn.jsxc_btn-primary {
color: #fff;
background-color: #337ab7;
border-color: #2e6da4; }
.jsxc_btn[disabled], .jsxc_btn[disabled]:hover {
opacity: 0.65;
cursor: not-allowed;
color: #fff;
background-color: #337ab7;
border-color: #2e6da4; }
+4 -3
Ver Arquivo
@@ -105,11 +105,11 @@ div:fullscreen {
height: 100%;
background-color: #000; }
div:-webkit-full-screen.jsxc_localvideo {
border: 1px solid #fff; }
border: 1px solid #fff; }
div:-moz-full-screen.jsxc_localvideo {
border: 1px solid #fff; }
border: 1px solid #fff; }
div:-ms-fullscreen.jsxc_localvideo {
border: 1px solid #fff; }
border: 1px solid #fff; }
div:fullscreen.jsxc_localvideo {
border: 1px solid #fff; }
div.jsxc_video {
@@ -198,6 +198,7 @@ div.jsxc_video {
animation-delay: 0.78s; }
@-webkit-keyframes bubblingG {
0% {
width: 16px;
height: 16px;
+168 -69
Ver Arquivo
@@ -1,5 +1,5 @@
/*!
* jsxc v2.0.0-beta2 - 2015-04-29
* jsxc v2.0.1 - 2015-05-23
*
* Copyright (c) 2015 Klaus Herberth <klaus@jsxc.org> <br>
* Released under the MIT license
@@ -7,7 +7,7 @@
* Please see http://www.jsxc.org/
*
* @author Klaus Herberth <klaus@jsxc.org>
* @version 2.0.0-beta2
* @version 2.0.1
* @license MIT
*/
@@ -25,7 +25,7 @@ var jsxc = null, RTC = null, RTCPeerconnection = null;
*/
jsxc = {
/** Version of jsxc */
version: '2.0.0-beta2',
version: '2.0.1',
/** True if i'm the master */
master: false,
@@ -201,6 +201,12 @@ jsxc = {
$.extend(true, jsxc.options, options);
}
// Check localStorage
if (typeof (localStorage) === 'undefined') {
jsxc.warn("Browser doesn't support localStorage.");
return;
}
/**
* Getter method for options. Saved options will override default one.
*
@@ -248,12 +254,6 @@ jsxc = {
localStorageExpirationTime: 60 * 60 * 24 * 1000,
});
// Check localStorage
if (typeof (localStorage) === 'undefined') {
jsxc.debug("Browser doesn't support localStorage.");
return;
}
if (jsxc.storage.getItem('debug') === true) {
jsxc.options.otr.debug = true;
}
@@ -283,6 +283,10 @@ jsxc = {
// Check if we have to establish a new connection
if (!jsxc.storage.getItem('rid') || !jsxc.storage.getItem('sid') || !jsxc.restore) {
// clean up rid and sid
jsxc.storage.removeItem('rid');
jsxc.storage.removeItem('sid');
// Looking for a login form
if (!jsxc.options.loginForm.form || !(jsxc.el_exists(jsxc.options.loginForm.form) && jsxc.el_exists(jsxc.options.loginForm.jid) && jsxc.el_exists(jsxc.options.loginForm.pass))) {
@@ -364,7 +368,9 @@ jsxc = {
return;
}
jsxc.gui.showWaitAlert($.t('Logging_in'));
if (!jsxc.triggeredFromBox && (jsxc.options.loginForm.onConnecting === 'dialog' || typeof jsxc.options.loginForm.onConnecting === 'undefined')) {
jsxc.gui.showWaitAlert($.t('Logging_in'));
}
var settings = jsxc.options.loadSettings.call(this, username, password);
@@ -374,6 +380,9 @@ jsxc = {
return false;
}
// prevent to modify the original object
settings = $.extend(true, {}, settings);
if (typeof settings.xmpp.username === 'string') {
username = settings.xmpp.username;
}
@@ -602,6 +611,7 @@ jsxc = {
jsxc.gui.roster.add(value);
});
jsxc.gui.roster.loaded = true;
$(document).trigger('cloaded.roster.jsxc');
},
@@ -1148,27 +1158,44 @@ jsxc.gui = {
jsxc.gui.dialog.open(jsxc.gui.template.get('loginBox'));
$('#jsxc_dialog').find('form').submit(function() {
var alert = $('#jsxc_dialog').find('.jsxc_alert');
alert.hide();
$(this).find('input[type=submit]').prop('disabled', true);
$('#jsxc_dialog').find('form').submit(function(ev) {
ev.preventDefault();
$(this).find('button[data-jsxc-loading-text]').trigger('btnloading.jsxc');
jsxc.options.loginForm.form = $(this);
jsxc.options.loginForm.jid = $(this).find('#jsxc_username');
jsxc.options.loginForm.pass = $(this).find('#jsxc_password');
var settings = jsxc.prepareLogin();
jsxc.triggeredFromBox = true;
jsxc.options.loginForm.triggered = false;
var settings = jsxc.prepareLogin();
if (settings === false) {
jsxc.gui.showAuthFail();
onAuthFail();
} else {
$(document).on('authfail.jsxc', onAuthFail);
jsxc.xmpp.login();
}
return false;
});
function onAuthFail() {
alert.show();
jsxc.gui.dialog.resize();
$('#jsxc_dialog').find('button').trigger('btnfinished.jsxc');
$('#jsxc_dialog').find('input').one('keypress', function() {
alert.hide();
jsxc.gui.dialog.resize();
});
}
},
/**
@@ -1994,6 +2021,9 @@ jsxc.gui.roster = {
/** True if roster is initialised */
ready: false,
/** True if all items are loaded */
loaded: false,
/**
* Init the roster skeleton
*
@@ -2397,6 +2427,32 @@ jsxc.gui.dialog = {
$('#cboxClose').hide();
}
$('#jsxc_dialog form').each(function() {
var form = $(this);
form.find('button[data-jsxc-loading-text]').each(function(){
var btn = $(this);
btn.on('btnloading.jsxc', function(){
if(!btn.prop('disabled')) {
btn.prop('disabled', true);
btn.data('jsxc_value', btn.text());
btn.text(btn.attr('data-jsxc-loading-text'));
}
});
btn.on('btnfinished.jsxc', function() {
if(btn.prop('disabled')) {
btn.prop('disabled', false);
btn.text(btn.data('jsxc_value'));
}
});
});
});
jsxc.gui.dialog.resize();
$(document).trigger('complete.dialog.jsxc');
@@ -3076,11 +3132,18 @@ jsxc.gui.template = {
var ret = jsxc.gui.template[name];
if (typeof (ret) === 'string') {
// prevent 404
ret = ret.replace(/\{\{root\}\}/g, ph.root);
// convert to string
ret = $('<div>').append($(ret).i18n()).html();
// replace placeholders
ret = ret.replace(/\{\{([a-zA-Z0-9_\-]+)\}\}/g, function(s, key) {
return (typeof ph[key] === 'string') ? ph[key] : s;
});
return $('<div>').append($(ret).i18n()).html();
return ret;
}
jsxc.debug('Template not available: ' + name);
@@ -3089,7 +3152,7 @@ jsxc.gui.template = {
authenticationDialog: '<h3>Verification</h3>\
<p data-i18n="Authenticating_a_buddy_helps_"></p>\
<div>\
<p data-i18n="How_do_you_want_to_authenticate_your_buddy" style="margin:0px;"></p>\
<p data-i18n="[html]How_do_you_want_to_authenticate_your_buddy" style="margin:0px;"></p>\
<select size="1">\
<option data-i18n="Select_method"></option>\
<option data-i18n="Manual"></option>\
@@ -3212,9 +3275,10 @@ jsxc.gui.template = {
<input type="text" name="username" id="jsxc_username" required="required" value="{{my_node}}"/></p>\
<p><label for="jsxc_password" data-i18n="Password"></label>\
<input type="password" name="password" required="required" id="jsxc_password" /></p>\
<div class="jsxc_alert jsxc_alert-warning" data-i18n="Sorry_we_cant_authentikate_"></div>\
<div class="bottom_submit_section">\
<input type="reset" class="button jsxc_close" name="clear" data-i18n="[value]Cancel"/>\
<input type="submit" class="button creation" name="commit" data-i18n="[value]Connect"/>\
<button type="reset" class="jsxc_btn jsxc_close" name="clear" data-i18n="Cancel"/>\
<button type="submit" class="jsxc_btn jsxc_btn-primary" name="commit" data-i18n="[data-jsxc-loading-text]Connecting...;Connect"/>\
</div>\
</form>',
contactDialog: '<h3 data-i18n="Add_buddy"></h3>\
@@ -3233,7 +3297,7 @@ jsxc.gui.template = {
<p><span data-i18n="You_have_a_request_from"></span><b class="jsxc_their_jid"></b>.</p>\
<p class="jsxc_right"><a href="#" class="button jsxc_deny" data-i18n="Deny"></a> <a href="#" class="button creation jsxc_approve" data-i18n="Approve"></a></p>',
removeDialog: '<h3 data-i18n="Remove_buddy"></h3>\
<p class="jsxc_maxWidth" data-i18n="You_are_about_to_remove_"></p>\
<p class="jsxc_maxWidth" data-i18n="[html]You_are_about_to_remove_"></p>\
<p class="jsxc_right"><a href="#" class="button jsxc_cancel jsxc_close" data-i18n="Cancel"></a> <a href="#" class="button creation" data-i18n="Remove"></a></p>',
waitAlert: '<h3>{{msg}}</h3>\
<p data-i18n="Please_wait"></p>\
@@ -3255,15 +3319,13 @@ jsxc.gui.template = {
pleaseAccept: '<p data-i18n="Please_accept_"></p>',
aboutDialog: '<h3>JavaScript XMPP Chat</h3>\
<p><b>Version: </b>' + jsxc.version + '<br />\
<a href="http://jsxc.org/" target="_blank">www.jsxc.org</a><br />\
<br />\
<i>Released under the MIT license</i><br />\
<br />\
Real-time chat app for {{app_name}} and more.<br />\
Requires an external <a href="https://xmpp.org/xmpp-software/servers/" target="_blank">XMPP server</a>.<br />\
<br />\
<b>Credits: </b> <a href="http://www.beepzoid.com/old-phones/" target="_blank">David English (Ringtone)</a>,\
<a href="http://jsxc.org/" target="_blank">www.jsxc.org</a></p>\
<p><i>Released under the MIT license</i></p>\
<p>Real-time chat app for {{app_name}} and more.<br />\
Requires an external <a href="https://xmpp.org/xmpp-software/servers/" target="_blank">XMPP server</a>.</p>\
<p><b>Credits: </b> <a href="http://www.beepzoid.com/old-phones/" target="_blank">David English (Ringtone)</a>,\
<a href="https://soundcloud.com/freefilmandgamemusic/ping-1?in=freefilmandgamemusic/sets/free-notification-sounds-and" target="_blank">CameronMusic (Ping)</a></p>\
<p class="jsxc_libraries"><b>Libraries: </b><a href="http://strophe.im/strophejs/">strophe.js</a> (multiple), <a href="https://github.com/strophe/strophejs-plugins">strophe.js/muc</a> (MIT), <a href="https://github.com/strophe/strophejs-plugins">strophe.js/disco</a> (MIT), <a href="https://github.com/strophe/strophejs-plugins">strophe.js/caps</a> (MIT), <a href="https://github.com/strophe/strophejs-plugins">strophe.js/vcard</a> (MIT), <a href="https://github.com/ESTOS/strophe.jingle">strophe.jingle</a> (MIT), <a href="https://github.com/neoatlantis/node-salsa20">Salsa20</a> (AGPL3), <a href="www.leemon.com">bigint</a> (public domain), <a href="code.google.com/p/crypto-js">cryptojs</a> (code.google.com/p/crypto-js/wiki/license), <a href="http://git.io/ee">eventemitter</a> (MIT), <a href="https://arlolra.github.io/otr/">otr.js</a> (MPL v2.0), <a href="http://i18next.com/">i18next</a> (MIT)</p>\
<p class="jsxc_right"><a class="button jsxc_debuglog" href="#">Show debug log</a></p>',
vCard: '<h3><span data-i18n="Info_about"></span> <span>{{bid_name}}</span></h3>\
<ul class="jsxc_vCard"></ul>\
@@ -4870,6 +4932,12 @@ jsxc.options = {
return jid;
},
/**
* Action after login was called: dialog [String] Show wait dialog, false [boolean] |
* quiet [String] Do nothing
*/
onConnecting: 'dialog',
/**
* Action after connected: submit [String] Submit form, false [boolean] Do
* nothing, continue [String] Start chat
@@ -4877,7 +4945,7 @@ jsxc.options = {
onConnected: 'submit',
/**
* Action after auth fail: submit [String] Submit form, false [boolean] Do
* Action after auth fail: submit [String] Submit form, false [boolean] | quiet [String] Do
* nothing, ask [String] Show auth fail dialog
*/
onAuthFail: 'submit'
@@ -5226,6 +5294,10 @@ jsxc.otr = {
* @returns {undefined}
*/
toggleTransfer: function(bid) {
if (typeof OTR !== 'function') {
return;
}
if (jsxc.storage.getUserItem('buddy', bid).msgstate === 0) {
jsxc.otr.goEncrypt(bid);
} else {
@@ -5241,7 +5313,9 @@ jsxc.otr = {
*/
goEncrypt: function(bid) {
if (jsxc.master) {
jsxc.otr.objects[bid].sendQueryMsg();
if (jsxc.otr.objects.hasOwnProperty(bid)) {
jsxc.otr.objects[bid].sendQueryMsg();
}
} else {
jsxc.storage.updateUserItem('buddy', bid, 'transferReq', 1);
}
@@ -5256,10 +5330,12 @@ jsxc.otr = {
*/
goPlain: function(bid, cb) {
if (jsxc.master) {
jsxc.otr.objects[bid].endOtr.call(jsxc.otr.objects[bid], cb);
jsxc.otr.objects[bid].init.call(jsxc.otr.objects[bid]);
if (jsxc.otr.objects.hasOwnProperty(bid)) {
jsxc.otr.objects[bid].endOtr.call(jsxc.otr.objects[bid], cb);
jsxc.otr.objects[bid].init.call(jsxc.otr.objects[bid]);
jsxc.otr.backup(bid);
jsxc.otr.backup(bid);
}
} else {
jsxc.storage.updateUserItem('buddy', bid, 'transferReq', 0);
}
@@ -5342,6 +5418,21 @@ jsxc.otr = {
return;
}
if (typeof OTR !== 'function') {
jsxc.warn('OTR support disabled');
OTR = {};
OTR.CONST = {
MSGSTATE_PLAINTEXT : 0,
MSGSTATE_ENCRYPTED : 1,
MSGSTATE_FINISHED : 2
};
jsxc._onMaster();
return;
}
if (jsxc.storage.getUserItem('key') === null) {
var msg = $.t('Creating_your_private_key_');
var worker = null;
@@ -6338,7 +6429,17 @@ jsxc.gui.template.videoWindow = '<div class="jsxc_webrtc">\
}
var win = jsxc.gui.window.get(bid);
var jid = win.data('jid') || jsxc.storage.getUserItem('buddy', bid).jid;
var jid = win.data('jid');
var ls = jsxc.storage.getUserItem('buddy', bid);
if (typeof jid !== 'string') {
if (ls && typeof ls.jid === 'string') {
jid = ls.jid;
} else {
jsxc.debug('[webrtc] Could not update icon, because could not find jid for ' + bid);
return;
}
}
var el = win.find('.jsxc_video').add(jsxc.gui.roster.getItem(bid).find('.jsxc_video'));
@@ -6401,12 +6502,14 @@ jsxc.gui.template.videoWindow = '<div class="jsxc_webrtc">\
* @param status
* @private
*/
onPresence: function(ev, jid) {
onPresence: function(ev, jid, status, presence) {
var self = jsxc.webrtc;
jsxc.debug('webrtc.onpresence', jid);
if ($(presence).find('c[xmlns="' + Strophe.NS.CAPS + '"]').length === 0) {
jsxc.debug('webrtc.onpresence', jid);
self.updateIcon(jsxc.jidToBid(jid));
self.updateIcon(jsxc.jidToBid(jid));
}
},
/**
@@ -6467,7 +6570,13 @@ jsxc.gui.template.videoWindow = '<div class="jsxc_webrtc">\
onCaps: function(event, jid) {
var self = jsxc.webrtc;
self.updateIcon(jsxc.jidToBid(jid));
if (jsxc.gui.roster.loaded) {
self.updateIcon(jsxc.jidToBid(jid));
} else {
$(document).on('cloaded.roster.jsxc', function() {
self.updateIcon(jsxc.jidToBid(jid));
});
}
},
/**
@@ -6708,23 +6817,7 @@ jsxc.gui.template.videoWindow = '<div class="jsxc_webrtc">\
sess.local_fp = SDPUtil.parse_fingerprint(SDPUtil.find_line(localSDP, 'a=fingerprint:')).fingerprint;
sess.remote_fp = SDPUtil.parse_fingerprint(SDPUtil.find_line(remoteSDP, 'a=fingerprint:')).fingerprint;
var ip_regex = "(\\d{1,3}\\.\\d{1,3}.\\d{1,3}\\.\\d{1,3}) \\d+ typ host";
sess.remote_ip = remoteSDP.match(new RegExp(ip_regex))[1];
sess.local_ip = localSDP.match(new RegExp(ip_regex))[1];
var regex = new RegExp(ip_regex, 'g');
var match;
while ((match = regex.exec(remoteSDP)) !== null) {
if (match[1] !== sess.remote_ip) {
alert('!!! WARNING !!!\n\nPossible Man-in-the-middle attack detected!\n\nYou should close the connection.');
return;
}
}
var text = '<p>';
text += '<b>' + $.t('Local_IP') + ': </b>' + sess.local_ip + '<br />';
text += '<b>' + $.t('Remote_IP') + ': </b>' + sess.remote_ip + '<br />';
text += '<b>' + $.t('Local_Fingerprint') + ': </b>' + sess.local_fp + '<br />';
text += '<b>' + $.t('Remote_Fingerprint') + ': </b>' + sess.remote_fp;
text += '</p>';
@@ -7071,7 +7164,7 @@ jsxc.xmpp = {
*/
login: function() {
if (jsxc.xmpp.conn && jsxc.xmpp.conn.connected) {
if (jsxc.xmpp.conn && jsxc.xmpp.conn.authenticated) {
return;
}
@@ -7102,15 +7195,17 @@ jsxc.xmpp = {
var url = jsxc.options.get('xmpp').url;
// Register eventlistener
$(document).on('connected.jsxc', jsxc.xmpp.connected);
$(document).on('attached.jsxc', jsxc.xmpp.attached);
$(document).on('disconnected.jsxc', jsxc.xmpp.disconnected);
$(document).on('ridChange', jsxc.xmpp.onRidChange);
$(document).on('connfail.jsxc', jsxc.xmpp.onConnfail);
$(document).on('authfail.jsxc', jsxc.xmpp.onAuthFail);
if (!(jsxc.xmpp.conn && jsxc.xmpp.conn.connected)) {
// Register eventlistener
$(document).on('connected.jsxc', jsxc.xmpp.connected);
$(document).on('attached.jsxc', jsxc.xmpp.attached);
$(document).on('disconnected.jsxc', jsxc.xmpp.disconnected);
$(document).on('ridChange', jsxc.xmpp.onRidChange);
$(document).on('connfail.jsxc', jsxc.xmpp.onConnfail);
$(document).on('authfail.jsxc', jsxc.xmpp.onAuthFail);
Strophe.addNamespace('RECEIPTS', 'urn:xmpp:receipts');
Strophe.addNamespace('RECEIPTS', 'urn:xmpp:receipts');
}
// Create new connection (no login)
jsxc.xmpp.conn = new Strophe.Connection(url);
@@ -7138,6 +7233,9 @@ jsxc.xmpp = {
jsxc.debug(Object.getOwnPropertyNames(Strophe.Status)[status] + ': ' + condition);
switch (status) {
case Strophe.Status.CONNECTING:
$(document).trigger('connecting.jsxc');
break;
case Strophe.Status.CONNECTED:
jsxc.bid = jsxc.jidToBid(jsxc.xmpp.conn.jid.toLowerCase());
$(document).trigger('connected.jsxc');
@@ -7470,6 +7568,7 @@ jsxc.xmpp = {
* @private
*/
onAuthFail: function() {
if (jsxc.options.loginForm.triggered) {
switch (jsxc.options.loginForm.onAuthFail || 'ask') {
case 'ask':
@@ -7478,12 +7577,11 @@ jsxc.xmpp = {
case 'submit':
jsxc.submitLoginForm();
break;
case 'quiet':
case false:
return;
}
}
if (jsxc.triggeredFromBox) {
jsxc.gui.showAuthFail();
}
},
/**
@@ -7529,6 +7627,7 @@ jsxc.xmpp = {
jsxc.storage.setUserItem('buddylist', buddies);
jsxc.gui.roster.loaded = true;
jsxc.debug('Roster loaded');
$(document).trigger('cloaded.roster.jsxc');
},
+7 -8
Ver Arquivo
Diff do arquivo suprimido porque uma ou mais linhas são muito longas
Diff do arquivo suprimido porque uma ou mais linhas são muito longas
+125 -120
Ver Arquivo
Diff do arquivo suprimido porque uma ou mais linhas são muito longas
+45 -15
Ver Arquivo
Diff do arquivo suprimido porque uma ou mais linhas são muito longas
Diff do arquivo suprimido porque uma ou mais linhas são muito longas
+5 -1
Ver Arquivo
@@ -5,7 +5,11 @@
} else if (typeof module !== 'undefined' && module.exports) {
module.exports = factory(require('crypto'))
} else {
root.BigInt = factory(root.crypto || root.msCrypto)
try {
root.BigInt = factory(root.crypto || root.msCrypto)
} catch(e) {
console.warn(e.message);
}
}
}(this, function (crypto) {
+3 -1
Ver Arquivo
@@ -29,7 +29,9 @@
} else {
root.OTR = {}
root.DSA = {}
factory.call(root)
if (typeof root.BigInt !== 'undefined') {
factory.call(root)
}
}
}(this, function () {
+1 -1
Ver Arquivo
@@ -267,4 +267,4 @@
return 0;
}
});
}(jQuery));
}(jQuery));
+20 -38
Ver Arquivo
@@ -68,7 +68,7 @@ TraceablePeerConnection = function(ice_config, constraints) {
if (self.ondatachannel !== null) {
self.ondatachannel(event);
}
}
};
if (!navigator.mozGetUserMedia) {
this.statsinterval = window.setInterval(function() {
self.peerconnection.getStats(function(stats) {
@@ -99,18 +99,19 @@ TraceablePeerConnection = function(ice_config, constraints) {
}, 1000);
}
};
}
dumpSDP = function(description) {
return 'type: ' + description.type + '\r\n' + description.sdp;
}
};
if (TraceablePeerConnection.prototype.__defineGetter__ !== undefined) {
TraceablePeerConnection.prototype.__defineGetter__('signalingState', function() { return this.peerconnection.signalingState; });
TraceablePeerConnection.prototype.__defineGetter__('iceConnectionState', function() { return this.peerconnection.iceConnectionState; });
TraceablePeerConnection.prototype.__defineGetter__('localDescription', function() { return this.peerconnection.localDescription; });
TraceablePeerConnection.prototype.__defineGetter__('remoteDescription', function() { return this.peerconnection.remoteDescription; });
}
['signalingState', 'iceConnectionState', 'localDescription', 'remoteDescription'].forEach(function (prop) {
Object.defineProperty(TraceablePeerConnection.prototype, prop, {
get: function () {
return this.peerconnection[prop]
}
});
});
TraceablePeerConnection.prototype.addStream = function (stream) {
this.trace('addStream', stream.id);
@@ -125,7 +126,7 @@ TraceablePeerConnection.prototype.removeStream = function (stream) {
TraceablePeerConnection.prototype.createDataChannel = function (label, opts) {
this.trace('createDataChannel', label, opts);
this.peerconnection.createDataChannel(label, opts);
}
};
TraceablePeerConnection.prototype.setLocalDescription = function (description, successCallback, failureCallback) {
var self = this;
@@ -212,21 +213,19 @@ TraceablePeerConnection.prototype.addIceCandidate = function (candidate, success
var self = this;
this.trace('addIceCandidate', JSON.stringify(candidate, null, ' '));
this.peerconnection.addIceCandidate(candidate);
/* maybe later
this.peerconnection.addIceCandidate(candidate,
function () {
self.trace('addIceCandidateOnSuccess');
successCallback();
if (successCallback) successCallback();
},
function (err) {
self.trace('addIceCandidateOnFailure', err);
failureCallback(err);
if (failureCallback) failureCallback(err);
}
);
*/
};
TraceablePeerConnection.prototype.getStats = function(callback, errback) {
TraceablePeerConnection.prototype.getStats = function(callback) {
if (navigator.mozGetUserMedia) {
// ignore for now...
} else {
@@ -237,9 +236,9 @@ TraceablePeerConnection.prototype.getStats = function(callback, errback) {
// mozilla chrome compat layer -- very similar to adapter.js
setupRTC = function (){
var RTC = null;
if (navigator.mozGetUserMedia) {
if (navigator.mozGetUserMedia && mozRTCPeerConnection) {
console.log('This appears to be Firefox');
var version = parseInt(navigator.userAgent.match(/Firefox\/([0-9]+)\./)[1], 10);
var version = navigator.userAgent.match(/Firefox/) ? parseInt(navigator.userAgent.match(/Firefox\/([0-9]+)\./)[1], 10) : 0;
if (version >= 22) {
RTC = {
peerconnection: mozRTCPeerConnection,
@@ -251,10 +250,6 @@ setupRTC = function (){
},
pc_constraints: {}
};
if (!MediaStream.prototype.getVideoTracks)
MediaStream.prototype.getVideoTracks = function () { return []; };
if (!MediaStream.prototype.getAudioTracks)
MediaStream.prototype.getAudioTracks = function () { return []; };
RTCSessionDescription = mozRTCSessionDescription;
RTCIceCandidate = mozRTCIceCandidate;
}
@@ -270,19 +265,6 @@ setupRTC = function (){
// DTLS should now be enabled by default but..
pc_constraints: {'optional': [{'DtlsSrtpKeyAgreement': 'true'}]}
};
if (navigator.userAgent.indexOf('Android') != -1) {
RTC.pc_constraints = {}; // disable DTLS on Android
}
if (!webkitMediaStream.prototype.getVideoTracks) {
webkitMediaStream.prototype.getVideoTracks = function () {
return this.videoTracks;
};
}
if (!webkitMediaStream.prototype.getAudioTracks) {
webkitMediaStream.prototype.getAudioTracks = function () {
return this.audioTracks;
};
}
}
if (RTC === null) {
try { console.log('Browser does not appear to be WebRTC-capable'); } catch (e) { }
@@ -317,23 +299,19 @@ getUserMediaWithConstraints = function(um, resolution, bandwidth, fps) {
case 'fullhd':
constraints.video.mandatory.minWidth = 1920;
constraints.video.mandatory.minHeight = 1080;
constraints.video.mandatory.minAspectRatio = 1.77;
break;
case '720':
case 'hd':
constraints.video.mandatory.minWidth = 1280;
constraints.video.mandatory.minHeight = 720;
constraints.video.mandatory.minAspectRatio = 1.77;
break;
case '360':
constraints.video.mandatory.minWidth = 640;
constraints.video.mandatory.minHeight = 360;
constraints.video.mandatory.minAspectRatio = 1.77;
break;
case '180':
constraints.video.mandatory.minWidth = 320;
constraints.video.mandatory.minHeight = 180;
constraints.video.mandatory.minAspectRatio = 1.77;
break;
// 4:3
case '960':
@@ -358,6 +336,10 @@ getUserMediaWithConstraints = function(um, resolution, bandwidth, fps) {
break;
}
// take what is configured and try not to be more intelligent
if (constraints.video.minWidth) constraints.video.maxWidth = constraints.video.minWidth;
if (constraints.video.minHeight) constraints.video.maxHeight = constraints.video.minHeight;
if (bandwidth) { // doesn't work currently, see webrtc issue 1846
if (!constraints.video) constraints.video = {mandatory: {}};//same behaviour as true
constraints.video.optional = [{bandwidth: bandwidth}];
+2 -14
Ver Arquivo
@@ -44,7 +44,6 @@ Strophe.addConnectionPlugin('jingle', {
to: iq.getAttribute('from'),
id: iq.getAttribute('id')
});
console.log('on jingle ' + action);
var sess = this.sessions[sid];
if ('session-initiate' != action) {
if (sess === null) {
@@ -93,11 +92,6 @@ Strophe.addConnectionPlugin('jingle', {
sess.initiate($(iq).attr('from'), false);
sess.setRemoteDescription($(iq).find('>jingle'), 'offer');
if ($(iq).find('>jingle>muted[xmlns="http://jitsi.org/protocol/meet#startmuted"]').length) {
console.log('got a request to start muted');
sess.startmuted = true;
}
this.sessions[sess.sid] = sess;
this.jid2session[sess.peerjid] = sess;
@@ -112,7 +106,6 @@ Strophe.addConnectionPlugin('jingle', {
$(document).trigger('callaccepted.jingle', [sess.sid]);
break;
case 'session-terminate':
console.log('terminating...');
sess.terminate();
this.terminate(sess.sid);
if ($(iq).find('>jingle>reason').length) {
@@ -194,7 +187,6 @@ Strophe.addConnectionPlugin('jingle', {
var sess = this.jid2session[jid];
if (sess) {
sess.terminate();
console.log('peer went away silently', jid);
delete this.sessions[sess.sid];
delete this.jid2session[jid];
$(document).trigger('callterminated.jingle', [sess.sid, 'gone']);
@@ -232,12 +224,8 @@ Strophe.addConnectionPlugin('jingle', {
break;
case 'turn':
dict.url = 'turn:';
if (el.attr('username')) { // https://code.google.com/p/webrtc/issues/detail?id=1508
if (navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./) && parseInt(navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./)[2], 10) < 28) {
dict.url += el.attr('username') + '@';
} else {
dict.username = el.attr('username'); // only works in M28
}
if (el.attr('username')) {
dict.username = el.attr('username');
}
dict.url += el.attr('host');
if (el.attr('port') && el.attr('port') != '3478') {
+22 -59
Ver Arquivo
@@ -52,7 +52,8 @@ SDP.prototype.removeSessionLines = function(prefix) {
});
this.raw = this.session + this.media.join('');
return lines;
}
};
// remove lines matching prefix from a media section specified by mediaindex
// TODO: non-numeric mediaindex could match mid
SDP.prototype.removeMediaLines = function(mediaindex, prefix) {
@@ -63,7 +64,7 @@ SDP.prototype.removeMediaLines = function(mediaindex, prefix) {
});
this.raw = this.session + this.media.join('');
return lines;
}
};
// add content's to a jingle element
SDP.prototype.toJingle = function (elem, thecreator) {
@@ -104,12 +105,6 @@ SDP.prototype.toJingle = function (elem, thecreator) {
// prefer identifier from a=mid if present
var mid = SDPUtil.parse_mid(SDPUtil.find_line(this.media[i], 'a=mid:'));
elem.attrs({ name: mid });
// old BUNDLE plan, to be removed
if (bundle.indexOf(mid) != -1) {
elem.c('bundle', {xmlns: 'http://estos.de/ns/bundle'}).up();
bundle.splice(bundle.indexOf(mid), 1);
}
}
if (SDPUtil.find_line(this.media[i], 'a=rtpmap:').length) {
elem.c('description',
@@ -165,12 +160,6 @@ SDP.prototype.toJingle = function (elem, thecreator) {
elem.up();
});
elem.up();
// old proprietary mapping, to be removed at some point
tmp = SDPUtil.parse_ssrc(this.media[i]);
tmp.xmlns = 'http://estos.de/ns/ssrc';
tmp.ssrc = ssrc;
elem.c('ssrc', tmp).up(); // ssrc is part of description
}
if (SDPUtil.find_line(this.media[i], 'a=rtcp-mux')) {
@@ -267,7 +256,7 @@ SDP.prototype.TransportToJingle = function (mediaindex, elem) {
}
}
elem.up(); // end of transport
}
};
SDP.prototype.RtcpFbToJingle = function (mediaindex, elem, payloadtype) { // XEP-0293
var lines = SDPUtil.find_lines(this.media[mediaindex], 'a=rtcp-fb:' + payloadtype);
@@ -340,7 +329,6 @@ SDP.prototype.fromJingle = function (jingle) {
// for backward compability, to be removed soon
// assume all contents are in the same bundle group, can be improved upon later
var bundle = $(jingle).find('>content').filter(function (idx, content) {
//elem.c('bundle', {xmlns:'http://estos.de/ns/bundle'});
return $(content).find('>bundle').length > 0;
}).map(function (idx, content) {
return content.getAttribute('name');
@@ -476,17 +464,6 @@ SDP.prototype.jingle2media = function (content) {
media += '\r\n';
});
});
if (tmp.length === 0) {
// fallback to proprietary mapping of a=ssrc lines
tmp = content.find('description>ssrc[xmlns="http://estos.de/ns/ssrc"]');
if (tmp.length) {
media += 'a=ssrc:' + ssrc + ' cname:' + tmp.attr('cname') + '\r\n';
media += 'a=ssrc:' + ssrc + ' msid:' + tmp.attr('msid') + '\r\n';
media += 'a=ssrc:' + ssrc + ' mslabel:' + tmp.attr('mslabel') + '\r\n';
media += 'a=ssrc:' + ssrc + ' label:' + tmp.attr('label') + '\r\n';
}
}
return media;
};
@@ -728,8 +705,6 @@ SDPUtil = {
return needles;
},
candidateToJingle: function (line) {
// a=candidate:2979166662 1 udp 2113937151 192.168.2.100 57698 typ host generation 0
// <candidate component=... foundation=... generation=... id=... ip=... network=... port=... priority=... protocol=... type=.../>
if (line.indexOf('candidate:') === 0) {
line = 'a=' + line;
} else if (line.substring(0, 12) != 'a=candidate:') {
@@ -755,8 +730,7 @@ SDPUtil = {
candidate.port = elems[5];
// elems[6] => "typ"
candidate.type = elems[7];
candidate.generation = '0'; // fippo from jitsi-meet: default, may be overwritten below
candidate.generation = '0';
for (i = 8; i < elems.length; i += 2) {
switch (elems[i]) {
@@ -781,42 +755,31 @@ SDPUtil = {
return candidate;
},
candidateFromJingle: function (cand) {
var line = 'a=candidate:';
line += cand.getAttribute('foundation');
line += ' ';
line += cand.getAttribute('component');
line += ' ';
line += cand.getAttribute('protocol'); //.toUpperCase(); // chrome M23 doesn't like this
line += ' ';
line += cand.getAttribute('priority');
line += ' ';
line += cand.getAttribute('ip');
line += ' ';
line += cand.getAttribute('port');
line += ' ';
line += 'typ';
line += ' ' + cand.getAttribute('type');
line += ' ';
var parts = [
'a=candidate:' + cand.getAttribute('foundation'),
cand.getAttribute('component'),
cand.getAttribute('protocol'),
cand.getAttribute('priority'),
cand.getAttribute('ip'),
cand.getAttribute('port'),
'typ',
cand.getAttribute('type')
];
switch (cand.getAttribute('type')) {
case 'srflx':
case 'prflx':
case 'relay':
if (cand.getAttribute('rel-addr') && cand.getAttribute('rel-port')) {
line += 'raddr';
line += ' ';
line += cand.getAttribute('rel-addr');
line += ' ';
line += 'rport';
line += ' ';
line += cand.getAttribute('rel-port');
line += ' ';
parts.push('raddr');
parts.push(cand.getAttribute('rel-addr'));
parts.push('rport');
parts.push(cand.getAttribute('rel-port'));
}
break;
}
line += 'generation';
line += ' ';
line += cand.getAttribute('generation') || '0';
return line + '\r\n';
parts.push('generation');
parts.push(cand.getAttribute('generation') || '0');
return parts.join(' ') + '\r\n';
}
};
}(jQuery));
@@ -222,11 +222,11 @@ JingleSession.prototype.sendIceCandidate = function (candidate) {
}, 20);
}
this.drip_container.push(event.candidate);
this.drip_container.push(candidate);
return;
} else {
console.log('sending single candidate');
self.sendIceCandidates([event.candidate]);
self.sendIceCandidates([candidate]);
}
}
}
@@ -240,7 +240,7 @@ JingleSession.prototype.sendIceCandidate = function (candidate) {
action: this.peerconnection.localDescription.type == 'offer' ? 'session-initiate' : 'session-accept',
initiator: this.initiator,
sid: this.sid});
if (this.nickname != null) {
if (this.nickname !== null) {
init.c('nick', {xmlns:'http://jabber.org/protocol/nick'}).t(this.nickname).up();
}
if (this.startmuted) {
@@ -288,11 +288,12 @@ JingleSession.prototype.sendIceCandidates = function (candidates) {
sid: this.sid});
for (var mid = 0; mid < this.localSDP.media.length; mid++) {
var cands = candidates.filter(function (el) { return el.sdpMLineIndex == mid; });
var mline = SDPUtil.parse_mline(this.localSDP.media[mid].split('\r\n')[0]);
if (cands.length > 0) {
var ice = SDPUtil.iceparams(this.localSDP.media[mid], this.localSDP.session);
ice.xmlns = 'urn:xmpp:jingle:transports:ice-udp:1';
cand.c('content', {creator: this.initiator == this.me ? 'initiator' : 'responder',
name: cands[0].sdpMid
name: (cands[0].sdpMid? cands[0].sdpMid : mline.media)
}).c('transport', ice);
for (var i = 0; i < cands.length; i++) {
cand.c('candidate', SDPUtil.candidateToJingle(cands[i].candidate)).up();
@@ -357,7 +358,7 @@ JingleSession.prototype.createdOffer = function (sdp) {
action: 'session-initiate',
initiator: this.initiator,
sid: this.sid});
if (this.nickname != null) {
if (this.nickname !== null) {
init.c('nick', {xmlns:'http://jabber.org/protocol/nick'}).t(this.nickname).up();
}
if (this.startmuted) {
Diff do arquivo suprimido porque uma ou mais linhas são muito longas
+19 -3
Ver Arquivo
@@ -1,82 +1,98 @@
[
{
"name": "strophe.js",
"file": "lib/strophe.js",
"license": "multiple",
"url": "http://strophe.im/strophejs/"
},
{
"name": "strophe.js/muc",
"file": "lib/strophe.muc.js",
"license": "MIT",
"url": "https://github.com/strophe/strophejs-plugins"
},
{
"name": "strophe.js/disco",
"file": "lib/strophe.disco.js",
"license": "MIT",
"url": "https://github.com/strophe/strophejs-plugins"
},
{
"name": "strophe.js/caps",
"file": "lib/strophe.caps.js",
"license": "MIT",
"url": "https://github.com/strophe/strophejs-plugins"
},
{
"name": "strophe.js/vcard",
"file": "lib/strophe.vcard.js",
"license": "MIT",
"url": "https://github.com/strophe/strophejs-plugins"
},
{
"name": "strophe.jingle",
"file": "lib/strophe.jingle/strophe.jingle.js",
"license": "MIT",
"url": "https://github.com/ESTOS/strophe.jingle"
},
{
"name": null,
"file": "lib/strophe.jingle/strophe.jingle.session.js",
"license": "MIT",
"url": "https://github.com/ESTOS/strophe.jingle"
},
{
"name": null,
"file": "lib/strophe.jingle/strophe.jingle.sdp.js",
"license": "MIT",
"url": "https://github.com/ESTOS/strophe.jingle"
},
{
"name": null,
"file": "lib/strophe.jingle/strophe.jingle.adapter.js",
"license": "MIT",
"url": "https://github.com/ESTOS/strophe.jingle"
},
{
"name": "Salsa20",
"file": "lib/otr/build/dep/salsa20.js",
"license": "AGPL3",
"url": "https://github.com/neoatlantis/node-salsa20"
},
{
"name": "bigint",
"file": "lib/otr/build/dep/bigint.js",
"license": "public domain",
"url": "www.leemon.com"
},
{
"name": "cryptojs",
"file": "lib/otr/build/dep/crypto.js",
"license": "code.google.com/p/crypto-js/wiki/license",
"url": "code.google.com/p/crypto-js"
},
{
"name": "eventemitter",
"file": "lib/otr/build/dep/eventemitter.js",
"license": "MIT",
"url": "http://git.io/ee"
},
{
"name": "otr.js",
"file": "lib/otr/build/otr.js",
"license": "MPL v2.0",
"url": "https://arlolra.github.io/otr/"
},
{
"name": "i18next",
"file": "lib/i18next/release/i18next-latest.min.js",
"license": "MIT",
"url": "http://i18next.com/"
},
{
"file": "lib/translation.js",
"license": "MIT",
"url": "https://webtranslateit.com/en/projects/10365-JSXC"
"name": null,
"file": "lib/translation.js",
"license": "MIT",
"url": "https://webtranslateit.com/en/projects/10365-JSXC"
}
]
+236
Ver Arquivo
@@ -0,0 +1,236 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>JSDoc: Global</title>
<script src="scripts/prettify/prettify.js"> </script>
<script src="scripts/prettify/lang-css.js"> </script>
<!--[if lt IE 9]>
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css">
<link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css">
</head>
<body>
<div id="main">
<h1 class="page-title">Global</h1>
<section>
<header>
<h2>
</h2>
</header>
<article>
<div class="container-overview">
<dl class="details">
</dl>
</div>
<h3 class="subsection-title">Type Definitions</h3>
<dl>
<dt>
<h4 class="name" id="getUsers-cb"><span class="type-signature"></span>getUsers-cb<span class="signature">(list)</span><span class="type-signature"></span></h4>
</dt>
<dd>
<div class="description">
Processes user list.
</div>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>list</code></td>
<td class="type">
<span class="param-type">object</span>
</td>
<td class="description last">List of users, key: username, value: alias</td>
</tr>
</tbody>
</table>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.options.js.html">jsxc.lib.options.js</a>, <a href="jsxc.lib.options.js.html#line159">line 159</a>
</li></ul></dd>
</dl>
</dd>
</dl>
</article>
</section>
</div>
<nav>
<h2><a href="index.html">Index</a></h2><h3>Namespaces</h3><ul><li><a href="jsxc.html">jsxc</a></li><li><a href="jsxc.gui.html">gui</a></li><li><a href="jsxc.gui.dialog.html">dialog</a></li><li><a href="jsxc.gui.queryActions.html">queryActions</a></li><li><a href="jsxc.gui.roster.html">roster</a></li><li><a href="jsxc.gui.template.html">template</a></li><li><a href="jsxc.gui.window.html">window</a></li><li><a href="jsxc.muc.html">muc</a></li><li><a href="jsxc.notification.html">notification</a></li><li><a href="jsxc.options.html">options</a></li><li><a href="jsxc.otr.html">otr</a></li><li><a href="jsxc.storage.html">storage</a></li><li><a href="jsxc.webrtc.html">webrtc</a></li><li><a href="jsxc.xmpp.html">xmpp</a></li><li><a href="jsxc.xmpp.carbons.html">carbons</a></li></ul><h3><a href="global.html">Global</a></h3>
</nav>
<br clear="both">
<footer>
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Sat May 23 2015 16:03:19 GMT+0200 (CEST)
</footer>
<script> prettyPrint(); </script>
<script src="scripts/linenumber.js"> </script>
</body>
</html>
+2 -2
Ver Arquivo
@@ -48,13 +48,13 @@
</div>
<nav>
<h2><a href="index.html">Index</a></h2><h3>Namespaces</h3><ul><li><a href="jsxc.html">jsxc</a></li><li><a href="jsxc.gui.html">gui</a></li><li><a href="jsxc.gui.dialog.html">dialog</a></li><li><a href="jsxc.gui.queryActions.html">queryActions</a></li><li><a href="jsxc.gui.roster.html">roster</a></li><li><a href="jsxc.gui.template.html">template</a></li><li><a href="jsxc.gui.window.html">window</a></li><li><a href="jsxc.l10n.html">l10n</a></li><li><a href="jsxc.notification.html">notification</a></li><li><a href="jsxc.options.html">options</a></li><li><a href="jsxc.otr.html">otr</a></li><li><a href="jsxc.storage.html">storage</a></li><li><a href="jsxc.webrtc.html">webrtc</a></li><li><a href="jsxc.xmpp.html">xmpp</a></li><li><a href="jsxc.xmpp.carbons.html">carbons</a></li></ul>
<h2><a href="index.html">Index</a></h2><h3>Namespaces</h3><ul><li><a href="jsxc.html">jsxc</a></li><li><a href="jsxc.gui.html">gui</a></li><li><a href="jsxc.gui.dialog.html">dialog</a></li><li><a href="jsxc.gui.queryActions.html">queryActions</a></li><li><a href="jsxc.gui.roster.html">roster</a></li><li><a href="jsxc.gui.template.html">template</a></li><li><a href="jsxc.gui.window.html">window</a></li><li><a href="jsxc.muc.html">muc</a></li><li><a href="jsxc.notification.html">notification</a></li><li><a href="jsxc.options.html">options</a></li><li><a href="jsxc.otr.html">otr</a></li><li><a href="jsxc.storage.html">storage</a></li><li><a href="jsxc.webrtc.html">webrtc</a></li><li><a href="jsxc.xmpp.html">xmpp</a></li><li><a href="jsxc.xmpp.carbons.html">carbons</a></li></ul><h3><a href="global.html">Global</a></h3>
</nav>
<br clear="both">
<footer>
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Wed Feb 25 2015 19:15:13 GMT+0100 (CET)
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Sat May 23 2015 16:03:19 GMT+0200 (CEST)
</footer>
<script> prettyPrint(); </script>
+6 -6
Ver Arquivo
@@ -66,7 +66,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line2384">line 2384</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line1596">line 1596</a>
</li></ul></dd>
@@ -141,7 +141,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line2450">line 2450</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line1688">line 1688</a>
</li></ul></dd>
@@ -361,7 +361,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line2399">line 2399</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line1611">line 1611</a>
</li></ul></dd>
@@ -500,7 +500,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line2460">line 2460</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line1698">line 1698</a>
</li></ul></dd>
@@ -541,13 +541,13 @@
</div>
<nav>
<h2><a href="index.html">Index</a></h2><h3>Namespaces</h3><ul><li><a href="jsxc.html">jsxc</a></li><li><a href="jsxc.gui.html">gui</a></li><li><a href="jsxc.gui.dialog.html">dialog</a></li><li><a href="jsxc.gui.queryActions.html">queryActions</a></li><li><a href="jsxc.gui.roster.html">roster</a></li><li><a href="jsxc.gui.template.html">template</a></li><li><a href="jsxc.gui.window.html">window</a></li><li><a href="jsxc.l10n.html">l10n</a></li><li><a href="jsxc.notification.html">notification</a></li><li><a href="jsxc.options.html">options</a></li><li><a href="jsxc.otr.html">otr</a></li><li><a href="jsxc.storage.html">storage</a></li><li><a href="jsxc.webrtc.html">webrtc</a></li><li><a href="jsxc.xmpp.html">xmpp</a></li><li><a href="jsxc.xmpp.carbons.html">carbons</a></li></ul>
<h2><a href="index.html">Index</a></h2><h3>Namespaces</h3><ul><li><a href="jsxc.html">jsxc</a></li><li><a href="jsxc.gui.html">gui</a></li><li><a href="jsxc.gui.dialog.html">dialog</a></li><li><a href="jsxc.gui.queryActions.html">queryActions</a></li><li><a href="jsxc.gui.roster.html">roster</a></li><li><a href="jsxc.gui.template.html">template</a></li><li><a href="jsxc.gui.window.html">window</a></li><li><a href="jsxc.muc.html">muc</a></li><li><a href="jsxc.notification.html">notification</a></li><li><a href="jsxc.options.html">options</a></li><li><a href="jsxc.otr.html">otr</a></li><li><a href="jsxc.storage.html">storage</a></li><li><a href="jsxc.webrtc.html">webrtc</a></li><li><a href="jsxc.xmpp.html">xmpp</a></li><li><a href="jsxc.xmpp.carbons.html">carbons</a></li></ul><h3><a href="global.html">Global</a></h3>
</nav>
<br clear="both">
<footer>
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Wed Feb 25 2015 19:15:13 GMT+0100 (CET)
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Sat May 23 2015 16:03:19 GMT+0200 (CEST)
</footer>
<script> prettyPrint(); </script>
+32 -32
Ver Arquivo
@@ -66,7 +66,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line893">line 893</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line1">line 1</a>
</li></ul></dd>
@@ -153,7 +153,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line900">line 900</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line8">line 8</a>
</li></ul></dd>
@@ -289,7 +289,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line1867">line 1867</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line1038">line 1038</a>
</li></ul></dd>
@@ -401,7 +401,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line1941">line 1941</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line1112">line 1112</a>
</li></ul></dd>
@@ -518,7 +518,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line1191">line 1191</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line297">line 297</a>
</li></ul></dd>
@@ -609,7 +609,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line942">line 942</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line50">line 50</a>
</li></ul></dd>
@@ -721,7 +721,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line1926">line 1926</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line1097">line 1097</a>
</li></ul></dd>
@@ -833,7 +833,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line1162">line 1162</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line268">line 268</a>
</li></ul></dd>
@@ -902,7 +902,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line1573">line 1573</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line729">line 729</a>
</li></ul></dd>
@@ -1019,7 +1019,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line1521">line 1521</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line677">line 677</a>
</li></ul></dd>
@@ -1154,7 +1154,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line1402">line 1402</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line525">line 525</a>
</li></ul></dd>
@@ -1223,7 +1223,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line1530">line 1530</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line686">line 686</a>
</li></ul></dd>
@@ -1404,7 +1404,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line1554">line 1554</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line710">line 710</a>
</li></ul></dd>
@@ -1551,7 +1551,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line1440">line 1440</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line563">line 563</a>
</li></ul></dd>
@@ -1620,7 +1620,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line1586">line 1586</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line742">line 742</a>
</li></ul></dd>
@@ -1737,7 +1737,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line1283">line 1283</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line406">line 406</a>
</li></ul></dd>
@@ -1806,7 +1806,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line1247">line 1247</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line353">line 353</a>
</li></ul></dd>
@@ -1923,7 +1923,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line1481">line 1481</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line637">line 637</a>
</li></ul></dd>
@@ -2010,7 +2010,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line1827">line 1827</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line983">line 983</a>
</li></ul></dd>
@@ -2127,7 +2127,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line1614">line 1614</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line770">line 770</a>
</li></ul></dd>
@@ -2244,7 +2244,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line1292">line 1292</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line415">line 415</a>
</li></ul></dd>
@@ -2313,7 +2313,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.webrtc.js.html">jsxc.lib.webrtc.js</a>, <a href="jsxc.lib.webrtc.js.html#line835">line 835</a>
<a href="jsxc.lib.webrtc.js.html">jsxc.lib.webrtc.js</a>, <a href="jsxc.lib.webrtc.js.html#line839">line 839</a>
</li></ul></dd>
@@ -2430,7 +2430,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line1509">line 1509</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line665">line 665</a>
</li></ul></dd>
@@ -2517,7 +2517,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line1202">line 1202</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line308">line 308</a>
</li></ul></dd>
@@ -2634,7 +2634,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line990">line 990</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line98">line 98</a>
</li></ul></dd>
@@ -2746,7 +2746,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line1913">line 1913</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line1084">line 1084</a>
</li></ul></dd>
@@ -2863,7 +2863,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line1006">line 1006</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line114">line 114</a>
</li></ul></dd>
@@ -3026,7 +3026,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line1082">line 1082</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line186">line 186</a>
</li></ul></dd>
@@ -3161,7 +3161,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line1889">line 1889</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line1060">line 1060</a>
</li></ul></dd>
@@ -3230,7 +3230,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line1146">line 1146</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line252">line 252</a>
</li></ul></dd>
@@ -3271,13 +3271,13 @@
</div>
<nav>
<h2><a href="index.html">Index</a></h2><h3>Namespaces</h3><ul><li><a href="jsxc.html">jsxc</a></li><li><a href="jsxc.gui.html">gui</a></li><li><a href="jsxc.gui.dialog.html">dialog</a></li><li><a href="jsxc.gui.queryActions.html">queryActions</a></li><li><a href="jsxc.gui.roster.html">roster</a></li><li><a href="jsxc.gui.template.html">template</a></li><li><a href="jsxc.gui.window.html">window</a></li><li><a href="jsxc.l10n.html">l10n</a></li><li><a href="jsxc.notification.html">notification</a></li><li><a href="jsxc.options.html">options</a></li><li><a href="jsxc.otr.html">otr</a></li><li><a href="jsxc.storage.html">storage</a></li><li><a href="jsxc.webrtc.html">webrtc</a></li><li><a href="jsxc.xmpp.html">xmpp</a></li><li><a href="jsxc.xmpp.carbons.html">carbons</a></li></ul>
<h2><a href="index.html">Index</a></h2><h3>Namespaces</h3><ul><li><a href="jsxc.html">jsxc</a></li><li><a href="jsxc.gui.html">gui</a></li><li><a href="jsxc.gui.dialog.html">dialog</a></li><li><a href="jsxc.gui.queryActions.html">queryActions</a></li><li><a href="jsxc.gui.roster.html">roster</a></li><li><a href="jsxc.gui.template.html">template</a></li><li><a href="jsxc.gui.window.html">window</a></li><li><a href="jsxc.muc.html">muc</a></li><li><a href="jsxc.notification.html">notification</a></li><li><a href="jsxc.options.html">options</a></li><li><a href="jsxc.otr.html">otr</a></li><li><a href="jsxc.storage.html">storage</a></li><li><a href="jsxc.webrtc.html">webrtc</a></li><li><a href="jsxc.xmpp.html">xmpp</a></li><li><a href="jsxc.xmpp.carbons.html">carbons</a></li></ul><h3><a href="global.html">Global</a></h3>
</nav>
<br clear="both">
<footer>
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Wed Feb 25 2015 19:15:13 GMT+0100 (CET)
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Sat May 23 2015 16:03:19 GMT+0200 (CEST)
</footer>
<script> prettyPrint(); </script>
+7 -7
Ver Arquivo
@@ -66,7 +66,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line902">line 902</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line10">line 10</a>
</li></ul></dd>
@@ -141,7 +141,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line909">line 909</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line17">line 17</a>
</li></ul></dd>
@@ -210,7 +210,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line918">line 918</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line26">line 26</a>
</li></ul></dd>
@@ -279,7 +279,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line923">line 923</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line31">line 31</a>
</li></ul></dd>
@@ -348,7 +348,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line932">line 932</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line40">line 40</a>
</li></ul></dd>
@@ -389,13 +389,13 @@
</div>
<nav>
<h2><a href="index.html">Index</a></h2><h3>Namespaces</h3><ul><li><a href="jsxc.html">jsxc</a></li><li><a href="jsxc.gui.html">gui</a></li><li><a href="jsxc.gui.dialog.html">dialog</a></li><li><a href="jsxc.gui.queryActions.html">queryActions</a></li><li><a href="jsxc.gui.roster.html">roster</a></li><li><a href="jsxc.gui.template.html">template</a></li><li><a href="jsxc.gui.window.html">window</a></li><li><a href="jsxc.l10n.html">l10n</a></li><li><a href="jsxc.notification.html">notification</a></li><li><a href="jsxc.options.html">options</a></li><li><a href="jsxc.otr.html">otr</a></li><li><a href="jsxc.storage.html">storage</a></li><li><a href="jsxc.webrtc.html">webrtc</a></li><li><a href="jsxc.xmpp.html">xmpp</a></li><li><a href="jsxc.xmpp.carbons.html">carbons</a></li></ul>
<h2><a href="index.html">Index</a></h2><h3>Namespaces</h3><ul><li><a href="jsxc.html">jsxc</a></li><li><a href="jsxc.gui.html">gui</a></li><li><a href="jsxc.gui.dialog.html">dialog</a></li><li><a href="jsxc.gui.queryActions.html">queryActions</a></li><li><a href="jsxc.gui.roster.html">roster</a></li><li><a href="jsxc.gui.template.html">template</a></li><li><a href="jsxc.gui.window.html">window</a></li><li><a href="jsxc.muc.html">muc</a></li><li><a href="jsxc.notification.html">notification</a></li><li><a href="jsxc.options.html">options</a></li><li><a href="jsxc.otr.html">otr</a></li><li><a href="jsxc.storage.html">storage</a></li><li><a href="jsxc.webrtc.html">webrtc</a></li><li><a href="jsxc.xmpp.html">xmpp</a></li><li><a href="jsxc.xmpp.carbons.html">carbons</a></li></ul><h3><a href="global.html">Global</a></h3>
</nav>
<br clear="both">
<footer>
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Wed Feb 25 2015 19:15:13 GMT+0100 (CET)
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Sat May 23 2015 16:03:19 GMT+0200 (CEST)
</footer>
<script> prettyPrint(); </script>
+126 -14
Ver Arquivo
@@ -66,7 +66,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line2019">line 2019</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line1214">line 1214</a>
</li></ul></dd>
@@ -93,6 +93,118 @@
<h3 class="subsection-title">Members</h3>
<dl>
<dt>
<h4 class="name" id="loaded"><span class="type-signature">&lt;static> </span>loaded<span class="type-signature"></span></h4>
</dt>
<dd>
<div class="description">
True if all items are loaded
</div>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line1225">line 1225</a>
</li></ul></dd>
</dl>
</dd>
<dt>
<h4 class="name" id="ready"><span class="type-signature">&lt;static> </span>ready<span class="type-signature"></span></h4>
</dt>
<dd>
<div class="description">
True if roster is initialised
</div>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line1222">line 1222</a>
</li></ul></dd>
</dl>
</dd>
</dl>
<h3 class="subsection-title">Methods</h3>
@@ -212,7 +324,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line2309">line 2309</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line1516">line 1516</a>
</li></ul></dd>
@@ -347,7 +459,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line2133">line 2133</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line1340">line 1340</a>
</li></ul></dd>
@@ -416,7 +528,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line2370">line 2370</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line1582">line 1582</a>
</li></ul></dd>
@@ -485,7 +597,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line2032">line 2032</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line1233">line 1233</a>
</li></ul></dd>
@@ -644,7 +756,7 @@ alphabetical of the name
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line2196">line 2196</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line1403">line 1403</a>
</li></ul></dd>
@@ -731,7 +843,7 @@ alphabetical of the name
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line2357">line 2357</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line1567">line 1567</a>
</li></ul></dd>
@@ -848,7 +960,7 @@ alphabetical of the name
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line2248">line 2248</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line1455">line 1455</a>
</li></ul></dd>
@@ -965,7 +1077,7 @@ alphabetical of the name
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line2239">line 2239</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line1446">line 1446</a>
</li></ul></dd>
@@ -1104,7 +1216,7 @@ alphabetical of the name
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line2269">line 2269</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line1476">line 1476</a>
</li></ul></dd>
@@ -1239,7 +1351,7 @@ alphabetical of the name
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line2229">line 2229</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line1436">line 1436</a>
</li></ul></dd>
@@ -1374,7 +1486,7 @@ alphabetical of the name
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line2332">line 2332</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line1542">line 1542</a>
</li></ul></dd>
@@ -1415,13 +1527,13 @@ alphabetical of the name
</div>
<nav>
<h2><a href="index.html">Index</a></h2><h3>Namespaces</h3><ul><li><a href="jsxc.html">jsxc</a></li><li><a href="jsxc.gui.html">gui</a></li><li><a href="jsxc.gui.dialog.html">dialog</a></li><li><a href="jsxc.gui.queryActions.html">queryActions</a></li><li><a href="jsxc.gui.roster.html">roster</a></li><li><a href="jsxc.gui.template.html">template</a></li><li><a href="jsxc.gui.window.html">window</a></li><li><a href="jsxc.l10n.html">l10n</a></li><li><a href="jsxc.notification.html">notification</a></li><li><a href="jsxc.options.html">options</a></li><li><a href="jsxc.otr.html">otr</a></li><li><a href="jsxc.storage.html">storage</a></li><li><a href="jsxc.webrtc.html">webrtc</a></li><li><a href="jsxc.xmpp.html">xmpp</a></li><li><a href="jsxc.xmpp.carbons.html">carbons</a></li></ul>
<h2><a href="index.html">Index</a></h2><h3>Namespaces</h3><ul><li><a href="jsxc.html">jsxc</a></li><li><a href="jsxc.gui.html">gui</a></li><li><a href="jsxc.gui.dialog.html">dialog</a></li><li><a href="jsxc.gui.queryActions.html">queryActions</a></li><li><a href="jsxc.gui.roster.html">roster</a></li><li><a href="jsxc.gui.template.html">template</a></li><li><a href="jsxc.gui.window.html">window</a></li><li><a href="jsxc.muc.html">muc</a></li><li><a href="jsxc.notification.html">notification</a></li><li><a href="jsxc.options.html">options</a></li><li><a href="jsxc.otr.html">otr</a></li><li><a href="jsxc.storage.html">storage</a></li><li><a href="jsxc.webrtc.html">webrtc</a></li><li><a href="jsxc.xmpp.html">xmpp</a></li><li><a href="jsxc.xmpp.carbons.html">carbons</a></li></ul><h3><a href="global.html">Global</a></h3>
</nav>
<br clear="both">
<footer>
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Wed Feb 25 2015 19:15:13 GMT+0100 (CET)
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Sat May 23 2015 16:03:19 GMT+0200 (CEST)
</footer>
<script> prettyPrint(); </script>
+3 -3
Ver Arquivo
@@ -66,7 +66,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line3001">line 3001</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line2288">line 2288</a>
</li></ul></dd>
@@ -109,13 +109,13 @@
</div>
<nav>
<h2><a href="index.html">Index</a></h2><h3>Namespaces</h3><ul><li><a href="jsxc.html">jsxc</a></li><li><a href="jsxc.gui.html">gui</a></li><li><a href="jsxc.gui.dialog.html">dialog</a></li><li><a href="jsxc.gui.queryActions.html">queryActions</a></li><li><a href="jsxc.gui.roster.html">roster</a></li><li><a href="jsxc.gui.template.html">template</a></li><li><a href="jsxc.gui.window.html">window</a></li><li><a href="jsxc.l10n.html">l10n</a></li><li><a href="jsxc.notification.html">notification</a></li><li><a href="jsxc.options.html">options</a></li><li><a href="jsxc.otr.html">otr</a></li><li><a href="jsxc.storage.html">storage</a></li><li><a href="jsxc.webrtc.html">webrtc</a></li><li><a href="jsxc.xmpp.html">xmpp</a></li><li><a href="jsxc.xmpp.carbons.html">carbons</a></li></ul>
<h2><a href="index.html">Index</a></h2><h3>Namespaces</h3><ul><li><a href="jsxc.html">jsxc</a></li><li><a href="jsxc.gui.html">gui</a></li><li><a href="jsxc.gui.dialog.html">dialog</a></li><li><a href="jsxc.gui.queryActions.html">queryActions</a></li><li><a href="jsxc.gui.roster.html">roster</a></li><li><a href="jsxc.gui.template.html">template</a></li><li><a href="jsxc.gui.window.html">window</a></li><li><a href="jsxc.muc.html">muc</a></li><li><a href="jsxc.notification.html">notification</a></li><li><a href="jsxc.options.html">options</a></li><li><a href="jsxc.otr.html">otr</a></li><li><a href="jsxc.storage.html">storage</a></li><li><a href="jsxc.webrtc.html">webrtc</a></li><li><a href="jsxc.xmpp.html">xmpp</a></li><li><a href="jsxc.xmpp.carbons.html">carbons</a></li></ul><h3><a href="global.html">Global</a></h3>
</nav>
<br clear="both">
<footer>
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Wed Feb 25 2015 19:15:13 GMT+0100 (CET)
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Sat May 23 2015 16:03:19 GMT+0200 (CEST)
</footer>
<script> prettyPrint(); </script>
+120 -23
Ver Arquivo
@@ -66,7 +66,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line2465">line 2465</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line1710">line 1710</a>
</li></ul></dd>
@@ -189,7 +189,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line2701">line 2701</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line1952">line 1952</a>
</li></ul></dd>
@@ -306,7 +306,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line2781">line 2781</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line2032">line 2032</a>
</li></ul></dd>
@@ -470,7 +470,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line2882">line 2882</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line2136">line 2136</a>
</li></ul></dd>
@@ -587,7 +587,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line2749">line 2749</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line2000">line 2000</a>
</li></ul></dd>
@@ -722,7 +722,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line2995">line 2995</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line2282">line 2282</a>
</li></ul></dd>
@@ -857,7 +857,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line2676">line 2676</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line1927">line 1927</a>
</li></ul></dd>
@@ -974,7 +974,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line2632">line 2632</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line1883">line 1883</a>
</li></ul></dd>
@@ -1113,7 +1113,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line2770">line 2770</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line2021">line 2021</a>
</li></ul></dd>
@@ -1230,7 +1230,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line2792">line 2792</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line2043">line 2043</a>
</li></ul></dd>
@@ -1347,7 +1347,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line2478">line 2478</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line1723">line 1723</a>
</li></ul></dd>
@@ -1405,8 +1405,8 @@
<div class="description">
Open a window, related to the bid. If the window doesn't exist, it will
be created.
Open a window, related to the bid. If the window doesn't exist, it will be
created.
</div>
@@ -1487,7 +1487,7 @@ be created.
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line2643">line 2643</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line1894">line 1894</a>
</li></ul></dd>
@@ -1537,7 +1537,7 @@ be created.
<dt>
<h4 class="name" id="postMessage"><span class="type-signature">&lt;static> </span>postMessage<span class="signature">(bid, direction, msg, encrypted, forwarded, stamp)</span><span class="type-signature"></span></h4>
<h4 class="name" id="postMessage"><span class="type-signature">&lt;static> </span>postMessage<span class="signature">(bid, direction, msg, encrypted, forwarded, stamp, sender)</span><span class="type-signature"></span></h4>
</dt>
@@ -1715,6 +1715,29 @@ be created.
</tr>
<tr>
<td class="name"><code>sender</code></td>
<td class="type">
<span class="param-type">object</span>
</td>
<td class="description last">Information about sender</td>
</tr>
</tbody>
</table>
@@ -1723,6 +1746,80 @@ be created.
<dl class="details">
<h5 class="subsection-title">Properties:</h5>
<dl>
<table class="props">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>sender.jid</code></td>
<td class="type">
<span class="param-type">string</span>
</td>
<td class="description last">Sender Jid</td>
</tr>
<tr>
<td class="name"><code>sender.name</code></td>
<td class="type">
<span class="param-type">string</span>
</td>
<td class="description last">Sender name or nickname</td>
</tr>
</tbody>
</table></dl>
@@ -1742,7 +1839,7 @@ be created.
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line2831">line 2831</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line2085">line 2085</a>
</li></ul></dd>
@@ -1859,7 +1956,7 @@ be created.
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line2980">line 2980</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line2267">line 2267</a>
</li></ul></dd>
@@ -1994,7 +2091,7 @@ be created.
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line2807">line 2807</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line2058">line 2058</a>
</li></ul></dd>
@@ -2134,7 +2231,7 @@ be created.
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line2970">line 2970</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line2257">line 2257</a>
</li></ul></dd>
@@ -2269,7 +2366,7 @@ be created.
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line2736">line 2736</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line1987">line 1987</a>
</li></ul></dd>
@@ -2386,7 +2483,7 @@ be created.
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line2714">line 2714</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line1965">line 1965</a>
</li></ul></dd>
@@ -2427,13 +2524,13 @@ be created.
</div>
<nav>
<h2><a href="index.html">Index</a></h2><h3>Namespaces</h3><ul><li><a href="jsxc.html">jsxc</a></li><li><a href="jsxc.gui.html">gui</a></li><li><a href="jsxc.gui.dialog.html">dialog</a></li><li><a href="jsxc.gui.queryActions.html">queryActions</a></li><li><a href="jsxc.gui.roster.html">roster</a></li><li><a href="jsxc.gui.template.html">template</a></li><li><a href="jsxc.gui.window.html">window</a></li><li><a href="jsxc.l10n.html">l10n</a></li><li><a href="jsxc.notification.html">notification</a></li><li><a href="jsxc.options.html">options</a></li><li><a href="jsxc.otr.html">otr</a></li><li><a href="jsxc.storage.html">storage</a></li><li><a href="jsxc.webrtc.html">webrtc</a></li><li><a href="jsxc.xmpp.html">xmpp</a></li><li><a href="jsxc.xmpp.carbons.html">carbons</a></li></ul>
<h2><a href="index.html">Index</a></h2><h3>Namespaces</h3><ul><li><a href="jsxc.html">jsxc</a></li><li><a href="jsxc.gui.html">gui</a></li><li><a href="jsxc.gui.dialog.html">dialog</a></li><li><a href="jsxc.gui.queryActions.html">queryActions</a></li><li><a href="jsxc.gui.roster.html">roster</a></li><li><a href="jsxc.gui.template.html">template</a></li><li><a href="jsxc.gui.window.html">window</a></li><li><a href="jsxc.muc.html">muc</a></li><li><a href="jsxc.notification.html">notification</a></li><li><a href="jsxc.options.html">options</a></li><li><a href="jsxc.otr.html">otr</a></li><li><a href="jsxc.storage.html">storage</a></li><li><a href="jsxc.webrtc.html">webrtc</a></li><li><a href="jsxc.xmpp.html">xmpp</a></li><li><a href="jsxc.xmpp.carbons.html">carbons</a></li></ul><h3><a href="global.html">Global</a></h3>
</nav>
<br clear="both">
<footer>
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Wed Feb 25 2015 19:15:14 GMT+0100 (CET)
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Sat May 23 2015 16:03:19 GMT+0200 (CEST)
</footer>
<script> prettyPrint(); </script>
+279 -188
Ver Arquivo
@@ -64,7 +64,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line6">line 6</a>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line1">line 1</a>
</li></ul></dd>
@@ -95,7 +95,7 @@
<dt><a href="namespaces.html#jsxc.gui"><a href="jsxc.gui.html">gui</a></a></dt>
<dd></dd>
<dt><a href="namespaces.html#jsxc.l10n"><a href="jsxc.l10n.html">l10n</a></a></dt>
<dt><a href="namespaces.html#jsxc.muc"><a href="jsxc.muc.html">muc</a></a></dt>
<dd></dd>
<dt><a href="namespaces.html#jsxc.notification"><a href="jsxc.notification.html">notification</a></a></dt>
@@ -160,7 +160,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line64">line 64</a>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line59">line 59</a>
</li></ul></dd>
@@ -214,7 +214,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line67">line 67</a>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line62">line 62</a>
</li></ul></dd>
@@ -268,7 +268,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line34">line 34</a>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line29">line 29</a>
</li></ul></dd>
@@ -322,7 +322,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line174">line 174</a>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line169">line 169</a>
</li></ul></dd>
@@ -376,7 +376,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line52">line 52</a>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line47">line 47</a>
</li></ul></dd>
@@ -430,7 +430,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line16">line 16</a>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line11">line 11</a>
</li></ul></dd>
@@ -484,7 +484,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line5688">line 5688</a>
<a href="jsxc.lib.notice.js.html">jsxc.lib.notice.js</a>, <a href="jsxc.lib.notice.js.html#line7">line 7</a>
</li></ul></dd>
@@ -538,7 +538,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line37">line 37</a>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line32">line 32</a>
</li></ul></dd>
@@ -592,7 +592,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line40">line 40</a>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line35">line 35</a>
</li></ul></dd>
@@ -646,7 +646,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line19">line 19</a>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line14">line 14</a>
</li></ul></dd>
@@ -701,7 +701,7 @@ workaround) 0: conform, 1: not conform, 2: not shure
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line58">line 58</a>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line53">line 53</a>
</li></ul></dd>
@@ -755,7 +755,7 @@ workaround) 0: conform, 1: not conform, 2: not shure
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line22">line 22</a>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line17">line 17</a>
</li></ul></dd>
@@ -809,7 +809,7 @@ workaround) 0: conform, 1: not conform, 2: not shure
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line25">line 25</a>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line20">line 20</a>
</li></ul></dd>
@@ -863,7 +863,7 @@ workaround) 0: conform, 1: not conform, 2: not shure
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line28">line 28</a>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line23">line 23</a>
</li></ul></dd>
@@ -917,7 +917,7 @@ workaround) 0: conform, 1: not conform, 2: not shure
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line31">line 31</a>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line26">line 26</a>
</li></ul></dd>
@@ -971,7 +971,7 @@ workaround) 0: conform, 1: not conform, 2: not shure
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line61">line 61</a>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line56">line 56</a>
</li></ul></dd>
@@ -1025,7 +1025,7 @@ workaround) 0: conform, 1: not conform, 2: not shure
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line43">line 43</a>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line38">line 38</a>
</li></ul></dd>
@@ -1079,7 +1079,7 @@ workaround) 0: conform, 1: not conform, 2: not shure
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line46">line 46</a>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line41">line 41</a>
</li></ul></dd>
@@ -1133,7 +1133,7 @@ workaround) 0: conform, 1: not conform, 2: not shure
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line49">line 49</a>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line44">line 44</a>
</li></ul></dd>
@@ -1187,7 +1187,7 @@ workaround) 0: conform, 1: not conform, 2: not shure
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line13">line 13</a>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line8">line 8</a>
</li></ul></dd>
@@ -1252,7 +1252,7 @@ workaround) 0: conform, 1: not conform, 2: not shure
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line430">line 430</a>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line444">line 444</a>
</li></ul></dd>
@@ -1321,7 +1321,7 @@ workaround) 0: conform, 1: not conform, 2: not shure
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line474">line 474</a>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line489">line 489</a>
</li></ul></dd>
@@ -1484,7 +1484,7 @@ workaround) 0: conform, 1: not conform, 2: not shure
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line121">line 121</a>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line116">line 116</a>
</li></ul></dd>
@@ -1601,7 +1601,7 @@ workaround) 0: conform, 1: not conform, 2: not shure
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line532">line 532</a>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line547">line 547</a>
</li></ul></dd>
@@ -1759,7 +1759,7 @@ workaround) 0: conform, 1: not conform, 2: not shure
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line169">line 169</a>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line164">line 164</a>
</li></ul></dd>
@@ -1828,7 +1828,7 @@ workaround) 0: conform, 1: not conform, 2: not shure
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line634">line 634</a>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line650">line 650</a>
</li></ul></dd>
@@ -1968,7 +1968,7 @@ workaround) 0: conform, 1: not conform, 2: not shure
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line726">line 726</a>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line745">line 745</a>
</li></ul></dd>
@@ -2095,7 +2095,7 @@ workaround) 0: conform, 1: not conform, 2: not shure
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line94">line 94</a>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line89">line 89</a>
</li></ul></dd>
@@ -2128,6 +2128,236 @@ workaround) 0: conform, 1: not conform, 2: not shure
</dd>
<dt>
<h4 class="name" id="hasFocus"><span class="type-signature">&lt;static> </span>hasFocus<span class="signature">()</span><span class="type-signature"> &rarr; {boolean}</span></h4>
</dt>
<dd>
<div class="description">
Checks if tab has focus.
</div>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line721">line 721</a>
</li></ul></dd>
</dl>
<h5>Returns:</h5>
<div class="param-desc">
True if tabs has focus
</div>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type">boolean</span>
</dd>
</dl>
</dd>
<dt>
<h4 class="name" id="hashStr"><span class="type-signature">&lt;static> </span>hashStr<span class="signature">(str)</span><span class="type-signature"> &rarr; {integer}</span></h4>
</dt>
<dd>
<div class="description">
Hash string into 32-bit signed integer.
</div>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>str</code></td>
<td class="type">
<span class="param-type">string</span>
</td>
<td class="description last">input string</td>
</tr>
</tbody>
</table>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line765">line 765</a>
</li></ul></dd>
</dl>
<h5>Returns:</h5>
<div class="param-desc">
32-bit signed integer
</div>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type">integer</span>
</dd>
</dl>
</dd>
@@ -2222,7 +2452,7 @@ workaround) 0: conform, 1: not conform, 2: not shure
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line182">line 182</a>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line177">line 177</a>
</li></ul></dd>
@@ -2291,7 +2521,7 @@ workaround) 0: conform, 1: not conform, 2: not shure
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line677">line 677</a>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line693">line 693</a>
</li></ul></dd>
@@ -2425,7 +2655,7 @@ workaround) 0: conform, 1: not conform, 2: not shure
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line557">line 557</a>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line572">line 572</a>
</li></ul></dd>
@@ -2552,7 +2782,7 @@ workaround) 0: conform, 1: not conform, 2: not shure
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line542">line 542</a>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line557">line 557</a>
</li></ul></dd>
@@ -2643,7 +2873,7 @@ workaround) 0: conform, 1: not conform, 2: not shure
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line491">line 491</a>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line506">line 506</a>
</li></ul></dd>
@@ -2713,7 +2943,7 @@ normal signal
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line503">line 503</a>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line518">line 518</a>
</li></ul></dd>
@@ -2782,7 +3012,7 @@ normal signal
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line404">line 404</a>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line418">line 418</a>
</li></ul></dd>
@@ -2851,7 +3081,7 @@ normal signal
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line389">line 389</a>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line403">line 403</a>
</li></ul></dd>
@@ -2920,7 +3150,7 @@ normal signal
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line333">line 333</a>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line342">line 342</a>
</li></ul></dd>
@@ -3047,7 +3277,7 @@ normal signal
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line522">line 522</a>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line537">line 537</a>
</li></ul></dd>
@@ -3181,7 +3411,7 @@ normal signal
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line646">line 646</a>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line662">line 662</a>
</li></ul></dd>
@@ -3260,7 +3490,7 @@ normal signal
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line564">line 564</a>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line579">line 579</a>
</li></ul></dd>
@@ -3329,7 +3559,7 @@ normal signal
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line585">line 585</a>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line601">line 601</a>
</li></ul></dd>
@@ -3398,7 +3628,7 @@ normal signal
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line484">line 484</a>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line499">line 499</a>
</li></ul></dd>
@@ -3467,7 +3697,7 @@ normal signal
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line615">line 615</a>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line631">line 631</a>
</li></ul></dd>
@@ -3607,7 +3837,7 @@ normal signal
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line657">line 657</a>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line673">line 673</a>
</li></ul></dd>
@@ -3652,145 +3882,6 @@ normal signal
</dd>
<dt>
<h4 class="name" id="translate"><span class="type-signature">&lt;static> </span>translate<span class="signature">(text)</span><span class="type-signature"> &rarr; {String}</span></h4>
</dt>
<dd>
<div class="description">
Replace %%tokens%% with correct translation.
</div>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>text</code></td>
<td class="type">
<span class="param-type">String</span>
</td>
<td class="description last">Given text</td>
</tr>
</tbody>
</table>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line706">line 706</a>
</li></ul></dd>
</dl>
<h5>Returns:</h5>
<div class="param-desc">
Translated string
</div>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type">String</span>
</dd>
</dl>
</dd>
@@ -3908,7 +3999,7 @@ normal signal
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line158">line 158</a>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line153">line 153</a>
</li></ul></dd>
@@ -3949,13 +4040,13 @@ normal signal
</div>
<nav>
<h2><a href="index.html">Index</a></h2><h3>Namespaces</h3><ul><li><a href="jsxc.html">jsxc</a></li><li><a href="jsxc.gui.html">gui</a></li><li><a href="jsxc.gui.dialog.html">dialog</a></li><li><a href="jsxc.gui.queryActions.html">queryActions</a></li><li><a href="jsxc.gui.roster.html">roster</a></li><li><a href="jsxc.gui.template.html">template</a></li><li><a href="jsxc.gui.window.html">window</a></li><li><a href="jsxc.l10n.html">l10n</a></li><li><a href="jsxc.notification.html">notification</a></li><li><a href="jsxc.options.html">options</a></li><li><a href="jsxc.otr.html">otr</a></li><li><a href="jsxc.storage.html">storage</a></li><li><a href="jsxc.webrtc.html">webrtc</a></li><li><a href="jsxc.xmpp.html">xmpp</a></li><li><a href="jsxc.xmpp.carbons.html">carbons</a></li></ul>
<h2><a href="index.html">Index</a></h2><h3>Namespaces</h3><ul><li><a href="jsxc.html">jsxc</a></li><li><a href="jsxc.gui.html">gui</a></li><li><a href="jsxc.gui.dialog.html">dialog</a></li><li><a href="jsxc.gui.queryActions.html">queryActions</a></li><li><a href="jsxc.gui.roster.html">roster</a></li><li><a href="jsxc.gui.template.html">template</a></li><li><a href="jsxc.gui.window.html">window</a></li><li><a href="jsxc.muc.html">muc</a></li><li><a href="jsxc.notification.html">notification</a></li><li><a href="jsxc.options.html">options</a></li><li><a href="jsxc.otr.html">otr</a></li><li><a href="jsxc.storage.html">storage</a></li><li><a href="jsxc.webrtc.html">webrtc</a></li><li><a href="jsxc.xmpp.html">xmpp</a></li><li><a href="jsxc.xmpp.carbons.html">carbons</a></li></ul><h3><a href="global.html">Global</a></h3>
</nav>
<br clear="both">
<footer>
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Wed Feb 25 2015 19:15:13 GMT+0100 (CET)
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Sat May 23 2015 16:03:19 GMT+0200 (CEST)
</footer>
<script> prettyPrint(); </script>
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+678 -6129
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+166
Ver Arquivo
@@ -0,0 +1,166 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>JSDoc: Source: jsxc.lib.notice.js</title>
<script src="scripts/prettify/prettify.js"> </script>
<script src="scripts/prettify/lang-css.js"> </script>
<!--[if lt IE 9]>
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css">
<link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css">
</head>
<body>
<div id="main">
<h1 class="page-title">Source: jsxc.lib.notice.js</h1>
<section>
<article>
<pre class="prettyprint source"><code>/**
* This namespace handle the notice system.
*
* @namspace jsxc.notice
* @memberOf jsxc
*/
jsxc.notice = {
/** Number of notices. */
_num: 0,
/**
* Loads the saved notices.
*
* @memberOf jsxc.notice
*/
load: function() {
// reset list
$('#jsxc_notice ul li').remove();
$('#jsxc_notice > span').text('');
jsxc.notice._num = 0;
var saved = jsxc.storage.getUserItem('notices') || [];
var key = null;
for (key in saved) {
if (saved.hasOwnProperty(key)) {
var val = saved[key];
jsxc.notice.add(val.msg, val.description, val.fnName, val.fnParams, key);
}
}
},
/**
* Add a new notice to the stack;
*
* @memberOf jsxc.notice
* @param msg Header message
* @param description Notice description
* @param fnName Function name to be called if you open the notice
* @param fnParams Array of params for function
* @param id Notice id
*/
add: function(msg, description, fnName, fnParams, id) {
var nid = id || Date.now();
var list = $('#jsxc_notice ul');
var notice = $('&lt;li/>');
notice.click(function() {
jsxc.notice.remove(nid);
jsxc.exec(fnName, fnParams);
return false;
});
notice.text(msg);
notice.attr('title', description || '');
notice.attr('data-nid', nid);
list.append(notice);
$('#jsxc_notice > span').text(++jsxc.notice._num);
if (!id) {
var saved = jsxc.storage.getUserItem('notices') || {};
saved[nid] = {
msg: msg,
description: description,
fnName: fnName,
fnParams: fnParams
};
jsxc.storage.setUserItem('notices', saved);
jsxc.notification.notify(msg, description || '', null, true, jsxc.CONST.SOUNDS.NOTICE);
}
},
/**
* Removes notice from stack
*
* @memberOf jsxc.notice
* @param nid The notice id
*/
remove: function(nid) {
var el = $('#jsxc_notice li[data-nid=' + nid + ']');
el.remove();
$('#jsxc_notice > span').text(--jsxc.notice._num || '');
var s = jsxc.storage.getUserItem('notices');
delete s[nid];
jsxc.storage.setUserItem('notices', s);
},
/**
* Check if there is already a notice for the given function name.
*
* @memberOf jsxc.notice
* @param {string} fnName Function name
* @returns {boolean} True if there is >0 functions with the given name
*/
has: function(fnName) {
var saved = jsxc.storage.getUserItem('notices') || [];
var has = false;
$.each(saved, function(index, val){
if (val.fnName === fnName) {
has = true;
return false;
}
});
return has;
}
};
</code></pre>
</article>
</section>
</div>
<nav>
<h2><a href="index.html">Index</a></h2><h3>Namespaces</h3><ul><li><a href="jsxc.html">jsxc</a></li><li><a href="jsxc.gui.html">gui</a></li><li><a href="jsxc.gui.dialog.html">dialog</a></li><li><a href="jsxc.gui.queryActions.html">queryActions</a></li><li><a href="jsxc.gui.roster.html">roster</a></li><li><a href="jsxc.gui.template.html">template</a></li><li><a href="jsxc.gui.window.html">window</a></li><li><a href="jsxc.muc.html">muc</a></li><li><a href="jsxc.notification.html">notification</a></li><li><a href="jsxc.options.html">options</a></li><li><a href="jsxc.otr.html">otr</a></li><li><a href="jsxc.storage.html">storage</a></li><li><a href="jsxc.webrtc.html">webrtc</a></li><li><a href="jsxc.xmpp.html">xmpp</a></li><li><a href="jsxc.xmpp.carbons.html">carbons</a></li></ul><h3><a href="global.html">Global</a></h3>
</nav>
<br clear="both">
<footer>
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Sat May 23 2015 16:03:18 GMT+0200 (CEST)
</footer>
<script> prettyPrint(); </script>
<script src="scripts/linenumber.js"> </script>
</body>
</html>
+322
Ver Arquivo
@@ -0,0 +1,322 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>JSDoc: Source: jsxc.lib.notification.js</title>
<script src="scripts/prettify/prettify.js"> </script>
<script src="scripts/prettify/lang-css.js"> </script>
<!--[if lt IE 9]>
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css">
<link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css">
</head>
<body>
<div id="main">
<h1 class="page-title">Source: jsxc.lib.notification.js</h1>
<section>
<article>
<pre class="prettyprint source"><code>/**
* This namespace handles the Notification API.
*
* @namespace jsxc.notification
*/
jsxc.notification = {
/** Current audio file. */
audio: null,
/**
* Register notification on incoming messages.
*
* @memberOf jsxc.notification
*/
init: function() {
$(document).on('postmessagein.jsxc', function(event, bid, msg) {
msg = (msg.match(/^\?OTR/)) ? $.t('Encrypted_message') : msg;
var data = jsxc.storage.getUserItem('buddy', bid);
jsxc.notification.notify({
title: $.t('New_message_from') + ' ' + data.name,
msg: msg,
soundFile: jsxc.CONST.SOUNDS.MSG,
source: bid
});
});
$(document).on('callincoming.jingle', function() {
jsxc.notification.playSound(jsxc.CONST.SOUNDS.CALL, true, true);
});
$(document).on('accept.call.jsxc reject.call.jsxc', function() {
jsxc.notification.stopSound();
});
},
/**
* Shows a pop up notification and optional play sound.
*
* @param title Title
* @param msg Message
* @param d Duration
* @param force Should message also shown, if tab is visible?
* @param soundFile Playing given sound file
* @param loop Loop sound file?
* @param source Bid which triggered this notification
*/
notify: function(title, msg, d, force, soundFile, loop, source) {
if (!jsxc.options.notification || !jsxc.notification.hasPermission()) {
return; // notifications disabled
}
var o;
if (title !== null && typeof title === 'object') {
o = title;
} else {
o = {
title: title,
msg: msg,
duration: d,
force: force,
soundFile: soundFile,
loop: loop,
source: source
};
}
if (jsxc.hasFocus() && !o.force) {
return; // Tab is visible
}
var icon = o.icon || jsxc.options.root + '/img/XMPP_logo.png';
if (typeof o.source === 'string') {
var data = jsxc.storage.getUserItem('buddy', o.source);
var src = jsxc.storage.getUserItem('avatar', data.avatar);
if (typeof src === 'string' && src !== '0') {
icon = src;
}
}
jsxc.toNotification = setTimeout(function() {
if (typeof o.soundFile === 'string') {
jsxc.notification.playSound(o.soundFile, o.loop, o.force);
}
var popup = new Notification($.t(o.title), {
body: $.t(o.msg),
icon: icon
});
var duration = o.duration || jsxc.options.popupDuration;
if (duration > 0) {
setTimeout(function() {
popup.close();
}, duration);
}
}, jsxc.toNotificationDelay);
},
/**
* Checks if browser has support for notifications and add on chrome to the
* default api.
*
* @returns {Boolean} True if the browser has support.
*/
hasSupport: function() {
if (window.webkitNotifications) {
// prepare chrome
window.Notification = function(title, opt) {
var popup = window.webkitNotifications.createNotification(null, title, opt.body);
popup.show();
popup.close = function() {
popup.cancel();
};
return popup;
};
var permission;
switch (window.webkitNotifications.checkPermission()) {
case 0:
permission = jsxc.CONST.NOTIFICATION_GRANTED;
break;
case 2:
permission = jsxc.CONST.NOTIFICATION_DENIED;
break;
default: // 1
permission = jsxc.CONST.NOTIFICATION_DEFAULT;
}
window.Notification.permission = permission;
window.Notification.requestPermission = function(func) {
window.webkitNotifications.requestPermission(func);
};
return true;
} else if (window.Notification) {
return true;
} else {
return false;
}
},
/**
* Ask user on first incoming message if we should inform him about new
* messages.
*/
prepareRequest: function() {
if (jsxc.notice.has('gui.showRequestNotification')) {
return;
}
$(document).one('postmessagein.jsxc', function() {
setTimeout(function() {
jsxc.notice.add($.t('Notifications') + '?', $.t('Should_we_notify_you_'), 'gui.showRequestNotification');
}, 1000);
});
},
/**
* Request notification permission.
*/
requestPermission: function() {
window.Notification.requestPermission(function(status) {
if (window.Notification.permission !== status) {
window.Notification.permission = status;
}
if (jsxc.notification.hasPermission()) {
$(document).trigger('notificationready.jsxc');
} else {
$(document).trigger('notificationfailure.jsxc');
}
});
},
/**
* Check permission.
*
* @returns {Boolean} True if we have the permission
*/
hasPermission: function() {
return window.Notification.permission === jsxc.CONST.NOTIFICATION_GRANTED;
},
/**
* Plays the given file.
*
* @memberOf jsxc.notification
* @param {string} soundFile File relative to the sound directory
* @param {boolean} loop True for loop
* @param {boolean} force Play even if a tab is visible. Default: false.
*/
playSound: function(soundFile, loop, force) {
if (!jsxc.master) {
// only master plays sound
return;
}
if (jsxc.options.get('muteNotification') || jsxc.storage.getUserItem('presence') === 'dnd') {
// sound mute or own presence is dnd
return;
}
if (jsxc.hasFocus() && !force) {
// tab is visible
return;
}
// stop current audio file
jsxc.notification.stopSound();
var audio = new Audio(jsxc.options.root + '/sound/' + soundFile);
audio.loop = loop || false;
audio.play();
jsxc.notification.audio = audio;
},
/**
* Stop/remove current sound.
*
* @memberOf jsxc.notification
*/
stopSound: function() {
var audio = jsxc.notification.audio;
if (typeof audio !== 'undefined' && audio !== null) {
audio.pause();
jsxc.notification.audio = null;
}
},
/**
* Mute sound.
*
* @memberOf jsxc.notification
* @param {boolean} external True if triggered from external tab. Default:
* false.
*/
muteSound: function(external) {
$('#jsxc_menu .jsxc_muteNotification').text($.t('Unmute'));
if (external !== true) {
jsxc.options.set('muteNotification', true);
}
},
/**
* Unmute sound.
*
* @memberOf jsxc.notification
* @param {boolean} external True if triggered from external tab. Default:
* false.
*/
unmuteSound: function(external) {
$('#jsxc_menu .jsxc_muteNotification').text($.t('Mute'));
if (external !== true) {
jsxc.options.set('muteNotification', false);
}
}
};
</code></pre>
</article>
</section>
</div>
<nav>
<h2><a href="index.html">Index</a></h2><h3>Namespaces</h3><ul><li><a href="jsxc.html">jsxc</a></li><li><a href="jsxc.gui.html">gui</a></li><li><a href="jsxc.gui.dialog.html">dialog</a></li><li><a href="jsxc.gui.queryActions.html">queryActions</a></li><li><a href="jsxc.gui.roster.html">roster</a></li><li><a href="jsxc.gui.template.html">template</a></li><li><a href="jsxc.gui.window.html">window</a></li><li><a href="jsxc.muc.html">muc</a></li><li><a href="jsxc.notification.html">notification</a></li><li><a href="jsxc.options.html">options</a></li><li><a href="jsxc.otr.html">otr</a></li><li><a href="jsxc.storage.html">storage</a></li><li><a href="jsxc.webrtc.html">webrtc</a></li><li><a href="jsxc.xmpp.html">xmpp</a></li><li><a href="jsxc.xmpp.carbons.html">carbons</a></li></ul><h3><a href="global.html">Global</a></h3>
</nav>
<br clear="both">
<footer>
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Sat May 23 2015 16:03:18 GMT+0200 (CEST)
</footer>
<script> prettyPrint(); </script>
<script src="scripts/linenumber.js"> </script>
</body>
</html>
+224
Ver Arquivo
@@ -0,0 +1,224 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>JSDoc: Source: jsxc.lib.options.js</title>
<script src="scripts/prettify/prettify.js"> </script>
<script src="scripts/prettify/lang-css.js"> </script>
<!--[if lt IE 9]>
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css">
<link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css">
</head>
<body>
<div id="main">
<h1 class="page-title">Source: jsxc.lib.options.js</h1>
<section>
<article>
<pre class="prettyprint source"><code>/**
* Set some options for the chat.
*
* @namespace jsxc.options
*/
jsxc.options = {
/** name of container application (e.g. owncloud or SOGo) */
app_name: 'web applications',
/** Timeout for the keepalive signal */
timeout: 3000,
/** Timeout for the keepalive signal if the master is busy */
busyTimeout: 15000,
/** OTR options */
otr: {
enable: true,
ERROR_START_AKE: false,
debug: false,
SEND_WHITESPACE_TAG: true,
WHITESPACE_START_AKE: true
},
/** xmpp options */
xmpp: {
url: null,
jid: null,
domain: null,
password: null,
overwrite: false,
onlogin: true
},
/** default xmpp priorities */
priority: {
online: 0,
chat: 0,
away: 0,
xa: 0,
dnd: 0
},
/** If all 3 properties are set, the login form is used */
loginForm: {
/** jquery object from form */
form: null,
/** jquery object from input element which contains the jid */
jid: null,
/** jquery object from input element which contains the password */
pass: null,
/** manipulate JID from input element */
preJid: function(jid) {
return jid;
},
/**
* Action after login was called: dialog [String] Show wait dialog, false [boolean] |
* quiet [String] Do nothing
*/
onConnecting: 'dialog',
/**
* Action after connected: submit [String] Submit form, false [boolean] Do
* nothing, continue [String] Start chat
*/
onConnected: 'submit',
/**
* Action after auth fail: submit [String] Submit form, false [boolean] | quiet [String] Do
* nothing, ask [String] Show auth fail dialog
*/
onAuthFail: 'submit'
},
/** jquery object from logout element */
logoutElement: null,
/** How many messages should be logged? */
numberOfMsg: 10,
/** Default language */
defaultLang: 'en',
/** auto language detection */
autoLang: true,
/** Place for roster */
rosterAppend: 'body',
/** Should we use the HTML5 notification API? */
notification: true,
/** duration for notification */
popupDuration: 6000,
/** Absolute path root of JSXC installation */
root: '',
/** Timeout for restore in ms */
loginTimeout: 1000 * 60 * 10,
/**
* This function decides wether the roster will be displayed or not if no
* connection is found.
*/
displayRosterMinimized: function() {
return false;
},
/** Set to true if you want to hide offline buddies. */
hideOffline: false,
/** Mute notification sound? */
muteNotification: false,
/**
* If no avatar is found, this function is called.
*
* @param jid Jid of that user.
* @this {jQuery} Elements to update with probable .jsxc_avatar elements
*/
defaultAvatar: function(jid) {
jsxc.gui.avatarPlaceholder($(this).find('.jsxc_avatar'), jid);
},
/**
* Returns permanent saved settings and overwrite default jsxc.options.
*
* @memberOf jsxc.options
* @param username String username
* @param password String password
* @returns {object} at least xmpp.url
*/
loadSettings: function() {
},
/**
* Call this function to save user settings permanent.
*
* @memberOf jsxc.options
* @param data Holds all data as key/value
* @returns {boolean} false if function failes
*/
saveSettinsPermanent: function() {
},
carbons: {
/** Enable carbon copies? */
enable: false
},
/**
* Processes user list.
*
* @callback getUsers-cb
* @param {object} list List of users, key: username, value: alias
*/
/**
* Returns a list of usernames and aliases
*
* @function getUsers
* @memberOf jsxc.options
* @param {string} search Search token (start with)
* @param {getUsers-cb} cb Called with list of users
*/
getUsers: null
};</code></pre>
</article>
</section>
</div>
<nav>
<h2><a href="index.html">Index</a></h2><h3>Namespaces</h3><ul><li><a href="jsxc.html">jsxc</a></li><li><a href="jsxc.gui.html">gui</a></li><li><a href="jsxc.gui.dialog.html">dialog</a></li><li><a href="jsxc.gui.queryActions.html">queryActions</a></li><li><a href="jsxc.gui.roster.html">roster</a></li><li><a href="jsxc.gui.template.html">template</a></li><li><a href="jsxc.gui.window.html">window</a></li><li><a href="jsxc.muc.html">muc</a></li><li><a href="jsxc.notification.html">notification</a></li><li><a href="jsxc.options.html">options</a></li><li><a href="jsxc.otr.html">otr</a></li><li><a href="jsxc.storage.html">storage</a></li><li><a href="jsxc.webrtc.html">webrtc</a></li><li><a href="jsxc.xmpp.html">xmpp</a></li><li><a href="jsxc.xmpp.carbons.html">carbons</a></li></ul><h3><a href="global.html">Global</a></h3>
</nav>
<br clear="both">
<footer>
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Sat May 23 2015 16:03:18 GMT+0200 (CEST)
</footer>
<script> prettyPrint(); </script>
<script src="scripts/linenumber.js"> </script>
</body>
</html>
+535
Ver Arquivo
@@ -0,0 +1,535 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>JSDoc: Source: jsxc.lib.otr.js</title>
<script src="scripts/prettify/prettify.js"> </script>
<script src="scripts/prettify/lang-css.js"> </script>
<!--[if lt IE 9]>
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css">
<link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css">
</head>
<body>
<div id="main">
<h1 class="page-title">Source: jsxc.lib.otr.js</h1>
<section>
<article>
<pre class="prettyprint source"><code>
/**
* @namespace jsxc.otr
*/
jsxc.otr = {
/** list of otr objects */
objects: {},
dsaFallback: null,
/**
* Handler for otr receive event
*
* @memberOf jsxc.otr
* @param {Object} d
* @param {string} d.bid
* @param {string} d.msg received message
* @param {boolean} d.encrypted True, if msg was encrypted.
* @param {boolean} d.forwarded
* @param {string} d.stamp timestamp
*/
receiveMessage: function(d) {
var bid = d.bid;
if (jsxc.otr.objects[bid].msgstate !== OTR.CONST.MSGSTATE_PLAINTEXT) {
jsxc.otr.backup(bid);
}
if (jsxc.otr.objects[bid].msgstate !== OTR.CONST.MSGSTATE_PLAINTEXT && !d.encrypted) {
jsxc.gui.window.postMessage(bid, 'sys', $.t('Received_an_unencrypted_message') + '. [' + d.msg + ']', d.encrypted, d.forwarded, d.stamp);
} else {
jsxc.gui.window.postMessage(bid, 'in', d.msg, d.encrypted, d.forwarded, d.stamp);
}
},
/**
* Handler for otr send event
*
* @param {string} jid
* @param {string} msg message to be send
*/
sendMessage: function(jid, msg, uid) {
if (jsxc.otr.objects[jsxc.jidToBid(jid)].msgstate !== 0) {
jsxc.otr.backup(jsxc.jidToBid(jid));
}
jsxc.xmpp._sendMessage(jid, msg, uid);
},
/**
* Create new otr instance
*
* @param {type} bid
* @returns {undefined}
*/
create: function(bid) {
if (jsxc.otr.objects.hasOwnProperty(bid)) {
return;
}
if (!jsxc.options.otr.priv) {
return;
}
// save list of otr objects
var ol = jsxc.storage.getUserItem('otrlist') || [];
if (ol.indexOf(bid) &lt; 0) {
ol.push(bid);
jsxc.storage.setUserItem('otrlist', ol);
}
jsxc.otr.objects[bid] = new OTR(jsxc.options.otr);
if (jsxc.options.otr.SEND_WHITESPACE_TAG) {
jsxc.otr.objects[bid].SEND_WHITESPACE_TAG = true;
}
if (jsxc.options.otr.WHITESPACE_START_AKE) {
jsxc.otr.objects[bid].WHITESPACE_START_AKE = true;
}
jsxc.otr.objects[bid].on('status', function(status) {
var data = jsxc.storage.getUserItem('buddy', bid);
if (data === null) {
return;
}
switch (status) {
case OTR.CONST.STATUS_SEND_QUERY:
jsxc.gui.window.postMessage(bid, 'sys', $.t('trying_to_start_private_conversation'));
break;
case OTR.CONST.STATUS_AKE_SUCCESS:
data.fingerprint = jsxc.otr.objects[bid].their_priv_pk.fingerprint();
data.msgstate = OTR.CONST.MSGSTATE_ENCRYPTED;
var msg = (jsxc.otr.objects[bid].trust ? $.t('Verified') : $.t('Unverified')) + ' ' + $.t('private_conversation_started');
jsxc.gui.window.postMessage(bid, 'sys', msg);
break;
case OTR.CONST.STATUS_END_OTR:
data.fingerprint = null;
if (jsxc.otr.objects[bid].msgstate === OTR.CONST.MSGSTATE_PLAINTEXT) {
// we abort the private conversation
data.msgstate = OTR.CONST.MSGSTATE_PLAINTEXT;
jsxc.gui.window.postMessage(bid, 'sys', $.t('private_conversation_aborted'));
} else {
// the buddy abort the private conversation
data.msgstate = OTR.CONST.MSGSTATE_FINISHED;
jsxc.gui.window.postMessage(bid, 'sys', $.t('your_buddy_closed_the_private_conversation_you_should_do_the_same'));
}
break;
case OTR.CONST.STATUS_SMP_HANDLE:
jsxc.keepBusyAlive();
break;
}
jsxc.storage.setUserItem('buddy', bid, data);
// for encryption and verification state
jsxc.gui.update(bid);
});
jsxc.otr.objects[bid].on('smp', function(type, data) {
switch (type) {
case 'question': // verification request received
jsxc.gui.window.postMessage(bid, 'sys', $.t('Authentication_request_received'));
if ($('#jsxc_dialog').length > 0) {
jsxc.otr.objects[bid].sm.abort();
break;
}
jsxc.otr.onSmpQuestion(bid, data);
jsxc.storage.setUserItem('smp_' + bid, {
data: data || null
});
break;
case 'trust': // verification completed
jsxc.otr.objects[bid].trust = data;
jsxc.storage.updateUserItem('buddy', bid, 'trust', data);
jsxc.otr.backup(bid);
jsxc.gui.update(bid);
if (data) {
jsxc.gui.window.postMessage(bid, 'sys', $.t('conversation_is_now_verified'));
} else {
jsxc.gui.window.postMessage(bid, 'sys', $.t('authentication_failed'));
}
jsxc.storage.removeUserItem('smp_' + bid);
jsxc.gui.dialog.close();
break;
case 'abort':
jsxc.gui.window.postMessage(bid, 'sys', $.t('Authentication_aborted'));
break;
default:
jsxc.debug('[OTR] sm callback: Unknown type: ' + type);
}
});
// Receive message
jsxc.otr.objects[bid].on('ui', function(msg, encrypted, meta) {
jsxc.otr.receiveMessage({
bid: bid,
msg: msg,
encrypted: encrypted === true,
stamp: meta.stamp,
forwarded: meta.forwarded
});
});
// Send message
jsxc.otr.objects[bid].on('io', function(msg, uid) {
var jid = jsxc.gui.window.get(bid).data('jid') || jsxc.otr.objects[bid].jid;
jsxc.otr.objects[bid].jid = jid;
jsxc.otr.sendMessage(jid, msg, uid);
});
jsxc.otr.objects[bid].on('error', function(err) {
// Handle this case in jsxc.otr.receiveMessage
if (err !== 'Received an unencrypted message.') {
jsxc.gui.window.postMessage(bid, 'sys', '[OTR] ' + $.t(err));
}
jsxc.error('[OTR] ' + err);
});
jsxc.otr.restore(bid);
},
/**
* show verification dialog with related part (secret or question)
*
* @param {type} bid
* @param {string} [data]
* @returns {undefined}
*/
onSmpQuestion: function(bid, data) {
jsxc.gui.showVerification(bid);
$('#jsxc_dialog select').prop('selectedIndex', (data ? 2 : 3)).change();
$('#jsxc_dialog > div:eq(0)').hide();
if (data) {
$('#jsxc_dialog > div:eq(2)').find('#jsxc_quest').val(data).prop('disabled', true);
$('#jsxc_dialog > div:eq(2)').find('.creation').text('Answer');
$('#jsxc_dialog > div:eq(2)').find('.jsxc_explanation').text($.t('your_buddy_is_attempting_to_determine_') + ' ' + $.t('to_authenticate_to_your_buddy') + $.t('enter_the_answer_and_click_answer'));
} else {
$('#jsxc_dialog > div:eq(3)').find('.jsxc_explanation').text($.t('your_buddy_is_attempting_to_determine_') + ' ' + $.t('to_authenticate_to_your_buddy') + $.t('enter_the_secret'));
}
$('#jsxc_dialog .jsxc_close').click(function() {
jsxc.storage.removeUserItem('smp_' + bid);
if (jsxc.master) {
jsxc.otr.objects[bid].sm.abort();
}
});
},
/**
* Send verification request to buddy
*
* @param {string} bid
* @param {string} sec secret
* @param {string} [quest] question
* @returns {undefined}
*/
sendSmpReq: function(bid, sec, quest) {
jsxc.keepBusyAlive();
jsxc.otr.objects[bid].smpSecret(sec, quest || '');
},
/**
* Toggle encryption state
*
* @param {type} bid
* @returns {undefined}
*/
toggleTransfer: function(bid) {
if (typeof OTR !== 'function') {
return;
}
if (jsxc.storage.getUserItem('buddy', bid).msgstate === 0) {
jsxc.otr.goEncrypt(bid);
} else {
jsxc.otr.goPlain(bid);
}
},
/**
* Send request to encrypt the session
*
* @param {type} bid
* @returns {undefined}
*/
goEncrypt: function(bid) {
if (jsxc.master) {
if (jsxc.otr.objects.hasOwnProperty(bid)) {
jsxc.otr.objects[bid].sendQueryMsg();
}
} else {
jsxc.storage.updateUserItem('buddy', bid, 'transferReq', 1);
}
},
/**
* Abort encryptet session
*
* @param {type} bid
* @param cb callback
* @returns {undefined}
*/
goPlain: function(bid, cb) {
if (jsxc.master) {
if (jsxc.otr.objects.hasOwnProperty(bid)) {
jsxc.otr.objects[bid].endOtr.call(jsxc.otr.objects[bid], cb);
jsxc.otr.objects[bid].init.call(jsxc.otr.objects[bid]);
jsxc.otr.backup(bid);
}
} else {
jsxc.storage.updateUserItem('buddy', bid, 'transferReq', 0);
}
},
/**
* Backups otr session
*
* @param {string} bid
*/
backup: function(bid) {
var o = jsxc.otr.objects[bid]; // otr object
var r = {}; // return value
if (o === null) {
return;
}
// all variables which should be saved
var savekey = [ 'jid', 'our_instance_tag', 'msgstate', 'authstate', 'fragment', 'their_y', 'their_old_y', 'their_keyid', 'their_instance_tag', 'our_dh', 'our_old_dh', 'our_keyid', 'sessKeys', 'storedMgs', 'oldMacKeys', 'trust', 'transmittedRS', 'ssid', 'receivedPlaintext', 'authstate', 'send_interval' ];
var i;
for (i = 0; i &lt; savekey.length; i++) {
r[savekey[i]] = JSON.stringify(o[savekey[i]]);
}
if (o.their_priv_pk !== null) {
r.their_priv_pk = JSON.stringify(o.their_priv_pk.packPublic());
}
if (o.ake.otr_version && o.ake.otr_version !== '') {
r.otr_version = JSON.stringify(o.ake.otr_version);
}
jsxc.storage.setUserItem('otr', bid, r);
},
/**
* Restore old otr session
*
* @param {string} bid
*/
restore: function(bid) {
var o = jsxc.otr.objects[bid];
var d = jsxc.storage.getUserItem('otr', bid);
if (o !== null || d !== null) {
var key;
for (key in d) {
if (d.hasOwnProperty(key)) {
var val = JSON.parse(d[key]);
if (key === 'their_priv_pk' && val !== null) {
val = DSA.parsePublic(val);
}
if (key === 'otr_version' && val !== null) {
o.ake.otr_version = val;
} else {
o[key] = val;
}
}
}
jsxc.otr.objects[bid] = o;
if (o.msgstate === 1 && o.their_priv_pk !== null) {
o._smInit.call(jsxc.otr.objects[bid]);
}
}
jsxc.otr.enable(bid);
},
/**
* Create or load DSA key
*
* @returns {unresolved}
*/
createDSA: function() {
if (jsxc.options.otr.priv) {
return;
}
if (typeof OTR !== 'function') {
jsxc.warn('OTR support disabled');
OTR = {};
OTR.CONST = {
MSGSTATE_PLAINTEXT : 0,
MSGSTATE_ENCRYPTED : 1,
MSGSTATE_FINISHED : 2
};
jsxc._onMaster();
return;
}
if (jsxc.storage.getUserItem('key') === null) {
var msg = $.t('Creating_your_private_key_');
var worker = null;
if (Worker) {
// try to create web-worker
try {
worker = new Worker(jsxc.options.root + '/lib/otr/build/dsa-webworker.js');
} catch (err) {
jsxc.warn('Couldn\'t create web-worker.', err);
}
}
jsxc.otr.dsaFallback = (worker === null);
if (!jsxc.otr.dsaFallback) {
// create DSA key in background
jsxc._onMaster();
worker.onmessage = function(e) {
var type = e.data.type;
var val = e.data.val;
if (type === 'debug') {
jsxc.debug(val);
} else if (type === 'data') {
jsxc.otr.DSAready(DSA.parsePrivate(val));
}
};
// start worker
worker.postMessage({
imports: [ jsxc.options.root + '/lib/otr/vendor/salsa20.js', jsxc.options.root + '/lib/otr/vendor/bigint.js', jsxc.options.root + '/lib/otr/vendor/crypto.js', jsxc.options.root + '/lib/otr/vendor/eventemitter.js', jsxc.options.root + '/lib/otr/lib/const.js', jsxc.options.root + '/lib/otr/lib/helpers.js', jsxc.options.root + '/lib/otr/lib/dsa.js' ],
seed: BigInt.getSeed(),
debug: true
});
} else {
// fallback
jsxc.gui.dialog.open(jsxc.gui.template.get('waitAlert', null, msg), {
noClose: true
});
jsxc.debug('DSA key creation started.');
// wait until the wait alert is opened
setTimeout(function() {
var dsa = new DSA();
jsxc.otr.DSAready(dsa);
}, 500);
}
} else {
jsxc.debug('DSA key loaded');
jsxc.options.otr.priv = DSA.parsePrivate(jsxc.storage.getUserItem('key'));
jsxc.otr._createDSA();
}
},
/**
* Ending of createDSA().
*/
_createDSA: function() {
jsxc.storage.setUserItem('priv_fingerprint', jsxc.options.otr.priv.fingerprint());
if (jsxc.otr.dsaFallback !== false) {
jsxc._onMaster();
}
},
/**
* Ending of DSA key generation.
*
* @param {DSA} dsa DSA object
*/
DSAready: function(dsa) {
jsxc.storage.setUserItem('key', dsa.packPrivate());
jsxc.options.otr.priv = dsa;
// close wait alert
if (jsxc.otr.dsaFallback) {
jsxc.gui.dialog.close();
} else {
$.each(jsxc.storage.getUserItem('windowlist'), function(index, val) {
jsxc.otr.create(val);
});
}
jsxc.otr._createDSA();
},
enable: function(bid) {
jsxc.gui.window.get(bid).find('.jsxc_otr').removeClass('jsxc_disabled');
}
};
</code></pre>
</article>
</section>
</div>
<nav>
<h2><a href="index.html">Index</a></h2><h3>Namespaces</h3><ul><li><a href="jsxc.html">jsxc</a></li><li><a href="jsxc.gui.html">gui</a></li><li><a href="jsxc.gui.dialog.html">dialog</a></li><li><a href="jsxc.gui.queryActions.html">queryActions</a></li><li><a href="jsxc.gui.roster.html">roster</a></li><li><a href="jsxc.gui.template.html">template</a></li><li><a href="jsxc.gui.window.html">window</a></li><li><a href="jsxc.muc.html">muc</a></li><li><a href="jsxc.notification.html">notification</a></li><li><a href="jsxc.options.html">options</a></li><li><a href="jsxc.otr.html">otr</a></li><li><a href="jsxc.storage.html">storage</a></li><li><a href="jsxc.webrtc.html">webrtc</a></li><li><a href="jsxc.xmpp.html">xmpp</a></li><li><a href="jsxc.xmpp.carbons.html">carbons</a></li></ul><h3><a href="global.html">Global</a></h3>
</nav>
<br clear="both">
<footer>
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Sat May 23 2015 16:03:18 GMT+0200 (CEST)
</footer>
<script> prettyPrint(); </script>
<script src="scripts/linenumber.js"> </script>
</body>
</html>
+662
Ver Arquivo
@@ -0,0 +1,662 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>JSDoc: Source: jsxc.lib.storage.js</title>
<script src="scripts/prettify/prettify.js"> </script>
<script src="scripts/prettify/lang-css.js"> </script>
<!--[if lt IE 9]>
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css">
<link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css">
</head>
<body>
<div id="main">
<h1 class="page-title">Source: jsxc.lib.storage.js</h1>
<section>
<article>
<pre class="prettyprint source"><code>
/**
* Handle long-live data
*
* @namespace jsxc.storage
*/
jsxc.storage = {
/**
* Prefix for localstorage
*
* @privat
*/
PREFIX: 'jsxc',
SEP: ':',
/**
* @param {type} uk Should we generate a user prefix?
* @returns {String} prefix
* @memberOf jsxc.storage
*/
getPrefix: function(uk) {
var self = jsxc.storage;
return self.PREFIX + self.SEP + ((uk && jsxc.bid) ? jsxc.bid + self.SEP : '');
},
/**
* Save item to storage
*
* @function
* @param {String} key variablename
* @param {Object} value value
* @param {String} uk Userkey? Should we add the bid as prefix?
*/
setItem: function(key, value, uk) {
// Workaround for non-conform browser
if (jsxc.storageNotConform > 0 && key !== 'rid' && key !== 'lastActivity') {
if (jsxc.storageNotConform > 1 && jsxc.toSNC === null) {
jsxc.toSNC = window.setTimeout(function() {
jsxc.storageNotConform = 0;
jsxc.storage.setItem('storageNotConform', 0);
}, 1000);
}
jsxc.ls.push(JSON.stringify({
key: key,
value: value
}));
}
if (typeof (value) === 'object') {
value = JSON.stringify(value);
}
localStorage.setItem(jsxc.storage.getPrefix(uk) + key, value);
},
setUserItem: function(type, key, value) {
var self = jsxc.storage;
if (arguments.length === 2) {
value = key;
key = type;
type = '';
} else if (arguments.length === 3) {
key = type + self.SEP + key;
}
return jsxc.storage.setItem(key, value, true);
},
/**
* Load item from storage
*
* @function
* @param {String} key variablename
* @param {String} uk Userkey? Should we add the bid as prefix?
*/
getItem: function(key, uk) {
key = jsxc.storage.getPrefix(uk) + key;
var value = localStorage.getItem(key);
try {
return JSON.parse(value);
} catch (e) {
return value;
}
},
/**
* Get a user item from storage.
*
* @param key
* @returns user item
*/
getUserItem: function(type, key) {
var self = jsxc.storage;
if (arguments.length === 1) {
key = type;
} else if (arguments.length === 2) {
key = type + self.SEP + key;
}
return jsxc.storage.getItem(key, true);
},
/**
* Remove item from storage
*
* @function
* @param {String} key variablename
* @param {String} uk Userkey? Should we add the bid as prefix?
*/
removeItem: function(key, uk) {
// Workaround for non-conform browser
if (jsxc.storageNotConform && key !== 'rid' && key !== 'lastActivity') {
jsxc.ls.push(JSON.stringify({
key: jsxc.storage.prefix + key,
value: ''
}));
}
localStorage.removeItem(jsxc.storage.getPrefix(uk) + key);
},
/**
* Remove user item from storage.
*
* @param key
*/
removeUserItem: function(type, key) {
var self = jsxc.storage;
if (arguments.length === 1) {
key = type;
} else if (arguments.length === 2) {
key = type + self.SEP + key;
}
jsxc.storage.removeItem(key, true);
},
/**
* Updates value of a variable in a saved object.
*
* @function
* @param {String} key variablename
* @param {String|object} variable variablename in object or object with
* variable/key pairs
* @param {Object} [value] value
* @param {String} uk Userkey? Should we add the bid as prefix?
*/
updateItem: function(key, variable, value, uk) {
var data = jsxc.storage.getItem(key, uk) || {};
if (typeof (variable) === 'object') {
$.each(variable, function(key, val) {
if (typeof (data[key]) === 'undefined') {
jsxc.debug('Variable ' + key + ' doesn\'t exist in ' + variable + '. It was created.');
}
data[key] = val;
});
} else {
if (typeof (data[variable]) === 'undefined') {
jsxc.debug('Variable ' + variable + ' doesn\'t exist. It was created.');
}
data[variable] = value;
}
jsxc.storage.setItem(key, data, uk);
},
/**
* Updates value of a variable in a saved user object.
*
* @param {String} key variablename
* @param {String|object} variable variablename in object or object with
* variable/key pairs
* @param {Object} [value] value
*/
updateUserItem: function(type, key, variable, value) {
var self = jsxc.storage;
if (arguments.length === 4 || (arguments.length === 3 && typeof variable === 'object')) {
key = type + self.SEP + key;
} else {
value = variable;
variable = key;
key = type;
}
return jsxc.storage.updateItem(key, variable, value, true);
},
/**
* Inkrements value
*
* @function
* @param {String} key variablename
* @param {String} uk Userkey? Should we add the bid as prefix?
*/
ink: function(key, uk) {
jsxc.storage.setItem(key, Number(jsxc.storage.getItem(key, uk)) + 1, uk);
},
/**
* Remove element from array or object
*
* @param {string} key name of array or object
* @param {string} name name of element in array or object
* @param {String} uk Userkey? Should we add the bid as prefix?
* @returns {undefined}
*/
removeElement: function(key, name, uk) {
var item = jsxc.storage.getItem(key, uk);
if ($.isArray(item)) {
item = $.grep(item, function(e) {
return e !== name;
});
} else if (typeof (item) === 'object') {
delete item[name];
}
jsxc.storage.setItem(key, item, uk);
},
removeUserElement: function(type, key, name) {
var self = jsxc.storage;
if (arguments.length === 2) {
name = key;
key = type;
} else if (arguments.length === 3) {
key = type + self.SEP + key;
}
return jsxc.storage.removeElement(key, name, true);
},
/**
* Triggered if changes are recognized
*
* @function
* @param {event} e Storageevent
* @param {String} e.key Keyname which triggered event
* @param {Object} e.oldValue Old Value for key
* @param {Object} e.newValue New Value for key
* @param {String} e.url
*/
onStorage: function(e) {
// skip
if (e.key === jsxc.storage.PREFIX + jsxc.storage.SEP + 'rid' || e.key === jsxc.storage.PREFIX + jsxc.storage.SEP + 'lastActivity') {
return;
}
var re = new RegExp('^' + jsxc.storage.PREFIX + jsxc.storage.SEP + '(?:[^' + jsxc.storage.SEP + ']+@[^' + jsxc.storage.SEP + ']+' + jsxc.storage.SEP + ')?(.*)', 'i');
var key = e.key.replace(re, '$1');
// Workaround for non-conform browser: Triggered event on every page
// (own)
if (jsxc.storageNotConform > 0 && jsxc.ls.length > 0) {
var val = e.newValue;
try {
val = JSON.parse(val);
} catch (err) {
}
var index = $.inArray(JSON.stringify({
key: key,
value: val
}), jsxc.ls);
if (index >= 0) {
// confirm that the storage event is not fired regularly
if (jsxc.storageNotConform > 1) {
window.clearTimeout(jsxc.toSNC);
jsxc.storageNotConform = 1;
jsxc.storage.setItem('storageNotConform', 1);
}
jsxc.ls.splice(index, 1);
return;
}
}
// Workaround for non-conform browser
if (e.oldValue === e.newValue) {
return;
}
var n, o;
var bid = key.replace(new RegExp('[^' + jsxc.storage.SEP + ']+' + jsxc.storage.SEP + '(.*)', 'i'), '$1');
// react if someone ask, if there is a master
if (jsxc.master && key === 'alive') {
jsxc.debug('Master request.');
jsxc.storage.ink('alive');
return;
}
// master alive
if (!jsxc.master && (key === 'alive' || key === 'alive_busy') && !jsxc.triggeredFromElement) {
// reset timeout
window.clearTimeout(jsxc.to);
jsxc.to = window.setTimeout(jsxc.checkMaster, ((key === 'alive') ? jsxc.options.timeout : jsxc.options.busyTimeout) + jsxc.random(60));
// only call the first time
if (!jsxc.role_allocation) {
jsxc.onSlave();
}
return;
}
if (key.match(/^notices/)) {
jsxc.notice.load();
}
if (key.match(/^presence/)) {
jsxc.gui.changePresence(e.newValue, true);
}
if (key.match(/^options/) && e.newValue) {
n = JSON.parse(e.newValue);
if (typeof n.muteNotification !== 'undefined' && n.muteNotification) {
jsxc.notification.muteSound(true);
} else {
jsxc.notification.unmuteSound(true);
}
}
if (key.match(/^hidden/)) {
if (jsxc.master) {
clearTimeout(jsxc.toNotification);
} else {
jsxc.isHidden();
}
}
if (key.match(/^focus/)) {
if (jsxc.master) {
clearTimeout(jsxc.toNotification);
} else {
jsxc.hasFocus();
}
}
if (key.match(new RegExp('^chat' + jsxc.storage.SEP))) {
var posts = JSON.parse(e.newValue);
var data, el;
while (posts.length > 0) {
data = posts.pop();
el = $('#' + data.uid);
if (el.length === 0) {
if (jsxc.master && data.direction === 'out') {
jsxc.xmpp.sendMessage(bid, data.msg, data.uid);
}
jsxc.gui.window._postMessage(bid, data);
} else if (data.received) {
el.addClass('jsxc_received');
}
}
return;
}
if (key.match(new RegExp('^window' + jsxc.storage.SEP))) {
if (!e.newValue) {
jsxc.gui.window._close(bid);
return;
}
if (!e.oldValue) {
jsxc.gui.window.open(bid);
return;
}
n = JSON.parse(e.newValue);
if (n.minimize) {
jsxc.gui.window._hide(bid);
} else {
jsxc.gui.window._show(bid);
}
jsxc.gui.window.setText(bid, n.text);
return;
}
if (key.match(new RegExp('^smp' + jsxc.storage.SEP))) {
if (!e.newValue) {
jsxc.gui.dialog.close();
if (jsxc.master) {
jsxc.otr.objects[bid].sm.abort();
}
return;
}
n = JSON.parse(e.newValue);
if (typeof (n.data) !== 'undefined') {
jsxc.otr.onSmpQuestion(bid, n.data);
} else if (jsxc.master && n.sec) {
jsxc.gui.dialog.close();
jsxc.otr.sendSmpReq(bid, n.sec, n.quest);
}
}
if (!jsxc.master && key.match(new RegExp('^buddy' + jsxc.storage.SEP))) {
if (!e.newValue) {
jsxc.gui.roster.purge(bid);
return;
}
if (!e.oldValue) {
jsxc.gui.roster.add(bid);
return;
}
n = JSON.parse(e.newValue);
o = JSON.parse(e.oldValue);
jsxc.gui.update(bid);
if (o.status !== n.status || o.sub !== n.sub) {
jsxc.gui.roster.reorder(bid);
}
}
if (jsxc.master && key.match(new RegExp('^deletebuddy' + jsxc.storage.SEP)) && e.newValue) {
n = JSON.parse(e.newValue);
jsxc.xmpp.removeBuddy(n.jid);
jsxc.storage.removeUserItem(key);
}
if (jsxc.master && key.match(new RegExp('^buddy' + jsxc.storage.SEP))) {
n = JSON.parse(e.newValue);
o = JSON.parse(e.oldValue);
if (o.transferReq !== n.transferReq) {
jsxc.storage.updateUserItem('buddy', bid, 'transferReq', -1);
if (n.transferReq === 0) {
jsxc.otr.goPlain(bid);
}
if (n.transferReq === 1) {
jsxc.otr.goEncrypt(bid);
}
}
if (o.name !== n.name) {
jsxc.gui.roster._rename(bid, n.name);
}
}
// logout
if (key === 'sid') {
if (!e.newValue) {
// if (jsxc.master && jsxc.xmpp.conn) {
// jsxc.xmpp.conn.disconnect();
// jsxc.triggeredFromElement = true;
// }
jsxc.xmpp.logout();
}
return;
}
if (key === 'friendReq') {
n = JSON.parse(e.newValue);
if (jsxc.master && n.approve >= 0) {
jsxc.xmpp.resFriendReq(n.jid, n.approve);
}
}
if (jsxc.master && key.match(new RegExp('^add' + jsxc.storage.SEP))) {
n = JSON.parse(e.newValue);
jsxc.xmpp.addBuddy(n.username, n.alias);
}
if (key === 'roster') {
jsxc.gui.roster.toggle();
}
if (jsxc.master && key.match(new RegExp('^vcard' + jsxc.storage.SEP)) && e.newValue !== null && e.newValue.match(/^request:/)) {
jsxc.xmpp.loadVcard(bid, function(stanza) {
jsxc.storage.setUserItem('vcard', bid, {
state: 'success',
data: $('&lt;div>').append(stanza).html()
});
}, function() {
jsxc.storage.setUserItem('vcard', bid, {
state: 'error'
});
});
}
if (!jsxc.master && key.match(new RegExp('^vcard' + jsxc.storage.SEP)) && e.newValue !== null && !e.newValue.match(/^request:/)) {
n = JSON.parse(e.newValue);
if (typeof n.state !== 'undefined') {
$(document).trigger('loaded.vcard.jsxc', n);
}
jsxc.storage.removeUserItem('vcard', bid);
}
},
/**
* Save message to storage.
*
* @memberOf jsxc.storage
* @param bid
* @param direction
* @param msg
* @param encrypted
* @param forwarded
* @param sender
* @return post
*/
saveMessage: function(bid, direction, msg, encrypted, forwarded, stamp, sender) {
var chat = jsxc.storage.getUserItem('chat', bid) || [];
var uid = new Date().getTime() + ':msg';
if (chat.length > jsxc.options.get('numberOfMsg')) {
chat.pop();
}
var post = {
direction: direction,
msg: msg,
uid: uid.replace(/:/, '-'),
received: false,
encrypted: encrypted || false,
forwarded: forwarded || false,
stamp: stamp || new Date().getTime(),
sender: sender
};
chat.unshift(post);
jsxc.storage.setUserItem('chat', bid, chat);
return post;
},
/**
* Save or update buddy data.
*
* @memberOf jsxc.storage
* @param bid
* @param data
* @returns {String} Updated or created
*/
saveBuddy: function(bid, data) {
if (jsxc.storage.getUserItem('buddy', bid)) {
jsxc.storage.updateUserItem('buddy', bid, data);
return 'updated';
}
jsxc.storage.setUserItem('buddy', bid, $.extend({
jid: '',
name: '',
status: 0,
sub: 'none',
msgstate: 0,
transferReq: -1,
trust: false,
fingerprint: null,
res: [],
type: 'chat'
}, data));
return 'created';
}
};
</code></pre>
</article>
</section>
</div>
<nav>
<h2><a href="index.html">Index</a></h2><h3>Namespaces</h3><ul><li><a href="jsxc.html">jsxc</a></li><li><a href="jsxc.gui.html">gui</a></li><li><a href="jsxc.gui.dialog.html">dialog</a></li><li><a href="jsxc.gui.queryActions.html">queryActions</a></li><li><a href="jsxc.gui.roster.html">roster</a></li><li><a href="jsxc.gui.template.html">template</a></li><li><a href="jsxc.gui.window.html">window</a></li><li><a href="jsxc.muc.html">muc</a></li><li><a href="jsxc.notification.html">notification</a></li><li><a href="jsxc.options.html">options</a></li><li><a href="jsxc.otr.html">otr</a></li><li><a href="jsxc.storage.html">storage</a></li><li><a href="jsxc.webrtc.html">webrtc</a></li><li><a href="jsxc.xmpp.html">xmpp</a></li><li><a href="jsxc.xmpp.carbons.html">carbons</a></li></ul><h3><a href="global.html">Global</a></h3>
</nav>
<br clear="both">
<footer>
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Sat May 23 2015 16:03:18 GMT+0200 (CEST)
</footer>
<script> prettyPrint(); </script>
<script src="scripts/linenumber.js"> </script>
</body>
</html>
+58 -117
Ver Arquivo
@@ -25,17 +25,16 @@
<section>
<article>
<pre class="prettyprint source"><code>/* global jsxc, Strophe, SDPUtil, getUserMediaWithConstraints, setupRTC, jQuery, MediaStreamTrack */
<pre class="prettyprint source"><code>/* global SDPUtil, getUserMediaWithConstraints, setupRTC, MediaStreamTrack, RTC, RTCPeerconnection */
/* jshint -W020 */
var RTC = null, RTCPeerconnection = null;
jsxc.gui.template.incomingCall = '&lt;h3>%%Incoming_call%%&lt;/h3>\
&lt;p>%%Do_you_want_to_accept_the_call_from%% {{bid_name}}?&lt;/p>\
jsxc.gui.template.incomingCall = '&lt;h3 data-i18n="Incoming_call">&lt;/h3>\
&lt;p>&lt;span data-i18n="Do_you_want_to_accept_the_call_from">&lt;/span> {{bid_name}}?&lt;/p>\
&lt;p class="jsxc_right">\
&lt;a href="#" class="button jsxc_reject">%%Reject%%&lt;/a> &lt;a href="#" class="button creation jsxc_accept">%%Accept%%&lt;/a>\
&lt;a href="#" class="button jsxc_reject" data-i18n="Reject">&lt;/a> &lt;a href="#" class="button creation jsxc_accept" data-i18n="Accept">&lt;/a>\
&lt;/p>';
jsxc.gui.template.allowMediaAccess = '&lt;p>%%Please_allow_access_to_microphone_and_camera%%&lt;/p>';
jsxc.gui.template.allowMediaAccess = '&lt;p data-i18n="Please_allow_access_to_microphone_and_camera">&lt;/p>';
jsxc.gui.template.videoWindow = '&lt;div class="jsxc_webrtc">\
&lt;div class="jsxc_chatarea">\
@@ -56,22 +55,22 @@ jsxc.gui.template.videoWindow = '&lt;div class="jsxc_webrtc">\
&lt;div class="jsxc_noRemoteVideo">\
&lt;div>\
&lt;div>&lt;/div>\
&lt;p>%%No_video_signal%%&lt;/p>\
&lt;p data-i18n="No_video_signal">&lt;/p>\
&lt;div>&lt;/div>\
&lt;/div>\
&lt;/div>\
&lt;/div>\
&lt;div class="jsxc_controlbar">\
&lt;button type="button" class="jsxc_hangUp">%%hang_up%%&lt;/button>\
&lt;button type="button" class="jsxc_hangUp" data-i18n="hang_up">&lt;/button>\
&lt;input type="range" class="jsxc_volume" min="0.0" max="1.0" step="0.05" value="0.5" />\
&lt;div class="jsxc_buttongroup">\
&lt;button type="button" class="jsxc_snapshot">%%snapshot%%&lt;/button>&lt;button type="button" class="jsxc_snapshots">&#9660;&lt;/button>\
&lt;button type="button" class="jsxc_snapshot" data-i18n="snapshot">&lt;/button>&lt;button type="button" class="jsxc_snapshots">&#9660;&lt;/button>\
&lt;/div>\
&lt;!-- &lt;button type="button" class="jsxc_mute_local">%%mute_my_audio%%&lt;/button>\
&lt;button type="button" class="jsxc_pause_local">%%pause_my_video%%&lt;/button> --> \
&lt;button type="button" class="jsxc_showchat">%%chat%%&lt;/button>\
&lt;button type="button" class="jsxc_fullscreen">%%fullscreen%%&lt;/button>\
&lt;button type="button" class="jsxc_info">%%Info%%&lt;/button>\
&lt;!-- &lt;button type="button" class="jsxc_mute_local" data-i18n="mute_my_audio">&lt;/button>\
&lt;button type="button" class="jsxc_pause_local" data-i18n="pause_my_video">&lt;/button> --> \
&lt;button type="button" class="jsxc_showchat" data-i18n="chat">&lt;/button>\
&lt;button type="button" class="jsxc_fullscreen" data-i18n="fullscreen">&lt;/button>\
&lt;button type="button" class="jsxc_info" data-i18n="Info">&lt;/button>\
&lt;/div>\
&lt;div class="jsxc_multi">\
&lt;div class="jsxc_snapshotbar">\
@@ -84,9 +83,6 @@ jsxc.gui.template.videoWindow = '&lt;div class="jsxc_webrtc">\
&lt;/div>\
&lt;/div>';
(function($) {
"use strict";
/**
* WebRTC namespace for jsxc.
*
@@ -252,7 +248,7 @@ jsxc.gui.template.videoWindow = '&lt;div class="jsxc_webrtc">\
return;
}
var videoIcon = $('&lt;div class="jsxc_video jsxc_disabled" title="' + jsxc.l.Start_video_call + '">&lt;/div>');
var videoIcon = $('&lt;div class="jsxc_video jsxc_disabled" title="' + $.t("Start_video_call") + '">&lt;/div>');
videoIcon.click(function() {
self.startCall(data.jid);
@@ -277,6 +273,10 @@ jsxc.gui.template.videoWindow = '&lt;div class="jsxc_webrtc">\
initWindow: function(event, win) {
var self = jsxc.webrtc;
if (win.hasClass('jsxc_groupchat')) {
return;
}
jsxc.debug('webrtc.initWindow');
if (!self.conn) {
@@ -308,7 +308,17 @@ jsxc.gui.template.videoWindow = '&lt;div class="jsxc_webrtc">\
}
var win = jsxc.gui.window.get(bid);
var jid = win.data('jid') || jsxc.storage.getUserItem('buddy', bid).jid;
var jid = win.data('jid');
var ls = jsxc.storage.getUserItem('buddy', bid);
if (typeof jid !== 'string') {
if (ls && typeof ls.jid === 'string') {
jid = ls.jid;
} else {
jsxc.debug('[webrtc] Could not update icon, because could not find jid for ' + bid);
return;
}
}
var el = win.find('.jsxc_video').add(jsxc.gui.roster.getItem(bid).find('.jsxc_video'));
@@ -316,28 +326,30 @@ jsxc.gui.template.videoWindow = '&lt;div class="jsxc_webrtc">\
var targetRes = Strophe.getResourceFromJid(jid);
if (targetRes === null) {
$.each(jsxc.storage.getUserItem('buddy', bid).res, function(index, val) {
$.each(jsxc.storage.getUserItem('buddy', bid).res || [], function(index, val) {
if (capableRes.indexOf(val) > -1) {
targetRes = val;
return false;
}
});
jid = jid + '/' + targetRes;
}
el.off('click');
if (capableRes.indexOf(targetRes) > -1) {
el.click(function() {
self.startCall(jid + '/' + targetRes);
self.startCall(jid);
});
el.removeClass('jsxc_disabled');
el.attr('title', jsxc.translate('%%Start video call%%'));
el.attr('title', $.t('Start_video_call'));
} else {
el.addClass('jsxc_disabled');
el.attr('title', jsxc.translate('%%Video call not possible.%%'));
el.attr('title', $.t('Video_call_not_possible'));
}
},
@@ -369,12 +381,14 @@ jsxc.gui.template.videoWindow = '&lt;div class="jsxc_webrtc">\
* @param status
* @private
*/
onPresence: function(ev, jid) {
onPresence: function(ev, jid, status, presence) {
var self = jsxc.webrtc;
jsxc.debug('webrtc.onpresence', jid);
if ($(presence).find('c[xmlns="' + Strophe.NS.CAPS + '"]').length === 0) {
jsxc.debug('webrtc.onpresence', jid);
self.updateIcon(jsxc.jidToBid(jid));
self.updateIcon(jsxc.jidToBid(jid));
}
},
/**
@@ -435,7 +449,13 @@ jsxc.gui.template.videoWindow = '&lt;div class="jsxc_webrtc">\
onCaps: function(event, jid) {
var self = jsxc.webrtc;
self.updateIcon(jsxc.jidToBid(jid));
if (jsxc.gui.roster.loaded) {
self.updateIcon(jsxc.jidToBid(jid));
} else {
$(document).on('cloaded.roster.jsxc', function() {
self.updateIcon(jsxc.jidToBid(jid));
});
}
},
/**
@@ -482,7 +502,7 @@ jsxc.gui.template.videoWindow = '&lt;div class="jsxc_webrtc">\
onMediaFailure: function(ev, err) {
this.setStatus('media failure');
jsxc.gui.window.postMessage(jsxc.jidToBid(jsxc.webrtc.last_caller), 'sys', jsxc.translate('%%Media failure%%: ') + err.name);
jsxc.gui.window.postMessage(jsxc.jidToBid(jsxc.webrtc.last_caller), 'sys', $.t('Media_failure') + err.name);
jsxc.debug('media failure: ' + err.name);
},
@@ -501,10 +521,10 @@ jsxc.gui.template.videoWindow = '&lt;div class="jsxc_webrtc">\
var sess = this.conn.jingle.sessions[sid];
var bid = jsxc.jidToBid(sess.peerjid);
jsxc.gui.window.postMessage(bid, 'sys', jsxc.translate('%%Incoming call.%%'));
jsxc.gui.window.postMessage(bid, 'sys', $.t('Incoming_call'));
// display notification
jsxc.notification.notify(jsxc.translate('%%Incoming call%%'), jsxc.translate('%%from%% ' + bid));
jsxc.notification.notify($.t('Incoming_call'), $.t('from') + ' ' + bid);
// send signal to partner
sess.sendRinging();
@@ -587,7 +607,7 @@ jsxc.gui.template.videoWindow = '&lt;div class="jsxc_webrtc">\
$(document).off('error.jingle');
jsxc.gui.dialog.close();
jsxc.gui.window.postMessage(bid, 'sys', jsxc.translate('%%Call terminated%%' + (reason ? (': %%' + reason + '%%') : '') + '.'));
jsxc.gui.window.postMessage(bid, 'sys', ($.t('Call_terminated') + (reason ? (': ' + $.t(reason)) : '') + '.'));
},
/**
@@ -676,30 +696,14 @@ jsxc.gui.template.videoWindow = '&lt;div class="jsxc_webrtc">\
sess.local_fp = SDPUtil.parse_fingerprint(SDPUtil.find_line(localSDP, 'a=fingerprint:')).fingerprint;
sess.remote_fp = SDPUtil.parse_fingerprint(SDPUtil.find_line(remoteSDP, 'a=fingerprint:')).fingerprint;
var ip_regex = "(\\d{1,3}\\.\\d{1,3}.\\d{1,3}\\.\\d{1,3}) \\d+ typ host";
sess.remote_ip = remoteSDP.match(new RegExp(ip_regex))[1];
sess.local_ip = localSDP.match(new RegExp(ip_regex))[1];
var regex = new RegExp(ip_regex, 'g');
var match;
while ((match = regex.exec(remoteSDP)) !== null) {
if (match[1] !== sess.remote_ip) {
alert('!!! WARNING !!!\n\nPossible Man-in-the-middle attack detected!\n\nYou should close the connection.');
return;
}
}
var text = '&lt;p>';
text += '&lt;b>' + jsxc.translate('%%Local IP%%: ') + '&lt;/b>' + sess.local_ip + '&lt;br />';
text += '&lt;b>' + jsxc.translate('%%Remote IP%%: ') + '&lt;/b>' + sess.remote_ip + '&lt;br />';
text += '&lt;b>' + jsxc.translate('%%Local Fingerprint%%: ') + '&lt;/b>' + sess.local_fp + '&lt;br />';
text += '&lt;b>' + jsxc.translate('%%Remote Fingerprint%%: ') + '&lt;/b>' + sess.remote_fp;
text += '&lt;b>' + $.t('Local_Fingerprint') + ': &lt;/b>' + sess.local_fp + '&lt;br />';
text += '&lt;b>' + $.t('Remote_Fingerprint') + ': &lt;/b>' + sess.remote_fp;
text += '&lt;/p>';
$('#jsxc_dialog .jsxc_infobar').html(text);
} else if (iceCon === 'failed') {
jsxc.gui.window.postMessage(jsxc.jidToBid(sess.peerjid), 'sys', jsxc.translate('%%ICE connection failure%%.'));
jsxc.gui.window.postMessage(jsxc.jidToBid(sess.peerjid), 'sys', $.t('ICE_connection_failure'));
$(document).off('cleanup.dialog.jsxc');
@@ -741,7 +745,7 @@ jsxc.gui.template.videoWindow = '&lt;div class="jsxc_webrtc">\
'finish.mediaready.jsxc': function() {
self.setStatus('Initiate call');
jsxc.gui.window.postMessage(jsxc.jidToBid(jid), 'sys', jsxc.translate('%%Call started.%%'));
jsxc.gui.window.postMessage(jsxc.jidToBid(jid), 'sys', $.t('Call_started'));
$(document).one('error.jingle', function(e, sid, error) {
if (error.source !== 'offer') {
@@ -1005,69 +1009,6 @@ jsxc.gui.template.videoWindow = '&lt;div class="jsxc_webrtc">\
}
});
$.extend(jsxc.l10n.en, {
Please_allow_access_to_microphone_and_camera: 'Please click the "Allow" button at the top, to allow access to microphone and camera.',
Incoming_call: 'Incoming call',
from: 'from',
Do_you_want_to_accept_the_call_from: 'Do you want to accept the call from',
Reject: 'Reject',
Accept: 'Accept',
hang_up: 'hang up',
snapshot: 'snapshot',
mute_my_audio: 'mute my audio',
pause_my_video: 'pause my video',
fullscreen: 'fullscreen',
Info: 'Info',
Local_IP: 'Local IP',
Remote_IP: 'Remote IP',
Local_Fingerprint: 'Local fingerprint',
Remote_Fingerprint: 'Remote fingerprint',
Video_call_not_possible: 'Video call not possible. Your buddy does not support video calls.',
Start_video_call: 'Start video call'
});
$.extend(jsxc.l10n.de, {
Please_allow_access_to_microphone_and_camera: 'Bitte klick auf den "Zulassen" Button oben, um den Zugriff auf Kamera und Mikrofon zu erlauben.',
Incoming_call: 'Eingehender Anruf',
from: 'von',
Do_you_want_to_accept_the_call_from: 'Möchtest Du den Anruf annehmen von',
Reject: 'Ablehnen',
Accept: 'Annehmen',
hang_up: 'Auflegen',
snapshot: 'Schnappschuss',
mute_my_audio: 'Mein Ton aus',
pause_my_video: 'Mein Video pausieren',
fullscreen: 'Vollbild',
Info: 'Info',
Local_IP: 'Lokale IP',
Remote_IP: 'Remote IP',
Local_Fingerprint: 'Lokaler Fingerprint',
Remote_Fingerprint: 'Remote Fingerprint',
Video_call_not_possible: 'Videoanruf nicht verfügbar. Dein Gesprächspartner unterstützt keine Videotelefonie.',
Start_video_call: 'Starte Videoanruf'
});
$.extend(jsxc.l10n.es, {
Please_allow_access_to_microphone_and_camera: 'Por favor, permitir el acceso al micrófono y la cámara.',
Incoming_call: 'Llamada entrante',
from: 'de',
Do_you_want_to_accept_the_call_from: 'Desea aceptar la llamada de',
Reject: 'Rechazar',
Accept: 'Aceptar',
hang_up: 'colgar',
snapshot: 'instantánea',
mute_my_audio: 'silenciar mi audio',
pause_my_video: 'pausar mi vídeo',
fullscreen: 'pantalla completa',
Info: 'Info',
Local_IP: 'IP local',
Remote_IP: 'IP remota',
Local_Fingerprint: 'Firma digital local',
Remote_Fingerprint: 'Firma digital remota',
Video_call_not_possible: 'Llamada de vídeo no es posible',
Start_video_call: 'Iniciar llamada de vídeo'
});
}(jQuery));
</code></pre>
</article>
</section>
@@ -1078,13 +1019,13 @@ jsxc.gui.template.videoWindow = '&lt;div class="jsxc_webrtc">\
</div>
<nav>
<h2><a href="index.html">Index</a></h2><h3>Namespaces</h3><ul><li><a href="jsxc.html">jsxc</a></li><li><a href="jsxc.gui.html">gui</a></li><li><a href="jsxc.gui.dialog.html">dialog</a></li><li><a href="jsxc.gui.queryActions.html">queryActions</a></li><li><a href="jsxc.gui.roster.html">roster</a></li><li><a href="jsxc.gui.template.html">template</a></li><li><a href="jsxc.gui.window.html">window</a></li><li><a href="jsxc.l10n.html">l10n</a></li><li><a href="jsxc.notification.html">notification</a></li><li><a href="jsxc.options.html">options</a></li><li><a href="jsxc.otr.html">otr</a></li><li><a href="jsxc.storage.html">storage</a></li><li><a href="jsxc.webrtc.html">webrtc</a></li><li><a href="jsxc.xmpp.html">xmpp</a></li><li><a href="jsxc.xmpp.carbons.html">carbons</a></li></ul>
<h2><a href="index.html">Index</a></h2><h3>Namespaces</h3><ul><li><a href="jsxc.html">jsxc</a></li><li><a href="jsxc.gui.html">gui</a></li><li><a href="jsxc.gui.dialog.html">dialog</a></li><li><a href="jsxc.gui.queryActions.html">queryActions</a></li><li><a href="jsxc.gui.roster.html">roster</a></li><li><a href="jsxc.gui.template.html">template</a></li><li><a href="jsxc.gui.window.html">window</a></li><li><a href="jsxc.muc.html">muc</a></li><li><a href="jsxc.notification.html">notification</a></li><li><a href="jsxc.options.html">options</a></li><li><a href="jsxc.otr.html">otr</a></li><li><a href="jsxc.storage.html">storage</a></li><li><a href="jsxc.webrtc.html">webrtc</a></li><li><a href="jsxc.xmpp.html">xmpp</a></li><li><a href="jsxc.xmpp.carbons.html">carbons</a></li></ul><h3><a href="global.html">Global</a></h3>
</nav>
<br clear="both">
<footer>
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Wed Feb 25 2015 19:15:12 GMT+0100 (CET)
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Sat May 23 2015 16:03:18 GMT+0200 (CEST)
</footer>
<script> prettyPrint(); </script>
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+2948
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+35 -17
Ver Arquivo
@@ -66,7 +66,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line5433">line 5433</a>
<a href="jsxc.lib.notification.js.html">jsxc.lib.notification.js</a>, <a href="jsxc.lib.notification.js.html#line1">line 1</a>
</li></ul></dd>
@@ -134,7 +134,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line5441">line 5441</a>
<a href="jsxc.lib.notification.js.html">jsxc.lib.notification.js</a>, <a href="jsxc.lib.notification.js.html#line9">line 9</a>
</li></ul></dd>
@@ -199,7 +199,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line5599">line 5599</a>
<a href="jsxc.lib.notification.js.html">jsxc.lib.notification.js</a>, <a href="jsxc.lib.notification.js.html#line191">line 191</a>
</li></ul></dd>
@@ -257,8 +257,8 @@
<div class="description">
Checks if browser has support for notifications and add on chrome to
the default api.
Checks if browser has support for notifications and add on chrome to the
default api.
</div>
@@ -291,7 +291,7 @@ the default api.
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line5511">line 5511</a>
<a href="jsxc.lib.notification.js.html">jsxc.lib.notification.js</a>, <a href="jsxc.lib.notification.js.html#line112">line 112</a>
</li></ul></dd>
@@ -382,7 +382,7 @@ the default api.
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line5448">line 5448</a>
<a href="jsxc.lib.notification.js.html">jsxc.lib.notification.js</a>, <a href="jsxc.lib.notification.js.html#line16">line 16</a>
</li></ul></dd>
@@ -500,7 +500,7 @@ the default api.
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line5658">line 5658</a>
<a href="jsxc.lib.notification.js.html">jsxc.lib.notification.js</a>, <a href="jsxc.lib.notification.js.html#line250">line 250</a>
</li></ul></dd>
@@ -528,7 +528,7 @@ the default api.
<dt>
<h4 class="name" id="notify"><span class="type-signature">&lt;static> </span>notify<span class="signature">(title, msg, d, force, soundFile, loop)</span><span class="type-signature"></span></h4>
<h4 class="name" id="notify"><span class="type-signature">&lt;static> </span>notify<span class="signature">(title, msg, d, force, soundFile, loop, source)</span><span class="type-signature"></span></h4>
</dt>
@@ -675,6 +675,24 @@ the default api.
</tr>
<tr>
<td class="name"><code>source</code></td>
<td class="type">
</td>
<td class="description last">Bid which triggered this notification</td>
</tr>
</tbody>
</table>
@@ -702,7 +720,7 @@ the default api.
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line5475">line 5475</a>
<a href="jsxc.lib.notification.js.html">jsxc.lib.notification.js</a>, <a href="jsxc.lib.notification.js.html#line49">line 49</a>
</li></ul></dd>
@@ -865,7 +883,7 @@ the default api.
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line5611">line 5611</a>
<a href="jsxc.lib.notification.js.html">jsxc.lib.notification.js</a>, <a href="jsxc.lib.notification.js.html#line203">line 203</a>
</li></ul></dd>
@@ -935,7 +953,7 @@ messages.
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line5555">line 5555</a>
<a href="jsxc.lib.notification.js.html">jsxc.lib.notification.js</a>, <a href="jsxc.lib.notification.js.html#line156">line 156</a>
</li></ul></dd>
@@ -1004,7 +1022,7 @@ messages.
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line5580">line 5580</a>
<a href="jsxc.lib.notification.js.html">jsxc.lib.notification.js</a>, <a href="jsxc.lib.notification.js.html#line172">line 172</a>
</li></ul></dd>
@@ -1073,7 +1091,7 @@ messages.
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line5642">line 5642</a>
<a href="jsxc.lib.notification.js.html">jsxc.lib.notification.js</a>, <a href="jsxc.lib.notification.js.html#line234">line 234</a>
</li></ul></dd>
@@ -1191,7 +1209,7 @@ messages.
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line5673">line 5673</a>
<a href="jsxc.lib.notification.js.html">jsxc.lib.notification.js</a>, <a href="jsxc.lib.notification.js.html#line265">line 265</a>
</li></ul></dd>
@@ -1232,13 +1250,13 @@ messages.
</div>
<nav>
<h2><a href="index.html">Index</a></h2><h3>Namespaces</h3><ul><li><a href="jsxc.html">jsxc</a></li><li><a href="jsxc.gui.html">gui</a></li><li><a href="jsxc.gui.dialog.html">dialog</a></li><li><a href="jsxc.gui.queryActions.html">queryActions</a></li><li><a href="jsxc.gui.roster.html">roster</a></li><li><a href="jsxc.gui.template.html">template</a></li><li><a href="jsxc.gui.window.html">window</a></li><li><a href="jsxc.l10n.html">l10n</a></li><li><a href="jsxc.notification.html">notification</a></li><li><a href="jsxc.options.html">options</a></li><li><a href="jsxc.otr.html">otr</a></li><li><a href="jsxc.storage.html">storage</a></li><li><a href="jsxc.webrtc.html">webrtc</a></li><li><a href="jsxc.xmpp.html">xmpp</a></li><li><a href="jsxc.xmpp.carbons.html">carbons</a></li></ul>
<h2><a href="index.html">Index</a></h2><h3>Namespaces</h3><ul><li><a href="jsxc.html">jsxc</a></li><li><a href="jsxc.gui.html">gui</a></li><li><a href="jsxc.gui.dialog.html">dialog</a></li><li><a href="jsxc.gui.queryActions.html">queryActions</a></li><li><a href="jsxc.gui.roster.html">roster</a></li><li><a href="jsxc.gui.template.html">template</a></li><li><a href="jsxc.gui.window.html">window</a></li><li><a href="jsxc.muc.html">muc</a></li><li><a href="jsxc.notification.html">notification</a></li><li><a href="jsxc.options.html">options</a></li><li><a href="jsxc.otr.html">otr</a></li><li><a href="jsxc.storage.html">storage</a></li><li><a href="jsxc.webrtc.html">webrtc</a></li><li><a href="jsxc.xmpp.html">xmpp</a></li><li><a href="jsxc.xmpp.carbons.html">carbons</a></li></ul><h3><a href="global.html">Global</a></h3>
</nav>
<br clear="both">
<footer>
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Wed Feb 25 2015 19:15:14 GMT+0100 (CET)
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Sat May 23 2015 16:03:20 GMT+0200 (CEST)
</footer>
<script> prettyPrint(); </script>
+167 -27
Ver Arquivo
@@ -66,7 +66,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line740">line 740</a>
<a href="jsxc.lib.options.js.html">jsxc.lib.options.js</a>, <a href="jsxc.lib.options.js.html#line1">line 1</a>
</li></ul></dd>
@@ -134,7 +134,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line748">line 748</a>
<a href="jsxc.lib.options.js.html">jsxc.lib.options.js</a>, <a href="jsxc.lib.options.js.html#line9">line 9</a>
</li></ul></dd>
@@ -188,7 +188,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line823">line 823</a>
<a href="jsxc.lib.options.js.html">jsxc.lib.options.js</a>, <a href="jsxc.lib.options.js.html#line90">line 90</a>
</li></ul></dd>
@@ -242,7 +242,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line754">line 754</a>
<a href="jsxc.lib.options.js.html">jsxc.lib.options.js</a>, <a href="jsxc.lib.options.js.html#line15">line 15</a>
</li></ul></dd>
@@ -296,7 +296,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line820">line 820</a>
<a href="jsxc.lib.options.js.html">jsxc.lib.options.js</a>, <a href="jsxc.lib.options.js.html#line87">line 87</a>
</li></ul></dd>
@@ -350,7 +350,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line849">line 849</a>
<a href="jsxc.lib.options.js.html">jsxc.lib.options.js</a>, <a href="jsxc.lib.options.js.html#line116">line 116</a>
</li></ul></dd>
@@ -404,7 +404,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line785">line 785</a>
<a href="jsxc.lib.options.js.html">jsxc.lib.options.js</a>, <a href="jsxc.lib.options.js.html#line46">line 46</a>
</li></ul></dd>
@@ -458,7 +458,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line838">line 838</a>
<a href="jsxc.lib.options.js.html">jsxc.lib.options.js</a>, <a href="jsxc.lib.options.js.html#line105">line 105</a>
</li></ul></dd>
@@ -512,7 +512,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line814">line 814</a>
<a href="jsxc.lib.options.js.html">jsxc.lib.options.js</a>, <a href="jsxc.lib.options.js.html#line81">line 81</a>
</li></ul></dd>
@@ -566,7 +566,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line852">line 852</a>
<a href="jsxc.lib.options.js.html">jsxc.lib.options.js</a>, <a href="jsxc.lib.options.js.html#line119">line 119</a>
</li></ul></dd>
@@ -620,7 +620,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line829">line 829</a>
<a href="jsxc.lib.options.js.html">jsxc.lib.options.js</a>, <a href="jsxc.lib.options.js.html#line96">line 96</a>
</li></ul></dd>
@@ -674,7 +674,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line817">line 817</a>
<a href="jsxc.lib.options.js.html">jsxc.lib.options.js</a>, <a href="jsxc.lib.options.js.html#line84">line 84</a>
</li></ul></dd>
@@ -728,7 +728,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line757">line 757</a>
<a href="jsxc.lib.options.js.html">jsxc.lib.options.js</a>, <a href="jsxc.lib.options.js.html#line18">line 18</a>
</li></ul></dd>
@@ -782,7 +782,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line832">line 832</a>
<a href="jsxc.lib.options.js.html">jsxc.lib.options.js</a>, <a href="jsxc.lib.options.js.html#line99">line 99</a>
</li></ul></dd>
@@ -836,7 +836,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line776">line 776</a>
<a href="jsxc.lib.options.js.html">jsxc.lib.options.js</a>, <a href="jsxc.lib.options.js.html#line37">line 37</a>
</li></ul></dd>
@@ -890,7 +890,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line835">line 835</a>
<a href="jsxc.lib.options.js.html">jsxc.lib.options.js</a>, <a href="jsxc.lib.options.js.html#line102">line 102</a>
</li></ul></dd>
@@ -944,7 +944,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line826">line 826</a>
<a href="jsxc.lib.options.js.html">jsxc.lib.options.js</a>, <a href="jsxc.lib.options.js.html#line93">line 93</a>
</li></ul></dd>
@@ -998,7 +998,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line751">line 751</a>
<a href="jsxc.lib.options.js.html">jsxc.lib.options.js</a>, <a href="jsxc.lib.options.js.html#line12">line 12</a>
</li></ul></dd>
@@ -1052,7 +1052,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line766">line 766</a>
<a href="jsxc.lib.options.js.html">jsxc.lib.options.js</a>, <a href="jsxc.lib.options.js.html#line27">line 27</a>
</li></ul></dd>
@@ -1163,7 +1163,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line860">line 860</a>
<a href="jsxc.lib.options.js.html">jsxc.lib.options.js</a>, <a href="jsxc.lib.options.js.html#line127">line 127</a>
</li></ul></dd>
@@ -1233,7 +1233,7 @@ connection is found.
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line844">line 844</a>
<a href="jsxc.lib.options.js.html">jsxc.lib.options.js</a>, <a href="jsxc.lib.options.js.html#line111">line 111</a>
</li></ul></dd>
@@ -1350,7 +1350,7 @@ connection is found.
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line195">line 195</a>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line196">line 196</a>
</li></ul></dd>
@@ -1383,6 +1383,146 @@ connection is found.
</dd>
<dt>
<h4 class="name" id="getUsers"><span class="type-signature">&lt;static> </span>getUsers<span class="signature">(search, cb)</span><span class="type-signature"></span></h4>
</dt>
<dd>
<div class="description">
Returns a list of usernames and aliases
</div>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>search</code></td>
<td class="type">
<span class="param-type">string</span>
</td>
<td class="description last">Search token (start with)</td>
</tr>
<tr>
<td class="name"><code>cb</code></td>
<td class="type">
<span class="param-type"><a href="global.html#getUsers-cb">getUsers-cb</a></span>
</td>
<td class="description last">Called with list of users</td>
</tr>
</tbody>
</table>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.options.js.html">jsxc.lib.options.js</a>, <a href="jsxc.lib.options.js.html#line161">line 161</a>
</li></ul></dd>
</dl>
</dd>
@@ -1490,7 +1630,7 @@ connection is found.
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line872">line 872</a>
<a href="jsxc.lib.options.js.html">jsxc.lib.options.js</a>, <a href="jsxc.lib.options.js.html#line139">line 139</a>
</li></ul></dd>
@@ -1624,7 +1764,7 @@ connection is found.
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line883">line 883</a>
<a href="jsxc.lib.options.js.html">jsxc.lib.options.js</a>, <a href="jsxc.lib.options.js.html#line150">line 150</a>
</li></ul></dd>
@@ -1786,7 +1926,7 @@ connection is found.
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line207">line 207</a>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line208">line 208</a>
</li></ul></dd>
@@ -1827,13 +1967,13 @@ connection is found.
</div>
<nav>
<h2><a href="index.html">Index</a></h2><h3>Namespaces</h3><ul><li><a href="jsxc.html">jsxc</a></li><li><a href="jsxc.gui.html">gui</a></li><li><a href="jsxc.gui.dialog.html">dialog</a></li><li><a href="jsxc.gui.queryActions.html">queryActions</a></li><li><a href="jsxc.gui.roster.html">roster</a></li><li><a href="jsxc.gui.template.html">template</a></li><li><a href="jsxc.gui.window.html">window</a></li><li><a href="jsxc.l10n.html">l10n</a></li><li><a href="jsxc.notification.html">notification</a></li><li><a href="jsxc.options.html">options</a></li><li><a href="jsxc.otr.html">otr</a></li><li><a href="jsxc.storage.html">storage</a></li><li><a href="jsxc.webrtc.html">webrtc</a></li><li><a href="jsxc.xmpp.html">xmpp</a></li><li><a href="jsxc.xmpp.carbons.html">carbons</a></li></ul>
<h2><a href="index.html">Index</a></h2><h3>Namespaces</h3><ul><li><a href="jsxc.html">jsxc</a></li><li><a href="jsxc.gui.html">gui</a></li><li><a href="jsxc.gui.dialog.html">dialog</a></li><li><a href="jsxc.gui.queryActions.html">queryActions</a></li><li><a href="jsxc.gui.roster.html">roster</a></li><li><a href="jsxc.gui.template.html">template</a></li><li><a href="jsxc.gui.window.html">window</a></li><li><a href="jsxc.muc.html">muc</a></li><li><a href="jsxc.notification.html">notification</a></li><li><a href="jsxc.options.html">options</a></li><li><a href="jsxc.otr.html">otr</a></li><li><a href="jsxc.storage.html">storage</a></li><li><a href="jsxc.webrtc.html">webrtc</a></li><li><a href="jsxc.xmpp.html">xmpp</a></li><li><a href="jsxc.xmpp.carbons.html">carbons</a></li></ul><h3><a href="global.html">Global</a></h3>
</nav>
<br clear="both">
<footer>
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Wed Feb 25 2015 19:15:14 GMT+0100 (CET)
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Sat May 23 2015 16:03:20 GMT+0200 (CEST)
</footer>
<script> prettyPrint(); </script>
+17 -17
Ver Arquivo
@@ -64,7 +64,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line4971">line 4971</a>
<a href="jsxc.lib.otr.js.html">jsxc.lib.otr.js</a>, <a href="jsxc.lib.otr.js.html#line2">line 2</a>
</li></ul></dd>
@@ -132,7 +132,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line4976">line 4976</a>
<a href="jsxc.lib.otr.js.html">jsxc.lib.otr.js</a>, <a href="jsxc.lib.otr.js.html#line7">line 7</a>
</li></ul></dd>
@@ -197,7 +197,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line5398">line 5398</a>
<a href="jsxc.lib.otr.js.html">jsxc.lib.otr.js</a>, <a href="jsxc.lib.otr.js.html#line452">line 452</a>
</li></ul></dd>
@@ -314,7 +314,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line5261">line 5261</a>
<a href="jsxc.lib.otr.js.html">jsxc.lib.otr.js</a>, <a href="jsxc.lib.otr.js.html#line300">line 300</a>
</li></ul></dd>
@@ -431,7 +431,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line5024">line 5024</a>
<a href="jsxc.lib.otr.js.html">jsxc.lib.otr.js</a>, <a href="jsxc.lib.otr.js.html#line55">line 55</a>
</li></ul></dd>
@@ -518,7 +518,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line5328">line 5328</a>
<a href="jsxc.lib.otr.js.html">jsxc.lib.otr.js</a>, <a href="jsxc.lib.otr.js.html#line367">line 367</a>
</li></ul></dd>
@@ -653,7 +653,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line5412">line 5412</a>
<a href="jsxc.lib.otr.js.html">jsxc.lib.otr.js</a>, <a href="jsxc.lib.otr.js.html#line466">line 466</a>
</li></ul></dd>
@@ -770,7 +770,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line5230">line 5230</a>
<a href="jsxc.lib.otr.js.html">jsxc.lib.otr.js</a>, <a href="jsxc.lib.otr.js.html#line265">line 265</a>
</li></ul></dd>
@@ -923,7 +923,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line5245">line 5245</a>
<a href="jsxc.lib.otr.js.html">jsxc.lib.otr.js</a>, <a href="jsxc.lib.otr.js.html#line282">line 282</a>
</li></ul></dd>
@@ -1101,7 +1101,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line5173">line 5173</a>
<a href="jsxc.lib.otr.js.html">jsxc.lib.otr.js</a>, <a href="jsxc.lib.otr.js.html#line204">line 204</a>
</li></ul></dd>
@@ -1376,7 +1376,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line4990">line 4990</a>
<a href="jsxc.lib.otr.js.html">jsxc.lib.otr.js</a>, <a href="jsxc.lib.otr.js.html#line21">line 21</a>
</li></ul></dd>
@@ -1493,7 +1493,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line5293">line 5293</a>
<a href="jsxc.lib.otr.js.html">jsxc.lib.otr.js</a>, <a href="jsxc.lib.otr.js.html#line332">line 332</a>
</li></ul></dd>
@@ -1633,7 +1633,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line5010">line 5010</a>
<a href="jsxc.lib.otr.js.html">jsxc.lib.otr.js</a>, <a href="jsxc.lib.otr.js.html#line41">line 41</a>
</li></ul></dd>
@@ -1824,7 +1824,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line5204">line 5204</a>
<a href="jsxc.lib.otr.js.html">jsxc.lib.otr.js</a>, <a href="jsxc.lib.otr.js.html#line235">line 235</a>
</li></ul></dd>
@@ -1959,7 +1959,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line5216">line 5216</a>
<a href="jsxc.lib.otr.js.html">jsxc.lib.otr.js</a>, <a href="jsxc.lib.otr.js.html#line247">line 247</a>
</li></ul></dd>
@@ -2018,13 +2018,13 @@
</div>
<nav>
<h2><a href="index.html">Index</a></h2><h3>Namespaces</h3><ul><li><a href="jsxc.html">jsxc</a></li><li><a href="jsxc.gui.html">gui</a></li><li><a href="jsxc.gui.dialog.html">dialog</a></li><li><a href="jsxc.gui.queryActions.html">queryActions</a></li><li><a href="jsxc.gui.roster.html">roster</a></li><li><a href="jsxc.gui.template.html">template</a></li><li><a href="jsxc.gui.window.html">window</a></li><li><a href="jsxc.l10n.html">l10n</a></li><li><a href="jsxc.notification.html">notification</a></li><li><a href="jsxc.options.html">options</a></li><li><a href="jsxc.otr.html">otr</a></li><li><a href="jsxc.storage.html">storage</a></li><li><a href="jsxc.webrtc.html">webrtc</a></li><li><a href="jsxc.xmpp.html">xmpp</a></li><li><a href="jsxc.xmpp.carbons.html">carbons</a></li></ul>
<h2><a href="index.html">Index</a></h2><h3>Namespaces</h3><ul><li><a href="jsxc.html">jsxc</a></li><li><a href="jsxc.gui.html">gui</a></li><li><a href="jsxc.gui.dialog.html">dialog</a></li><li><a href="jsxc.gui.queryActions.html">queryActions</a></li><li><a href="jsxc.gui.roster.html">roster</a></li><li><a href="jsxc.gui.template.html">template</a></li><li><a href="jsxc.gui.window.html">window</a></li><li><a href="jsxc.muc.html">muc</a></li><li><a href="jsxc.notification.html">notification</a></li><li><a href="jsxc.options.html">options</a></li><li><a href="jsxc.otr.html">otr</a></li><li><a href="jsxc.storage.html">storage</a></li><li><a href="jsxc.webrtc.html">webrtc</a></li><li><a href="jsxc.xmpp.html">xmpp</a></li><li><a href="jsxc.xmpp.carbons.html">carbons</a></li></ul><h3><a href="global.html">Global</a></h3>
</nav>
<br clear="both">
<footer>
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Wed Feb 25 2015 19:15:14 GMT+0100 (CET)
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Sat May 23 2015 16:03:20 GMT+0200 (CEST)
</footer>
<script> prettyPrint(); </script>
+36 -18
Ver Arquivo
@@ -66,7 +66,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line4370">line 4370</a>
<a href="jsxc.lib.storage.js.html">jsxc.lib.storage.js</a>, <a href="jsxc.lib.storage.js.html#line3">line 3</a>
</li></ul></dd>
@@ -134,7 +134,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line4381">line 4381</a>
<a href="jsxc.lib.storage.js.html">jsxc.lib.storage.js</a>, <a href="jsxc.lib.storage.js.html#line14">line 14</a>
</li></ul></dd>
@@ -270,7 +270,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line4449">line 4449</a>
<a href="jsxc.lib.storage.js.html">jsxc.lib.storage.js</a>, <a href="jsxc.lib.storage.js.html#line82">line 82</a>
</li></ul></dd>
@@ -383,7 +383,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line4390">line 4390</a>
<a href="jsxc.lib.storage.js.html">jsxc.lib.storage.js</a>, <a href="jsxc.lib.storage.js.html#line23">line 23</a>
</li></ul></dd>
@@ -517,7 +517,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line4466">line 4466</a>
<a href="jsxc.lib.storage.js.html">jsxc.lib.storage.js</a>, <a href="jsxc.lib.storage.js.html#line99">line 99</a>
</li></ul></dd>
@@ -667,7 +667,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line4578">line 4578</a>
<a href="jsxc.lib.storage.js.html">jsxc.lib.storage.js</a>, <a href="jsxc.lib.storage.js.html#line211">line 211</a>
</li></ul></dd>
@@ -901,7 +901,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line4628">line 4628</a>
<a href="jsxc.lib.storage.js.html">jsxc.lib.storage.js</a>, <a href="jsxc.lib.storage.js.html#line261">line 261</a>
</li></ul></dd>
@@ -1064,7 +1064,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line4591">line 4591</a>
<a href="jsxc.lib.storage.js.html">jsxc.lib.storage.js</a>, <a href="jsxc.lib.storage.js.html#line224">line 224</a>
</li></ul></dd>
@@ -1222,7 +1222,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line4485">line 4485</a>
<a href="jsxc.lib.storage.js.html">jsxc.lib.storage.js</a>, <a href="jsxc.lib.storage.js.html#line118">line 118</a>
</li></ul></dd>
@@ -1334,7 +1334,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line4503">line 4503</a>
<a href="jsxc.lib.storage.js.html">jsxc.lib.storage.js</a>, <a href="jsxc.lib.storage.js.html#line136">line 136</a>
</li></ul></dd>
@@ -1464,7 +1464,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line4946">line 4946</a>
<a href="jsxc.lib.storage.js.html">jsxc.lib.storage.js</a>, <a href="jsxc.lib.storage.js.html#line589">line 589</a>
</li></ul></dd>
@@ -1514,7 +1514,7 @@
<dt>
<h4 class="name" id="saveMessage"><span class="type-signature">&lt;static> </span>saveMessage<span class="signature">(bid, direction, msg, encrypted, forwarded)</span><span class="type-signature"></span></h4>
<h4 class="name" id="saveMessage"><span class="type-signature">&lt;static> </span>saveMessage<span class="signature">(bid, direction, msg, encrypted, forwarded, sender)</span><span class="type-signature"></span></h4>
</dt>
@@ -1639,6 +1639,24 @@
<td class="description last"></td>
</tr>
<tr>
<td class="name"><code>sender</code></td>
<td class="type">
</td>
<td class="description last"></td>
</tr>
@@ -1670,7 +1688,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line4913">line 4913</a>
<a href="jsxc.lib.storage.js.html">jsxc.lib.storage.js</a>, <a href="jsxc.lib.storage.js.html#line555">line 555</a>
</li></ul></dd>
@@ -1843,7 +1861,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line4404">line 4404</a>
<a href="jsxc.lib.storage.js.html">jsxc.lib.storage.js</a>, <a href="jsxc.lib.storage.js.html#line37">line 37</a>
</li></ul></dd>
@@ -2069,7 +2087,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line4525">line 4525</a>
<a href="jsxc.lib.storage.js.html">jsxc.lib.storage.js</a>, <a href="jsxc.lib.storage.js.html#line158">line 158</a>
</li></ul></dd>
@@ -2264,7 +2282,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line4557">line 4557</a>
<a href="jsxc.lib.storage.js.html">jsxc.lib.storage.js</a>, <a href="jsxc.lib.storage.js.html#line190">line 190</a>
</li></ul></dd>
@@ -2305,13 +2323,13 @@
</div>
<nav>
<h2><a href="index.html">Index</a></h2><h3>Namespaces</h3><ul><li><a href="jsxc.html">jsxc</a></li><li><a href="jsxc.gui.html">gui</a></li><li><a href="jsxc.gui.dialog.html">dialog</a></li><li><a href="jsxc.gui.queryActions.html">queryActions</a></li><li><a href="jsxc.gui.roster.html">roster</a></li><li><a href="jsxc.gui.template.html">template</a></li><li><a href="jsxc.gui.window.html">window</a></li><li><a href="jsxc.l10n.html">l10n</a></li><li><a href="jsxc.notification.html">notification</a></li><li><a href="jsxc.options.html">options</a></li><li><a href="jsxc.otr.html">otr</a></li><li><a href="jsxc.storage.html">storage</a></li><li><a href="jsxc.webrtc.html">webrtc</a></li><li><a href="jsxc.xmpp.html">xmpp</a></li><li><a href="jsxc.xmpp.carbons.html">carbons</a></li></ul>
<h2><a href="index.html">Index</a></h2><h3>Namespaces</h3><ul><li><a href="jsxc.html">jsxc</a></li><li><a href="jsxc.gui.html">gui</a></li><li><a href="jsxc.gui.dialog.html">dialog</a></li><li><a href="jsxc.gui.queryActions.html">queryActions</a></li><li><a href="jsxc.gui.roster.html">roster</a></li><li><a href="jsxc.gui.template.html">template</a></li><li><a href="jsxc.gui.window.html">window</a></li><li><a href="jsxc.muc.html">muc</a></li><li><a href="jsxc.notification.html">notification</a></li><li><a href="jsxc.options.html">options</a></li><li><a href="jsxc.otr.html">otr</a></li><li><a href="jsxc.storage.html">storage</a></li><li><a href="jsxc.webrtc.html">webrtc</a></li><li><a href="jsxc.xmpp.html">xmpp</a></li><li><a href="jsxc.xmpp.carbons.html">carbons</a></li></ul><h3><a href="global.html">Global</a></h3>
</nav>
<br clear="both">
<footer>
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Wed Feb 25 2015 19:15:14 GMT+0100 (CET)
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Sat May 23 2015 16:03:20 GMT+0200 (CEST)
</footer>
<script> prettyPrint(); </script>
+32 -32
Ver Arquivo
@@ -66,7 +66,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.webrtc.js.html">jsxc.lib.webrtc.js</a>, <a href="jsxc.lib.webrtc.js.html#line63">line 63</a>
<a href="jsxc.lib.webrtc.js.html">jsxc.lib.webrtc.js</a>, <a href="jsxc.lib.webrtc.js.html#line59">line 59</a>
</li></ul></dd>
@@ -134,7 +134,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.webrtc.js.html">jsxc.lib.webrtc.js</a>, <a href="jsxc.lib.webrtc.js.html#line82">line 82</a>
<a href="jsxc.lib.webrtc.js.html">jsxc.lib.webrtc.js</a>, <a href="jsxc.lib.webrtc.js.html#line78">line 78</a>
</li></ul></dd>
@@ -188,7 +188,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.webrtc.js.html">jsxc.lib.webrtc.js</a>, <a href="jsxc.lib.webrtc.js.html#line88">line 88</a>
<a href="jsxc.lib.webrtc.js.html">jsxc.lib.webrtc.js</a>, <a href="jsxc.lib.webrtc.js.html#line84">line 84</a>
</li></ul></dd>
@@ -242,7 +242,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.webrtc.js.html">jsxc.lib.webrtc.js</a>, <a href="jsxc.lib.webrtc.js.html#line70">line 70</a>
<a href="jsxc.lib.webrtc.js.html">jsxc.lib.webrtc.js</a>, <a href="jsxc.lib.webrtc.js.html#line66">line 66</a>
</li></ul></dd>
@@ -296,7 +296,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.webrtc.js.html">jsxc.lib.webrtc.js</a>, <a href="jsxc.lib.webrtc.js.html#line79">line 79</a>
<a href="jsxc.lib.webrtc.js.html">jsxc.lib.webrtc.js</a>, <a href="jsxc.lib.webrtc.js.html#line75">line 75</a>
</li></ul></dd>
@@ -350,7 +350,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.webrtc.js.html">jsxc.lib.webrtc.js</a>, <a href="jsxc.lib.webrtc.js.html#line73">line 73</a>
<a href="jsxc.lib.webrtc.js.html">jsxc.lib.webrtc.js</a>, <a href="jsxc.lib.webrtc.js.html#line69">line 69</a>
</li></ul></dd>
@@ -404,7 +404,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.webrtc.js.html">jsxc.lib.webrtc.js</a>, <a href="jsxc.lib.webrtc.js.html#line76">line 76</a>
<a href="jsxc.lib.webrtc.js.html">jsxc.lib.webrtc.js</a>, <a href="jsxc.lib.webrtc.js.html#line72">line 72</a>
</li></ul></dd>
@@ -458,7 +458,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.webrtc.js.html">jsxc.lib.webrtc.js</a>, <a href="jsxc.lib.webrtc.js.html#line85">line 85</a>
<a href="jsxc.lib.webrtc.js.html">jsxc.lib.webrtc.js</a>, <a href="jsxc.lib.webrtc.js.html#line81">line 81</a>
</li></ul></dd>
@@ -566,7 +566,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.webrtc.js.html">jsxc.lib.webrtc.js</a>, <a href="jsxc.lib.webrtc.js.html#line193">line 193</a>
<a href="jsxc.lib.webrtc.js.html">jsxc.lib.webrtc.js</a>, <a href="jsxc.lib.webrtc.js.html#line189">line 189</a>
</li></ul></dd>
@@ -653,7 +653,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.webrtc.js.html">jsxc.lib.webrtc.js</a>, <a href="jsxc.lib.webrtc.js.html#line152">line 152</a>
<a href="jsxc.lib.webrtc.js.html">jsxc.lib.webrtc.js</a>, <a href="jsxc.lib.webrtc.js.html#line148">line 148</a>
</li></ul></dd>
@@ -722,7 +722,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.webrtc.js.html">jsxc.lib.webrtc.js</a>, <a href="jsxc.lib.webrtc.js.html#line745">line 745</a>
<a href="jsxc.lib.webrtc.js.html">jsxc.lib.webrtc.js</a>, <a href="jsxc.lib.webrtc.js.html#line749">line 749</a>
</li></ul></dd>
@@ -791,7 +791,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.webrtc.js.html">jsxc.lib.webrtc.js</a>, <a href="jsxc.lib.webrtc.js.html#line96">line 96</a>
<a href="jsxc.lib.webrtc.js.html">jsxc.lib.webrtc.js</a>, <a href="jsxc.lib.webrtc.js.html#line92">line 92</a>
</li></ul></dd>
@@ -921,7 +921,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.webrtc.js.html">jsxc.lib.webrtc.js</a>, <a href="jsxc.lib.webrtc.js.html#line250">line 250</a>
<a href="jsxc.lib.webrtc.js.html">jsxc.lib.webrtc.js</a>, <a href="jsxc.lib.webrtc.js.html#line246">line 246</a>
</li></ul></dd>
@@ -990,7 +990,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.webrtc.js.html">jsxc.lib.webrtc.js</a>, <a href="jsxc.lib.webrtc.js.html#line692">line 692</a>
<a href="jsxc.lib.webrtc.js.html">jsxc.lib.webrtc.js</a>, <a href="jsxc.lib.webrtc.js.html#line696">line 696</a>
</li></ul></dd>
@@ -1156,7 +1156,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.webrtc.js.html">jsxc.lib.webrtc.js</a>, <a href="jsxc.lib.webrtc.js.html#line218">line 218</a>
<a href="jsxc.lib.webrtc.js.html">jsxc.lib.webrtc.js</a>, <a href="jsxc.lib.webrtc.js.html#line214">line 214</a>
</li></ul></dd>
@@ -1286,7 +1286,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.webrtc.js.html">jsxc.lib.webrtc.js</a>, <a href="jsxc.lib.webrtc.js.html#line470">line 470</a>
<a href="jsxc.lib.webrtc.js.html">jsxc.lib.webrtc.js</a>, <a href="jsxc.lib.webrtc.js.html#line490">line 490</a>
</li></ul></dd>
@@ -1355,7 +1355,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.webrtc.js.html">jsxc.lib.webrtc.js</a>, <a href="jsxc.lib.webrtc.js.html#line572">line 572</a>
<a href="jsxc.lib.webrtc.js.html">jsxc.lib.webrtc.js</a>, <a href="jsxc.lib.webrtc.js.html#line592">line 592</a>
</li></ul></dd>
@@ -1557,7 +1557,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.webrtc.js.html">jsxc.lib.webrtc.js</a>, <a href="jsxc.lib.webrtc.js.html#line537">line 537</a>
<a href="jsxc.lib.webrtc.js.html">jsxc.lib.webrtc.js</a>, <a href="jsxc.lib.webrtc.js.html#line557">line 557</a>
</li></ul></dd>
@@ -1687,7 +1687,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.webrtc.js.html">jsxc.lib.webrtc.js</a>, <a href="jsxc.lib.webrtc.js.html#line408">line 408</a>
<a href="jsxc.lib.webrtc.js.html">jsxc.lib.webrtc.js</a>, <a href="jsxc.lib.webrtc.js.html#line422">line 422</a>
</li></ul></dd>
@@ -1835,7 +1835,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.webrtc.js.html">jsxc.lib.webrtc.js</a>, <a href="jsxc.lib.webrtc.js.html#line633">line 633</a>
<a href="jsxc.lib.webrtc.js.html">jsxc.lib.webrtc.js</a>, <a href="jsxc.lib.webrtc.js.html#line653">line 653</a>
</li></ul></dd>
@@ -1904,7 +1904,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.webrtc.js.html">jsxc.lib.webrtc.js</a>, <a href="jsxc.lib.webrtc.js.html#line455">line 455</a>
<a href="jsxc.lib.webrtc.js.html">jsxc.lib.webrtc.js</a>, <a href="jsxc.lib.webrtc.js.html#line475">line 475</a>
</li></ul></dd>
@@ -2034,7 +2034,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.webrtc.js.html">jsxc.lib.webrtc.js</a>, <a href="jsxc.lib.webrtc.js.html#line422">line 422</a>
<a href="jsxc.lib.webrtc.js.html">jsxc.lib.webrtc.js</a>, <a href="jsxc.lib.webrtc.js.html#line442">line 442</a>
</li></ul></dd>
@@ -2164,7 +2164,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.webrtc.js.html">jsxc.lib.webrtc.js</a>, <a href="jsxc.lib.webrtc.js.html#line325">line 325</a>
<a href="jsxc.lib.webrtc.js.html">jsxc.lib.webrtc.js</a>, <a href="jsxc.lib.webrtc.js.html#line337">line 337</a>
</li></ul></dd>
@@ -2294,7 +2294,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.webrtc.js.html">jsxc.lib.webrtc.js</a>, <a href="jsxc.lib.webrtc.js.html#line345">line 345</a>
<a href="jsxc.lib.webrtc.js.html">jsxc.lib.webrtc.js</a>, <a href="jsxc.lib.webrtc.js.html#line357">line 357</a>
</li></ul></dd>
@@ -2442,7 +2442,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.webrtc.js.html">jsxc.lib.webrtc.js</a>, <a href="jsxc.lib.webrtc.js.html#line585">line 585</a>
<a href="jsxc.lib.webrtc.js.html">jsxc.lib.webrtc.js</a>, <a href="jsxc.lib.webrtc.js.html#line605">line 605</a>
</li></ul></dd>
@@ -2590,7 +2590,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.webrtc.js.html">jsxc.lib.webrtc.js</a>, <a href="jsxc.lib.webrtc.js.html#line620">line 620</a>
<a href="jsxc.lib.webrtc.js.html">jsxc.lib.webrtc.js</a>, <a href="jsxc.lib.webrtc.js.html#line640">line 640</a>
</li></ul></dd>
@@ -2659,7 +2659,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.webrtc.js.html">jsxc.lib.webrtc.js</a>, <a href="jsxc.lib.webrtc.js.html#line757">line 757</a>
<a href="jsxc.lib.webrtc.js.html">jsxc.lib.webrtc.js</a>, <a href="jsxc.lib.webrtc.js.html#line761">line 761</a>
</li></ul></dd>
@@ -2789,7 +2789,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.webrtc.js.html">jsxc.lib.webrtc.js</a>, <a href="jsxc.lib.webrtc.js.html#line360">line 360</a>
<a href="jsxc.lib.webrtc.js.html">jsxc.lib.webrtc.js</a>, <a href="jsxc.lib.webrtc.js.html#line374">line 374</a>
</li></ul></dd>
@@ -2901,7 +2901,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.webrtc.js.html">jsxc.lib.webrtc.js</a>, <a href="jsxc.lib.webrtc.js.html#line794">line 794</a>
<a href="jsxc.lib.webrtc.js.html">jsxc.lib.webrtc.js</a>, <a href="jsxc.lib.webrtc.js.html#line798">line 798</a>
</li></ul></dd>
@@ -3031,7 +3031,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.webrtc.js.html">jsxc.lib.webrtc.js</a>, <a href="jsxc.lib.webrtc.js.html#line703">line 703</a>
<a href="jsxc.lib.webrtc.js.html">jsxc.lib.webrtc.js</a>, <a href="jsxc.lib.webrtc.js.html#line707">line 707</a>
</li></ul></dd>
@@ -3184,13 +3184,13 @@
</div>
<nav>
<h2><a href="index.html">Index</a></h2><h3>Namespaces</h3><ul><li><a href="jsxc.html">jsxc</a></li><li><a href="jsxc.gui.html">gui</a></li><li><a href="jsxc.gui.dialog.html">dialog</a></li><li><a href="jsxc.gui.queryActions.html">queryActions</a></li><li><a href="jsxc.gui.roster.html">roster</a></li><li><a href="jsxc.gui.template.html">template</a></li><li><a href="jsxc.gui.window.html">window</a></li><li><a href="jsxc.l10n.html">l10n</a></li><li><a href="jsxc.notification.html">notification</a></li><li><a href="jsxc.options.html">options</a></li><li><a href="jsxc.otr.html">otr</a></li><li><a href="jsxc.storage.html">storage</a></li><li><a href="jsxc.webrtc.html">webrtc</a></li><li><a href="jsxc.xmpp.html">xmpp</a></li><li><a href="jsxc.xmpp.carbons.html">carbons</a></li></ul>
<h2><a href="index.html">Index</a></h2><h3>Namespaces</h3><ul><li><a href="jsxc.html">jsxc</a></li><li><a href="jsxc.gui.html">gui</a></li><li><a href="jsxc.gui.dialog.html">dialog</a></li><li><a href="jsxc.gui.queryActions.html">queryActions</a></li><li><a href="jsxc.gui.roster.html">roster</a></li><li><a href="jsxc.gui.template.html">template</a></li><li><a href="jsxc.gui.window.html">window</a></li><li><a href="jsxc.muc.html">muc</a></li><li><a href="jsxc.notification.html">notification</a></li><li><a href="jsxc.options.html">options</a></li><li><a href="jsxc.otr.html">otr</a></li><li><a href="jsxc.storage.html">storage</a></li><li><a href="jsxc.webrtc.html">webrtc</a></li><li><a href="jsxc.xmpp.html">xmpp</a></li><li><a href="jsxc.xmpp.carbons.html">carbons</a></li></ul><h3><a href="global.html">Global</a></h3>
</nav>
<br clear="both">
<footer>
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Wed Feb 25 2015 19:15:14 GMT+0100 (CET)
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Sat May 23 2015 16:03:20 GMT+0200 (CEST)
</footer>
<script> prettyPrint(); </script>
+6 -6
Ver Arquivo
@@ -66,7 +66,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line4291">line 4291</a>
<a href="jsxc.lib.xmpp.js.html">jsxc.lib.xmpp.js</a>, <a href="jsxc.lib.xmpp.js.html#line1040">line 1040</a>
</li></ul></dd>
@@ -184,7 +184,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line4331">line 4331</a>
<a href="jsxc.lib.xmpp.js.html">jsxc.lib.xmpp.js</a>, <a href="jsxc.lib.xmpp.js.html#line1080">line 1080</a>
</li></ul></dd>
@@ -296,7 +296,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line4305">line 4305</a>
<a href="jsxc.lib.xmpp.js.html">jsxc.lib.xmpp.js</a>, <a href="jsxc.lib.xmpp.js.html#line1054">line 1054</a>
</li></ul></dd>
@@ -408,7 +408,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line4357">line 4357</a>
<a href="jsxc.lib.xmpp.js.html">jsxc.lib.xmpp.js</a>, <a href="jsxc.lib.xmpp.js.html#line1106">line 1106</a>
</li></ul></dd>
@@ -449,13 +449,13 @@
</div>
<nav>
<h2><a href="index.html">Index</a></h2><h3>Namespaces</h3><ul><li><a href="jsxc.html">jsxc</a></li><li><a href="jsxc.gui.html">gui</a></li><li><a href="jsxc.gui.dialog.html">dialog</a></li><li><a href="jsxc.gui.queryActions.html">queryActions</a></li><li><a href="jsxc.gui.roster.html">roster</a></li><li><a href="jsxc.gui.template.html">template</a></li><li><a href="jsxc.gui.window.html">window</a></li><li><a href="jsxc.l10n.html">l10n</a></li><li><a href="jsxc.notification.html">notification</a></li><li><a href="jsxc.options.html">options</a></li><li><a href="jsxc.otr.html">otr</a></li><li><a href="jsxc.storage.html">storage</a></li><li><a href="jsxc.webrtc.html">webrtc</a></li><li><a href="jsxc.xmpp.html">xmpp</a></li><li><a href="jsxc.xmpp.carbons.html">carbons</a></li></ul>
<h2><a href="index.html">Index</a></h2><h3>Namespaces</h3><ul><li><a href="jsxc.html">jsxc</a></li><li><a href="jsxc.gui.html">gui</a></li><li><a href="jsxc.gui.dialog.html">dialog</a></li><li><a href="jsxc.gui.queryActions.html">queryActions</a></li><li><a href="jsxc.gui.roster.html">roster</a></li><li><a href="jsxc.gui.template.html">template</a></li><li><a href="jsxc.gui.window.html">window</a></li><li><a href="jsxc.muc.html">muc</a></li><li><a href="jsxc.notification.html">notification</a></li><li><a href="jsxc.options.html">options</a></li><li><a href="jsxc.otr.html">otr</a></li><li><a href="jsxc.storage.html">storage</a></li><li><a href="jsxc.webrtc.html">webrtc</a></li><li><a href="jsxc.xmpp.html">xmpp</a></li><li><a href="jsxc.xmpp.carbons.html">carbons</a></li></ul><h3><a href="global.html">Global</a></h3>
</nav>
<br clear="both">
<footer>
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Wed Feb 25 2015 19:15:15 GMT+0100 (CET)
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Sat May 23 2015 16:03:20 GMT+0200 (CEST)
</footer>
<script> prettyPrint(); </script>
+75 -27
Ver Arquivo
@@ -66,7 +66,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line3276">line 3276</a>
<a href="jsxc.lib.xmpp.js.html">jsxc.lib.xmpp.js</a>, <a href="jsxc.lib.xmpp.js.html#line1">line 1</a>
</li></ul></dd>
@@ -141,7 +141,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line3284">line 3284</a>
<a href="jsxc.lib.xmpp.js.html">jsxc.lib.xmpp.js</a>, <a href="jsxc.lib.xmpp.js.html#line9">line 9</a>
</li></ul></dd>
@@ -195,7 +195,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line3285">line 3285</a>
<a href="jsxc.lib.xmpp.js.html">jsxc.lib.xmpp.js</a>, <a href="jsxc.lib.xmpp.js.html#line10">line 10</a>
</li></ul></dd>
@@ -249,7 +249,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line3286">line 3286</a>
<a href="jsxc.lib.xmpp.js.html">jsxc.lib.xmpp.js</a>, <a href="jsxc.lib.xmpp.js.html#line11">line 11</a>
</li></ul></dd>
@@ -393,7 +393,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line4217">line 4217</a>
<a href="jsxc.lib.xmpp.js.html">jsxc.lib.xmpp.js</a>, <a href="jsxc.lib.xmpp.js.html#line966">line 966</a>
</li></ul></dd>
@@ -533,7 +533,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line4114">line 4114</a>
<a href="jsxc.lib.xmpp.js.html">jsxc.lib.xmpp.js</a>, <a href="jsxc.lib.xmpp.js.html#line863">line 863</a>
</li></ul></dd>
@@ -602,7 +602,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line3536">line 3536</a>
<a href="jsxc.lib.xmpp.js.html">jsxc.lib.xmpp.js</a>, <a href="jsxc.lib.xmpp.js.html#line274">line 274</a>
</li></ul></dd>
@@ -671,7 +671,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line3490">line 3490</a>
<a href="jsxc.lib.xmpp.js.html">jsxc.lib.xmpp.js</a>, <a href="jsxc.lib.xmpp.js.html#line228">line 228</a>
</li></ul></dd>
@@ -740,7 +740,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line3599">line 3599</a>
<a href="jsxc.lib.xmpp.js.html">jsxc.lib.xmpp.js</a>, <a href="jsxc.lib.xmpp.js.html#line337">line 337</a>
</li></ul></dd>
@@ -809,7 +809,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line3645">line 3645</a>
<a href="jsxc.lib.xmpp.js.html">jsxc.lib.xmpp.js</a>, <a href="jsxc.lib.xmpp.js.html#line383">line 383</a>
</li></ul></dd>
@@ -921,7 +921,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line4275">line 4275</a>
<a href="jsxc.lib.xmpp.js.html">jsxc.lib.xmpp.js</a>, <a href="jsxc.lib.xmpp.js.html#line1024">line 1024</a>
</li></ul></dd>
@@ -1079,7 +1079,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line4252">line 4252</a>
<a href="jsxc.lib.xmpp.js.html">jsxc.lib.xmpp.js</a>, <a href="jsxc.lib.xmpp.js.html#line1001">line 1001</a>
</li></ul></dd>
@@ -1107,7 +1107,7 @@
<dt>
<h4 class="name" id="logout"><span class="type-signature">&lt;static> </span>logout<span class="signature">()</span><span class="type-signature"> &rarr; {Boolean}</span></h4>
<h4 class="name" id="logout"><span class="type-signature">&lt;static> </span>logout<span class="signature">(complete)</span><span class="type-signature"> &rarr; {Boolean}</span></h4>
</dt>
@@ -1124,6 +1124,54 @@
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>complete</code></td>
<td class="type">
<span class="param-type">boolean</span>
</td>
<td class="description last">If set to false, roster will not be removed</td>
</tr>
</tbody>
</table>
<dl class="details">
@@ -1148,7 +1196,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line3424">line 3424</a>
<a href="jsxc.lib.xmpp.js.html">jsxc.lib.xmpp.js</a>, <a href="jsxc.lib.xmpp.js.html#line162">line 162</a>
</li></ul></dd>
@@ -1235,7 +1283,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line3698">line 3698</a>
<a href="jsxc.lib.xmpp.js.html">jsxc.lib.xmpp.js</a>, <a href="jsxc.lib.xmpp.js.html#line437">line 437</a>
</li></ul></dd>
@@ -1352,7 +1400,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line3685">line 3685</a>
<a href="jsxc.lib.xmpp.js.html">jsxc.lib.xmpp.js</a>, <a href="jsxc.lib.xmpp.js.html#line424">line 424</a>
</li></ul></dd>
@@ -1469,7 +1517,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line3959">line 3959</a>
<a href="jsxc.lib.xmpp.js.html">jsxc.lib.xmpp.js</a>, <a href="jsxc.lib.xmpp.js.html#line708">line 708</a>
</li></ul></dd>
@@ -1604,7 +1652,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line3838">line 3838</a>
<a href="jsxc.lib.xmpp.js.html">jsxc.lib.xmpp.js</a>, <a href="jsxc.lib.xmpp.js.html#line582">line 582</a>
</li></ul></dd>
@@ -1744,7 +1792,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line4083">line 4083</a>
<a href="jsxc.lib.xmpp.js.html">jsxc.lib.xmpp.js</a>, <a href="jsxc.lib.xmpp.js.html#line832">line 832</a>
</li></ul></dd>
@@ -1861,7 +1909,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line3717">line 3717</a>
<a href="jsxc.lib.xmpp.js.html">jsxc.lib.xmpp.js</a>, <a href="jsxc.lib.xmpp.js.html#line460">line 460</a>
</li></ul></dd>
@@ -1978,7 +2026,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line3765">line 3765</a>
<a href="jsxc.lib.xmpp.js.html">jsxc.lib.xmpp.js</a>, <a href="jsxc.lib.xmpp.js.html#line509">line 509</a>
</li></ul></dd>
@@ -2117,7 +2165,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line4149">line 4149</a>
<a href="jsxc.lib.xmpp.js.html">jsxc.lib.xmpp.js</a>, <a href="jsxc.lib.xmpp.js.html#line898">line 898</a>
</li></ul></dd>
@@ -2257,7 +2305,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line4093">line 4093</a>
<a href="jsxc.lib.xmpp.js.html">jsxc.lib.xmpp.js</a>, <a href="jsxc.lib.xmpp.js.html#line842">line 842</a>
</li></ul></dd>
@@ -2405,7 +2453,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line4200">line 4200</a>
<a href="jsxc.lib.xmpp.js.html">jsxc.lib.xmpp.js</a>, <a href="jsxc.lib.xmpp.js.html#line949">line 949</a>
</li></ul></dd>
@@ -2474,7 +2522,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line3610">line 3610</a>
<a href="jsxc.lib.xmpp.js.html">jsxc.lib.xmpp.js</a>, <a href="jsxc.lib.xmpp.js.html#line348">line 348</a>
</li></ul></dd>
@@ -2515,13 +2563,13 @@
</div>
<nav>
<h2><a href="index.html">Index</a></h2><h3>Namespaces</h3><ul><li><a href="jsxc.html">jsxc</a></li><li><a href="jsxc.gui.html">gui</a></li><li><a href="jsxc.gui.dialog.html">dialog</a></li><li><a href="jsxc.gui.queryActions.html">queryActions</a></li><li><a href="jsxc.gui.roster.html">roster</a></li><li><a href="jsxc.gui.template.html">template</a></li><li><a href="jsxc.gui.window.html">window</a></li><li><a href="jsxc.l10n.html">l10n</a></li><li><a href="jsxc.notification.html">notification</a></li><li><a href="jsxc.options.html">options</a></li><li><a href="jsxc.otr.html">otr</a></li><li><a href="jsxc.storage.html">storage</a></li><li><a href="jsxc.webrtc.html">webrtc</a></li><li><a href="jsxc.xmpp.html">xmpp</a></li><li><a href="jsxc.xmpp.carbons.html">carbons</a></li></ul>
<h2><a href="index.html">Index</a></h2><h3>Namespaces</h3><ul><li><a href="jsxc.html">jsxc</a></li><li><a href="jsxc.gui.html">gui</a></li><li><a href="jsxc.gui.dialog.html">dialog</a></li><li><a href="jsxc.gui.queryActions.html">queryActions</a></li><li><a href="jsxc.gui.roster.html">roster</a></li><li><a href="jsxc.gui.template.html">template</a></li><li><a href="jsxc.gui.window.html">window</a></li><li><a href="jsxc.muc.html">muc</a></li><li><a href="jsxc.notification.html">notification</a></li><li><a href="jsxc.options.html">options</a></li><li><a href="jsxc.otr.html">otr</a></li><li><a href="jsxc.storage.html">storage</a></li><li><a href="jsxc.webrtc.html">webrtc</a></li><li><a href="jsxc.xmpp.html">xmpp</a></li><li><a href="jsxc.xmpp.carbons.html">carbons</a></li></ul><h3><a href="global.html">Global</a></h3>
</nav>
<br clear="both">
<footer>
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Wed Feb 25 2015 19:15:14 GMT+0100 (CET)
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Sat May 23 2015 16:03:20 GMT+0200 (CEST)
</footer>
<script> prettyPrint(); </script>
+2 -3
Ver Arquivo
@@ -22,9 +22,8 @@
<script src="../build/lib/jquery.fullscreen.js"></script>
<script src="../build/lib/jsxc.dep.js"></script>
<script src="../build/jsxc.lib.js"></script>
<script src="../build/jsxc.lib.webrtc.js"></script>
<script src="../build/jsxc.min.js"></script>
<script src="js/example.js"></script>
</head>
+1 -2
Ver Arquivo
@@ -22,8 +22,7 @@
<script src="../build/lib/jquery.fullscreen.js"></script>
<script src="../build/lib/jsxc.dep.js"></script>
<script src="../build/jsxc.lib.js"></script>
<script src="../build/jsxc.lib.webrtc.js"></script>
<script src="../build/jsxc.min.js"></script>
<script src="js/example.js"></script>
+1 -1
Submodule lib/otr updated: 5831c5d49a...61c54a31bd
+1 -1
Ver Arquivo
@@ -267,4 +267,4 @@
return 0;
}
});
}(jQuery));
}(jQuery));
+98 -5
Ver Arquivo
@@ -1,7 +1,7 @@
{
"translation": {
"Logging_in": "Login läuft…",
"your_connection_is_unencrypted": "Deine Verbindung ist Unverschlüsselt.",
"your_connection_is_unencrypted": "Deine Verbindung ist unverschlüsselt.",
"your_connection_is_encrypted": "Deine Verbindung ist verschlüsselt.",
"your_buddy_closed_the_private_connection": "Dein Kontakt hat die private Verbindung getrennt.",
"start_private": "Privat starten",
@@ -28,7 +28,7 @@
"enter_the_answer_and_click_answer": "gib die Antwort ein und klick auf Antworten.",
"enter_the_secret": "gib das Geheimnis ein.",
"Creating_your_private_key_": "Wir werden jetzt deinen privaten Schlüssel generieren. Das kann einige Zeit in Anspruch nehmen.",
"Authenticating_a_buddy_helps_": "Einen Kontakt zu authentifizieren hilft sicher zustellen, dass die Person mit der du sprichst auch die ist die sie sagt.",
"Authenticating_a_buddy_helps_": "Einen Kontakt zu authentifizieren hilft sicherzustellen, dass die Person mit der du sprichst auch die ist die sie sagt.",
"How_do_you_want_to_authenticate_your_buddy": "Wie willst du {{bid_name}} (<b>{{bid_jid}}</b>) authentifizieren?",
"Select_method": "Wähle...",
"Manual": "Manual",
@@ -39,7 +39,7 @@
"Buddy_fingerprint": "Sein/Ihr Fingerprint",
"Close": "Schließen",
"Compared": "Verglichen",
"To_authenticate_using_a_question_": "Um die Authentifizierung per Frage durchzuführen, wähle eine Frage bei welcher nur dein Kontakt die Antwort weiß.",
"To_authenticate_using_a_question_": "Um die Authentifizierung per Frage durchzuführen, wähle eine Frage bei welcher nur dein Kontakt die Antwort kennt.",
"Ask": "Frage",
"To_authenticate_pick_a_secret_": "Um deinen Kontakt zu authentifizieren, wähle ein Geheimnis welches nur deinem Kontakt und dir bekannt ist.",
"Compare": "Vergleiche",
@@ -144,7 +144,7 @@
"Sorry_your_buddy_doesnt_provide_any_information": "Dein Kontakt stellt leider keine Informationen bereit.",
"Info_about": "Info über",
"Authentication_aborted": "Authentifizierung abgebrochen.",
"Authentication_request_received": "Authentifizierunganfrage empfangen.",
"Authentication_request_received": "Authentifizierungsanfrage empfangen.",
"Do_you_want_to_display_them": "Möchtest du sie sehen?",
"Log_in_without_chat": "Anmelden ohne Chat",
"has_come_online": "ist online gekommen",
@@ -167,6 +167,99 @@
"Local_Fingerprint": "Lokaler Fingerprint",
"Remote_Fingerprint": "Remote Fingerprint",
"Video_call_not_possible": "Videoanruf nicht verfügbar. Dein Gesprächspartner unterstützt keine Videotelefonie.",
"Start_video_call": "Starte Videoanruf"
"Start_video_call": "Starte Videoanruf",
"Join_chat": "Gruppe beitreten",
"Join": "Betreten",
"Room": "Gruppe",
"Nickname": "Nickname",
"left_the_building": "__nickname__ hat die Gruppe verlassen",
"entered_the_room": "__nickname__ ist der Gruppe beigetreten",
"is_now_known_as": "__oldNickname__ ist nun unter __newNickname__ bekannt",
"This_room_is": "Diese Gruppe ist",
"muc_hidden": {
"keyword": "versteckt",
"description": "kann durch die Suche nicht gefunden werden"
},
"muc_membersonly": {
"keyword": "nur für Mitglieder",
"description": "du musst auf der Mitgliederliste stehen"
},
"muc_moderated": {
"keyword": "moderiert",
"description": "Nur Personen die \"Mitspracherecht\" haben dürfen Nachrichten senden"
},
"muc_nonanonymous": {
"keyword": "nicht anonym",
"description": "deine Jabber ID wird für alle Mitglieder sichtbar sein"
},
"muc_open": {
"keyword": "offen",
"description": "jeder darf dieser Gruppe beitreten"
},
"muc_passwordprotected": {
"keyword": "passwortgeschützt",
"description": "du benötigst das korrekte Passwort"
},
"muc_persistent": {
"keyword": "permanent",
"description": "wird nicht geschlossen, wenn das letzte Mitglied die Gruppe verlässt"
},
"muc_public": {
"keyword": "öffentlich",
"description": "kann durch die Suche gefunden werden"
},
"muc_semianonymous": {
"keyword": "teilweise anonym",
"description": "deine Jabber ID wird nur für die Gruppen Administratoren sichtbar sein"
},
"muc_temporary": {
"keyword": "temporär",
"description": "wird geschlossen, wenn das letzte Mitglied die Gruppe verlässt"
},
"muc_unmoderated": {
"keyword": "nicht moderiert",
"description": "jeder darf Nachrichten senden"
},
"muc_unsecured": {
"keyword": "ungesichert",
"description": "es wird kein Passwort benötigt"
},
"Continue": "Weiter",
"Server": "Server",
"Rooms_are_loaded": "Gruppen werden geladen",
"Could_load_only": "Es konnten nur __count__ Gruppen für die Autovervollständigung geladen werden",
"muc_explanation": "Bitte trage den Gruppennamen und optional ein Nickname und Passwort ein um einer Gruppe beizutreten",
"You_already_joined_this_room": "Du bist dieser Gruppe bereits beigetreten",
"This_room_will_be_closed": "Diese Gruppe wird geschlossen",
"Room_not_found_": "Es wird eine neue Gruppe erstellt",
"Loading_room_information": "Informationen über Gruppe werden geladen",
"Destroy": "Auflösen",
"Leave": "Verlassen",
"changed_subject_to": "__nickname__ hat das Thema auf __subject__ geändert",
"muc_removed_kicked": "Du wurdest aus der Gruppe entfernt",
"muc_removed_info_kicked": "__nickname__ wurde aus der Gruppe entfernt",
"muc_removed_banned": "Du wurdest aus der Gruppe ausgeschlossen",
"muc_removed_info_banned": "__nickname__ wurde aus der Gruppe ausgeschlossen",
"muc_removed_affiliation": "Du wurdest aus der Gruppe entfernt wegen einer Änderung deines Mitgliedstatus",
"muc_removed_info_affiliation": "__nickname__ wurde aus der Gruppe entfernt wegen einer Änderung seines Mitgliedstatus",
"muc_removed_membersonly": "Diese Gruppe erlaubt jetzt nur noch eingetragene Mitglieder und da du nicht dazugehörst, wurdest du aus der Gruppen entfernt",
"muc_removed_info_membersonly": "Diese Gruppe erlaubt jetzt nur noch eingetragene Mitglieder und __nickname__ gehört nicht dazu, daher wurde er aus der Gruppe entfernt",
"muc_removed_shutdown": "Du wurdest aus der Gruppe entfernt, da der MUC Server heruntergefahren wird",
"Reason": "Grund",
"message_not_send": "Deine Nachricht wurde aufgrund eines Fehlers nicht versandt",
"message_not_send_item-not-found": "Deine Nachricht wurde nicht versandt, da der Raum nicht mehr existiert",
"message_not_send_forbidden": "Deine Nachricht wurde nicht versandt, da du kein \"Mitspracherecht\" hast",
"message_not_send_not-acceptable": "Deine Nachricht wurde nicht versandt, da du kein Mitglied dieser Gruppe bist",
"This_room_has_been_closed": "Diese Gruppe wurde geschlossen",
"Room_logging_is_enabled": "Gesprächsverlauf kann öffentlich einsehbar sein",
"A_password_is_required": "Es wird ein Passwort benötigt",
"You_are_not_on_the_member_list": "Du bist kein eingetragenes Mitglied",
"You_are_banned_from_this_room": "Du wurdest von dieser Gruppe ausgeschlossen",
"Your_desired_nickname_": "Dein gewünschter Nickname wird bereits verwendet. Bitte wähle einen anderen.",
"The_maximum_number_": "Die maximale Anzahl der Mitglieder wurde erreicht.",
"This_room_is_locked_": "Diese Gruppe ist gesperrt",
"You_are_not_allowed_to_create_": "Du darfst keine neue Gruppe erstellen",
"Carbon_copy": null,
"Enable": "Aktivieren"
}
}
+94 -1
Ver Arquivo
@@ -167,6 +167,99 @@
"Local_Fingerprint": null,
"Remote_Fingerprint": null,
"Video_call_not_possible": null,
"Start_video_call": null
"Start_video_call": null,
"Join_chat": null,
"Join": null,
"Room": null,
"Nickname": null,
"left_the_building": null,
"entered_the_room": null,
"is_now_known_as": null,
"This_room_is": null,
"muc_hidden": {
"keyword": null,
"description": null
},
"muc_membersonly": {
"keyword": null,
"description": null
},
"muc_moderated": {
"keyword": null,
"description": null
},
"muc_nonanonymous": {
"keyword": null,
"description": null
},
"muc_open": {
"keyword": null,
"description": null
},
"muc_passwordprotected": {
"keyword": null,
"description": null
},
"muc_persistent": {
"keyword": null,
"description": null
},
"muc_public": {
"keyword": null,
"description": null
},
"muc_semianonymous": {
"keyword": null,
"description": null
},
"muc_temporary": {
"keyword": null,
"description": null
},
"muc_unmoderated": {
"keyword": null,
"description": null
},
"muc_unsecured": {
"keyword": null,
"description": null
},
"Continue": null,
"Server": null,
"Rooms_are_loaded": null,
"Could_load_only": null,
"muc_explanation": null,
"You_already_joined_this_room": null,
"This_room_will_be_closed": null,
"Room_not_found_": null,
"Loading_room_information": null,
"Destroy": null,
"Leave": null,
"changed_subject_to": null,
"muc_removed_kicked": null,
"muc_removed_info_kicked": null,
"muc_removed_banned": null,
"muc_removed_info_banned": null,
"muc_removed_affiliation": null,
"muc_removed_info_affiliation": null,
"muc_removed_membersonly": null,
"muc_removed_info_membersonly": null,
"muc_removed_shutdown": null,
"Reason": null,
"message_not_send": null,
"message_not_send_item-not-found": null,
"message_not_send_forbidden": null,
"message_not_send_not-acceptable": null,
"This_room_has_been_closed": null,
"Room_logging_is_enabled": null,
"A_password_is_required": null,
"You_are_not_on_the_member_list": null,
"You_are_banned_from_this_room": null,
"Your_desired_nickname_": null,
"The_maximum_number_": null,
"This_room_is_locked_": null,
"You_are_not_allowed_to_create_": null,
"Carbon_copy": null,
"Enable": null
}
}
+46 -44
Ver Arquivo
@@ -3,10 +3,10 @@
"Logging_in": "Logging in…",
"your_connection_is_unencrypted": "Your connection is unencrypted.",
"your_connection_is_encrypted": "Your connection is encrypted.",
"your_buddy_closed_the_private_connection": "Your buddy closed the private connection.",
"your_buddy_closed_the_private_connection": "Your contact closed the private connection.",
"start_private": "Start private",
"close_private": "Close private",
"your_buddy_is_verificated": "Your buddy is verified.",
"your_buddy_is_verificated": "Your contact is verified.",
"you_have_only_a_subscription_in_one_way": "You only have a one-way subscription.",
"authentication_query_sent": "Authentication query sent.",
"your_message_wasnt_send_please_end_your_private_conversation": "Your message was not sent. Please end your private conversation.",
@@ -20,35 +20,35 @@
"Unverified": "Unverified",
"private_conversation_started": "Private conversation started.",
"private_conversation_aborted": "Private conversation aborted!",
"your_buddy_closed_the_private_conversation_you_should_do_the_same": "Your buddy closed the private conversation! You should do the same.",
"your_buddy_closed_the_private_conversation_you_should_do_the_same": "Your contact closed the private conversation! You should do the same.",
"conversation_is_now_verified": "Conversation is now verified.",
"authentication_failed": "Authentication failed.",
"your_buddy_is_attempting_to_determine_": "You buddy is attempting to determine if he or she is really talking to you.",
"to_authenticate_to_your_buddy": "To authenticate to your buddy, ",
"your_buddy_is_attempting_to_determine_": "You contact is attempting to determine if they are really talking to you.",
"to_authenticate_to_your_buddy": "To authenticate to your contact, ",
"enter_the_answer_and_click_answer": "enter the answer and click Answer.",
"enter_the_secret": "enter the secret.",
"Creating_your_private_key_": "Creating your private key; this may take a while.",
"Authenticating_a_buddy_helps_": "Authenticating a buddy helps ensure that the person you are talking to is really the one he or she claims to be.",
"Authenticating_a_buddy_helps_": "Authenticating a contact helps ensure that the person you are talking to is really the one they claim to be.",
"How_do_you_want_to_authenticate_your_buddy": "How do you want to authenticate {{bid_name}} (<b>{{bid_jid}}</b>)?",
"Select_method": "Select method...",
"Manual": "Manual",
"Question": "Question",
"Secret": "Secret",
"To_verify_the_fingerprint_": "To verify the fingerprint, contact your buddy via some other trustworthy channel, such as the telephone.",
"To_verify_the_fingerprint_": "To verify the fingerprint, contact your contact via some other trustworthy channel, such as the telephone.",
"Your_fingerprint": "Your fingerprint",
"Buddy_fingerprint": "Buddy fingerprint",
"Buddy_fingerprint": "Contact fingerprint",
"Close": "Close",
"Compared": "Compared",
"To_authenticate_using_a_question_": "To authenticate using a question, pick a question whose answer is known only you and your buddy.",
"To_authenticate_using_a_question_": "To authenticate using a question, pick a question whose answer is known only you and your contact.",
"Ask": "Ask",
"To_authenticate_pick_a_secret_": "To authenticate, pick a secret known only to you and your buddy.",
"To_authenticate_pick_a_secret_": "To authenticate, pick a secret known only to you and your contact.",
"Compare": "Compare",
"Fingerprints": "Fingerprints",
"Authentication": "Authentication",
"Message": "Message",
"Add_buddy": "Add buddy",
"rename_buddy": "rename buddy",
"delete_buddy": "delete buddy",
"Add_buddy": "Add contact",
"rename_buddy": "rename contact",
"delete_buddy": "delete contact",
"Login": "Login",
"Username": "Username",
"Password": "Password",
@@ -61,8 +61,8 @@
"You_have_a_request_from": "You have a request from",
"Deny": "Deny",
"Approve": "Approve",
"Remove_buddy": "Remove buddy",
"You_are_about_to_remove_": "You are about to remove {{bid_name}} (<b>{{bid_jid}}</b>) from your buddy list. All related chats will be closed.",
"Remove_buddy": "Remove contact",
"You_are_about_to_remove_": "You are about to remove {{bid_name}} (<b>{{bid_jid}}</b>) from your contact list. All related chats will be closed.",
"Continue_without_chat": "Continue without chat",
"Please_wait": "Please wait",
"Login_failed": "Chat login failed",
@@ -95,7 +95,7 @@
"Away": "Away",
"Extended_away": "Extended away",
"Offline": "Offline",
"Friendship_request": "Friendship request",
"Friendship_request": "Contact request",
"Confirm": "Confirm",
"Dismiss": "Dismiss",
"Remove": "Remove",
@@ -133,7 +133,7 @@
"User_settings": "User settings",
"A_fingerprint_": "A fingerprint is used to make sure that the person you are talking to is who he or she is saying.",
"Your_roster_is_empty_add_a": "Your roster is empty, add a ",
"new_buddy": "new buddy",
"new_buddy": "new contact",
"is": "is",
"Login_options": "Login options",
"BOSH_url": "BOSH URL",
@@ -141,7 +141,7 @@
"Resource": "Resource",
"On_login": "On login",
"Received_an_unencrypted_message": "Received an unencrypted message",
"Sorry_your_buddy_doesnt_provide_any_information": "Sorry, your buddy does not provide any information.",
"Sorry_your_buddy_doesnt_provide_any_information": "Sorry, your contact does not provide any information.",
"Info_about": "Info about",
"Authentication_aborted": "Authentication aborted.",
"Authentication_request_received": "Authentication request received.",
@@ -166,7 +166,7 @@
"Remote_IP": "Remote IP",
"Local_Fingerprint": "Local fingerprint",
"Remote_Fingerprint": "Remote fingerprint",
"Video_call_not_possible": "Video call not possible. Your buddy does not support video calls.",
"Video_call_not_possible": "Video call not possible. Your contact does not support video calls.",
"Start_video_call": "Start video call",
"Join_chat": "Join chat",
"Join": "Join",
@@ -177,52 +177,52 @@
"is_now_known_as": "__oldNickname__ is now known as __newNickname__",
"This_room_is": "This room is",
"muc_hidden": {
"keyword": "hidden",
"description": "can not be found through search"
"keyword": "hidden",
"description": "can not be found through search"
},
"muc_membersonly": {
"keyword": "members-only",
"description": "you need to be on the member list"
"keyword": "members-only",
"description": "you need to be on the member list"
},
"muc_moderated": {
"keyword": "moderated",
"description": "only persons with \"voice\" are allowed to send messages"
"keyword": "moderated",
"description": "only persons with \"voice\" are allowed to send messages"
},
"muc_nonanonymous": {
"keyword": "non-anonymous",
"description": "your jabber id is exposed to all other occupants"
"keyword": "non-anonymous",
"description": "your jabber id is exposed to all other occupants"
},
"muc_open": {
"keyword": "open",
"description": "everyone is allowed to join"
"keyword": "open",
"description": "everyone is allowed to join"
},
"muc_passwordprotected": {
"keyword": "password-protected",
"description": "you need to provide the correct password"
"keyword": "password-protected",
"description": "you need to provide the correct password"
},
"muc_persistent": {
"keyword": "persistent",
"description": "will not be destroyed if the last occupant left"
"keyword": "persistent",
"description": "will not be destroyed if the last occupant left"
},
"muc_public": {
"keyword": "public",
"description": "can be found through search"
"keyword": "public",
"description": "can be found through search"
},
"muc_semianonymous": {
"keyword": "semi-anonymous",
"description": "your jabber id is only exposed to room admins"
"keyword": "semi-anonymous",
"description": "your jabber id is only exposed to room admins"
},
"muc_temporary": {
"keyword": "temporary",
"description": "will be destroyed if the last occupant left"
"keyword": "temporary",
"description": "will be destroyed if the last occupant left"
},
"muc_unmoderated": {
"keyword": "unmoderated",
"description": "everyone is allowed to send messages"
"keyword": "unmoderated",
"description": "everyone is allowed to send messages"
},
"muc_unsecured": {
"keyword": "unsecured",
"description": "you need no password to enter"
"keyword": "unsecured",
"description": "you need no password to enter"
},
"Continue": "Continue",
"Server": "Server",
@@ -258,6 +258,8 @@
"Your_desired_nickname_": "Your desired nickname is already in use. Please choose another",
"The_maximum_number_": "The maximum number of user is reached in this room",
"This_room_is_locked_": "This room is locked",
"You_are_not_allowed_to_create_": "You are not allowed to create a room"
"You_are_not_allowed_to_create_": "You are not allowed to create a room",
"Carbon_copy": "Carbon copy",
"Enable": "Enable"
}
}
+94 -1
Ver Arquivo
@@ -167,6 +167,99 @@
"Local_Fingerprint": "Firma digital local",
"Remote_Fingerprint": "Firma digital remota",
"Video_call_not_possible": "Llamada de vídeo no es posible",
"Start_video_call": "Iniciar llamada de vídeo"
"Start_video_call": "Iniciar llamada de vídeo",
"Join_chat": null,
"Join": null,
"Room": null,
"Nickname": null,
"left_the_building": null,
"entered_the_room": null,
"is_now_known_as": null,
"This_room_is": null,
"muc_hidden": {
"keyword": null,
"description": null
},
"muc_membersonly": {
"keyword": null,
"description": null
},
"muc_moderated": {
"keyword": null,
"description": null
},
"muc_nonanonymous": {
"keyword": null,
"description": null
},
"muc_open": {
"keyword": null,
"description": null
},
"muc_passwordprotected": {
"keyword": null,
"description": null
},
"muc_persistent": {
"keyword": null,
"description": null
},
"muc_public": {
"keyword": null,
"description": null
},
"muc_semianonymous": {
"keyword": null,
"description": null
},
"muc_temporary": {
"keyword": null,
"description": null
},
"muc_unmoderated": {
"keyword": null,
"description": null
},
"muc_unsecured": {
"keyword": null,
"description": null
},
"Continue": null,
"Server": null,
"Rooms_are_loaded": null,
"Could_load_only": null,
"muc_explanation": null,
"You_already_joined_this_room": null,
"This_room_will_be_closed": null,
"Room_not_found_": null,
"Loading_room_information": null,
"Destroy": null,
"Leave": null,
"changed_subject_to": null,
"muc_removed_kicked": null,
"muc_removed_info_kicked": null,
"muc_removed_banned": null,
"muc_removed_info_banned": null,
"muc_removed_affiliation": null,
"muc_removed_info_affiliation": null,
"muc_removed_membersonly": null,
"muc_removed_info_membersonly": null,
"muc_removed_shutdown": null,
"Reason": null,
"message_not_send": null,
"message_not_send_item-not-found": null,
"message_not_send_forbidden": null,
"message_not_send_not-acceptable": null,
"This_room_has_been_closed": null,
"Room_logging_is_enabled": null,
"A_password_is_required": null,
"You_are_not_on_the_member_list": null,
"You_are_banned_from_this_room": null,
"Your_desired_nickname_": null,
"The_maximum_number_": null,
"This_room_is_locked_": null,
"You_are_not_allowed_to_create_": null,
"Carbon_copy": null,
"Enable": "Activar"
}
}
+95 -2
Ver Arquivo
@@ -6,7 +6,7 @@
"your_buddy_closed_the_private_connection": "Votre ami a fermé la connexion privée.",
"start_private": "Démarrer une conversation privé",
"close_private": "Clôturer une conversation privée",
"your_buddy_is_verificated": "Votre ami est vérifié.",
"your_buddy_is_verificated": "Votre contact est vérifié.",
"you_have_only_a_subscription_in_one_way": "Vous ne pouvez souscrire qu'une fois.",
"authentication_query_sent": "Requête dauthentification envoyée.",
"your_message_wasnt_send_please_end_your_private_conversation": "Votre message n'a pas été envoyé. Veuillez terminer votre conversation privée.",
@@ -167,6 +167,99 @@
"Local_Fingerprint": "Empreinte locale",
"Remote_Fingerprint": "Empreinte distante",
"Video_call_not_possible": "L'appel vidéo n'est possible. Votre ami ne supporte pas les appels vidéo.",
"Start_video_call": "Démarrer l'appel vidéo"
"Start_video_call": "Démarrer l'appel vidéo",
"Join_chat": "Joindre la discution",
"Join": "Joindre",
"Room": "Salon",
"Nickname": "Surnom",
"left_the_building": "__nickname__ a quitté l'immeuble",
"entered_the_room": "__nickname__ entre dans le salon",
"is_now_known_as": null,
"This_room_is": "Ce salon est",
"muc_hidden": {
"keyword": "caché",
"description": null
},
"muc_membersonly": {
"keyword": "pour les membres seulement",
"description": "Vous devez être sur la liste des membres"
},
"muc_moderated": {
"keyword": "modéré",
"description": "Seulement les personnes avec la \"voix\" sont autorisés à envoyer des messages"
},
"muc_nonanonymous": {
"keyword": "non anonyme",
"description": "Votre identifiant Jabber est visible de tous les autres occupants"
},
"muc_open": {
"keyword": "ouvert",
"description": "Tout le monde est autorisé à se connecter"
},
"muc_passwordprotected": {
"keyword": "protégé par un mot de passe",
"description": "Vous devez fournir un mot de passe correct"
},
"muc_persistent": {
"keyword": "persistent",
"description": null
},
"muc_public": {
"keyword": "public",
"description": null
},
"muc_semianonymous": {
"keyword": "semi-anonyme",
"description": "Votre identifiant Jabber est seulement visible aux administrateurs de ce salon"
},
"muc_temporary": {
"keyword": "temporaire",
"description": "sera détruit au départ de son dernier occupant"
},
"muc_unmoderated": {
"keyword": "non modéré",
"description": "Tout le monde est autorisé à envoyer des messages"
},
"muc_unsecured": {
"keyword": "non sécurisé",
"description": "un mot de passe n'est pas nécessaire pour entrer"
},
"Continue": "Continuer",
"Server": "Serveur",
"Rooms_are_loaded": "Les salons sont chargés",
"Could_load_only": null,
"muc_explanation": "Veuillez saisir le nom du salon, un surnom (optionnel) et un mot de passe pour joindre la conversation",
"You_already_joined_this_room": "Vous avez déjà rejoins ce salon",
"This_room_will_be_closed": "Ce salon va être fermé",
"Room_not_found_": "Un nouveau salon va être créé",
"Loading_room_information": "Chargement des informations du salon",
"Destroy": "Détruire",
"Leave": "Quitter",
"changed_subject_to": "__nickname__ a changé le sujet du salon à \"__subject__\"",
"muc_removed_kicked": "Vous avez été éjecté de ce salon",
"muc_removed_info_kicked": "__nickname__ a été éjecté de ce salon",
"muc_removed_banned": "Vous avez été banni de ce salon",
"muc_removed_info_banned": "__nickname__ a été banni de ce salon",
"muc_removed_affiliation": null,
"muc_removed_info_affiliation": null,
"muc_removed_membersonly": null,
"muc_removed_info_membersonly": null,
"muc_removed_shutdown": null,
"Reason": "Raison",
"message_not_send": null,
"message_not_send_item-not-found": null,
"message_not_send_forbidden": null,
"message_not_send_not-acceptable": "Votre message n'a pas été envoyé car il n'y a personne dans ce salon",
"This_room_has_been_closed": "Ce salon a été fermé",
"Room_logging_is_enabled": null,
"A_password_is_required": "Un mot de passe est requis",
"You_are_not_on_the_member_list": "Vous n'êtes pas sur la liste des membres",
"You_are_banned_from_this_room": "Vous avez été banni de ce salon",
"Your_desired_nickname_": "Votre Surnom souhaité est déjà utilisé.Veuillez en choisir un autre",
"The_maximum_number_": "Le nombre maximum d'utilisateur est atteint dans ce salon",
"This_room_is_locked_": "Ce salon est vérouillé",
"You_are_not_allowed_to_create_": "Vous n'êtes pas autorisé à créer un salon",
"Carbon_copy": null,
"Enable": null
}
}
+94 -1
Ver Arquivo
@@ -167,6 +167,99 @@
"Local_Fingerprint": "Impronta digitale locale",
"Remote_Fingerprint": "Impronta digitale remoto",
"Video_call_not_possible": "Videochiamata non è possibile. Il tuo compagno non può effettuare videochiamate.",
"Start_video_call": "Inizia videochiamata"
"Start_video_call": "Inizia videochiamata",
"Join_chat": null,
"Join": null,
"Room": null,
"Nickname": null,
"left_the_building": null,
"entered_the_room": null,
"is_now_known_as": null,
"This_room_is": null,
"muc_hidden": {
"keyword": null,
"description": null
},
"muc_membersonly": {
"keyword": null,
"description": null
},
"muc_moderated": {
"keyword": null,
"description": null
},
"muc_nonanonymous": {
"keyword": null,
"description": null
},
"muc_open": {
"keyword": null,
"description": null
},
"muc_passwordprotected": {
"keyword": null,
"description": null
},
"muc_persistent": {
"keyword": null,
"description": null
},
"muc_public": {
"keyword": null,
"description": null
},
"muc_semianonymous": {
"keyword": null,
"description": null
},
"muc_temporary": {
"keyword": null,
"description": null
},
"muc_unmoderated": {
"keyword": null,
"description": null
},
"muc_unsecured": {
"keyword": null,
"description": null
},
"Continue": null,
"Server": null,
"Rooms_are_loaded": null,
"Could_load_only": null,
"muc_explanation": null,
"You_already_joined_this_room": null,
"This_room_will_be_closed": null,
"Room_not_found_": null,
"Loading_room_information": null,
"Destroy": null,
"Leave": null,
"changed_subject_to": null,
"muc_removed_kicked": null,
"muc_removed_info_kicked": null,
"muc_removed_banned": null,
"muc_removed_info_banned": null,
"muc_removed_affiliation": null,
"muc_removed_info_affiliation": null,
"muc_removed_membersonly": null,
"muc_removed_info_membersonly": null,
"muc_removed_shutdown": null,
"Reason": null,
"message_not_send": null,
"message_not_send_item-not-found": null,
"message_not_send_forbidden": null,
"message_not_send_not-acceptable": null,
"This_room_has_been_closed": null,
"Room_logging_is_enabled": null,
"A_password_is_required": null,
"You_are_not_on_the_member_list": null,
"You_are_banned_from_this_room": null,
"Your_desired_nickname_": null,
"The_maximum_number_": null,
"This_room_is_locked_": null,
"You_are_not_allowed_to_create_": null,
"Carbon_copy": null,
"Enable": null
}
}
+94 -1
Ver Arquivo
@@ -167,6 +167,99 @@
"Local_Fingerprint": null,
"Remote_Fingerprint": null,
"Video_call_not_possible": null,
"Start_video_call": null
"Start_video_call": null,
"Join_chat": null,
"Join": null,
"Room": null,
"Nickname": null,
"left_the_building": null,
"entered_the_room": null,
"is_now_known_as": null,
"This_room_is": null,
"muc_hidden": {
"keyword": null,
"description": null
},
"muc_membersonly": {
"keyword": null,
"description": null
},
"muc_moderated": {
"keyword": null,
"description": null
},
"muc_nonanonymous": {
"keyword": null,
"description": null
},
"muc_open": {
"keyword": null,
"description": null
},
"muc_passwordprotected": {
"keyword": null,
"description": null
},
"muc_persistent": {
"keyword": null,
"description": null
},
"muc_public": {
"keyword": null,
"description": null
},
"muc_semianonymous": {
"keyword": null,
"description": null
},
"muc_temporary": {
"keyword": null,
"description": null
},
"muc_unmoderated": {
"keyword": null,
"description": null
},
"muc_unsecured": {
"keyword": null,
"description": null
},
"Continue": null,
"Server": null,
"Rooms_are_loaded": null,
"Could_load_only": null,
"muc_explanation": null,
"You_already_joined_this_room": null,
"This_room_will_be_closed": null,
"Room_not_found_": null,
"Loading_room_information": null,
"Destroy": null,
"Leave": null,
"changed_subject_to": null,
"muc_removed_kicked": null,
"muc_removed_info_kicked": null,
"muc_removed_banned": null,
"muc_removed_info_banned": null,
"muc_removed_affiliation": null,
"muc_removed_info_affiliation": null,
"muc_removed_membersonly": null,
"muc_removed_info_membersonly": null,
"muc_removed_shutdown": null,
"Reason": null,
"message_not_send": null,
"message_not_send_item-not-found": null,
"message_not_send_forbidden": null,
"message_not_send_not-acceptable": null,
"This_room_has_been_closed": null,
"Room_logging_is_enabled": null,
"A_password_is_required": null,
"You_are_not_on_the_member_list": null,
"You_are_banned_from_this_room": null,
"Your_desired_nickname_": null,
"The_maximum_number_": null,
"This_room_is_locked_": null,
"You_are_not_allowed_to_create_": null,
"Carbon_copy": null,
"Enable": null
}
}
+96 -3
Ver Arquivo
@@ -89,7 +89,7 @@
"none": "brak",
"Unknown_instance_tag": "Nieznany przypadek.",
"Not_one_of_our_latest_keys": "Not one of our latest keys.",
"Received_an_unreadable_encrypted_message": "Received an unreadable encrypted message.",
"Received_an_unreadable_encrypted_message": "Otrzymano nieczytelną, zaszyfrowaną wiadomość.",
"Online": "Połączony",
"Chatty": "Pogawędzimy?",
"Away": "Daleko",
@@ -108,7 +108,7 @@
"URL": "Strona WWW",
"ADR": "Adres",
"STREET": "Ulica",
"EXTADD": "Extended Address",
"EXTADD": "Pełny adres",
"LOCALITY": "Lokalizacja",
"REGION": "Region",
"PCODE": "Kod pocztowy",
@@ -167,6 +167,99 @@
"Local_Fingerprint": "Kod lokalny",
"Remote_Fingerprint": "Zdalny kod",
"Video_call_not_possible": "Rozmowa wideo jest niemożliwa. Twój rozmówca nie ma możliwości prowadzenia takich rozmów.",
"Start_video_call": "Rozpocznij rozmowę wideo"
"Start_video_call": "Rozpocznij rozmowę wideo",
"Join_chat": "Dołącz do czata",
"Join": "Dołącz",
"Room": "Pokój",
"Nickname": "Nazwa użytkownika",
"left_the_building": "__nickname__ wyszedł",
"entered_the_room": "__nickname__ wszedł do pokoju",
"is_now_known_as": "__oldNickname__ zmienił nazwę na __newNickname__",
"This_room_is": "Ten pokój jest",
"muc_hidden": {
"keyword": "ukryty",
"description": "nie można odnaleźć elementów wyszukiwania"
},
"muc_membersonly": {
"keyword": "tylko zalogowani",
"description": "musisz być członkiem listy"
},
"muc_moderated": {
"keyword": "moderowano",
"description": "tylko osoby z opcją \"głos\" mogą wysyłać wiadomość"
},
"muc_nonanonymous": {
"keyword": "nie-anonimowy",
"description": "Twój identyfikator jabber jest widoczny dla wszystkich innych osób"
},
"muc_open": {
"keyword": "otwarty",
"description": "wszyscy mają pozwolenie aby dołączyć"
},
"muc_passwordprotected": {
"keyword": "ograniczone hasłem",
"description": "musisz wpisać prawidłowe hasło"
},
"muc_persistent": {
"keyword": "trwale",
"description": "nie zostaną zniszczone, jeśli ostatnia osoba wyszła"
},
"muc_public": {
"keyword": "publiczny",
"description": "wyszukawno"
},
"muc_semianonymous": {
"keyword": "pół-anonimowy",
"description": "Twój identyfikator jabber jest widoczny w pokoju adminów"
},
"muc_temporary": {
"keyword": "tymczasowy",
"description": "zostanie usunięty jeżeli ostatnia osoba wyjdzie"
},
"muc_unmoderated": {
"keyword": "niemoderowany",
"description": "wszyscy są uprawnieni do pisania wiadomości"
},
"muc_unsecured": {
"keyword": "niezabezpieczone",
"description": "nie musisz wpisywać hasła"
},
"Continue": "Kontynuuj",
"Server": "Serwer",
"Rooms_are_loaded": "Pokoje zostały załadowane",
"Could_load_only": "Nie załadowano __count__ pokoi",
"muc_explanation": "Aby się zalogować, wpisz nazwę pokoju oraz opcjonalnie nazwę użytkownika i hasło",
"You_already_joined_this_room": "Już dołączyłeś do tego pokoju",
"This_room_will_be_closed": "Ten pokój będzie zamknięty",
"Room_not_found_": "Nowy pokój będzie stworzony",
"Loading_room_information": "Ładowani informacji o pokoju",
"Destroy": "Zniszczony",
"Leave": "Opuść",
"changed_subject_to": "__nickname__ zmienił temat pokoju na \"__subject__\"",
"muc_removed_kicked": "Zostałeś wyrzucony z pokoju",
"muc_removed_info_kicked": "__nickname__ został wyrzucony z pokoju",
"muc_removed_banned": "Zostałeś zbanowany",
"muc_removed_info_banned": "__nickname__ został zbanowany",
"muc_removed_affiliation": "Zostałeś usunięty z pokoju ze względu na zmianę przynależnosci",
"muc_removed_info_affiliation": "__nickname__ został usunięty z pokoju ze względu na zmianę przynależnosci",
"muc_removed_membersonly": "Zostałeś usunięty z pokoju ze względu na zmianę pokoju tylko dla członków, a Ty nie jesteś członkiem...",
"muc_removed_info_membersonly": "__nickname__ został usunięty z pokoju ze względu na zmianę pokoju na tylko dla członków",
"muc_removed_shutdown": "Zostałeś usunięty z pokoju ze względu na zamknięcie usługi",
"Reason": "Powód",
"message_not_send": "Wystąpił błąd i twoja wiadomość nie została wysłana.",
"message_not_send_item-not-found": "Twoja wiadomość nie została wysłana ponieważ ten pokój nie istnieje",
"message_not_send_forbidden": "Twoja wiadomość nie została wysłana ponieważ nie masz głosu w tym pokoju",
"message_not_send_not-acceptable": "Twoja wiadomość nie została wysłana ponieważ nie jesteś właścicielem tego pokoju",
"This_room_has_been_closed": "Ten pokój został zamknięty",
"Room_logging_is_enabled": "Logowanie do pokoju jest włączone",
"A_password_is_required": "Hasło jest wymagane",
"You_are_not_on_the_member_list": "Nie jesteś na liście członków",
"You_are_banned_from_this_room": "Zostałeś zbanowany w tym pokoju",
"Your_desired_nickname_": "Twoja nazwa użytkownika jest już użyta. Spróbuj wybrać inną",
"The_maximum_number_": "Została osiągnięta maksymalna liczba użytkowników w tym pokoju",
"This_room_is_locked_": "Ten pokój jest zablokowany",
"You_are_not_allowed_to_create_": "Nie masz uprawnień do tworzenia pokoju",
"Carbon_copy": "Do wiadomości",
"Enable": null
}
}
+94 -1
Ver Arquivo
@@ -167,6 +167,99 @@
"Local_Fingerprint": "Fingerprint local",
"Remote_Fingerprint": "Fingerprint remoto",
"Video_call_not_possible": "Chamada de vídeo impossível. Seu contato não suporta chamadas desse tipo.",
"Start_video_call": "Iniciar chamada de vídeo"
"Start_video_call": "Iniciar chamada de vídeo",
"Join_chat": null,
"Join": null,
"Room": null,
"Nickname": null,
"left_the_building": null,
"entered_the_room": null,
"is_now_known_as": null,
"This_room_is": null,
"muc_hidden": {
"keyword": null,
"description": null
},
"muc_membersonly": {
"keyword": null,
"description": null
},
"muc_moderated": {
"keyword": null,
"description": null
},
"muc_nonanonymous": {
"keyword": null,
"description": null
},
"muc_open": {
"keyword": null,
"description": null
},
"muc_passwordprotected": {
"keyword": null,
"description": null
},
"muc_persistent": {
"keyword": null,
"description": null
},
"muc_public": {
"keyword": null,
"description": null
},
"muc_semianonymous": {
"keyword": null,
"description": null
},
"muc_temporary": {
"keyword": null,
"description": null
},
"muc_unmoderated": {
"keyword": null,
"description": null
},
"muc_unsecured": {
"keyword": null,
"description": null
},
"Continue": null,
"Server": null,
"Rooms_are_loaded": null,
"Could_load_only": null,
"muc_explanation": null,
"You_already_joined_this_room": null,
"This_room_will_be_closed": null,
"Room_not_found_": null,
"Loading_room_information": null,
"Destroy": null,
"Leave": null,
"changed_subject_to": null,
"muc_removed_kicked": null,
"muc_removed_info_kicked": null,
"muc_removed_banned": null,
"muc_removed_info_banned": null,
"muc_removed_affiliation": null,
"muc_removed_info_affiliation": null,
"muc_removed_membersonly": null,
"muc_removed_info_membersonly": null,
"muc_removed_shutdown": null,
"Reason": null,
"message_not_send": null,
"message_not_send_item-not-found": null,
"message_not_send_forbidden": null,
"message_not_send_not-acceptable": null,
"This_room_has_been_closed": null,
"Room_logging_is_enabled": null,
"A_password_is_required": null,
"You_are_not_on_the_member_list": null,
"You_are_banned_from_this_room": null,
"Your_desired_nickname_": null,
"The_maximum_number_": null,
"This_room_is_locked_": null,
"You_are_not_allowed_to_create_": null,
"Carbon_copy": null,
"Enable": null
}
}
+94 -1
Ver Arquivo
@@ -167,6 +167,99 @@
"Local_Fingerprint": null,
"Remote_Fingerprint": null,
"Video_call_not_possible": null,
"Start_video_call": null
"Start_video_call": null,
"Join_chat": null,
"Join": null,
"Room": null,
"Nickname": null,
"left_the_building": null,
"entered_the_room": null,
"is_now_known_as": null,
"This_room_is": null,
"muc_hidden": {
"keyword": null,
"description": null
},
"muc_membersonly": {
"keyword": null,
"description": null
},
"muc_moderated": {
"keyword": null,
"description": null
},
"muc_nonanonymous": {
"keyword": null,
"description": null
},
"muc_open": {
"keyword": null,
"description": null
},
"muc_passwordprotected": {
"keyword": null,
"description": null
},
"muc_persistent": {
"keyword": null,
"description": null
},
"muc_public": {
"keyword": null,
"description": null
},
"muc_semianonymous": {
"keyword": null,
"description": null
},
"muc_temporary": {
"keyword": null,
"description": null
},
"muc_unmoderated": {
"keyword": null,
"description": null
},
"muc_unsecured": {
"keyword": null,
"description": null
},
"Continue": null,
"Server": null,
"Rooms_are_loaded": null,
"Could_load_only": null,
"muc_explanation": null,
"You_already_joined_this_room": null,
"This_room_will_be_closed": null,
"Room_not_found_": null,
"Loading_room_information": null,
"Destroy": null,
"Leave": null,
"changed_subject_to": null,
"muc_removed_kicked": null,
"muc_removed_info_kicked": null,
"muc_removed_banned": null,
"muc_removed_info_banned": null,
"muc_removed_affiliation": null,
"muc_removed_info_affiliation": null,
"muc_removed_membersonly": null,
"muc_removed_info_membersonly": null,
"muc_removed_shutdown": null,
"Reason": null,
"message_not_send": null,
"message_not_send_item-not-found": null,
"message_not_send_forbidden": null,
"message_not_send_not-acceptable": null,
"This_room_has_been_closed": null,
"Room_logging_is_enabled": null,
"A_password_is_required": null,
"You_are_not_on_the_member_list": null,
"You_are_banned_from_this_room": null,
"Your_desired_nickname_": null,
"The_maximum_number_": null,
"This_room_is_locked_": null,
"You_are_not_allowed_to_create_": null,
"Carbon_copy": null,
"Enable": null
}
}
+1 -1
Ver Arquivo
@@ -1,6 +1,6 @@
{
"name": "jsxc",
"version": "2.0.0-beta2",
"version": "2.0.1",
"description": "Real-time chat app",
"homepage": "http://www.jsxc.org/",
"bugs": "https://github.com/jsxc/jsxc/issues",
+38 -2
Ver Arquivo
@@ -107,6 +107,9 @@
background-image: image-url('loading.gif');
}
}
.jsxc_libraries {
max-width: 300px;
}
}
.jsxc_avatar {
@extend %avatar-icon;
@@ -414,7 +417,6 @@ ul.jsxc_vCard {
height: 15px;
z-index: 100;
background: linear-gradient(to bottom, $window_gradient 0, rgba(0, 0, 0, 0) 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='$window_gradient', endColorstr='#00282323', GradientType=0);
}
.jsxc_avatar {
margin-top: 1px;
@@ -486,7 +488,6 @@ ul.jsxc_vCard {
height: 15px;
z-index: 100;
background: linear-gradient(to bottom, $window_gradient 0, rgba(40, 35, 35, 0) 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='$window_gradient', endColorstr='#00282323', GradientType=0);
}
}
.jsxc_chatmessage {
@@ -704,3 +705,38 @@ img.jsxc_vCard {
border: 5px solid $white;
border-radius: 2px;
}
.jsxc_alert {
padding: 15px;
margin-bottom: 20px;
border: 1px solid transparent;
border-radius: 4px;
&.jsxc_alert-warning {
color: #8a6d3b;
background-color: #fcf8e3;
border-color: #faebcc;
}
}
.jsxc_btn {
width: auto;
min-width: 25px;
padding: 5px;
background-color: rgba(240,240,240,.9);
font-weight: bold;
color: #555;
border: 1px solid rgba(190,190,190,.9);
cursor: pointer;
&.jsxc_btn-primary {
color: #fff;
background-color: #337ab7;
border-color: #2e6da4;
}
&[disabled], &[disabled]:hover {
opacity: 0.65;
cursor: not-allowed;
color: #fff;
background-color: #337ab7;
border-color: #2e6da4;
}
}
+2 -1
Ver Arquivo
@@ -16,7 +16,7 @@
.jsxc_transfer {
display: none;
}
.jsxc_fingerprints, jsxc_verification, jsxc_transfer {
.jsxc_fingerprints, .jsxc_verification, .jsxc_transfer {
display: none;
}
.jsxc_members {
@@ -60,6 +60,7 @@
color: $window_bar_color;
overflow: hidden;
transition: left 400ms;
padding: 0px;
&>li {
display: inline-block;
white-space: normal;
+2 -1
Ver Arquivo
@@ -8,6 +8,7 @@ $font_serif: serif;
'buddylist',
'state',
'emoticons',
'roster';
'roster',
'muc';
@import 'jsxc';
+72 -20
Ver Arquivo
@@ -358,27 +358,44 @@ jsxc.gui = {
jsxc.gui.dialog.open(jsxc.gui.template.get('loginBox'));
$('#jsxc_dialog').find('form').submit(function() {
var alert = $('#jsxc_dialog').find('.jsxc_alert');
alert.hide();
$(this).find('input[type=submit]').prop('disabled', true);
$('#jsxc_dialog').find('form').submit(function(ev) {
ev.preventDefault();
$(this).find('button[data-jsxc-loading-text]').trigger('btnloading.jsxc');
jsxc.options.loginForm.form = $(this);
jsxc.options.loginForm.jid = $(this).find('#jsxc_username');
jsxc.options.loginForm.pass = $(this).find('#jsxc_password');
var settings = jsxc.prepareLogin();
jsxc.triggeredFromBox = true;
jsxc.options.loginForm.triggered = false;
var settings = jsxc.prepareLogin();
if (settings === false) {
jsxc.gui.showAuthFail();
onAuthFail();
} else {
$(document).on('authfail.jsxc', onAuthFail);
jsxc.xmpp.login();
}
return false;
});
function onAuthFail() {
alert.show();
jsxc.gui.dialog.resize();
$('#jsxc_dialog').find('button').trigger('btnfinished.jsxc');
$('#jsxc_dialog').find('input').one('keypress', function() {
alert.hide();
jsxc.gui.dialog.resize();
});
}
},
/**
@@ -1204,6 +1221,9 @@ jsxc.gui.roster = {
/** True if roster is initialised */
ready: false,
/** True if all items are loaded */
loaded: false,
/**
* Init the roster skeleton
*
@@ -1607,6 +1627,32 @@ jsxc.gui.dialog = {
$('#cboxClose').hide();
}
$('#jsxc_dialog form').each(function() {
var form = $(this);
form.find('button[data-jsxc-loading-text]').each(function(){
var btn = $(this);
btn.on('btnloading.jsxc', function(){
if(!btn.prop('disabled')) {
btn.prop('disabled', true);
btn.data('jsxc_value', btn.text());
btn.text(btn.attr('data-jsxc-loading-text'));
}
});
btn.on('btnfinished.jsxc', function() {
if(btn.prop('disabled')) {
btn.prop('disabled', false);
btn.text(btn.data('jsxc_value'));
}
});
});
});
jsxc.gui.dialog.resize();
$(document).trigger('complete.dialog.jsxc');
@@ -2286,11 +2332,18 @@ jsxc.gui.template = {
var ret = jsxc.gui.template[name];
if (typeof (ret) === 'string') {
// prevent 404
ret = ret.replace(/\{\{root\}\}/g, ph.root);
// convert to string
ret = $('<div>').append($(ret).i18n()).html();
// replace placeholders
ret = ret.replace(/\{\{([a-zA-Z0-9_\-]+)\}\}/g, function(s, key) {
return (typeof ph[key] === 'string') ? ph[key] : s;
});
return $('<div>').append($(ret).i18n()).html();
return ret;
}
jsxc.debug('Template not available: ' + name);
@@ -2299,7 +2352,7 @@ jsxc.gui.template = {
authenticationDialog: '<h3>Verification</h3>\
<p data-i18n="Authenticating_a_buddy_helps_"></p>\
<div>\
<p data-i18n="How_do_you_want_to_authenticate_your_buddy" style="margin:0px;"></p>\
<p data-i18n="[html]How_do_you_want_to_authenticate_your_buddy" style="margin:0px;"></p>\
<select size="1">\
<option data-i18n="Select_method"></option>\
<option data-i18n="Manual"></option>\
@@ -2422,9 +2475,10 @@ jsxc.gui.template = {
<input type="text" name="username" id="jsxc_username" required="required" value="{{my_node}}"/></p>\
<p><label for="jsxc_password" data-i18n="Password"></label>\
<input type="password" name="password" required="required" id="jsxc_password" /></p>\
<div class="jsxc_alert jsxc_alert-warning" data-i18n="Sorry_we_cant_authentikate_"></div>\
<div class="bottom_submit_section">\
<input type="reset" class="button jsxc_close" name="clear" data-i18n="[value]Cancel"/>\
<input type="submit" class="button creation" name="commit" data-i18n="[value]Connect"/>\
<button type="reset" class="jsxc_btn jsxc_close" name="clear" data-i18n="Cancel"/>\
<button type="submit" class="jsxc_btn jsxc_btn-primary" name="commit" data-i18n="[data-jsxc-loading-text]Connecting...;Connect"/>\
</div>\
</form>',
contactDialog: '<h3 data-i18n="Add_buddy"></h3>\
@@ -2443,7 +2497,7 @@ jsxc.gui.template = {
<p><span data-i18n="You_have_a_request_from"></span><b class="jsxc_their_jid"></b>.</p>\
<p class="jsxc_right"><a href="#" class="button jsxc_deny" data-i18n="Deny"></a> <a href="#" class="button creation jsxc_approve" data-i18n="Approve"></a></p>',
removeDialog: '<h3 data-i18n="Remove_buddy"></h3>\
<p class="jsxc_maxWidth" data-i18n="You_are_about_to_remove_"></p>\
<p class="jsxc_maxWidth" data-i18n="[html]You_are_about_to_remove_"></p>\
<p class="jsxc_right"><a href="#" class="button jsxc_cancel jsxc_close" data-i18n="Cancel"></a> <a href="#" class="button creation" data-i18n="Remove"></a></p>',
waitAlert: '<h3>{{msg}}</h3>\
<p data-i18n="Please_wait"></p>\
@@ -2465,15 +2519,13 @@ jsxc.gui.template = {
pleaseAccept: '<p data-i18n="Please_accept_"></p>',
aboutDialog: '<h3>JavaScript XMPP Chat</h3>\
<p><b>Version: </b>' + jsxc.version + '<br />\
<a href="http://jsxc.org/" target="_blank">www.jsxc.org</a><br />\
<br />\
<i>Released under the MIT license</i><br />\
<br />\
Real-time chat app for {{app_name}} and more.<br />\
Requires an external <a href="https://xmpp.org/xmpp-software/servers/" target="_blank">XMPP server</a>.<br />\
<br />\
<b>Credits: </b> <a href="http://www.beepzoid.com/old-phones/" target="_blank">David English (Ringtone)</a>,\
<a href="http://jsxc.org/" target="_blank">www.jsxc.org</a></p>\
<p><i>Released under the MIT license</i></p>\
<p>Real-time chat app for {{app_name}} and more.<br />\
Requires an external <a href="https://xmpp.org/xmpp-software/servers/" target="_blank">XMPP server</a>.</p>\
<p><b>Credits: </b> <a href="http://www.beepzoid.com/old-phones/" target="_blank">David English (Ringtone)</a>,\
<a href="https://soundcloud.com/freefilmandgamemusic/ping-1?in=freefilmandgamemusic/sets/free-notification-sounds-and" target="_blank">CameronMusic (Ping)</a></p>\
<p class="jsxc_libraries"><b>Libraries: </b>< $ dep.libraries $ ></p>\
<p class="jsxc_right"><a class="button jsxc_debuglog" href="#">Show debug log</a></p>',
vCard: '<h3><span data-i18n="Info_about"></span> <span>{{bid_name}}</span></h3>\
<ul class="jsxc_vCard"></ul>\
+17 -7
Ver Arquivo
@@ -181,6 +181,12 @@ jsxc = {
$.extend(true, jsxc.options, options);
}
// Check localStorage
if (typeof (localStorage) === 'undefined') {
jsxc.warn("Browser doesn't support localStorage.");
return;
}
/**
* Getter method for options. Saved options will override default one.
*
@@ -228,12 +234,6 @@ jsxc = {
localStorageExpirationTime: 60 * 60 * 24 * 1000,
});
// Check localStorage
if (typeof (localStorage) === 'undefined') {
jsxc.debug("Browser doesn't support localStorage.");
return;
}
if (jsxc.storage.getItem('debug') === true) {
jsxc.options.otr.debug = true;
}
@@ -263,6 +263,10 @@ jsxc = {
// Check if we have to establish a new connection
if (!jsxc.storage.getItem('rid') || !jsxc.storage.getItem('sid') || !jsxc.restore) {
// clean up rid and sid
jsxc.storage.removeItem('rid');
jsxc.storage.removeItem('sid');
// Looking for a login form
if (!jsxc.options.loginForm.form || !(jsxc.el_exists(jsxc.options.loginForm.form) && jsxc.el_exists(jsxc.options.loginForm.jid) && jsxc.el_exists(jsxc.options.loginForm.pass))) {
@@ -344,7 +348,9 @@ jsxc = {
return;
}
jsxc.gui.showWaitAlert($.t('Logging_in'));
if (!jsxc.triggeredFromBox && (jsxc.options.loginForm.onConnecting === 'dialog' || typeof jsxc.options.loginForm.onConnecting === 'undefined')) {
jsxc.gui.showWaitAlert($.t('Logging_in'));
}
var settings = jsxc.options.loadSettings.call(this, username, password);
@@ -354,6 +360,9 @@ jsxc = {
return false;
}
// prevent to modify the original object
settings = $.extend(true, {}, settings);
if (typeof settings.xmpp.username === 'string') {
username = settings.xmpp.username;
}
@@ -582,6 +591,7 @@ jsxc = {
jsxc.gui.roster.add(value);
});
jsxc.gui.roster.loaded = true;
$(document).trigger('cloaded.roster.jsxc');
},
+7 -1
Ver Arquivo
@@ -58,6 +58,12 @@ jsxc.options = {
return jid;
},
/**
* Action after login was called: dialog [String] Show wait dialog, false [boolean] |
* quiet [String] Do nothing
*/
onConnecting: 'dialog',
/**
* Action after connected: submit [String] Submit form, false [boolean] Do
* nothing, continue [String] Start chat
@@ -65,7 +71,7 @@ jsxc.options = {
onConnected: 'submit',
/**
* Action after auth fail: submit [String] Submit form, false [boolean] Do
* Action after auth fail: submit [String] Submit form, false [boolean] | quiet [String] Do
* nothing, ask [String] Show auth fail dialog
*/
onAuthFail: 'submit'
+27 -4
Ver Arquivo
@@ -245,6 +245,10 @@ jsxc.otr = {
* @returns {undefined}
*/
toggleTransfer: function(bid) {
if (typeof OTR !== 'function') {
return;
}
if (jsxc.storage.getUserItem('buddy', bid).msgstate === 0) {
jsxc.otr.goEncrypt(bid);
} else {
@@ -260,7 +264,9 @@ jsxc.otr = {
*/
goEncrypt: function(bid) {
if (jsxc.master) {
jsxc.otr.objects[bid].sendQueryMsg();
if (jsxc.otr.objects.hasOwnProperty(bid)) {
jsxc.otr.objects[bid].sendQueryMsg();
}
} else {
jsxc.storage.updateUserItem('buddy', bid, 'transferReq', 1);
}
@@ -275,10 +281,12 @@ jsxc.otr = {
*/
goPlain: function(bid, cb) {
if (jsxc.master) {
jsxc.otr.objects[bid].endOtr.call(jsxc.otr.objects[bid], cb);
jsxc.otr.objects[bid].init.call(jsxc.otr.objects[bid]);
if (jsxc.otr.objects.hasOwnProperty(bid)) {
jsxc.otr.objects[bid].endOtr.call(jsxc.otr.objects[bid], cb);
jsxc.otr.objects[bid].init.call(jsxc.otr.objects[bid]);
jsxc.otr.backup(bid);
jsxc.otr.backup(bid);
}
} else {
jsxc.storage.updateUserItem('buddy', bid, 'transferReq', 0);
}
@@ -361,6 +369,21 @@ jsxc.otr = {
return;
}
if (typeof OTR !== 'function') {
jsxc.warn('OTR support disabled');
OTR = {};
OTR.CONST = {
MSGSTATE_PLAINTEXT : 0,
MSGSTATE_ENCRYPTED : 1,
MSGSTATE_FINISHED : 2
};
jsxc._onMaster();
return;
}
if (jsxc.storage.getUserItem('key') === null) {
var msg = $.t('Creating_your_private_key_');
var worker = null;
+23 -21
Ver Arquivo
@@ -281,7 +281,17 @@ jsxc.gui.template.videoWindow = '<div class="jsxc_webrtc">\
}
var win = jsxc.gui.window.get(bid);
var jid = win.data('jid') || jsxc.storage.getUserItem('buddy', bid).jid;
var jid = win.data('jid');
var ls = jsxc.storage.getUserItem('buddy', bid);
if (typeof jid !== 'string') {
if (ls && typeof ls.jid === 'string') {
jid = ls.jid;
} else {
jsxc.debug('[webrtc] Could not update icon, because could not find jid for ' + bid);
return;
}
}
var el = win.find('.jsxc_video').add(jsxc.gui.roster.getItem(bid).find('.jsxc_video'));
@@ -344,12 +354,14 @@ jsxc.gui.template.videoWindow = '<div class="jsxc_webrtc">\
* @param status
* @private
*/
onPresence: function(ev, jid) {
onPresence: function(ev, jid, status, presence) {
var self = jsxc.webrtc;
jsxc.debug('webrtc.onpresence', jid);
if ($(presence).find('c[xmlns="' + Strophe.NS.CAPS + '"]').length === 0) {
jsxc.debug('webrtc.onpresence', jid);
self.updateIcon(jsxc.jidToBid(jid));
self.updateIcon(jsxc.jidToBid(jid));
}
},
/**
@@ -410,7 +422,13 @@ jsxc.gui.template.videoWindow = '<div class="jsxc_webrtc">\
onCaps: function(event, jid) {
var self = jsxc.webrtc;
self.updateIcon(jsxc.jidToBid(jid));
if (jsxc.gui.roster.loaded) {
self.updateIcon(jsxc.jidToBid(jid));
} else {
$(document).on('cloaded.roster.jsxc', function() {
self.updateIcon(jsxc.jidToBid(jid));
});
}
},
/**
@@ -651,23 +669,7 @@ jsxc.gui.template.videoWindow = '<div class="jsxc_webrtc">\
sess.local_fp = SDPUtil.parse_fingerprint(SDPUtil.find_line(localSDP, 'a=fingerprint:')).fingerprint;
sess.remote_fp = SDPUtil.parse_fingerprint(SDPUtil.find_line(remoteSDP, 'a=fingerprint:')).fingerprint;
var ip_regex = "(\\d{1,3}\\.\\d{1,3}.\\d{1,3}\\.\\d{1,3}) \\d+ typ host";
sess.remote_ip = remoteSDP.match(new RegExp(ip_regex))[1];
sess.local_ip = localSDP.match(new RegExp(ip_regex))[1];
var regex = new RegExp(ip_regex, 'g');
var match;
while ((match = regex.exec(remoteSDP)) !== null) {
if (match[1] !== sess.remote_ip) {
alert('!!! WARNING !!!\n\nPossible Man-in-the-middle attack detected!\n\nYou should close the connection.');
return;
}
}
var text = '<p>';
text += '<b>' + $.t('Local_IP') + ': </b>' + sess.local_ip + '<br />';
text += '<b>' + $.t('Remote_IP') + ': </b>' + sess.remote_ip + '<br />';
text += '<b>' + $.t('Local_Fingerprint') + ': </b>' + sess.local_fp + '<br />';
text += '<b>' + $.t('Remote_Fingerprint') + ': </b>' + sess.remote_fp;
text += '</p>';
+19 -13
Ver Arquivo
@@ -31,7 +31,7 @@ jsxc.xmpp = {
*/
login: function() {
if (jsxc.xmpp.conn && jsxc.xmpp.conn.connected) {
if (jsxc.xmpp.conn && jsxc.xmpp.conn.authenticated) {
return;
}
@@ -62,15 +62,17 @@ jsxc.xmpp = {
var url = jsxc.options.get('xmpp').url;
// Register eventlistener
$(document).on('connected.jsxc', jsxc.xmpp.connected);
$(document).on('attached.jsxc', jsxc.xmpp.attached);
$(document).on('disconnected.jsxc', jsxc.xmpp.disconnected);
$(document).on('ridChange', jsxc.xmpp.onRidChange);
$(document).on('connfail.jsxc', jsxc.xmpp.onConnfail);
$(document).on('authfail.jsxc', jsxc.xmpp.onAuthFail);
if (!(jsxc.xmpp.conn && jsxc.xmpp.conn.connected)) {
// Register eventlistener
$(document).on('connected.jsxc', jsxc.xmpp.connected);
$(document).on('attached.jsxc', jsxc.xmpp.attached);
$(document).on('disconnected.jsxc', jsxc.xmpp.disconnected);
$(document).on('ridChange', jsxc.xmpp.onRidChange);
$(document).on('connfail.jsxc', jsxc.xmpp.onConnfail);
$(document).on('authfail.jsxc', jsxc.xmpp.onAuthFail);
Strophe.addNamespace('RECEIPTS', 'urn:xmpp:receipts');
Strophe.addNamespace('RECEIPTS', 'urn:xmpp:receipts');
}
// Create new connection (no login)
jsxc.xmpp.conn = new Strophe.Connection(url);
@@ -98,6 +100,9 @@ jsxc.xmpp = {
jsxc.debug(Object.getOwnPropertyNames(Strophe.Status)[status] + ': ' + condition);
switch (status) {
case Strophe.Status.CONNECTING:
$(document).trigger('connecting.jsxc');
break;
case Strophe.Status.CONNECTED:
jsxc.bid = jsxc.jidToBid(jsxc.xmpp.conn.jid.toLowerCase());
$(document).trigger('connected.jsxc');
@@ -430,6 +435,7 @@ jsxc.xmpp = {
* @private
*/
onAuthFail: function() {
if (jsxc.options.loginForm.triggered) {
switch (jsxc.options.loginForm.onAuthFail || 'ask') {
case 'ask':
@@ -438,12 +444,11 @@ jsxc.xmpp = {
case 'submit':
jsxc.submitLoginForm();
break;
case 'quiet':
case false:
return;
}
}
if (jsxc.triggeredFromBox) {
jsxc.gui.showAuthFail();
}
},
/**
@@ -489,6 +494,7 @@ jsxc.xmpp = {
jsxc.storage.setUserItem('buddylist', buddies);
jsxc.gui.roster.loaded = true;
jsxc.debug('Roster loaded');
$(document).trigger('cloaded.roster.jsxc');
},