Comparar commits
53 Commits
| Autor | SHA1 | Data | |
|---|---|---|---|
| 4e9c802da9 | |||
| 651c138b97 | |||
| 153f045b00 | |||
| ba03261f1e | |||
| 50fe563e1a | |||
| 31c9b29521 | |||
| b1ce729ec9 | |||
| ffc3678cb9 | |||
| 5772868738 | |||
| 4529f71896 | |||
| 8b53842bcd | |||
| 5c2bc52b55 | |||
| e704f4d05a | |||
| fa3febf0b6 | |||
| 2814cfb36e | |||
| 8aa2736e4a | |||
| a2b216443a | |||
| 487e32a7b9 | |||
| 2950c747c9 | |||
| f39cc79dff | |||
| b62eb995d8 | |||
| e45aa41ae8 | |||
| ee1d70a1db | |||
| 66b5ebda32 | |||
| 08beae250b | |||
| 3de204d857 | |||
| a2fe0b9383 | |||
| e655247a01 | |||
| 27eefde3b3 | |||
| 708648e414 | |||
| 6e9fcf2518 | |||
| d7316e895a | |||
| 01c34f46dd | |||
| 65305f3609 | |||
| 2cd5b5764a | |||
| a52fe9884b | |||
| c95e117857 | |||
| 5f2d4ce7a6 | |||
| d988621b4d | |||
| 9750a558f2 | |||
| 89c6e28970 | |||
| 5224cdf30c | |||
| c85ef77c21 | |||
| cebcc61496 | |||
| 7cf71a7c8b | |||
| 4bffcd665c | |||
| 4fb9938049 | |||
| 419eb17f65 | |||
| 20cc517457 | |||
| a30bcffeec | |||
| e1f4d1d811 | |||
| dea3a30149 | |||
| 2c2e13d966 |
@@ -1,3 +1,6 @@
|
||||
node_modules
|
||||
*.zip
|
||||
*.zip.sig
|
||||
bower_components
|
||||
archives/
|
||||
css/
|
||||
|
||||
@@ -1,3 +1,21 @@
|
||||
v1.1.0a / 2015-02-25
|
||||
===
|
||||
- fix css url path
|
||||
|
||||
v1.1.0 / 2015-01-08
|
||||
===
|
||||
- move from plain css to sass
|
||||
- show avatar also by EXTVAL (url), not only by BINVAL
|
||||
- add XEP-0280 (Message Carbons)
|
||||
- add XEP-0297 (Stanza Forwarding)
|
||||
- add option to disable otr
|
||||
- add timestamp to messages
|
||||
- add ajax/prebind login
|
||||
- fix offline subscription request
|
||||
- fix hide offline contacts
|
||||
- fix error with multiple own resources
|
||||
- fix avatars with newlines
|
||||
|
||||
v1.0.0 / 2014-11-06
|
||||
===
|
||||
- add unread flag to roster and scroll to target window
|
||||
|
||||
+56
-12
@@ -1,11 +1,11 @@
|
||||
/* global module:false */
|
||||
module.exports = function(grunt) {
|
||||
|
||||
|
||||
var dep = grunt.file.readJSON('dep.json');
|
||||
var dep_files = dep.map(function(el) {
|
||||
return el.file;
|
||||
});
|
||||
|
||||
|
||||
// Project configuration.
|
||||
grunt.initConfig({
|
||||
app: grunt.file.readJSON('package.json'),
|
||||
@@ -25,7 +25,7 @@ module.exports = function(grunt) {
|
||||
main: {
|
||||
files: [ {
|
||||
expand: true,
|
||||
src: [ 'lib/strophe.jingle/*.js', 'lib/otr/build/**', 'lib/otr/lib/dsa-webworker.js', 'lib/otr/lib/sm-webworker.js', 'lib/otr/lib/const.js', 'lib/otr/lib/helpers.js', 'lib/otr/lib/dsa.js', 'lib/otr/vendor/*.js', 'lib/*.js', 'jsxc.lib.js', 'jsxc.lib.webrtc.js', '*.css', 'LICENSE', 'img/**', 'sound/**' ],
|
||||
src: [ 'lib/strophe.jingle/*.js', 'lib/otr/build/**', 'lib/otr/lib/dsa-webworker.js', 'lib/otr/lib/sm-webworker.js', 'lib/otr/lib/const.js', 'lib/otr/lib/helpers.js', 'lib/otr/lib/dsa.js', 'lib/otr/vendor/*.js', 'lib/*.js', 'jsxc.lib.js', 'jsxc.lib.webrtc.js', 'LICENSE', 'img/**', 'sound/**' ],
|
||||
dest: 'build/'
|
||||
} ]
|
||||
}
|
||||
@@ -62,12 +62,12 @@ module.exports = function(grunt) {
|
||||
' * \n' +
|
||||
' */\n\n',
|
||||
process: function(src, filepath) {
|
||||
if (filepath === 'build/lib/otr/build/dep/crypto.js') {
|
||||
if (filepath === 'build/lib/otr/build/dep/crypto.js') {
|
||||
src += ';';
|
||||
}
|
||||
|
||||
|
||||
var data = dep[dep_files.indexOf(filepath)];
|
||||
|
||||
|
||||
return '/*!\n * Source: ' + filepath + ', license: ' + data.license + ', url: ' + data.url + ' */\n' + src;
|
||||
}
|
||||
},
|
||||
@@ -115,7 +115,7 @@ module.exports = function(grunt) {
|
||||
logFormat: 'console',
|
||||
onComplete: function(m) {
|
||||
if (m.numMatches === 0) {
|
||||
grunt.fail.fatal("No entry in README.md for current version found.");
|
||||
grunt.fail.fatal("No entry in CHANGELOG.md for current version found.");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -124,7 +124,7 @@ module.exports = function(grunt) {
|
||||
compress: {
|
||||
main: {
|
||||
options: {
|
||||
archive: "jsxc-<%= app.version %>.zip"
|
||||
archive: "archives/jsxc-<%= app.version %>.zip"
|
||||
},
|
||||
files: [ {
|
||||
src: [ '**' ],
|
||||
@@ -134,12 +134,47 @@ module.exports = function(grunt) {
|
||||
} ]
|
||||
}
|
||||
},
|
||||
dataUri: {
|
||||
dist: {
|
||||
src: 'css/*.css',
|
||||
dest: 'build/css/',
|
||||
options: {
|
||||
target: ['img/*.*', 'img/**/*.*'],
|
||||
fixDirLevel: false,
|
||||
maxBytes: 2048
|
||||
}
|
||||
}
|
||||
},
|
||||
jsdoc: {
|
||||
dist: {
|
||||
src: ['jsxc.lib.js', 'jsxc.lib.webrtc.js'],
|
||||
dest: 'doc'
|
||||
}
|
||||
}
|
||||
},
|
||||
autoprefixer: {
|
||||
no_dest: {
|
||||
src: 'css/*.css'
|
||||
}
|
||||
},
|
||||
csslint: {
|
||||
strict: {
|
||||
options: {
|
||||
import: 2
|
||||
},
|
||||
src: ['css/*.css']
|
||||
},
|
||||
},
|
||||
sass: {
|
||||
options: {
|
||||
imagePath: '../img'
|
||||
},
|
||||
dist: {
|
||||
files: {
|
||||
'css/jsxc.css': 'scss/jsxc.scss',
|
||||
'css/jsxc.webrtc.css': 'scss/jsxc.webrtc.scss'
|
||||
}
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
// These plugins provide necessary tasks.
|
||||
@@ -153,13 +188,22 @@ module.exports = function(grunt) {
|
||||
grunt.loadNpmTasks('grunt-search');
|
||||
grunt.loadNpmTasks('grunt-contrib-compress');
|
||||
grunt.loadNpmTasks('grunt-jsdoc');
|
||||
grunt.loadNpmTasks('grunt-data-uri');
|
||||
grunt.loadNpmTasks('grunt-contrib-csslint');
|
||||
grunt.loadNpmTasks('grunt-sass');
|
||||
grunt.loadNpmTasks('grunt-autoprefixer');
|
||||
|
||||
// Default task.
|
||||
grunt.registerTask('default', [ 'jshint', 'search', 'jsdoc', 'clean', 'copy', 'usebanner', 'replace', 'concat', 'uglify', 'compress' ]);
|
||||
//Default task
|
||||
grunt.registerTask('default', [ 'css' ]);
|
||||
|
||||
// Create new build
|
||||
grunt.registerTask('build', [ 'search:changelog', 'pre', 'jsdoc' ]);
|
||||
|
||||
// Create alpha/beta build
|
||||
grunt.registerTask('pre', [ 'jshint', 'search:console', 'clean', 'copy', 'usebanner', 'replace', 'concat', 'uglify', 'compress' ]);
|
||||
grunt.registerTask('pre', [ 'jshint', 'search:console', 'clean', 'css', 'dataUri', 'copy', 'usebanner', 'replace', 'concat', 'uglify', 'compress' ]);
|
||||
|
||||
// before commit
|
||||
grunt.registerTask('commit', [ 'jshint', 'search:console' ]);
|
||||
|
||||
grunt.registerTask('css', [ 'sass', 'autoprefixer' ]);
|
||||
};
|
||||
|
||||
+1
-18
@@ -4,21 +4,4 @@ Real-time chat app. This app requires an external XMPP server (openfire, ejabber
|
||||
|
||||
You find a list of features, supported protocols and browsers at the homepage of __[Javascript XMPP Client](http://www.jsxc.org)__.
|
||||
|
||||
## Developer notes
|
||||
|
||||
Please execute the following commands to get a copy of the code:
|
||||
|
||||
```
|
||||
git clone https://github.com/sualko/jsxc/
|
||||
git submodule update --init
|
||||
```
|
||||
|
||||
### Libaries
|
||||
- jQuery (http://jquery.com/)
|
||||
- Strophe.js (http://strophe.im/strophejs/)
|
||||
- Strophe.js Plugins (https://github.com/strophe/strophejs-plugins)
|
||||
- OTR (https://github.com/arlolra/otr)
|
||||
- strophe.jingle (https://github.com/ESTOS/strophe.jingle)
|
||||
|
||||
### Events
|
||||
coming soon...
|
||||
If you are looking for install instructions or developer notes, please also checkout our [wiki](https://github.com/jsxc/jsxc/wiki/).
|
||||
|
||||
Diferenças do arquivo suprimidas por serem muito extensas
Carregar Diff
@@ -0,0 +1,240 @@
|
||||
.jsxc_remotevideo, .jsxc_noRemoteVideo {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
z-index: 9000;
|
||||
background-color: #999999; }
|
||||
|
||||
.jsxc_webrtc {
|
||||
width: 900px; }
|
||||
.jsxc_webrtc .jsxc_status {
|
||||
z-index: 9999;
|
||||
border-radius: 20px;
|
||||
display: none;
|
||||
position: absolute;
|
||||
top: 30px;
|
||||
left: 50%;
|
||||
background-color: rgba(0, 0, 0, 0.5);
|
||||
color: #fff;
|
||||
padding: 15px;
|
||||
font-weight: bold;
|
||||
text-align: center; }
|
||||
.jsxc_webrtc .slimScrollDiv {
|
||||
opacity: 1 !important; }
|
||||
.jsxc_webrtc li .jsxc_name {
|
||||
cursor: auto; }
|
||||
.jsxc_webrtc li .jsxc_name:hover {
|
||||
color: gray; }
|
||||
|
||||
.jsxc_videoContainer {
|
||||
width: 640px;
|
||||
height: 480px;
|
||||
position: relative;
|
||||
background-color: #999999; }
|
||||
.jsxc_videoContainer video {
|
||||
display: none; }
|
||||
.jsxc_videoContainer .jsxc_noRemoteVideo {
|
||||
display: none; }
|
||||
|
||||
.jsxc_noRemoteVideo p {
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
text-align: center;
|
||||
color: #fff;
|
||||
width: 100%;
|
||||
z-index: 100; }
|
||||
.jsxc_noRemoteVideo > div {
|
||||
width: 200px;
|
||||
height: 200px;
|
||||
overflow: hidden;
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
margin-top: -100px;
|
||||
left: 50%;
|
||||
margin-left: -100px; }
|
||||
.jsxc_noRemoteVideo > div > div {
|
||||
background-color: #4d4d4d; }
|
||||
.jsxc_noRemoteVideo > div > div:first-child {
|
||||
width: 50%;
|
||||
height: 50%;
|
||||
border-radius: 50%;
|
||||
position: absolute;
|
||||
left: 50%;
|
||||
margin-left: -25%;
|
||||
top: 10%; }
|
||||
.jsxc_noRemoteVideo > div > div:last-child {
|
||||
position: absolute;
|
||||
bottom: -50%;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
border-radius: 50%; }
|
||||
|
||||
.jsxc_localvideo {
|
||||
width: 160px;
|
||||
height: 120px;
|
||||
position: absolute;
|
||||
right: 10px;
|
||||
bottom: 10px;
|
||||
z-index: 9990;
|
||||
background-color: #000;
|
||||
cursor: pointer; }
|
||||
|
||||
div:full-screen {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background-color: #000; }
|
||||
div:full-screen.jsxc_localvideo {
|
||||
border: 1px solid #fff; }
|
||||
div:-webkit-full-screen {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background-color: #000; }
|
||||
div:-moz-full-screen {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background-color: #000; }
|
||||
div:-ms-fullscreen {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background-color: #000; }
|
||||
div:fullscreen {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background-color: #000; }
|
||||
div:-webkit-full-screen.jsxc_localvideo {
|
||||
border: 1px solid #fff; }
|
||||
div:-moz-full-screen.jsxc_localvideo {
|
||||
border: 1px solid #fff; }
|
||||
div:-ms-fullscreen.jsxc_localvideo {
|
||||
border: 1px solid #fff; }
|
||||
div:fullscreen.jsxc_localvideo {
|
||||
border: 1px solid #fff; }
|
||||
div.jsxc_video {
|
||||
background-image: url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgdmVyc2lvbj0iMS4xIgogICBpZD0ic3ZnMiIKICAgd2lkdGg9IjIwIgogICBoZWlnaHQ9IjIwIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGExMCI+CiAgICA8cmRmOlJERj4KICAgICAgPGNjOldvcmsKICAgICAgICAgcmRmOmFib3V0PSIiPgogICAgICAgIDxkYzpmb3JtYXQ+aW1hZ2Uvc3ZnK3htbDwvZGM6Zm9ybWF0PgogICAgICAgIDxkYzp0eXBlCiAgICAgICAgICAgcmRmOnJlc291cmNlPSJodHRwOi8vcHVybC5vcmcvZGMvZGNtaXR5cGUvU3RpbGxJbWFnZSIgLz4KICAgICAgICA8ZGM6dGl0bGU+PC9kYzp0aXRsZT4KICAgICAgPC9jYzpXb3JrPgogICAgPC9yZGY6UkRGPgogIDwvbWV0YWRhdGE+CiAgPGRlZnMKICAgICBpZD0iZGVmczgiIC8+CiAgPGcKICAgICBpZD0ibGF5ZXIxIgogICAgIHRyYW5zZm9ybT0ibWF0cml4KDAuMDM3ODg1OTQsMCwwLDAuMDM3ODg1OTQsLTAuNDEzNDA3OTMsLTIuNjMxMDcxNikiPgogICAgPHBhdGgKICAgICAgIGlkPSJwYXRoMzkwNiIKICAgICAgIHN0eWxlPSJmaWxsOiM4MDgwODA7c3Ryb2tlOm5vbmUiCiAgICAgICBkPSJtIDM2MS42NTE0OCwzMTMuNTE3NjggMTc3LjE2MDc0LC0xMzEuNzg1MTYgMCwzMDIuMjI5OTkgTCAzNTguOTczMzgsMzUwLjE4NTE3IFogTSAxMC45MTE5MjIsMTgyLjQwNjM0IGwgMzc4LjM3MjY3OCwwIDAsMzAyLjY1NTgyIC0zNzguMzcyNjc4LDAgeiIgLz4KICA8L2c+Cjwvc3ZnPgo=");
|
||||
background-repeat: no-repeat;
|
||||
background-position: center center;
|
||||
background-size: 15px 15px; }
|
||||
div.jsxc_video:not(.jsxc_disabled):hover {
|
||||
background-image: url("../img/camera_icon_white.svg"); }
|
||||
|
||||
.jsxc_controlbar {
|
||||
width: 640px; }
|
||||
.jsxc_controlbar .jsxc_showchat {
|
||||
float: right; }
|
||||
|
||||
.jsxc_multi > div {
|
||||
display: none; }
|
||||
|
||||
.jsxc_snapshotbar {
|
||||
width: 100%;
|
||||
display: none; }
|
||||
.jsxc_snapshotbar img {
|
||||
height: 50px; }
|
||||
|
||||
.jsxc_buttongroup {
|
||||
display: inline; }
|
||||
.jsxc_buttongroup button:first-child {
|
||||
border-top-right-radius: 0;
|
||||
border-bottom-right-radius: 0;
|
||||
margin-right: 0; }
|
||||
.jsxc_buttongroup button:last-child {
|
||||
border-top-left-radius: 0;
|
||||
border-bottom-left-radius: 0;
|
||||
margin-left: 0; }
|
||||
|
||||
.jsxc_chatarea {
|
||||
position: relative;
|
||||
float: right;
|
||||
height: 480px;
|
||||
width: 250px;
|
||||
background-color: #999999; }
|
||||
.jsxc_chatarea .jsxc_settings {
|
||||
display: none !important; }
|
||||
.jsxc_chatarea .jsxc_close {
|
||||
display: none !important; }
|
||||
.jsxc_chatarea .jsxc_video {
|
||||
display: none !important; }
|
||||
.jsxc_chatarea .jsxc_window {
|
||||
bottom: 0;
|
||||
box-shadow: none; }
|
||||
.jsxc_chatarea > ul {
|
||||
width: 250px;
|
||||
height: 480px;
|
||||
list-style: none;
|
||||
padding: 0; }
|
||||
|
||||
.bubblingG {
|
||||
text-align: center;
|
||||
width: 129px;
|
||||
height: 80px;
|
||||
position: absolute;
|
||||
top: 40%;
|
||||
left: 50%;
|
||||
margin-left: -64px; }
|
||||
.bubblingG span {
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
margin: 40px auto;
|
||||
background: #000;
|
||||
border-radius: 81px;
|
||||
-webkit-animation: bubblingG 1.3s infinite alternate;
|
||||
animation: bubblingG 1.3s infinite alternate; }
|
||||
|
||||
#bubblingG_1 {
|
||||
-webkit-animation-delay: 0s;
|
||||
animation-delay: 0s; }
|
||||
|
||||
#bubblingG_2 {
|
||||
-webkit-animation-delay: 0.39s;
|
||||
animation-delay: 0.39s; }
|
||||
|
||||
#bubblingG_3 {
|
||||
-webkit-animation-delay: 0.78s;
|
||||
animation-delay: 0.78s; }
|
||||
|
||||
@-webkit-keyframes bubblingG {
|
||||
|
||||
0% {
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
background-color: #000;
|
||||
-webkit-transform: translateY(0);
|
||||
transform: translateY(0); }
|
||||
|
||||
100% {
|
||||
width: 39px;
|
||||
height: 39px;
|
||||
background-color: #fff;
|
||||
-webkit-transform: translateY(-34px);
|
||||
transform: translateY(-34px); } }
|
||||
|
||||
@keyframes bubblingG {
|
||||
0% {
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
background-color: #000;
|
||||
-webkit-transform: translateY(0);
|
||||
transform: translateY(0); }
|
||||
|
||||
100% {
|
||||
width: 39px;
|
||||
height: 39px;
|
||||
background-color: #fff;
|
||||
-webkit-transform: translateY(-34px);
|
||||
transform: translateY(-34px); } }
|
||||
|
||||
.jsxc_fullscreen.jsxc_localvideo {
|
||||
border: 1px solid #fff; }
|
||||
|
||||
.jsxc_videoSuitable .jsxc_name {
|
||||
font-style: italic; }
|
||||
|
||||
#jsxc_buddylist .jsxc_options .jsxc_video {
|
||||
background-image: url("../img/camera_icon_white.svg"); }
|
||||
#jsxc_buddylist .jsxc_options .jsxc_video.jsxc_disabled {
|
||||
opacity: 0.2; }
|
||||
-1243
Diferenças do arquivo suprimidas por serem muito extensas
Carregar Diff
+477
-100
@@ -1,15 +1,15 @@
|
||||
/*! This file is concatenated for the browser. */
|
||||
|
||||
/*!
|
||||
* jsxc v1.0.0 - 2014-11-06
|
||||
* jsxc v1.1.0a - 2015-02-25
|
||||
*
|
||||
* Copyright (c) 2014 Klaus Herberth <klaus@jsxc.org> <br>
|
||||
* Copyright (c) 2015 Klaus Herberth <klaus@jsxc.org> <br>
|
||||
* Released under the MIT license
|
||||
*
|
||||
* Please see http://www.jsxc.org/
|
||||
*
|
||||
* @author Klaus Herberth <klaus@jsxc.org>
|
||||
* @version 1.0.0
|
||||
* @version 1.1.0a
|
||||
* @license MIT
|
||||
*/
|
||||
|
||||
@@ -25,7 +25,7 @@ var jsxc;
|
||||
*/
|
||||
jsxc = {
|
||||
/** Version of jsxc */
|
||||
version: '1.0.0',
|
||||
version: '1.1.0a',
|
||||
|
||||
/** True if i'm the master */
|
||||
master: false,
|
||||
@@ -54,9 +54,6 @@ var jsxc;
|
||||
/** True if restore is complete */
|
||||
restoreCompleted: false,
|
||||
|
||||
/** True if login through form */
|
||||
triggeredFromForm: false,
|
||||
|
||||
/** True if login through box */
|
||||
triggeredFromBox: false,
|
||||
|
||||
@@ -95,9 +92,39 @@ var jsxc;
|
||||
REGEX: {
|
||||
JID: new RegExp('\\b[^"&\'\\/:<>@\\s]+@[\\w-_.]+\\b', 'ig'),
|
||||
URL: new RegExp(/((?:https?:\/\/|www\.|([\w\-]+\.[a-zA-Z]{2,3})(?=\b))(?:(?:[\-A-Za-z0-9+&@#\/%?=~_|!:,.;]*\([\-A-Za-z0-9+&@#\/%?=~_|!:,.;]*\)([\-A-Za-z0-9+&@#\/%?=~_|!:,.;]*[\-A-Za-z0-9+&@#\/%=~_|])?)|(?:[\-A-Za-z0-9+&@#\/%?=~_|!:,.;]*[\-A-Za-z0-9+&@#\/%=~_|]))?)/gi)
|
||||
},
|
||||
NS: {
|
||||
CARBONS: 'urn:xmpp:carbons:2',
|
||||
FORWARD: 'urn:xmpp:forward:0'
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Parse a unix timestamp and return a formatted time string
|
||||
*
|
||||
* @memberOf jsxc
|
||||
* @param {Object} unixtime
|
||||
* @returns time of day and/or date
|
||||
*/
|
||||
getFormattedTime: function(unixtime) {
|
||||
var msgDate = new Date(parseInt(unixtime));
|
||||
var date = ('0' + msgDate.getDate()).slice(-2);
|
||||
var month = ('0' + (msgDate.getMonth() + 1)).slice(-2);
|
||||
var year = msgDate.getFullYear();
|
||||
var hours = ('0' + msgDate.getHours()).slice(-2);
|
||||
var minutes = ('0' + msgDate.getMinutes()).slice(-2);
|
||||
var dateNow = new Date(), time = hours + ':' + minutes;
|
||||
|
||||
// compare dates only
|
||||
dateNow.setHours(0, 0, 0, 0);
|
||||
msgDate.setHours(0, 0, 0, 0);
|
||||
|
||||
if (dateNow.getTime() !== msgDate.getTime()) {
|
||||
return date + '.' + month + '.' + year + ' ' + time;
|
||||
}
|
||||
return time;
|
||||
},
|
||||
|
||||
/**
|
||||
* Write debug message to console and to log.
|
||||
*
|
||||
@@ -171,7 +198,7 @@ var jsxc;
|
||||
|
||||
if (options) {
|
||||
// override default options
|
||||
$.extend(jsxc.options, options);
|
||||
$.extend(true, jsxc.options, options);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -221,6 +248,10 @@ var jsxc;
|
||||
return;
|
||||
}
|
||||
|
||||
if (jsxc.storage.getItem('debug') === true) {
|
||||
jsxc.options.otr.debug = true;
|
||||
}
|
||||
|
||||
// Register event listener for the storage event
|
||||
window.addEventListener('storage', jsxc.storage.onStorage, false);
|
||||
|
||||
@@ -272,7 +303,7 @@ var jsxc;
|
||||
var settings = jsxc.prepareLogin();
|
||||
|
||||
if (settings !== false && (settings.xmpp.onlogin === "true" || settings.xmpp.onlogin === true)) {
|
||||
jsxc.triggeredFromForm = true;
|
||||
jsxc.options.loginForm.triggered = true;
|
||||
|
||||
jsxc.xmpp.login();
|
||||
|
||||
@@ -400,8 +431,12 @@ var jsxc;
|
||||
// Sending keepalive signal
|
||||
jsxc.startKeepAlive();
|
||||
|
||||
// create or load DSA key and call _onMaster
|
||||
jsxc.otr.createDSA();
|
||||
if (jsxc.options.get('otr').enable) {
|
||||
// create or load DSA key and call _onMaster
|
||||
jsxc.otr.createDSA();
|
||||
} else {
|
||||
jsxc._onMaster();
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
@@ -441,6 +476,10 @@ var jsxc;
|
||||
}
|
||||
}
|
||||
|
||||
$(document).on('connectionReady.jsxc', function() {
|
||||
jsxc.gui.updateAvatar($('#jsxc_avatar'), jsxc.storage.getItem('jid'), 'own');
|
||||
});
|
||||
|
||||
jsxc.xmpp.login();
|
||||
},
|
||||
|
||||
@@ -690,6 +729,27 @@ var jsxc;
|
||||
return jsxc.l[k] || key.replace(/_/g, ' ');
|
||||
});
|
||||
},
|
||||
|
||||
/**
|
||||
* Executes the given function in jsxc namespace.
|
||||
*
|
||||
* @memberOf jsxc
|
||||
* @param {string} fnName Function name
|
||||
* @param {array} fnParams Function parameters
|
||||
* @returns Function return value
|
||||
*/
|
||||
exec: function(fnName, fnParams) {
|
||||
var fnList = fnName.split('.');
|
||||
var fn = jsxc[fnList[0]];
|
||||
var i;
|
||||
for (i = 1; i < fnList.length; i++) {
|
||||
fn = fn[fnList[i]];
|
||||
}
|
||||
|
||||
if (typeof fn === 'function') {
|
||||
return fn.apply(null, fnParams);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -710,7 +770,11 @@ var jsxc;
|
||||
|
||||
/** OTR options */
|
||||
otr: {
|
||||
ERROR_START_AKE: true
|
||||
enable: true,
|
||||
ERROR_START_AKE: false,
|
||||
debug: false,
|
||||
SEND_WHITESPACE_TAG: true,
|
||||
WHITESPACE_START_AKE: true
|
||||
},
|
||||
|
||||
/** xmpp options */
|
||||
@@ -746,7 +810,19 @@ var jsxc;
|
||||
/** manipulate JID from input element */
|
||||
preJid: function(jid) {
|
||||
return jid;
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* 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]
|
||||
* Do nothing, ask [String] Show auth fail dialog
|
||||
*/
|
||||
onAuthFail: 'submit'
|
||||
},
|
||||
|
||||
/** jquery object from logout element */
|
||||
@@ -817,9 +893,15 @@ var jsxc;
|
||||
*
|
||||
* @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
|
||||
}
|
||||
};
|
||||
|
||||
@@ -873,6 +955,11 @@ var jsxc;
|
||||
* @memberOf jsxc.gui
|
||||
*/
|
||||
init: function() {
|
||||
//Prevent duplicate windowList
|
||||
if ($('#jsxc_windowList').length > 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
$('body').append($(jsxc.gui.template.get('windowList')));
|
||||
|
||||
$(window).resize(jsxc.gui.updateWindowListSB);
|
||||
@@ -892,7 +979,9 @@ var jsxc;
|
||||
|
||||
jsxc.gui.tooltip('#jsxc_windowList');
|
||||
|
||||
jsxc.gui.roster.init();
|
||||
if (!jsxc.el_exists('#jsxc_roster')) {
|
||||
jsxc.gui.roster.init();
|
||||
}
|
||||
|
||||
// prepare regexp for emotions
|
||||
$.each(jsxc.gui.emotions, function(i, val) {
|
||||
@@ -1017,7 +1106,7 @@ var jsxc;
|
||||
var avatarSrc = jsxc.storage.getUserItem('avatar', aid);
|
||||
|
||||
var setAvatar = function(src) {
|
||||
if (src === 0) {
|
||||
if (src === 0 || src === '0') {
|
||||
jsxc.options.defaultAvatar.call(el, jid);
|
||||
return;
|
||||
}
|
||||
@@ -1041,13 +1130,18 @@ var jsxc;
|
||||
|
||||
if (vCard.length === 0) {
|
||||
jsxc.debug('No photo provided');
|
||||
src = 0;
|
||||
src = '0';
|
||||
} else if (vCard.find('EXTVAL').length > 0) {
|
||||
src = vCard.find('EXTVAL').text();
|
||||
} else {
|
||||
var img = vCard.find('BINVAL').text();
|
||||
var type = vCard.find('TYPE').text();
|
||||
src = 'data:' + type + ';base64,' + img;
|
||||
}
|
||||
|
||||
// concat chunks
|
||||
src = src.replace(/[\t\r\n\f]/gi, '');
|
||||
|
||||
jsxc.storage.setUserItem('avatar', aid, src);
|
||||
setAvatar(src);
|
||||
}, Strophe.getBareJidFromJid(jid), function(msg) {
|
||||
@@ -1184,7 +1278,7 @@ var jsxc;
|
||||
var settings = jsxc.prepareLogin();
|
||||
|
||||
jsxc.triggeredFromBox = true;
|
||||
jsxc.triggeredFromForm = false;
|
||||
jsxc.options.loginForm.triggered = false;
|
||||
|
||||
if (settings === false) {
|
||||
jsxc.gui.showAuthFail();
|
||||
@@ -1451,7 +1545,7 @@ var jsxc;
|
||||
showAuthFail: function() {
|
||||
jsxc.gui.dialog.open(jsxc.gui.template.get('authFailDialog'));
|
||||
|
||||
if (jsxc.triggeredFromBox) {
|
||||
if (jsxc.options.loginForm.triggered !== false) {
|
||||
$('#jsxc_dialog .jsxc_cancel').hide();
|
||||
}
|
||||
|
||||
@@ -1642,7 +1736,17 @@ var jsxc;
|
||||
var type = photo.find('TYPE').text();
|
||||
var src = 'data:' + type + ';base64,' + img;
|
||||
|
||||
$('#jsxc_dialog h3').before('<img class="jsxc_vCard" src="' + src + '" alt="avatar" />');
|
||||
if (photo.find('EXTVAL').length > 0) {
|
||||
src = photo.find('EXTVAL').text();
|
||||
}
|
||||
|
||||
// concat chunks
|
||||
src = src.replace(/[\t\r\n\f]/gi, '');
|
||||
|
||||
var img_el = $('<img class="jsxc_vCard" alt="avatar" />');
|
||||
img_el.attr('src', src);
|
||||
|
||||
$('#jsxc_dialog h3').before(img_el);
|
||||
}
|
||||
|
||||
if ($(stanza).find('vCard').length === 0 || ($(stanza).find('vcard > *').length === 1 && photo.length === 1)) {
|
||||
@@ -1716,6 +1820,10 @@ var jsxc;
|
||||
|
||||
var err = jsxc.options.saveSettinsPermanent.call(this, data);
|
||||
|
||||
if (typeof self.attr('data-onsubmit') === 'string') {
|
||||
jsxc.exec(self.attr('data-onsubmit'), [ err ]);
|
||||
}
|
||||
|
||||
setTimeout(function() {
|
||||
self.find('input[type="submit"]').effect('highlight', {
|
||||
color: (err) ? 'green' : 'red'
|
||||
@@ -2025,10 +2133,6 @@ var jsxc;
|
||||
$('#jsxc_presence > span').text($('#jsxc_presence > ul .jsxc_' + pres).text());
|
||||
jsxc.gui.updatePresence('own', pres);
|
||||
|
||||
$(document).on('cloaded.roster.jsxc', function() {
|
||||
jsxc.gui.updateAvatar($('#jsxc_avatar'), jsxc.storage.getItem('jid'), 'own');
|
||||
});
|
||||
|
||||
jsxc.gui.tooltip('#jsxc_roster');
|
||||
|
||||
jsxc.notice.load();
|
||||
@@ -2266,8 +2370,7 @@ var jsxc;
|
||||
* Shows a text with link to a login box that no connection exists.
|
||||
*/
|
||||
noConnection: function() {
|
||||
$('#jsxc_roster .slimScrollDiv').remove();
|
||||
$('#jsxc_roster > .jsxc_bottom').remove();
|
||||
$('#jsxc_roster').addClass('jsxc_noConnection');
|
||||
|
||||
$('#jsxc_roster').append($('<p>' + jsxc.l.no_connection + '</p>').append(' <a>' + jsxc.l.relogin + '</a>').click(function() {
|
||||
jsxc.gui.showLoginBox();
|
||||
@@ -2736,8 +2839,11 @@ var jsxc;
|
||||
* @param {String} direction 'in' message is received or 'out' message is
|
||||
* send
|
||||
* @param {String} msg Message to display
|
||||
* @param {boolean} encrypted Was this message encrypted? Default: false
|
||||
* @param {boolean} forwarded Was this message forwarded? Default: false
|
||||
* @param {integer} stamp Timestamp
|
||||
*/
|
||||
postMessage: function(bid, direction, msg) {
|
||||
postMessage: function(bid, direction, msg, encrypted, forwarded, stamp) {
|
||||
var data = jsxc.storage.getUserItem('buddy', bid);
|
||||
var html_msg = msg;
|
||||
|
||||
@@ -2747,12 +2853,12 @@ var jsxc;
|
||||
|
||||
// exceptions:
|
||||
|
||||
if (direction === 'out' && data.msgstate === 2) {
|
||||
if (direction === 'out' && data.msgstate === OTR.CONST.MSGSTATE_FINISHED && forwarded !== true) {
|
||||
direction = 'sys';
|
||||
msg = jsxc.l.your_message_wasnt_send_please_end_your_private_conversation;
|
||||
}
|
||||
|
||||
if (direction === 'in' && data.msgstate === 2) {
|
||||
if (direction === 'in' && data.msgstate === OTR.CONST.MSGSTATE_FINISHED) {
|
||||
direction = 'sys';
|
||||
msg = jsxc.l.unencrypted_message_received + ' ' + msg;
|
||||
}
|
||||
@@ -2762,13 +2868,14 @@ var jsxc;
|
||||
msg = jsxc.l.your_message_wasnt_send_because_you_have_no_valid_subscription;
|
||||
}
|
||||
|
||||
var post = jsxc.storage.saveMessage(bid, direction, msg);
|
||||
encrypted = encrypted || data.msgstate === OTR.CONST.MSGSTATE_ENCRYPTED;
|
||||
var post = jsxc.storage.saveMessage(bid, direction, msg, encrypted, forwarded, stamp);
|
||||
|
||||
if (direction === 'in') {
|
||||
$(document).trigger('postmessagein.jsxc', [ bid, html_msg ]);
|
||||
}
|
||||
|
||||
if (direction === 'out' && jsxc.master) {
|
||||
if (direction === 'out' && jsxc.master && forwarded !== true) {
|
||||
jsxc.xmpp.sendMessage(bid, html_msg, post.uid);
|
||||
}
|
||||
|
||||
@@ -2792,7 +2899,6 @@ var jsxc;
|
||||
var msg = post.msg;
|
||||
var direction = post.direction;
|
||||
var uid = post.uid;
|
||||
var received = post.received || false;
|
||||
|
||||
if (win.find('.jsxc_textinput').is(':not(:focus)') && jsxc.restoreCompleted && direction === 'in' && !restore) {
|
||||
jsxc.gui.window.highlight(bid);
|
||||
@@ -2831,17 +2937,29 @@ var jsxc;
|
||||
});
|
||||
});
|
||||
|
||||
var msgDiv = $("<div>");
|
||||
var msgDiv = $("<div>"), msgTsDiv = $("<div>");
|
||||
msgDiv.addClass('jsxc_chatmessage jsxc_' + direction);
|
||||
msgDiv.attr('id', uid);
|
||||
msgDiv.html(msg);
|
||||
msgDiv.html('<div>' + msg + '</div>');
|
||||
msgTsDiv.addClass('jsxc_timestamp');
|
||||
msgTsDiv.html(jsxc.getFormattedTime(post.stamp));
|
||||
|
||||
if (received) {
|
||||
if (post.received || false) {
|
||||
msgDiv.addClass('jsxc_received');
|
||||
}
|
||||
|
||||
if (post.forwarded) {
|
||||
msgDiv.addClass('jsxc_forwarded');
|
||||
}
|
||||
|
||||
if (post.encrypted) {
|
||||
msgDiv.addClass('jsxc_encrypted');
|
||||
}
|
||||
|
||||
if (direction === 'sys') {
|
||||
jsxc.gui.window.get(bid).find('.jsxc_textarea').append('<div style="clear:both"/>');
|
||||
} else if (typeof post.stamp !== 'undefined') {
|
||||
msgDiv.append(msgTsDiv);
|
||||
}
|
||||
|
||||
win.find('.jsxc_textarea').append(msgDiv);
|
||||
@@ -3159,6 +3277,14 @@ var jsxc;
|
||||
<label for="priority-dnd">%%dnd%%</label><input type="number" value="0" id="priority-dnd" min="-128" max="127" step="1" required="required"/><br />\
|
||||
<input type="submit" value="%%Save%%"/>\
|
||||
</fieldset>\
|
||||
</form>\
|
||||
<p></p>\
|
||||
<form data-onsubmit="xmpp.carbons.refresh">\
|
||||
<fieldset class="jsxc_fieldsetCarbons jsxc_fieldset">\
|
||||
<legend>%%Carbon copy%%</legend>\
|
||||
<label for="carbons-enable">%%Enable%%</label><input type="checkbox" id="carbons-enable" /><br />\
|
||||
<input type="submit" value="%%Save%%"/>\
|
||||
</fieldset>\
|
||||
</form>'
|
||||
};
|
||||
|
||||
@@ -3173,13 +3299,50 @@ var jsxc;
|
||||
/**
|
||||
* Create new connection or attach to old
|
||||
*
|
||||
* @name login
|
||||
* @memberOf jsxc.xmpp
|
||||
*/
|
||||
/**
|
||||
* Create new connection with given parameters.
|
||||
*
|
||||
* @name login^2
|
||||
* @param {string} jid
|
||||
* @param {string} password
|
||||
* @memberOf jsxc.xmpp
|
||||
*/
|
||||
/**
|
||||
* Attach connection with given parameters.
|
||||
*
|
||||
* @name login^3
|
||||
* @param {string} jid
|
||||
* @param {string} sid
|
||||
* @param {string} rid
|
||||
* @memberOf jsxc.xmpp
|
||||
*/
|
||||
login: function() {
|
||||
|
||||
var sid = jsxc.storage.getItem('sid');
|
||||
var rid = jsxc.storage.getItem('rid');
|
||||
var jid = jsxc.storage.getItem('jid');
|
||||
if (jsxc.xmpp.conn && jsxc.xmpp.conn.connected) {
|
||||
return;
|
||||
}
|
||||
|
||||
var jid = null, password = null, sid = null, rid = null;
|
||||
|
||||
switch (arguments.length) {
|
||||
case 2:
|
||||
jid = arguments[0];
|
||||
password = arguments[1];
|
||||
break;
|
||||
case 3:
|
||||
jid = arguments[0];
|
||||
sid = arguments[1];
|
||||
rid = arguments[2];
|
||||
break;
|
||||
default:
|
||||
jid = jsxc.storage.getItem('jid');
|
||||
sid = jsxc.storage.getItem('sid');
|
||||
rid = jsxc.storage.getItem('rid');
|
||||
}
|
||||
|
||||
var url = jsxc.options.get('xmpp').url;
|
||||
|
||||
// Register eventlistener
|
||||
@@ -3187,6 +3350,8 @@ var jsxc;
|
||||
$(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');
|
||||
|
||||
@@ -3227,10 +3392,10 @@ var jsxc;
|
||||
$(document).trigger('disconnected.jsxc');
|
||||
break;
|
||||
case Strophe.Status.CONNFAIL:
|
||||
jsxc.xmpp.onConnfail(condition);
|
||||
$(document).trigger('connfail.jsxc');
|
||||
break;
|
||||
case Strophe.Status.AUTHFAIL:
|
||||
jsxc.gui.showAuthFail();
|
||||
$(document).trigger('authfail.jsxc');
|
||||
break;
|
||||
}
|
||||
};
|
||||
@@ -3246,7 +3411,23 @@ var jsxc;
|
||||
} else {
|
||||
jsxc.debug('New connection');
|
||||
|
||||
jsxc.xmpp.conn.connect(jsxc.options.xmpp.jid, jsxc.options.xmpp.password, callback);
|
||||
if (jsxc.xmpp.conn.caps) {
|
||||
// Add system handler, because user handler isn't called before
|
||||
// we are authenticated
|
||||
jsxc.xmpp.conn._addSysHandler(function(stanza) {
|
||||
var from = jsxc.xmpp.conn.domain, c = stanza.querySelector('c'), ver = c.getAttribute('ver'), node = c.getAttribute('node');
|
||||
|
||||
var _jidNodeIndex = JSON.parse(localStorage.getItem('strophe.caps._jidNodeIndex')) || {};
|
||||
|
||||
jsxc.xmpp.conn.caps._jidVerIndex[from] = ver;
|
||||
_jidNodeIndex[from] = node;
|
||||
|
||||
localStorage.setItem('strophe.caps._jidVerIndex', JSON.stringify(jsxc.xmpp.conn.caps._jidVerIndex));
|
||||
localStorage.setItem('strophe.caps._jidNodeIndex', JSON.stringify(_jidNodeIndex));
|
||||
}, Strophe.NS.CAPS);
|
||||
}
|
||||
|
||||
jsxc.xmpp.conn.connect(jid || jsxc.options.xmpp.jid, password || jsxc.options.xmpp.password, callback);
|
||||
}
|
||||
},
|
||||
|
||||
@@ -3281,11 +3462,11 @@ var jsxc;
|
||||
jsxc.triggeredFromElement = true;
|
||||
|
||||
// restore all otr objects
|
||||
$.each(jsxc.storage.getUserItem('otrlist'), function(i, val) {
|
||||
$.each(jsxc.storage.getUserItem('otrlist') || {}, function(i, val) {
|
||||
jsxc.otr.create(val);
|
||||
});
|
||||
|
||||
var numOtr = Object.keys(jsxc.otr.objects).length + 1;
|
||||
var numOtr = Object.keys(jsxc.otr.objects || {}).length + 1;
|
||||
var disReady = function() {
|
||||
if (--numOtr <= 0) {
|
||||
jsxc.xmpp.conn.flush();
|
||||
@@ -3297,7 +3478,7 @@ var jsxc;
|
||||
};
|
||||
|
||||
// end all private conversations
|
||||
$.each(jsxc.otr.objects, function(key, obj) {
|
||||
$.each(jsxc.otr.objects || {}, function(key, obj) {
|
||||
if (obj.msgstate === OTR.CONST.MSGSTATE_ENCRYPTED) {
|
||||
obj.endOtr.call(obj, function() {
|
||||
obj.init.call(obj);
|
||||
@@ -3341,20 +3522,25 @@ var jsxc;
|
||||
jsxc.storage.removeUserItem('avatar', 'own');
|
||||
jsxc.storage.removeUserItem('otrlist');
|
||||
|
||||
// submit login form
|
||||
if (jsxc.triggeredFromForm) {
|
||||
// Trigger normal submit
|
||||
jsxc.submitLoginForm();
|
||||
return;
|
||||
if (jsxc.options.loginForm.triggered) {
|
||||
switch (jsxc.options.loginForm.onConnected || 'submit') {
|
||||
case 'submit':
|
||||
jsxc.submitLoginForm();
|
||||
/* falls through */
|
||||
case false:
|
||||
jsxc.xmpp.connectionReady();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// reload page after login from login box
|
||||
if (jsxc.triggeredFromBox) {
|
||||
window.location.reload();
|
||||
return;
|
||||
}
|
||||
// start chat
|
||||
|
||||
jsxc.xmpp.connectionReady();
|
||||
jsxc.gui.init();
|
||||
$('#jsxc_roster').removeClass('jsxc_noConnection');
|
||||
jsxc.onMaster();
|
||||
jsxc.xmpp.conn.resume();
|
||||
jsxc.gui.dialog.close();
|
||||
$(document).trigger('attached.jsxc');
|
||||
},
|
||||
|
||||
/**
|
||||
@@ -3369,6 +3555,37 @@ var jsxc;
|
||||
jsxc.xmpp.conn.addHandler(jsxc.xmpp.onReceived, null, 'message');
|
||||
jsxc.xmpp.conn.addHandler(jsxc.xmpp.onPresence, null, 'presence');
|
||||
|
||||
var caps = jsxc.xmpp.conn.caps;
|
||||
var domain = jsxc.xmpp.conn.domain;
|
||||
|
||||
if (caps && jsxc.options.get('carbons').enable) {
|
||||
var conditionalEnable = function() {
|
||||
if (jsxc.xmpp.conn.caps.hasFeatureByJid(domain, jsxc.CONST.NS.CARBONS)) {
|
||||
jsxc.xmpp.carbons.enable();
|
||||
}
|
||||
};
|
||||
|
||||
if (typeof caps._knownCapabilities[caps._jidVerIndex[domain]] === 'undefined') {
|
||||
var _jidNodeIndex = JSON.parse(localStorage.getItem('strophe.caps._jidNodeIndex')) || {};
|
||||
|
||||
$(document).on('caps.strophe', function onCaps(ev, from) {
|
||||
|
||||
if (from !== domain) {
|
||||
return;
|
||||
}
|
||||
|
||||
conditionalEnable();
|
||||
|
||||
$(document).off('caps.strophe', onCaps);
|
||||
});
|
||||
|
||||
caps._requestCapabilities(jsxc.xmpp.conn.domain, _jidNodeIndex[domain], caps._jidVerIndex[domain]);
|
||||
} else {
|
||||
// We know server caps
|
||||
conditionalEnable();
|
||||
}
|
||||
}
|
||||
|
||||
// Only load roaster if necessary
|
||||
if (!jsxc.restore || !jsxc.storage.getUserItem('buddylist')) {
|
||||
// in order to not overide existing presence information, we send
|
||||
@@ -3450,6 +3667,13 @@ var jsxc;
|
||||
jsxc.storage.removeUserItem('avatar', 'own');
|
||||
jsxc.storage.removeUserItem('otrlist');
|
||||
|
||||
$(document).off('connected.jsxc', jsxc.xmpp.connected);
|
||||
$(document).off('attached.jsxc', jsxc.xmpp.attached);
|
||||
$(document).off('disconnected.jsxc', jsxc.xmpp.disconnected);
|
||||
$(document).off('ridChange', jsxc.xmpp.onRidChange);
|
||||
$(document).off('connfail.jsxc', jsxc.xmpp.onConnfail);
|
||||
$(document).off('authfail.jsxc', jsxc.xmpp.onAuthFail);
|
||||
|
||||
jsxc.xmpp.conn = null;
|
||||
|
||||
$('#jsxc_windowList').remove();
|
||||
@@ -3473,14 +3697,32 @@ var jsxc;
|
||||
* @param {String} condition information why we lost the connection
|
||||
* @private
|
||||
*/
|
||||
onConnfail: function(condition) {
|
||||
onConnfail: function(ev, condition) {
|
||||
jsxc.debug('XMPP connection failed: ' + condition);
|
||||
|
||||
if (jsxc.triggeredFromForm) {
|
||||
if (jsxc.options.loginForm.triggered) {
|
||||
jsxc.submitLoginForm();
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Triggered on auth fail.
|
||||
*
|
||||
* @private
|
||||
*/
|
||||
onAuthFail: function() {
|
||||
if (jsxc.options.loginForm.triggered) {
|
||||
switch (jsxc.options.loginForm.onAuthFail || 'ask') {
|
||||
case 'ask':
|
||||
jsxc.gui.showAuthFail();
|
||||
break;
|
||||
case 'submit':
|
||||
jsxc.submitLoginForm();
|
||||
break;
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Triggered on initial roster load
|
||||
*
|
||||
@@ -3628,8 +3870,6 @@ var jsxc;
|
||||
var ptype = $(presence).attr('type');
|
||||
var from = $(presence).attr('from');
|
||||
var jid = Strophe.getBareJidFromJid(from).toLowerCase();
|
||||
var to = $(presence).attr('to');
|
||||
to = (to) ? Strophe.getBareJidFromJid(to).toLowerCase() : jid;
|
||||
var r = Strophe.getResourceFromJid(from);
|
||||
var bid = jsxc.jidToBid(jid);
|
||||
var data = jsxc.storage.getUserItem('buddy', bid);
|
||||
@@ -3637,7 +3877,7 @@ var jsxc;
|
||||
var status = null;
|
||||
var xVCard = $(presence).find('x[xmlns="vcard-temp:x:update"]');
|
||||
|
||||
if (jid === to) {
|
||||
if (jid === Strophe.getBareJidFromJid(jsxc.storage.getItem("jid"))) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -3731,28 +3971,66 @@ var jsxc;
|
||||
* @returns {Boolean}
|
||||
* @private
|
||||
*/
|
||||
onMessage: function(message) {
|
||||
/*
|
||||
* <message xmlns='jabber:client' type='chat' to='' id='' from=''>
|
||||
* <body>...</body> <active
|
||||
* xmlns='http://jabber.org/protocol/chatstates'/> </message>
|
||||
*/
|
||||
onMessage: function(stanza) {
|
||||
|
||||
jsxc.debug('Incoming message', message);
|
||||
var forwarded = $(stanza).find('forwarded[xmlns="' + jsxc.CONST.NS.FORWARD + '"]');
|
||||
var message, carbon;
|
||||
|
||||
if (forwarded.length > 0) {
|
||||
message = forwarded.find('> message');
|
||||
forwarded = true;
|
||||
carbon = $(stanza).find('> [xmlns="' + jsxc.CONST.NS.CARBONS + '"]');
|
||||
|
||||
if (carbon.length === 0) {
|
||||
carbon = false;
|
||||
}
|
||||
|
||||
jsxc.debug('Incoming forwarded message', message);
|
||||
} else {
|
||||
message = stanza;
|
||||
forwarded = false;
|
||||
carbon = false;
|
||||
|
||||
jsxc.debug('Incoming message', message);
|
||||
}
|
||||
|
||||
var body = $(message).find('body:first').text();
|
||||
|
||||
if (!body || (body.match(/\?OTR/i) && forwarded)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
var type = $(message).attr('type');
|
||||
var from = $(message).attr('from');
|
||||
var mid = $(message).attr('id');
|
||||
var jid = Strophe.getBareJidFromJid(from);
|
||||
var bid = jsxc.jidToBid(jid);
|
||||
var data = jsxc.storage.getUserItem('buddy', bid);
|
||||
var body = $(message).find('body:first').text();
|
||||
var request = $(message).find("request[xmlns='urn:xmpp:receipts']");
|
||||
var bid;
|
||||
|
||||
var delay = $(message).find('delay[xmlns="urn:xmpp:delay"]');
|
||||
|
||||
var stamp = (delay.length > 0) ? new Date(delay.attr('stamp')) : new Date();
|
||||
stamp = stamp.getTime();
|
||||
|
||||
if (carbon) {
|
||||
var direction = (carbon.prop("tagName") === 'sent') ? 'out' : 'in';
|
||||
bid = jsxc.jidToBid((direction === 'out') ? $(message).attr('to') : from);
|
||||
|
||||
jsxc.gui.window.postMessage(bid, direction, body, false, forwarded, stamp);
|
||||
|
||||
if (!body) {
|
||||
return true;
|
||||
|
||||
} else if (forwarded) {
|
||||
// Someone forwarded a message to us
|
||||
|
||||
body = from + jsxc.translate(' %%to%% ') + $(stanza).attr('to') + '"' + body + '"';
|
||||
|
||||
from = $(stanza).attr('from');
|
||||
}
|
||||
|
||||
var jid = Strophe.getBareJidFromJid(from);
|
||||
bid = jsxc.jidToBid(jid);
|
||||
var data = jsxc.storage.getUserItem('buddy', bid);
|
||||
var request = $(message).find("request[xmlns='urn:xmpp:receipts']");
|
||||
|
||||
if (data === null) {
|
||||
// jid not in roster
|
||||
|
||||
@@ -3765,7 +4043,7 @@ var jsxc;
|
||||
var msg = jsxc.removeHTML(body);
|
||||
msg = jsxc.escapeHTML(msg);
|
||||
|
||||
jsxc.storage.saveMessage(bid, 'in', msg);
|
||||
jsxc.storage.saveMessage(bid, 'in', msg, false, forwarded, stamp);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -3787,7 +4065,7 @@ var jsxc;
|
||||
jsxc.otr.create(bid);
|
||||
}
|
||||
|
||||
if (mid !== null && request.length && data !== null && (data.sub === 'both' || data.sub === 'from') && type === 'chat') {
|
||||
if (!forwarded && mid !== null && request.length && data !== null && (data.sub === 'both' || data.sub === 'from') && type === 'chat') {
|
||||
// Send received according to XEP-0184
|
||||
jsxc.xmpp.conn.send($msg({
|
||||
to: from
|
||||
@@ -3798,9 +4076,12 @@ var jsxc;
|
||||
}
|
||||
|
||||
if (jsxc.otr.objects.hasOwnProperty(bid)) {
|
||||
jsxc.otr.objects[bid].receiveMsg(body);
|
||||
jsxc.otr.objects[bid].receiveMsg(body, {
|
||||
stamp: stamp,
|
||||
forwarded: forwarded
|
||||
});
|
||||
} else {
|
||||
jsxc.gui.window.postMessage(bid, 'in', body);
|
||||
jsxc.gui.window.postMessage(bid, 'in', body, false, forwarded, stamp);
|
||||
}
|
||||
|
||||
// preserve handler
|
||||
@@ -3959,6 +4240,12 @@ var jsxc;
|
||||
id: uid
|
||||
}).c('body').t(msg);
|
||||
|
||||
if (jsxc.xmpp.carbons.enabled && msg.match(/^\?OTR/)) {
|
||||
xmlMsg.up().c("private", {
|
||||
xmlns: jsxc.CONST.NS.CARBONS
|
||||
});
|
||||
}
|
||||
|
||||
if (type === 'chat' && (isBar || jsxc.xmpp.conn.caps.hasFeatureByJid(jid, Strophe.NS.RECEIPTS))) {
|
||||
// Add request according to XEP-0184
|
||||
xmlMsg.up().c('request', {
|
||||
@@ -4016,6 +4303,85 @@ var jsxc;
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Handle carbons (XEP-0280);
|
||||
*
|
||||
* @namespace jsxc.xmpp.carbons
|
||||
*/
|
||||
jsxc.xmpp.carbons = {
|
||||
enabled: false,
|
||||
|
||||
/**
|
||||
* Enable carbons.
|
||||
*
|
||||
* @memberOf jsxc.xmpp.carbons
|
||||
* @param cb callback
|
||||
*/
|
||||
enable: function(cb) {
|
||||
var iq = $iq({
|
||||
type: 'set'
|
||||
}).c('enable', {
|
||||
xmlns: jsxc.CONST.NS.CARBONS
|
||||
});
|
||||
|
||||
jsxc.xmpp.conn.sendIQ(iq, function() {
|
||||
jsxc.xmpp.carbons.enabled = true;
|
||||
|
||||
jsxc.debug('Carbons enabled');
|
||||
|
||||
if (cb) {
|
||||
cb.call(this);
|
||||
}
|
||||
}, function(stanza) {
|
||||
jsxc.warn('Could not enable carbons', stanza);
|
||||
});
|
||||
},
|
||||
|
||||
/**
|
||||
* Disable carbons.
|
||||
*
|
||||
* @memberOf jsxc.xmpp.carbons
|
||||
* @param cb callback
|
||||
*/
|
||||
disable: function(cb) {
|
||||
var iq = $iq({
|
||||
type: 'set'
|
||||
}).c('disable', {
|
||||
xmlns: jsxc.CONST.NS.CARBONS
|
||||
});
|
||||
|
||||
jsxc.xmpp.conn.sendIQ(iq, function() {
|
||||
jsxc.xmpp.carbons.enabled = false;
|
||||
|
||||
jsxc.debug('Carbons disabled');
|
||||
|
||||
if (cb) {
|
||||
cb.call(this);
|
||||
}
|
||||
}, function(stanza) {
|
||||
jsxc.warn('Could not disable carbons', stanza);
|
||||
});
|
||||
},
|
||||
|
||||
/**
|
||||
* Enable/Disable carbons depending on options key.
|
||||
*
|
||||
* @memberOf jsxc.xmpp.carbons
|
||||
* @param err error message
|
||||
*/
|
||||
refresh: function(err) {
|
||||
if (err === false) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (jsxc.options.get('carbons').enable) {
|
||||
return jsxc.xmpp.carbons.enable();
|
||||
}
|
||||
|
||||
return jsxc.xmpp.carbons.disable();
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Handle long-live data
|
||||
*
|
||||
@@ -4555,9 +4921,11 @@ var jsxc;
|
||||
* @param bid
|
||||
* @param direction
|
||||
* @param msg
|
||||
* @param encrypted
|
||||
* @param forwarded
|
||||
* @return post
|
||||
*/
|
||||
saveMessage: function(bid, direction, msg) {
|
||||
saveMessage: function(bid, direction, msg, encrypted, forwarded, stamp) {
|
||||
var chat = jsxc.storage.getUserItem('chat', bid) || [];
|
||||
|
||||
var uid = new Date().getTime() + ':msg';
|
||||
@@ -4570,7 +4938,10 @@ var jsxc;
|
||||
direction: direction,
|
||||
msg: msg,
|
||||
uid: uid.replace(/:/, '-'),
|
||||
received: false
|
||||
received: false,
|
||||
encrypted: encrypted || false,
|
||||
forwarded: forwarded || false,
|
||||
stamp: stamp || new Date().getTime()
|
||||
};
|
||||
|
||||
chat.unshift(post);
|
||||
@@ -4624,20 +4995,24 @@ var jsxc;
|
||||
* Handler for otr receive event
|
||||
*
|
||||
* @memberOf jsxc.otr
|
||||
* @param {string} bid
|
||||
* @param {string} msg received message
|
||||
* @param {string} encrypted True, if msg was encrypted.
|
||||
* @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(bid, msg, encrypted) {
|
||||
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 && !encrypted) {
|
||||
jsxc.gui.window.postMessage(bid, 'sys', jsxc.translate('%%Received an unencrypted message.%% [') + msg + ']');
|
||||
if (jsxc.otr.objects[bid].msgstate !== OTR.CONST.MSGSTATE_PLAINTEXT && !d.encrypted) {
|
||||
jsxc.gui.window.postMessage(bid, 'sys', jsxc.translate('%%Received an unencrypted message.%% [') + d.msg + ']', d.encrypted, d.forwarded, d.stamp);
|
||||
} else {
|
||||
jsxc.gui.window.postMessage(bid, 'in', msg);
|
||||
jsxc.gui.window.postMessage(bid, 'in', d.msg, d.encrypted, d.forwarded, d.stamp);
|
||||
}
|
||||
},
|
||||
|
||||
@@ -4772,8 +5147,14 @@ var jsxc;
|
||||
});
|
||||
|
||||
// Receive message
|
||||
jsxc.otr.objects[bid].on('ui', function(msg, encrypted) {
|
||||
jsxc.otr.receiveMessage(bid, msg, encrypted === true);
|
||||
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
|
||||
@@ -5364,16 +5745,7 @@ var jsxc;
|
||||
notice.click(function() {
|
||||
jsxc.notice.remove(nid);
|
||||
|
||||
var fnList = fnName.split('.');
|
||||
var fn = jsxc[fnList[0]];
|
||||
var i;
|
||||
for (i = 1; i < fnList.length; i++) {
|
||||
fn = fn[fnList[i]];
|
||||
}
|
||||
|
||||
if (typeof fn === 'function') {
|
||||
fn.apply(null, fnParams);
|
||||
}
|
||||
jsxc.exec(fnName, fnParams);
|
||||
|
||||
return false;
|
||||
});
|
||||
@@ -5873,15 +6245,15 @@ var jsxc;
|
||||
}(jQuery));
|
||||
|
||||
/*!
|
||||
* jsxc v1.0.0 - 2014-11-06
|
||||
* jsxc v1.1.0a - 2015-02-25
|
||||
*
|
||||
* Copyright (c) 2014 Klaus Herberth <klaus@jsxc.org> <br>
|
||||
* Copyright (c) 2015 Klaus Herberth <klaus@jsxc.org> <br>
|
||||
* Released under the MIT license
|
||||
*
|
||||
* Please see http://www.jsxc.org/
|
||||
*
|
||||
* @author Klaus Herberth <klaus@jsxc.org>
|
||||
* @version 1.0.0
|
||||
* @version 1.1.0a
|
||||
* @license MIT
|
||||
*/
|
||||
|
||||
@@ -6162,6 +6534,11 @@ jsxc.gui.template.videoWindow = '<div class="jsxc_webrtc">\
|
||||
jsxc.debug('Update icon', bid);
|
||||
|
||||
var self = jsxc.webrtc;
|
||||
|
||||
if (bid === jsxc.jidToBid(self.conn.jid)) {
|
||||
return;
|
||||
}
|
||||
|
||||
var win = jsxc.gui.window.get(bid);
|
||||
var jid = win.data('jid') || jsxc.storage.getUserItem('buddy', bid).jid;
|
||||
|
||||
|
||||
+469
-97
@@ -1,13 +1,13 @@
|
||||
/*!
|
||||
* jsxc v1.0.0 - 2014-11-06
|
||||
* jsxc v1.1.0a - 2015-02-25
|
||||
*
|
||||
* Copyright (c) 2014 Klaus Herberth <klaus@jsxc.org> <br>
|
||||
* Copyright (c) 2015 Klaus Herberth <klaus@jsxc.org> <br>
|
||||
* Released under the MIT license
|
||||
*
|
||||
* Please see http://www.jsxc.org/
|
||||
*
|
||||
* @author Klaus Herberth <klaus@jsxc.org>
|
||||
* @version 1.0.0
|
||||
* @version 1.1.0a
|
||||
* @license MIT
|
||||
*/
|
||||
|
||||
@@ -23,7 +23,7 @@ var jsxc;
|
||||
*/
|
||||
jsxc = {
|
||||
/** Version of jsxc */
|
||||
version: '1.0.0',
|
||||
version: '1.1.0a',
|
||||
|
||||
/** True if i'm the master */
|
||||
master: false,
|
||||
@@ -52,9 +52,6 @@ var jsxc;
|
||||
/** True if restore is complete */
|
||||
restoreCompleted: false,
|
||||
|
||||
/** True if login through form */
|
||||
triggeredFromForm: false,
|
||||
|
||||
/** True if login through box */
|
||||
triggeredFromBox: false,
|
||||
|
||||
@@ -93,9 +90,39 @@ var jsxc;
|
||||
REGEX: {
|
||||
JID: new RegExp('\\b[^"&\'\\/:<>@\\s]+@[\\w-_.]+\\b', 'ig'),
|
||||
URL: new RegExp(/((?:https?:\/\/|www\.|([\w\-]+\.[a-zA-Z]{2,3})(?=\b))(?:(?:[\-A-Za-z0-9+&@#\/%?=~_|!:,.;]*\([\-A-Za-z0-9+&@#\/%?=~_|!:,.;]*\)([\-A-Za-z0-9+&@#\/%?=~_|!:,.;]*[\-A-Za-z0-9+&@#\/%=~_|])?)|(?:[\-A-Za-z0-9+&@#\/%?=~_|!:,.;]*[\-A-Za-z0-9+&@#\/%=~_|]))?)/gi)
|
||||
},
|
||||
NS: {
|
||||
CARBONS: 'urn:xmpp:carbons:2',
|
||||
FORWARD: 'urn:xmpp:forward:0'
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Parse a unix timestamp and return a formatted time string
|
||||
*
|
||||
* @memberOf jsxc
|
||||
* @param {Object} unixtime
|
||||
* @returns time of day and/or date
|
||||
*/
|
||||
getFormattedTime: function(unixtime) {
|
||||
var msgDate = new Date(parseInt(unixtime));
|
||||
var date = ('0' + msgDate.getDate()).slice(-2);
|
||||
var month = ('0' + (msgDate.getMonth() + 1)).slice(-2);
|
||||
var year = msgDate.getFullYear();
|
||||
var hours = ('0' + msgDate.getHours()).slice(-2);
|
||||
var minutes = ('0' + msgDate.getMinutes()).slice(-2);
|
||||
var dateNow = new Date(), time = hours + ':' + minutes;
|
||||
|
||||
// compare dates only
|
||||
dateNow.setHours(0, 0, 0, 0);
|
||||
msgDate.setHours(0, 0, 0, 0);
|
||||
|
||||
if (dateNow.getTime() !== msgDate.getTime()) {
|
||||
return date + '.' + month + '.' + year + ' ' + time;
|
||||
}
|
||||
return time;
|
||||
},
|
||||
|
||||
/**
|
||||
* Write debug message to console and to log.
|
||||
*
|
||||
@@ -169,7 +196,7 @@ var jsxc;
|
||||
|
||||
if (options) {
|
||||
// override default options
|
||||
$.extend(jsxc.options, options);
|
||||
$.extend(true, jsxc.options, options);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -219,6 +246,10 @@ var jsxc;
|
||||
return;
|
||||
}
|
||||
|
||||
if (jsxc.storage.getItem('debug') === true) {
|
||||
jsxc.options.otr.debug = true;
|
||||
}
|
||||
|
||||
// Register event listener for the storage event
|
||||
window.addEventListener('storage', jsxc.storage.onStorage, false);
|
||||
|
||||
@@ -270,7 +301,7 @@ var jsxc;
|
||||
var settings = jsxc.prepareLogin();
|
||||
|
||||
if (settings !== false && (settings.xmpp.onlogin === "true" || settings.xmpp.onlogin === true)) {
|
||||
jsxc.triggeredFromForm = true;
|
||||
jsxc.options.loginForm.triggered = true;
|
||||
|
||||
jsxc.xmpp.login();
|
||||
|
||||
@@ -398,8 +429,12 @@ var jsxc;
|
||||
// Sending keepalive signal
|
||||
jsxc.startKeepAlive();
|
||||
|
||||
// create or load DSA key and call _onMaster
|
||||
jsxc.otr.createDSA();
|
||||
if (jsxc.options.get('otr').enable) {
|
||||
// create or load DSA key and call _onMaster
|
||||
jsxc.otr.createDSA();
|
||||
} else {
|
||||
jsxc._onMaster();
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
@@ -439,6 +474,10 @@ var jsxc;
|
||||
}
|
||||
}
|
||||
|
||||
$(document).on('connectionReady.jsxc', function() {
|
||||
jsxc.gui.updateAvatar($('#jsxc_avatar'), jsxc.storage.getItem('jid'), 'own');
|
||||
});
|
||||
|
||||
jsxc.xmpp.login();
|
||||
},
|
||||
|
||||
@@ -688,6 +727,27 @@ var jsxc;
|
||||
return jsxc.l[k] || key.replace(/_/g, ' ');
|
||||
});
|
||||
},
|
||||
|
||||
/**
|
||||
* Executes the given function in jsxc namespace.
|
||||
*
|
||||
* @memberOf jsxc
|
||||
* @param {string} fnName Function name
|
||||
* @param {array} fnParams Function parameters
|
||||
* @returns Function return value
|
||||
*/
|
||||
exec: function(fnName, fnParams) {
|
||||
var fnList = fnName.split('.');
|
||||
var fn = jsxc[fnList[0]];
|
||||
var i;
|
||||
for (i = 1; i < fnList.length; i++) {
|
||||
fn = fn[fnList[i]];
|
||||
}
|
||||
|
||||
if (typeof fn === 'function') {
|
||||
return fn.apply(null, fnParams);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -708,7 +768,11 @@ var jsxc;
|
||||
|
||||
/** OTR options */
|
||||
otr: {
|
||||
ERROR_START_AKE: true
|
||||
enable: true,
|
||||
ERROR_START_AKE: false,
|
||||
debug: false,
|
||||
SEND_WHITESPACE_TAG: true,
|
||||
WHITESPACE_START_AKE: true
|
||||
},
|
||||
|
||||
/** xmpp options */
|
||||
@@ -744,7 +808,19 @@ var jsxc;
|
||||
/** manipulate JID from input element */
|
||||
preJid: function(jid) {
|
||||
return jid;
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* 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]
|
||||
* Do nothing, ask [String] Show auth fail dialog
|
||||
*/
|
||||
onAuthFail: 'submit'
|
||||
},
|
||||
|
||||
/** jquery object from logout element */
|
||||
@@ -815,9 +891,15 @@ var jsxc;
|
||||
*
|
||||
* @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
|
||||
}
|
||||
};
|
||||
|
||||
@@ -871,6 +953,11 @@ var jsxc;
|
||||
* @memberOf jsxc.gui
|
||||
*/
|
||||
init: function() {
|
||||
//Prevent duplicate windowList
|
||||
if ($('#jsxc_windowList').length > 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
$('body').append($(jsxc.gui.template.get('windowList')));
|
||||
|
||||
$(window).resize(jsxc.gui.updateWindowListSB);
|
||||
@@ -890,7 +977,9 @@ var jsxc;
|
||||
|
||||
jsxc.gui.tooltip('#jsxc_windowList');
|
||||
|
||||
jsxc.gui.roster.init();
|
||||
if (!jsxc.el_exists('#jsxc_roster')) {
|
||||
jsxc.gui.roster.init();
|
||||
}
|
||||
|
||||
// prepare regexp for emotions
|
||||
$.each(jsxc.gui.emotions, function(i, val) {
|
||||
@@ -1015,7 +1104,7 @@ var jsxc;
|
||||
var avatarSrc = jsxc.storage.getUserItem('avatar', aid);
|
||||
|
||||
var setAvatar = function(src) {
|
||||
if (src === 0) {
|
||||
if (src === 0 || src === '0') {
|
||||
jsxc.options.defaultAvatar.call(el, jid);
|
||||
return;
|
||||
}
|
||||
@@ -1039,13 +1128,18 @@ var jsxc;
|
||||
|
||||
if (vCard.length === 0) {
|
||||
jsxc.debug('No photo provided');
|
||||
src = 0;
|
||||
src = '0';
|
||||
} else if (vCard.find('EXTVAL').length > 0) {
|
||||
src = vCard.find('EXTVAL').text();
|
||||
} else {
|
||||
var img = vCard.find('BINVAL').text();
|
||||
var type = vCard.find('TYPE').text();
|
||||
src = 'data:' + type + ';base64,' + img;
|
||||
}
|
||||
|
||||
// concat chunks
|
||||
src = src.replace(/[\t\r\n\f]/gi, '');
|
||||
|
||||
jsxc.storage.setUserItem('avatar', aid, src);
|
||||
setAvatar(src);
|
||||
}, Strophe.getBareJidFromJid(jid), function(msg) {
|
||||
@@ -1182,7 +1276,7 @@ var jsxc;
|
||||
var settings = jsxc.prepareLogin();
|
||||
|
||||
jsxc.triggeredFromBox = true;
|
||||
jsxc.triggeredFromForm = false;
|
||||
jsxc.options.loginForm.triggered = false;
|
||||
|
||||
if (settings === false) {
|
||||
jsxc.gui.showAuthFail();
|
||||
@@ -1449,7 +1543,7 @@ var jsxc;
|
||||
showAuthFail: function() {
|
||||
jsxc.gui.dialog.open(jsxc.gui.template.get('authFailDialog'));
|
||||
|
||||
if (jsxc.triggeredFromBox) {
|
||||
if (jsxc.options.loginForm.triggered !== false) {
|
||||
$('#jsxc_dialog .jsxc_cancel').hide();
|
||||
}
|
||||
|
||||
@@ -1640,7 +1734,17 @@ var jsxc;
|
||||
var type = photo.find('TYPE').text();
|
||||
var src = 'data:' + type + ';base64,' + img;
|
||||
|
||||
$('#jsxc_dialog h3').before('<img class="jsxc_vCard" src="' + src + '" alt="avatar" />');
|
||||
if (photo.find('EXTVAL').length > 0) {
|
||||
src = photo.find('EXTVAL').text();
|
||||
}
|
||||
|
||||
// concat chunks
|
||||
src = src.replace(/[\t\r\n\f]/gi, '');
|
||||
|
||||
var img_el = $('<img class="jsxc_vCard" alt="avatar" />');
|
||||
img_el.attr('src', src);
|
||||
|
||||
$('#jsxc_dialog h3').before(img_el);
|
||||
}
|
||||
|
||||
if ($(stanza).find('vCard').length === 0 || ($(stanza).find('vcard > *').length === 1 && photo.length === 1)) {
|
||||
@@ -1714,6 +1818,10 @@ var jsxc;
|
||||
|
||||
var err = jsxc.options.saveSettinsPermanent.call(this, data);
|
||||
|
||||
if (typeof self.attr('data-onsubmit') === 'string') {
|
||||
jsxc.exec(self.attr('data-onsubmit'), [ err ]);
|
||||
}
|
||||
|
||||
setTimeout(function() {
|
||||
self.find('input[type="submit"]').effect('highlight', {
|
||||
color: (err) ? 'green' : 'red'
|
||||
@@ -2023,10 +2131,6 @@ var jsxc;
|
||||
$('#jsxc_presence > span').text($('#jsxc_presence > ul .jsxc_' + pres).text());
|
||||
jsxc.gui.updatePresence('own', pres);
|
||||
|
||||
$(document).on('cloaded.roster.jsxc', function() {
|
||||
jsxc.gui.updateAvatar($('#jsxc_avatar'), jsxc.storage.getItem('jid'), 'own');
|
||||
});
|
||||
|
||||
jsxc.gui.tooltip('#jsxc_roster');
|
||||
|
||||
jsxc.notice.load();
|
||||
@@ -2264,8 +2368,7 @@ var jsxc;
|
||||
* Shows a text with link to a login box that no connection exists.
|
||||
*/
|
||||
noConnection: function() {
|
||||
$('#jsxc_roster .slimScrollDiv').remove();
|
||||
$('#jsxc_roster > .jsxc_bottom').remove();
|
||||
$('#jsxc_roster').addClass('jsxc_noConnection');
|
||||
|
||||
$('#jsxc_roster').append($('<p>' + jsxc.l.no_connection + '</p>').append(' <a>' + jsxc.l.relogin + '</a>').click(function() {
|
||||
jsxc.gui.showLoginBox();
|
||||
@@ -2734,8 +2837,11 @@ var jsxc;
|
||||
* @param {String} direction 'in' message is received or 'out' message is
|
||||
* send
|
||||
* @param {String} msg Message to display
|
||||
* @param {boolean} encrypted Was this message encrypted? Default: false
|
||||
* @param {boolean} forwarded Was this message forwarded? Default: false
|
||||
* @param {integer} stamp Timestamp
|
||||
*/
|
||||
postMessage: function(bid, direction, msg) {
|
||||
postMessage: function(bid, direction, msg, encrypted, forwarded, stamp) {
|
||||
var data = jsxc.storage.getUserItem('buddy', bid);
|
||||
var html_msg = msg;
|
||||
|
||||
@@ -2745,12 +2851,12 @@ var jsxc;
|
||||
|
||||
// exceptions:
|
||||
|
||||
if (direction === 'out' && data.msgstate === 2) {
|
||||
if (direction === 'out' && data.msgstate === OTR.CONST.MSGSTATE_FINISHED && forwarded !== true) {
|
||||
direction = 'sys';
|
||||
msg = jsxc.l.your_message_wasnt_send_please_end_your_private_conversation;
|
||||
}
|
||||
|
||||
if (direction === 'in' && data.msgstate === 2) {
|
||||
if (direction === 'in' && data.msgstate === OTR.CONST.MSGSTATE_FINISHED) {
|
||||
direction = 'sys';
|
||||
msg = jsxc.l.unencrypted_message_received + ' ' + msg;
|
||||
}
|
||||
@@ -2760,13 +2866,14 @@ var jsxc;
|
||||
msg = jsxc.l.your_message_wasnt_send_because_you_have_no_valid_subscription;
|
||||
}
|
||||
|
||||
var post = jsxc.storage.saveMessage(bid, direction, msg);
|
||||
encrypted = encrypted || data.msgstate === OTR.CONST.MSGSTATE_ENCRYPTED;
|
||||
var post = jsxc.storage.saveMessage(bid, direction, msg, encrypted, forwarded, stamp);
|
||||
|
||||
if (direction === 'in') {
|
||||
$(document).trigger('postmessagein.jsxc', [ bid, html_msg ]);
|
||||
}
|
||||
|
||||
if (direction === 'out' && jsxc.master) {
|
||||
if (direction === 'out' && jsxc.master && forwarded !== true) {
|
||||
jsxc.xmpp.sendMessage(bid, html_msg, post.uid);
|
||||
}
|
||||
|
||||
@@ -2790,7 +2897,6 @@ var jsxc;
|
||||
var msg = post.msg;
|
||||
var direction = post.direction;
|
||||
var uid = post.uid;
|
||||
var received = post.received || false;
|
||||
|
||||
if (win.find('.jsxc_textinput').is(':not(:focus)') && jsxc.restoreCompleted && direction === 'in' && !restore) {
|
||||
jsxc.gui.window.highlight(bid);
|
||||
@@ -2829,17 +2935,29 @@ var jsxc;
|
||||
});
|
||||
});
|
||||
|
||||
var msgDiv = $("<div>");
|
||||
var msgDiv = $("<div>"), msgTsDiv = $("<div>");
|
||||
msgDiv.addClass('jsxc_chatmessage jsxc_' + direction);
|
||||
msgDiv.attr('id', uid);
|
||||
msgDiv.html(msg);
|
||||
msgDiv.html('<div>' + msg + '</div>');
|
||||
msgTsDiv.addClass('jsxc_timestamp');
|
||||
msgTsDiv.html(jsxc.getFormattedTime(post.stamp));
|
||||
|
||||
if (received) {
|
||||
if (post.received || false) {
|
||||
msgDiv.addClass('jsxc_received');
|
||||
}
|
||||
|
||||
if (post.forwarded) {
|
||||
msgDiv.addClass('jsxc_forwarded');
|
||||
}
|
||||
|
||||
if (post.encrypted) {
|
||||
msgDiv.addClass('jsxc_encrypted');
|
||||
}
|
||||
|
||||
if (direction === 'sys') {
|
||||
jsxc.gui.window.get(bid).find('.jsxc_textarea').append('<div style="clear:both"/>');
|
||||
} else if (typeof post.stamp !== 'undefined') {
|
||||
msgDiv.append(msgTsDiv);
|
||||
}
|
||||
|
||||
win.find('.jsxc_textarea').append(msgDiv);
|
||||
@@ -3157,6 +3275,14 @@ var jsxc;
|
||||
<label for="priority-dnd">%%dnd%%</label><input type="number" value="0" id="priority-dnd" min="-128" max="127" step="1" required="required"/><br />\
|
||||
<input type="submit" value="%%Save%%"/>\
|
||||
</fieldset>\
|
||||
</form>\
|
||||
<p></p>\
|
||||
<form data-onsubmit="xmpp.carbons.refresh">\
|
||||
<fieldset class="jsxc_fieldsetCarbons jsxc_fieldset">\
|
||||
<legend>%%Carbon copy%%</legend>\
|
||||
<label for="carbons-enable">%%Enable%%</label><input type="checkbox" id="carbons-enable" /><br />\
|
||||
<input type="submit" value="%%Save%%"/>\
|
||||
</fieldset>\
|
||||
</form>'
|
||||
};
|
||||
|
||||
@@ -3171,13 +3297,50 @@ var jsxc;
|
||||
/**
|
||||
* Create new connection or attach to old
|
||||
*
|
||||
* @name login
|
||||
* @memberOf jsxc.xmpp
|
||||
*/
|
||||
/**
|
||||
* Create new connection with given parameters.
|
||||
*
|
||||
* @name login^2
|
||||
* @param {string} jid
|
||||
* @param {string} password
|
||||
* @memberOf jsxc.xmpp
|
||||
*/
|
||||
/**
|
||||
* Attach connection with given parameters.
|
||||
*
|
||||
* @name login^3
|
||||
* @param {string} jid
|
||||
* @param {string} sid
|
||||
* @param {string} rid
|
||||
* @memberOf jsxc.xmpp
|
||||
*/
|
||||
login: function() {
|
||||
|
||||
var sid = jsxc.storage.getItem('sid');
|
||||
var rid = jsxc.storage.getItem('rid');
|
||||
var jid = jsxc.storage.getItem('jid');
|
||||
if (jsxc.xmpp.conn && jsxc.xmpp.conn.connected) {
|
||||
return;
|
||||
}
|
||||
|
||||
var jid = null, password = null, sid = null, rid = null;
|
||||
|
||||
switch (arguments.length) {
|
||||
case 2:
|
||||
jid = arguments[0];
|
||||
password = arguments[1];
|
||||
break;
|
||||
case 3:
|
||||
jid = arguments[0];
|
||||
sid = arguments[1];
|
||||
rid = arguments[2];
|
||||
break;
|
||||
default:
|
||||
jid = jsxc.storage.getItem('jid');
|
||||
sid = jsxc.storage.getItem('sid');
|
||||
rid = jsxc.storage.getItem('rid');
|
||||
}
|
||||
|
||||
var url = jsxc.options.get('xmpp').url;
|
||||
|
||||
// Register eventlistener
|
||||
@@ -3185,6 +3348,8 @@ var jsxc;
|
||||
$(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');
|
||||
|
||||
@@ -3225,10 +3390,10 @@ var jsxc;
|
||||
$(document).trigger('disconnected.jsxc');
|
||||
break;
|
||||
case Strophe.Status.CONNFAIL:
|
||||
jsxc.xmpp.onConnfail(condition);
|
||||
$(document).trigger('connfail.jsxc');
|
||||
break;
|
||||
case Strophe.Status.AUTHFAIL:
|
||||
jsxc.gui.showAuthFail();
|
||||
$(document).trigger('authfail.jsxc');
|
||||
break;
|
||||
}
|
||||
};
|
||||
@@ -3244,7 +3409,23 @@ var jsxc;
|
||||
} else {
|
||||
jsxc.debug('New connection');
|
||||
|
||||
jsxc.xmpp.conn.connect(jsxc.options.xmpp.jid, jsxc.options.xmpp.password, callback);
|
||||
if (jsxc.xmpp.conn.caps) {
|
||||
// Add system handler, because user handler isn't called before
|
||||
// we are authenticated
|
||||
jsxc.xmpp.conn._addSysHandler(function(stanza) {
|
||||
var from = jsxc.xmpp.conn.domain, c = stanza.querySelector('c'), ver = c.getAttribute('ver'), node = c.getAttribute('node');
|
||||
|
||||
var _jidNodeIndex = JSON.parse(localStorage.getItem('strophe.caps._jidNodeIndex')) || {};
|
||||
|
||||
jsxc.xmpp.conn.caps._jidVerIndex[from] = ver;
|
||||
_jidNodeIndex[from] = node;
|
||||
|
||||
localStorage.setItem('strophe.caps._jidVerIndex', JSON.stringify(jsxc.xmpp.conn.caps._jidVerIndex));
|
||||
localStorage.setItem('strophe.caps._jidNodeIndex', JSON.stringify(_jidNodeIndex));
|
||||
}, Strophe.NS.CAPS);
|
||||
}
|
||||
|
||||
jsxc.xmpp.conn.connect(jid || jsxc.options.xmpp.jid, password || jsxc.options.xmpp.password, callback);
|
||||
}
|
||||
},
|
||||
|
||||
@@ -3279,11 +3460,11 @@ var jsxc;
|
||||
jsxc.triggeredFromElement = true;
|
||||
|
||||
// restore all otr objects
|
||||
$.each(jsxc.storage.getUserItem('otrlist'), function(i, val) {
|
||||
$.each(jsxc.storage.getUserItem('otrlist') || {}, function(i, val) {
|
||||
jsxc.otr.create(val);
|
||||
});
|
||||
|
||||
var numOtr = Object.keys(jsxc.otr.objects).length + 1;
|
||||
var numOtr = Object.keys(jsxc.otr.objects || {}).length + 1;
|
||||
var disReady = function() {
|
||||
if (--numOtr <= 0) {
|
||||
jsxc.xmpp.conn.flush();
|
||||
@@ -3295,7 +3476,7 @@ var jsxc;
|
||||
};
|
||||
|
||||
// end all private conversations
|
||||
$.each(jsxc.otr.objects, function(key, obj) {
|
||||
$.each(jsxc.otr.objects || {}, function(key, obj) {
|
||||
if (obj.msgstate === OTR.CONST.MSGSTATE_ENCRYPTED) {
|
||||
obj.endOtr.call(obj, function() {
|
||||
obj.init.call(obj);
|
||||
@@ -3339,20 +3520,25 @@ var jsxc;
|
||||
jsxc.storage.removeUserItem('avatar', 'own');
|
||||
jsxc.storage.removeUserItem('otrlist');
|
||||
|
||||
// submit login form
|
||||
if (jsxc.triggeredFromForm) {
|
||||
// Trigger normal submit
|
||||
jsxc.submitLoginForm();
|
||||
return;
|
||||
if (jsxc.options.loginForm.triggered) {
|
||||
switch (jsxc.options.loginForm.onConnected || 'submit') {
|
||||
case 'submit':
|
||||
jsxc.submitLoginForm();
|
||||
/* falls through */
|
||||
case false:
|
||||
jsxc.xmpp.connectionReady();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// reload page after login from login box
|
||||
if (jsxc.triggeredFromBox) {
|
||||
window.location.reload();
|
||||
return;
|
||||
}
|
||||
// start chat
|
||||
|
||||
jsxc.xmpp.connectionReady();
|
||||
jsxc.gui.init();
|
||||
$('#jsxc_roster').removeClass('jsxc_noConnection');
|
||||
jsxc.onMaster();
|
||||
jsxc.xmpp.conn.resume();
|
||||
jsxc.gui.dialog.close();
|
||||
$(document).trigger('attached.jsxc');
|
||||
},
|
||||
|
||||
/**
|
||||
@@ -3367,6 +3553,37 @@ var jsxc;
|
||||
jsxc.xmpp.conn.addHandler(jsxc.xmpp.onReceived, null, 'message');
|
||||
jsxc.xmpp.conn.addHandler(jsxc.xmpp.onPresence, null, 'presence');
|
||||
|
||||
var caps = jsxc.xmpp.conn.caps;
|
||||
var domain = jsxc.xmpp.conn.domain;
|
||||
|
||||
if (caps && jsxc.options.get('carbons').enable) {
|
||||
var conditionalEnable = function() {
|
||||
if (jsxc.xmpp.conn.caps.hasFeatureByJid(domain, jsxc.CONST.NS.CARBONS)) {
|
||||
jsxc.xmpp.carbons.enable();
|
||||
}
|
||||
};
|
||||
|
||||
if (typeof caps._knownCapabilities[caps._jidVerIndex[domain]] === 'undefined') {
|
||||
var _jidNodeIndex = JSON.parse(localStorage.getItem('strophe.caps._jidNodeIndex')) || {};
|
||||
|
||||
$(document).on('caps.strophe', function onCaps(ev, from) {
|
||||
|
||||
if (from !== domain) {
|
||||
return;
|
||||
}
|
||||
|
||||
conditionalEnable();
|
||||
|
||||
$(document).off('caps.strophe', onCaps);
|
||||
});
|
||||
|
||||
caps._requestCapabilities(jsxc.xmpp.conn.domain, _jidNodeIndex[domain], caps._jidVerIndex[domain]);
|
||||
} else {
|
||||
// We know server caps
|
||||
conditionalEnable();
|
||||
}
|
||||
}
|
||||
|
||||
// Only load roaster if necessary
|
||||
if (!jsxc.restore || !jsxc.storage.getUserItem('buddylist')) {
|
||||
// in order to not overide existing presence information, we send
|
||||
@@ -3448,6 +3665,13 @@ var jsxc;
|
||||
jsxc.storage.removeUserItem('avatar', 'own');
|
||||
jsxc.storage.removeUserItem('otrlist');
|
||||
|
||||
$(document).off('connected.jsxc', jsxc.xmpp.connected);
|
||||
$(document).off('attached.jsxc', jsxc.xmpp.attached);
|
||||
$(document).off('disconnected.jsxc', jsxc.xmpp.disconnected);
|
||||
$(document).off('ridChange', jsxc.xmpp.onRidChange);
|
||||
$(document).off('connfail.jsxc', jsxc.xmpp.onConnfail);
|
||||
$(document).off('authfail.jsxc', jsxc.xmpp.onAuthFail);
|
||||
|
||||
jsxc.xmpp.conn = null;
|
||||
|
||||
$('#jsxc_windowList').remove();
|
||||
@@ -3471,14 +3695,32 @@ var jsxc;
|
||||
* @param {String} condition information why we lost the connection
|
||||
* @private
|
||||
*/
|
||||
onConnfail: function(condition) {
|
||||
onConnfail: function(ev, condition) {
|
||||
jsxc.debug('XMPP connection failed: ' + condition);
|
||||
|
||||
if (jsxc.triggeredFromForm) {
|
||||
if (jsxc.options.loginForm.triggered) {
|
||||
jsxc.submitLoginForm();
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Triggered on auth fail.
|
||||
*
|
||||
* @private
|
||||
*/
|
||||
onAuthFail: function() {
|
||||
if (jsxc.options.loginForm.triggered) {
|
||||
switch (jsxc.options.loginForm.onAuthFail || 'ask') {
|
||||
case 'ask':
|
||||
jsxc.gui.showAuthFail();
|
||||
break;
|
||||
case 'submit':
|
||||
jsxc.submitLoginForm();
|
||||
break;
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Triggered on initial roster load
|
||||
*
|
||||
@@ -3626,8 +3868,6 @@ var jsxc;
|
||||
var ptype = $(presence).attr('type');
|
||||
var from = $(presence).attr('from');
|
||||
var jid = Strophe.getBareJidFromJid(from).toLowerCase();
|
||||
var to = $(presence).attr('to');
|
||||
to = (to) ? Strophe.getBareJidFromJid(to).toLowerCase() : jid;
|
||||
var r = Strophe.getResourceFromJid(from);
|
||||
var bid = jsxc.jidToBid(jid);
|
||||
var data = jsxc.storage.getUserItem('buddy', bid);
|
||||
@@ -3635,7 +3875,7 @@ var jsxc;
|
||||
var status = null;
|
||||
var xVCard = $(presence).find('x[xmlns="vcard-temp:x:update"]');
|
||||
|
||||
if (jid === to) {
|
||||
if (jid === Strophe.getBareJidFromJid(jsxc.storage.getItem("jid"))) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -3729,28 +3969,66 @@ var jsxc;
|
||||
* @returns {Boolean}
|
||||
* @private
|
||||
*/
|
||||
onMessage: function(message) {
|
||||
/*
|
||||
* <message xmlns='jabber:client' type='chat' to='' id='' from=''>
|
||||
* <body>...</body> <active
|
||||
* xmlns='http://jabber.org/protocol/chatstates'/> </message>
|
||||
*/
|
||||
onMessage: function(stanza) {
|
||||
|
||||
jsxc.debug('Incoming message', message);
|
||||
var forwarded = $(stanza).find('forwarded[xmlns="' + jsxc.CONST.NS.FORWARD + '"]');
|
||||
var message, carbon;
|
||||
|
||||
if (forwarded.length > 0) {
|
||||
message = forwarded.find('> message');
|
||||
forwarded = true;
|
||||
carbon = $(stanza).find('> [xmlns="' + jsxc.CONST.NS.CARBONS + '"]');
|
||||
|
||||
if (carbon.length === 0) {
|
||||
carbon = false;
|
||||
}
|
||||
|
||||
jsxc.debug('Incoming forwarded message', message);
|
||||
} else {
|
||||
message = stanza;
|
||||
forwarded = false;
|
||||
carbon = false;
|
||||
|
||||
jsxc.debug('Incoming message', message);
|
||||
}
|
||||
|
||||
var body = $(message).find('body:first').text();
|
||||
|
||||
if (!body || (body.match(/\?OTR/i) && forwarded)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
var type = $(message).attr('type');
|
||||
var from = $(message).attr('from');
|
||||
var mid = $(message).attr('id');
|
||||
var jid = Strophe.getBareJidFromJid(from);
|
||||
var bid = jsxc.jidToBid(jid);
|
||||
var data = jsxc.storage.getUserItem('buddy', bid);
|
||||
var body = $(message).find('body:first').text();
|
||||
var request = $(message).find("request[xmlns='urn:xmpp:receipts']");
|
||||
var bid;
|
||||
|
||||
var delay = $(message).find('delay[xmlns="urn:xmpp:delay"]');
|
||||
|
||||
var stamp = (delay.length > 0) ? new Date(delay.attr('stamp')) : new Date();
|
||||
stamp = stamp.getTime();
|
||||
|
||||
if (carbon) {
|
||||
var direction = (carbon.prop("tagName") === 'sent') ? 'out' : 'in';
|
||||
bid = jsxc.jidToBid((direction === 'out') ? $(message).attr('to') : from);
|
||||
|
||||
jsxc.gui.window.postMessage(bid, direction, body, false, forwarded, stamp);
|
||||
|
||||
if (!body) {
|
||||
return true;
|
||||
|
||||
} else if (forwarded) {
|
||||
// Someone forwarded a message to us
|
||||
|
||||
body = from + jsxc.translate(' %%to%% ') + $(stanza).attr('to') + '"' + body + '"';
|
||||
|
||||
from = $(stanza).attr('from');
|
||||
}
|
||||
|
||||
var jid = Strophe.getBareJidFromJid(from);
|
||||
bid = jsxc.jidToBid(jid);
|
||||
var data = jsxc.storage.getUserItem('buddy', bid);
|
||||
var request = $(message).find("request[xmlns='urn:xmpp:receipts']");
|
||||
|
||||
if (data === null) {
|
||||
// jid not in roster
|
||||
|
||||
@@ -3763,7 +4041,7 @@ var jsxc;
|
||||
var msg = jsxc.removeHTML(body);
|
||||
msg = jsxc.escapeHTML(msg);
|
||||
|
||||
jsxc.storage.saveMessage(bid, 'in', msg);
|
||||
jsxc.storage.saveMessage(bid, 'in', msg, false, forwarded, stamp);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -3785,7 +4063,7 @@ var jsxc;
|
||||
jsxc.otr.create(bid);
|
||||
}
|
||||
|
||||
if (mid !== null && request.length && data !== null && (data.sub === 'both' || data.sub === 'from') && type === 'chat') {
|
||||
if (!forwarded && mid !== null && request.length && data !== null && (data.sub === 'both' || data.sub === 'from') && type === 'chat') {
|
||||
// Send received according to XEP-0184
|
||||
jsxc.xmpp.conn.send($msg({
|
||||
to: from
|
||||
@@ -3796,9 +4074,12 @@ var jsxc;
|
||||
}
|
||||
|
||||
if (jsxc.otr.objects.hasOwnProperty(bid)) {
|
||||
jsxc.otr.objects[bid].receiveMsg(body);
|
||||
jsxc.otr.objects[bid].receiveMsg(body, {
|
||||
stamp: stamp,
|
||||
forwarded: forwarded
|
||||
});
|
||||
} else {
|
||||
jsxc.gui.window.postMessage(bid, 'in', body);
|
||||
jsxc.gui.window.postMessage(bid, 'in', body, false, forwarded, stamp);
|
||||
}
|
||||
|
||||
// preserve handler
|
||||
@@ -3957,6 +4238,12 @@ var jsxc;
|
||||
id: uid
|
||||
}).c('body').t(msg);
|
||||
|
||||
if (jsxc.xmpp.carbons.enabled && msg.match(/^\?OTR/)) {
|
||||
xmlMsg.up().c("private", {
|
||||
xmlns: jsxc.CONST.NS.CARBONS
|
||||
});
|
||||
}
|
||||
|
||||
if (type === 'chat' && (isBar || jsxc.xmpp.conn.caps.hasFeatureByJid(jid, Strophe.NS.RECEIPTS))) {
|
||||
// Add request according to XEP-0184
|
||||
xmlMsg.up().c('request', {
|
||||
@@ -4014,6 +4301,85 @@ var jsxc;
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Handle carbons (XEP-0280);
|
||||
*
|
||||
* @namespace jsxc.xmpp.carbons
|
||||
*/
|
||||
jsxc.xmpp.carbons = {
|
||||
enabled: false,
|
||||
|
||||
/**
|
||||
* Enable carbons.
|
||||
*
|
||||
* @memberOf jsxc.xmpp.carbons
|
||||
* @param cb callback
|
||||
*/
|
||||
enable: function(cb) {
|
||||
var iq = $iq({
|
||||
type: 'set'
|
||||
}).c('enable', {
|
||||
xmlns: jsxc.CONST.NS.CARBONS
|
||||
});
|
||||
|
||||
jsxc.xmpp.conn.sendIQ(iq, function() {
|
||||
jsxc.xmpp.carbons.enabled = true;
|
||||
|
||||
jsxc.debug('Carbons enabled');
|
||||
|
||||
if (cb) {
|
||||
cb.call(this);
|
||||
}
|
||||
}, function(stanza) {
|
||||
jsxc.warn('Could not enable carbons', stanza);
|
||||
});
|
||||
},
|
||||
|
||||
/**
|
||||
* Disable carbons.
|
||||
*
|
||||
* @memberOf jsxc.xmpp.carbons
|
||||
* @param cb callback
|
||||
*/
|
||||
disable: function(cb) {
|
||||
var iq = $iq({
|
||||
type: 'set'
|
||||
}).c('disable', {
|
||||
xmlns: jsxc.CONST.NS.CARBONS
|
||||
});
|
||||
|
||||
jsxc.xmpp.conn.sendIQ(iq, function() {
|
||||
jsxc.xmpp.carbons.enabled = false;
|
||||
|
||||
jsxc.debug('Carbons disabled');
|
||||
|
||||
if (cb) {
|
||||
cb.call(this);
|
||||
}
|
||||
}, function(stanza) {
|
||||
jsxc.warn('Could not disable carbons', stanza);
|
||||
});
|
||||
},
|
||||
|
||||
/**
|
||||
* Enable/Disable carbons depending on options key.
|
||||
*
|
||||
* @memberOf jsxc.xmpp.carbons
|
||||
* @param err error message
|
||||
*/
|
||||
refresh: function(err) {
|
||||
if (err === false) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (jsxc.options.get('carbons').enable) {
|
||||
return jsxc.xmpp.carbons.enable();
|
||||
}
|
||||
|
||||
return jsxc.xmpp.carbons.disable();
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Handle long-live data
|
||||
*
|
||||
@@ -4553,9 +4919,11 @@ var jsxc;
|
||||
* @param bid
|
||||
* @param direction
|
||||
* @param msg
|
||||
* @param encrypted
|
||||
* @param forwarded
|
||||
* @return post
|
||||
*/
|
||||
saveMessage: function(bid, direction, msg) {
|
||||
saveMessage: function(bid, direction, msg, encrypted, forwarded, stamp) {
|
||||
var chat = jsxc.storage.getUserItem('chat', bid) || [];
|
||||
|
||||
var uid = new Date().getTime() + ':msg';
|
||||
@@ -4568,7 +4936,10 @@ var jsxc;
|
||||
direction: direction,
|
||||
msg: msg,
|
||||
uid: uid.replace(/:/, '-'),
|
||||
received: false
|
||||
received: false,
|
||||
encrypted: encrypted || false,
|
||||
forwarded: forwarded || false,
|
||||
stamp: stamp || new Date().getTime()
|
||||
};
|
||||
|
||||
chat.unshift(post);
|
||||
@@ -4622,20 +4993,24 @@ var jsxc;
|
||||
* Handler for otr receive event
|
||||
*
|
||||
* @memberOf jsxc.otr
|
||||
* @param {string} bid
|
||||
* @param {string} msg received message
|
||||
* @param {string} encrypted True, if msg was encrypted.
|
||||
* @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(bid, msg, encrypted) {
|
||||
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 && !encrypted) {
|
||||
jsxc.gui.window.postMessage(bid, 'sys', jsxc.translate('%%Received an unencrypted message.%% [') + msg + ']');
|
||||
if (jsxc.otr.objects[bid].msgstate !== OTR.CONST.MSGSTATE_PLAINTEXT && !d.encrypted) {
|
||||
jsxc.gui.window.postMessage(bid, 'sys', jsxc.translate('%%Received an unencrypted message.%% [') + d.msg + ']', d.encrypted, d.forwarded, d.stamp);
|
||||
} else {
|
||||
jsxc.gui.window.postMessage(bid, 'in', msg);
|
||||
jsxc.gui.window.postMessage(bid, 'in', d.msg, d.encrypted, d.forwarded, d.stamp);
|
||||
}
|
||||
},
|
||||
|
||||
@@ -4770,8 +5145,14 @@ var jsxc;
|
||||
});
|
||||
|
||||
// Receive message
|
||||
jsxc.otr.objects[bid].on('ui', function(msg, encrypted) {
|
||||
jsxc.otr.receiveMessage(bid, msg, encrypted === true);
|
||||
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
|
||||
@@ -5362,16 +5743,7 @@ var jsxc;
|
||||
notice.click(function() {
|
||||
jsxc.notice.remove(nid);
|
||||
|
||||
var fnList = fnName.split('.');
|
||||
var fn = jsxc[fnList[0]];
|
||||
var i;
|
||||
for (i = 1; i < fnList.length; i++) {
|
||||
fn = fn[fnList[i]];
|
||||
}
|
||||
|
||||
if (typeof fn === 'function') {
|
||||
fn.apply(null, fnParams);
|
||||
}
|
||||
jsxc.exec(fnName, fnParams);
|
||||
|
||||
return false;
|
||||
});
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
/*!
|
||||
* jsxc v1.0.0 - 2014-11-06
|
||||
* jsxc v1.1.0a - 2015-02-25
|
||||
*
|
||||
* Copyright (c) 2014 Klaus Herberth <klaus@jsxc.org> <br>
|
||||
* Copyright (c) 2015 Klaus Herberth <klaus@jsxc.org> <br>
|
||||
* Released under the MIT license
|
||||
*
|
||||
* Please see http://www.jsxc.org/
|
||||
*
|
||||
* @author Klaus Herberth <klaus@jsxc.org>
|
||||
* @version 1.0.0
|
||||
* @version 1.1.0a
|
||||
* @license MIT
|
||||
*/
|
||||
|
||||
@@ -288,6 +288,11 @@ jsxc.gui.template.videoWindow = '<div class="jsxc_webrtc">\
|
||||
jsxc.debug('Update icon', bid);
|
||||
|
||||
var self = jsxc.webrtc;
|
||||
|
||||
if (bid === jsxc.jidToBid(self.conn.jid)) {
|
||||
return;
|
||||
}
|
||||
|
||||
var win = jsxc.gui.window.get(bid);
|
||||
var jid = win.data('jid') || jsxc.storage.getUserItem('buddy', bid).jid;
|
||||
|
||||
|
||||
externo
+10
-10
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
@@ -1,379 +0,0 @@
|
||||
.jsxc_webrtc {
|
||||
width: 900px;
|
||||
}
|
||||
|
||||
.jsxc_webrtc li .jsxc_name {
|
||||
cursor: auto;
|
||||
}
|
||||
|
||||
.jsxc_webrtc li .jsxc_name:hover {
|
||||
color: #939393;
|
||||
}
|
||||
|
||||
.jsxc_videoContainer {
|
||||
width: 640px;
|
||||
height: 480px;
|
||||
position: relative;
|
||||
background-color: #a4a4a4;
|
||||
}
|
||||
|
||||
.jsxc_videoContainer video, .jsxc_videoContainer .jsxc_noRemoteVideo {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.jsxc_remotevideo, .jsxc_noRemoteVideo {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
position: absolute;
|
||||
top: 0px;
|
||||
left: 0px;
|
||||
z-index: 9000;
|
||||
background-color: #a4a4a4;
|
||||
}
|
||||
|
||||
.jsxc_localvideo {
|
||||
width: 160px;
|
||||
height: 120px;
|
||||
position: absolute;
|
||||
right: 10px;
|
||||
bottom: 10px;
|
||||
z-index: 9990;
|
||||
background-color: black;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.jsxc_noRemoteVideo p {
|
||||
position: absolute;
|
||||
bottom: 0px;
|
||||
left:0px;
|
||||
text-align: center;
|
||||
color: #fff;
|
||||
width: 100%;
|
||||
z-index: 100;
|
||||
}
|
||||
|
||||
.jsxc_noRemoteVideo > div {
|
||||
width: 200px;
|
||||
height: 200px;
|
||||
overflow: hidden;
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
margin-top: -100px;
|
||||
left: 50%;
|
||||
margin-left: -100px;
|
||||
}
|
||||
|
||||
.jsxc_noRemoteVideo > div > div {
|
||||
background-color: #717171;
|
||||
}
|
||||
|
||||
.jsxc_noRemoteVideo > div > div:first-child {
|
||||
width: 50%;
|
||||
height: 50%;
|
||||
border-radius: 50%;
|
||||
position: absolute;
|
||||
left: 50%;
|
||||
margin-left: -25%;
|
||||
top: 10%;
|
||||
}
|
||||
|
||||
.jsxc_noRemoteVideo > div > div:last-child {
|
||||
position: absolute;
|
||||
bottom: -50%;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
border-radius: 50%;
|
||||
}
|
||||
|
||||
.jsxc_webrtc .jsxc_status {
|
||||
z-index: 9999;
|
||||
border-radius: 20px;
|
||||
display: none;
|
||||
position: absolute;
|
||||
top: 30px;
|
||||
left: 50%;
|
||||
background-color: lightgrey;
|
||||
background-color: rgba(0, 0, 0, 0.5);
|
||||
color: white;
|
||||
padding: 15px;
|
||||
font-weight: bold;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.jsxc_webrtc .slimScrollDiv {
|
||||
opacity: 1 !important;
|
||||
}
|
||||
|
||||
div:-moz-full-screen {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background-color: black;
|
||||
}
|
||||
|
||||
div:-ms-full-screen {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background-color: black;
|
||||
}
|
||||
|
||||
div:-webkit-full-screen {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background-color: black;
|
||||
}
|
||||
|
||||
div:fullscreen {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background-color: black;
|
||||
}
|
||||
|
||||
div:-moz-full-screen.jsxc_localvideo {
|
||||
border: 1px solid white;
|
||||
}
|
||||
|
||||
div:-webkit-full-screen.jsxc_localvideo {
|
||||
border: 1px solid white;
|
||||
}
|
||||
|
||||
div:-ms-full-screen.jsxc_localvideo {
|
||||
border: 1px solid white;
|
||||
}
|
||||
|
||||
div:fullscreen.jsxc_localvideo {
|
||||
border: 1px solid white;
|
||||
}
|
||||
|
||||
.jsxc_fullscreen.jsxc_localvideo {
|
||||
border: 1px solid white;
|
||||
}
|
||||
|
||||
.jsxc_controlbar {
|
||||
width: 640px;
|
||||
}
|
||||
|
||||
.jsxc_controlbar .jsxc_showchat {
|
||||
float: right;
|
||||
}
|
||||
|
||||
.jsxc_multi>div {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.jsxc_snapshotbar {
|
||||
width: 100%;
|
||||
display: none;
|
||||
}
|
||||
|
||||
.jsxc_snapshotbar img {
|
||||
height: 50px;
|
||||
}
|
||||
|
||||
.jsxc_buttongroup {
|
||||
display: inline;
|
||||
}
|
||||
|
||||
.jsxc_buttongroup button:first-child {
|
||||
border-top-right-radius: 0px;
|
||||
border-bottom-right-radius: 0px;
|
||||
margin-right: 0px;
|
||||
}
|
||||
|
||||
.jsxc_buttongroup button:last-child {
|
||||
border-top-left-radius: 0px;
|
||||
border-bottom-left-radius: 0px;
|
||||
margin-left: 0px;
|
||||
}
|
||||
|
||||
.jsxc_chatarea {
|
||||
position: relative;
|
||||
float:right;
|
||||
height: 480px;
|
||||
width: 250px;
|
||||
background-color: #A4A4A4;
|
||||
}
|
||||
|
||||
.jsxc_chatarea > ul {
|
||||
width: 250px;
|
||||
height: 480px;
|
||||
list-style: none;
|
||||
padding: 0px;
|
||||
}
|
||||
|
||||
.jsxc_chatarea .jsxc_settings {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
.jsxc_chatarea .jsxc_close {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
.jsxc_chatarea .jsxc_video {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
.jsxc_chatarea .jsxc_bar {
|
||||
|
||||
}
|
||||
|
||||
.jsxc_chatarea .jsxc_window {
|
||||
bottom: 0px;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
.jsxc_videoSuitable .jsxc_name {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
div.jsxc_video {
|
||||
background-image: url('img/camera_icon_grey.svg');
|
||||
background-repeat: no-repeat;
|
||||
background-position: center center;
|
||||
background-size: 15px 15px;
|
||||
}
|
||||
|
||||
div.jsxc_video:not(.jsxc_disabled):hover, #jsxc_buddylist .jsxc_options .jsxc_video {
|
||||
background-image: url('img/camera_icon_white.svg');
|
||||
}
|
||||
|
||||
#jsxc_buddylist .jsxc_options .jsxc_video.jsxc_disabled {
|
||||
opacity: 0.2;
|
||||
}
|
||||
|
||||
.bubblingG {
|
||||
text-align: center;
|
||||
width:129px;
|
||||
height:80px;
|
||||
position: absolute;
|
||||
top: 40%;
|
||||
left: 50%;
|
||||
margin-left: -64px;
|
||||
}
|
||||
|
||||
.bubblingG span {
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
margin: 40px auto;
|
||||
background: #000000;
|
||||
-moz-border-radius: 81px;
|
||||
-moz-animation: bubblingG 1.3s infinite alternate;
|
||||
-webkit-border-radius: 81px;
|
||||
-webkit-animation: bubblingG 1.3s infinite alternate;
|
||||
-ms-border-radius: 81px;
|
||||
-ms-animation: bubblingG 1.3s infinite alternate;
|
||||
-o-border-radius: 81px;
|
||||
-o-animation: bubblingG 1.3s infinite alternate;
|
||||
border-radius: 81px;
|
||||
animation: bubblingG 1.3s infinite alternate;
|
||||
}
|
||||
|
||||
#bubblingG_1 {
|
||||
-moz-animation-delay: 0s;
|
||||
-webkit-animation-delay: 0s;
|
||||
-ms-animation-delay: 0s;
|
||||
-o-animation-delay: 0s;
|
||||
animation-delay: 0s;
|
||||
}
|
||||
|
||||
#bubblingG_2 {
|
||||
-moz-animation-delay: 0.39s;
|
||||
-webkit-animation-delay: 0.39s;
|
||||
-ms-animation-delay: 0.39s;
|
||||
-o-animation-delay: 0.39s;
|
||||
animation-delay: 0.39s;
|
||||
}
|
||||
|
||||
#bubblingG_3 {
|
||||
-moz-animation-delay: 0.78s;
|
||||
-webkit-animation-delay: 0.78s;
|
||||
-ms-animation-delay: 0.78s;
|
||||
-o-animation-delay: 0.78s;
|
||||
animation-delay: 0.78s;
|
||||
}
|
||||
|
||||
@-moz-keyframes bubblingG {
|
||||
0% {
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
background-color:#000000;
|
||||
-moz-transform: translateY(0);
|
||||
}
|
||||
|
||||
100% {
|
||||
width: 39px;
|
||||
height: 39px;
|
||||
background-color:#FFFFFF;
|
||||
-moz-transform: translateY(-34px);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@-webkit-keyframes bubblingG {
|
||||
0% {
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
background-color:#000000;
|
||||
-webkit-transform: translateY(0);
|
||||
}
|
||||
|
||||
100% {
|
||||
width: 39px;
|
||||
height: 39px;
|
||||
background-color:#FFFFFF;
|
||||
-webkit-transform: translateY(-34px);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@-ms-keyframes bubblingG {
|
||||
0% {
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
background-color:#000000;
|
||||
-ms-transform: translateY(0);
|
||||
}
|
||||
|
||||
100% {
|
||||
width: 39px;
|
||||
height: 39px;
|
||||
background-color:#FFFFFF;
|
||||
-ms-transform: translateY(-34px);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@-o-keyframes bubblingG {
|
||||
0% {
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
background-color:#000000;
|
||||
-o-transform: translateY(0);
|
||||
}
|
||||
|
||||
100% {
|
||||
width: 39px;
|
||||
height: 39px;
|
||||
background-color:#FFFFFF;
|
||||
-o-transform: translateY(-34px);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@keyframes bubblingG {
|
||||
0% {
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
background-color:#000000;
|
||||
transform: translateY(0);
|
||||
}
|
||||
|
||||
100% {
|
||||
width: 39px;
|
||||
height: 39px;
|
||||
background-color:#FFFFFF;
|
||||
transform: translateY(-34px);
|
||||
}
|
||||
|
||||
}
|
||||
+22
-13
@@ -1,5 +1,5 @@
|
||||
/*!
|
||||
* jsxc v1.0.0 - 2014-11-06
|
||||
* jsxc v1.1.0a - 2015-02-25
|
||||
*
|
||||
* This file concatenates all dependencies of jsxc.
|
||||
*
|
||||
@@ -6613,13 +6613,18 @@ Strophe.addConnectionPlugin('disco',
|
||||
* Returns: (Boolean) - false, to automatically remove the handler.
|
||||
*/
|
||||
_handleDiscoInfoReply: function(stanza) {
|
||||
var query = stanza.querySelector('query'), node = query.getAttribute('node').split('#'), ver = node[1], from = stanza.getAttribute('from');
|
||||
var query = stanza.querySelector('query');
|
||||
var from = stanza.getAttribute('from');
|
||||
var node = query.getAttribute('node');
|
||||
var ver = (node)? node.split('#')[1] : this._jidVerIndex[from]; //fix open prosody issue
|
||||
|
||||
if (!this._knownCapabilities[ver]) {
|
||||
var childNodes = query.childNodes, childNodesLen = childNodes.length;
|
||||
this._knownCapabilities[ver] = {
|
||||
features: [],
|
||||
identities: []
|
||||
};
|
||||
|
||||
for (var i = 0; i < childNodesLen; i++) {
|
||||
var node = childNodes[i];
|
||||
if (node.nodeName == 'feature') {
|
||||
@@ -6627,10 +6632,11 @@ Strophe.addConnectionPlugin('disco',
|
||||
} else if (node.nodeName == 'identity') {
|
||||
this._knownCapabilities[ver]['identities'].push(this._attributesToJsObject(node.attributes));
|
||||
} else {
|
||||
if (_knownCapabilities[ver][node.nodeName])
|
||||
_knownCapabilities[ver][node.nodeName] = [];
|
||||
if (typeof this._knownCapabilities[ver][node.nodeName] === 'undefined')
|
||||
this._knownCapabilities[ver][node.nodeName] = [];
|
||||
this._knownCapabilities[ver][node.nodeName].push(this._attributesToJsObject(node.attributes));
|
||||
}
|
||||
|
||||
}
|
||||
this._jidVerIndex[from] = ver;
|
||||
} else if (!this._jidVerIndex[from] || !this._jidVerIndex[from] !== ver) {
|
||||
@@ -14013,8 +14019,8 @@ CryptoJS.mode.CTR = (function () {
|
||||
* Source: build/lib/otr/build/otr.js, license: MPL v2.0, url: https://arlolra.github.io/otr/ */
|
||||
/*!
|
||||
|
||||
otr.js v0.2.13 - 2014-09-07
|
||||
(c) 2014 - Arlo Breault <arlolra@gmail.com>
|
||||
otr.js v0.2.14 - 2015-01-16
|
||||
(c) 2015 - Arlo Breault <arlolra@gmail.com>
|
||||
Freely distributed under the MPL v2.0 license.
|
||||
|
||||
This file is concatenated for the browser.
|
||||
@@ -15633,10 +15639,12 @@ CryptoJS.mode.CTR = (function () {
|
||||
|
||||
this.smpstate = CONST.SMPSTATE_EXPECT0
|
||||
|
||||
// assume utf8 question
|
||||
question = CryptoJS.enc.Latin1
|
||||
.parse(question)
|
||||
.toString(CryptoJS.enc.Utf8)
|
||||
if (question) {
|
||||
// assume utf8 question
|
||||
question = CryptoJS.enc.Latin1
|
||||
.parse(question)
|
||||
.toString(CryptoJS.enc.Utf8)
|
||||
}
|
||||
|
||||
// invoke question
|
||||
this.trigger('question', [question])
|
||||
@@ -16423,7 +16431,8 @@ CryptoJS.mode.CTR = (function () {
|
||||
|
||||
// utf8 inputs
|
||||
secret = CryptoJS.enc.Utf8.parse(secret).toString(CryptoJS.enc.Latin1)
|
||||
question = CryptoJS.enc.Utf8.parse(question).toString(CryptoJS.enc.Latin1)
|
||||
if (question)
|
||||
question = CryptoJS.enc.Utf8.parse(question).toString(CryptoJS.enc.Latin1)
|
||||
|
||||
this.sm.rcvSecret(secret, question)
|
||||
}
|
||||
@@ -16486,7 +16495,7 @@ CryptoJS.mode.CTR = (function () {
|
||||
if (msg) this.io(msg, meta)
|
||||
}
|
||||
|
||||
OTR.prototype.receiveMsg = function (msg) {
|
||||
OTR.prototype.receiveMsg = function (msg, meta) {
|
||||
|
||||
// parse type
|
||||
msg = Parse.parseMsg(this, msg)
|
||||
@@ -16537,7 +16546,7 @@ CryptoJS.mode.CTR = (function () {
|
||||
this.doAKE(msg)
|
||||
}
|
||||
|
||||
if (msg.msg) this.trigger('ui', [msg.msg, !!msg.encrypted])
|
||||
if (msg.msg) this.trigger('ui', [msg.msg, !!msg.encrypted, meta])
|
||||
}
|
||||
|
||||
OTR.prototype.checkInstanceTags = function (it) {
|
||||
|
||||
externo
+4
-4
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
@@ -1,7 +1,7 @@
|
||||
/*!
|
||||
|
||||
otr.js v0.2.13 - 2014-09-07
|
||||
(c) 2014 - Arlo Breault <arlolra@gmail.com>
|
||||
otr.js v0.2.14 - 2015-01-16
|
||||
(c) 2015 - Arlo Breault <arlolra@gmail.com>
|
||||
Freely distributed under the MPL v2.0 license.
|
||||
|
||||
This file is concatenated for the browser.
|
||||
@@ -1620,10 +1620,12 @@
|
||||
|
||||
this.smpstate = CONST.SMPSTATE_EXPECT0
|
||||
|
||||
// assume utf8 question
|
||||
question = CryptoJS.enc.Latin1
|
||||
.parse(question)
|
||||
.toString(CryptoJS.enc.Utf8)
|
||||
if (question) {
|
||||
// assume utf8 question
|
||||
question = CryptoJS.enc.Latin1
|
||||
.parse(question)
|
||||
.toString(CryptoJS.enc.Utf8)
|
||||
}
|
||||
|
||||
// invoke question
|
||||
this.trigger('question', [question])
|
||||
@@ -2410,7 +2412,8 @@
|
||||
|
||||
// utf8 inputs
|
||||
secret = CryptoJS.enc.Utf8.parse(secret).toString(CryptoJS.enc.Latin1)
|
||||
question = CryptoJS.enc.Utf8.parse(question).toString(CryptoJS.enc.Latin1)
|
||||
if (question)
|
||||
question = CryptoJS.enc.Utf8.parse(question).toString(CryptoJS.enc.Latin1)
|
||||
|
||||
this.sm.rcvSecret(secret, question)
|
||||
}
|
||||
@@ -2473,7 +2476,7 @@
|
||||
if (msg) this.io(msg, meta)
|
||||
}
|
||||
|
||||
OTR.prototype.receiveMsg = function (msg) {
|
||||
OTR.prototype.receiveMsg = function (msg, meta) {
|
||||
|
||||
// parse type
|
||||
msg = Parse.parseMsg(this, msg)
|
||||
@@ -2524,7 +2527,7 @@
|
||||
this.doAKE(msg)
|
||||
}
|
||||
|
||||
if (msg.msg) this.trigger('ui', [msg.msg, !!msg.encrypted])
|
||||
if (msg.msg) this.trigger('ui', [msg.msg, !!msg.encrypted, meta])
|
||||
}
|
||||
|
||||
OTR.prototype.checkInstanceTags = function (it) {
|
||||
|
||||
externo
+4
-4
Diff do arquivo suprimido porque uma ou mais linhas são muito longas
@@ -191,13 +191,18 @@
|
||||
* Returns: (Boolean) - false, to automatically remove the handler.
|
||||
*/
|
||||
_handleDiscoInfoReply: function(stanza) {
|
||||
var query = stanza.querySelector('query'), node = query.getAttribute('node').split('#'), ver = node[1], from = stanza.getAttribute('from');
|
||||
var query = stanza.querySelector('query');
|
||||
var from = stanza.getAttribute('from');
|
||||
var node = query.getAttribute('node');
|
||||
var ver = (node)? node.split('#')[1] : this._jidVerIndex[from]; //fix open prosody issue
|
||||
|
||||
if (!this._knownCapabilities[ver]) {
|
||||
var childNodes = query.childNodes, childNodesLen = childNodes.length;
|
||||
this._knownCapabilities[ver] = {
|
||||
features: [],
|
||||
identities: []
|
||||
};
|
||||
|
||||
for (var i = 0; i < childNodesLen; i++) {
|
||||
var node = childNodes[i];
|
||||
if (node.nodeName == 'feature') {
|
||||
@@ -205,10 +210,11 @@
|
||||
} else if (node.nodeName == 'identity') {
|
||||
this._knownCapabilities[ver]['identities'].push(this._attributesToJsObject(node.attributes));
|
||||
} else {
|
||||
if (_knownCapabilities[ver][node.nodeName])
|
||||
_knownCapabilities[ver][node.nodeName] = [];
|
||||
if (typeof this._knownCapabilities[ver][node.nodeName] === 'undefined')
|
||||
this._knownCapabilities[ver][node.nodeName] = [];
|
||||
this._knownCapabilities[ver][node.nodeName].push(this._attributesToJsObject(node.attributes));
|
||||
}
|
||||
|
||||
}
|
||||
this._jidVerIndex[from] = ver;
|
||||
} else if (!this._jidVerIndex[from] || !this._jidVerIndex[from] !== ver) {
|
||||
|
||||
+2
-2
@@ -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></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.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>
|
||||
</nav>
|
||||
|
||||
<br clear="both">
|
||||
|
||||
<footer>
|
||||
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Thu Nov 06 2014 13:24:26 GMT+0100 (CET)
|
||||
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)
|
||||
</footer>
|
||||
|
||||
<script> prettyPrint(); </script>
|
||||
|
||||
@@ -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#line2281">line 2281</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line2384">line 2384</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#line2347">line 2347</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line2450">line 2450</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#line2296">line 2296</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line2399">line 2399</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#line2357">line 2357</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line2460">line 2460</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></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.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>
|
||||
</nav>
|
||||
|
||||
<br clear="both">
|
||||
|
||||
<footer>
|
||||
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Thu Nov 06 2014 13:24:26 GMT+0100 (CET)
|
||||
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)
|
||||
</footer>
|
||||
|
||||
<script> prettyPrint(); </script>
|
||||
|
||||
+32
-32
@@ -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#line811">line 811</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line893">line 893</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#line818">line 818</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line900">line 900</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#line1759">line 1759</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line1867">line 1867</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#line1833">line 1833</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line1941">line 1941</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#line1097">line 1097</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line1191">line 1191</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#line860">line 860</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line942">line 942</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#line1818">line 1818</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line1926">line 1926</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#line1068">line 1068</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line1162">line 1162</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#line1479">line 1479</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line1573">line 1573</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#line1427">line 1427</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line1521">line 1521</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#line1308">line 1308</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line1402">line 1402</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#line1436">line 1436</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line1530">line 1530</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#line1460">line 1460</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line1554">line 1554</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#line1346">line 1346</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line1440">line 1440</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#line1492">line 1492</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line1586">line 1586</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#line1189">line 1189</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line1283">line 1283</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#line1153">line 1153</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line1247">line 1247</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#line1387">line 1387</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line1481">line 1481</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#line1719">line 1719</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line1827">line 1827</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#line1520">line 1520</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line1614">line 1614</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#line1198">line 1198</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line1292">line 1292</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#line830">line 830</a>
|
||||
<a href="jsxc.lib.webrtc.js.html">jsxc.lib.webrtc.js</a>, <a href="jsxc.lib.webrtc.js.html#line835">line 835</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#line1415">line 1415</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line1509">line 1509</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#line1108">line 1108</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line1202">line 1202</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#line901">line 901</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line990">line 990</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#line1805">line 1805</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line1913">line 1913</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#line917">line 917</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line1006">line 1006</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#line993">line 993</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line1082">line 1082</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#line1781">line 1781</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line1889">line 1889</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#line1052">line 1052</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line1146">line 1146</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></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.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>
|
||||
</nav>
|
||||
|
||||
<br clear="both">
|
||||
|
||||
<footer>
|
||||
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Thu Nov 06 2014 13:24:26 GMT+0100 (CET)
|
||||
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)
|
||||
</footer>
|
||||
|
||||
<script> prettyPrint(); </script>
|
||||
|
||||
@@ -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#line820">line 820</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line902">line 902</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#line827">line 827</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line909">line 909</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#line836">line 836</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line918">line 918</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#line841">line 841</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line923">line 923</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#line850">line 850</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line932">line 932</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></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.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>
|
||||
</nav>
|
||||
|
||||
<br clear="both">
|
||||
|
||||
<footer>
|
||||
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Thu Nov 06 2014 13:24:26 GMT+0100 (CET)
|
||||
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)
|
||||
</footer>
|
||||
|
||||
<script> prettyPrint(); </script>
|
||||
|
||||
+14
-14
@@ -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#line1911">line 1911</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line2019">line 2019</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
@@ -212,7 +212,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#line2205">line 2205</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line2309">line 2309</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
@@ -347,7 +347,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#line2029">line 2029</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line2133">line 2133</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
@@ -416,7 +416,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#line2267">line 2267</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line2370">line 2370</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
@@ -485,7 +485,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#line1924">line 1924</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line2032">line 2032</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
@@ -644,7 +644,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#line2092">line 2092</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line2196">line 2196</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
@@ -731,7 +731,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#line2253">line 2253</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line2357">line 2357</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
@@ -848,7 +848,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#line2144">line 2144</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line2248">line 2248</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
@@ -965,7 +965,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#line2135">line 2135</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line2239">line 2239</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
@@ -1104,7 +1104,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#line2165">line 2165</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line2269">line 2269</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
@@ -1239,7 +1239,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#line2125">line 2125</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line2229">line 2229</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
@@ -1374,7 +1374,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#line2228">line 2228</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line2332">line 2332</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
@@ -1415,13 +1415,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></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.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>
|
||||
</nav>
|
||||
|
||||
<br clear="both">
|
||||
|
||||
<footer>
|
||||
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Thu Nov 06 2014 13:24:26 GMT+0100 (CET)
|
||||
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)
|
||||
</footer>
|
||||
|
||||
<script> prettyPrint(); </script>
|
||||
|
||||
@@ -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#line2883">line 2883</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line3001">line 3001</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></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.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>
|
||||
</nav>
|
||||
|
||||
<br clear="both">
|
||||
|
||||
<footer>
|
||||
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Thu Nov 06 2014 13:24:26 GMT+0100 (CET)
|
||||
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)
|
||||
</footer>
|
||||
|
||||
<script> prettyPrint(); </script>
|
||||
|
||||
+90
-21
@@ -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#line2362">line 2362</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line2465">line 2465</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#line2598">line 2598</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line2701">line 2701</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#line2678">line 2678</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line2781">line 2781</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#line2775">line 2775</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line2882">line 2882</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#line2646">line 2646</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line2749">line 2749</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#line2877">line 2877</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line2995">line 2995</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#line2573">line 2573</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line2676">line 2676</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#line2529">line 2529</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line2632">line 2632</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#line2667">line 2667</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line2770">line 2770</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#line2689">line 2689</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line2792">line 2792</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#line2375">line 2375</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line2478">line 2478</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
@@ -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#line2540">line 2540</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line2643">line 2643</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
@@ -1537,7 +1537,7 @@ be created.
|
||||
|
||||
|
||||
<dt>
|
||||
<h4 class="name" id="postMessage"><span class="type-signature"><static> </span>postMessage<span class="signature">(bid, direction, msg)</span><span class="type-signature"></span></h4>
|
||||
<h4 class="name" id="postMessage"><span class="type-signature"><static> </span>postMessage<span class="signature">(bid, direction, msg, encrypted, forwarded, stamp)</span><span class="type-signature"></span></h4>
|
||||
|
||||
|
||||
</dt>
|
||||
@@ -1646,6 +1646,75 @@ be created.
|
||||
</tr>
|
||||
|
||||
|
||||
|
||||
<tr>
|
||||
|
||||
<td class="name"><code>encrypted</code></td>
|
||||
|
||||
|
||||
<td class="type">
|
||||
|
||||
|
||||
<span class="param-type">boolean</span>
|
||||
|
||||
|
||||
|
||||
</td>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<td class="description last">Was this message encrypted? Default: false</td>
|
||||
</tr>
|
||||
|
||||
|
||||
|
||||
<tr>
|
||||
|
||||
<td class="name"><code>forwarded</code></td>
|
||||
|
||||
|
||||
<td class="type">
|
||||
|
||||
|
||||
<span class="param-type">boolean</span>
|
||||
|
||||
|
||||
|
||||
</td>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<td class="description last">Was this message forwarded? Default: false</td>
|
||||
</tr>
|
||||
|
||||
|
||||
|
||||
<tr>
|
||||
|
||||
<td class="name"><code>stamp</code></td>
|
||||
|
||||
|
||||
<td class="type">
|
||||
|
||||
|
||||
<span class="param-type">integer</span>
|
||||
|
||||
|
||||
|
||||
</td>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<td class="description last">Timestamp</td>
|
||||
</tr>
|
||||
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
@@ -1673,7 +1742,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#line2725">line 2725</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line2831">line 2831</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
@@ -1790,7 +1859,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#line2862">line 2862</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line2980">line 2980</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
@@ -1925,7 +1994,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#line2704">line 2704</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line2807">line 2807</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
@@ -2065,7 +2134,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#line2852">line 2852</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line2970">line 2970</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
@@ -2200,7 +2269,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#line2633">line 2633</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line2736">line 2736</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
@@ -2317,7 +2386,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#line2611">line 2611</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line2714">line 2714</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
@@ -2358,13 +2427,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></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.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>
|
||||
</nav>
|
||||
|
||||
<br clear="both">
|
||||
|
||||
<footer>
|
||||
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Thu Nov 06 2014 13:24:26 GMT+0100 (CET)
|
||||
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)
|
||||
</footer>
|
||||
|
||||
<script> prettyPrint(); </script>
|
||||
|
||||
+313
-90
@@ -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#line67">line 67</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line64">line 64</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#line70">line 70</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line67">line 67</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#line147">line 147</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line174">line 174</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#line55">line 55</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line52">line 52</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#line5307">line 5307</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line5688">line 5688</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#line61">line 61</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line58">line 58</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#line64">line 64</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line61">line 61</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#line46">line 46</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line43">line 43</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
@@ -1079,61 +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#line49">line 49</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
</dd>
|
||||
|
||||
|
||||
|
||||
<dt>
|
||||
<h4 class="name" id="triggeredFromForm"><span class="type-signature"><static> </span>triggeredFromForm<span class="type-signature"></span></h4>
|
||||
|
||||
|
||||
</dt>
|
||||
<dd>
|
||||
|
||||
<div class="description">
|
||||
True if login through form
|
||||
</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#line43">line 43</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line46">line 46</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
@@ -1187,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#line52">line 52</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line49">line 49</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
@@ -1306,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#line395">line 395</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line430">line 430</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
@@ -1375,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#line435">line 435</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line474">line 474</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
@@ -1538,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#line94">line 94</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line121">line 121</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
@@ -1655,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#line493">line 493</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line532">line 532</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
@@ -1813,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#line142">line 142</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line169">line 169</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
@@ -1882,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#line595">line 595</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line634">line 634</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
@@ -1905,6 +1851,283 @@ workaround) 0: conform, 1: not conform, 2: not shure
|
||||
|
||||
|
||||
|
||||
</dd>
|
||||
|
||||
|
||||
|
||||
<dt>
|
||||
<h4 class="name" id="exec"><span class="type-signature"><static> </span>exec<span class="signature">(fnName, fnParams)</span><span class="type-signature"></span></h4>
|
||||
|
||||
|
||||
</dt>
|
||||
<dd>
|
||||
|
||||
|
||||
<div class="description">
|
||||
Executes the given function in jsxc namespace.
|
||||
</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>fnName</code></td>
|
||||
|
||||
|
||||
<td class="type">
|
||||
|
||||
|
||||
<span class="param-type">string</span>
|
||||
|
||||
|
||||
|
||||
</td>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<td class="description last">Function name</td>
|
||||
</tr>
|
||||
|
||||
|
||||
|
||||
<tr>
|
||||
|
||||
<td class="name"><code>fnParams</code></td>
|
||||
|
||||
|
||||
<td class="type">
|
||||
|
||||
|
||||
<span class="param-type">array</span>
|
||||
|
||||
|
||||
|
||||
</td>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<td class="description last">Function parameters</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#line726">line 726</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h5>Returns:</h5>
|
||||
|
||||
|
||||
<div class="param-desc">
|
||||
Function return value
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</dd>
|
||||
|
||||
|
||||
|
||||
<dt>
|
||||
<h4 class="name" id="getFormattedTime"><span class="type-signature"><static> </span>getFormattedTime<span class="signature">(unixtime)</span><span class="type-signature"></span></h4>
|
||||
|
||||
|
||||
</dt>
|
||||
<dd>
|
||||
|
||||
|
||||
<div class="description">
|
||||
Parse a unix timestamp and return a formatted time string
|
||||
</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>unixtime</code></td>
|
||||
|
||||
|
||||
<td class="type">
|
||||
|
||||
|
||||
<span class="param-type">Object</span>
|
||||
|
||||
|
||||
|
||||
</td>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<td class="description last"></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#line94">line 94</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h5>Returns:</h5>
|
||||
|
||||
|
||||
<div class="param-desc">
|
||||
time of day and/or date
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</dd>
|
||||
|
||||
|
||||
@@ -1999,7 +2222,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#line155">line 155</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line182">line 182</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
@@ -2068,7 +2291,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#line638">line 638</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line677">line 677</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
@@ -2202,7 +2425,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#line518">line 518</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line557">line 557</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
@@ -2329,7 +2552,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#line503">line 503</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line542">line 542</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
@@ -2420,7 +2643,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#line452">line 452</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line491">line 491</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
@@ -2490,7 +2713,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#line464">line 464</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line503">line 503</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
@@ -2559,7 +2782,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#line373">line 373</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line404">line 404</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
@@ -2628,7 +2851,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#line358">line 358</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line389">line 389</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
@@ -2697,7 +2920,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#line302">line 302</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line333">line 333</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
@@ -2824,7 +3047,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#line483">line 483</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line522">line 522</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
@@ -2958,7 +3181,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#line607">line 607</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line646">line 646</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
@@ -3037,7 +3260,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#line525">line 525</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line564">line 564</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
@@ -3106,7 +3329,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#line546">line 546</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line585">line 585</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
@@ -3175,7 +3398,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#line445">line 445</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line484">line 484</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
@@ -3244,7 +3467,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#line576">line 576</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line615">line 615</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
@@ -3384,7 +3607,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#line618">line 618</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line657">line 657</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
@@ -3523,7 +3746,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#line667">line 667</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line706">line 706</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
@@ -3685,7 +3908,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#line131">line 131</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line158">line 158</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
@@ -3726,13 +3949,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></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.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>
|
||||
</nav>
|
||||
|
||||
<br clear="both">
|
||||
|
||||
<footer>
|
||||
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Thu Nov 06 2014 13:24:26 GMT+0100 (CET)
|
||||
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)
|
||||
</footer>
|
||||
|
||||
<script> prettyPrint(); </script>
|
||||
|
||||
@@ -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#line5405">line 5405</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line5777">line 5777</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></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.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>
|
||||
</nav>
|
||||
|
||||
<br clear="both">
|
||||
|
||||
<footer>
|
||||
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Thu Nov 06 2014 13:24:26 GMT+0100 (CET)
|
||||
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)
|
||||
</footer>
|
||||
|
||||
<script> prettyPrint(); </script>
|
||||
|
||||
+467
-95
@@ -66,9 +66,6 @@
|
||||
/** True if restore is complete */
|
||||
restoreCompleted: false,
|
||||
|
||||
/** True if login through form */
|
||||
triggeredFromForm: false,
|
||||
|
||||
/** True if login through box */
|
||||
triggeredFromBox: false,
|
||||
|
||||
@@ -107,9 +104,39 @@
|
||||
REGEX: {
|
||||
JID: new RegExp('\\b[^"&\'\\/:<>@\\s]+@[\\w-_.]+\\b', 'ig'),
|
||||
URL: new RegExp(/((?:https?:\/\/|www\.|([\w\-]+\.[a-zA-Z]{2,3})(?=\b))(?:(?:[\-A-Za-z0-9+&@#\/%?=~_|!:,.;]*\([\-A-Za-z0-9+&@#\/%?=~_|!:,.;]*\)([\-A-Za-z0-9+&@#\/%?=~_|!:,.;]*[\-A-Za-z0-9+&@#\/%=~_|])?)|(?:[\-A-Za-z0-9+&@#\/%?=~_|!:,.;]*[\-A-Za-z0-9+&@#\/%=~_|]))?)/gi)
|
||||
},
|
||||
NS: {
|
||||
CARBONS: 'urn:xmpp:carbons:2',
|
||||
FORWARD: 'urn:xmpp:forward:0'
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Parse a unix timestamp and return a formatted time string
|
||||
*
|
||||
* @memberOf jsxc
|
||||
* @param {Object} unixtime
|
||||
* @returns time of day and/or date
|
||||
*/
|
||||
getFormattedTime: function(unixtime) {
|
||||
var msgDate = new Date(parseInt(unixtime));
|
||||
var date = ('0' + msgDate.getDate()).slice(-2);
|
||||
var month = ('0' + (msgDate.getMonth() + 1)).slice(-2);
|
||||
var year = msgDate.getFullYear();
|
||||
var hours = ('0' + msgDate.getHours()).slice(-2);
|
||||
var minutes = ('0' + msgDate.getMinutes()).slice(-2);
|
||||
var dateNow = new Date(), time = hours + ':' + minutes;
|
||||
|
||||
// compare dates only
|
||||
dateNow.setHours(0, 0, 0, 0);
|
||||
msgDate.setHours(0, 0, 0, 0);
|
||||
|
||||
if (dateNow.getTime() !== msgDate.getTime()) {
|
||||
return date + '.' + month + '.' + year + ' ' + time;
|
||||
}
|
||||
return time;
|
||||
},
|
||||
|
||||
/**
|
||||
* Write debug message to console and to log.
|
||||
*
|
||||
@@ -183,7 +210,7 @@
|
||||
|
||||
if (options) {
|
||||
// override default options
|
||||
$.extend(jsxc.options, options);
|
||||
$.extend(true, jsxc.options, options);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -233,6 +260,10 @@
|
||||
return;
|
||||
}
|
||||
|
||||
if (jsxc.storage.getItem('debug') === true) {
|
||||
jsxc.options.otr.debug = true;
|
||||
}
|
||||
|
||||
// Register event listener for the storage event
|
||||
window.addEventListener('storage', jsxc.storage.onStorage, false);
|
||||
|
||||
@@ -284,7 +315,7 @@
|
||||
var settings = jsxc.prepareLogin();
|
||||
|
||||
if (settings !== false && (settings.xmpp.onlogin === "true" || settings.xmpp.onlogin === true)) {
|
||||
jsxc.triggeredFromForm = true;
|
||||
jsxc.options.loginForm.triggered = true;
|
||||
|
||||
jsxc.xmpp.login();
|
||||
|
||||
@@ -412,8 +443,12 @@
|
||||
// Sending keepalive signal
|
||||
jsxc.startKeepAlive();
|
||||
|
||||
// create or load DSA key and call _onMaster
|
||||
jsxc.otr.createDSA();
|
||||
if (jsxc.options.get('otr').enable) {
|
||||
// create or load DSA key and call _onMaster
|
||||
jsxc.otr.createDSA();
|
||||
} else {
|
||||
jsxc._onMaster();
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
@@ -453,6 +488,10 @@
|
||||
}
|
||||
}
|
||||
|
||||
$(document).on('connectionReady.jsxc', function() {
|
||||
jsxc.gui.updateAvatar($('#jsxc_avatar'), jsxc.storage.getItem('jid'), 'own');
|
||||
});
|
||||
|
||||
jsxc.xmpp.login();
|
||||
},
|
||||
|
||||
@@ -702,6 +741,27 @@
|
||||
return jsxc.l[k] || key.replace(/_/g, ' ');
|
||||
});
|
||||
},
|
||||
|
||||
/**
|
||||
* Executes the given function in jsxc namespace.
|
||||
*
|
||||
* @memberOf jsxc
|
||||
* @param {string} fnName Function name
|
||||
* @param {array} fnParams Function parameters
|
||||
* @returns Function return value
|
||||
*/
|
||||
exec: function(fnName, fnParams) {
|
||||
var fnList = fnName.split('.');
|
||||
var fn = jsxc[fnList[0]];
|
||||
var i;
|
||||
for (i = 1; i < fnList.length; i++) {
|
||||
fn = fn[fnList[i]];
|
||||
}
|
||||
|
||||
if (typeof fn === 'function') {
|
||||
return fn.apply(null, fnParams);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -722,7 +782,11 @@
|
||||
|
||||
/** OTR options */
|
||||
otr: {
|
||||
ERROR_START_AKE: true
|
||||
enable: true,
|
||||
ERROR_START_AKE: false,
|
||||
debug: false,
|
||||
SEND_WHITESPACE_TAG: true,
|
||||
WHITESPACE_START_AKE: true
|
||||
},
|
||||
|
||||
/** xmpp options */
|
||||
@@ -758,7 +822,19 @@
|
||||
/** manipulate JID from input element */
|
||||
preJid: function(jid) {
|
||||
return jid;
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* 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]
|
||||
* Do nothing, ask [String] Show auth fail dialog
|
||||
*/
|
||||
onAuthFail: 'submit'
|
||||
},
|
||||
|
||||
/** jquery object from logout element */
|
||||
@@ -829,9 +905,15 @@
|
||||
*
|
||||
* @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
|
||||
}
|
||||
};
|
||||
|
||||
@@ -885,6 +967,11 @@
|
||||
* @memberOf jsxc.gui
|
||||
*/
|
||||
init: function() {
|
||||
//Prevent duplicate windowList
|
||||
if ($('#jsxc_windowList').length > 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
$('body').append($(jsxc.gui.template.get('windowList')));
|
||||
|
||||
$(window).resize(jsxc.gui.updateWindowListSB);
|
||||
@@ -904,7 +991,9 @@
|
||||
|
||||
jsxc.gui.tooltip('#jsxc_windowList');
|
||||
|
||||
jsxc.gui.roster.init();
|
||||
if (!jsxc.el_exists('#jsxc_roster')) {
|
||||
jsxc.gui.roster.init();
|
||||
}
|
||||
|
||||
// prepare regexp for emotions
|
||||
$.each(jsxc.gui.emotions, function(i, val) {
|
||||
@@ -1029,7 +1118,7 @@
|
||||
var avatarSrc = jsxc.storage.getUserItem('avatar', aid);
|
||||
|
||||
var setAvatar = function(src) {
|
||||
if (src === 0) {
|
||||
if (src === 0 || src === '0') {
|
||||
jsxc.options.defaultAvatar.call(el, jid);
|
||||
return;
|
||||
}
|
||||
@@ -1053,13 +1142,18 @@
|
||||
|
||||
if (vCard.length === 0) {
|
||||
jsxc.debug('No photo provided');
|
||||
src = 0;
|
||||
src = '0';
|
||||
} else if (vCard.find('EXTVAL').length > 0) {
|
||||
src = vCard.find('EXTVAL').text();
|
||||
} else {
|
||||
var img = vCard.find('BINVAL').text();
|
||||
var type = vCard.find('TYPE').text();
|
||||
src = 'data:' + type + ';base64,' + img;
|
||||
}
|
||||
|
||||
// concat chunks
|
||||
src = src.replace(/[\t\r\n\f]/gi, '');
|
||||
|
||||
jsxc.storage.setUserItem('avatar', aid, src);
|
||||
setAvatar(src);
|
||||
}, Strophe.getBareJidFromJid(jid), function(msg) {
|
||||
@@ -1196,7 +1290,7 @@
|
||||
var settings = jsxc.prepareLogin();
|
||||
|
||||
jsxc.triggeredFromBox = true;
|
||||
jsxc.triggeredFromForm = false;
|
||||
jsxc.options.loginForm.triggered = false;
|
||||
|
||||
if (settings === false) {
|
||||
jsxc.gui.showAuthFail();
|
||||
@@ -1463,7 +1557,7 @@
|
||||
showAuthFail: function() {
|
||||
jsxc.gui.dialog.open(jsxc.gui.template.get('authFailDialog'));
|
||||
|
||||
if (jsxc.triggeredFromBox) {
|
||||
if (jsxc.options.loginForm.triggered !== false) {
|
||||
$('#jsxc_dialog .jsxc_cancel').hide();
|
||||
}
|
||||
|
||||
@@ -1654,7 +1748,17 @@
|
||||
var type = photo.find('TYPE').text();
|
||||
var src = 'data:' + type + ';base64,' + img;
|
||||
|
||||
$('#jsxc_dialog h3').before('<img class="jsxc_vCard" src="' + src + '" alt="avatar" />');
|
||||
if (photo.find('EXTVAL').length > 0) {
|
||||
src = photo.find('EXTVAL').text();
|
||||
}
|
||||
|
||||
// concat chunks
|
||||
src = src.replace(/[\t\r\n\f]/gi, '');
|
||||
|
||||
var img_el = $('<img class="jsxc_vCard" alt="avatar" />');
|
||||
img_el.attr('src', src);
|
||||
|
||||
$('#jsxc_dialog h3').before(img_el);
|
||||
}
|
||||
|
||||
if ($(stanza).find('vCard').length === 0 || ($(stanza).find('vcard > *').length === 1 && photo.length === 1)) {
|
||||
@@ -1728,6 +1832,10 @@
|
||||
|
||||
var err = jsxc.options.saveSettinsPermanent.call(this, data);
|
||||
|
||||
if (typeof self.attr('data-onsubmit') === 'string') {
|
||||
jsxc.exec(self.attr('data-onsubmit'), [ err ]);
|
||||
}
|
||||
|
||||
setTimeout(function() {
|
||||
self.find('input[type="submit"]').effect('highlight', {
|
||||
color: (err) ? 'green' : 'red'
|
||||
@@ -2037,10 +2145,6 @@
|
||||
$('#jsxc_presence > span').text($('#jsxc_presence > ul .jsxc_' + pres).text());
|
||||
jsxc.gui.updatePresence('own', pres);
|
||||
|
||||
$(document).on('cloaded.roster.jsxc', function() {
|
||||
jsxc.gui.updateAvatar($('#jsxc_avatar'), jsxc.storage.getItem('jid'), 'own');
|
||||
});
|
||||
|
||||
jsxc.gui.tooltip('#jsxc_roster');
|
||||
|
||||
jsxc.notice.load();
|
||||
@@ -2278,8 +2382,7 @@
|
||||
* Shows a text with link to a login box that no connection exists.
|
||||
*/
|
||||
noConnection: function() {
|
||||
$('#jsxc_roster .slimScrollDiv').remove();
|
||||
$('#jsxc_roster > .jsxc_bottom').remove();
|
||||
$('#jsxc_roster').addClass('jsxc_noConnection');
|
||||
|
||||
$('#jsxc_roster').append($('<p>' + jsxc.l.no_connection + '</p>').append(' <a>' + jsxc.l.relogin + '</a>').click(function() {
|
||||
jsxc.gui.showLoginBox();
|
||||
@@ -2748,8 +2851,11 @@
|
||||
* @param {String} direction 'in' message is received or 'out' message is
|
||||
* send
|
||||
* @param {String} msg Message to display
|
||||
* @param {boolean} encrypted Was this message encrypted? Default: false
|
||||
* @param {boolean} forwarded Was this message forwarded? Default: false
|
||||
* @param {integer} stamp Timestamp
|
||||
*/
|
||||
postMessage: function(bid, direction, msg) {
|
||||
postMessage: function(bid, direction, msg, encrypted, forwarded, stamp) {
|
||||
var data = jsxc.storage.getUserItem('buddy', bid);
|
||||
var html_msg = msg;
|
||||
|
||||
@@ -2759,12 +2865,12 @@
|
||||
|
||||
// exceptions:
|
||||
|
||||
if (direction === 'out' && data.msgstate === 2) {
|
||||
if (direction === 'out' && data.msgstate === OTR.CONST.MSGSTATE_FINISHED && forwarded !== true) {
|
||||
direction = 'sys';
|
||||
msg = jsxc.l.your_message_wasnt_send_please_end_your_private_conversation;
|
||||
}
|
||||
|
||||
if (direction === 'in' && data.msgstate === 2) {
|
||||
if (direction === 'in' && data.msgstate === OTR.CONST.MSGSTATE_FINISHED) {
|
||||
direction = 'sys';
|
||||
msg = jsxc.l.unencrypted_message_received + ' ' + msg;
|
||||
}
|
||||
@@ -2774,13 +2880,14 @@
|
||||
msg = jsxc.l.your_message_wasnt_send_because_you_have_no_valid_subscription;
|
||||
}
|
||||
|
||||
var post = jsxc.storage.saveMessage(bid, direction, msg);
|
||||
encrypted = encrypted || data.msgstate === OTR.CONST.MSGSTATE_ENCRYPTED;
|
||||
var post = jsxc.storage.saveMessage(bid, direction, msg, encrypted, forwarded, stamp);
|
||||
|
||||
if (direction === 'in') {
|
||||
$(document).trigger('postmessagein.jsxc', [ bid, html_msg ]);
|
||||
}
|
||||
|
||||
if (direction === 'out' && jsxc.master) {
|
||||
if (direction === 'out' && jsxc.master && forwarded !== true) {
|
||||
jsxc.xmpp.sendMessage(bid, html_msg, post.uid);
|
||||
}
|
||||
|
||||
@@ -2804,7 +2911,6 @@
|
||||
var msg = post.msg;
|
||||
var direction = post.direction;
|
||||
var uid = post.uid;
|
||||
var received = post.received || false;
|
||||
|
||||
if (win.find('.jsxc_textinput').is(':not(:focus)') && jsxc.restoreCompleted && direction === 'in' && !restore) {
|
||||
jsxc.gui.window.highlight(bid);
|
||||
@@ -2843,17 +2949,29 @@
|
||||
});
|
||||
});
|
||||
|
||||
var msgDiv = $("<div>");
|
||||
var msgDiv = $("<div>"), msgTsDiv = $("<div>");
|
||||
msgDiv.addClass('jsxc_chatmessage jsxc_' + direction);
|
||||
msgDiv.attr('id', uid);
|
||||
msgDiv.html(msg);
|
||||
msgDiv.html('<div>' + msg + '</div>');
|
||||
msgTsDiv.addClass('jsxc_timestamp');
|
||||
msgTsDiv.html(jsxc.getFormattedTime(post.stamp));
|
||||
|
||||
if (received) {
|
||||
if (post.received || false) {
|
||||
msgDiv.addClass('jsxc_received');
|
||||
}
|
||||
|
||||
if (post.forwarded) {
|
||||
msgDiv.addClass('jsxc_forwarded');
|
||||
}
|
||||
|
||||
if (post.encrypted) {
|
||||
msgDiv.addClass('jsxc_encrypted');
|
||||
}
|
||||
|
||||
if (direction === 'sys') {
|
||||
jsxc.gui.window.get(bid).find('.jsxc_textarea').append('<div style="clear:both"/>');
|
||||
} else if (typeof post.stamp !== 'undefined') {
|
||||
msgDiv.append(msgTsDiv);
|
||||
}
|
||||
|
||||
win.find('.jsxc_textarea').append(msgDiv);
|
||||
@@ -3171,6 +3289,14 @@
|
||||
<label for="priority-dnd">%%dnd%%</label><input type="number" value="0" id="priority-dnd" min="-128" max="127" step="1" required="required"/><br />\
|
||||
<input type="submit" value="%%Save%%"/>\
|
||||
</fieldset>\
|
||||
</form>\
|
||||
<p></p>\
|
||||
<form data-onsubmit="xmpp.carbons.refresh">\
|
||||
<fieldset class="jsxc_fieldsetCarbons jsxc_fieldset">\
|
||||
<legend>%%Carbon copy%%</legend>\
|
||||
<label for="carbons-enable">%%Enable%%</label><input type="checkbox" id="carbons-enable" /><br />\
|
||||
<input type="submit" value="%%Save%%"/>\
|
||||
</fieldset>\
|
||||
</form>'
|
||||
};
|
||||
|
||||
@@ -3185,13 +3311,50 @@
|
||||
/**
|
||||
* Create new connection or attach to old
|
||||
*
|
||||
* @name login
|
||||
* @memberOf jsxc.xmpp
|
||||
*/
|
||||
/**
|
||||
* Create new connection with given parameters.
|
||||
*
|
||||
* @name login^2
|
||||
* @param {string} jid
|
||||
* @param {string} password
|
||||
* @memberOf jsxc.xmpp
|
||||
*/
|
||||
/**
|
||||
* Attach connection with given parameters.
|
||||
*
|
||||
* @name login^3
|
||||
* @param {string} jid
|
||||
* @param {string} sid
|
||||
* @param {string} rid
|
||||
* @memberOf jsxc.xmpp
|
||||
*/
|
||||
login: function() {
|
||||
|
||||
var sid = jsxc.storage.getItem('sid');
|
||||
var rid = jsxc.storage.getItem('rid');
|
||||
var jid = jsxc.storage.getItem('jid');
|
||||
if (jsxc.xmpp.conn && jsxc.xmpp.conn.connected) {
|
||||
return;
|
||||
}
|
||||
|
||||
var jid = null, password = null, sid = null, rid = null;
|
||||
|
||||
switch (arguments.length) {
|
||||
case 2:
|
||||
jid = arguments[0];
|
||||
password = arguments[1];
|
||||
break;
|
||||
case 3:
|
||||
jid = arguments[0];
|
||||
sid = arguments[1];
|
||||
rid = arguments[2];
|
||||
break;
|
||||
default:
|
||||
jid = jsxc.storage.getItem('jid');
|
||||
sid = jsxc.storage.getItem('sid');
|
||||
rid = jsxc.storage.getItem('rid');
|
||||
}
|
||||
|
||||
var url = jsxc.options.get('xmpp').url;
|
||||
|
||||
// Register eventlistener
|
||||
@@ -3199,6 +3362,8 @@
|
||||
$(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');
|
||||
|
||||
@@ -3239,10 +3404,10 @@
|
||||
$(document).trigger('disconnected.jsxc');
|
||||
break;
|
||||
case Strophe.Status.CONNFAIL:
|
||||
jsxc.xmpp.onConnfail(condition);
|
||||
$(document).trigger('connfail.jsxc');
|
||||
break;
|
||||
case Strophe.Status.AUTHFAIL:
|
||||
jsxc.gui.showAuthFail();
|
||||
$(document).trigger('authfail.jsxc');
|
||||
break;
|
||||
}
|
||||
};
|
||||
@@ -3258,7 +3423,23 @@
|
||||
} else {
|
||||
jsxc.debug('New connection');
|
||||
|
||||
jsxc.xmpp.conn.connect(jsxc.options.xmpp.jid, jsxc.options.xmpp.password, callback);
|
||||
if (jsxc.xmpp.conn.caps) {
|
||||
// Add system handler, because user handler isn't called before
|
||||
// we are authenticated
|
||||
jsxc.xmpp.conn._addSysHandler(function(stanza) {
|
||||
var from = jsxc.xmpp.conn.domain, c = stanza.querySelector('c'), ver = c.getAttribute('ver'), node = c.getAttribute('node');
|
||||
|
||||
var _jidNodeIndex = JSON.parse(localStorage.getItem('strophe.caps._jidNodeIndex')) || {};
|
||||
|
||||
jsxc.xmpp.conn.caps._jidVerIndex[from] = ver;
|
||||
_jidNodeIndex[from] = node;
|
||||
|
||||
localStorage.setItem('strophe.caps._jidVerIndex', JSON.stringify(jsxc.xmpp.conn.caps._jidVerIndex));
|
||||
localStorage.setItem('strophe.caps._jidNodeIndex', JSON.stringify(_jidNodeIndex));
|
||||
}, Strophe.NS.CAPS);
|
||||
}
|
||||
|
||||
jsxc.xmpp.conn.connect(jid || jsxc.options.xmpp.jid, password || jsxc.options.xmpp.password, callback);
|
||||
}
|
||||
},
|
||||
|
||||
@@ -3293,11 +3474,11 @@
|
||||
jsxc.triggeredFromElement = true;
|
||||
|
||||
// restore all otr objects
|
||||
$.each(jsxc.storage.getUserItem('otrlist'), function(i, val) {
|
||||
$.each(jsxc.storage.getUserItem('otrlist') || {}, function(i, val) {
|
||||
jsxc.otr.create(val);
|
||||
});
|
||||
|
||||
var numOtr = Object.keys(jsxc.otr.objects).length + 1;
|
||||
var numOtr = Object.keys(jsxc.otr.objects || {}).length + 1;
|
||||
var disReady = function() {
|
||||
if (--numOtr <= 0) {
|
||||
jsxc.xmpp.conn.flush();
|
||||
@@ -3309,7 +3490,7 @@
|
||||
};
|
||||
|
||||
// end all private conversations
|
||||
$.each(jsxc.otr.objects, function(key, obj) {
|
||||
$.each(jsxc.otr.objects || {}, function(key, obj) {
|
||||
if (obj.msgstate === OTR.CONST.MSGSTATE_ENCRYPTED) {
|
||||
obj.endOtr.call(obj, function() {
|
||||
obj.init.call(obj);
|
||||
@@ -3353,20 +3534,25 @@
|
||||
jsxc.storage.removeUserItem('avatar', 'own');
|
||||
jsxc.storage.removeUserItem('otrlist');
|
||||
|
||||
// submit login form
|
||||
if (jsxc.triggeredFromForm) {
|
||||
// Trigger normal submit
|
||||
jsxc.submitLoginForm();
|
||||
return;
|
||||
if (jsxc.options.loginForm.triggered) {
|
||||
switch (jsxc.options.loginForm.onConnected || 'submit') {
|
||||
case 'submit':
|
||||
jsxc.submitLoginForm();
|
||||
/* falls through */
|
||||
case false:
|
||||
jsxc.xmpp.connectionReady();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// reload page after login from login box
|
||||
if (jsxc.triggeredFromBox) {
|
||||
window.location.reload();
|
||||
return;
|
||||
}
|
||||
// start chat
|
||||
|
||||
jsxc.xmpp.connectionReady();
|
||||
jsxc.gui.init();
|
||||
$('#jsxc_roster').removeClass('jsxc_noConnection');
|
||||
jsxc.onMaster();
|
||||
jsxc.xmpp.conn.resume();
|
||||
jsxc.gui.dialog.close();
|
||||
$(document).trigger('attached.jsxc');
|
||||
},
|
||||
|
||||
/**
|
||||
@@ -3381,6 +3567,37 @@
|
||||
jsxc.xmpp.conn.addHandler(jsxc.xmpp.onReceived, null, 'message');
|
||||
jsxc.xmpp.conn.addHandler(jsxc.xmpp.onPresence, null, 'presence');
|
||||
|
||||
var caps = jsxc.xmpp.conn.caps;
|
||||
var domain = jsxc.xmpp.conn.domain;
|
||||
|
||||
if (caps && jsxc.options.get('carbons').enable) {
|
||||
var conditionalEnable = function() {
|
||||
if (jsxc.xmpp.conn.caps.hasFeatureByJid(domain, jsxc.CONST.NS.CARBONS)) {
|
||||
jsxc.xmpp.carbons.enable();
|
||||
}
|
||||
};
|
||||
|
||||
if (typeof caps._knownCapabilities[caps._jidVerIndex[domain]] === 'undefined') {
|
||||
var _jidNodeIndex = JSON.parse(localStorage.getItem('strophe.caps._jidNodeIndex')) || {};
|
||||
|
||||
$(document).on('caps.strophe', function onCaps(ev, from) {
|
||||
|
||||
if (from !== domain) {
|
||||
return;
|
||||
}
|
||||
|
||||
conditionalEnable();
|
||||
|
||||
$(document).off('caps.strophe', onCaps);
|
||||
});
|
||||
|
||||
caps._requestCapabilities(jsxc.xmpp.conn.domain, _jidNodeIndex[domain], caps._jidVerIndex[domain]);
|
||||
} else {
|
||||
// We know server caps
|
||||
conditionalEnable();
|
||||
}
|
||||
}
|
||||
|
||||
// Only load roaster if necessary
|
||||
if (!jsxc.restore || !jsxc.storage.getUserItem('buddylist')) {
|
||||
// in order to not overide existing presence information, we send
|
||||
@@ -3462,6 +3679,13 @@
|
||||
jsxc.storage.removeUserItem('avatar', 'own');
|
||||
jsxc.storage.removeUserItem('otrlist');
|
||||
|
||||
$(document).off('connected.jsxc', jsxc.xmpp.connected);
|
||||
$(document).off('attached.jsxc', jsxc.xmpp.attached);
|
||||
$(document).off('disconnected.jsxc', jsxc.xmpp.disconnected);
|
||||
$(document).off('ridChange', jsxc.xmpp.onRidChange);
|
||||
$(document).off('connfail.jsxc', jsxc.xmpp.onConnfail);
|
||||
$(document).off('authfail.jsxc', jsxc.xmpp.onAuthFail);
|
||||
|
||||
jsxc.xmpp.conn = null;
|
||||
|
||||
$('#jsxc_windowList').remove();
|
||||
@@ -3485,14 +3709,32 @@
|
||||
* @param {String} condition information why we lost the connection
|
||||
* @private
|
||||
*/
|
||||
onConnfail: function(condition) {
|
||||
onConnfail: function(ev, condition) {
|
||||
jsxc.debug('XMPP connection failed: ' + condition);
|
||||
|
||||
if (jsxc.triggeredFromForm) {
|
||||
if (jsxc.options.loginForm.triggered) {
|
||||
jsxc.submitLoginForm();
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Triggered on auth fail.
|
||||
*
|
||||
* @private
|
||||
*/
|
||||
onAuthFail: function() {
|
||||
if (jsxc.options.loginForm.triggered) {
|
||||
switch (jsxc.options.loginForm.onAuthFail || 'ask') {
|
||||
case 'ask':
|
||||
jsxc.gui.showAuthFail();
|
||||
break;
|
||||
case 'submit':
|
||||
jsxc.submitLoginForm();
|
||||
break;
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Triggered on initial roster load
|
||||
*
|
||||
@@ -3640,8 +3882,6 @@
|
||||
var ptype = $(presence).attr('type');
|
||||
var from = $(presence).attr('from');
|
||||
var jid = Strophe.getBareJidFromJid(from).toLowerCase();
|
||||
var to = $(presence).attr('to');
|
||||
to = (to) ? Strophe.getBareJidFromJid(to).toLowerCase() : jid;
|
||||
var r = Strophe.getResourceFromJid(from);
|
||||
var bid = jsxc.jidToBid(jid);
|
||||
var data = jsxc.storage.getUserItem('buddy', bid);
|
||||
@@ -3649,7 +3889,7 @@
|
||||
var status = null;
|
||||
var xVCard = $(presence).find('x[xmlns="vcard-temp:x:update"]');
|
||||
|
||||
if (jid === to) {
|
||||
if (jid === Strophe.getBareJidFromJid(jsxc.storage.getItem("jid"))) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -3743,28 +3983,66 @@
|
||||
* @returns {Boolean}
|
||||
* @private
|
||||
*/
|
||||
onMessage: function(message) {
|
||||
/*
|
||||
* <message xmlns='jabber:client' type='chat' to='' id='' from=''>
|
||||
* <body>...</body> <active
|
||||
* xmlns='http://jabber.org/protocol/chatstates'/> </message>
|
||||
*/
|
||||
onMessage: function(stanza) {
|
||||
|
||||
jsxc.debug('Incoming message', message);
|
||||
var forwarded = $(stanza).find('forwarded[xmlns="' + jsxc.CONST.NS.FORWARD + '"]');
|
||||
var message, carbon;
|
||||
|
||||
if (forwarded.length > 0) {
|
||||
message = forwarded.find('> message');
|
||||
forwarded = true;
|
||||
carbon = $(stanza).find('> [xmlns="' + jsxc.CONST.NS.CARBONS + '"]');
|
||||
|
||||
if (carbon.length === 0) {
|
||||
carbon = false;
|
||||
}
|
||||
|
||||
jsxc.debug('Incoming forwarded message', message);
|
||||
} else {
|
||||
message = stanza;
|
||||
forwarded = false;
|
||||
carbon = false;
|
||||
|
||||
jsxc.debug('Incoming message', message);
|
||||
}
|
||||
|
||||
var body = $(message).find('body:first').text();
|
||||
|
||||
if (!body || (body.match(/\?OTR/i) && forwarded)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
var type = $(message).attr('type');
|
||||
var from = $(message).attr('from');
|
||||
var mid = $(message).attr('id');
|
||||
var jid = Strophe.getBareJidFromJid(from);
|
||||
var bid = jsxc.jidToBid(jid);
|
||||
var data = jsxc.storage.getUserItem('buddy', bid);
|
||||
var body = $(message).find('body:first').text();
|
||||
var request = $(message).find("request[xmlns='urn:xmpp:receipts']");
|
||||
var bid;
|
||||
|
||||
var delay = $(message).find('delay[xmlns="urn:xmpp:delay"]');
|
||||
|
||||
var stamp = (delay.length > 0) ? new Date(delay.attr('stamp')) : new Date();
|
||||
stamp = stamp.getTime();
|
||||
|
||||
if (carbon) {
|
||||
var direction = (carbon.prop("tagName") === 'sent') ? 'out' : 'in';
|
||||
bid = jsxc.jidToBid((direction === 'out') ? $(message).attr('to') : from);
|
||||
|
||||
jsxc.gui.window.postMessage(bid, direction, body, false, forwarded, stamp);
|
||||
|
||||
if (!body) {
|
||||
return true;
|
||||
|
||||
} else if (forwarded) {
|
||||
// Someone forwarded a message to us
|
||||
|
||||
body = from + jsxc.translate(' %%to%% ') + $(stanza).attr('to') + '"' + body + '"';
|
||||
|
||||
from = $(stanza).attr('from');
|
||||
}
|
||||
|
||||
var jid = Strophe.getBareJidFromJid(from);
|
||||
bid = jsxc.jidToBid(jid);
|
||||
var data = jsxc.storage.getUserItem('buddy', bid);
|
||||
var request = $(message).find("request[xmlns='urn:xmpp:receipts']");
|
||||
|
||||
if (data === null) {
|
||||
// jid not in roster
|
||||
|
||||
@@ -3777,7 +4055,7 @@
|
||||
var msg = jsxc.removeHTML(body);
|
||||
msg = jsxc.escapeHTML(msg);
|
||||
|
||||
jsxc.storage.saveMessage(bid, 'in', msg);
|
||||
jsxc.storage.saveMessage(bid, 'in', msg, false, forwarded, stamp);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -3799,7 +4077,7 @@
|
||||
jsxc.otr.create(bid);
|
||||
}
|
||||
|
||||
if (mid !== null && request.length && data !== null && (data.sub === 'both' || data.sub === 'from') && type === 'chat') {
|
||||
if (!forwarded && mid !== null && request.length && data !== null && (data.sub === 'both' || data.sub === 'from') && type === 'chat') {
|
||||
// Send received according to XEP-0184
|
||||
jsxc.xmpp.conn.send($msg({
|
||||
to: from
|
||||
@@ -3810,9 +4088,12 @@
|
||||
}
|
||||
|
||||
if (jsxc.otr.objects.hasOwnProperty(bid)) {
|
||||
jsxc.otr.objects[bid].receiveMsg(body);
|
||||
jsxc.otr.objects[bid].receiveMsg(body, {
|
||||
stamp: stamp,
|
||||
forwarded: forwarded
|
||||
});
|
||||
} else {
|
||||
jsxc.gui.window.postMessage(bid, 'in', body);
|
||||
jsxc.gui.window.postMessage(bid, 'in', body, false, forwarded, stamp);
|
||||
}
|
||||
|
||||
// preserve handler
|
||||
@@ -3971,6 +4252,12 @@
|
||||
id: uid
|
||||
}).c('body').t(msg);
|
||||
|
||||
if (jsxc.xmpp.carbons.enabled && msg.match(/^\?OTR/)) {
|
||||
xmlMsg.up().c("private", {
|
||||
xmlns: jsxc.CONST.NS.CARBONS
|
||||
});
|
||||
}
|
||||
|
||||
if (type === 'chat' && (isBar || jsxc.xmpp.conn.caps.hasFeatureByJid(jid, Strophe.NS.RECEIPTS))) {
|
||||
// Add request according to XEP-0184
|
||||
xmlMsg.up().c('request', {
|
||||
@@ -4028,6 +4315,85 @@
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Handle carbons (XEP-0280);
|
||||
*
|
||||
* @namespace jsxc.xmpp.carbons
|
||||
*/
|
||||
jsxc.xmpp.carbons = {
|
||||
enabled: false,
|
||||
|
||||
/**
|
||||
* Enable carbons.
|
||||
*
|
||||
* @memberOf jsxc.xmpp.carbons
|
||||
* @param cb callback
|
||||
*/
|
||||
enable: function(cb) {
|
||||
var iq = $iq({
|
||||
type: 'set'
|
||||
}).c('enable', {
|
||||
xmlns: jsxc.CONST.NS.CARBONS
|
||||
});
|
||||
|
||||
jsxc.xmpp.conn.sendIQ(iq, function() {
|
||||
jsxc.xmpp.carbons.enabled = true;
|
||||
|
||||
jsxc.debug('Carbons enabled');
|
||||
|
||||
if (cb) {
|
||||
cb.call(this);
|
||||
}
|
||||
}, function(stanza) {
|
||||
jsxc.warn('Could not enable carbons', stanza);
|
||||
});
|
||||
},
|
||||
|
||||
/**
|
||||
* Disable carbons.
|
||||
*
|
||||
* @memberOf jsxc.xmpp.carbons
|
||||
* @param cb callback
|
||||
*/
|
||||
disable: function(cb) {
|
||||
var iq = $iq({
|
||||
type: 'set'
|
||||
}).c('disable', {
|
||||
xmlns: jsxc.CONST.NS.CARBONS
|
||||
});
|
||||
|
||||
jsxc.xmpp.conn.sendIQ(iq, function() {
|
||||
jsxc.xmpp.carbons.enabled = false;
|
||||
|
||||
jsxc.debug('Carbons disabled');
|
||||
|
||||
if (cb) {
|
||||
cb.call(this);
|
||||
}
|
||||
}, function(stanza) {
|
||||
jsxc.warn('Could not disable carbons', stanza);
|
||||
});
|
||||
},
|
||||
|
||||
/**
|
||||
* Enable/Disable carbons depending on options key.
|
||||
*
|
||||
* @memberOf jsxc.xmpp.carbons
|
||||
* @param err error message
|
||||
*/
|
||||
refresh: function(err) {
|
||||
if (err === false) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (jsxc.options.get('carbons').enable) {
|
||||
return jsxc.xmpp.carbons.enable();
|
||||
}
|
||||
|
||||
return jsxc.xmpp.carbons.disable();
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Handle long-live data
|
||||
*
|
||||
@@ -4567,9 +4933,11 @@
|
||||
* @param bid
|
||||
* @param direction
|
||||
* @param msg
|
||||
* @param encrypted
|
||||
* @param forwarded
|
||||
* @return post
|
||||
*/
|
||||
saveMessage: function(bid, direction, msg) {
|
||||
saveMessage: function(bid, direction, msg, encrypted, forwarded, stamp) {
|
||||
var chat = jsxc.storage.getUserItem('chat', bid) || [];
|
||||
|
||||
var uid = new Date().getTime() + ':msg';
|
||||
@@ -4582,7 +4950,10 @@
|
||||
direction: direction,
|
||||
msg: msg,
|
||||
uid: uid.replace(/:/, '-'),
|
||||
received: false
|
||||
received: false,
|
||||
encrypted: encrypted || false,
|
||||
forwarded: forwarded || false,
|
||||
stamp: stamp || new Date().getTime()
|
||||
};
|
||||
|
||||
chat.unshift(post);
|
||||
@@ -4636,20 +5007,24 @@
|
||||
* Handler for otr receive event
|
||||
*
|
||||
* @memberOf jsxc.otr
|
||||
* @param {string} bid
|
||||
* @param {string} msg received message
|
||||
* @param {string} encrypted True, if msg was encrypted.
|
||||
* @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(bid, msg, encrypted) {
|
||||
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 && !encrypted) {
|
||||
jsxc.gui.window.postMessage(bid, 'sys', jsxc.translate('%%Received an unencrypted message.%% [') + msg + ']');
|
||||
if (jsxc.otr.objects[bid].msgstate !== OTR.CONST.MSGSTATE_PLAINTEXT && !d.encrypted) {
|
||||
jsxc.gui.window.postMessage(bid, 'sys', jsxc.translate('%%Received an unencrypted message.%% [') + d.msg + ']', d.encrypted, d.forwarded, d.stamp);
|
||||
} else {
|
||||
jsxc.gui.window.postMessage(bid, 'in', msg);
|
||||
jsxc.gui.window.postMessage(bid, 'in', d.msg, d.encrypted, d.forwarded, d.stamp);
|
||||
}
|
||||
},
|
||||
|
||||
@@ -4784,8 +5159,14 @@
|
||||
});
|
||||
|
||||
// Receive message
|
||||
jsxc.otr.objects[bid].on('ui', function(msg, encrypted) {
|
||||
jsxc.otr.receiveMessage(bid, msg, encrypted === true);
|
||||
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
|
||||
@@ -5376,16 +5757,7 @@
|
||||
notice.click(function() {
|
||||
jsxc.notice.remove(nid);
|
||||
|
||||
var fnList = fnName.split('.');
|
||||
var fn = jsxc[fnList[0]];
|
||||
var i;
|
||||
for (i = 1; i < fnList.length; i++) {
|
||||
fn = fn[fnList[i]];
|
||||
}
|
||||
|
||||
if (typeof fn === 'function') {
|
||||
fn.apply(null, fnParams);
|
||||
}
|
||||
jsxc.exec(fnName, fnParams);
|
||||
|
||||
return false;
|
||||
});
|
||||
@@ -5893,13 +6265,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></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.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>
|
||||
</nav>
|
||||
|
||||
<br clear="both">
|
||||
|
||||
<footer>
|
||||
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Thu Nov 06 2014 13:24:26 GMT+0100 (CET)
|
||||
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)
|
||||
</footer>
|
||||
|
||||
<script> prettyPrint(); </script>
|
||||
|
||||
@@ -302,6 +302,11 @@ jsxc.gui.template.videoWindow = '<div class="jsxc_webrtc">\
|
||||
jsxc.debug('Update icon', bid);
|
||||
|
||||
var self = jsxc.webrtc;
|
||||
|
||||
if (bid === jsxc.jidToBid(self.conn.jid)) {
|
||||
return;
|
||||
}
|
||||
|
||||
var win = jsxc.gui.window.get(bid);
|
||||
var jid = win.data('jid') || jsxc.storage.getUserItem('buddy', bid).jid;
|
||||
|
||||
@@ -1073,13 +1078,13 @@ jsxc.gui.template.videoWindow = '<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></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.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>
|
||||
</nav>
|
||||
|
||||
<br clear="both">
|
||||
|
||||
<footer>
|
||||
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Thu Nov 06 2014 13:24:26 GMT+0100 (CET)
|
||||
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)
|
||||
</footer>
|
||||
|
||||
<script> prettyPrint(); </script>
|
||||
|
||||
@@ -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#line5052">line 5052</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line5433">line 5433</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#line5060">line 5060</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line5441">line 5441</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#line5218">line 5218</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line5599">line 5599</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
@@ -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#line5130">line 5130</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line5511">line 5511</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#line5067">line 5067</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line5448">line 5448</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#line5277">line 5277</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line5658">line 5658</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
@@ -702,7 +702,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#line5094">line 5094</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line5475">line 5475</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
@@ -865,7 +865,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#line5230">line 5230</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line5611">line 5611</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
@@ -935,7 +935,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#line5174">line 5174</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line5555">line 5555</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
@@ -1004,7 +1004,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#line5199">line 5199</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line5580">line 5580</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
@@ -1073,7 +1073,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#line5261">line 5261</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line5642">line 5642</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
@@ -1191,7 +1191,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#line5292">line 5292</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line5673">line 5673</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
@@ -1232,13 +1232,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></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.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>
|
||||
</nav>
|
||||
|
||||
<br clear="both">
|
||||
|
||||
<footer>
|
||||
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Thu Nov 06 2014 13:24:26 GMT+0100 (CET)
|
||||
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)
|
||||
</footer>
|
||||
|
||||
<script> prettyPrint(); </script>
|
||||
|
||||
+50
-28
@@ -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#line680">line 680</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line740">line 740</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#line688">line 688</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line748">line 748</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#line747">line 747</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line823">line 823</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#line694">line 694</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line754">line 754</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#line744">line 744</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line820">line 820</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#line773">line 773</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line849">line 849</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#line721">line 721</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line785">line 785</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#line762">line 762</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line838">line 838</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#line738">line 738</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line814">line 814</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#line776">line 776</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line852">line 852</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#line753">line 753</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line829">line 829</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#line741">line 741</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line817">line 817</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#line697">line 697</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line757">line 757</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#line756">line 756</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line832">line 832</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#line712">line 712</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line776">line 776</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#line759">line 759</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line835">line 835</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#line750">line 750</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line826">line 826</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#line691">line 691</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line751">line 751</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#line702">line 702</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line766">line 766</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#line784">line 784</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line860">line 860</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#line768">line 768</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line844">line 844</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#line168">line 168</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line195">line 195</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
@@ -1490,7 +1490,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#line796">line 796</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line872">line 872</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
@@ -1540,7 +1540,7 @@ connection is found.
|
||||
|
||||
|
||||
<dt>
|
||||
<h4 class="name" id="saveSettinsPermanent"><span class="type-signature"><static> </span>saveSettinsPermanent<span class="signature">(data)</span><span class="type-signature"></span></h4>
|
||||
<h4 class="name" id="saveSettinsPermanent"><span class="type-signature"><static> </span>saveSettinsPermanent<span class="signature">(data)</span><span class="type-signature"> → {boolean}</span></h4>
|
||||
|
||||
|
||||
</dt>
|
||||
@@ -1624,7 +1624,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#line806">line 806</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line883">line 883</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
@@ -1645,6 +1645,28 @@ connection is found.
|
||||
|
||||
|
||||
|
||||
<h5>Returns:</h5>
|
||||
|
||||
|
||||
<div class="param-desc">
|
||||
false if function failes
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<dl>
|
||||
<dt>
|
||||
Type
|
||||
</dt>
|
||||
<dd>
|
||||
|
||||
<span class="param-type">boolean</span>
|
||||
|
||||
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
</dd>
|
||||
@@ -1764,7 +1786,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#line180">line 180</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line207">line 207</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
@@ -1805,13 +1827,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></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.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>
|
||||
</nav>
|
||||
|
||||
<br clear="both">
|
||||
|
||||
<footer>
|
||||
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Thu Nov 06 2014 13:24:26 GMT+0100 (CET)
|
||||
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)
|
||||
</footer>
|
||||
|
||||
<script> prettyPrint(); </script>
|
||||
|
||||
+113
-19
@@ -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#line4600">line 4600</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line4971">line 4971</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#line4605">line 4605</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line4976">line 4976</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#line5017">line 5017</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line5398">line 5398</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#line4880">line 4880</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line5261">line 5261</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#line4649">line 4649</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line5024">line 5024</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#line4947">line 4947</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line5328">line 5328</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#line5031">line 5031</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line5412">line 5412</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#line4849">line 4849</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line5230">line 5230</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#line4864">line 4864</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line5245">line 5245</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#line4792">line 4792</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line5173">line 5173</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
@@ -1147,7 +1147,7 @@
|
||||
|
||||
|
||||
<dt>
|
||||
<h4 class="name" id="receiveMessage"><span class="type-signature"><static> </span>receiveMessage<span class="signature">(bid, msg, encrypted)</span><span class="type-signature"></span></h4>
|
||||
<h4 class="name" id="receiveMessage"><span class="type-signature"><static> </span>receiveMessage<span class="signature">(d)</span><span class="type-signature"></span></h4>
|
||||
|
||||
|
||||
</dt>
|
||||
@@ -1180,6 +1180,48 @@
|
||||
|
||||
|
||||
|
||||
<th class="last">Description</th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
<tbody>
|
||||
|
||||
|
||||
<tr>
|
||||
|
||||
<td class="name"><code>d</code></td>
|
||||
|
||||
|
||||
<td class="type">
|
||||
|
||||
|
||||
<span class="param-type">Object</span>
|
||||
|
||||
|
||||
|
||||
</td>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<td class="description last">
|
||||
<h6>Properties</h6>
|
||||
|
||||
|
||||
<table class="params">
|
||||
<thead>
|
||||
<tr>
|
||||
|
||||
<th>Name</th>
|
||||
|
||||
|
||||
<th>Type</th>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<th class="last">Description</th>
|
||||
</tr>
|
||||
</thead>
|
||||
@@ -1241,7 +1283,7 @@
|
||||
<td class="type">
|
||||
|
||||
|
||||
<span class="param-type">string</span>
|
||||
<span class="param-type">boolean</span>
|
||||
|
||||
|
||||
|
||||
@@ -1255,6 +1297,58 @@
|
||||
</tr>
|
||||
|
||||
|
||||
|
||||
<tr>
|
||||
|
||||
<td class="name"><code>forwarded</code></td>
|
||||
|
||||
|
||||
<td class="type">
|
||||
|
||||
|
||||
<span class="param-type">boolean</span>
|
||||
|
||||
|
||||
|
||||
</td>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<td class="description last"></td>
|
||||
</tr>
|
||||
|
||||
|
||||
|
||||
<tr>
|
||||
|
||||
<td class="name"><code>stamp</code></td>
|
||||
|
||||
|
||||
<td class="type">
|
||||
|
||||
|
||||
<span class="param-type">string</span>
|
||||
|
||||
|
||||
|
||||
</td>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<td class="description last">timestamp</td>
|
||||
</tr>
|
||||
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
@@ -1282,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#line4616">line 4616</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line4990">line 4990</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
@@ -1399,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#line4912">line 4912</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line5293">line 5293</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
@@ -1539,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#line4635">line 4635</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line5010">line 5010</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
@@ -1730,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#line4823">line 4823</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line5204">line 5204</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
@@ -1865,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#line4835">line 4835</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line5216">line 5216</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
@@ -1924,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></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.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>
|
||||
</nav>
|
||||
|
||||
<br clear="both">
|
||||
|
||||
<footer>
|
||||
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Thu Nov 06 2014 13:24:26 GMT+0100 (CET)
|
||||
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)
|
||||
</footer>
|
||||
|
||||
<script> prettyPrint(); </script>
|
||||
|
||||
+54
-18
@@ -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#line4004">line 4004</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line4370">line 4370</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#line4015">line 4015</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line4381">line 4381</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#line4083">line 4083</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line4449">line 4449</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#line4024">line 4024</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line4390">line 4390</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#line4100">line 4100</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line4466">line 4466</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#line4212">line 4212</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line4578">line 4578</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#line4262">line 4262</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line4628">line 4628</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#line4225">line 4225</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line4591">line 4591</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#line4119">line 4119</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line4485">line 4485</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#line4137">line 4137</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line4503">line 4503</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#line4575">line 4575</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line4946">line 4946</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
@@ -1514,7 +1514,7 @@
|
||||
|
||||
|
||||
<dt>
|
||||
<h4 class="name" id="saveMessage"><span class="type-signature"><static> </span>saveMessage<span class="signature">(bid, direction, msg)</span><span class="type-signature"></span></h4>
|
||||
<h4 class="name" id="saveMessage"><span class="type-signature"><static> </span>saveMessage<span class="signature">(bid, direction, msg, encrypted, forwarded)</span><span class="type-signature"></span></h4>
|
||||
|
||||
|
||||
</dt>
|
||||
@@ -1603,6 +1603,42 @@
|
||||
|
||||
|
||||
|
||||
<td class="description last"></td>
|
||||
</tr>
|
||||
|
||||
|
||||
|
||||
<tr>
|
||||
|
||||
<td class="name"><code>encrypted</code></td>
|
||||
|
||||
|
||||
<td class="type">
|
||||
|
||||
</td>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<td class="description last"></td>
|
||||
</tr>
|
||||
|
||||
|
||||
|
||||
<tr>
|
||||
|
||||
<td class="name"><code>forwarded</code></td>
|
||||
|
||||
|
||||
<td class="type">
|
||||
|
||||
</td>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<td class="description last"></td>
|
||||
</tr>
|
||||
|
||||
@@ -1634,7 +1670,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#line4545">line 4545</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line4913">line 4913</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
@@ -1807,7 +1843,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#line4038">line 4038</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line4404">line 4404</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
@@ -2033,7 +2069,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#line4159">line 4159</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line4525">line 4525</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
@@ -2228,7 +2264,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#line4191">line 4191</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line4557">line 4557</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
@@ -2269,13 +2305,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></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.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>
|
||||
</nav>
|
||||
|
||||
<br clear="both">
|
||||
|
||||
<footer>
|
||||
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Thu Nov 06 2014 13:24:26 GMT+0100 (CET)
|
||||
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)
|
||||
</footer>
|
||||
|
||||
<script> prettyPrint(); </script>
|
||||
|
||||
+19
-19
@@ -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#line740">line 740</a>
|
||||
<a href="jsxc.lib.webrtc.js.html">jsxc.lib.webrtc.js</a>, <a href="jsxc.lib.webrtc.js.html#line745">line 745</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#line687">line 687</a>
|
||||
<a href="jsxc.lib.webrtc.js.html">jsxc.lib.webrtc.js</a>, <a href="jsxc.lib.webrtc.js.html#line692">line 692</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#line465">line 465</a>
|
||||
<a href="jsxc.lib.webrtc.js.html">jsxc.lib.webrtc.js</a>, <a href="jsxc.lib.webrtc.js.html#line470">line 470</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#line567">line 567</a>
|
||||
<a href="jsxc.lib.webrtc.js.html">jsxc.lib.webrtc.js</a>, <a href="jsxc.lib.webrtc.js.html#line572">line 572</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#line532">line 532</a>
|
||||
<a href="jsxc.lib.webrtc.js.html">jsxc.lib.webrtc.js</a>, <a href="jsxc.lib.webrtc.js.html#line537">line 537</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#line403">line 403</a>
|
||||
<a href="jsxc.lib.webrtc.js.html">jsxc.lib.webrtc.js</a>, <a href="jsxc.lib.webrtc.js.html#line408">line 408</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#line628">line 628</a>
|
||||
<a href="jsxc.lib.webrtc.js.html">jsxc.lib.webrtc.js</a>, <a href="jsxc.lib.webrtc.js.html#line633">line 633</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#line450">line 450</a>
|
||||
<a href="jsxc.lib.webrtc.js.html">jsxc.lib.webrtc.js</a>, <a href="jsxc.lib.webrtc.js.html#line455">line 455</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#line417">line 417</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>
|
||||
|
||||
|
||||
@@ -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#line320">line 320</a>
|
||||
<a href="jsxc.lib.webrtc.js.html">jsxc.lib.webrtc.js</a>, <a href="jsxc.lib.webrtc.js.html#line325">line 325</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#line340">line 340</a>
|
||||
<a href="jsxc.lib.webrtc.js.html">jsxc.lib.webrtc.js</a>, <a href="jsxc.lib.webrtc.js.html#line345">line 345</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#line580">line 580</a>
|
||||
<a href="jsxc.lib.webrtc.js.html">jsxc.lib.webrtc.js</a>, <a href="jsxc.lib.webrtc.js.html#line585">line 585</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#line615">line 615</a>
|
||||
<a href="jsxc.lib.webrtc.js.html">jsxc.lib.webrtc.js</a>, <a href="jsxc.lib.webrtc.js.html#line620">line 620</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#line752">line 752</a>
|
||||
<a href="jsxc.lib.webrtc.js.html">jsxc.lib.webrtc.js</a>, <a href="jsxc.lib.webrtc.js.html#line757">line 757</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#line355">line 355</a>
|
||||
<a href="jsxc.lib.webrtc.js.html">jsxc.lib.webrtc.js</a>, <a href="jsxc.lib.webrtc.js.html#line360">line 360</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#line789">line 789</a>
|
||||
<a href="jsxc.lib.webrtc.js.html">jsxc.lib.webrtc.js</a>, <a href="jsxc.lib.webrtc.js.html#line794">line 794</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#line698">line 698</a>
|
||||
<a href="jsxc.lib.webrtc.js.html">jsxc.lib.webrtc.js</a>, <a href="jsxc.lib.webrtc.js.html#line703">line 703</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></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.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>
|
||||
</nav>
|
||||
|
||||
<br clear="both">
|
||||
|
||||
<footer>
|
||||
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Thu Nov 06 2014 13:24:26 GMT+0100 (CET)
|
||||
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)
|
||||
</footer>
|
||||
|
||||
<script> prettyPrint(); </script>
|
||||
|
||||
@@ -0,0 +1,464 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>JSDoc: Namespace: carbons</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">Namespace: carbons</h1>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<section>
|
||||
|
||||
<header>
|
||||
<h2>
|
||||
<span class="ancestors"><a href="jsxc.html">jsxc</a><a href="jsxc.xmpp.html">.xmpp</a>.</span>
|
||||
|
||||
carbons
|
||||
</h2>
|
||||
|
||||
</header>
|
||||
|
||||
<article>
|
||||
<div class="container-overview">
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="description">Handle carbons (XEP-0280);</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#line4291">line 4291</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h3 class="subsection-title">Methods</h3>
|
||||
|
||||
<dl>
|
||||
|
||||
<dt>
|
||||
<h4 class="name" id="disable"><span class="type-signature"><static> </span>disable<span class="signature">(cb)</span><span class="type-signature"></span></h4>
|
||||
|
||||
|
||||
</dt>
|
||||
<dd>
|
||||
|
||||
|
||||
<div class="description">
|
||||
Disable carbons.
|
||||
</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>cb</code></td>
|
||||
|
||||
|
||||
<td class="type">
|
||||
|
||||
</td>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<td class="description last">callback</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#line4331">line 4331</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</dd>
|
||||
|
||||
|
||||
|
||||
<dt>
|
||||
<h4 class="name" id="enable"><span class="type-signature"><static> </span>enable<span class="signature">(cb)</span><span class="type-signature"></span></h4>
|
||||
|
||||
|
||||
</dt>
|
||||
<dd>
|
||||
|
||||
|
||||
<div class="description">
|
||||
Enable carbons.
|
||||
</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>cb</code></td>
|
||||
|
||||
|
||||
<td class="type">
|
||||
|
||||
</td>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<td class="description last">callback</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#line4305">line 4305</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</dd>
|
||||
|
||||
|
||||
|
||||
<dt>
|
||||
<h4 class="name" id="refresh"><span class="type-signature"><static> </span>refresh<span class="signature">(err)</span><span class="type-signature"></span></h4>
|
||||
|
||||
|
||||
</dt>
|
||||
<dd>
|
||||
|
||||
|
||||
<div class="description">
|
||||
Enable/Disable carbons depending on options key.
|
||||
</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>err</code></td>
|
||||
|
||||
|
||||
<td class="type">
|
||||
|
||||
</td>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<td class="description last">error message</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#line4357">line 4357</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.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>
|
||||
</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)
|
||||
</footer>
|
||||
|
||||
<script> prettyPrint(); </script>
|
||||
<script src="scripts/linenumber.js"> </script>
|
||||
</body>
|
||||
</html>
|
||||
+264
-91
@@ -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#line3150">line 3150</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line3276">line 3276</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
@@ -91,9 +91,182 @@
|
||||
|
||||
|
||||
|
||||
<h3 class="subsection-title">Namespaces</h3>
|
||||
|
||||
<dl>
|
||||
<dt><a href="namespaces.html#jsxc.xmpp.carbons"><a href="jsxc.xmpp.carbons.html">carbons</a></a></dt>
|
||||
<dd></dd>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
<h3 class="subsection-title">Members</h3>
|
||||
|
||||
<dl>
|
||||
|
||||
<dt>
|
||||
<h4 class="name" id="login"><span class="type-signature"><static> </span>login<span class="type-signature"></span></h4>
|
||||
|
||||
|
||||
</dt>
|
||||
<dd>
|
||||
|
||||
<div class="description">
|
||||
Create new connection or attach to old
|
||||
</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#line3284">line 3284</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
</dd>
|
||||
|
||||
|
||||
|
||||
<dt>
|
||||
<h4 class="name" id="login^2"><span class="type-signature"><static> </span>login^2<span class="type-signature"></span></h4>
|
||||
|
||||
|
||||
</dt>
|
||||
<dd>
|
||||
|
||||
<div class="description">
|
||||
Create new connection with given parameters.
|
||||
</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#line3285">line 3285</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
</dd>
|
||||
|
||||
|
||||
|
||||
<dt>
|
||||
<h4 class="name" id="login^3"><span class="type-signature"><static> </span>login^3<span class="type-signature"></span></h4>
|
||||
|
||||
|
||||
</dt>
|
||||
<dd>
|
||||
|
||||
<div class="description">
|
||||
Attach connection with given parameters.
|
||||
</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#line3286">line 3286</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
</dd>
|
||||
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
<h3 class="subsection-title">Methods</h3>
|
||||
|
||||
@@ -220,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#line3936">line 3936</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line4217">line 4217</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
@@ -360,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#line3833">line 3833</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line4114">line 4114</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
@@ -429,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#line3350">line 3350</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line3536">line 3536</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
@@ -498,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#line3309">line 3309</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line3490">line 3490</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
@@ -567,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#line3382">line 3382</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line3599">line 3599</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
@@ -636,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#line3428">line 3428</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line3645">line 3645</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
@@ -748,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#line3988">line 3988</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line4275">line 4275</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
@@ -906,76 +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#line3965">line 3965</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</dd>
|
||||
|
||||
|
||||
|
||||
<dt>
|
||||
<h4 class="name" id="login"><span class="type-signature"><static> </span>login<span class="signature">()</span><span class="type-signature"></span></h4>
|
||||
|
||||
|
||||
</dt>
|
||||
<dd>
|
||||
|
||||
|
||||
<div class="description">
|
||||
Create new connection or attach to old
|
||||
</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#line3163">line 3163</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line4252">line 4252</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
@@ -1044,7 +1148,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#line3243">line 3243</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line3424">line 3424</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
@@ -1085,6 +1189,75 @@
|
||||
|
||||
|
||||
|
||||
</dd>
|
||||
|
||||
|
||||
|
||||
<dt>
|
||||
<h4 class="name" id="onAuthFail"><span class="type-signature"><private, static> </span>onAuthFail<span class="signature">()</span><span class="type-signature"></span></h4>
|
||||
|
||||
|
||||
</dt>
|
||||
<dd>
|
||||
|
||||
|
||||
<div class="description">
|
||||
Triggered on auth fail.
|
||||
</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#line3698">line 3698</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</dd>
|
||||
|
||||
|
||||
@@ -1179,7 +1352,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#line3461">line 3461</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line3685">line 3685</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
@@ -1296,7 +1469,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#line3719">line 3719</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line3959">line 3959</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
@@ -1431,7 +1604,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#line3596">line 3596</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line3838">line 3838</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
@@ -1571,7 +1744,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#line3802">line 3802</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line4083">line 4083</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
@@ -1688,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#line3475">line 3475</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line3717">line 3717</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
@@ -1805,7 +1978,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#line3523">line 3523</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line3765">line 3765</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
@@ -1944,7 +2117,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#line3868">line 3868</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line4149">line 4149</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
@@ -2084,7 +2257,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#line3812">line 3812</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line4093">line 4093</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
@@ -2232,7 +2405,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#line3919">line 3919</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line4200">line 4200</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
@@ -2301,7 +2474,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#line3393">line 3393</a>
|
||||
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line3610">line 3610</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
@@ -2342,13 +2515,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></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.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>
|
||||
</nav>
|
||||
|
||||
<br clear="both">
|
||||
|
||||
<footer>
|
||||
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Thu Nov 06 2014 13:24:27 GMT+0100 (CET)
|
||||
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)
|
||||
</footer>
|
||||
|
||||
<script> prettyPrint(); </script>
|
||||
|
||||
+17
-7
@@ -7,8 +7,8 @@
|
||||
<link href="../lib/jquery-ui.min.css" media="all" rel="stylesheet" type="text/css" />
|
||||
<link href="../lib/jquery.mCustomScrollbar.css" media="all" rel="stylesheet" type="text/css" />
|
||||
<link href="../lib/jquery.colorbox.css" media="all" rel="stylesheet" type="text/css" />
|
||||
<link href="../jsxc.css" media="all" rel="stylesheet" type="text/css" />
|
||||
<link href="../jsxc.webrtc.css" media="all" rel="stylesheet" type="text/css" />
|
||||
<link href="../build/css/jsxc.css" media="all" rel="stylesheet" type="text/css" />
|
||||
<link href="../build/css/jsxc.webrtc.css" media="all" rel="stylesheet" type="text/css" />
|
||||
|
||||
<style type="text/css">
|
||||
body, * {font-size: 13px; font-family: "Helvetica Neue",Helvetica,Arial,FreeSans,sans-serif;}
|
||||
@@ -42,8 +42,9 @@
|
||||
-->
|
||||
|
||||
<!-- Build files: -->
|
||||
<script src="../build/jsxc.dep.js"></script>
|
||||
<script src="../build/jsxc.js"></script>
|
||||
<script src="../build/lib/jsxc.dep.js"></script>
|
||||
<script src="../jsxc.lib.js"></script>
|
||||
<script src="../jsxc.lib.webrtc.js"></script>
|
||||
|
||||
<script src="js/example.js"></script>
|
||||
|
||||
@@ -52,11 +53,20 @@
|
||||
<body>
|
||||
<form id="form" method="post" action="login.html">
|
||||
<fieldset>
|
||||
<legend>Login</legend>
|
||||
<legend>Dual-Login</legend>
|
||||
<label for="username">Username:</label><input type="text" id="username" name="username" /><br />
|
||||
<label for="password">Password:</label><input type="password" id="password" name="password" /><br />
|
||||
<input type="submit" value="Log in" />
|
||||
<input type="submit" value="Log in chat and page" />
|
||||
</fieldset>
|
||||
</form>
|
||||
|
||||
<form id="form2" method="post">
|
||||
<fieldset>
|
||||
<legend>Chat Login</legend>
|
||||
<label for="username2">Username:</label><input type="text" id="username2" name="username2" /><br />
|
||||
<label for="password2">Password:</label><input type="password" id="password2" name="password2" /><br />
|
||||
<input type="submit" value="Log in chat" /> <button id="logout2" style="display:none;">Log out</button>
|
||||
</fieldset>
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
||||
</html>
|
||||
|
||||
+27
-10
@@ -1,4 +1,14 @@
|
||||
$(function() {
|
||||
var settings = {
|
||||
xmpp: {
|
||||
url: '/http-bind/',
|
||||
domain: 'localhost',
|
||||
resource: 'example',
|
||||
overwrite: true,
|
||||
onlogin: true
|
||||
}
|
||||
};
|
||||
|
||||
jsxc.init({
|
||||
loginForm: {
|
||||
form: '#form',
|
||||
@@ -19,15 +29,22 @@ $(function() {
|
||||
WHITESPACE_START_AKE: true
|
||||
},
|
||||
loadSettings: function(username, password) {
|
||||
return {
|
||||
xmpp: {
|
||||
url: '/http-bind/',
|
||||
domain: 'localhost',
|
||||
resource: 'example',
|
||||
overwrite: true,
|
||||
onlogin: true
|
||||
}
|
||||
};
|
||||
return settings;
|
||||
},
|
||||
xmpp: {
|
||||
url: settings.xmpp.url
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
$('#form2').submit(function(ev) {
|
||||
ev.preventDefault();
|
||||
|
||||
$(document).on('connectionReady.jsxc', function() {
|
||||
$('#form2 input').prop('disabled', true);
|
||||
|
||||
$('#logout2').show().click(jsxc.xmpp.logout);
|
||||
});
|
||||
|
||||
jsxc.xmpp.login($('#username2').val() + '@' + settings.xmpp.domain, $('#password2').val());
|
||||
});
|
||||
});
|
||||
|
||||
+32
-23
@@ -7,8 +7,8 @@
|
||||
<link href="../lib/jquery-ui.min.css" media="all" rel="stylesheet" type="text/css" />
|
||||
<link href="../lib/jquery.mCustomScrollbar.css" media="all" rel="stylesheet" type="text/css" />
|
||||
<link href="../lib/jquery.colorbox.css" media="all" rel="stylesheet" type="text/css" />
|
||||
<link href="../jsxc.css" media="all" rel="stylesheet" type="text/css" />
|
||||
<link href="../jsxc.webrtc.css" media="all" rel="stylesheet" type="text/css" />
|
||||
<link href="../build/css/jsxc.css" media="all" rel="stylesheet" type="text/css" />
|
||||
<link href="../build/css/jsxc.webrtc.css" media="all" rel="stylesheet" type="text/css" />
|
||||
|
||||
<style type="text/css">
|
||||
body, * {font-size: 13px; font-family: "Helvetica Neue",Helvetica,Arial,FreeSans,sans-serif;}
|
||||
@@ -16,26 +16,35 @@
|
||||
</style>
|
||||
|
||||
<script src="../lib/jquery.min.js"></script>
|
||||
<script src="../lib/jquery.ui.min.js"></script>
|
||||
<script src="../lib/jquery.colorbox-min.js"></script>
|
||||
<script src="../lib/jquery.slimscroll.js"></script>
|
||||
<script src="../lib/jquery.fullscreen.js"></script>
|
||||
<script src="../lib/strophe.js"></script>
|
||||
<script src="../lib/strophe.muc.js"></script>
|
||||
<script src="../lib/strophe.disco.js"></script>
|
||||
<script src="../lib/strophe.caps.js"></script>
|
||||
<script src="../lib/strophe.vcard.js"></script>
|
||||
<script src="../lib/strophe.jingle/strophe.jingle.js"></script>
|
||||
<script src="../lib/strophe.jingle/strophe.jingle.session.js"></script>
|
||||
<script src="../lib/strophe.jingle/strophe.jingle.sdp.js"></script>
|
||||
<script src="../lib/strophe.jingle/strophe.jingle.adapter.js"></script>
|
||||
<script src="../lib/otr/build/dep/salsa20.js"></script>
|
||||
<script src="../lib/otr/build/dep/bigint.js"></script>
|
||||
<script src="../lib/otr/build/dep/crypto.js"></script>
|
||||
<script src="../lib/otr/build/dep/eventemitter.js"></script>
|
||||
<script src="../lib/otr/build/otr.js"></script>
|
||||
<script src="../jsxc.lib.js"></script>
|
||||
<script src="../jsxc.lib.webrtc.js"></script>
|
||||
<script src="../lib/jquery.ui.min.js"></script>
|
||||
<script src="../lib/jquery.colorbox-min.js"></script>
|
||||
<script src="../lib/jquery.slimscroll.js"></script>
|
||||
<script src="../lib/jquery.fullscreen.js"></script>
|
||||
|
||||
<!-- Nightly files:
|
||||
|
||||
<script src="../lib/strophe.js"></script>
|
||||
<script src="../lib/strophe.muc.js"></script>
|
||||
<script src="../lib/strophe.disco.js"></script>
|
||||
<script src="../lib/strophe.caps.js"></script>
|
||||
<script src="../lib/strophe.vcard.js"></script>
|
||||
<script src="../lib/strophe.jingle/strophe.jingle.js"></script>
|
||||
<script src="../lib/strophe.jingle/strophe.jingle.session.js"></script>
|
||||
<script src="../lib/strophe.jingle/strophe.jingle.sdp.js"></script>
|
||||
<script src="../lib/strophe.jingle/strophe.jingle.adapter.js"></script>
|
||||
<script src="../lib/otr/build/dep/salsa20.js"></script>
|
||||
<script src="../lib/otr/build/dep/bigint.js"></script>
|
||||
<script src="../lib/otr/build/dep/crypto.js"></script>
|
||||
<script src="../lib/otr/build/dep/eventemitter.js"></script>
|
||||
<script src="../lib/otr/build/otr.js"></script>
|
||||
<script src="../jsxc.lib.js"></script>
|
||||
<script src="../jsxc.lib.webrtc.js"></script>
|
||||
-->
|
||||
|
||||
<!-- Build files: -->
|
||||
<script src="../build/lib/jsxc.dep.js"></script>
|
||||
<script src="../jsxc.lib.js"></script>
|
||||
<script src="../jsxc.lib.webrtc.js"></script>
|
||||
|
||||
<script src="js/example.js"></script>
|
||||
|
||||
@@ -46,4 +55,4 @@
|
||||
|
||||
<a href="index.html" id="logout">Log out</a>
|
||||
</body>
|
||||
</html>
|
||||
</html>
|
||||
|
||||
-1243
Diferenças do arquivo suprimidas por serem muito extensas
Carregar Diff
+465
-93
@@ -39,9 +39,6 @@ var jsxc;
|
||||
/** True if restore is complete */
|
||||
restoreCompleted: false,
|
||||
|
||||
/** True if login through form */
|
||||
triggeredFromForm: false,
|
||||
|
||||
/** True if login through box */
|
||||
triggeredFromBox: false,
|
||||
|
||||
@@ -80,9 +77,39 @@ var jsxc;
|
||||
REGEX: {
|
||||
JID: new RegExp('\\b[^"&\'\\/:<>@\\s]+@[\\w-_.]+\\b', 'ig'),
|
||||
URL: new RegExp(/((?:https?:\/\/|www\.|([\w\-]+\.[a-zA-Z]{2,3})(?=\b))(?:(?:[\-A-Za-z0-9+&@#\/%?=~_|!:,.;]*\([\-A-Za-z0-9+&@#\/%?=~_|!:,.;]*\)([\-A-Za-z0-9+&@#\/%?=~_|!:,.;]*[\-A-Za-z0-9+&@#\/%=~_|])?)|(?:[\-A-Za-z0-9+&@#\/%?=~_|!:,.;]*[\-A-Za-z0-9+&@#\/%=~_|]))?)/gi)
|
||||
},
|
||||
NS: {
|
||||
CARBONS: 'urn:xmpp:carbons:2',
|
||||
FORWARD: 'urn:xmpp:forward:0'
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Parse a unix timestamp and return a formatted time string
|
||||
*
|
||||
* @memberOf jsxc
|
||||
* @param {Object} unixtime
|
||||
* @returns time of day and/or date
|
||||
*/
|
||||
getFormattedTime: function(unixtime) {
|
||||
var msgDate = new Date(parseInt(unixtime));
|
||||
var date = ('0' + msgDate.getDate()).slice(-2);
|
||||
var month = ('0' + (msgDate.getMonth() + 1)).slice(-2);
|
||||
var year = msgDate.getFullYear();
|
||||
var hours = ('0' + msgDate.getHours()).slice(-2);
|
||||
var minutes = ('0' + msgDate.getMinutes()).slice(-2);
|
||||
var dateNow = new Date(), time = hours + ':' + minutes;
|
||||
|
||||
// compare dates only
|
||||
dateNow.setHours(0, 0, 0, 0);
|
||||
msgDate.setHours(0, 0, 0, 0);
|
||||
|
||||
if (dateNow.getTime() !== msgDate.getTime()) {
|
||||
return date + '.' + month + '.' + year + ' ' + time;
|
||||
}
|
||||
return time;
|
||||
},
|
||||
|
||||
/**
|
||||
* Write debug message to console and to log.
|
||||
*
|
||||
@@ -156,7 +183,7 @@ var jsxc;
|
||||
|
||||
if (options) {
|
||||
// override default options
|
||||
$.extend(jsxc.options, options);
|
||||
$.extend(true, jsxc.options, options);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -206,6 +233,10 @@ var jsxc;
|
||||
return;
|
||||
}
|
||||
|
||||
if (jsxc.storage.getItem('debug') === true) {
|
||||
jsxc.options.otr.debug = true;
|
||||
}
|
||||
|
||||
// Register event listener for the storage event
|
||||
window.addEventListener('storage', jsxc.storage.onStorage, false);
|
||||
|
||||
@@ -257,7 +288,7 @@ var jsxc;
|
||||
var settings = jsxc.prepareLogin();
|
||||
|
||||
if (settings !== false && (settings.xmpp.onlogin === "true" || settings.xmpp.onlogin === true)) {
|
||||
jsxc.triggeredFromForm = true;
|
||||
jsxc.options.loginForm.triggered = true;
|
||||
|
||||
jsxc.xmpp.login();
|
||||
|
||||
@@ -385,8 +416,12 @@ var jsxc;
|
||||
// Sending keepalive signal
|
||||
jsxc.startKeepAlive();
|
||||
|
||||
// create or load DSA key and call _onMaster
|
||||
jsxc.otr.createDSA();
|
||||
if (jsxc.options.get('otr').enable) {
|
||||
// create or load DSA key and call _onMaster
|
||||
jsxc.otr.createDSA();
|
||||
} else {
|
||||
jsxc._onMaster();
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
@@ -426,6 +461,10 @@ var jsxc;
|
||||
}
|
||||
}
|
||||
|
||||
$(document).on('connectionReady.jsxc', function() {
|
||||
jsxc.gui.updateAvatar($('#jsxc_avatar'), jsxc.storage.getItem('jid'), 'own');
|
||||
});
|
||||
|
||||
jsxc.xmpp.login();
|
||||
},
|
||||
|
||||
@@ -675,6 +714,27 @@ var jsxc;
|
||||
return jsxc.l[k] || key.replace(/_/g, ' ');
|
||||
});
|
||||
},
|
||||
|
||||
/**
|
||||
* Executes the given function in jsxc namespace.
|
||||
*
|
||||
* @memberOf jsxc
|
||||
* @param {string} fnName Function name
|
||||
* @param {array} fnParams Function parameters
|
||||
* @returns Function return value
|
||||
*/
|
||||
exec: function(fnName, fnParams) {
|
||||
var fnList = fnName.split('.');
|
||||
var fn = jsxc[fnList[0]];
|
||||
var i;
|
||||
for (i = 1; i < fnList.length; i++) {
|
||||
fn = fn[fnList[i]];
|
||||
}
|
||||
|
||||
if (typeof fn === 'function') {
|
||||
return fn.apply(null, fnParams);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -695,7 +755,11 @@ var jsxc;
|
||||
|
||||
/** OTR options */
|
||||
otr: {
|
||||
ERROR_START_AKE: true
|
||||
enable: true,
|
||||
ERROR_START_AKE: false,
|
||||
debug: false,
|
||||
SEND_WHITESPACE_TAG: true,
|
||||
WHITESPACE_START_AKE: true
|
||||
},
|
||||
|
||||
/** xmpp options */
|
||||
@@ -731,7 +795,19 @@ var jsxc;
|
||||
/** manipulate JID from input element */
|
||||
preJid: function(jid) {
|
||||
return jid;
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* 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]
|
||||
* Do nothing, ask [String] Show auth fail dialog
|
||||
*/
|
||||
onAuthFail: 'submit'
|
||||
},
|
||||
|
||||
/** jquery object from logout element */
|
||||
@@ -802,9 +878,15 @@ var jsxc;
|
||||
*
|
||||
* @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
|
||||
}
|
||||
};
|
||||
|
||||
@@ -858,6 +940,11 @@ var jsxc;
|
||||
* @memberOf jsxc.gui
|
||||
*/
|
||||
init: function() {
|
||||
//Prevent duplicate windowList
|
||||
if ($('#jsxc_windowList').length > 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
$('body').append($(jsxc.gui.template.get('windowList')));
|
||||
|
||||
$(window).resize(jsxc.gui.updateWindowListSB);
|
||||
@@ -877,7 +964,9 @@ var jsxc;
|
||||
|
||||
jsxc.gui.tooltip('#jsxc_windowList');
|
||||
|
||||
jsxc.gui.roster.init();
|
||||
if (!jsxc.el_exists('#jsxc_roster')) {
|
||||
jsxc.gui.roster.init();
|
||||
}
|
||||
|
||||
// prepare regexp for emotions
|
||||
$.each(jsxc.gui.emotions, function(i, val) {
|
||||
@@ -1002,7 +1091,7 @@ var jsxc;
|
||||
var avatarSrc = jsxc.storage.getUserItem('avatar', aid);
|
||||
|
||||
var setAvatar = function(src) {
|
||||
if (src === 0) {
|
||||
if (src === 0 || src === '0') {
|
||||
jsxc.options.defaultAvatar.call(el, jid);
|
||||
return;
|
||||
}
|
||||
@@ -1026,13 +1115,18 @@ var jsxc;
|
||||
|
||||
if (vCard.length === 0) {
|
||||
jsxc.debug('No photo provided');
|
||||
src = 0;
|
||||
src = '0';
|
||||
} else if (vCard.find('EXTVAL').length > 0) {
|
||||
src = vCard.find('EXTVAL').text();
|
||||
} else {
|
||||
var img = vCard.find('BINVAL').text();
|
||||
var type = vCard.find('TYPE').text();
|
||||
src = 'data:' + type + ';base64,' + img;
|
||||
}
|
||||
|
||||
// concat chunks
|
||||
src = src.replace(/[\t\r\n\f]/gi, '');
|
||||
|
||||
jsxc.storage.setUserItem('avatar', aid, src);
|
||||
setAvatar(src);
|
||||
}, Strophe.getBareJidFromJid(jid), function(msg) {
|
||||
@@ -1169,7 +1263,7 @@ var jsxc;
|
||||
var settings = jsxc.prepareLogin();
|
||||
|
||||
jsxc.triggeredFromBox = true;
|
||||
jsxc.triggeredFromForm = false;
|
||||
jsxc.options.loginForm.triggered = false;
|
||||
|
||||
if (settings === false) {
|
||||
jsxc.gui.showAuthFail();
|
||||
@@ -1436,7 +1530,7 @@ var jsxc;
|
||||
showAuthFail: function() {
|
||||
jsxc.gui.dialog.open(jsxc.gui.template.get('authFailDialog'));
|
||||
|
||||
if (jsxc.triggeredFromBox) {
|
||||
if (jsxc.options.loginForm.triggered !== false) {
|
||||
$('#jsxc_dialog .jsxc_cancel').hide();
|
||||
}
|
||||
|
||||
@@ -1627,7 +1721,17 @@ var jsxc;
|
||||
var type = photo.find('TYPE').text();
|
||||
var src = 'data:' + type + ';base64,' + img;
|
||||
|
||||
$('#jsxc_dialog h3').before('<img class="jsxc_vCard" src="' + src + '" alt="avatar" />');
|
||||
if (photo.find('EXTVAL').length > 0) {
|
||||
src = photo.find('EXTVAL').text();
|
||||
}
|
||||
|
||||
// concat chunks
|
||||
src = src.replace(/[\t\r\n\f]/gi, '');
|
||||
|
||||
var img_el = $('<img class="jsxc_vCard" alt="avatar" />');
|
||||
img_el.attr('src', src);
|
||||
|
||||
$('#jsxc_dialog h3').before(img_el);
|
||||
}
|
||||
|
||||
if ($(stanza).find('vCard').length === 0 || ($(stanza).find('vcard > *').length === 1 && photo.length === 1)) {
|
||||
@@ -1701,6 +1805,10 @@ var jsxc;
|
||||
|
||||
var err = jsxc.options.saveSettinsPermanent.call(this, data);
|
||||
|
||||
if (typeof self.attr('data-onsubmit') === 'string') {
|
||||
jsxc.exec(self.attr('data-onsubmit'), [ err ]);
|
||||
}
|
||||
|
||||
setTimeout(function() {
|
||||
self.find('input[type="submit"]').effect('highlight', {
|
||||
color: (err) ? 'green' : 'red'
|
||||
@@ -2010,10 +2118,6 @@ var jsxc;
|
||||
$('#jsxc_presence > span').text($('#jsxc_presence > ul .jsxc_' + pres).text());
|
||||
jsxc.gui.updatePresence('own', pres);
|
||||
|
||||
$(document).on('cloaded.roster.jsxc', function() {
|
||||
jsxc.gui.updateAvatar($('#jsxc_avatar'), jsxc.storage.getItem('jid'), 'own');
|
||||
});
|
||||
|
||||
jsxc.gui.tooltip('#jsxc_roster');
|
||||
|
||||
jsxc.notice.load();
|
||||
@@ -2251,8 +2355,7 @@ var jsxc;
|
||||
* Shows a text with link to a login box that no connection exists.
|
||||
*/
|
||||
noConnection: function() {
|
||||
$('#jsxc_roster .slimScrollDiv').remove();
|
||||
$('#jsxc_roster > .jsxc_bottom').remove();
|
||||
$('#jsxc_roster').addClass('jsxc_noConnection');
|
||||
|
||||
$('#jsxc_roster').append($('<p>' + jsxc.l.no_connection + '</p>').append(' <a>' + jsxc.l.relogin + '</a>').click(function() {
|
||||
jsxc.gui.showLoginBox();
|
||||
@@ -2721,8 +2824,11 @@ var jsxc;
|
||||
* @param {String} direction 'in' message is received or 'out' message is
|
||||
* send
|
||||
* @param {String} msg Message to display
|
||||
* @param {boolean} encrypted Was this message encrypted? Default: false
|
||||
* @param {boolean} forwarded Was this message forwarded? Default: false
|
||||
* @param {integer} stamp Timestamp
|
||||
*/
|
||||
postMessage: function(bid, direction, msg) {
|
||||
postMessage: function(bid, direction, msg, encrypted, forwarded, stamp) {
|
||||
var data = jsxc.storage.getUserItem('buddy', bid);
|
||||
var html_msg = msg;
|
||||
|
||||
@@ -2732,12 +2838,12 @@ var jsxc;
|
||||
|
||||
// exceptions:
|
||||
|
||||
if (direction === 'out' && data.msgstate === 2) {
|
||||
if (direction === 'out' && data.msgstate === OTR.CONST.MSGSTATE_FINISHED && forwarded !== true) {
|
||||
direction = 'sys';
|
||||
msg = jsxc.l.your_message_wasnt_send_please_end_your_private_conversation;
|
||||
}
|
||||
|
||||
if (direction === 'in' && data.msgstate === 2) {
|
||||
if (direction === 'in' && data.msgstate === OTR.CONST.MSGSTATE_FINISHED) {
|
||||
direction = 'sys';
|
||||
msg = jsxc.l.unencrypted_message_received + ' ' + msg;
|
||||
}
|
||||
@@ -2747,13 +2853,14 @@ var jsxc;
|
||||
msg = jsxc.l.your_message_wasnt_send_because_you_have_no_valid_subscription;
|
||||
}
|
||||
|
||||
var post = jsxc.storage.saveMessage(bid, direction, msg);
|
||||
encrypted = encrypted || data.msgstate === OTR.CONST.MSGSTATE_ENCRYPTED;
|
||||
var post = jsxc.storage.saveMessage(bid, direction, msg, encrypted, forwarded, stamp);
|
||||
|
||||
if (direction === 'in') {
|
||||
$(document).trigger('postmessagein.jsxc', [ bid, html_msg ]);
|
||||
}
|
||||
|
||||
if (direction === 'out' && jsxc.master) {
|
||||
if (direction === 'out' && jsxc.master && forwarded !== true) {
|
||||
jsxc.xmpp.sendMessage(bid, html_msg, post.uid);
|
||||
}
|
||||
|
||||
@@ -2777,7 +2884,6 @@ var jsxc;
|
||||
var msg = post.msg;
|
||||
var direction = post.direction;
|
||||
var uid = post.uid;
|
||||
var received = post.received || false;
|
||||
|
||||
if (win.find('.jsxc_textinput').is(':not(:focus)') && jsxc.restoreCompleted && direction === 'in' && !restore) {
|
||||
jsxc.gui.window.highlight(bid);
|
||||
@@ -2816,17 +2922,29 @@ var jsxc;
|
||||
});
|
||||
});
|
||||
|
||||
var msgDiv = $("<div>");
|
||||
var msgDiv = $("<div>"), msgTsDiv = $("<div>");
|
||||
msgDiv.addClass('jsxc_chatmessage jsxc_' + direction);
|
||||
msgDiv.attr('id', uid);
|
||||
msgDiv.html(msg);
|
||||
msgDiv.html('<div>' + msg + '</div>');
|
||||
msgTsDiv.addClass('jsxc_timestamp');
|
||||
msgTsDiv.html(jsxc.getFormattedTime(post.stamp));
|
||||
|
||||
if (received) {
|
||||
if (post.received || false) {
|
||||
msgDiv.addClass('jsxc_received');
|
||||
}
|
||||
|
||||
if (post.forwarded) {
|
||||
msgDiv.addClass('jsxc_forwarded');
|
||||
}
|
||||
|
||||
if (post.encrypted) {
|
||||
msgDiv.addClass('jsxc_encrypted');
|
||||
}
|
||||
|
||||
if (direction === 'sys') {
|
||||
jsxc.gui.window.get(bid).find('.jsxc_textarea').append('<div style="clear:both"/>');
|
||||
} else if (typeof post.stamp !== 'undefined') {
|
||||
msgDiv.append(msgTsDiv);
|
||||
}
|
||||
|
||||
win.find('.jsxc_textarea').append(msgDiv);
|
||||
@@ -3144,6 +3262,14 @@ var jsxc;
|
||||
<label for="priority-dnd">%%dnd%%</label><input type="number" value="0" id="priority-dnd" min="-128" max="127" step="1" required="required"/><br />\
|
||||
<input type="submit" value="%%Save%%"/>\
|
||||
</fieldset>\
|
||||
</form>\
|
||||
<p></p>\
|
||||
<form data-onsubmit="xmpp.carbons.refresh">\
|
||||
<fieldset class="jsxc_fieldsetCarbons jsxc_fieldset">\
|
||||
<legend>%%Carbon copy%%</legend>\
|
||||
<label for="carbons-enable">%%Enable%%</label><input type="checkbox" id="carbons-enable" /><br />\
|
||||
<input type="submit" value="%%Save%%"/>\
|
||||
</fieldset>\
|
||||
</form>'
|
||||
};
|
||||
|
||||
@@ -3158,13 +3284,50 @@ var jsxc;
|
||||
/**
|
||||
* Create new connection or attach to old
|
||||
*
|
||||
* @name login
|
||||
* @memberOf jsxc.xmpp
|
||||
*/
|
||||
/**
|
||||
* Create new connection with given parameters.
|
||||
*
|
||||
* @name login^2
|
||||
* @param {string} jid
|
||||
* @param {string} password
|
||||
* @memberOf jsxc.xmpp
|
||||
*/
|
||||
/**
|
||||
* Attach connection with given parameters.
|
||||
*
|
||||
* @name login^3
|
||||
* @param {string} jid
|
||||
* @param {string} sid
|
||||
* @param {string} rid
|
||||
* @memberOf jsxc.xmpp
|
||||
*/
|
||||
login: function() {
|
||||
|
||||
var sid = jsxc.storage.getItem('sid');
|
||||
var rid = jsxc.storage.getItem('rid');
|
||||
var jid = jsxc.storage.getItem('jid');
|
||||
if (jsxc.xmpp.conn && jsxc.xmpp.conn.connected) {
|
||||
return;
|
||||
}
|
||||
|
||||
var jid = null, password = null, sid = null, rid = null;
|
||||
|
||||
switch (arguments.length) {
|
||||
case 2:
|
||||
jid = arguments[0];
|
||||
password = arguments[1];
|
||||
break;
|
||||
case 3:
|
||||
jid = arguments[0];
|
||||
sid = arguments[1];
|
||||
rid = arguments[2];
|
||||
break;
|
||||
default:
|
||||
jid = jsxc.storage.getItem('jid');
|
||||
sid = jsxc.storage.getItem('sid');
|
||||
rid = jsxc.storage.getItem('rid');
|
||||
}
|
||||
|
||||
var url = jsxc.options.get('xmpp').url;
|
||||
|
||||
// Register eventlistener
|
||||
@@ -3172,6 +3335,8 @@ var jsxc;
|
||||
$(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');
|
||||
|
||||
@@ -3212,10 +3377,10 @@ var jsxc;
|
||||
$(document).trigger('disconnected.jsxc');
|
||||
break;
|
||||
case Strophe.Status.CONNFAIL:
|
||||
jsxc.xmpp.onConnfail(condition);
|
||||
$(document).trigger('connfail.jsxc');
|
||||
break;
|
||||
case Strophe.Status.AUTHFAIL:
|
||||
jsxc.gui.showAuthFail();
|
||||
$(document).trigger('authfail.jsxc');
|
||||
break;
|
||||
}
|
||||
};
|
||||
@@ -3231,7 +3396,23 @@ var jsxc;
|
||||
} else {
|
||||
jsxc.debug('New connection');
|
||||
|
||||
jsxc.xmpp.conn.connect(jsxc.options.xmpp.jid, jsxc.options.xmpp.password, callback);
|
||||
if (jsxc.xmpp.conn.caps) {
|
||||
// Add system handler, because user handler isn't called before
|
||||
// we are authenticated
|
||||
jsxc.xmpp.conn._addSysHandler(function(stanza) {
|
||||
var from = jsxc.xmpp.conn.domain, c = stanza.querySelector('c'), ver = c.getAttribute('ver'), node = c.getAttribute('node');
|
||||
|
||||
var _jidNodeIndex = JSON.parse(localStorage.getItem('strophe.caps._jidNodeIndex')) || {};
|
||||
|
||||
jsxc.xmpp.conn.caps._jidVerIndex[from] = ver;
|
||||
_jidNodeIndex[from] = node;
|
||||
|
||||
localStorage.setItem('strophe.caps._jidVerIndex', JSON.stringify(jsxc.xmpp.conn.caps._jidVerIndex));
|
||||
localStorage.setItem('strophe.caps._jidNodeIndex', JSON.stringify(_jidNodeIndex));
|
||||
}, Strophe.NS.CAPS);
|
||||
}
|
||||
|
||||
jsxc.xmpp.conn.connect(jid || jsxc.options.xmpp.jid, password || jsxc.options.xmpp.password, callback);
|
||||
}
|
||||
},
|
||||
|
||||
@@ -3266,11 +3447,11 @@ var jsxc;
|
||||
jsxc.triggeredFromElement = true;
|
||||
|
||||
// restore all otr objects
|
||||
$.each(jsxc.storage.getUserItem('otrlist'), function(i, val) {
|
||||
$.each(jsxc.storage.getUserItem('otrlist') || {}, function(i, val) {
|
||||
jsxc.otr.create(val);
|
||||
});
|
||||
|
||||
var numOtr = Object.keys(jsxc.otr.objects).length + 1;
|
||||
var numOtr = Object.keys(jsxc.otr.objects || {}).length + 1;
|
||||
var disReady = function() {
|
||||
if (--numOtr <= 0) {
|
||||
jsxc.xmpp.conn.flush();
|
||||
@@ -3282,7 +3463,7 @@ var jsxc;
|
||||
};
|
||||
|
||||
// end all private conversations
|
||||
$.each(jsxc.otr.objects, function(key, obj) {
|
||||
$.each(jsxc.otr.objects || {}, function(key, obj) {
|
||||
if (obj.msgstate === OTR.CONST.MSGSTATE_ENCRYPTED) {
|
||||
obj.endOtr.call(obj, function() {
|
||||
obj.init.call(obj);
|
||||
@@ -3326,20 +3507,25 @@ var jsxc;
|
||||
jsxc.storage.removeUserItem('avatar', 'own');
|
||||
jsxc.storage.removeUserItem('otrlist');
|
||||
|
||||
// submit login form
|
||||
if (jsxc.triggeredFromForm) {
|
||||
// Trigger normal submit
|
||||
jsxc.submitLoginForm();
|
||||
return;
|
||||
if (jsxc.options.loginForm.triggered) {
|
||||
switch (jsxc.options.loginForm.onConnected || 'submit') {
|
||||
case 'submit':
|
||||
jsxc.submitLoginForm();
|
||||
/* falls through */
|
||||
case false:
|
||||
jsxc.xmpp.connectionReady();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// reload page after login from login box
|
||||
if (jsxc.triggeredFromBox) {
|
||||
window.location.reload();
|
||||
return;
|
||||
}
|
||||
// start chat
|
||||
|
||||
jsxc.xmpp.connectionReady();
|
||||
jsxc.gui.init();
|
||||
$('#jsxc_roster').removeClass('jsxc_noConnection');
|
||||
jsxc.onMaster();
|
||||
jsxc.xmpp.conn.resume();
|
||||
jsxc.gui.dialog.close();
|
||||
$(document).trigger('attached.jsxc');
|
||||
},
|
||||
|
||||
/**
|
||||
@@ -3354,6 +3540,37 @@ var jsxc;
|
||||
jsxc.xmpp.conn.addHandler(jsxc.xmpp.onReceived, null, 'message');
|
||||
jsxc.xmpp.conn.addHandler(jsxc.xmpp.onPresence, null, 'presence');
|
||||
|
||||
var caps = jsxc.xmpp.conn.caps;
|
||||
var domain = jsxc.xmpp.conn.domain;
|
||||
|
||||
if (caps && jsxc.options.get('carbons').enable) {
|
||||
var conditionalEnable = function() {
|
||||
if (jsxc.xmpp.conn.caps.hasFeatureByJid(domain, jsxc.CONST.NS.CARBONS)) {
|
||||
jsxc.xmpp.carbons.enable();
|
||||
}
|
||||
};
|
||||
|
||||
if (typeof caps._knownCapabilities[caps._jidVerIndex[domain]] === 'undefined') {
|
||||
var _jidNodeIndex = JSON.parse(localStorage.getItem('strophe.caps._jidNodeIndex')) || {};
|
||||
|
||||
$(document).on('caps.strophe', function onCaps(ev, from) {
|
||||
|
||||
if (from !== domain) {
|
||||
return;
|
||||
}
|
||||
|
||||
conditionalEnable();
|
||||
|
||||
$(document).off('caps.strophe', onCaps);
|
||||
});
|
||||
|
||||
caps._requestCapabilities(jsxc.xmpp.conn.domain, _jidNodeIndex[domain], caps._jidVerIndex[domain]);
|
||||
} else {
|
||||
// We know server caps
|
||||
conditionalEnable();
|
||||
}
|
||||
}
|
||||
|
||||
// Only load roaster if necessary
|
||||
if (!jsxc.restore || !jsxc.storage.getUserItem('buddylist')) {
|
||||
// in order to not overide existing presence information, we send
|
||||
@@ -3435,6 +3652,13 @@ var jsxc;
|
||||
jsxc.storage.removeUserItem('avatar', 'own');
|
||||
jsxc.storage.removeUserItem('otrlist');
|
||||
|
||||
$(document).off('connected.jsxc', jsxc.xmpp.connected);
|
||||
$(document).off('attached.jsxc', jsxc.xmpp.attached);
|
||||
$(document).off('disconnected.jsxc', jsxc.xmpp.disconnected);
|
||||
$(document).off('ridChange', jsxc.xmpp.onRidChange);
|
||||
$(document).off('connfail.jsxc', jsxc.xmpp.onConnfail);
|
||||
$(document).off('authfail.jsxc', jsxc.xmpp.onAuthFail);
|
||||
|
||||
jsxc.xmpp.conn = null;
|
||||
|
||||
$('#jsxc_windowList').remove();
|
||||
@@ -3458,14 +3682,32 @@ var jsxc;
|
||||
* @param {String} condition information why we lost the connection
|
||||
* @private
|
||||
*/
|
||||
onConnfail: function(condition) {
|
||||
onConnfail: function(ev, condition) {
|
||||
jsxc.debug('XMPP connection failed: ' + condition);
|
||||
|
||||
if (jsxc.triggeredFromForm) {
|
||||
if (jsxc.options.loginForm.triggered) {
|
||||
jsxc.submitLoginForm();
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Triggered on auth fail.
|
||||
*
|
||||
* @private
|
||||
*/
|
||||
onAuthFail: function() {
|
||||
if (jsxc.options.loginForm.triggered) {
|
||||
switch (jsxc.options.loginForm.onAuthFail || 'ask') {
|
||||
case 'ask':
|
||||
jsxc.gui.showAuthFail();
|
||||
break;
|
||||
case 'submit':
|
||||
jsxc.submitLoginForm();
|
||||
break;
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Triggered on initial roster load
|
||||
*
|
||||
@@ -3613,8 +3855,6 @@ var jsxc;
|
||||
var ptype = $(presence).attr('type');
|
||||
var from = $(presence).attr('from');
|
||||
var jid = Strophe.getBareJidFromJid(from).toLowerCase();
|
||||
var to = $(presence).attr('to');
|
||||
to = (to) ? Strophe.getBareJidFromJid(to).toLowerCase() : jid;
|
||||
var r = Strophe.getResourceFromJid(from);
|
||||
var bid = jsxc.jidToBid(jid);
|
||||
var data = jsxc.storage.getUserItem('buddy', bid);
|
||||
@@ -3622,7 +3862,7 @@ var jsxc;
|
||||
var status = null;
|
||||
var xVCard = $(presence).find('x[xmlns="vcard-temp:x:update"]');
|
||||
|
||||
if (jid === to) {
|
||||
if (jid === Strophe.getBareJidFromJid(jsxc.storage.getItem("jid"))) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -3716,28 +3956,66 @@ var jsxc;
|
||||
* @returns {Boolean}
|
||||
* @private
|
||||
*/
|
||||
onMessage: function(message) {
|
||||
/*
|
||||
* <message xmlns='jabber:client' type='chat' to='' id='' from=''>
|
||||
* <body>...</body> <active
|
||||
* xmlns='http://jabber.org/protocol/chatstates'/> </message>
|
||||
*/
|
||||
onMessage: function(stanza) {
|
||||
|
||||
jsxc.debug('Incoming message', message);
|
||||
var forwarded = $(stanza).find('forwarded[xmlns="' + jsxc.CONST.NS.FORWARD + '"]');
|
||||
var message, carbon;
|
||||
|
||||
if (forwarded.length > 0) {
|
||||
message = forwarded.find('> message');
|
||||
forwarded = true;
|
||||
carbon = $(stanza).find('> [xmlns="' + jsxc.CONST.NS.CARBONS + '"]');
|
||||
|
||||
if (carbon.length === 0) {
|
||||
carbon = false;
|
||||
}
|
||||
|
||||
jsxc.debug('Incoming forwarded message', message);
|
||||
} else {
|
||||
message = stanza;
|
||||
forwarded = false;
|
||||
carbon = false;
|
||||
|
||||
jsxc.debug('Incoming message', message);
|
||||
}
|
||||
|
||||
var body = $(message).find('body:first').text();
|
||||
|
||||
if (!body || (body.match(/\?OTR/i) && forwarded)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
var type = $(message).attr('type');
|
||||
var from = $(message).attr('from');
|
||||
var mid = $(message).attr('id');
|
||||
var jid = Strophe.getBareJidFromJid(from);
|
||||
var bid = jsxc.jidToBid(jid);
|
||||
var data = jsxc.storage.getUserItem('buddy', bid);
|
||||
var body = $(message).find('body:first').text();
|
||||
var request = $(message).find("request[xmlns='urn:xmpp:receipts']");
|
||||
var bid;
|
||||
|
||||
var delay = $(message).find('delay[xmlns="urn:xmpp:delay"]');
|
||||
|
||||
var stamp = (delay.length > 0) ? new Date(delay.attr('stamp')) : new Date();
|
||||
stamp = stamp.getTime();
|
||||
|
||||
if (carbon) {
|
||||
var direction = (carbon.prop("tagName") === 'sent') ? 'out' : 'in';
|
||||
bid = jsxc.jidToBid((direction === 'out') ? $(message).attr('to') : from);
|
||||
|
||||
jsxc.gui.window.postMessage(bid, direction, body, false, forwarded, stamp);
|
||||
|
||||
if (!body) {
|
||||
return true;
|
||||
|
||||
} else if (forwarded) {
|
||||
// Someone forwarded a message to us
|
||||
|
||||
body = from + jsxc.translate(' %%to%% ') + $(stanza).attr('to') + '"' + body + '"';
|
||||
|
||||
from = $(stanza).attr('from');
|
||||
}
|
||||
|
||||
var jid = Strophe.getBareJidFromJid(from);
|
||||
bid = jsxc.jidToBid(jid);
|
||||
var data = jsxc.storage.getUserItem('buddy', bid);
|
||||
var request = $(message).find("request[xmlns='urn:xmpp:receipts']");
|
||||
|
||||
if (data === null) {
|
||||
// jid not in roster
|
||||
|
||||
@@ -3750,7 +4028,7 @@ var jsxc;
|
||||
var msg = jsxc.removeHTML(body);
|
||||
msg = jsxc.escapeHTML(msg);
|
||||
|
||||
jsxc.storage.saveMessage(bid, 'in', msg);
|
||||
jsxc.storage.saveMessage(bid, 'in', msg, false, forwarded, stamp);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -3772,7 +4050,7 @@ var jsxc;
|
||||
jsxc.otr.create(bid);
|
||||
}
|
||||
|
||||
if (mid !== null && request.length && data !== null && (data.sub === 'both' || data.sub === 'from') && type === 'chat') {
|
||||
if (!forwarded && mid !== null && request.length && data !== null && (data.sub === 'both' || data.sub === 'from') && type === 'chat') {
|
||||
// Send received according to XEP-0184
|
||||
jsxc.xmpp.conn.send($msg({
|
||||
to: from
|
||||
@@ -3783,9 +4061,12 @@ var jsxc;
|
||||
}
|
||||
|
||||
if (jsxc.otr.objects.hasOwnProperty(bid)) {
|
||||
jsxc.otr.objects[bid].receiveMsg(body);
|
||||
jsxc.otr.objects[bid].receiveMsg(body, {
|
||||
stamp: stamp,
|
||||
forwarded: forwarded
|
||||
});
|
||||
} else {
|
||||
jsxc.gui.window.postMessage(bid, 'in', body);
|
||||
jsxc.gui.window.postMessage(bid, 'in', body, false, forwarded, stamp);
|
||||
}
|
||||
|
||||
// preserve handler
|
||||
@@ -3944,6 +4225,12 @@ var jsxc;
|
||||
id: uid
|
||||
}).c('body').t(msg);
|
||||
|
||||
if (jsxc.xmpp.carbons.enabled && msg.match(/^\?OTR/)) {
|
||||
xmlMsg.up().c("private", {
|
||||
xmlns: jsxc.CONST.NS.CARBONS
|
||||
});
|
||||
}
|
||||
|
||||
if (type === 'chat' && (isBar || jsxc.xmpp.conn.caps.hasFeatureByJid(jid, Strophe.NS.RECEIPTS))) {
|
||||
// Add request according to XEP-0184
|
||||
xmlMsg.up().c('request', {
|
||||
@@ -4001,6 +4288,85 @@ var jsxc;
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Handle carbons (XEP-0280);
|
||||
*
|
||||
* @namespace jsxc.xmpp.carbons
|
||||
*/
|
||||
jsxc.xmpp.carbons = {
|
||||
enabled: false,
|
||||
|
||||
/**
|
||||
* Enable carbons.
|
||||
*
|
||||
* @memberOf jsxc.xmpp.carbons
|
||||
* @param cb callback
|
||||
*/
|
||||
enable: function(cb) {
|
||||
var iq = $iq({
|
||||
type: 'set'
|
||||
}).c('enable', {
|
||||
xmlns: jsxc.CONST.NS.CARBONS
|
||||
});
|
||||
|
||||
jsxc.xmpp.conn.sendIQ(iq, function() {
|
||||
jsxc.xmpp.carbons.enabled = true;
|
||||
|
||||
jsxc.debug('Carbons enabled');
|
||||
|
||||
if (cb) {
|
||||
cb.call(this);
|
||||
}
|
||||
}, function(stanza) {
|
||||
jsxc.warn('Could not enable carbons', stanza);
|
||||
});
|
||||
},
|
||||
|
||||
/**
|
||||
* Disable carbons.
|
||||
*
|
||||
* @memberOf jsxc.xmpp.carbons
|
||||
* @param cb callback
|
||||
*/
|
||||
disable: function(cb) {
|
||||
var iq = $iq({
|
||||
type: 'set'
|
||||
}).c('disable', {
|
||||
xmlns: jsxc.CONST.NS.CARBONS
|
||||
});
|
||||
|
||||
jsxc.xmpp.conn.sendIQ(iq, function() {
|
||||
jsxc.xmpp.carbons.enabled = false;
|
||||
|
||||
jsxc.debug('Carbons disabled');
|
||||
|
||||
if (cb) {
|
||||
cb.call(this);
|
||||
}
|
||||
}, function(stanza) {
|
||||
jsxc.warn('Could not disable carbons', stanza);
|
||||
});
|
||||
},
|
||||
|
||||
/**
|
||||
* Enable/Disable carbons depending on options key.
|
||||
*
|
||||
* @memberOf jsxc.xmpp.carbons
|
||||
* @param err error message
|
||||
*/
|
||||
refresh: function(err) {
|
||||
if (err === false) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (jsxc.options.get('carbons').enable) {
|
||||
return jsxc.xmpp.carbons.enable();
|
||||
}
|
||||
|
||||
return jsxc.xmpp.carbons.disable();
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Handle long-live data
|
||||
*
|
||||
@@ -4540,9 +4906,11 @@ var jsxc;
|
||||
* @param bid
|
||||
* @param direction
|
||||
* @param msg
|
||||
* @param encrypted
|
||||
* @param forwarded
|
||||
* @return post
|
||||
*/
|
||||
saveMessage: function(bid, direction, msg) {
|
||||
saveMessage: function(bid, direction, msg, encrypted, forwarded, stamp) {
|
||||
var chat = jsxc.storage.getUserItem('chat', bid) || [];
|
||||
|
||||
var uid = new Date().getTime() + ':msg';
|
||||
@@ -4555,7 +4923,10 @@ var jsxc;
|
||||
direction: direction,
|
||||
msg: msg,
|
||||
uid: uid.replace(/:/, '-'),
|
||||
received: false
|
||||
received: false,
|
||||
encrypted: encrypted || false,
|
||||
forwarded: forwarded || false,
|
||||
stamp: stamp || new Date().getTime()
|
||||
};
|
||||
|
||||
chat.unshift(post);
|
||||
@@ -4609,20 +4980,24 @@ var jsxc;
|
||||
* Handler for otr receive event
|
||||
*
|
||||
* @memberOf jsxc.otr
|
||||
* @param {string} bid
|
||||
* @param {string} msg received message
|
||||
* @param {string} encrypted True, if msg was encrypted.
|
||||
* @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(bid, msg, encrypted) {
|
||||
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 && !encrypted) {
|
||||
jsxc.gui.window.postMessage(bid, 'sys', jsxc.translate('%%Received an unencrypted message.%% [') + msg + ']');
|
||||
if (jsxc.otr.objects[bid].msgstate !== OTR.CONST.MSGSTATE_PLAINTEXT && !d.encrypted) {
|
||||
jsxc.gui.window.postMessage(bid, 'sys', jsxc.translate('%%Received an unencrypted message.%% [') + d.msg + ']', d.encrypted, d.forwarded, d.stamp);
|
||||
} else {
|
||||
jsxc.gui.window.postMessage(bid, 'in', msg);
|
||||
jsxc.gui.window.postMessage(bid, 'in', d.msg, d.encrypted, d.forwarded, d.stamp);
|
||||
}
|
||||
},
|
||||
|
||||
@@ -4757,8 +5132,14 @@ var jsxc;
|
||||
});
|
||||
|
||||
// Receive message
|
||||
jsxc.otr.objects[bid].on('ui', function(msg, encrypted) {
|
||||
jsxc.otr.receiveMessage(bid, msg, encrypted === true);
|
||||
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
|
||||
@@ -5349,16 +5730,7 @@ var jsxc;
|
||||
notice.click(function() {
|
||||
jsxc.notice.remove(nid);
|
||||
|
||||
var fnList = fnName.split('.');
|
||||
var fn = jsxc[fnList[0]];
|
||||
var i;
|
||||
for (i = 1; i < fnList.length; i++) {
|
||||
fn = fn[fnList[i]];
|
||||
}
|
||||
|
||||
if (typeof fn === 'function') {
|
||||
fn.apply(null, fnParams);
|
||||
}
|
||||
jsxc.exec(fnName, fnParams);
|
||||
|
||||
return false;
|
||||
});
|
||||
|
||||
@@ -275,6 +275,11 @@ jsxc.gui.template.videoWindow = '<div class="jsxc_webrtc">\
|
||||
jsxc.debug('Update icon', bid);
|
||||
|
||||
var self = jsxc.webrtc;
|
||||
|
||||
if (bid === jsxc.jidToBid(self.conn.jid)) {
|
||||
return;
|
||||
}
|
||||
|
||||
var win = jsxc.gui.window.get(bid);
|
||||
var jid = win.data('jid') || jsxc.storage.getUserItem('buddy', bid).jid;
|
||||
|
||||
|
||||
@@ -1,379 +0,0 @@
|
||||
.jsxc_webrtc {
|
||||
width: 900px;
|
||||
}
|
||||
|
||||
.jsxc_webrtc li .jsxc_name {
|
||||
cursor: auto;
|
||||
}
|
||||
|
||||
.jsxc_webrtc li .jsxc_name:hover {
|
||||
color: #939393;
|
||||
}
|
||||
|
||||
.jsxc_videoContainer {
|
||||
width: 640px;
|
||||
height: 480px;
|
||||
position: relative;
|
||||
background-color: #a4a4a4;
|
||||
}
|
||||
|
||||
.jsxc_videoContainer video, .jsxc_videoContainer .jsxc_noRemoteVideo {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.jsxc_remotevideo, .jsxc_noRemoteVideo {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
position: absolute;
|
||||
top: 0px;
|
||||
left: 0px;
|
||||
z-index: 9000;
|
||||
background-color: #a4a4a4;
|
||||
}
|
||||
|
||||
.jsxc_localvideo {
|
||||
width: 160px;
|
||||
height: 120px;
|
||||
position: absolute;
|
||||
right: 10px;
|
||||
bottom: 10px;
|
||||
z-index: 9990;
|
||||
background-color: black;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.jsxc_noRemoteVideo p {
|
||||
position: absolute;
|
||||
bottom: 0px;
|
||||
left:0px;
|
||||
text-align: center;
|
||||
color: #fff;
|
||||
width: 100%;
|
||||
z-index: 100;
|
||||
}
|
||||
|
||||
.jsxc_noRemoteVideo > div {
|
||||
width: 200px;
|
||||
height: 200px;
|
||||
overflow: hidden;
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
margin-top: -100px;
|
||||
left: 50%;
|
||||
margin-left: -100px;
|
||||
}
|
||||
|
||||
.jsxc_noRemoteVideo > div > div {
|
||||
background-color: #717171;
|
||||
}
|
||||
|
||||
.jsxc_noRemoteVideo > div > div:first-child {
|
||||
width: 50%;
|
||||
height: 50%;
|
||||
border-radius: 50%;
|
||||
position: absolute;
|
||||
left: 50%;
|
||||
margin-left: -25%;
|
||||
top: 10%;
|
||||
}
|
||||
|
||||
.jsxc_noRemoteVideo > div > div:last-child {
|
||||
position: absolute;
|
||||
bottom: -50%;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
border-radius: 50%;
|
||||
}
|
||||
|
||||
.jsxc_webrtc .jsxc_status {
|
||||
z-index: 9999;
|
||||
border-radius: 20px;
|
||||
display: none;
|
||||
position: absolute;
|
||||
top: 30px;
|
||||
left: 50%;
|
||||
background-color: lightgrey;
|
||||
background-color: rgba(0, 0, 0, 0.5);
|
||||
color: white;
|
||||
padding: 15px;
|
||||
font-weight: bold;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.jsxc_webrtc .slimScrollDiv {
|
||||
opacity: 1 !important;
|
||||
}
|
||||
|
||||
div:-moz-full-screen {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background-color: black;
|
||||
}
|
||||
|
||||
div:-ms-full-screen {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background-color: black;
|
||||
}
|
||||
|
||||
div:-webkit-full-screen {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background-color: black;
|
||||
}
|
||||
|
||||
div:fullscreen {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background-color: black;
|
||||
}
|
||||
|
||||
div:-moz-full-screen.jsxc_localvideo {
|
||||
border: 1px solid white;
|
||||
}
|
||||
|
||||
div:-webkit-full-screen.jsxc_localvideo {
|
||||
border: 1px solid white;
|
||||
}
|
||||
|
||||
div:-ms-full-screen.jsxc_localvideo {
|
||||
border: 1px solid white;
|
||||
}
|
||||
|
||||
div:fullscreen.jsxc_localvideo {
|
||||
border: 1px solid white;
|
||||
}
|
||||
|
||||
.jsxc_fullscreen.jsxc_localvideo {
|
||||
border: 1px solid white;
|
||||
}
|
||||
|
||||
.jsxc_controlbar {
|
||||
width: 640px;
|
||||
}
|
||||
|
||||
.jsxc_controlbar .jsxc_showchat {
|
||||
float: right;
|
||||
}
|
||||
|
||||
.jsxc_multi>div {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.jsxc_snapshotbar {
|
||||
width: 100%;
|
||||
display: none;
|
||||
}
|
||||
|
||||
.jsxc_snapshotbar img {
|
||||
height: 50px;
|
||||
}
|
||||
|
||||
.jsxc_buttongroup {
|
||||
display: inline;
|
||||
}
|
||||
|
||||
.jsxc_buttongroup button:first-child {
|
||||
border-top-right-radius: 0px;
|
||||
border-bottom-right-radius: 0px;
|
||||
margin-right: 0px;
|
||||
}
|
||||
|
||||
.jsxc_buttongroup button:last-child {
|
||||
border-top-left-radius: 0px;
|
||||
border-bottom-left-radius: 0px;
|
||||
margin-left: 0px;
|
||||
}
|
||||
|
||||
.jsxc_chatarea {
|
||||
position: relative;
|
||||
float:right;
|
||||
height: 480px;
|
||||
width: 250px;
|
||||
background-color: #A4A4A4;
|
||||
}
|
||||
|
||||
.jsxc_chatarea > ul {
|
||||
width: 250px;
|
||||
height: 480px;
|
||||
list-style: none;
|
||||
padding: 0px;
|
||||
}
|
||||
|
||||
.jsxc_chatarea .jsxc_settings {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
.jsxc_chatarea .jsxc_close {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
.jsxc_chatarea .jsxc_video {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
.jsxc_chatarea .jsxc_bar {
|
||||
|
||||
}
|
||||
|
||||
.jsxc_chatarea .jsxc_window {
|
||||
bottom: 0px;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
.jsxc_videoSuitable .jsxc_name {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
div.jsxc_video {
|
||||
background-image: url('img/camera_icon_grey.svg');
|
||||
background-repeat: no-repeat;
|
||||
background-position: center center;
|
||||
background-size: 15px 15px;
|
||||
}
|
||||
|
||||
div.jsxc_video:not(.jsxc_disabled):hover, #jsxc_buddylist .jsxc_options .jsxc_video {
|
||||
background-image: url('img/camera_icon_white.svg');
|
||||
}
|
||||
|
||||
#jsxc_buddylist .jsxc_options .jsxc_video.jsxc_disabled {
|
||||
opacity: 0.2;
|
||||
}
|
||||
|
||||
.bubblingG {
|
||||
text-align: center;
|
||||
width:129px;
|
||||
height:80px;
|
||||
position: absolute;
|
||||
top: 40%;
|
||||
left: 50%;
|
||||
margin-left: -64px;
|
||||
}
|
||||
|
||||
.bubblingG span {
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
margin: 40px auto;
|
||||
background: #000000;
|
||||
-moz-border-radius: 81px;
|
||||
-moz-animation: bubblingG 1.3s infinite alternate;
|
||||
-webkit-border-radius: 81px;
|
||||
-webkit-animation: bubblingG 1.3s infinite alternate;
|
||||
-ms-border-radius: 81px;
|
||||
-ms-animation: bubblingG 1.3s infinite alternate;
|
||||
-o-border-radius: 81px;
|
||||
-o-animation: bubblingG 1.3s infinite alternate;
|
||||
border-radius: 81px;
|
||||
animation: bubblingG 1.3s infinite alternate;
|
||||
}
|
||||
|
||||
#bubblingG_1 {
|
||||
-moz-animation-delay: 0s;
|
||||
-webkit-animation-delay: 0s;
|
||||
-ms-animation-delay: 0s;
|
||||
-o-animation-delay: 0s;
|
||||
animation-delay: 0s;
|
||||
}
|
||||
|
||||
#bubblingG_2 {
|
||||
-moz-animation-delay: 0.39s;
|
||||
-webkit-animation-delay: 0.39s;
|
||||
-ms-animation-delay: 0.39s;
|
||||
-o-animation-delay: 0.39s;
|
||||
animation-delay: 0.39s;
|
||||
}
|
||||
|
||||
#bubblingG_3 {
|
||||
-moz-animation-delay: 0.78s;
|
||||
-webkit-animation-delay: 0.78s;
|
||||
-ms-animation-delay: 0.78s;
|
||||
-o-animation-delay: 0.78s;
|
||||
animation-delay: 0.78s;
|
||||
}
|
||||
|
||||
@-moz-keyframes bubblingG {
|
||||
0% {
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
background-color:#000000;
|
||||
-moz-transform: translateY(0);
|
||||
}
|
||||
|
||||
100% {
|
||||
width: 39px;
|
||||
height: 39px;
|
||||
background-color:#FFFFFF;
|
||||
-moz-transform: translateY(-34px);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@-webkit-keyframes bubblingG {
|
||||
0% {
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
background-color:#000000;
|
||||
-webkit-transform: translateY(0);
|
||||
}
|
||||
|
||||
100% {
|
||||
width: 39px;
|
||||
height: 39px;
|
||||
background-color:#FFFFFF;
|
||||
-webkit-transform: translateY(-34px);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@-ms-keyframes bubblingG {
|
||||
0% {
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
background-color:#000000;
|
||||
-ms-transform: translateY(0);
|
||||
}
|
||||
|
||||
100% {
|
||||
width: 39px;
|
||||
height: 39px;
|
||||
background-color:#FFFFFF;
|
||||
-ms-transform: translateY(-34px);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@-o-keyframes bubblingG {
|
||||
0% {
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
background-color:#000000;
|
||||
-o-transform: translateY(0);
|
||||
}
|
||||
|
||||
100% {
|
||||
width: 39px;
|
||||
height: 39px;
|
||||
background-color:#FFFFFF;
|
||||
-o-transform: translateY(-34px);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@keyframes bubblingG {
|
||||
0% {
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
background-color:#000000;
|
||||
transform: translateY(0);
|
||||
}
|
||||
|
||||
100% {
|
||||
width: 39px;
|
||||
height: 39px;
|
||||
background-color:#FFFFFF;
|
||||
transform: translateY(-34px);
|
||||
}
|
||||
|
||||
}
|
||||
+1
-1
Submodule lib/otr updated: 1b34e35691...5831c5d49a
@@ -191,13 +191,18 @@
|
||||
* Returns: (Boolean) - false, to automatically remove the handler.
|
||||
*/
|
||||
_handleDiscoInfoReply: function(stanza) {
|
||||
var query = stanza.querySelector('query'), node = query.getAttribute('node').split('#'), ver = node[1], from = stanza.getAttribute('from');
|
||||
var query = stanza.querySelector('query');
|
||||
var from = stanza.getAttribute('from');
|
||||
var node = query.getAttribute('node');
|
||||
var ver = (node)? node.split('#')[1] : this._jidVerIndex[from]; //fix open prosody issue
|
||||
|
||||
if (!this._knownCapabilities[ver]) {
|
||||
var childNodes = query.childNodes, childNodesLen = childNodes.length;
|
||||
this._knownCapabilities[ver] = {
|
||||
features: [],
|
||||
identities: []
|
||||
};
|
||||
|
||||
for (var i = 0; i < childNodesLen; i++) {
|
||||
var node = childNodes[i];
|
||||
if (node.nodeName == 'feature') {
|
||||
@@ -205,10 +210,11 @@
|
||||
} else if (node.nodeName == 'identity') {
|
||||
this._knownCapabilities[ver]['identities'].push(this._attributesToJsObject(node.attributes));
|
||||
} else {
|
||||
if (_knownCapabilities[ver][node.nodeName])
|
||||
_knownCapabilities[ver][node.nodeName] = [];
|
||||
if (typeof this._knownCapabilities[ver][node.nodeName] === 'undefined')
|
||||
this._knownCapabilities[ver][node.nodeName] = [];
|
||||
this._knownCapabilities[ver][node.nodeName].push(this._attributesToJsObject(node.attributes));
|
||||
}
|
||||
|
||||
}
|
||||
this._jidVerIndex[from] = ver;
|
||||
} else if (!this._jidVerIndex[from] || !this._jidVerIndex[from] !== ver) {
|
||||
|
||||
+8
-2
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "jsxc",
|
||||
"version": "1.0.0",
|
||||
"version": "1.1.0a",
|
||||
"description": "Real-time chat app",
|
||||
"homepage": "http://www.jsxc.org/",
|
||||
"bugs": "https://github.com/sualko/jsxc/issues",
|
||||
@@ -11,18 +11,24 @@
|
||||
"url": "https://github.com/sualko/jsxc"
|
||||
},
|
||||
"devDependencies": {
|
||||
"autoprefixer-core": "^4.0.2",
|
||||
"grunt": "~0.4.4",
|
||||
"grunt-autoprefixer": "^2.1.0",
|
||||
"grunt-banner": "~0.2.2",
|
||||
"grunt-cli": "~0.1.13",
|
||||
"grunt-contrib-clean": "~0.5.0",
|
||||
"grunt-contrib-compress": "^0.10.0",
|
||||
"grunt-contrib-concat": "^0.5.0",
|
||||
"grunt-contrib-copy": "~0.5.0",
|
||||
"grunt-contrib-csslint": "^0.3.1",
|
||||
"grunt-contrib-jshint": "~0.9.2",
|
||||
"grunt-contrib-uglify": "^0.6.0",
|
||||
"grunt-data-uri": "^0.2.0",
|
||||
"grunt-jsdoc": "^0.5.7",
|
||||
"grunt-postcss": "^0.2.0",
|
||||
"grunt-sass": "^0.17.0",
|
||||
"grunt-search": "^0.1.6",
|
||||
"grunt-shell": "^1.1.1",
|
||||
"grunt-text-replace": "~0.3.11"
|
||||
"grunt-text-replace": "~0.4.0"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,147 @@
|
||||
@import 'modules';
|
||||
|
||||
#jsxc_buddylist {
|
||||
list-style: none;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
width: 204px;
|
||||
li {
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
height: 30px;
|
||||
border-bottom: 1px solid $roster_bottom_border_top;
|
||||
cursor: pointer;
|
||||
width: 200px;
|
||||
position: relative;
|
||||
color: $roster_color;
|
||||
font-family: $font_sans;
|
||||
line-height: 30px;
|
||||
padding-left: 3px;
|
||||
z-index: 85;
|
||||
overflow: hidden;
|
||||
&.jsxc_expand {
|
||||
height: 54px;
|
||||
.jsxc_avatar {
|
||||
width: 48px;
|
||||
height: 48px;
|
||||
img {
|
||||
width: 48px;
|
||||
height: 48px;
|
||||
}
|
||||
}
|
||||
}
|
||||
&:hover .jsxc_avatar {
|
||||
@extend %avatar-icon;
|
||||
}
|
||||
.jsxc_name:before {
|
||||
content: ' ';
|
||||
width: 0;
|
||||
height: 0;
|
||||
display: inline-block;
|
||||
opacity: 0.0;
|
||||
transition: width 0.5s, opacity 0.5s;
|
||||
}
|
||||
&.jsxc_unreadMsg .jsxc_name:before {
|
||||
width: 12px;
|
||||
height: 12px;
|
||||
border-radius: 6px;
|
||||
background-color: $roster_unread_bg;
|
||||
margin-right: 3px;
|
||||
opacity: 1.0;
|
||||
transition: width 0.5s, opacity 0.5s;
|
||||
}
|
||||
}
|
||||
.jsxc_name {
|
||||
padding-right: 30px;
|
||||
}
|
||||
.jsxc_oneway {
|
||||
opacity: 0.7;
|
||||
}
|
||||
.jsxc_right {
|
||||
float: right;
|
||||
margin-right: 6px;
|
||||
div {
|
||||
font-weight: bold;
|
||||
text-align: center;
|
||||
font-size: 13px;
|
||||
line-height: 20px;
|
||||
color: $white;
|
||||
&:hover {
|
||||
opacity: 1.0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.jsxc_control {
|
||||
position: absolute;
|
||||
width: 30px;
|
||||
height: 30px;
|
||||
top: 0;
|
||||
right: 0;
|
||||
cursor: pointer;
|
||||
&:after {
|
||||
content: '▾';
|
||||
position: absolute;
|
||||
left: 50%;
|
||||
top: 15px;
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
line-height: 16px;
|
||||
text-align: center;
|
||||
margin-left: -8px;
|
||||
margin-top: -8px;
|
||||
border-radius: 8px;
|
||||
color: $roster_icon_color;
|
||||
background-color: $roster_icon_bg;
|
||||
opacity: 0.6;
|
||||
transition: transform 0.5s;
|
||||
}
|
||||
&:hover:after {
|
||||
color: $white;
|
||||
opacity: 1.0;
|
||||
}
|
||||
}
|
||||
.jsxc_options {
|
||||
height: 20px;
|
||||
float: left;
|
||||
border-radius: 2px;
|
||||
background-color: $roster_icon_bg;
|
||||
> div {
|
||||
height: 20px;
|
||||
width: 20px;
|
||||
float: left;
|
||||
margin-right: 0 1px;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center center;
|
||||
opacity: 0.6;
|
||||
cursor: pointer;
|
||||
&:hover {
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
.jsxc_chaticon {
|
||||
background-image: image-url('speech_balloon_white.svg');
|
||||
background-size: 15px 15px;
|
||||
}
|
||||
.jsxc_videoicon {
|
||||
background-image: image-url('camera_icon_white.svg');
|
||||
background-size: 13px 13px;
|
||||
}
|
||||
.jsxc_vcardicon {
|
||||
font-size: 15px;
|
||||
line-height: 20px;
|
||||
text-align: center;
|
||||
color: $white;
|
||||
font-weight: bold;
|
||||
font-family: $font_serif;
|
||||
}
|
||||
li.jsxc_expand .jsxc_control:after {
|
||||
transform: rotate(180deg);
|
||||
}
|
||||
&.jsxc_hideOffline {
|
||||
.jsxc_offline {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,115 @@
|
||||
$black: #000;
|
||||
$gray10: lighten($black, 10%);
|
||||
$gray20: lighten($black, 20%);
|
||||
$gray30: lighten($black, 30%);
|
||||
$gray40: lighten($black, 40%);
|
||||
$gray50: lighten($black, 50%);
|
||||
$gray60: lighten($black, 60%);
|
||||
$gray70: lighten($black, 70%);
|
||||
$gray80: lighten($black, 80%);
|
||||
$gray90: lighten($black, 90%);
|
||||
$white: #fff;
|
||||
$orange: #ffa500;
|
||||
$red: #f00;
|
||||
$blue: #00f;
|
||||
|
||||
|
||||
$shadow: $black;
|
||||
$separator: $black;
|
||||
$invalid_border: $red;
|
||||
$name_hover: $white;
|
||||
$dialog_fieldset_border: $gray80;
|
||||
$dialog_input_invalid: $red;
|
||||
$dialog_input_readonly_bg: $gray90;
|
||||
$spot_bg: $white;
|
||||
$spot_border: $black;
|
||||
$state_online: #00bfff;
|
||||
$state_chat: #00bfff;
|
||||
$state_away: $orange;
|
||||
$state_xa: $orange;
|
||||
$state_dnd: $red;
|
||||
$state_offline: $gray60;
|
||||
$notice_bg: $orange;
|
||||
$notice_color: $black;
|
||||
$window_unread_cycle: $orange;
|
||||
$window_bar_bg: $gray10;
|
||||
$window_bar_color: $gray50;
|
||||
$window_bg: $gray60;
|
||||
$window_gradient: $gray60;
|
||||
$window_placeholder: $black;
|
||||
|
||||
$tools_color: $gray50;
|
||||
$window_close_hover: $white;
|
||||
|
||||
$chatmessage_bg: $white;
|
||||
$chatmessage_a: $blue;
|
||||
$chatmessage_timestamp: $gray60;
|
||||
$chatmessage_in_bg: #f1f7fd;
|
||||
$chatmessage_in_border: #a6b8c9;
|
||||
$chatmessage_out_bg: #e6ffd1;
|
||||
$chatmessage_out_border: #b4d89f;
|
||||
$chatmessage_received: #008000;
|
||||
|
||||
$window_settings_bg: $gray10;
|
||||
$window_settings_border_top: $gray80;
|
||||
$window_settings_disabled: $gray30;
|
||||
$window_settings_bg_hover: #3f8fba;
|
||||
$window_settings_color_hover: $white;
|
||||
|
||||
$windowListSB_bg: $gray80;
|
||||
$windowListSB_color: $gray50;
|
||||
$windowListSB_bg_hover: $gray70;
|
||||
$windowListSB_bg_disabled: $gray90;
|
||||
$windowListSB_color_disabled: $gray80;
|
||||
|
||||
$emoticon_selection_bg: rgba($gray20, 0.8);
|
||||
$emoticon_selection_hover: rgba($white, 0.8);
|
||||
|
||||
$roster_bg: $gray20;
|
||||
$roster_input_bg: $white;
|
||||
$roster_input_shadow: $gray40;
|
||||
$roster_color: $gray50;
|
||||
$roster_a: $gray70;
|
||||
$roster_unread_bg: $orange;
|
||||
$roster_icon_bg: rgba($gray40, 0.5);
|
||||
$roster_icon_color: $gray70;
|
||||
|
||||
$roster_toggle_hover: rgba($gray60, 0.5);
|
||||
|
||||
$roster_border_left: $gray60;
|
||||
$roster_bottom_border_top: $gray50;
|
||||
$roster_bottom_bg: $gray10;
|
||||
$roster_bottom_color: $gray50;
|
||||
$roster_bottom_disabled: $gray20;
|
||||
$roster_bottom_bg_hover: #3f8fba;
|
||||
$roster_bottom_color_hover: $white;
|
||||
|
||||
$fullscreen_bg: $gray60;
|
||||
$video_status_bg: rgba($black, 0.5);
|
||||
$video_status_color: $white;
|
||||
$video_bg: $gray60;
|
||||
|
||||
$novideo_color: $white;
|
||||
$novideo_bg: $gray30;
|
||||
|
||||
$bubbling_bg: $black;
|
||||
$bubbling_start_bg: $black;
|
||||
$bubbling_end_bg: $white;
|
||||
|
||||
$avatar_bg: $gray60;
|
||||
$avatar_color: $gray70;
|
||||
|
||||
$loginForm_bg: #5cb85c;
|
||||
$loginForm_border: #4cae4c;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,681 @@
|
||||
.jsxc_right {
|
||||
text-align: right;
|
||||
}
|
||||
.jsxc_center {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.jsxc_sep {
|
||||
border-top: 1px solid $separator;
|
||||
}
|
||||
.jsxc_name {
|
||||
overflow: hidden;
|
||||
height: 30px;
|
||||
cursor: pointer;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
&:hover {
|
||||
color: $name_hover;
|
||||
}
|
||||
}
|
||||
|
||||
.jsxc_maxWidth {
|
||||
max-width: 500px;
|
||||
}
|
||||
|
||||
#jsxc_dialog {
|
||||
padding: 10px;
|
||||
min-width: 300px;
|
||||
ul {
|
||||
list-style: none;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
li {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
p {
|
||||
margin-bottom: 1em;
|
||||
input {
|
||||
margin-bottom: 5px;
|
||||
width: 60%;
|
||||
outline: none;
|
||||
}
|
||||
input[type="submit"] {
|
||||
width: auto;
|
||||
}
|
||||
label {
|
||||
display: block;
|
||||
width: 30%;
|
||||
float: left;
|
||||
padding: 6px 0;
|
||||
}
|
||||
}
|
||||
h3 {
|
||||
font-size: 120%;
|
||||
font-weight: bold;
|
||||
margin-bottom: 10px;
|
||||
margin-top: 20px;
|
||||
}
|
||||
.jsxc_right {
|
||||
margin-top: 20px;
|
||||
}
|
||||
fieldset {
|
||||
border: 2px solid $dialog_fieldset_border;
|
||||
}
|
||||
legend {
|
||||
padding: 0 10px;
|
||||
font-weight: bold;
|
||||
}
|
||||
input {
|
||||
outline: none;
|
||||
&:invalid {
|
||||
border: 1px solid $dialog_input_invalid;
|
||||
}
|
||||
}
|
||||
.jsxc_fieldset {
|
||||
width: 280px;
|
||||
padding: 10px;
|
||||
border-radius: 3px;
|
||||
label {
|
||||
display: inline-block;
|
||||
width: 100px;
|
||||
}
|
||||
input[type="Number"] {
|
||||
display: inline-block;
|
||||
width: 50px;
|
||||
}
|
||||
}
|
||||
input[readonly] {
|
||||
background-color: $dialog_input_readonly_bg;
|
||||
}
|
||||
}
|
||||
.jsxc_avatar {
|
||||
@extend %avatar-icon;
|
||||
img {
|
||||
display: block;
|
||||
width: 25px;
|
||||
height: 25px;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
ul.jsxc_vCard {
|
||||
min-width: 400px;
|
||||
ul {
|
||||
margin-left: 20px;
|
||||
}
|
||||
li {
|
||||
cursor: default !important;
|
||||
}
|
||||
strong {
|
||||
}
|
||||
}
|
||||
|
||||
.jsxc_spot {
|
||||
display: inline-block;
|
||||
width: 10px;
|
||||
height: 10px;
|
||||
background-color: $white;
|
||||
border-radius: 5px;
|
||||
text-indent: -99999em;
|
||||
margin-top: 3px;
|
||||
margin-right: 5px;
|
||||
border: 1px solid $spot_border !important;
|
||||
line-height: 100%;
|
||||
cursor: pointer;
|
||||
&.jsxc_online {
|
||||
background-color: $state_online;
|
||||
}
|
||||
&.jsxc_chat {
|
||||
background-color: $state_chat;
|
||||
}
|
||||
&.jsxc_away {
|
||||
background-color: $state_away;
|
||||
}
|
||||
&.jsxc_xa {
|
||||
background-color: $state_xa;
|
||||
}
|
||||
&.jsxc_dnd {
|
||||
background-color: $state_dnd;
|
||||
}
|
||||
&.jsxc_offline {
|
||||
background-color: $state_offline;
|
||||
}
|
||||
}
|
||||
|
||||
#jsxc_menu {
|
||||
height: 30px;
|
||||
width: 30px;
|
||||
cursor: pointer;
|
||||
float: right;
|
||||
text-align: center;
|
||||
&:hover>span {
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
#jsxc_avatar {
|
||||
height: 30px;
|
||||
width: 30px;
|
||||
float: left;
|
||||
margin: 0 2px;
|
||||
}
|
||||
#jsxc_notice {
|
||||
height: 30px;
|
||||
width: 30px;
|
||||
float: right;
|
||||
text-align: center;
|
||||
line-height: 30px;
|
||||
span {
|
||||
background-color: $notice_bg;
|
||||
border-radius: 11px;
|
||||
color: $notice_color;
|
||||
font-size: 80%;
|
||||
padding: 2px;
|
||||
position: relative;
|
||||
animation: bounce 2s 1s infinite;
|
||||
}
|
||||
}
|
||||
#jsxc_menu>span {
|
||||
opacity: 0.5;
|
||||
display: block;
|
||||
width: 25px;
|
||||
height: 30px;
|
||||
background-image: image-url('gear_white.svg');
|
||||
background-size: 18px 18px;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center center;
|
||||
}
|
||||
@keyframes bounce {
|
||||
0% {
|
||||
bottom: 0;
|
||||
animation-timing-function: ease-in;
|
||||
}
|
||||
12% {
|
||||
bottom: 5px;
|
||||
animation-timing-function: ease-out;
|
||||
}
|
||||
25% {
|
||||
bottom: 0;
|
||||
animation-timing-function: ease-in;
|
||||
}
|
||||
37% {
|
||||
bottom: 5px;
|
||||
animation-timing-function: ease-out;
|
||||
}
|
||||
50% {
|
||||
bottom: 0;
|
||||
animation-timing-function: ease-in;
|
||||
}
|
||||
100% {
|
||||
bottom: 0;
|
||||
}
|
||||
}
|
||||
#jsxc_presence {
|
||||
cursor: pointer;
|
||||
padding-left: 2px;
|
||||
overflow: hidden;
|
||||
}
|
||||
#jsxc_windowList {
|
||||
position: fixed;
|
||||
bottom: 0;
|
||||
right: 210px;
|
||||
left: 0;
|
||||
z-index: 50;
|
||||
clip: rect(-10000px, 10000px, 30px, 30px);
|
||||
&>ul {
|
||||
list-style: none;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
right: 0;
|
||||
height: 30px;
|
||||
overflow: visible;
|
||||
white-space: nowrap;
|
||||
transition: right 0.5s;
|
||||
|
||||
&>li {
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
display: inline-block;
|
||||
width: 250px;
|
||||
height: 30px;
|
||||
position: relative;
|
||||
overflow: visible;
|
||||
margin-right: 5px;
|
||||
cursor: pointer;
|
||||
white-space: normal;
|
||||
&.jsxc_min {
|
||||
width: 200px !important;
|
||||
}
|
||||
&.jsxc_unreadMsg {
|
||||
.jsxc_name {
|
||||
font-style: italic;
|
||||
}
|
||||
.jsxc_cycle {
|
||||
background-color: $window_unread_cycle;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#jsxc_windowListSB {
|
||||
position: fixed;
|
||||
left: 0;
|
||||
bottom: 0;
|
||||
width: 30px;
|
||||
height: 30px;
|
||||
> {
|
||||
div {
|
||||
box-sizing: border-box;
|
||||
width: 14px;
|
||||
height: 100%;
|
||||
background-color: $windowListSB_bg;
|
||||
color: $windowListSB_color;
|
||||
text-align: center;
|
||||
line-height: 30px;
|
||||
float: left;
|
||||
cursor: pointer;
|
||||
user-select: none;
|
||||
&:hover {
|
||||
background-color: $windowListSB_bg_hover;
|
||||
}
|
||||
}
|
||||
.jsxc_disabled {
|
||||
background-color: $windowListSB_bg_disabled !important;
|
||||
color: $windowListSB_color_disabled;
|
||||
cursor: default !important;
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
.jsxc_bar {
|
||||
background-color: $window_bar_bg;
|
||||
cursor: pointer;
|
||||
height: 30px;
|
||||
line-height: 26px;
|
||||
padding: 2px;
|
||||
color: $window_bar_color;
|
||||
width: 100%;
|
||||
box-sizing: border-box;
|
||||
overflow: hidden;
|
||||
}
|
||||
.jsxc_cycle {
|
||||
position: absolute;
|
||||
bottom: 9px;
|
||||
right: 5px;
|
||||
height: 12px;
|
||||
width: 12px;
|
||||
border-radius: 6px;
|
||||
}
|
||||
|
||||
.jsxc_window {
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
height: auto;
|
||||
background-color: $window_bg;
|
||||
z-index: 80;
|
||||
cursor: default;
|
||||
.jsxc_emoticons {
|
||||
height: 30px;
|
||||
width: 30px;
|
||||
position: absolute;
|
||||
top: 240px;
|
||||
right: 0;
|
||||
cursor: pointer;
|
||||
&:after {
|
||||
content: ' ';
|
||||
background-image: image-url('smiley.png');
|
||||
background-position: center center;
|
||||
background-repeat: no-repeat;
|
||||
height: 30px;
|
||||
width: 30px;
|
||||
opacity: 0.3;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
}
|
||||
ul {
|
||||
display: none;
|
||||
position: absolute;
|
||||
bottom: 33px;
|
||||
right: 3px;
|
||||
width: 210px;
|
||||
background-color: $emoticon_selection_bg;
|
||||
padding: 3px;
|
||||
border-radius: 3px;
|
||||
z-index: 200;
|
||||
list-style-type: none;
|
||||
&:after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
border-left: 5px solid transparent;
|
||||
border-right: 5px solid transparent;
|
||||
border-top: 6px solid $emoticon_selection_bg;
|
||||
display: block;
|
||||
width: 0;
|
||||
z-index: 1;
|
||||
right: 6px;
|
||||
bottom: -6px;
|
||||
}
|
||||
}
|
||||
li {
|
||||
float: right;
|
||||
cursor: pointer;
|
||||
}
|
||||
div {
|
||||
cursor: pointer;
|
||||
border-radius: 3px;
|
||||
background-size: 30px 30px;
|
||||
width: 30px;
|
||||
height: 30px;
|
||||
&:hover {
|
||||
background-color: $emoticon_selection_hover;
|
||||
}
|
||||
}
|
||||
&:hover:after {
|
||||
opacity: 0.5;
|
||||
}
|
||||
}
|
||||
.jsxc_fade {
|
||||
position: relative;
|
||||
}
|
||||
.jsxc_gradient {
|
||||
display: none;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
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;
|
||||
}
|
||||
.jsxc_textarea {
|
||||
width: 100%;
|
||||
overflow: hidden;
|
||||
padding: 3px;
|
||||
}
|
||||
.slimScrollDiv {
|
||||
margin: 0 0 6px 0;
|
||||
left: auto !important;
|
||||
top: auto !important;
|
||||
}
|
||||
input {
|
||||
&.jsxc_textinput {
|
||||
width: 100%;
|
||||
height: 30px;
|
||||
margin: 0;
|
||||
padding: 3px;
|
||||
padding-right: 40px;
|
||||
outline: none;
|
||||
border-radius: 0;
|
||||
box-sizing: border-box;
|
||||
text-align: right;
|
||||
}
|
||||
&::placeholder {
|
||||
color: $window_placeholder;
|
||||
opacity: 0.3;
|
||||
}
|
||||
}
|
||||
.jsxc_tools {
|
||||
height: 26px;
|
||||
float: right;
|
||||
> div {
|
||||
width: 17px;
|
||||
height: 26px;
|
||||
display: block;
|
||||
float: left;
|
||||
color: $tools_color;
|
||||
font-family: $font_sans;
|
||||
line-height: 26px;
|
||||
cursor: pointer;
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
.jsxc_close {
|
||||
font-size: 20px;
|
||||
&:hover {
|
||||
color: $window_close_hover;
|
||||
}
|
||||
}
|
||||
.ui-resizable-w {
|
||||
left: 0;
|
||||
}
|
||||
.ui-resizable-nw {
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 15px;
|
||||
height: 15px;
|
||||
z-index: 95 !important;
|
||||
}
|
||||
.ui-resizable-n {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
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 {
|
||||
margin: 3px;
|
||||
padding: 4px;
|
||||
padding-right: 10px;
|
||||
max-width: 76%;
|
||||
word-wrap: break-word;
|
||||
background-color: $chatmessage_bg;
|
||||
position: relative;
|
||||
outline: none;
|
||||
clear: both;
|
||||
a {
|
||||
color: $chatmessage_a;
|
||||
text-decoration: underline;
|
||||
}
|
||||
img {
|
||||
width: 19px;
|
||||
height: 19px;
|
||||
background-size: 19px 19px;
|
||||
}
|
||||
}
|
||||
.jsxc_timestamp {
|
||||
font-size: 8px;
|
||||
color: $chatmessage_timestamp;
|
||||
line-height: 8px;
|
||||
}
|
||||
.jsxc_in {
|
||||
float: left;
|
||||
position: relative;
|
||||
margin-left: 10px;
|
||||
background: $chatmessage_in_bg;
|
||||
border: solid 1px $chatmessage_in_border;
|
||||
border-radius: 3px;
|
||||
&:after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
border-style: solid;
|
||||
border-width: 5px 6px 5px 0;
|
||||
border-color: transparent $chatmessage_in_bg;
|
||||
display: block;
|
||||
width: 0;
|
||||
z-index: 1;
|
||||
left: -6px;
|
||||
bottom: 10px;
|
||||
}
|
||||
.jsxc_timestamp {
|
||||
float: left;
|
||||
}
|
||||
}
|
||||
.jsxc_out {
|
||||
float: right;
|
||||
position: relative;
|
||||
margin-right: 10px;
|
||||
background: $chatmessage_out_bg;
|
||||
border: solid 1px $chatmessage_out_border;
|
||||
border-radius: 3px;
|
||||
&:after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
border-style: solid;
|
||||
border-width: 5px 0 5px 6px;
|
||||
border-color: transparent $chatmessage_out_bg;
|
||||
display: block;
|
||||
width: 0;
|
||||
z-index: 1;
|
||||
right: -6px;
|
||||
bottom: 10px;
|
||||
}
|
||||
&.jsxc_received{
|
||||
&:before {
|
||||
content: '✓';
|
||||
position: absolute;
|
||||
bottom: 2px;
|
||||
right: 2px;
|
||||
font-size: 12px;
|
||||
line-height: 12px;
|
||||
color: $chatmessage_received;
|
||||
}
|
||||
.jsxc_timestamp {
|
||||
margin-right: 4px;
|
||||
}
|
||||
}
|
||||
.jsxc_timestamp {
|
||||
float: right;
|
||||
}
|
||||
}
|
||||
.jsxc_sys {
|
||||
width: auto;
|
||||
max-width: none;
|
||||
padding-right: 4px;
|
||||
box-sizing: border-box;
|
||||
margin-right: 3px;
|
||||
border-radius: 3px;
|
||||
}
|
||||
div.jsxc_settings {
|
||||
background-image: image-url('gear_grey.svg');
|
||||
background-size: 15px 15px;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center center;
|
||||
overflow: visible;
|
||||
&:hover, .hover {
|
||||
background-image: image-url('gear_white.svg');
|
||||
}
|
||||
ul {
|
||||
list-style: none;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
position: absolute;
|
||||
top: 30px;
|
||||
left: 0;
|
||||
box-shadow: 0 5px 5px -5px $shadow;
|
||||
z-index: 110;
|
||||
overflow: visible;
|
||||
background-color: $window_settings_bg;
|
||||
display: none;
|
||||
}
|
||||
li {
|
||||
width: 170px;
|
||||
margin-left: 20px;
|
||||
padding-left: 10px;
|
||||
height: 30px;
|
||||
line-height: 30px;
|
||||
text-align: left;
|
||||
cursor: pointer;
|
||||
&:first-child {
|
||||
border-top: 1px solid $window_settings_border_top;
|
||||
}
|
||||
&.jsxc_disabled {
|
||||
color: $window_settings_disabled;
|
||||
cursor: default;
|
||||
}
|
||||
&:hover:not(.jsxc_disabled ) {
|
||||
color: $window_settings_color_hover;
|
||||
background-color: $window_settings_bg_hover;
|
||||
}
|
||||
}
|
||||
}
|
||||
div.jsxc_transfer {
|
||||
@extend %padlock-icon;
|
||||
&:hover {
|
||||
background-image: image-url('padlock_open_white.svg');
|
||||
}
|
||||
&.jsxc_fin {
|
||||
background-image: image-url('padlock_close_grey.svg');
|
||||
}
|
||||
&.jsxc_enc {
|
||||
background-image: image-url('padlock_close_orange.svg');
|
||||
&.jsxc_trust {
|
||||
background-image: image-url('padlock_close_green.svg');
|
||||
}
|
||||
}
|
||||
&.jsxc_disabled:hover {
|
||||
@extend %padlock-icon;
|
||||
}
|
||||
}
|
||||
#colorbox {
|
||||
outline: none;
|
||||
}
|
||||
#cboxWrapper {
|
||||
outline: none;
|
||||
}
|
||||
.jsxc_loading {
|
||||
margin: 0 auto;
|
||||
width: 32px;
|
||||
height: 32px;
|
||||
border: 0;
|
||||
background-size: 32px 32px !important;
|
||||
background: image-url('loading.gif');
|
||||
}
|
||||
/* @TODO: check */
|
||||
#jsxc_loginForm input[type="submit"] {
|
||||
height: 34px;
|
||||
display: inline-block;
|
||||
padding: 6px 12px;
|
||||
margin-bottom: 0;
|
||||
font-size: 14px;
|
||||
font-weight: normal;
|
||||
line-height: 1.428571429;
|
||||
text-align: center;
|
||||
white-space: nowrap;
|
||||
vertical-align: middle;
|
||||
cursor: pointer;
|
||||
border: 1px solid transparent;
|
||||
border-radius: 4px;
|
||||
user-select: none;
|
||||
color: $white;
|
||||
background-color: $loginForm_bg;
|
||||
border-color: $loginForm_border;
|
||||
}
|
||||
#jsxc_notice>span:empty {
|
||||
display: none;
|
||||
}
|
||||
.jsxc_oneway .jsxc_avatar {
|
||||
filter: grayscale(100%);
|
||||
}
|
||||
.jsxc_min .jsxc_tools {
|
||||
display: none;
|
||||
}
|
||||
.jsxc_tools > .jsxc_disabled {
|
||||
opacity: 0.5;
|
||||
cursor: default !important;
|
||||
}
|
||||
img.jsxc_vCard {
|
||||
float: right;
|
||||
max-width: 200px;
|
||||
max-height: 200px;
|
||||
border: 5px solid $white;
|
||||
border-radius: 2px;
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
%avatar-icon {
|
||||
width: 25px;
|
||||
height: 25px;
|
||||
line-height: 25px;
|
||||
margin-top: 2px;
|
||||
margin-right: 4px;
|
||||
background-color: $avatar_bg;
|
||||
border-radius: 2px;
|
||||
float: left;
|
||||
text-align: center;
|
||||
font-weight: bold;
|
||||
font-size: 30px;
|
||||
color: $avatar_color;
|
||||
overflow: hidden;
|
||||
position: relative;
|
||||
font-family: $font_sans;
|
||||
background-size: cover;
|
||||
background-position: center center;
|
||||
}
|
||||
|
||||
%padlock-icon {
|
||||
background-image: image-url('padlock_open_grey.svg');
|
||||
background-repeat: no-repeat;
|
||||
background-position: center center;
|
||||
background-size: 12px 12px;
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,154 @@
|
||||
#jsxc_roster {
|
||||
position: fixed;
|
||||
top: 0px;
|
||||
bottom: 0;
|
||||
right: 0;
|
||||
width: 200px;
|
||||
overflow: visible;
|
||||
border-left: 4px solid $roster_border_left;
|
||||
z-index: 80;
|
||||
margin-left: 10px;
|
||||
box-shadow: 0px 0px 7px $shadow;
|
||||
background-color: $roster_bg;
|
||||
a {
|
||||
cursor: pointer;
|
||||
}
|
||||
.slimScrollDiv {
|
||||
left: -4px;
|
||||
margin-bottom: 30px;
|
||||
z-index: 40;
|
||||
}
|
||||
.jsxc_wait {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
bottom: 0;
|
||||
width: 160px;
|
||||
padding: 20px;
|
||||
background-color: $white;
|
||||
z-index: 60;
|
||||
img {
|
||||
padding: 5px;
|
||||
}
|
||||
h3 {
|
||||
margin-bottom: 5px;
|
||||
font-size: 1.13em;
|
||||
font-weight: bold;
|
||||
}
|
||||
}
|
||||
input {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 31px;
|
||||
width: 157px;
|
||||
height: 18px;
|
||||
margin-top: -11px;
|
||||
padding: 2px;
|
||||
border: 0;
|
||||
background-image: none;
|
||||
background-color: $roster_input_bg;
|
||||
border-radius: 3px;
|
||||
box-shadow: inner 0 0 5px $roster_input_shadow;
|
||||
outline: none;
|
||||
}
|
||||
p {
|
||||
color: $roster_color;
|
||||
padding: 10px;
|
||||
a {
|
||||
color: $roster_a;
|
||||
text-decoration: underline;
|
||||
}
|
||||
}
|
||||
.jsxc_avatar {
|
||||
position: relative;
|
||||
cursor: pointer;
|
||||
img {
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
.jsxc_expand input {
|
||||
left: 51px;
|
||||
width: 137px;
|
||||
}
|
||||
&.jsxc_noConnection {
|
||||
.slimScrollDiv {
|
||||
display: none;
|
||||
}
|
||||
> .jsxc_bottom {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#jsxc_toggleRoster {
|
||||
width: 14px;
|
||||
height: 100%;
|
||||
position: absolute;
|
||||
left: -14px !important;
|
||||
top: 0;
|
||||
z-index: 110;
|
||||
background-color: transparent;
|
||||
cursor: pointer;
|
||||
&:hover {
|
||||
background-color: $roster_toggle_hover;
|
||||
}
|
||||
}
|
||||
#jsxc_roster> {
|
||||
&.jsxc_bottom {
|
||||
position: absolute;
|
||||
left: -4px;
|
||||
bottom: 0;
|
||||
height: 30px;
|
||||
width: 200px;
|
||||
border-left: 4px solid $roster_border_left;
|
||||
border-top: 1px solid $roster_bottom_border_top;
|
||||
padding-left: 0;
|
||||
background-color: $roster_bottom_bg;
|
||||
color: $roster_color;
|
||||
cursor: pointer;
|
||||
line-height: 30px;
|
||||
z-index: 50;
|
||||
ul {
|
||||
width: 190px;
|
||||
position: absolute;
|
||||
bottom: 30px;
|
||||
left: 0;
|
||||
display: none;
|
||||
border-top: 1px solid $roster_bottom_border_top;
|
||||
padding-left: 10px;
|
||||
background-color: $roster_bottom_bg;
|
||||
margin: 0;
|
||||
li:last-child {
|
||||
border-bottom: 1px solid $roster_bottom_border_top;
|
||||
}
|
||||
}
|
||||
li {
|
||||
height: 30px;
|
||||
background-color: $roster_bottom_bg;
|
||||
color: $roster_bottom_color;
|
||||
cursor: pointer;
|
||||
width: 180px;
|
||||
padding-left: 10px;
|
||||
line-height: 30px;
|
||||
text-align: left;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
&.jsxc_disabled {
|
||||
color: $roster_bottom_disabled;
|
||||
cursor: default;
|
||||
}
|
||||
&:hover:not(.jsxc_disabled) {
|
||||
color: $roster_bottom_color_hover;
|
||||
background-color: $roster_bottom_bg_hover;
|
||||
}
|
||||
}
|
||||
}
|
||||
&.jsxc_bottom>div>span {
|
||||
cursor: pointer;
|
||||
}
|
||||
&.jsxc_bottom>div:hover {
|
||||
color: $roster_bottom_color_hover;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
.jsxc_online {
|
||||
border-left: 4px solid $state_online !important;
|
||||
}
|
||||
.jsxc_chat {
|
||||
border-left: 4px solid $state_chat !important;
|
||||
}
|
||||
.jsxc_away {
|
||||
border-left: 4px solid $state_away !important;
|
||||
}
|
||||
.jsxc_xa {
|
||||
border-left: 4px solid $state_xa !important;
|
||||
}
|
||||
.jsxc_dnd {
|
||||
border-left: 4px solid $state_dnd !important;
|
||||
}
|
||||
.jsxc_offline {
|
||||
border-left: 4px solid $state_offline !important;
|
||||
}
|
||||
.jsxc_hidden {
|
||||
display: none;
|
||||
}
|
||||
.jsxc_invalid {
|
||||
border: 2px solid $invalid_border !important;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,245 @@
|
||||
@import 'colors';
|
||||
|
||||
%fullscreen {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
z-index: 9000;
|
||||
background-color: $fullscreen_bg;
|
||||
}
|
||||
|
||||
.jsxc_webrtc {
|
||||
width: 900px;
|
||||
.jsxc_status {
|
||||
z-index: 9999;
|
||||
border-radius: 20px;
|
||||
display: none;
|
||||
position: absolute;
|
||||
top: 30px;
|
||||
left: 50%;
|
||||
background-color: $video_status_bg;
|
||||
color: $video_status_color;
|
||||
padding: 15px;
|
||||
font-weight: bold;
|
||||
text-align: center;
|
||||
}
|
||||
.slimScrollDiv {
|
||||
opacity: 1 !important;
|
||||
}
|
||||
li .jsxc_name {
|
||||
cursor: auto;
|
||||
&:hover {
|
||||
color: $window_bar_color;
|
||||
}
|
||||
}
|
||||
}
|
||||
.jsxc_videoContainer {
|
||||
width: 640px;
|
||||
height: 480px;
|
||||
position: relative;
|
||||
background-color: $video_bg;
|
||||
video {
|
||||
display: none;
|
||||
}
|
||||
.jsxc_noRemoteVideo {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
.jsxc_remotevideo {
|
||||
@extend %fullscreen;
|
||||
}
|
||||
.jsxc_noRemoteVideo {
|
||||
@extend %fullscreen;
|
||||
p {
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
text-align: center;
|
||||
color: $novideo_color;
|
||||
width: 100%;
|
||||
z-index: 100;
|
||||
}
|
||||
> div {
|
||||
width: 200px;
|
||||
height: 200px;
|
||||
overflow: hidden;
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
margin-top: -100px;
|
||||
left: 50%;
|
||||
margin-left: -100px;
|
||||
> div {
|
||||
background-color: $novideo_bg;
|
||||
&:first-child {
|
||||
width: 50%;
|
||||
height: 50%;
|
||||
border-radius: 50%;
|
||||
position: absolute;
|
||||
left: 50%;
|
||||
margin-left: -25%;
|
||||
top: 10%;
|
||||
}
|
||||
&:last-child {
|
||||
position: absolute;
|
||||
bottom: -50%;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
border-radius: 50%;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.jsxc_localvideo {
|
||||
width: 160px;
|
||||
height: 120px;
|
||||
position: absolute;
|
||||
right: 10px;
|
||||
bottom: 10px;
|
||||
z-index: 9990;
|
||||
background-color: $black;
|
||||
cursor: pointer;
|
||||
}
|
||||
div {
|
||||
&:full-screen {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background-color: $black;
|
||||
&.jsxc_localvideo {
|
||||
border: 1px solid $white;
|
||||
}
|
||||
}
|
||||
&:fullscreen {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background-color: $black;
|
||||
&.jsxc_localvideo {
|
||||
border: 1px solid $white;
|
||||
}
|
||||
}
|
||||
&.jsxc_video {
|
||||
background-image: image-url('camera_icon_grey.svg');
|
||||
background-repeat: no-repeat;
|
||||
background-position: center center;
|
||||
background-size: 15px 15px;
|
||||
&:not(.jsxc_disabled) {
|
||||
&:hover {
|
||||
background-image: image-url('camera_icon_white.svg');
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.jsxc_controlbar {
|
||||
width: 640px;
|
||||
.jsxc_showchat {
|
||||
float: right;
|
||||
}
|
||||
}
|
||||
.jsxc_multi>div {
|
||||
display: none;
|
||||
}
|
||||
.jsxc_snapshotbar {
|
||||
width: 100%;
|
||||
display: none;
|
||||
img {
|
||||
height: 50px;
|
||||
}
|
||||
}
|
||||
.jsxc_buttongroup {
|
||||
display: inline;
|
||||
button {
|
||||
&:first-child {
|
||||
border-top-right-radius: 0;
|
||||
border-bottom-right-radius: 0;
|
||||
margin-right: 0;
|
||||
}
|
||||
&:last-child {
|
||||
border-top-left-radius: 0;
|
||||
border-bottom-left-radius: 0;
|
||||
margin-left: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
.jsxc_chatarea {
|
||||
position: relative;
|
||||
float: right;
|
||||
height: 480px;
|
||||
width: 250px;
|
||||
background-color: $window_bg;
|
||||
.jsxc_settings {
|
||||
display: none !important;
|
||||
}
|
||||
.jsxc_close {
|
||||
display: none !important;
|
||||
}
|
||||
.jsxc_video {
|
||||
display: none !important;
|
||||
}
|
||||
.jsxc_bar {
|
||||
}
|
||||
.jsxc_window {
|
||||
bottom: 0;
|
||||
box-shadow: none;
|
||||
}
|
||||
> ul {
|
||||
width: 250px;
|
||||
height: 480px;
|
||||
list-style: none;
|
||||
padding: 0;
|
||||
}
|
||||
}
|
||||
.bubblingG {
|
||||
text-align: center;
|
||||
width: 129px;
|
||||
height: 80px;
|
||||
position: absolute;
|
||||
top: 40%;
|
||||
left: 50%;
|
||||
margin-left: -64px;
|
||||
span {
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
margin: 40px auto;
|
||||
background: $bubbling_bg;
|
||||
border-radius: 81px;
|
||||
animation: bubblingG 1.3s infinite alternate;
|
||||
}
|
||||
}
|
||||
#bubblingG_1 {
|
||||
animation-delay: 0s;
|
||||
}
|
||||
#bubblingG_2 {
|
||||
animation-delay: 0.39s;
|
||||
}
|
||||
#bubblingG_3 {
|
||||
animation-delay: 0.78s;
|
||||
}
|
||||
@keyframes bubblingG {
|
||||
0% {
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
background-color: $bubbling_start_bg;
|
||||
transform: translateY(0);
|
||||
}
|
||||
100% {
|
||||
width: 39px;
|
||||
height: 39px;
|
||||
background-color: $white;
|
||||
transform: translateY(-34px);
|
||||
}
|
||||
}
|
||||
.jsxc_fullscreen.jsxc_localvideo {
|
||||
border: 1px solid $white;
|
||||
}
|
||||
.jsxc_videoSuitable .jsxc_name {
|
||||
font-style: italic;
|
||||
}
|
||||
#jsxc_buddylist .jsxc_options .jsxc_video {
|
||||
background-image: image-url('camera_icon_white.svg');
|
||||
&.jsxc_disabled {
|
||||
opacity: 0.2;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,72 @@
|
||||
.jsxc_emoticon {
|
||||
width: 19px;
|
||||
height: 19px;
|
||||
background-size: 19px 19px !important;
|
||||
border: 0;
|
||||
}
|
||||
.jsxc_angel {
|
||||
background: image-url('emotions/angel.png');
|
||||
}
|
||||
.jsxc_angry {
|
||||
background: image-url('emotions/angry.png');
|
||||
}
|
||||
.jsxc_smile {
|
||||
background: image-url('emotions/smile.png');
|
||||
}
|
||||
.jsxc_grin {
|
||||
background: image-url('/emotions/grin.png');
|
||||
}
|
||||
.jsxc_sad {
|
||||
background: image-url('emotions/sad.png');
|
||||
}
|
||||
.jsxc_wink {
|
||||
background: image-url('emotions/wink.png');
|
||||
}
|
||||
.jsxc_tonguesmile {
|
||||
background: image-url('emotions/tonguesmile.png');
|
||||
}
|
||||
.jsxc_surprised {
|
||||
background: image-url('emotions/surprised.png');
|
||||
}
|
||||
.jsxc_kiss {
|
||||
background: image-url('emotions/kiss.png');
|
||||
}
|
||||
.jsxc_sunglassess {
|
||||
background: image-url('emotions/sunglassess.png');
|
||||
}
|
||||
.jsxc_crysad {
|
||||
background: image-url('emotions/crysad.png');
|
||||
}
|
||||
.jsxc_doubt {
|
||||
background: image-url('emotions/doubt.png');
|
||||
}
|
||||
.jsxc_zip {
|
||||
background: image-url('emotions/zip.png');
|
||||
}
|
||||
.jsxc_thumbsup {
|
||||
background: image-url('emotions/thumbsup.png');
|
||||
}
|
||||
.jsxc_thumbsdown {
|
||||
background: image-url('emotions/thumbsdown.png');
|
||||
}
|
||||
.jsxc_beer {
|
||||
background: image-url('emotions/beer.png');
|
||||
}
|
||||
.jsxc_devil {
|
||||
background: image-url('emotions/devil.png');
|
||||
}
|
||||
.jsxc_kissing {
|
||||
background: image-url('emotions/kissing.png');
|
||||
}
|
||||
.jsxc_rose {
|
||||
background: image-url('emotions/rose.png');
|
||||
}
|
||||
.jsxc_music {
|
||||
background: image-url('emotions/music.png');
|
||||
}
|
||||
.jsxc_love {
|
||||
background: image-url('emotions/love.png');
|
||||
}
|
||||
.jsxc_tired {
|
||||
background: image-url('emotions/tired.png');
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
@import 'colors';
|
||||
|
||||
//fonts
|
||||
$font_sans: Arial, sans-serif;
|
||||
$font_serif: serif;
|
||||
|
||||
@import 'modules',
|
||||
'buddylist',
|
||||
'state',
|
||||
'emoticons',
|
||||
'roster';
|
||||
|
||||
@import 'jsxc';
|
||||
@@ -0,0 +1,3 @@
|
||||
@import 'colors';
|
||||
|
||||
@import 'webrtc';
|
||||
Referência em uma Nova Issue
Bloquear um usuário