Comparar commits
123 Commits
v1.0.0
...
v2.0.0-beta2
| Autor | SHA1 | Data | |
|---|---|---|---|
| c2c35b303a | |||
| b9ef5b1a69 | |||
| 3e0c752a13 | |||
| cafbd71c74 | |||
| 423cea6d41 | |||
| 850febf328 | |||
| 5d1719b92e | |||
| d998e4cacb | |||
| eda9ab60de | |||
| 13a02fa692 | |||
| 36c0727828 | |||
| e1ffa79236 | |||
| e33e3b4853 | |||
| 62eacdc5ff | |||
| 40b5ff344b | |||
| d8ae158d24 | |||
| 5fdb292690 | |||
| a0a116901d | |||
| 5a34a0fd2e | |||
| 5435326fb9 | |||
| ff453821bf | |||
| 03ac47a264 | |||
| a17f046a92 | |||
| 1b0db86edf | |||
| 77863d7a27 | |||
| 03435fce9c | |||
| f9598604e2 | |||
| edd715b993 | |||
| a8b777e5b7 | |||
| 3282285b3c | |||
| 564aa7cd8a | |||
| 81047222c6 | |||
| 329f55978f | |||
| 01b14279b3 | |||
| 630bb45eb1 | |||
| 779103ed32 | |||
| fbd0511a76 | |||
| da0a7d7b5d | |||
| da020726ec | |||
| 79f05a0799 | |||
| 2d832d1752 | |||
| 550485c07c | |||
| 3566972527 | |||
| ca21753d73 | |||
| 70abb7121c | |||
| 4e9c802da9 | |||
| 651c138b97 | |||
| 318bd7ee7d | |||
| 7929b20516 | |||
| 20c8d0e2f6 | |||
| 3628cd751a | |||
| 996ae30df8 | |||
| 7b32d598e4 | |||
| 5edf4c2368 | |||
| 9bec4084d8 | |||
| 700e62c9d4 | |||
| 9fa16fca40 | |||
| 5f0b2c8a35 | |||
| f41faaf9af | |||
| 3dd2b14e5a | |||
| 3d2fa05b1f | |||
| f8888fdbb2 | |||
| 8e5e90032c | |||
| 86df085723 | |||
| b57ab86b8f | |||
| 79c1a76427 | |||
| 7acca71a45 | |||
| 925ff098d0 | |||
| 4edcc578aa | |||
| 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 | |||
| 9d40ed8086 | |||
| 9750a558f2 | |||
| feb0c634a4 | |||
| 89c6e28970 | |||
| 5224cdf30c | |||
| c85ef77c21 | |||
| cebcc61496 | |||
| 7cf71a7c8b | |||
| 4bffcd665c | |||
| 4fb9938049 | |||
| 419eb17f65 | |||
| 20cc517457 | |||
| a30bcffeec | |||
| e1f4d1d811 | |||
| dea3a30149 | |||
| 2c2e13d966 | |||
| 65c0b7a57a |
@@ -1,3 +1,8 @@
|
||||
node_modules
|
||||
*.zip
|
||||
*.zip.sig
|
||||
bower_components
|
||||
archives/
|
||||
css/
|
||||
dev/
|
||||
.wti
|
||||
|
||||
@@ -4,3 +4,6 @@
|
||||
[submodule "lib/otr"]
|
||||
path = lib/otr
|
||||
url = https://github.com/sualko/otr.git
|
||||
[submodule "lib/i18next"]
|
||||
path = lib/i18next
|
||||
url = https://github.com/i18next/i18next.git
|
||||
|
||||
+7
-2
@@ -14,11 +14,15 @@
|
||||
"multistr": true,
|
||||
"devel": true,
|
||||
"globals": {
|
||||
"t":true,
|
||||
"i18n":true,
|
||||
"I18next":true,
|
||||
"OTR":true,
|
||||
"DSA":true,
|
||||
"Worker":true,
|
||||
"BigInt":true,
|
||||
"Notification":true,
|
||||
"$": true,
|
||||
"jQuery":true,
|
||||
"Strophe":true,
|
||||
"localStorage":true,
|
||||
@@ -29,6 +33,7 @@
|
||||
"jsxc":true,
|
||||
"getUserMediaWithConstraints":true,
|
||||
"setupRTC":true,
|
||||
"SDPUtil":true
|
||||
"SDPUtil":true,
|
||||
"getSelection":true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
+133
-30
@@ -1,17 +1,18 @@
|
||||
/* global module:false */
|
||||
module.exports = function(grunt) {
|
||||
|
||||
|
||||
var dep = grunt.file.readJSON('dep.json');
|
||||
var dep_files = dep.map(function(el) {
|
||||
return el.file;
|
||||
return '<%= target %>/' + el.file;
|
||||
});
|
||||
|
||||
|
||||
// Project configuration.
|
||||
grunt.initConfig({
|
||||
app: grunt.file.readJSON('package.json'),
|
||||
meta: {
|
||||
banner: grunt.file.read('banner.js')
|
||||
},
|
||||
target: 'dev',
|
||||
jshint: {
|
||||
options: {
|
||||
jshintrc: '.jshintrc'
|
||||
@@ -19,18 +20,23 @@ module.exports = function(grunt) {
|
||||
gruntfile: {
|
||||
src: 'Gruntfile.js'
|
||||
},
|
||||
files: [ 'jsxc.lib.webrtc.js', 'jsxc.lib.js' ]
|
||||
files: [ 'src/jsxc.lib.*' ]
|
||||
},
|
||||
copy: {
|
||||
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/**' ],
|
||||
dest: 'build/'
|
||||
src: [ 'lib/i18next/release/i18next-latest.min.js', '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', 'LICENSE', 'img/**', 'sound/**' ],
|
||||
dest: '<%= target %>/'
|
||||
}, {
|
||||
expand: true,
|
||||
cwd: 'lib/',
|
||||
src: ['*.css'],
|
||||
dest: '<%= target %>/css/'
|
||||
} ]
|
||||
}
|
||||
},
|
||||
clean: [ 'build/' ],
|
||||
clean: [ '<%= target %>/' ],
|
||||
usebanner: {
|
||||
dist: {
|
||||
options: {
|
||||
@@ -38,20 +44,42 @@ module.exports = function(grunt) {
|
||||
banner: '<%= meta.banner %>'
|
||||
},
|
||||
files: {
|
||||
src: [ 'build/*.js' ]
|
||||
src: [ '<%= target %>/*.js' ]
|
||||
}
|
||||
}
|
||||
},
|
||||
replace: {
|
||||
version: {
|
||||
src: [ 'build/jsxc.lib.js' ],
|
||||
src: [ '<%= target %>/jsxc.js' ],
|
||||
overwrite: true,
|
||||
replacements: [ {
|
||||
from: '< $ app.version $ >',
|
||||
to: "<%= app.version %>"
|
||||
} ]
|
||||
replacements: [
|
||||
{
|
||||
from: '< $ app.version $ >',
|
||||
to: "<%= app.version %>"
|
||||
}
|
||||
]
|
||||
},
|
||||
locales: {
|
||||
src: [ '<%= target %>/lib/translation.js' ],
|
||||
overwrite: true,
|
||||
replacements: [
|
||||
{
|
||||
from: /^{/g,
|
||||
to: 'var I18next = {'
|
||||
},
|
||||
{
|
||||
from: /}$/g,
|
||||
to: '};'
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
merge_data: {
|
||||
target: {
|
||||
src: ['locales/*.{json,y{,a}ml}'],
|
||||
dest: '<%= target %>/lib/translation.js'
|
||||
}
|
||||
},
|
||||
concat: {
|
||||
dep: {
|
||||
options: {
|
||||
@@ -62,24 +90,30 @@ module.exports = function(grunt) {
|
||||
' * \n' +
|
||||
' */\n\n',
|
||||
process: function(src, filepath) {
|
||||
if (filepath === 'build/lib/otr/build/dep/crypto.js') {
|
||||
filepath = filepath.replace(/^[a-z]+\//i, '');
|
||||
|
||||
if (filepath === '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;
|
||||
|
||||
if (data) {
|
||||
return '/*!\n * Source: ' + filepath + ', license: ' + data.license + ', url: ' + data.url + ' */\n' + src;
|
||||
} else {
|
||||
return src;
|
||||
}
|
||||
}
|
||||
},
|
||||
src: dep_files,
|
||||
dest: 'build/lib/jsxc.dep.js'
|
||||
dest: '<%= target %>/lib/jsxc.dep.js'
|
||||
},
|
||||
jsxc: {
|
||||
options: {
|
||||
banner: '/*! This file is concatenated for the browser. */\n\n'
|
||||
},
|
||||
src: ['build/jsxc.lib.js', 'build/jsxc.lib.webrtc.js'],
|
||||
dest: 'build/jsxc.js'
|
||||
src: ['src/jsxc.intro.js', 'src/jsxc.lib.js', 'src/jsxc.lib.*.js', 'src/jsxc.outro.js'],
|
||||
dest: '<%= target %>/jsxc.js'
|
||||
}
|
||||
},
|
||||
uglify: {
|
||||
@@ -90,15 +124,15 @@ module.exports = function(grunt) {
|
||||
preserveComments: 'some'
|
||||
},
|
||||
files: {
|
||||
'build/lib/jsxc.dep.min.js': ['build/lib/jsxc.dep.js'],
|
||||
'build/jsxc.min.js': ['build/jsxc.js']
|
||||
'<%= target %>/lib/jsxc.dep.min.js': ['<%= target %>/lib/jsxc.dep.js'],
|
||||
'<%= target %>/jsxc.min.js': ['<%= target %>/jsxc.js']
|
||||
}
|
||||
}
|
||||
},
|
||||
search: {
|
||||
console: {
|
||||
files: {
|
||||
src: [ '*.js' ]
|
||||
src: [ 'src/*.js' ]
|
||||
},
|
||||
options: {
|
||||
searchString: /console\.log\((?!'[<>]|msg)/g,
|
||||
@@ -115,7 +149,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 +158,7 @@ module.exports = function(grunt) {
|
||||
compress: {
|
||||
main: {
|
||||
options: {
|
||||
archive: "jsxc-<%= app.version %>.zip"
|
||||
archive: "archives/jsxc-<%= app.version %>.zip"
|
||||
},
|
||||
files: [ {
|
||||
src: [ '**' ],
|
||||
@@ -134,11 +168,60 @@ module.exports = function(grunt) {
|
||||
} ]
|
||||
}
|
||||
},
|
||||
dataUri: {
|
||||
dist: {
|
||||
src: '<%= target %>/css/*.css',
|
||||
dest: '<%= target %>/css/',
|
||||
options: {
|
||||
target: ['<%= target %>/img/*.*', '<%= target %>/img/**/*.*'],
|
||||
fixDirLevel: false,
|
||||
maxBytes: 2048
|
||||
}
|
||||
}
|
||||
},
|
||||
jsdoc: {
|
||||
dist: {
|
||||
src: ['jsxc.lib.js', 'jsxc.lib.webrtc.js'],
|
||||
src: ['src/jsxc.lib.*'],
|
||||
dest: 'doc'
|
||||
}
|
||||
},
|
||||
autoprefixer: {
|
||||
no_dest: {
|
||||
src: '<%= target %>/css/*.css'
|
||||
}
|
||||
},
|
||||
csslint: {
|
||||
strict: {
|
||||
options: {
|
||||
import: 2
|
||||
},
|
||||
src: ['<%= target %>/css/*.css']
|
||||
},
|
||||
},
|
||||
sass: {
|
||||
options: {
|
||||
imagePath: '../img'
|
||||
},
|
||||
dist: {
|
||||
files: {
|
||||
'<%= target %>/css/jsxc.css': 'scss/jsxc.scss',
|
||||
'<%= target %>/css/jsxc.webrtc.css': 'scss/jsxc.webrtc.scss'
|
||||
}
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
locales: {
|
||||
files: ['locales/*'],
|
||||
tasks: ['merge_data', 'replace:locales', 'concat:dep']
|
||||
},
|
||||
css: {
|
||||
files: ['scss/*'],
|
||||
tasks: ['sass', 'autoprefixer']
|
||||
},
|
||||
js: {
|
||||
files: ['src/jsxc.lib.*'],
|
||||
tasks: ['concat:jsxc']
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
@@ -153,13 +236,33 @@ 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-merge-data');
|
||||
grunt.loadNpmTasks('grunt-contrib-csslint');
|
||||
grunt.loadNpmTasks('grunt-sass');
|
||||
grunt.loadNpmTasks('grunt-autoprefixer');
|
||||
grunt.loadNpmTasks('grunt-contrib-watch');
|
||||
|
||||
// Default task.
|
||||
grunt.registerTask('default', [ 'jshint', 'search', 'jsdoc', 'clean', 'copy', 'usebanner', 'replace', 'concat', 'uglify', 'compress' ]);
|
||||
//Default task
|
||||
grunt.registerTask('default', [ 'build', 'watch' ]);
|
||||
|
||||
// Create alpha/beta build
|
||||
grunt.registerTask('pre', [ 'jshint', 'search:console', 'clean', 'copy', 'usebanner', 'replace', 'concat', 'uglify', 'compress' ]);
|
||||
grunt.registerTask('build', ['jshint', 'clean', 'sass', 'autoprefixer', 'copy', 'merge_data', 'replace:locales', 'concat']);
|
||||
|
||||
grunt.registerTask('build:prerelease', 'Build a new pre-release', function(){
|
||||
grunt.config.set('target', 'build/');
|
||||
|
||||
grunt.task.run([ 'search:console', 'build', 'dataUri', 'usebanner', 'replace:version', 'uglify', 'compress' ]);
|
||||
});
|
||||
|
||||
grunt.registerTask('build:release', 'Build a new release', function(){
|
||||
grunt.config.set('target', 'build/');
|
||||
|
||||
grunt.task.run([ 'search:changelog', 'build:prerelease', 'jsdoc' ]);
|
||||
});
|
||||
|
||||
// Create alpha/beta build @deprecated
|
||||
grunt.registerTask('pre', [ 'build:prerelease' ]);
|
||||
|
||||
// before commit
|
||||
grunt.registerTask('commit', [ 'jshint', 'search:console' ]);
|
||||
};
|
||||
|
||||
+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,239 @@
|
||||
.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; }
|
||||
@@ -0,0 +1,59 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
viewBox="0 0 1000 1000"
|
||||
preserveAspectRatio="xMinYMin meet"
|
||||
width="100%"
|
||||
height="100%"
|
||||
style="width: 512px; height: 512px;"
|
||||
id="svg2"
|
||||
version="1.1"
|
||||
inkscape:version="0.91+devel r"
|
||||
sodipodi:docname="group_grey.svg">
|
||||
<metadata
|
||||
id="metadata10">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<defs
|
||||
id="defs8" />
|
||||
<sodipodi:namedview
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1"
|
||||
objecttolerance="10"
|
||||
gridtolerance="10"
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="980"
|
||||
inkscape:window-height="888"
|
||||
id="namedview6"
|
||||
showgrid="false"
|
||||
inkscape:zoom="0.6675088"
|
||||
inkscape:cx="512.17823"
|
||||
inkscape:cy="480.21903"
|
||||
inkscape:window-x="889"
|
||||
inkscape:window-y="85"
|
||||
inkscape:window-maximized="0"
|
||||
inkscape:current-layer="svg2" />
|
||||
<path
|
||||
d="m 0.94630456,763.0963 c 0,22.21203 9.08673644,33.31804 27.26020844,33.31804 l 112.069747,0 0,-142.35887 c 0,-18.17347 4.54363,-34.83222 13.63088,-49.97627 9.08724,-15.14405 21.70797,-26.75512 37.86216,-34.83326 l 115.09866,-54.52042 c 10.09637,-6.05782 18.17347,-13.12528 24.23129,-21.20238 -12.11564,-18.17347 -22.21202,-39.37586 -30.28912,-63.60715 -8.0771,-24.2313 -12.11564,-49.47223 -12.11564,-75.7228 0,-16.1542 2.01927,-32.3084 6.05782,-48.46259 4.03855,-16.1542 9.08674,-31.29876 15.14456,-45.43368 -20.19275,-14.13493 -41.39513,-21.20239 -63.60715,-21.20239 -38.36622,2.01928 -68.65534,17.66839 -90.86736,46.94736 -22.21201,29.27897 -33.31803,62.09244 -33.31803,98.44042 2.01928,62.59751 24.2313,107.02155 66.63606,133.27212 L 16.092416,596.50615 C 5.9960421,602.56397 0.94785546,612.66034 0.94785546,626.79527 l 0,136.30103 z M 191.76775,796.41434 c -2.01927,42.40476 10.09637,64.61678 36.34695,66.63606 l 542.17524,0 c 12.11565,-4.03855 20.69783,-10.09637 25.74653,-18.17347 5.04869,-8.0771 7.57305,-14.63948 7.57305,-19.68716 l 0,-171.13275 c 0,-18.17347 -7.06746,-30.28912 -21.20238,-36.34694 L 637.01936,545.01619 573.41221,514.72707 c 38.36622,-22.21202 63.60715,-60.57824 75.7228,-115.09865 8.0771,-30.28912 8.0771,-61.58788 0,-93.89627 -10.09637,-36.34695 -28.7744,-67.14115 -56.0341,-92.38259 -27.25969,-25.24145 -59.06352,-38.87182 -95.4115,-40.89109 -36.34694,2.01927 -67.6457,15.64964 -93.89627,40.89109 -26.25057,25.24144 -44.42404,55.02601 -54.52042,89.35368 -12.11564,46.44331 -8.07709,93.89627 12.11565,142.35886 16.1542,30.28912 37.35658,54.52041 63.60715,72.69389 l -57.54932,27.2602 -151.4456,69.66498 c -16.1542,8.0771 -24.2313,21.20238 -24.2313,39.37585 l 0,142.35887 z m 475.53918,-302.8912 c 8.0771,8.0771 18.17347,16.1542 30.28912,24.23129 12.11565,8.0771 23.22166,14.13493 33.31803,18.17348 10.09638,4.03855 23.22166,9.59181 39.37586,16.65979 16.1542,7.06797 28.26984,12.62124 36.34694,16.65979 16.1542,8.0771 28.77493,19.68819 37.86218,34.83326 9.08724,15.14507 13.63088,31.80384 13.63088,49.97627 l 0,142.35887 115.09865,0 c 18.17347,-2.01928 27.26021,-13.12529 27.26021,-33.31803 l 0,-136.30104 c 0,-14.13493 -5.04819,-24.2313 -15.14456,-30.28912 L 815.72517,514.72707 c 42.40477,-30.28912 63.60715,-73.70352 63.60715,-130.24321 0,-38.36622 -12.11565,-72.18881 -36.34694,-101.46778 -24.2313,-29.27897 -53.51078,-43.91896 -87.83845,-43.92 -22.21202,0 -44.42404,7.06747 -66.63606,21.20239 12.11564,30.28912 18.17347,61.58787 18.17347,93.89627 0,50.48187 -13.12529,96.92518 -39.37586,139.32995 z"
|
||||
id="path4"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cscsscccsssccscccscccccssscccccscscccccscccssssssccssccssccscc"
|
||||
style="fill:#999999;stroke-width:1.55090213;fill-opacity:1" />
|
||||
</svg>
|
||||
|
Depois Largura: | Altura: | Tamanho: 4.2 KiB |
@@ -0,0 +1,58 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
viewBox="0 0 1000 1000"
|
||||
preserveAspectRatio="xMinYMin meet"
|
||||
width="100%"
|
||||
height="100%"
|
||||
style="width: 512px; height: 512px;"
|
||||
id="svg2"
|
||||
version="1.1"
|
||||
inkscape:version="0.91+devel r"
|
||||
sodipodi:docname="group_white.svg">
|
||||
<metadata
|
||||
id="metadata10">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<defs
|
||||
id="defs8" />
|
||||
<sodipodi:namedview
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1"
|
||||
objecttolerance="10"
|
||||
gridtolerance="10"
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="1855"
|
||||
inkscape:window-height="1056"
|
||||
id="namedview6"
|
||||
showgrid="false"
|
||||
inkscape:zoom="0.6675088"
|
||||
inkscape:cx="538.39511"
|
||||
inkscape:cy="480.21903"
|
||||
inkscape:window-x="65"
|
||||
inkscape:window-y="24"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg2" />
|
||||
<path
|
||||
d="m 0.94630456,763.0963 c 0,22.21203 9.08673644,33.31804 27.26020844,33.31804 l 112.069747,0 0,-142.35887 c 0,-18.17347 4.54363,-34.83222 13.63088,-49.97627 9.08724,-15.14405 21.70797,-26.75512 37.86216,-34.83326 l 115.09866,-54.52042 c 10.09637,-6.05782 18.17347,-13.12528 24.23129,-21.20238 -12.11564,-18.17347 -22.21202,-39.37586 -30.28912,-63.60715 -8.0771,-24.2313 -12.11564,-49.47223 -12.11564,-75.7228 0,-16.1542 2.01927,-32.3084 6.05782,-48.46259 4.03855,-16.1542 9.08674,-31.29876 15.14456,-45.43368 -20.19275,-14.13493 -41.39513,-21.20239 -63.60715,-21.20239 -38.36622,2.01928 -68.65534,17.66839 -90.86736,46.94736 -22.21201,29.27897 -33.31803,62.09244 -33.31803,98.44042 2.01928,62.59751 24.2313,107.02155 66.63606,133.27212 L 16.092416,596.50615 C 5.9960421,602.56397 0.94785546,612.66034 0.94785546,626.79527 l 0,136.30103 z M 191.76775,796.41434 c -2.01927,42.40476 10.09637,64.61678 36.34695,66.63606 l 542.17524,0 c 12.11565,-4.03855 20.69783,-10.09637 25.74653,-18.17347 5.04869,-8.0771 7.57305,-14.63948 7.57305,-19.68716 l 0,-171.13275 c 0,-18.17347 -7.06746,-30.28912 -21.20238,-36.34694 L 637.01936,545.01619 573.41221,514.72707 c 38.36622,-22.21202 63.60715,-60.57824 75.7228,-115.09865 8.0771,-30.28912 8.0771,-61.58788 0,-93.89627 -10.09637,-36.34695 -28.7744,-67.14115 -56.0341,-92.38259 -27.25969,-25.24145 -59.06352,-38.87182 -95.4115,-40.89109 -36.34694,2.01927 -67.6457,15.64964 -93.89627,40.89109 -26.25057,25.24144 -44.42404,55.02601 -54.52042,89.35368 -12.11564,46.44331 -8.07709,93.89627 12.11565,142.35886 16.1542,30.28912 37.35658,54.52041 63.60715,72.69389 l -57.54932,27.2602 -151.4456,69.66498 c -16.1542,8.0771 -24.2313,21.20238 -24.2313,39.37585 l 0,142.35887 z m 475.53918,-302.8912 c 8.0771,8.0771 18.17347,16.1542 30.28912,24.23129 12.11565,8.0771 23.22166,14.13493 33.31803,18.17348 10.09638,4.03855 23.22166,9.59181 39.37586,16.65979 16.1542,7.06797 28.26984,12.62124 36.34694,16.65979 16.1542,8.0771 28.77493,19.68819 37.86218,34.83326 9.08724,15.14507 13.63088,31.80384 13.63088,49.97627 l 0,142.35887 115.09865,0 c 18.17347,-2.01928 27.26021,-13.12529 27.26021,-33.31803 l 0,-136.30104 c 0,-14.13493 -5.04819,-24.2313 -15.14456,-30.28912 L 815.72517,514.72707 c 42.40477,-30.28912 63.60715,-73.70352 63.60715,-130.24321 0,-38.36622 -12.11565,-72.18881 -36.34694,-101.46778 -24.2313,-29.27897 -53.51078,-43.91896 -87.83845,-43.92 -22.21202,0 -44.42404,7.06747 -66.63606,21.20239 12.11564,30.28912 18.17347,61.58787 18.17347,93.89627 0,50.48187 -13.12529,96.92518 -39.37586,139.32995 z"
|
||||
id="path4"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cscsscccsssccscccscccccssscccccscscccccscccssssssccssccssccscc"
|
||||
style="fill:#ffffff;stroke-width:1.55090213" />
|
||||
</svg>
|
||||
|
Depois Largura: | Altura: | Tamanho: 4.2 KiB |
@@ -0,0 +1,76 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="15"
|
||||
height="15"
|
||||
id="svg2"
|
||||
version="1.1"
|
||||
inkscape:version="0.48.4 r9939"
|
||||
sodipodi:docname="resize_gray.svg">
|
||||
<defs
|
||||
id="defs4">
|
||||
<clipPath
|
||||
clipPathUnits="userSpaceOnUse"
|
||||
id="clipPath3803">
|
||||
<rect
|
||||
style="stroke:none"
|
||||
id="rect3805"
|
||||
width="16.09375"
|
||||
height="14.71875"
|
||||
x="0.84375"
|
||||
y="1038.1434" />
|
||||
</clipPath>
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="32"
|
||||
inkscape:cx="6.9909088"
|
||||
inkscape:cy="6.5564812"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
inkscape:window-width="1865"
|
||||
inkscape:window-height="1056"
|
||||
inkscape:window-x="55"
|
||||
inkscape:window-y="24"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata7">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-1037.3622)">
|
||||
<path
|
||||
style="fill:none;stroke:#bfbfbf;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
d="m 10.46875,1032.1747 -14.5,14.2813 z m 3.5,1.2501 -17.3125,17.3124 z"
|
||||
id="path2985"
|
||||
inkscape:connector-curvature="0"
|
||||
clip-path="url(#clipPath3803)"
|
||||
transform="translate(0.8125,0.6875)"
|
||||
sodipodi:nodetypes="cccccc" />
|
||||
</g>
|
||||
</svg>
|
||||
|
Depois Largura: | Altura: | Tamanho: 2.2 KiB |
-1243
Diferenças do arquivo suprimidas por serem muito extensas
Carregar Diff
+6318
-5090
Diferenças do arquivo suprimidas por serem muito extensas
Carregar Diff
-5871
Diferenças do arquivo suprimidas por serem muito extensas
Carregar Diff
Diferenças do arquivo suprimidas por serem muito extensas
Carregar Diff
externo
+10
-20
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);
|
||||
}
|
||||
|
||||
}
|
||||
Diff do arquivo suprimido porque uma ou mais linhas são muito longas
+29
-42
Diff do arquivo suprimido porque uma ou mais linhas são muito longas
externo
+15
-28
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) {
|
||||
|
||||
Diff do arquivo suprimido porque uma ou mais linhas são muito longas
+25
-15
@@ -1,72 +1,82 @@
|
||||
[
|
||||
{
|
||||
"file": "build/lib/strophe.js",
|
||||
"file": "lib/strophe.js",
|
||||
"license": "multiple",
|
||||
"url": "http://strophe.im/strophejs/"
|
||||
},
|
||||
{
|
||||
"file": "build/lib/strophe.muc.js",
|
||||
"file": "lib/strophe.muc.js",
|
||||
"license": "MIT",
|
||||
"url": "https://github.com/strophe/strophejs-plugins"
|
||||
},
|
||||
{
|
||||
"file": "build/lib/strophe.disco.js",
|
||||
"file": "lib/strophe.disco.js",
|
||||
"license": "MIT",
|
||||
"url": "https://github.com/strophe/strophejs-plugins"
|
||||
},
|
||||
{
|
||||
"file": "build/lib/strophe.caps.js",
|
||||
"file": "lib/strophe.caps.js",
|
||||
"license": "MIT",
|
||||
"url": "https://github.com/strophe/strophejs-plugins"
|
||||
},
|
||||
{
|
||||
"file": "build/lib/strophe.vcard.js",
|
||||
"file": "lib/strophe.vcard.js",
|
||||
"license": "MIT",
|
||||
"url": "https://github.com/strophe/strophejs-plugins"
|
||||
},
|
||||
{
|
||||
"file": "build/lib/strophe.jingle/strophe.jingle.js",
|
||||
"file": "lib/strophe.jingle/strophe.jingle.js",
|
||||
"license": "MIT",
|
||||
"url": "https://github.com/ESTOS/strophe.jingle"
|
||||
},
|
||||
{
|
||||
"file": "build/lib/strophe.jingle/strophe.jingle.session.js",
|
||||
"file": "lib/strophe.jingle/strophe.jingle.session.js",
|
||||
"license": "MIT",
|
||||
"url": "https://github.com/ESTOS/strophe.jingle"
|
||||
},
|
||||
{
|
||||
"file": "build/lib/strophe.jingle/strophe.jingle.sdp.js",
|
||||
"file": "lib/strophe.jingle/strophe.jingle.sdp.js",
|
||||
"license": "MIT",
|
||||
"url": "https://github.com/ESTOS/strophe.jingle"
|
||||
},
|
||||
{
|
||||
"file": "build/lib/strophe.jingle/strophe.jingle.adapter.js",
|
||||
"file": "lib/strophe.jingle/strophe.jingle.adapter.js",
|
||||
"license": "MIT",
|
||||
"url": "https://github.com/ESTOS/strophe.jingle"
|
||||
},
|
||||
{
|
||||
"file": "build/lib/otr/build/dep/salsa20.js",
|
||||
"file": "lib/otr/build/dep/salsa20.js",
|
||||
"license": "AGPL3",
|
||||
"url": "https://github.com/neoatlantis/node-salsa20"
|
||||
},
|
||||
{
|
||||
"file": "build/lib/otr/build/dep/bigint.js",
|
||||
"file": "lib/otr/build/dep/bigint.js",
|
||||
"license": "public domain",
|
||||
"url": "www.leemon.com"
|
||||
},
|
||||
{
|
||||
"file": "build/lib/otr/build/dep/crypto.js",
|
||||
"file": "lib/otr/build/dep/crypto.js",
|
||||
"license": "code.google.com/p/crypto-js/wiki/license",
|
||||
"url": "code.google.com/p/crypto-js"
|
||||
},
|
||||
{
|
||||
"file": "build/lib/otr/build/dep/eventemitter.js",
|
||||
"file": "lib/otr/build/dep/eventemitter.js",
|
||||
"license": "MIT",
|
||||
"url": "http://git.io/ee"
|
||||
},
|
||||
{
|
||||
"file": "build/lib/otr/build/otr.js",
|
||||
"file": "lib/otr/build/otr.js",
|
||||
"license": "MPL v2.0",
|
||||
"url": "https://arlolra.github.io/otr/"
|
||||
},
|
||||
{
|
||||
"file": "lib/i18next/release/i18next-latest.min.js",
|
||||
"license": "MIT",
|
||||
"url": "http://i18next.com/"
|
||||
},
|
||||
{
|
||||
"file": "lib/translation.js",
|
||||
"license": "MIT",
|
||||
"url": "https://webtranslateit.com/en/projects/10365-JSXC"
|
||||
}
|
||||
]
|
||||
]
|
||||
|
||||
+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>
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<title>JSXC example application</title>
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-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="../dev/css/jsxc.css" media="all" rel="stylesheet" type="text/css" />
|
||||
<link href="../dev/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;}
|
||||
fieldset {float: left;}
|
||||
</style>
|
||||
|
||||
<script src="../dev/lib/jquery.min.js"></script>
|
||||
<script src="../dev/lib/jquery.ui.min.js"></script>
|
||||
<script src="../dev/lib/jquery.colorbox-min.js"></script>
|
||||
<script src="../dev/lib/jquery.slimscroll.js"></script>
|
||||
<script src="../dev/lib/jquery.fullscreen.js"></script>
|
||||
|
||||
<script src="../dev/lib/jsxc.dep.js"></script>
|
||||
<script src="../dev/jsxc.js"></script>
|
||||
|
||||
<script src="js/example.js"></script>
|
||||
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<form id="form" method="post" action="login.html">
|
||||
<fieldset>
|
||||
<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 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>
|
||||
+23
-34
@@ -7,43 +7,23 @@
|
||||
<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;}
|
||||
fieldset {float: left;}
|
||||
</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>
|
||||
|
||||
<!-- 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/jsxc.dep.js"></script>
|
||||
<script src="../build/jsxc.js"></script>
|
||||
<script src="../build/lib/jquery.min.js"></script>
|
||||
<script src="../build/lib/jquery.ui.min.js"></script>
|
||||
<script src="../build/lib/jquery.colorbox-min.js"></script>
|
||||
<script src="../build/lib/jquery.slimscroll.js"></script>
|
||||
<script src="../build/lib/jquery.fullscreen.js"></script>
|
||||
|
||||
<script src="../build/lib/jsxc.dep.js"></script>
|
||||
<script src="../build/jsxc.lib.js"></script>
|
||||
<script src="../build/jsxc.lib.webrtc.js"></script>
|
||||
|
||||
<script src="js/example.js"></script>
|
||||
|
||||
@@ -52,11 +32,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>
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
$(function() {
|
||||
var settings = {
|
||||
xmpp: {
|
||||
url: '/http-bind/',
|
||||
domain: 'localhost',
|
||||
resource: 'example',
|
||||
overwrite: true,
|
||||
onlogin: true
|
||||
}
|
||||
};
|
||||
|
||||
jsxc.init({
|
||||
loginForm: {
|
||||
form: '#form',
|
||||
jid: '#username',
|
||||
pass: '#password'
|
||||
},
|
||||
logoutElement: $('#logout'),
|
||||
checkFlash: false,
|
||||
rosterAppend: 'body',
|
||||
root: window.location.pathname.replace(/\/[^/]+$/, "/") + '../dev'
|
||||
turnCredentialsPath: 'ajax/getturncredentials.json',
|
||||
displayRosterMinimized: function() {
|
||||
return true;
|
||||
},
|
||||
otr: {
|
||||
debug: true,
|
||||
SEND_WHITESPACE_TAG: true,
|
||||
WHITESPACE_START_AKE: true
|
||||
},
|
||||
loadSettings: function(username, password) {
|
||||
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());
|
||||
});
|
||||
});
|
||||
+28
-11
@@ -1,4 +1,14 @@
|
||||
$(function() {
|
||||
var settings = {
|
||||
xmpp: {
|
||||
url: '/http-bind/',
|
||||
domain: 'localhost',
|
||||
resource: 'example',
|
||||
overwrite: true,
|
||||
onlogin: true
|
||||
}
|
||||
};
|
||||
|
||||
jsxc.init({
|
||||
loginForm: {
|
||||
form: '#form',
|
||||
@@ -8,7 +18,7 @@ $(function() {
|
||||
logoutElement: $('#logout'),
|
||||
checkFlash: false,
|
||||
rosterAppend: 'body',
|
||||
root: '/jsxc/',
|
||||
root: window.location.pathname.replace(/\/[^/]+$/, '/') + '../build',
|
||||
turnCredentialsPath: 'ajax/getturncredentials.json',
|
||||
displayRosterMinimized: function() {
|
||||
return true;
|
||||
@@ -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());
|
||||
});
|
||||
});
|
||||
|
||||
+12
-24
@@ -7,35 +7,23 @@
|
||||
<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;}
|
||||
fieldset {float: left;}
|
||||
</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="../build/lib/jquery.min.js"></script>
|
||||
<script src="../build/lib/jquery.ui.min.js"></script>
|
||||
<script src="../build/lib/jquery.colorbox-min.js"></script>
|
||||
<script src="../build/lib/jquery.slimscroll.js"></script>
|
||||
<script src="../build/lib/jquery.fullscreen.js"></script>
|
||||
|
||||
<script src="../build/lib/jsxc.dep.js"></script>
|
||||
<script src="../build/jsxc.lib.js"></script>
|
||||
<script src="../build/jsxc.lib.webrtc.js"></script>
|
||||
|
||||
<script src="js/example.js"></script>
|
||||
|
||||
@@ -46,4 +34,4 @@
|
||||
|
||||
<a href="index.html" id="logout">Log out</a>
|
||||
</body>
|
||||
</html>
|
||||
</html>
|
||||
|
||||
@@ -0,0 +1,59 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
viewBox="0 0 1000 1000"
|
||||
preserveAspectRatio="xMinYMin meet"
|
||||
width="100%"
|
||||
height="100%"
|
||||
style="width: 512px; height: 512px;"
|
||||
id="svg2"
|
||||
version="1.1"
|
||||
inkscape:version="0.91+devel r"
|
||||
sodipodi:docname="group_grey.svg">
|
||||
<metadata
|
||||
id="metadata10">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<defs
|
||||
id="defs8" />
|
||||
<sodipodi:namedview
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1"
|
||||
objecttolerance="10"
|
||||
gridtolerance="10"
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="980"
|
||||
inkscape:window-height="888"
|
||||
id="namedview6"
|
||||
showgrid="false"
|
||||
inkscape:zoom="0.6675088"
|
||||
inkscape:cx="512.17823"
|
||||
inkscape:cy="480.21903"
|
||||
inkscape:window-x="889"
|
||||
inkscape:window-y="85"
|
||||
inkscape:window-maximized="0"
|
||||
inkscape:current-layer="svg2" />
|
||||
<path
|
||||
d="m 0.94630456,763.0963 c 0,22.21203 9.08673644,33.31804 27.26020844,33.31804 l 112.069747,0 0,-142.35887 c 0,-18.17347 4.54363,-34.83222 13.63088,-49.97627 9.08724,-15.14405 21.70797,-26.75512 37.86216,-34.83326 l 115.09866,-54.52042 c 10.09637,-6.05782 18.17347,-13.12528 24.23129,-21.20238 -12.11564,-18.17347 -22.21202,-39.37586 -30.28912,-63.60715 -8.0771,-24.2313 -12.11564,-49.47223 -12.11564,-75.7228 0,-16.1542 2.01927,-32.3084 6.05782,-48.46259 4.03855,-16.1542 9.08674,-31.29876 15.14456,-45.43368 -20.19275,-14.13493 -41.39513,-21.20239 -63.60715,-21.20239 -38.36622,2.01928 -68.65534,17.66839 -90.86736,46.94736 -22.21201,29.27897 -33.31803,62.09244 -33.31803,98.44042 2.01928,62.59751 24.2313,107.02155 66.63606,133.27212 L 16.092416,596.50615 C 5.9960421,602.56397 0.94785546,612.66034 0.94785546,626.79527 l 0,136.30103 z M 191.76775,796.41434 c -2.01927,42.40476 10.09637,64.61678 36.34695,66.63606 l 542.17524,0 c 12.11565,-4.03855 20.69783,-10.09637 25.74653,-18.17347 5.04869,-8.0771 7.57305,-14.63948 7.57305,-19.68716 l 0,-171.13275 c 0,-18.17347 -7.06746,-30.28912 -21.20238,-36.34694 L 637.01936,545.01619 573.41221,514.72707 c 38.36622,-22.21202 63.60715,-60.57824 75.7228,-115.09865 8.0771,-30.28912 8.0771,-61.58788 0,-93.89627 -10.09637,-36.34695 -28.7744,-67.14115 -56.0341,-92.38259 -27.25969,-25.24145 -59.06352,-38.87182 -95.4115,-40.89109 -36.34694,2.01927 -67.6457,15.64964 -93.89627,40.89109 -26.25057,25.24144 -44.42404,55.02601 -54.52042,89.35368 -12.11564,46.44331 -8.07709,93.89627 12.11565,142.35886 16.1542,30.28912 37.35658,54.52041 63.60715,72.69389 l -57.54932,27.2602 -151.4456,69.66498 c -16.1542,8.0771 -24.2313,21.20238 -24.2313,39.37585 l 0,142.35887 z m 475.53918,-302.8912 c 8.0771,8.0771 18.17347,16.1542 30.28912,24.23129 12.11565,8.0771 23.22166,14.13493 33.31803,18.17348 10.09638,4.03855 23.22166,9.59181 39.37586,16.65979 16.1542,7.06797 28.26984,12.62124 36.34694,16.65979 16.1542,8.0771 28.77493,19.68819 37.86218,34.83326 9.08724,15.14507 13.63088,31.80384 13.63088,49.97627 l 0,142.35887 115.09865,0 c 18.17347,-2.01928 27.26021,-13.12529 27.26021,-33.31803 l 0,-136.30104 c 0,-14.13493 -5.04819,-24.2313 -15.14456,-30.28912 L 815.72517,514.72707 c 42.40477,-30.28912 63.60715,-73.70352 63.60715,-130.24321 0,-38.36622 -12.11565,-72.18881 -36.34694,-101.46778 -24.2313,-29.27897 -53.51078,-43.91896 -87.83845,-43.92 -22.21202,0 -44.42404,7.06747 -66.63606,21.20239 12.11564,30.28912 18.17347,61.58787 18.17347,93.89627 0,50.48187 -13.12529,96.92518 -39.37586,139.32995 z"
|
||||
id="path4"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cscsscccsssccscccscccccssscccccscscccccscccssssssccssccssccscc"
|
||||
style="fill:#999999;stroke-width:1.55090213;fill-opacity:1" />
|
||||
</svg>
|
||||
|
Depois Largura: | Altura: | Tamanho: 4.2 KiB |
@@ -0,0 +1,58 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
viewBox="0 0 1000 1000"
|
||||
preserveAspectRatio="xMinYMin meet"
|
||||
width="100%"
|
||||
height="100%"
|
||||
style="width: 512px; height: 512px;"
|
||||
id="svg2"
|
||||
version="1.1"
|
||||
inkscape:version="0.91+devel r"
|
||||
sodipodi:docname="group_white.svg">
|
||||
<metadata
|
||||
id="metadata10">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<defs
|
||||
id="defs8" />
|
||||
<sodipodi:namedview
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1"
|
||||
objecttolerance="10"
|
||||
gridtolerance="10"
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="1855"
|
||||
inkscape:window-height="1056"
|
||||
id="namedview6"
|
||||
showgrid="false"
|
||||
inkscape:zoom="0.6675088"
|
||||
inkscape:cx="538.39511"
|
||||
inkscape:cy="480.21903"
|
||||
inkscape:window-x="65"
|
||||
inkscape:window-y="24"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg2" />
|
||||
<path
|
||||
d="m 0.94630456,763.0963 c 0,22.21203 9.08673644,33.31804 27.26020844,33.31804 l 112.069747,0 0,-142.35887 c 0,-18.17347 4.54363,-34.83222 13.63088,-49.97627 9.08724,-15.14405 21.70797,-26.75512 37.86216,-34.83326 l 115.09866,-54.52042 c 10.09637,-6.05782 18.17347,-13.12528 24.23129,-21.20238 -12.11564,-18.17347 -22.21202,-39.37586 -30.28912,-63.60715 -8.0771,-24.2313 -12.11564,-49.47223 -12.11564,-75.7228 0,-16.1542 2.01927,-32.3084 6.05782,-48.46259 4.03855,-16.1542 9.08674,-31.29876 15.14456,-45.43368 -20.19275,-14.13493 -41.39513,-21.20239 -63.60715,-21.20239 -38.36622,2.01928 -68.65534,17.66839 -90.86736,46.94736 -22.21201,29.27897 -33.31803,62.09244 -33.31803,98.44042 2.01928,62.59751 24.2313,107.02155 66.63606,133.27212 L 16.092416,596.50615 C 5.9960421,602.56397 0.94785546,612.66034 0.94785546,626.79527 l 0,136.30103 z M 191.76775,796.41434 c -2.01927,42.40476 10.09637,64.61678 36.34695,66.63606 l 542.17524,0 c 12.11565,-4.03855 20.69783,-10.09637 25.74653,-18.17347 5.04869,-8.0771 7.57305,-14.63948 7.57305,-19.68716 l 0,-171.13275 c 0,-18.17347 -7.06746,-30.28912 -21.20238,-36.34694 L 637.01936,545.01619 573.41221,514.72707 c 38.36622,-22.21202 63.60715,-60.57824 75.7228,-115.09865 8.0771,-30.28912 8.0771,-61.58788 0,-93.89627 -10.09637,-36.34695 -28.7744,-67.14115 -56.0341,-92.38259 -27.25969,-25.24145 -59.06352,-38.87182 -95.4115,-40.89109 -36.34694,2.01927 -67.6457,15.64964 -93.89627,40.89109 -26.25057,25.24144 -44.42404,55.02601 -54.52042,89.35368 -12.11564,46.44331 -8.07709,93.89627 12.11565,142.35886 16.1542,30.28912 37.35658,54.52041 63.60715,72.69389 l -57.54932,27.2602 -151.4456,69.66498 c -16.1542,8.0771 -24.2313,21.20238 -24.2313,39.37585 l 0,142.35887 z m 475.53918,-302.8912 c 8.0771,8.0771 18.17347,16.1542 30.28912,24.23129 12.11565,8.0771 23.22166,14.13493 33.31803,18.17348 10.09638,4.03855 23.22166,9.59181 39.37586,16.65979 16.1542,7.06797 28.26984,12.62124 36.34694,16.65979 16.1542,8.0771 28.77493,19.68819 37.86218,34.83326 9.08724,15.14507 13.63088,31.80384 13.63088,49.97627 l 0,142.35887 115.09865,0 c 18.17347,-2.01928 27.26021,-13.12529 27.26021,-33.31803 l 0,-136.30104 c 0,-14.13493 -5.04819,-24.2313 -15.14456,-30.28912 L 815.72517,514.72707 c 42.40477,-30.28912 63.60715,-73.70352 63.60715,-130.24321 0,-38.36622 -12.11565,-72.18881 -36.34694,-101.46778 -24.2313,-29.27897 -53.51078,-43.91896 -87.83845,-43.92 -22.21202,0 -44.42404,7.06747 -66.63606,21.20239 12.11564,30.28912 18.17347,61.58787 18.17347,93.89627 0,50.48187 -13.12529,96.92518 -39.37586,139.32995 z"
|
||||
id="path4"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cscsscccsssccscccscccccssscccccscscccccscccssssssccssccssccscc"
|
||||
style="fill:#ffffff;stroke-width:1.55090213" />
|
||||
</svg>
|
||||
|
Depois Largura: | Altura: | Tamanho: 4.2 KiB |
@@ -0,0 +1,76 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="15"
|
||||
height="15"
|
||||
id="svg2"
|
||||
version="1.1"
|
||||
inkscape:version="0.48.4 r9939"
|
||||
sodipodi:docname="resize_gray.svg">
|
||||
<defs
|
||||
id="defs4">
|
||||
<clipPath
|
||||
clipPathUnits="userSpaceOnUse"
|
||||
id="clipPath3803">
|
||||
<rect
|
||||
style="stroke:none"
|
||||
id="rect3805"
|
||||
width="16.09375"
|
||||
height="14.71875"
|
||||
x="0.84375"
|
||||
y="1038.1434" />
|
||||
</clipPath>
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="32"
|
||||
inkscape:cx="6.9909088"
|
||||
inkscape:cy="6.5564812"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
inkscape:window-width="1865"
|
||||
inkscape:window-height="1056"
|
||||
inkscape:window-x="55"
|
||||
inkscape:window-y="24"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata7">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-1037.3622)">
|
||||
<path
|
||||
style="fill:none;stroke:#bfbfbf;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
d="m 10.46875,1032.1747 -14.5,14.2813 z m 3.5,1.2501 -17.3125,17.3124 z"
|
||||
id="path2985"
|
||||
inkscape:connector-curvature="0"
|
||||
clip-path="url(#clipPath3803)"
|
||||
transform="translate(0.8125,0.6875)"
|
||||
sodipodi:nodetypes="cccccc" />
|
||||
</g>
|
||||
</svg>
|
||||
|
Depois Largura: | Altura: | Tamanho: 2.2 KiB |
-1243
Diferenças do arquivo suprimidas por serem muito extensas
Carregar Diff
-5858
Diferenças do arquivo suprimidas por serem muito extensas
Carregar Diff
@@ -1,257 +0,0 @@
|
||||
/* global jsxc, Strophe, jQuery */
|
||||
|
||||
jsxc.l10n.en.Join_chat = 'Join chat';
|
||||
jsxc.l10n.de.Join_chat = 'Chat beitreten';
|
||||
jsxc.l10n.en.Join = 'Join';
|
||||
jsxc.l10n.de.Join = 'Beitreten';
|
||||
|
||||
jsxc.gui.template.joinChat = '<h3>%%Join_chat%%</h3>\
|
||||
<p class=".jsxc_explanation">Blub</p>\
|
||||
<p><label for="jsxc_room">%%Room%%:</label>\
|
||||
<input type="text" name="room" id="jsxc_room" required="required" /></p>\
|
||||
<p><label for="jsxc_nickname">%%Nickname%%:</label>\
|
||||
<input type="text" name="nickname" id="jsxc_nickname" /></p>\
|
||||
<p><label for="jsxc_password">%%Password%%:</label>\
|
||||
<input type="text" name="password" id="jsxc_password" /></p>\
|
||||
<p class="jsxc_right">\
|
||||
<a href="#" class="button jsxc_close">%%Close%%</a> <a href="#" class="button creation jsxc_join">%%Join%%</a>\
|
||||
</p>';
|
||||
|
||||
(function($) {
|
||||
"use strict";
|
||||
|
||||
jsxc.muc = {
|
||||
conn: null,
|
||||
initMenu: function() {
|
||||
var li = $('<li>').attr('class', 'jsxc_joinChat').text(jsxc.translate('%%Join_chat%%'));
|
||||
li.click(jsxc.muc.showJoinChat);
|
||||
$('#jsxc_menu ul').append(li);
|
||||
|
||||
},
|
||||
showJoinChat: function() {
|
||||
var dialog = jsxc.gui.dialog.open(jsxc.gui.template.get('joinChat'));
|
||||
|
||||
dialog.find('.jsxc_join').click(function() {
|
||||
var room = $('#jsxc_room').val() || null;
|
||||
var nickname = $('#jsxc_nickname').val() || Strophe.getNodeFromJid(jsxc.xmpp.conn.jid);
|
||||
var password = $('#jsxc_password').val() || null;
|
||||
|
||||
if (!room) {
|
||||
$('#jsxc_room').addClass('jsxc_invalid').keyup(function() {
|
||||
if ($(this).val()) {
|
||||
$(this).removeClass('jsxc_invalid');
|
||||
}
|
||||
});
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!room.match(/@(.*)$/)) {
|
||||
room += '@' + 'conference.localhost'; // @TODO: replace
|
||||
}
|
||||
|
||||
var cid = jsxc.jidToCid(room);
|
||||
|
||||
if (jsxc.xmpp.conn.muc.roomNames.indexOf(room) < 0) {
|
||||
jsxc.xmpp.conn.muc.join(room, nickname, null, null, null, password);
|
||||
|
||||
jsxc.storage.setUserItem('roomNames', jsxc.xmpp.conn.muc.roomNames);
|
||||
|
||||
var own = jsxc.storage.getUserItem('own') || [];
|
||||
own.push(jsxc.xmpp.conn.muc.test_append_nick(room, nickname));
|
||||
jsxc.storage.setUserItem('own', own);
|
||||
|
||||
jsxc.storage.setUserItem('buddy_' + cid, {
|
||||
jid: room,
|
||||
name: room,
|
||||
type: 'groupchat'
|
||||
});
|
||||
|
||||
var bl = jsxc.storage.getUserItem('buddylist');
|
||||
bl.push(cid);
|
||||
jsxc.storage.setUserItem('buddylist', bl);
|
||||
|
||||
jsxc.gui.roster.add(cid);
|
||||
}
|
||||
|
||||
jsxc.gui.window.open(cid);
|
||||
jsxc.gui.dialog.close();
|
||||
});
|
||||
|
||||
dialog.find('input').keydown(function(ev) {
|
||||
if (ev.which !== 13) {
|
||||
return;
|
||||
}
|
||||
|
||||
dialog.find('.jsxc_join').click();
|
||||
});
|
||||
},
|
||||
initWindow: function(event, win) {
|
||||
var self = jsxc.muc;
|
||||
var data = win.data();
|
||||
var cid = jsxc.jidToCid(data.jid);
|
||||
var sdata = jsxc.storage.getUserItem('window_' + cid);
|
||||
|
||||
if (!jsxc.xmpp.conn) {
|
||||
$(document).one('connectionReady.jsxc', function() {
|
||||
self.initWindow(null, win);
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
if (self.conn.muc.roomNames.indexOf(data.jid) < 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
win.addClass('jsxc_groupchat');
|
||||
win.find('.jsxc_tools > .jsxc_transfer').after('<div class="jsxc_members">M</div>');
|
||||
var ml = $('<div class="jsxc_memberlist"><ul></ul></div>');
|
||||
win.append(ml);
|
||||
|
||||
ml.find('ul').slimScroll({
|
||||
height: '255px',
|
||||
distance: '3px'
|
||||
});
|
||||
|
||||
var member = jsxc.storage.getUserItem('member_' + cid) || {};
|
||||
|
||||
$.each(member, function(index, val) {
|
||||
self.insertMember(cid, index, val.jid, val.status);
|
||||
});
|
||||
|
||||
if (sdata.minimize_ml || sdata.minimize_ml === null) {
|
||||
self.hideMemberList(win, 200, true);
|
||||
} else {
|
||||
setTimeout(function() {
|
||||
self.showMemberList(win, 200);
|
||||
}, 500);
|
||||
}
|
||||
|
||||
win.on('show', function() {
|
||||
ml.slideDown();
|
||||
ml.css('display', 'block');
|
||||
});
|
||||
win.on('hide', function() {
|
||||
ml.slideUp();
|
||||
});
|
||||
|
||||
win.trigger((sdata.minimize) ? 'hide' : 'show');
|
||||
},
|
||||
showMemberList: function(win, originalWidth, noani) {
|
||||
if (!noani) {
|
||||
win.animate({
|
||||
width: (originalWidth + 200) + 'px'
|
||||
}).css('overflow', 'visible');
|
||||
}
|
||||
|
||||
jsxc.storage
|
||||
.updateUserItem('window_' + jsxc.jidToCid(win.data().jid), 'minimize_ml', false);
|
||||
|
||||
win.find('.jsxc_members').off('click').one('click', function() {
|
||||
jsxc.muc.hideMemberList(win, originalWidth);
|
||||
});
|
||||
},
|
||||
hideMemberList: function(win, originalWidth, noani) {
|
||||
if (!noani) {
|
||||
win.animate({
|
||||
width: originalWidth + 'px'
|
||||
}).css('overflow', 'visible');
|
||||
}
|
||||
|
||||
jsxc.storage
|
||||
.updateUserItem('window_' + jsxc.jidToCid(win.data().jid), 'minimize_ml', true);
|
||||
|
||||
win.find('.jsxc_members').off('click').one('click', function() {
|
||||
jsxc.muc.showMemberList(win, originalWidth);
|
||||
});
|
||||
},
|
||||
onPresence: function(event, from, status, presence) {
|
||||
var self = jsxc.muc;
|
||||
var room = Strophe.getBareJidFromJid(from);
|
||||
var cid = jsxc.jidToCid(room);
|
||||
var nickname = Strophe.getResourceFromJid(from);
|
||||
var xdata = $(presence).find('x[xmlns^="' + Strophe.NS.MUC + '"]');
|
||||
|
||||
if (self.conn.muc.roomNames.indexOf(room) < 0 || xdata.length === 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
var jid = xdata.find('item').attr('jid');
|
||||
|
||||
var member = jsxc.storage.getUserItem('member_' + cid) || {};
|
||||
if (status === 0) {
|
||||
delete member[nickname];
|
||||
self.removeMember(cid, nickname);
|
||||
jsxc.gui.window.postMessage(cid, 'sys', nickname + ' left the building.');
|
||||
} else {
|
||||
if (!member[nickname]) {
|
||||
jsxc.gui.window.postMessage(cid, 'sys', nickname + ' entered the room.');
|
||||
}
|
||||
member[nickname] = {
|
||||
jid: jid,
|
||||
status: status,
|
||||
roomJid: from
|
||||
};
|
||||
self.insertMember(cid, nickname, jid, status);
|
||||
}
|
||||
|
||||
jsxc.storage.setUserItem('member_' + cid, member);
|
||||
|
||||
return true;
|
||||
},
|
||||
insertMember: function(cid, nickname, jid, status) {
|
||||
var win = jsxc.gui.getWindow(cid);
|
||||
var m = win.find('.jsxc_memberlist li[data-nickname="' + nickname + '"]');
|
||||
|
||||
if (m.length === 0) {
|
||||
m = $('<li title="' + jid + '">' + nickname + '</li>');
|
||||
m.attr('data-nickname', nickname);
|
||||
win.find('.jsxc_memberlist ul').append(m);
|
||||
}
|
||||
|
||||
if (status !== null) {
|
||||
m.removeClass('jsxc_' + jsxc.status.join(' jsxc_'))
|
||||
.addClass('jsxc_' + jsxc.status[status]);
|
||||
}
|
||||
},
|
||||
removeMember: function(cid, nickname) {
|
||||
var win = jsxc.gui.getWindow(cid);
|
||||
var m = win.find('.jsxc_memberlist li[data-nickname="' + nickname + '"]');
|
||||
|
||||
if (m.length > 0) {
|
||||
m.remove();
|
||||
}
|
||||
},
|
||||
onGroupchatMessage: function(message) {
|
||||
var from = $(message).attr('from');
|
||||
var body = $(message).find('body:first').text();
|
||||
body = Strophe.getResourceFromJid(from) + ': ' + body;
|
||||
$(message).find('body:first').text(body);
|
||||
|
||||
jsxc.xmpp.onMessage($(message)[0]);
|
||||
|
||||
return true;
|
||||
},
|
||||
onNormalMessage: function() {
|
||||
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
$(document).one('ready.roster.jsxc', jsxc.muc.initMenu);
|
||||
$(document).one('attached', function() {
|
||||
var self = jsxc.muc;
|
||||
self.conn = jsxc.xmpp.conn;
|
||||
self.conn.addHandler(self.onGroupchatMessage, null, 'message', 'groupchat');
|
||||
self.conn.addHandler(self.onNormalMessage, null, 'message', 'normal');
|
||||
self.conn.muc.roomNames = jsxc.storage.getUserItem('roomNames') || [];
|
||||
});
|
||||
$(document).one('connected', function() {
|
||||
jsxc.storage.removeUserItem('roomNames');
|
||||
});
|
||||
$(document).on('init.window.jsxc', jsxc.muc.initWindow);
|
||||
$(document).on('presence.jsxc', jsxc.muc.onPresence);
|
||||
|
||||
$(function() {
|
||||
|
||||
});
|
||||
}(jQuery));
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
Submódulo
+1
Submodule lib/i18next added at e51cad3c82
+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) {
|
||||
|
||||
@@ -0,0 +1,172 @@
|
||||
{
|
||||
"translation": {
|
||||
"Logging_in": "Login läuft…",
|
||||
"your_connection_is_unencrypted": "Deine Verbindung ist Unverschlüsselt.",
|
||||
"your_connection_is_encrypted": "Deine Verbindung ist verschlüsselt.",
|
||||
"your_buddy_closed_the_private_connection": "Dein Kontakt hat die private Verbindung getrennt.",
|
||||
"start_private": "Privat starten",
|
||||
"close_private": "Privat abbrechen",
|
||||
"your_buddy_is_verificated": "Dein Kontakt ist verifiziert.",
|
||||
"you_have_only_a_subscription_in_one_way": "Der Kontaktstatus ist einseitig.",
|
||||
"authentication_query_sent": "Authentifizierungsanfrage gesendet.",
|
||||
"your_message_wasnt_send_please_end_your_private_conversation": "Deine Nachricht wurde nicht gesendet. Bitte beende die private Konversation.",
|
||||
"unencrypted_message_received": "Unverschlüsselte Nachricht erhalten.",
|
||||
"your_message_wasnt_send_because_you_have_no_valid_subscription": "Deine Nachricht wurde nicht gesandt, da der Kontaktstatus einseitig ist.",
|
||||
"not_available": "Nicht verfügbar.",
|
||||
"no_connection": "Keine Verbindung.",
|
||||
"relogin": "Neu anmelden.",
|
||||
"trying_to_start_private_conversation": "Versuche private Konversation zu starten.",
|
||||
"Verified": "Verifiziert",
|
||||
"Unverified": "Unverifiziert",
|
||||
"private_conversation_started": "Private Konversation gestartet.",
|
||||
"private_conversation_aborted": "Private Konversation abgebrochen.",
|
||||
"your_buddy_closed_the_private_conversation_you_should_do_the_same": "Dein Kontakt hat die private Konversation beendet. Das solltest du auch tun!",
|
||||
"conversation_is_now_verified": "Konversation ist jetzt verifiziert",
|
||||
"authentication_failed": "Authentifizierung fehlgeschlagen.",
|
||||
"your_buddy_is_attempting_to_determine_": "Dein Kontakt versucht herauszufinden ob er wirklich mit dir redet.",
|
||||
"to_authenticate_to_your_buddy": "Um dich gegenüber deinem Kontakt zu verifizieren ",
|
||||
"enter_the_answer_and_click_answer": "gib die Antwort ein und klick auf Antworten.",
|
||||
"enter_the_secret": "gib das Geheimnis ein.",
|
||||
"Creating_your_private_key_": "Wir werden jetzt deinen privaten Schlüssel generieren. Das kann einige Zeit in Anspruch nehmen.",
|
||||
"Authenticating_a_buddy_helps_": "Einen Kontakt zu authentifizieren hilft sicher zustellen, dass die Person mit der du sprichst auch die ist die sie sagt.",
|
||||
"How_do_you_want_to_authenticate_your_buddy": "Wie willst du {{bid_name}} (<b>{{bid_jid}}</b>) authentifizieren?",
|
||||
"Select_method": "Wähle...",
|
||||
"Manual": "Manual",
|
||||
"Question": "Frage",
|
||||
"Secret": "Geheimnis",
|
||||
"To_verify_the_fingerprint_": "Um den Fingerprint zu verifizieren kontaktiere dein Kontakt über einen anderen Kommunikationsweg. Zum Beispiel per Telefonanruf.",
|
||||
"Your_fingerprint": "Dein Fingerprint",
|
||||
"Buddy_fingerprint": "Sein/Ihr Fingerprint",
|
||||
"Close": "Schließen",
|
||||
"Compared": "Verglichen",
|
||||
"To_authenticate_using_a_question_": "Um die Authentifizierung per Frage durchzuführen, wähle eine Frage bei welcher nur dein Kontakt die Antwort weiß.",
|
||||
"Ask": "Frage",
|
||||
"To_authenticate_pick_a_secret_": "Um deinen Kontakt zu authentifizieren, wähle ein Geheimnis welches nur deinem Kontakt und dir bekannt ist.",
|
||||
"Compare": "Vergleiche",
|
||||
"Fingerprints": "Fingerprints",
|
||||
"Authentication": "Authentifizierung",
|
||||
"Message": "Nachricht",
|
||||
"Add_buddy": "Kontakt hinzufügen",
|
||||
"rename_buddy": "Kontakt umbenennen",
|
||||
"delete_buddy": "Kontakt löschen",
|
||||
"Login": "Anmeldung",
|
||||
"Username": "Benutzername",
|
||||
"Password": "Passwort",
|
||||
"Cancel": "Abbrechen",
|
||||
"Connect": "Verbinden",
|
||||
"Type_in_the_full_username_": "Gib bitte den vollen Benutzernamen und optional ein Alias an.",
|
||||
"Alias": "Alias",
|
||||
"Add": "Hinzufügen",
|
||||
"Subscription_request": "Kontaktanfrage",
|
||||
"You_have_a_request_from": "Du hast eine Anfrage von",
|
||||
"Deny": "Ablehnen",
|
||||
"Approve": "Bestätigen",
|
||||
"Remove_buddy": "Kontakt entfernen",
|
||||
"You_are_about_to_remove_": "Du bist gerade dabei {{bid_name}} (<b>{{bid_jid}}</b>) von deiner Kontaktliste zu entfernen. Alle Chats werden geschlossen.",
|
||||
"Continue_without_chat": "Weiter ohne Chat",
|
||||
"Please_wait": "Bitte warten",
|
||||
"Login_failed": "Chat-Anmeldung fehlgeschlagen",
|
||||
"Sorry_we_cant_authentikate_": "Der Chatserver hat die Anmeldung abgelehnt. Falsches Passwort?",
|
||||
"Retry": "Zurück",
|
||||
"clear_history": "Lösche Verlauf",
|
||||
"New_message_from": "Neue Nachricht von",
|
||||
"Should_we_notify_you_": "Sollen wir dich in Zukunft über eingehende Nachrichten informieren, auch wenn dieser Tab nicht im Vordergrund ist?",
|
||||
"Please_accept_": "Bitte klick auf den \"Zulassen\" Button oben.",
|
||||
"Hide_offline": "Offline ausblenden",
|
||||
"Show_offline": "Offline einblenden",
|
||||
"About": "Über",
|
||||
"dnd": "Beschäftigt",
|
||||
"Mute": "Ton aus",
|
||||
"Unmute": "Ton an",
|
||||
"Subscription": "Bezug",
|
||||
"both": "beidseitig",
|
||||
"Status": "Status",
|
||||
"online": "online",
|
||||
"chat": "chat",
|
||||
"away": "abwesend",
|
||||
"xa": "länger abwesend",
|
||||
"offline": "offline",
|
||||
"none": "keine",
|
||||
"Unknown_instance_tag": "Unbekannter instance tag.",
|
||||
"Not_one_of_our_latest_keys": "Nicht einer unserer letzten Schlüssel.",
|
||||
"Received_an_unreadable_encrypted_message": "Eine unlesbare verschlüsselte Nachricht erhalten.",
|
||||
"Online": "Online",
|
||||
"Chatty": "Gesprächig",
|
||||
"Away": "Abwesend",
|
||||
"Extended_away": "Länger abwesend",
|
||||
"Offline": "Offline",
|
||||
"Friendship_request": "Kontaktanfrage",
|
||||
"Confirm": "Bestätigen",
|
||||
"Dismiss": "Ablehnen",
|
||||
"Remove": "Löschen",
|
||||
"Online_help": "Online Hilfe",
|
||||
"FN": "Name",
|
||||
"N": " ",
|
||||
"FAMILY": "Familienname",
|
||||
"GIVEN": "Vorname",
|
||||
"NICKNAME": "Spitzname",
|
||||
"URL": "URL",
|
||||
"ADR": "Adresse",
|
||||
"STREET": "Straße",
|
||||
"EXTADD": "Zusätzliche Adresse",
|
||||
"LOCALITY": "Ortschaft",
|
||||
"REGION": "Region",
|
||||
"PCODE": "Postleitzahl",
|
||||
"CTRY": "Land",
|
||||
"TEL": "Telefon",
|
||||
"NUMBER": "Nummer",
|
||||
"EMAIL": "E-Mail",
|
||||
"USERID": " ",
|
||||
"ORG": "Organisation",
|
||||
"ORGNAME": "Name",
|
||||
"ORGUNIT": "Abteilung",
|
||||
"TITLE": "Titel",
|
||||
"ROLE": "Rolle",
|
||||
"BDAY": "Geburtstag",
|
||||
"DESC": "Beschreibung",
|
||||
"PHOTO": " ",
|
||||
"send_message": "Sende Nachricht",
|
||||
"get_info": "Benutzerinformationen",
|
||||
"Settings": "Einstellungen",
|
||||
"Priority": "Priorität",
|
||||
"Save": "Speichern",
|
||||
"User_settings": "Benutzereinstellungen",
|
||||
"A_fingerprint_": "Ein Fingerabdruck wird dazu benutzt deinen Gesprächspartner zu identifizieren.",
|
||||
"Your_roster_is_empty_add_a": "Deine Kontaktliste ist leer, füge einen neuen Kontakt ",
|
||||
"new_buddy": "hinzu",
|
||||
"is": "ist",
|
||||
"Login_options": "Anmeldeoptionen",
|
||||
"BOSH_url": "BOSH url",
|
||||
"Domain": "Domain",
|
||||
"Resource": "Ressource",
|
||||
"On_login": "Beim Anmelden",
|
||||
"Received_an_unencrypted_message": "Unverschlüsselte Nachricht empfangen",
|
||||
"Sorry_your_buddy_doesnt_provide_any_information": "Dein Kontakt stellt leider keine Informationen bereit.",
|
||||
"Info_about": "Info über",
|
||||
"Authentication_aborted": "Authentifizierung abgebrochen.",
|
||||
"Authentication_request_received": "Authentifizierunganfrage empfangen.",
|
||||
"Do_you_want_to_display_them": "Möchtest du sie sehen?",
|
||||
"Log_in_without_chat": "Anmelden ohne Chat",
|
||||
"has_come_online": "ist online gekommen",
|
||||
"Unknown_sender": "Unbekannter Sender",
|
||||
"You_received_a_message_from_an_unknown_sender": "Du hast eine Nachricht von einem unbekannten Sender erhalten",
|
||||
"Please_allow_access_to_microphone_and_camera": "Bitte klick auf den \"Zulassen\" Button oben, um den Zugriff auf Kamera und Mikrofon zu erlauben.",
|
||||
"Incoming_call": "Eingehender Anruf",
|
||||
"from": "von",
|
||||
"Do_you_want_to_accept_the_call_from": "Möchtest Du den Anruf annehmen von",
|
||||
"Reject": "Ablehnen",
|
||||
"Accept": "Annehmen",
|
||||
"hang_up": "Auflegen",
|
||||
"snapshot": "Schnappschuss",
|
||||
"mute_my_audio": "Mein Ton aus",
|
||||
"pause_my_video": "Mein Video pausieren",
|
||||
"fullscreen": "Vollbild",
|
||||
"Info": "Info",
|
||||
"Local_IP": "Lokale IP",
|
||||
"Remote_IP": "Remote IP",
|
||||
"Local_Fingerprint": "Lokaler Fingerprint",
|
||||
"Remote_Fingerprint": "Remote Fingerprint",
|
||||
"Video_call_not_possible": "Videoanruf nicht verfügbar. Dein Gesprächspartner unterstützt keine Videotelefonie.",
|
||||
"Start_video_call": "Starte Videoanruf"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,172 @@
|
||||
{
|
||||
"translation": {
|
||||
"Logging_in": null,
|
||||
"your_connection_is_unencrypted": null,
|
||||
"your_connection_is_encrypted": null,
|
||||
"your_buddy_closed_the_private_connection": null,
|
||||
"start_private": null,
|
||||
"close_private": null,
|
||||
"your_buddy_is_verificated": null,
|
||||
"you_have_only_a_subscription_in_one_way": null,
|
||||
"authentication_query_sent": null,
|
||||
"your_message_wasnt_send_please_end_your_private_conversation": null,
|
||||
"unencrypted_message_received": null,
|
||||
"your_message_wasnt_send_because_you_have_no_valid_subscription": null,
|
||||
"not_available": null,
|
||||
"no_connection": null,
|
||||
"relogin": null,
|
||||
"trying_to_start_private_conversation": null,
|
||||
"Verified": null,
|
||||
"Unverified": null,
|
||||
"private_conversation_started": null,
|
||||
"private_conversation_aborted": null,
|
||||
"your_buddy_closed_the_private_conversation_you_should_do_the_same": null,
|
||||
"conversation_is_now_verified": null,
|
||||
"authentication_failed": null,
|
||||
"your_buddy_is_attempting_to_determine_": null,
|
||||
"to_authenticate_to_your_buddy": null,
|
||||
"enter_the_answer_and_click_answer": null,
|
||||
"enter_the_secret": null,
|
||||
"Creating_your_private_key_": null,
|
||||
"Authenticating_a_buddy_helps_": null,
|
||||
"How_do_you_want_to_authenticate_your_buddy": null,
|
||||
"Select_method": null,
|
||||
"Manual": null,
|
||||
"Question": null,
|
||||
"Secret": null,
|
||||
"To_verify_the_fingerprint_": null,
|
||||
"Your_fingerprint": null,
|
||||
"Buddy_fingerprint": null,
|
||||
"Close": null,
|
||||
"Compared": null,
|
||||
"To_authenticate_using_a_question_": null,
|
||||
"Ask": null,
|
||||
"To_authenticate_pick_a_secret_": null,
|
||||
"Compare": null,
|
||||
"Fingerprints": null,
|
||||
"Authentication": null,
|
||||
"Message": null,
|
||||
"Add_buddy": null,
|
||||
"rename_buddy": null,
|
||||
"delete_buddy": null,
|
||||
"Login": null,
|
||||
"Username": null,
|
||||
"Password": null,
|
||||
"Cancel": null,
|
||||
"Connect": null,
|
||||
"Type_in_the_full_username_": null,
|
||||
"Alias": null,
|
||||
"Add": null,
|
||||
"Subscription_request": null,
|
||||
"You_have_a_request_from": null,
|
||||
"Deny": null,
|
||||
"Approve": null,
|
||||
"Remove_buddy": null,
|
||||
"You_are_about_to_remove_": null,
|
||||
"Continue_without_chat": null,
|
||||
"Please_wait": null,
|
||||
"Login_failed": null,
|
||||
"Sorry_we_cant_authentikate_": null,
|
||||
"Retry": null,
|
||||
"clear_history": null,
|
||||
"New_message_from": null,
|
||||
"Should_we_notify_you_": null,
|
||||
"Please_accept_": null,
|
||||
"Hide_offline": null,
|
||||
"Show_offline": null,
|
||||
"About": null,
|
||||
"dnd": null,
|
||||
"Mute": null,
|
||||
"Unmute": null,
|
||||
"Subscription": null,
|
||||
"both": null,
|
||||
"Status": null,
|
||||
"online": null,
|
||||
"chat": null,
|
||||
"away": null,
|
||||
"xa": null,
|
||||
"offline": null,
|
||||
"none": null,
|
||||
"Unknown_instance_tag": null,
|
||||
"Not_one_of_our_latest_keys": null,
|
||||
"Received_an_unreadable_encrypted_message": null,
|
||||
"Online": null,
|
||||
"Chatty": null,
|
||||
"Away": null,
|
||||
"Extended_away": null,
|
||||
"Offline": null,
|
||||
"Friendship_request": null,
|
||||
"Confirm": null,
|
||||
"Dismiss": null,
|
||||
"Remove": null,
|
||||
"Online_help": null,
|
||||
"FN": null,
|
||||
"N": null,
|
||||
"FAMILY": null,
|
||||
"GIVEN": null,
|
||||
"NICKNAME": null,
|
||||
"URL": null,
|
||||
"ADR": null,
|
||||
"STREET": null,
|
||||
"EXTADD": null,
|
||||
"LOCALITY": null,
|
||||
"REGION": null,
|
||||
"PCODE": null,
|
||||
"CTRY": null,
|
||||
"TEL": null,
|
||||
"NUMBER": null,
|
||||
"EMAIL": null,
|
||||
"USERID": null,
|
||||
"ORG": null,
|
||||
"ORGNAME": null,
|
||||
"ORGUNIT": null,
|
||||
"TITLE": null,
|
||||
"ROLE": null,
|
||||
"BDAY": null,
|
||||
"DESC": null,
|
||||
"PHOTO": null,
|
||||
"send_message": null,
|
||||
"get_info": null,
|
||||
"Settings": null,
|
||||
"Priority": null,
|
||||
"Save": null,
|
||||
"User_settings": null,
|
||||
"A_fingerprint_": null,
|
||||
"Your_roster_is_empty_add_a": null,
|
||||
"new_buddy": null,
|
||||
"is": null,
|
||||
"Login_options": null,
|
||||
"BOSH_url": null,
|
||||
"Domain": null,
|
||||
"Resource": null,
|
||||
"On_login": null,
|
||||
"Received_an_unencrypted_message": null,
|
||||
"Sorry_your_buddy_doesnt_provide_any_information": null,
|
||||
"Info_about": null,
|
||||
"Authentication_aborted": null,
|
||||
"Authentication_request_received": null,
|
||||
"Do_you_want_to_display_them": null,
|
||||
"Log_in_without_chat": null,
|
||||
"has_come_online": null,
|
||||
"Unknown_sender": null,
|
||||
"You_received_a_message_from_an_unknown_sender": null,
|
||||
"Please_allow_access_to_microphone_and_camera": null,
|
||||
"Incoming_call": null,
|
||||
"from": null,
|
||||
"Do_you_want_to_accept_the_call_from": null,
|
||||
"Reject": null,
|
||||
"Accept": null,
|
||||
"hang_up": null,
|
||||
"snapshot": null,
|
||||
"mute_my_audio": null,
|
||||
"pause_my_video": null,
|
||||
"fullscreen": null,
|
||||
"Info": null,
|
||||
"Local_IP": null,
|
||||
"Remote_IP": null,
|
||||
"Local_Fingerprint": null,
|
||||
"Remote_Fingerprint": null,
|
||||
"Video_call_not_possible": null,
|
||||
"Start_video_call": null
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,263 @@
|
||||
{
|
||||
"translation": {
|
||||
"Logging_in": "Logging in…",
|
||||
"your_connection_is_unencrypted": "Your connection is unencrypted.",
|
||||
"your_connection_is_encrypted": "Your connection is encrypted.",
|
||||
"your_buddy_closed_the_private_connection": "Your buddy closed the private connection.",
|
||||
"start_private": "Start private",
|
||||
"close_private": "Close private",
|
||||
"your_buddy_is_verificated": "Your buddy is verified.",
|
||||
"you_have_only_a_subscription_in_one_way": "You only have a one-way subscription.",
|
||||
"authentication_query_sent": "Authentication query sent.",
|
||||
"your_message_wasnt_send_please_end_your_private_conversation": "Your message was not sent. Please end your private conversation.",
|
||||
"unencrypted_message_received": "Unencrypted message received",
|
||||
"your_message_wasnt_send_because_you_have_no_valid_subscription": "Your message was not sent because you have no valid subscription.",
|
||||
"not_available": "Not available",
|
||||
"no_connection": "No connection!",
|
||||
"relogin": "relogin",
|
||||
"trying_to_start_private_conversation": "Trying to start private conversation!",
|
||||
"Verified": "Verified",
|
||||
"Unverified": "Unverified",
|
||||
"private_conversation_started": "Private conversation started.",
|
||||
"private_conversation_aborted": "Private conversation aborted!",
|
||||
"your_buddy_closed_the_private_conversation_you_should_do_the_same": "Your buddy closed the private conversation! You should do the same.",
|
||||
"conversation_is_now_verified": "Conversation is now verified.",
|
||||
"authentication_failed": "Authentication failed.",
|
||||
"your_buddy_is_attempting_to_determine_": "You buddy is attempting to determine if he or she is really talking to you.",
|
||||
"to_authenticate_to_your_buddy": "To authenticate to your buddy, ",
|
||||
"enter_the_answer_and_click_answer": "enter the answer and click Answer.",
|
||||
"enter_the_secret": "enter the secret.",
|
||||
"Creating_your_private_key_": "Creating your private key; this may take a while.",
|
||||
"Authenticating_a_buddy_helps_": "Authenticating a buddy helps ensure that the person you are talking to is really the one he or she claims to be.",
|
||||
"How_do_you_want_to_authenticate_your_buddy": "How do you want to authenticate {{bid_name}} (<b>{{bid_jid}}</b>)?",
|
||||
"Select_method": "Select method...",
|
||||
"Manual": "Manual",
|
||||
"Question": "Question",
|
||||
"Secret": "Secret",
|
||||
"To_verify_the_fingerprint_": "To verify the fingerprint, contact your buddy via some other trustworthy channel, such as the telephone.",
|
||||
"Your_fingerprint": "Your fingerprint",
|
||||
"Buddy_fingerprint": "Buddy fingerprint",
|
||||
"Close": "Close",
|
||||
"Compared": "Compared",
|
||||
"To_authenticate_using_a_question_": "To authenticate using a question, pick a question whose answer is known only you and your buddy.",
|
||||
"Ask": "Ask",
|
||||
"To_authenticate_pick_a_secret_": "To authenticate, pick a secret known only to you and your buddy.",
|
||||
"Compare": "Compare",
|
||||
"Fingerprints": "Fingerprints",
|
||||
"Authentication": "Authentication",
|
||||
"Message": "Message",
|
||||
"Add_buddy": "Add buddy",
|
||||
"rename_buddy": "rename buddy",
|
||||
"delete_buddy": "delete buddy",
|
||||
"Login": "Login",
|
||||
"Username": "Username",
|
||||
"Password": "Password",
|
||||
"Cancel": "Cancel",
|
||||
"Connect": "Connect",
|
||||
"Type_in_the_full_username_": "Type in the full username and an optional alias.",
|
||||
"Alias": "Alias",
|
||||
"Add": "Add",
|
||||
"Subscription_request": "Subscription request",
|
||||
"You_have_a_request_from": "You have a request from",
|
||||
"Deny": "Deny",
|
||||
"Approve": "Approve",
|
||||
"Remove_buddy": "Remove buddy",
|
||||
"You_are_about_to_remove_": "You are about to remove {{bid_name}} (<b>{{bid_jid}}</b>) from your buddy list. All related chats will be closed.",
|
||||
"Continue_without_chat": "Continue without chat",
|
||||
"Please_wait": "Please wait",
|
||||
"Login_failed": "Chat login failed",
|
||||
"Sorry_we_cant_authentikate_": "Authentication failed with the chat server. Maybe the password is wrong?",
|
||||
"Retry": "Back",
|
||||
"clear_history": "Clear history",
|
||||
"New_message_from": "New message from",
|
||||
"Should_we_notify_you_": "Should we notify you about new messages in the future?",
|
||||
"Please_accept_": "Please click the \"Allow\" button at the top.",
|
||||
"Hide_offline": "Hide offline contacts",
|
||||
"Show_offline": "Show offline contacts",
|
||||
"About": "About",
|
||||
"dnd": "Do Not Disturb",
|
||||
"Mute": "Mute",
|
||||
"Unmute": "Unmute",
|
||||
"Subscription": "Subscription",
|
||||
"both": "both",
|
||||
"Status": "Status",
|
||||
"online": "online",
|
||||
"chat": "chat",
|
||||
"away": "away",
|
||||
"xa": "extended away",
|
||||
"offline": "offline",
|
||||
"none": "none",
|
||||
"Unknown_instance_tag": "Unknown instance tag.",
|
||||
"Not_one_of_our_latest_keys": "Not one of our latest keys.",
|
||||
"Received_an_unreadable_encrypted_message": "Received an unreadable encrypted message.",
|
||||
"Online": "Online",
|
||||
"Chatty": "Chatty",
|
||||
"Away": "Away",
|
||||
"Extended_away": "Extended away",
|
||||
"Offline": "Offline",
|
||||
"Friendship_request": "Friendship request",
|
||||
"Confirm": "Confirm",
|
||||
"Dismiss": "Dismiss",
|
||||
"Remove": "Remove",
|
||||
"Online_help": "Online help",
|
||||
"FN": "Full name",
|
||||
"N": " ",
|
||||
"FAMILY": "Family name",
|
||||
"GIVEN": "Given name",
|
||||
"NICKNAME": "Nickname",
|
||||
"URL": "URL",
|
||||
"ADR": "Address",
|
||||
"STREET": "Street Address",
|
||||
"EXTADD": "Extended Address",
|
||||
"LOCALITY": "Locality",
|
||||
"REGION": "Region",
|
||||
"PCODE": "Postal Code",
|
||||
"CTRY": "Country",
|
||||
"TEL": "Telephone",
|
||||
"NUMBER": "Number",
|
||||
"EMAIL": "Email",
|
||||
"USERID": " ",
|
||||
"ORG": "Organization",
|
||||
"ORGNAME": "Name",
|
||||
"ORGUNIT": "Unit",
|
||||
"TITLE": "Job title",
|
||||
"ROLE": "Role",
|
||||
"BDAY": "Birthday",
|
||||
"DESC": "Description",
|
||||
"PHOTO": " ",
|
||||
"send_message": "Send message",
|
||||
"get_info": "Show information",
|
||||
"Settings": "Settings",
|
||||
"Priority": "Priority",
|
||||
"Save": "Save",
|
||||
"User_settings": "User settings",
|
||||
"A_fingerprint_": "A fingerprint is used to make sure that the person you are talking to is who he or she is saying.",
|
||||
"Your_roster_is_empty_add_a": "Your roster is empty, add a ",
|
||||
"new_buddy": "new buddy",
|
||||
"is": "is",
|
||||
"Login_options": "Login options",
|
||||
"BOSH_url": "BOSH URL",
|
||||
"Domain": "Domain",
|
||||
"Resource": "Resource",
|
||||
"On_login": "On login",
|
||||
"Received_an_unencrypted_message": "Received an unencrypted message",
|
||||
"Sorry_your_buddy_doesnt_provide_any_information": "Sorry, your buddy does not provide any information.",
|
||||
"Info_about": "Info about",
|
||||
"Authentication_aborted": "Authentication aborted.",
|
||||
"Authentication_request_received": "Authentication request received.",
|
||||
"Do_you_want_to_display_them": "Do you want to display them?",
|
||||
"Log_in_without_chat": "Log in without chat",
|
||||
"has_come_online": "has come online",
|
||||
"Unknown_sender": "Unknown sender",
|
||||
"You_received_a_message_from_an_unknown_sender": "You received a message from an unknown sender",
|
||||
"Please_allow_access_to_microphone_and_camera": "Please click the \"Allow\" button at the top, to allow access to microphone and camera.",
|
||||
"Incoming_call": "Incoming call",
|
||||
"from": "from",
|
||||
"Do_you_want_to_accept_the_call_from": "Do you want to accept the call from",
|
||||
"Reject": "Reject",
|
||||
"Accept": "Accept",
|
||||
"hang_up": "hang up",
|
||||
"snapshot": "snapshot",
|
||||
"mute_my_audio": "mute my audio",
|
||||
"pause_my_video": "pause my video",
|
||||
"fullscreen": "fullscreen",
|
||||
"Info": "Info",
|
||||
"Local_IP": "Local IP",
|
||||
"Remote_IP": "Remote IP",
|
||||
"Local_Fingerprint": "Local fingerprint",
|
||||
"Remote_Fingerprint": "Remote fingerprint",
|
||||
"Video_call_not_possible": "Video call not possible. Your buddy does not support video calls.",
|
||||
"Start_video_call": "Start video call",
|
||||
"Join_chat": "Join chat",
|
||||
"Join": "Join",
|
||||
"Room": "Room",
|
||||
"Nickname": "Nickname",
|
||||
"left_the_building": "__nickname__ left the building",
|
||||
"entered_the_room": "__nickname__ entered the room",
|
||||
"is_now_known_as": "__oldNickname__ is now known as __newNickname__",
|
||||
"This_room_is": "This room is",
|
||||
"muc_hidden": {
|
||||
"keyword": "hidden",
|
||||
"description": "can not be found through search"
|
||||
},
|
||||
"muc_membersonly": {
|
||||
"keyword": "members-only",
|
||||
"description": "you need to be on the member list"
|
||||
},
|
||||
"muc_moderated": {
|
||||
"keyword": "moderated",
|
||||
"description": "only persons with \"voice\" are allowed to send messages"
|
||||
},
|
||||
"muc_nonanonymous": {
|
||||
"keyword": "non-anonymous",
|
||||
"description": "your jabber id is exposed to all other occupants"
|
||||
},
|
||||
"muc_open": {
|
||||
"keyword": "open",
|
||||
"description": "everyone is allowed to join"
|
||||
},
|
||||
"muc_passwordprotected": {
|
||||
"keyword": "password-protected",
|
||||
"description": "you need to provide the correct password"
|
||||
},
|
||||
"muc_persistent": {
|
||||
"keyword": "persistent",
|
||||
"description": "will not be destroyed if the last occupant left"
|
||||
},
|
||||
"muc_public": {
|
||||
"keyword": "public",
|
||||
"description": "can be found through search"
|
||||
},
|
||||
"muc_semianonymous": {
|
||||
"keyword": "semi-anonymous",
|
||||
"description": "your jabber id is only exposed to room admins"
|
||||
},
|
||||
"muc_temporary": {
|
||||
"keyword": "temporary",
|
||||
"description": "will be destroyed if the last occupant left"
|
||||
},
|
||||
"muc_unmoderated": {
|
||||
"keyword": "unmoderated",
|
||||
"description": "everyone is allowed to send messages"
|
||||
},
|
||||
"muc_unsecured": {
|
||||
"keyword": "unsecured",
|
||||
"description": "you need no password to enter"
|
||||
},
|
||||
"Continue": "Continue",
|
||||
"Server": "Server",
|
||||
"Rooms_are_loaded": "Rooms are loaded",
|
||||
"Could_load_only": "Could load only __count__ rooms for autocomplete",
|
||||
"muc_explanation": "Please enter room name and optional a nickname and password to join a chat",
|
||||
"You_already_joined_this_room": "You already joined this room",
|
||||
"This_room_will_be_closed": "This room will be closed",
|
||||
"Room_not_found_": "A new room will be created",
|
||||
"Loading_room_information": "Loading room information",
|
||||
"Destroy": "Destroy",
|
||||
"Leave": "Leave",
|
||||
"changed_subject_to": "__nickname__ changed the room subject to \"__subject__\"",
|
||||
"muc_removed_kicked": "You have been kicked from the room",
|
||||
"muc_removed_info_kicked": "__nickname__ has been kicked from the room",
|
||||
"muc_removed_banned": "You have been banned from the room",
|
||||
"muc_removed_info_banned": "__nickname__ has been banned from the room",
|
||||
"muc_removed_affiliation": "You have been removed from the room, because of an affiliation change",
|
||||
"muc_removed_info_affiliation": "__nickname__ has been removed from the room, because of an affiliation change",
|
||||
"muc_removed_membersonly": "You have been removed from the room, because the room has been changed to members-only and you are no member",
|
||||
"muc_removed_info_membersonly": "__nickname__ has been removed from the room, because the room has been changed to members-only and you are no member",
|
||||
"muc_removed_shutdown": "You have been removed from the room, because the MUC service is being shut down",
|
||||
"Reason": "Reason",
|
||||
"message_not_send": "Your message was not send because of an error",
|
||||
"message_not_send_item-not-found": "Your message was not send because this room does not exist",
|
||||
"message_not_send_forbidden": "Your message was not send because you have no voice in this room",
|
||||
"message_not_send_not-acceptable": "Your message was not send because you are no occupant of this room",
|
||||
"This_room_has_been_closed": "This room has been closed",
|
||||
"Room_logging_is_enabled": "Room logging is enabled",
|
||||
"A_password_is_required": "A password is required",
|
||||
"You_are_not_on_the_member_list": "You are not on the member list",
|
||||
"You_are_banned_from_this_room": "You are banned from this room",
|
||||
"Your_desired_nickname_": "Your desired nickname is already in use. Please choose another",
|
||||
"The_maximum_number_": "The maximum number of user is reached in this room",
|
||||
"This_room_is_locked_": "This room is locked",
|
||||
"You_are_not_allowed_to_create_": "You are not allowed to create a room"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,172 @@
|
||||
{
|
||||
"translation": {
|
||||
"Logging_in": "Por favor, espere...",
|
||||
"your_connection_is_unencrypted": "Su conexión no está cifrada.",
|
||||
"your_connection_is_encrypted": "Su conexión está cifrada.",
|
||||
"your_buddy_closed_the_private_connection": "Su amigo ha cerrado la conexión privada.",
|
||||
"start_private": "Iniciar privado",
|
||||
"close_private": "Cerrar privado",
|
||||
"your_buddy_is_verificated": "Tu amigo está verificado.",
|
||||
"you_have_only_a_subscription_in_one_way": "Sólo tienes una suscripción de un modo.",
|
||||
"authentication_query_sent": "Consulta de verificación enviada.",
|
||||
"your_message_wasnt_send_please_end_your_private_conversation": "Su mensaje no fue enviado. Por favor, termine su conversación privada.",
|
||||
"unencrypted_message_received": "Mensaje no cifrado recibido:",
|
||||
"your_message_wasnt_send_because_you_have_no_valid_subscription": "Su mensaje no se ha enviado, porque usted no tiene suscripción válida.",
|
||||
"not_available": "No disponible",
|
||||
"no_connection": "Sin conexión!",
|
||||
"relogin": "iniciar sesión nuevamente",
|
||||
"trying_to_start_private_conversation": "Intentando iniciar una conversación privada!",
|
||||
"Verified": "Verificado",
|
||||
"Unverified": "No verificado",
|
||||
"private_conversation_started": "se inició una conversación privada.",
|
||||
"private_conversation_aborted": "Conversación privada abortada!",
|
||||
"your_buddy_closed_the_private_conversation_you_should_do_the_same": "Su amigo cerró la conversación privada! Usted debería hacer lo mismo.",
|
||||
"conversation_is_now_verified": "La conversación es ahora verificada.",
|
||||
"authentication_failed": "Fallo la verificación.",
|
||||
"your_buddy_is_attempting_to_determine_": "Tu amigo está tratando de determinar si él o ella está realmente hablando con usted.",
|
||||
"to_authenticate_to_your_buddy": "Para autenticar a su amigo, ",
|
||||
"enter_the_answer_and_click_answer": "introduce la respuesta y haga clic en Contestar.",
|
||||
"enter_the_secret": "especifique el secreto.",
|
||||
"Creating_your_private_key_": "Ahora vamos a crear su clave privada. Esto puede tomar algún tiempo.",
|
||||
"Authenticating_a_buddy_helps_": "Autenticación de un amigo ayuda a garantizar que la persona que está hablando es quien él o ella está diciendo.",
|
||||
"How_do_you_want_to_authenticate_your_buddy": "¿Cómo desea autenticar {{bid_name}} (<b>{{bid_jid}}</b>)?",
|
||||
"Select_method": "Escoja un método...",
|
||||
"Manual": "Manual",
|
||||
"Question": "Pregunta",
|
||||
"Secret": "Secreto",
|
||||
"To_verify_the_fingerprint_": "Para verificar la firma digital, póngase en contacto con su amigo a través de algún otro canal autenticado, como el teléfono.",
|
||||
"Your_fingerprint": "Tu firma digital",
|
||||
"Buddy_fingerprint": "firma digital de tu amigo",
|
||||
"Close": "Cerrar",
|
||||
"Compared": "Comparado",
|
||||
"To_authenticate_using_a_question_": "Para autenticar mediante una pregunta, elegir una pregunta cuya respuesta se conoce sólo usted y su amigo.",
|
||||
"Ask": "Preguntar",
|
||||
"To_authenticate_pick_a_secret_": "Para autenticar, elija un secreto conocido sólo por usted y su amigo.",
|
||||
"Compare": "Comparar",
|
||||
"Fingerprints": "Firmas digitales",
|
||||
"Authentication": "Autenticación",
|
||||
"Message": "Mensaje",
|
||||
"Add_buddy": "Añadir amigo",
|
||||
"rename_buddy": "renombrar amigo",
|
||||
"delete_buddy": "eliminar amigo",
|
||||
"Login": "Iniciar Sesión",
|
||||
"Username": "Usuario",
|
||||
"Password": "Contraseña",
|
||||
"Cancel": "Cancelar",
|
||||
"Connect": "Conectar",
|
||||
"Type_in_the_full_username_": "Escriba el usuario completo y un alias opcional.",
|
||||
"Alias": "Alias",
|
||||
"Add": "Añadir",
|
||||
"Subscription_request": "Solicitud de suscripción",
|
||||
"You_have_a_request_from": "Tienes una petición de",
|
||||
"Deny": "Rechazar",
|
||||
"Approve": "Aprobar",
|
||||
"Remove_buddy": "Eliminar amigo",
|
||||
"You_are_about_to_remove_": "Vas a eliminar a {{bid_name}} (<b>{{bid_jid}}</b>) de tu lista de amigos. Todas las conversaciones relacionadas serán cerradas.",
|
||||
"Continue_without_chat": "Continuar",
|
||||
"Please_wait": "Espere por favor",
|
||||
"Login_failed": "Fallo el inicio de sesión",
|
||||
"Sorry_we_cant_authentikate_": "Lo sentimos, no podemos autentificarlo en nuestro servidor de chat. ¿Tal vez la contraseña es incorrecta?",
|
||||
"Retry": "Reintentar",
|
||||
"clear_history": "Borrar el historial",
|
||||
"New_message_from": "Nuevo mensaje de",
|
||||
"Should_we_notify_you_": "¿Debemos notificarle sobre nuevos mensajes en el futuro?",
|
||||
"Please_accept_": "Por favor, haga clic en el botón \"Permitir\" en la parte superior.",
|
||||
"Hide_offline": "Ocultar contactos desconectados",
|
||||
"Show_offline": "Mostrar contactos desconectados",
|
||||
"About": "Acerca de",
|
||||
"dnd": "No Molestar",
|
||||
"Mute": "Desactivar sonido",
|
||||
"Unmute": "Activar sonido",
|
||||
"Subscription": "Suscripción",
|
||||
"both": "ambos",
|
||||
"Status": "Estado",
|
||||
"online": "en línea",
|
||||
"chat": "chat",
|
||||
"away": "ausente",
|
||||
"xa": "mas ausente",
|
||||
"offline": "desconectado",
|
||||
"none": "nadie",
|
||||
"Unknown_instance_tag": "Etiqueta de instancia desconocida.",
|
||||
"Not_one_of_our_latest_keys": "No de nuestra ultima tecla.",
|
||||
"Received_an_unreadable_encrypted_message": "Se recibió un mensaje cifrado ilegible.",
|
||||
"Online": "En linea",
|
||||
"Chatty": "Hablador",
|
||||
"Away": "Ausente",
|
||||
"Extended_away": "Mas ausente",
|
||||
"Offline": "Desconectado",
|
||||
"Friendship_request": "Solicitud de amistad",
|
||||
"Confirm": "Confirmar",
|
||||
"Dismiss": "Rechazar",
|
||||
"Remove": "Eliminar",
|
||||
"Online_help": "Ayuda en línea",
|
||||
"FN": "Nombre completo ",
|
||||
"N": " ",
|
||||
"FAMILY": "Apellido",
|
||||
"GIVEN": "Nombre",
|
||||
"NICKNAME": "Apodar",
|
||||
"URL": "URL",
|
||||
"ADR": "Dirección",
|
||||
"STREET": "Calle",
|
||||
"EXTADD": "Extendido dirección",
|
||||
"LOCALITY": "Población",
|
||||
"REGION": "Región",
|
||||
"PCODE": "Código postal",
|
||||
"CTRY": "País",
|
||||
"TEL": "Teléfono",
|
||||
"NUMBER": "Número",
|
||||
"EMAIL": "Emilio",
|
||||
"USERID": " ",
|
||||
"ORG": "Organización",
|
||||
"ORGNAME": "Nombre",
|
||||
"ORGUNIT": "Departamento",
|
||||
"TITLE": "Título",
|
||||
"ROLE": "Rol",
|
||||
"BDAY": "Cumpleaños",
|
||||
"DESC": "Descripción",
|
||||
"PHOTO": " ",
|
||||
"send_message": "mandar un texto",
|
||||
"get_info": "obtener información",
|
||||
"Settings": "Ajustes",
|
||||
"Priority": "Prioridad",
|
||||
"Save": "Guardar",
|
||||
"User_settings": "Configuración de usuario",
|
||||
"A_fingerprint_": "La huella digital se utiliza para que puedas estar seguro que la persona con la que estas hablando es quien realmente dice ser",
|
||||
"Your_roster_is_empty_add_a": "Tu lista de amigos esta vacia",
|
||||
"new_buddy": "Nuevo amigo",
|
||||
"is": "es",
|
||||
"Login_options": "Opciones de login",
|
||||
"BOSH_url": "BOSH url",
|
||||
"Domain": "Dominio",
|
||||
"Resource": "Recurso",
|
||||
"On_login": "Iniciar sesión",
|
||||
"Received_an_unencrypted_message": "Recibe un mensaje no cifrado",
|
||||
"Sorry_your_buddy_doesnt_provide_any_information": "Lo sentimos, su amigo no provee ninguna información.",
|
||||
"Info_about": "Info acerca de",
|
||||
"Authentication_aborted": "Autenticación abortada",
|
||||
"Authentication_request_received": "Pedido de autenticación recibido.",
|
||||
"Do_you_want_to_display_them": "¿Quiere mostrarlos?",
|
||||
"Log_in_without_chat": "Ingresar sin chat",
|
||||
"has_come_online": "se ha conectado",
|
||||
"Unknown_sender": "Remitente desconocido",
|
||||
"You_received_a_message_from_an_unknown_sender": "Ha recibido un mensaje de un remitente desconocido",
|
||||
"Please_allow_access_to_microphone_and_camera": "Por favor, permitir el acceso al micrófono y la cámara.",
|
||||
"Incoming_call": "Llamada entrante",
|
||||
"from": "de",
|
||||
"Do_you_want_to_accept_the_call_from": "Desea aceptar la llamada de",
|
||||
"Reject": "Rechazar",
|
||||
"Accept": "Aceptar",
|
||||
"hang_up": "colgar",
|
||||
"snapshot": "instantánea",
|
||||
"mute_my_audio": "silenciar mi audio",
|
||||
"pause_my_video": "pausar mi vídeo",
|
||||
"fullscreen": "pantalla completa",
|
||||
"Info": "Info",
|
||||
"Local_IP": "IP local",
|
||||
"Remote_IP": "IP remota",
|
||||
"Local_Fingerprint": "Firma digital local",
|
||||
"Remote_Fingerprint": "Firma digital remota",
|
||||
"Video_call_not_possible": "Llamada de vídeo no es posible",
|
||||
"Start_video_call": "Iniciar llamada de vídeo"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,172 @@
|
||||
{
|
||||
"translation": {
|
||||
"Logging_in": "Connexion...",
|
||||
"your_connection_is_unencrypted": "Connexion non chiffrée.",
|
||||
"your_connection_is_encrypted": "Connexion chiffrée.",
|
||||
"your_buddy_closed_the_private_connection": "Votre ami a fermé la connexion privée.",
|
||||
"start_private": "Démarrer une conversation privé",
|
||||
"close_private": "Clôturer une conversation privée",
|
||||
"your_buddy_is_verificated": "Votre ami est vérifié.",
|
||||
"you_have_only_a_subscription_in_one_way": "Vous ne pouvez souscrire qu'une fois.",
|
||||
"authentication_query_sent": "Requête d’authentification envoyée.",
|
||||
"your_message_wasnt_send_please_end_your_private_conversation": "Votre message n'a pas été envoyé. Veuillez terminer votre conversation privée.",
|
||||
"unencrypted_message_received": "Message non chiffré reçu",
|
||||
"your_message_wasnt_send_because_you_have_no_valid_subscription": "Votre message n'a pas été envoyé car votre abonnement n'est pas valide.",
|
||||
"not_available": "Pas disponible",
|
||||
"no_connection": "Pas de connexion !",
|
||||
"relogin": "Re-connexion",
|
||||
"trying_to_start_private_conversation": "Essai de démarrage d'une conversation privée !",
|
||||
"Verified": "Vérifié",
|
||||
"Unverified": "Non vérifié",
|
||||
"private_conversation_started": "Conversation privé démarrée.",
|
||||
"private_conversation_aborted": "Conversation privée interrompue !",
|
||||
"your_buddy_closed_the_private_conversation_you_should_do_the_same": "Votre ami a fermé la conversation privée ! Vous devriez faire de même.",
|
||||
"conversation_is_now_verified": "La conversation est maintenant vérifiée.",
|
||||
"authentication_failed": "L'authentification a échoué.",
|
||||
"your_buddy_is_attempting_to_determine_": "Votre ami tente de déterminer si il ou elle parle vraiment à vous.",
|
||||
"to_authenticate_to_your_buddy": "Vous authentifier à votre ami, ",
|
||||
"enter_the_answer_and_click_answer": "Saisissez une réponse et cliquer sur Répondre.",
|
||||
"enter_the_secret": "Entrez le mot secret",
|
||||
"Creating_your_private_key_": "Création de votre clé privée; cela peut prendre un moment.",
|
||||
"Authenticating_a_buddy_helps_": "L'authentification d'un ami permet de s'assurer que la personne à qui vous parlez est vraiment celui qu'il ou elle prétend être.",
|
||||
"How_do_you_want_to_authenticate_your_buddy": "Comment voulez-vous vous authentifier {{bid_name}} (<b>{{bid_jid}}</b>)?",
|
||||
"Select_method": "Sélection de la méthode...",
|
||||
"Manual": "Manuel",
|
||||
"Question": "Question",
|
||||
"Secret": "Sécurité",
|
||||
"To_verify_the_fingerprint_": "Pour vérifier l'empreinte, contactez votre ami via un autre canal digne de confiance, tel que le téléphone.",
|
||||
"Your_fingerprint": "Votre empreinte",
|
||||
"Buddy_fingerprint": "Empreinte de l'ami",
|
||||
"Close": "Fermer",
|
||||
"Compared": "Comparé",
|
||||
"To_authenticate_using_a_question_": "Pour s'authentifier à l'aide d'une question, choisissez une question dont la réponse n'est connue que vous et de votre ami.",
|
||||
"Ask": "Demander",
|
||||
"To_authenticate_pick_a_secret_": "Pour vous authentifier, choisissez un secret connu seulement de vous et de votre ami.",
|
||||
"Compare": "Comparer",
|
||||
"Fingerprints": "Empreintes",
|
||||
"Authentication": "Authentification",
|
||||
"Message": "Message",
|
||||
"Add_buddy": "Ajouter comme ami",
|
||||
"rename_buddy": "Renommer l'ami",
|
||||
"delete_buddy": "Supprimer l'ami",
|
||||
"Login": "Connexion",
|
||||
"Username": "Nom d'utilisateur",
|
||||
"Password": "Mot de passe",
|
||||
"Cancel": "Annuler",
|
||||
"Connect": "Connecter",
|
||||
"Type_in_the_full_username_": "Tapez un nom d'utilisateur complet et un alias(optionnel).",
|
||||
"Alias": "Alias",
|
||||
"Add": "Ajouter",
|
||||
"Subscription_request": "Demande d'abonnement",
|
||||
"You_have_a_request_from": "Vous avez une requête de ",
|
||||
"Deny": "Refuser",
|
||||
"Approve": "Approuver",
|
||||
"Remove_buddy": "Supprimer l'ami",
|
||||
"You_are_about_to_remove_": "Vous allez retirer {{bid_name}} (<b>{{bid_jid}}</b>) de votre liste d'amis. Toutes les fenêtres de chat en lien avec celui-ci seront fermées.",
|
||||
"Continue_without_chat": "Continuer sans tchat",
|
||||
"Please_wait": "Merci de patienter",
|
||||
"Login_failed": "Authentification échouée",
|
||||
"Sorry_we_cant_authentikate_": "La connexion avec le serveur de tchat a échoué. Vérifiez le mot de passe.",
|
||||
"Retry": "Retour",
|
||||
"clear_history": "Effacer l’historique",
|
||||
"New_message_from": "Nouveau message de",
|
||||
"Should_we_notify_you_": "Dans le futur, devrons-nous vous notifier les nouveaux messages ?",
|
||||
"Please_accept_": "Merci de cliquer sur le bouton \"autoriser\" en haut de page",
|
||||
"Hide_offline": "Masquer les contacts non connectés",
|
||||
"Show_offline": "Afficher les contacts non connectés",
|
||||
"About": "À propos",
|
||||
"dnd": "Ne pas déranger",
|
||||
"Mute": "Muet",
|
||||
"Unmute": "Son actif",
|
||||
"Subscription": "Abonnement",
|
||||
"both": "Les deux",
|
||||
"Status": "Status",
|
||||
"online": "En ligne",
|
||||
"chat": "tchat",
|
||||
"away": "Absent",
|
||||
"xa": "Options étendues",
|
||||
"offline": "Hors ligne",
|
||||
"none": "Aucun",
|
||||
"Unknown_instance_tag": "Tag inconnu",
|
||||
"Not_one_of_our_latest_keys": "Ce n'est pas l'une des dernières touches",
|
||||
"Received_an_unreadable_encrypted_message": "Message chiffré non lisible",
|
||||
"Online": "En ligne",
|
||||
"Chatty": "tchatty",
|
||||
"Away": "Absent",
|
||||
"Extended_away": "Options étendues",
|
||||
"Offline": "Hors ligne",
|
||||
"Friendship_request": "Demande d'amitié",
|
||||
"Confirm": "Valider",
|
||||
"Dismiss": "Rejeter",
|
||||
"Remove": "Supprimer",
|
||||
"Online_help": "Aide en ligne",
|
||||
"FN": "Nom",
|
||||
"N": " N ",
|
||||
"FAMILY": "Nom de famille",
|
||||
"GIVEN": "prénom",
|
||||
"NICKNAME": "Surnom",
|
||||
"URL": "URL",
|
||||
"ADR": "Adresse",
|
||||
"STREET": "Rue",
|
||||
"EXTADD": "Adresse (suite)",
|
||||
"LOCALITY": "Localité",
|
||||
"REGION": "Région",
|
||||
"PCODE": "Code Postal",
|
||||
"CTRY": "Pays",
|
||||
"TEL": "Téléphone",
|
||||
"NUMBER": "Numéro",
|
||||
"EMAIL": "Courriel",
|
||||
"USERID": " USERID ",
|
||||
"ORG": "Organisation",
|
||||
"ORGNAME": "Nom",
|
||||
"ORGUNIT": "Unité",
|
||||
"TITLE": "Qualité:",
|
||||
"ROLE": "Rôle",
|
||||
"BDAY": "Date de naissance",
|
||||
"DESC": "Description",
|
||||
"PHOTO": "Photo",
|
||||
"send_message": "Envoyer le message",
|
||||
"get_info": "Montrer les informations",
|
||||
"Settings": "Réglages",
|
||||
"Priority": "Priorité",
|
||||
"Save": "Enregistrer",
|
||||
"User_settings": "Paramètres utilisateur",
|
||||
"A_fingerprint_": "Une empreinte est utilisée pour s'assurer de l'identité de la personne à qui vous parlez",
|
||||
"Your_roster_is_empty_add_a": "Votre liste est vide, ajouter ",
|
||||
"new_buddy": "Nouvel ami",
|
||||
"is": "est",
|
||||
"Login_options": "Options d'identification",
|
||||
"BOSH_url": "URL BOSH",
|
||||
"Domain": "Domaine",
|
||||
"Resource": "Ressource",
|
||||
"On_login": "Après authentification",
|
||||
"Received_an_unencrypted_message": "Reçu un message non chiffré",
|
||||
"Sorry_your_buddy_doesnt_provide_any_information": "Désolé, votre ami n'a pas fourni d'informations",
|
||||
"Info_about": "A propos de",
|
||||
"Authentication_aborted": "Authentification interrompue.",
|
||||
"Authentication_request_received": "Requête d'authentification reçue.",
|
||||
"Do_you_want_to_display_them": "Voulez-vous les afficher ?",
|
||||
"Log_in_without_chat": "S'identifier sans tchat",
|
||||
"has_come_online": "vient d'arriver",
|
||||
"Unknown_sender": "Expéditeur inconnu",
|
||||
"You_received_a_message_from_an_unknown_sender": "Vous avez reçu un message d'un expéditeur inconnu",
|
||||
"Please_allow_access_to_microphone_and_camera": "Veuillez cliquez sur le bouton \"Autoriser\" en haut, pour permettre l'accès au micro et à la caméra.",
|
||||
"Incoming_call": "Appel entrant",
|
||||
"from": "de",
|
||||
"Do_you_want_to_accept_the_call_from": "Voulez-vous accepter l'appel de",
|
||||
"Reject": "Rejeté",
|
||||
"Accept": "Accepté",
|
||||
"hang_up": "Décrochez",
|
||||
"snapshot": "Capture d’écran",
|
||||
"mute_my_audio": "Couper l'audio",
|
||||
"pause_my_video": "Mettre ma vidéo en pause",
|
||||
"fullscreen": "Plein écran",
|
||||
"Info": "Info",
|
||||
"Local_IP": "IP locale",
|
||||
"Remote_IP": "IP distante",
|
||||
"Local_Fingerprint": "Empreinte locale",
|
||||
"Remote_Fingerprint": "Empreinte distante",
|
||||
"Video_call_not_possible": "L'appel vidéo n'est possible. Votre ami ne supporte pas les appels vidéo.",
|
||||
"Start_video_call": "Démarrer l'appel vidéo"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,172 @@
|
||||
{
|
||||
"translation": {
|
||||
"Logging_in": "login…",
|
||||
"your_connection_is_unencrypted": "La sua connessione è non cifrata.",
|
||||
"your_connection_is_encrypted": "La sua connessione è cifrata.",
|
||||
"your_buddy_closed_the_private_connection": "La sua connessione privata è stato chiuso dal suo compagno.",
|
||||
"start_private": "Inizia privata",
|
||||
"close_private": "Chiude privata",
|
||||
"your_buddy_is_verificated": "Il tuo compagno è stato verificato",
|
||||
"you_have_only_a_subscription_in_one_way": "Hai solo una one-way inscrizione.",
|
||||
"authentication_query_sent": "Domanda d'autenticità inviata.",
|
||||
"your_message_wasnt_send_please_end_your_private_conversation": "Il tuo messaggio non è stato inviato. Si prega di finire la sua conversazione privata.",
|
||||
"unencrypted_message_received": "Messaggio non cifrato ricevuto",
|
||||
"your_message_wasnt_send_because_you_have_no_valid_subscription": "Il tuo messaggio non è stato inviato perché non hai una sottoscrizione valida.",
|
||||
"not_available": "non disponibile",
|
||||
"no_connection": "nessun collegamento!",
|
||||
"relogin": "nuovo login",
|
||||
"trying_to_start_private_conversation": "Cercando di avviare una conversazione privata!",
|
||||
"Verified": "verificato",
|
||||
"Unverified": "non verificato",
|
||||
"private_conversation_started": "Conversazione privata iniziato.",
|
||||
"private_conversation_aborted": "Conversazione privata abortito!",
|
||||
"your_buddy_closed_the_private_conversation_you_should_do_the_same": "Il tuo compagno ha chiuso la conversazione privata! Si dovrebbe fare lo stesso.",
|
||||
"conversation_is_now_verified": "Conversazione è ora verificato.",
|
||||
"authentication_failed": "autenticazione fallita.",
|
||||
"your_buddy_is_attempting_to_determine_": "Il tuo compagno sta cercando di determinare se lui o lei sta davvero parlando con te.",
|
||||
"to_authenticate_to_your_buddy": "Per autenticare a il tuo compagno. ",
|
||||
"enter_the_answer_and_click_answer": "inserisci la risposta e fare click su risposta.",
|
||||
"enter_the_secret": "inserire il segreto.",
|
||||
"Creating_your_private_key_": "Creare la propria chiave privata; questo potrebbe richiedere un po'.",
|
||||
"Authenticating_a_buddy_helps_": "Autenticazione un compagno aiuta a garantire che la persona si sta parlando è davvero quello che lui o lei sostiene di essere.",
|
||||
"How_do_you_want_to_authenticate_your_buddy": "Come si desidera autenticare {{bid_name}} (<b>{{bid_jid}}</b>)?",
|
||||
"Select_method": "Seleziona metodo ..",
|
||||
"Manual": "manuale",
|
||||
"Question": "domanda",
|
||||
"Secret": "segreto",
|
||||
"To_verify_the_fingerprint_": "Per verificare l'impronta digitale, contattare il proprio compagno attraverso qualche altro canale affidabile, come il telefono.",
|
||||
"Your_fingerprint": "il tuo impronta digitale",
|
||||
"Buddy_fingerprint": "impronta digitale da compagno",
|
||||
"Close": "chiude",
|
||||
"Compared": "comparato",
|
||||
"To_authenticate_using_a_question_": "Per autenticare tramite una questione, scegli una questione la cui risposta è nota solo voi e il tuo compagno",
|
||||
"Ask": "chiedi",
|
||||
"To_authenticate_pick_a_secret_": "Per autenticare, scegli un segreto noto solo a te e il tuo compagno.",
|
||||
"Compare": "Comparare",
|
||||
"Fingerprints": "Impronta digitale",
|
||||
"Authentication": "Autenticazione",
|
||||
"Message": "Messagio",
|
||||
"Add_buddy": "Aggiungi un compagno",
|
||||
"rename_buddy": "rinomina compagno",
|
||||
"delete_buddy": "elimina compagno",
|
||||
"Login": "Login",
|
||||
"Username": "Identificazione dell'utente",
|
||||
"Password": "Password",
|
||||
"Cancel": "Cancella",
|
||||
"Connect": "Collega",
|
||||
"Type_in_the_full_username_": "Digita l'identificazione utente completo e un alias opzionale.",
|
||||
"Alias": "Alias",
|
||||
"Add": "Aggiungi",
|
||||
"Subscription_request": "Rrichiesta di sottoscrizione",
|
||||
"You_have_a_request_from": "Hai una richiesta da",
|
||||
"Deny": "Refiuta",
|
||||
"Approve": "Approva",
|
||||
"Remove_buddy": "Rimuova il compagno",
|
||||
"You_are_about_to_remove_": "Stai rimovendo {{bid_name}} (<b>{{bid_jid}}</b>) del suo lista di compagni. Tutte le chat appartenente saranno chiuse.",
|
||||
"Continue_without_chat": "Continua senza chat",
|
||||
"Please_wait": "Si prega d'attendere",
|
||||
"Login_failed": "Chat login è fallito",
|
||||
"Sorry_we_cant_authentikate_": "Autenticazione non riuscita con il server di chat. Forse la password è sbagliata?",
|
||||
"Retry": "Indietro",
|
||||
"clear_history": "Cancella la cronologia",
|
||||
"New_message_from": "Nuovo messaggio da",
|
||||
"Should_we_notify_you_": "Vuoi ricevere una notifica di nuovi messaggi in futuro?",
|
||||
"Please_accept_": "Si prega di fare clic sul bottone \"Autorizzazione\" sopra.",
|
||||
"Hide_offline": "Nascondere i contatti non in linea",
|
||||
"Show_offline": "Mostra i contatti non in linea",
|
||||
"About": "Informazione legale",
|
||||
"dnd": "Non disturbare",
|
||||
"Mute": "Muto attivo",
|
||||
"Unmute": "Muto inattivo",
|
||||
"Subscription": "Sottoscrizione",
|
||||
"both": "etrambi",
|
||||
"Status": "Status",
|
||||
"online": "In linea",
|
||||
"chat": "chat",
|
||||
"away": "via",
|
||||
"xa": "via estensivo",
|
||||
"offline": "non in linea",
|
||||
"none": "nessuno",
|
||||
"Unknown_instance_tag": "Instance tag sconosciuta.",
|
||||
"Not_one_of_our_latest_keys": "Non è una delle nostre ultime chiavi.",
|
||||
"Received_an_unreadable_encrypted_message": "Ricevuto un messaggio crittografato illeggibile.",
|
||||
"Online": "In linea",
|
||||
"Chatty": "Chiacchierino",
|
||||
"Away": "Via",
|
||||
"Extended_away": "Via estensivo",
|
||||
"Offline": "Non in linea",
|
||||
"Friendship_request": "Amicizia richiesto",
|
||||
"Confirm": "Conferma",
|
||||
"Dismiss": "Rifiuta",
|
||||
"Remove": "Rimuovi",
|
||||
"Online_help": "Guida in linea",
|
||||
"FN": "Nome e cognome",
|
||||
"N": null,
|
||||
"FAMILY": "Cognome",
|
||||
"GIVEN": "Nome",
|
||||
"NICKNAME": "Soprannome",
|
||||
"URL": "URL",
|
||||
"ADR": "Indirizzo",
|
||||
"STREET": "Via",
|
||||
"EXTADD": "Esteso Indirizzo",
|
||||
"LOCALITY": "Località",
|
||||
"REGION": "Regione",
|
||||
"PCODE": "Codice Postale",
|
||||
"CTRY": "Paese",
|
||||
"TEL": "Telefono",
|
||||
"NUMBER": "Numero",
|
||||
"EMAIL": "E-mail",
|
||||
"USERID": null,
|
||||
"ORG": "Organizzazione",
|
||||
"ORGNAME": "Nome",
|
||||
"ORGUNIT": "Unità",
|
||||
"TITLE": "Titolo di lavoro",
|
||||
"ROLE": "Funzione",
|
||||
"BDAY": "Compleanno",
|
||||
"DESC": "Descrizione",
|
||||
"PHOTO": null,
|
||||
"send_message": "Messagio inviato",
|
||||
"get_info": "Mostra informazioni",
|
||||
"Settings": "Impostazione",
|
||||
"Priority": "Priorità",
|
||||
"Save": "Salva",
|
||||
"User_settings": "Impostazione dell'utente",
|
||||
"A_fingerprint_": "Una impronta digitale è usato per assicurarsi che la persona con cui stai parlando è lui o lei che sta dicendo.",
|
||||
"Your_roster_is_empty_add_a": "Il suo elenco è vuoto, aggiungi un ",
|
||||
"new_buddy": "compagno nuovo",
|
||||
"is": "è",
|
||||
"Login_options": "Opzioni di login",
|
||||
"BOSH_url": "BOSH URL",
|
||||
"Domain": "Domain",
|
||||
"Resource": "Risorsa",
|
||||
"On_login": "Login on",
|
||||
"Received_an_unencrypted_message": "Ricevuto un messaggio non crittografato",
|
||||
"Sorry_your_buddy_doesnt_provide_any_information": "Spiace, il tuo compagno non fornisce alcuna informazione.",
|
||||
"Info_about": "Informazioni",
|
||||
"Authentication_aborted": "Autenticazione interrotta",
|
||||
"Authentication_request_received": "Richiesta di autenticazione ricevuto.",
|
||||
"Do_you_want_to_display_them": "Vuoi che venga visualizzato?",
|
||||
"Log_in_without_chat": "Log in senza chat",
|
||||
"has_come_online": "È venuto in linea",
|
||||
"Unknown_sender": "Mittente sconosciuto",
|
||||
"You_received_a_message_from_an_unknown_sender": "Hai ricevuto un messaggio da un mittente sconosciuto",
|
||||
"Please_allow_access_to_microphone_and_camera": "Si prega di fare clic sul bottone \"Autorizzazione\" sopra per autorizzazione del l'accesso al microfono e fotocamera.",
|
||||
"Incoming_call": "Chiamata in arrivo",
|
||||
"from": "di",
|
||||
"Do_you_want_to_accept_the_call_from": "Vuoi accettare la chiamata di",
|
||||
"Reject": "Rifiuta",
|
||||
"Accept": "Accetta",
|
||||
"hang_up": "Riattacca",
|
||||
"snapshot": "istantanea",
|
||||
"mute_my_audio": "disattiva il mio audio",
|
||||
"pause_my_video": "pausa il mio audio",
|
||||
"fullscreen": "schermo intero",
|
||||
"Info": "Informazione",
|
||||
"Local_IP": "IP locale",
|
||||
"Remote_IP": "IP remoto",
|
||||
"Local_Fingerprint": "Impronta digitale locale",
|
||||
"Remote_Fingerprint": "Impronta digitale remoto",
|
||||
"Video_call_not_possible": "Videochiamata non è possibile. Il tuo compagno non può effettuare videochiamate.",
|
||||
"Start_video_call": "Inizia videochiamata"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,172 @@
|
||||
{
|
||||
"translation": {
|
||||
"Logging_in": null,
|
||||
"your_connection_is_unencrypted": null,
|
||||
"your_connection_is_encrypted": null,
|
||||
"your_buddy_closed_the_private_connection": null,
|
||||
"start_private": null,
|
||||
"close_private": null,
|
||||
"your_buddy_is_verificated": null,
|
||||
"you_have_only_a_subscription_in_one_way": null,
|
||||
"authentication_query_sent": null,
|
||||
"your_message_wasnt_send_please_end_your_private_conversation": null,
|
||||
"unencrypted_message_received": null,
|
||||
"your_message_wasnt_send_because_you_have_no_valid_subscription": null,
|
||||
"not_available": null,
|
||||
"no_connection": null,
|
||||
"relogin": null,
|
||||
"trying_to_start_private_conversation": null,
|
||||
"Verified": null,
|
||||
"Unverified": null,
|
||||
"private_conversation_started": null,
|
||||
"private_conversation_aborted": null,
|
||||
"your_buddy_closed_the_private_conversation_you_should_do_the_same": null,
|
||||
"conversation_is_now_verified": null,
|
||||
"authentication_failed": null,
|
||||
"your_buddy_is_attempting_to_determine_": null,
|
||||
"to_authenticate_to_your_buddy": null,
|
||||
"enter_the_answer_and_click_answer": null,
|
||||
"enter_the_secret": null,
|
||||
"Creating_your_private_key_": null,
|
||||
"Authenticating_a_buddy_helps_": null,
|
||||
"How_do_you_want_to_authenticate_your_buddy": null,
|
||||
"Select_method": null,
|
||||
"Manual": null,
|
||||
"Question": null,
|
||||
"Secret": null,
|
||||
"To_verify_the_fingerprint_": null,
|
||||
"Your_fingerprint": null,
|
||||
"Buddy_fingerprint": null,
|
||||
"Close": null,
|
||||
"Compared": null,
|
||||
"To_authenticate_using_a_question_": null,
|
||||
"Ask": null,
|
||||
"To_authenticate_pick_a_secret_": null,
|
||||
"Compare": null,
|
||||
"Fingerprints": null,
|
||||
"Authentication": null,
|
||||
"Message": null,
|
||||
"Add_buddy": null,
|
||||
"rename_buddy": null,
|
||||
"delete_buddy": null,
|
||||
"Login": null,
|
||||
"Username": null,
|
||||
"Password": null,
|
||||
"Cancel": null,
|
||||
"Connect": null,
|
||||
"Type_in_the_full_username_": null,
|
||||
"Alias": null,
|
||||
"Add": null,
|
||||
"Subscription_request": null,
|
||||
"You_have_a_request_from": null,
|
||||
"Deny": null,
|
||||
"Approve": null,
|
||||
"Remove_buddy": null,
|
||||
"You_are_about_to_remove_": null,
|
||||
"Continue_without_chat": null,
|
||||
"Please_wait": null,
|
||||
"Login_failed": null,
|
||||
"Sorry_we_cant_authentikate_": null,
|
||||
"Retry": null,
|
||||
"clear_history": null,
|
||||
"New_message_from": null,
|
||||
"Should_we_notify_you_": null,
|
||||
"Please_accept_": null,
|
||||
"Hide_offline": null,
|
||||
"Show_offline": null,
|
||||
"About": null,
|
||||
"dnd": null,
|
||||
"Mute": null,
|
||||
"Unmute": null,
|
||||
"Subscription": null,
|
||||
"both": null,
|
||||
"Status": null,
|
||||
"online": null,
|
||||
"chat": null,
|
||||
"away": null,
|
||||
"xa": null,
|
||||
"offline": null,
|
||||
"none": null,
|
||||
"Unknown_instance_tag": null,
|
||||
"Not_one_of_our_latest_keys": null,
|
||||
"Received_an_unreadable_encrypted_message": null,
|
||||
"Online": null,
|
||||
"Chatty": null,
|
||||
"Away": null,
|
||||
"Extended_away": null,
|
||||
"Offline": null,
|
||||
"Friendship_request": null,
|
||||
"Confirm": null,
|
||||
"Dismiss": null,
|
||||
"Remove": null,
|
||||
"Online_help": null,
|
||||
"FN": null,
|
||||
"N": null,
|
||||
"FAMILY": null,
|
||||
"GIVEN": null,
|
||||
"NICKNAME": null,
|
||||
"URL": null,
|
||||
"ADR": null,
|
||||
"STREET": null,
|
||||
"EXTADD": null,
|
||||
"LOCALITY": null,
|
||||
"REGION": null,
|
||||
"PCODE": null,
|
||||
"CTRY": null,
|
||||
"TEL": null,
|
||||
"NUMBER": null,
|
||||
"EMAIL": null,
|
||||
"USERID": null,
|
||||
"ORG": null,
|
||||
"ORGNAME": null,
|
||||
"ORGUNIT": null,
|
||||
"TITLE": null,
|
||||
"ROLE": null,
|
||||
"BDAY": null,
|
||||
"DESC": null,
|
||||
"PHOTO": null,
|
||||
"send_message": null,
|
||||
"get_info": null,
|
||||
"Settings": null,
|
||||
"Priority": null,
|
||||
"Save": null,
|
||||
"User_settings": null,
|
||||
"A_fingerprint_": null,
|
||||
"Your_roster_is_empty_add_a": null,
|
||||
"new_buddy": null,
|
||||
"is": null,
|
||||
"Login_options": null,
|
||||
"BOSH_url": null,
|
||||
"Domain": null,
|
||||
"Resource": null,
|
||||
"On_login": null,
|
||||
"Received_an_unencrypted_message": null,
|
||||
"Sorry_your_buddy_doesnt_provide_any_information": null,
|
||||
"Info_about": null,
|
||||
"Authentication_aborted": null,
|
||||
"Authentication_request_received": null,
|
||||
"Do_you_want_to_display_them": null,
|
||||
"Log_in_without_chat": null,
|
||||
"has_come_online": null,
|
||||
"Unknown_sender": null,
|
||||
"You_received_a_message_from_an_unknown_sender": null,
|
||||
"Please_allow_access_to_microphone_and_camera": null,
|
||||
"Incoming_call": null,
|
||||
"from": null,
|
||||
"Do_you_want_to_accept_the_call_from": null,
|
||||
"Reject": null,
|
||||
"Accept": null,
|
||||
"hang_up": null,
|
||||
"snapshot": null,
|
||||
"mute_my_audio": null,
|
||||
"pause_my_video": null,
|
||||
"fullscreen": null,
|
||||
"Info": null,
|
||||
"Local_IP": null,
|
||||
"Remote_IP": null,
|
||||
"Local_Fingerprint": null,
|
||||
"Remote_Fingerprint": null,
|
||||
"Video_call_not_possible": null,
|
||||
"Start_video_call": null
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,172 @@
|
||||
{
|
||||
"translation": {
|
||||
"Logging_in": "Logowanie...",
|
||||
"your_connection_is_unencrypted": "Twoje połączenie nie jest szyfrowane.",
|
||||
"your_connection_is_encrypted": "Twoje połączenie jest szyfrowane.",
|
||||
"your_buddy_closed_the_private_connection": "Twój rozmówca zamknął połączenie.",
|
||||
"start_private": "Rozpocznij rozmowę.",
|
||||
"close_private": "Zakończ rozmowę.",
|
||||
"your_buddy_is_verificated": "Twój rozmówca został zweryfikowany.",
|
||||
"you_have_only_a_subscription_in_one_way": "Masz jednostronną subskrypcję.",
|
||||
"authentication_query_sent": "Wysłano proźbę o autentykację.",
|
||||
"your_message_wasnt_send_please_end_your_private_conversation": "Twoja wiadomość nie została wysłana. Proszę, zamknij rozmowę.",
|
||||
"unencrypted_message_received": "Zwrotna niezaszyfrowana wiadomość.",
|
||||
"your_message_wasnt_send_because_you_have_no_valid_subscription": "Wiadomość nie została wysłana ponieważ nie posiadasz subskrybcji u rozmówcy.",
|
||||
"not_available": "Niedostępny.",
|
||||
"no_connection": "Brak połączenia!",
|
||||
"relogin": "Połącz ponownie",
|
||||
"trying_to_start_private_conversation": "Rozpocznij rozmowę!",
|
||||
"Verified": "Zweryfikowano",
|
||||
"Unverified": "Niezweryfikowano",
|
||||
"private_conversation_started": "Rozmowa prywatna rozpoczęta.",
|
||||
"private_conversation_aborted": "Anulowano rozmowę!",
|
||||
"your_buddy_closed_the_private_conversation_you_should_do_the_same": "Rozmówca przerwał połączenie!",
|
||||
"conversation_is_now_verified": "Zweryfikowano połączenie.",
|
||||
"authentication_failed": "Weryfikacja się nie powiodła.",
|
||||
"your_buddy_is_attempting_to_determine_": "Twój rozmówca próbuje się z Tobą połączyć.",
|
||||
"to_authenticate_to_your_buddy": "Autoryzacja z rozmówcą, ",
|
||||
"enter_the_answer_and_click_answer": "napisz odpowiedź.",
|
||||
"enter_the_secret": "wpisz hasło.",
|
||||
"Creating_your_private_key_": "Tworzenie klucza prywatnego; może to chwilę potrwać",
|
||||
"Authenticating_a_buddy_helps_": "Autoryzacja pomoże w ustaleniu faktycznej tożsamości rozmówcy ;).",
|
||||
"How_do_you_want_to_authenticate_your_buddy": "Jakiej autoryzacji chcesz użyć {{bid_name}} (<b>{{bid_jid}}</b>)?",
|
||||
"Select_method": "Wybierz sposób...",
|
||||
"Manual": "Ręcznie",
|
||||
"Question": "Pytanie",
|
||||
"Secret": "Hasło",
|
||||
"To_verify_the_fingerprint_": "Aby zweryfikować kod najpierw skontaktuj się z rozmówcą np. za pomocą telefonu.",
|
||||
"Your_fingerprint": "Twój kod:",
|
||||
"Buddy_fingerprint": "Kod rozmówcy",
|
||||
"Close": "Zamknij",
|
||||
"Compared": "Porównano",
|
||||
"To_authenticate_using_a_question_": "Aby autoryzować za pomocą pytania, wybierz pytanie na które tylko Twój rozmówca zna odpowiedź.",
|
||||
"Ask": "Zadaj pytanie",
|
||||
"To_authenticate_pick_a_secret_": "Aby autoryzować za pomocą hasła, wybierz hasło na które zna tylko Twój rozmówca.",
|
||||
"Compare": "Dopasuj",
|
||||
"Fingerprints": "Kody autoryzacyjne",
|
||||
"Authentication": "Autoryzacja",
|
||||
"Message": "Wiadomość",
|
||||
"Add_buddy": "Dodaj kontakt",
|
||||
"rename_buddy": "Zmień nazwę",
|
||||
"delete_buddy": "Usuń kontakt",
|
||||
"Login": "Login",
|
||||
"Username": "Nazwa Użytkownika",
|
||||
"Password": "Hasło",
|
||||
"Cancel": "Anuluj",
|
||||
"Connect": "Połączenie",
|
||||
"Type_in_the_full_username_": "Wpisz pełną nazwę użytkownika (np. <B>imię.nazwisko@zajezdnia.local</B>) oraz jego nazwę wyświetlaną (Alias).",
|
||||
"Alias": "Alias",
|
||||
"Add": "Dodaj",
|
||||
"Subscription_request": "Potwierdzenie subskrypcji",
|
||||
"You_have_a_request_from": "Masz potwierdzenie od",
|
||||
"Deny": "Odmów",
|
||||
"Approve": "Zatwierdź",
|
||||
"Remove_buddy": "Usuń rozmówcę",
|
||||
"You_are_about_to_remove_": "Twój rozmówca {{bid_name}} (<b>{{bid_jid}}</b>) usunął Cię ze swojej listy kontaktów.",
|
||||
"Continue_without_chat": "Kontynuuj bez komunikatora",
|
||||
"Please_wait": "Proszę czekać",
|
||||
"Login_failed": "Błędne logowanie",
|
||||
"Sorry_we_cant_authentikate_": "Błędna autoryzacja z serwerem. Może hasło jest nieprawidłowe?",
|
||||
"Retry": "Powrót",
|
||||
"clear_history": "Wyczyść historię",
|
||||
"New_message_from": "Nowa wiadomość od",
|
||||
"Should_we_notify_you_": "Czy chcesz otrzymywać powiadomienia o nowych wiadomościach w przyszłości?",
|
||||
"Please_accept_": "Kliknij \"Zezwól\" na górze.",
|
||||
"Hide_offline": "Schowaj niedostępne kontakty",
|
||||
"Show_offline": "Pokaż niedostępne kontakty",
|
||||
"About": "Info",
|
||||
"dnd": "Nie przeszkadzać",
|
||||
"Mute": "Wycisz",
|
||||
"Unmute": "Włącz dźwięk",
|
||||
"Subscription": "Subskrybcja",
|
||||
"both": "obustronna",
|
||||
"Status": "Status",
|
||||
"online": "Dostępny",
|
||||
"chat": "czat",
|
||||
"away": "z dala od kompa",
|
||||
"xa": "hen hen...",
|
||||
"offline": "niedostępny",
|
||||
"none": "brak",
|
||||
"Unknown_instance_tag": "Nieznany przypadek.",
|
||||
"Not_one_of_our_latest_keys": "Not one of our latest keys.",
|
||||
"Received_an_unreadable_encrypted_message": "Received an unreadable encrypted message.",
|
||||
"Online": "Połączony",
|
||||
"Chatty": "Pogawędzimy?",
|
||||
"Away": "Daleko",
|
||||
"Extended_away": "Hen Hen...",
|
||||
"Offline": "Niedostępny",
|
||||
"Friendship_request": "Zapytanie od znajomego?",
|
||||
"Confirm": "Potwierdzenie",
|
||||
"Dismiss": "Odwołaj",
|
||||
"Remove": "Usuń",
|
||||
"Online_help": "Pomoc Online",
|
||||
"FN": "Pełna nazwa",
|
||||
"N": " ",
|
||||
"FAMILY": "Nazwisko",
|
||||
"GIVEN": "Imię",
|
||||
"NICKNAME": "Pseudonim",
|
||||
"URL": "Strona WWW",
|
||||
"ADR": "Adres",
|
||||
"STREET": "Ulica",
|
||||
"EXTADD": "Extended Address",
|
||||
"LOCALITY": "Lokalizacja",
|
||||
"REGION": "Region",
|
||||
"PCODE": "Kod pocztowy",
|
||||
"CTRY": "Kraj",
|
||||
"TEL": "Telefon",
|
||||
"NUMBER": "Numer",
|
||||
"EMAIL": "Email",
|
||||
"USERID": " ",
|
||||
"ORG": "Organizacja",
|
||||
"ORGNAME": "Nazwa",
|
||||
"ORGUNIT": "Jednostka",
|
||||
"TITLE": "Stanowisko",
|
||||
"ROLE": "Rola",
|
||||
"BDAY": "Data urodzin",
|
||||
"DESC": "Opis",
|
||||
"PHOTO": " ",
|
||||
"send_message": "Wyślij wiadomość",
|
||||
"get_info": "Pokaż informację",
|
||||
"Settings": "Ustawienia",
|
||||
"Priority": "Priorytet",
|
||||
"Save": "Zapisz",
|
||||
"User_settings": "Ustawienia Użytkownika",
|
||||
"A_fingerprint_": "Kod służy do autoryzacji Twojego rozmówcy aby potwierdzić jego tożsamość.",
|
||||
"Your_roster_is_empty_add_a": "Twoja lista jest pusta, dodaj kontakty ",
|
||||
"new_buddy": "Nowy kontakt",
|
||||
"is": "jest",
|
||||
"Login_options": "opcje logowania",
|
||||
"BOSH_url": "Adres BOSH",
|
||||
"Domain": "Domena",
|
||||
"Resource": "Źródło",
|
||||
"On_login": "Na login",
|
||||
"Received_an_unencrypted_message": "Zatwierdzono nieszyfrowaną wiadomość.",
|
||||
"Sorry_your_buddy_doesnt_provide_any_information": "Twój rozmówca nie posiada żadnych informacji.",
|
||||
"Info_about": "Informacja o...",
|
||||
"Authentication_aborted": "Autoryzacja anulowana.",
|
||||
"Authentication_request_received": "Prośba o autoryzację została przyjęta.",
|
||||
"Do_you_want_to_display_them": "Chcesz to wyświetlić?",
|
||||
"Log_in_without_chat": "Zaloguj bez komunikatora",
|
||||
"has_come_online": "jest teraz dostępny",
|
||||
"Unknown_sender": "Nieznany nadawca",
|
||||
"You_received_a_message_from_an_unknown_sender": "Masz wiadomość od nieznanego nadawcy.",
|
||||
"Please_allow_access_to_microphone_and_camera": "Kliknij \"Potwierdź\" na górze, aby móc korzystać z mikrofonu oraz kamery.",
|
||||
"Incoming_call": "Przychodzące połączenie",
|
||||
"from": "z",
|
||||
"Do_you_want_to_accept_the_call_from": "Akceptujesz połączenie od",
|
||||
"Reject": "Odrzuć",
|
||||
"Accept": "Zaakceptuj",
|
||||
"hang_up": "odbierz",
|
||||
"snapshot": "zrób zdjęcie",
|
||||
"mute_my_audio": "wycisz dźwięk",
|
||||
"pause_my_video": "zatrzymaj moje wideo",
|
||||
"fullscreen": "Pełny ekran",
|
||||
"Info": "Informacja",
|
||||
"Local_IP": "Adres IP",
|
||||
"Remote_IP": "Zdalny adres IP",
|
||||
"Local_Fingerprint": "Kod lokalny",
|
||||
"Remote_Fingerprint": "Zdalny kod",
|
||||
"Video_call_not_possible": "Rozmowa wideo jest niemożliwa. Twój rozmówca nie ma możliwości prowadzenia takich rozmów.",
|
||||
"Start_video_call": "Rozpocznij rozmowę wideo"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,172 @@
|
||||
{
|
||||
"translation": {
|
||||
"Logging_in": "Entrando...",
|
||||
"your_connection_is_unencrypted": "Sua conexão não é encriptada",
|
||||
"your_connection_is_encrypted": "Sua conexão é encriptada",
|
||||
"your_buddy_closed_the_private_connection": "Seu contato fechou a conexão privada",
|
||||
"start_private": "Iniciar conversa privada",
|
||||
"close_private": "Fechar conversa privada",
|
||||
"your_buddy_is_verificated": "Seu contato está verificado",
|
||||
"you_have_only_a_subscription_in_one_way": "Você só tem a inscrição one-way",
|
||||
"authentication_query_sent": "Pergunta de autenticação enviada",
|
||||
"your_message_wasnt_send_please_end_your_private_conversation": "Sua mensagem não foi enviada. Por favor finalize sua conversa privada",
|
||||
"unencrypted_message_received": "Mensagem não encriptada recebida",
|
||||
"your_message_wasnt_send_because_you_have_no_valid_subscription": "Sua mensagem não foi enviada porque sua inscrição não é válida",
|
||||
"not_available": "Indisponível",
|
||||
"no_connection": "Sem conexão!",
|
||||
"relogin": "reentrar",
|
||||
"trying_to_start_private_conversation": "Tentando iniciar conversa privada",
|
||||
"Verified": "Verificado",
|
||||
"Unverified": "Não verificado",
|
||||
"private_conversation_started": "Conversa privada iniciada.",
|
||||
"private_conversation_aborted": "Conversa privada abortada!",
|
||||
"your_buddy_closed_the_private_conversation_you_should_do_the_same": "Seu contato encerrou a conversa privada! Você deveria fazer o mesmo.",
|
||||
"conversation_is_now_verified": "Conversa verificada.",
|
||||
"authentication_failed": "Autenticação falhou.",
|
||||
"your_buddy_is_attempting_to_determine_": "Seu contato está tentando determinar se ele realmente está falando contigo.",
|
||||
"to_authenticate_to_your_buddy": "Para autenticar seu contato, ",
|
||||
"enter_the_answer_and_click_answer": "entre com a resposta e clique em Responder.",
|
||||
"enter_the_secret": "escreva a senha.",
|
||||
"Creating_your_private_key_": "Criando sua chave privada: isso pode demorar um pouco.",
|
||||
"Authenticating_a_buddy_helps_": "Autenticar seu contato ajuda a garantir que a pessoa com a qual você está falando é realmente a pessoa que ela alega ser.",
|
||||
"How_do_you_want_to_authenticate_your_buddy": "Como você gostaria de se autenticar {{bid_name}} (<b>{{bid_jid}}</b>)?",
|
||||
"Select_method": "Selecione o método...",
|
||||
"Manual": "Manual",
|
||||
"Question": "Pergunta",
|
||||
"Secret": "Senha",
|
||||
"To_verify_the_fingerprint_": "Para verificar o fingerprint, entre em contato com seu contato usando outro meio, de preferência seguro, como o telefone.",
|
||||
"Your_fingerprint": "Seu fingerprint",
|
||||
"Buddy_fingerprint": "Fingerprint do contato",
|
||||
"Close": "Fechar",
|
||||
"Compared": "Comparado",
|
||||
"To_authenticate_using_a_question_": "Para autenticar seu contato faça uma pergunta, mas escolha que só ele saiba a resposta.",
|
||||
"Ask": "Pergunta",
|
||||
"To_authenticate_pick_a_secret_": "Para autenticar, escolha um segredo que somente você e seu contato saibam.",
|
||||
"Compare": "Compare",
|
||||
"Fingerprints": "Fingerprints",
|
||||
"Authentication": "Autenticação",
|
||||
"Message": "Mensagem",
|
||||
"Add_buddy": "Adicionar contato",
|
||||
"rename_buddy": "renomear contato",
|
||||
"delete_buddy": "remover contato",
|
||||
"Login": "Entrar",
|
||||
"Username": "Usuário",
|
||||
"Password": "Senha",
|
||||
"Cancel": "Cancelar",
|
||||
"Connect": "Conectar",
|
||||
"Type_in_the_full_username_": "Digite seu nome completo e um apelido opcional.",
|
||||
"Alias": "Apelido",
|
||||
"Add": "Adicionar",
|
||||
"Subscription_request": "Pedido de inscrição",
|
||||
"You_have_a_request_from": "Você tem um pedido de",
|
||||
"Deny": "Negar",
|
||||
"Approve": "Aprovar",
|
||||
"Remove_buddy": "Remover contato",
|
||||
"You_are_about_to_remove_": "Você está prestes a remover {{bid_name}} (<b>{{bid_jid}}</b>) de sua lista de contatos. Todas as conversas serão fechadas.",
|
||||
"Continue_without_chat": "Continue sem converar",
|
||||
"Please_wait": "Por favor aguarde",
|
||||
"Login_failed": "Autenticação da conversa falhou",
|
||||
"Sorry_we_cant_authentikate_": "A autenticação com o servidor falhou. Talvez seja a senha errada?",
|
||||
"Retry": "Voltar",
|
||||
"clear_history": "Limpar histórico",
|
||||
"New_message_from": "Nova mensagem de",
|
||||
"Should_we_notify_you_": "Devemos continuar notificando sobre novas mensagens no futuro?",
|
||||
"Please_accept_": "Por favor clique no botão \"Permitir\" na parte superior.",
|
||||
"Hide_offline": "Esconder contatos desconectados",
|
||||
"Show_offline": "Mostrar contatos desconectados",
|
||||
"About": "Sobre",
|
||||
"dnd": "Não perturbe",
|
||||
"Mute": "Mudo",
|
||||
"Unmute": "Ligar",
|
||||
"Subscription": "Inscrição",
|
||||
"both": "ambos",
|
||||
"Status": "Status",
|
||||
"online": "online",
|
||||
"chat": "conversa",
|
||||
"away": "ausente",
|
||||
"xa": "ausente por mais tempo",
|
||||
"offline": "desativado",
|
||||
"none": "nenhum",
|
||||
"Unknown_instance_tag": "Marcação desconhecida da instância",
|
||||
"Not_one_of_our_latest_keys": "Nenhuma de nossas ultimas chaves.",
|
||||
"Received_an_unreadable_encrypted_message": "Mensagem encriptada ilegível foi recebida.",
|
||||
"Online": "Online",
|
||||
"Chatty": "Tagarela",
|
||||
"Away": "Ausente",
|
||||
"Extended_away": "Ausente por mais tempo",
|
||||
"Offline": "Desativado",
|
||||
"Friendship_request": "Pedido de amizade",
|
||||
"Confirm": "Confirmar",
|
||||
"Dismiss": "Ignorar",
|
||||
"Remove": "Remover",
|
||||
"Online_help": "Ajuda online",
|
||||
"FN": "Nome completo",
|
||||
"N": " ",
|
||||
"FAMILY": "Sobrenome",
|
||||
"GIVEN": "Nome",
|
||||
"NICKNAME": "Apelido",
|
||||
"URL": "URL",
|
||||
"ADR": "Endereço",
|
||||
"STREET": "Rua, Av, etc",
|
||||
"EXTADD": "Complemento",
|
||||
"LOCALITY": "Localidade",
|
||||
"REGION": "Região",
|
||||
"PCODE": "CEP",
|
||||
"CTRY": "País",
|
||||
"TEL": "Telefone",
|
||||
"NUMBER": "Número",
|
||||
"EMAIL": "Email",
|
||||
"USERID": " ",
|
||||
"ORG": "Empresa",
|
||||
"ORGNAME": "Nome",
|
||||
"ORGUNIT": "Unidade",
|
||||
"TITLE": "Cargo",
|
||||
"ROLE": "Rol",
|
||||
"BDAY": "Data de nascimento",
|
||||
"DESC": "Descrição",
|
||||
"PHOTO": " ",
|
||||
"send_message": "Enviar mensagem",
|
||||
"get_info": "Exibir informações",
|
||||
"Settings": "Configurações",
|
||||
"Priority": "Prioridade",
|
||||
"Save": "Salvar",
|
||||
"User_settings": "Configurações do usuário",
|
||||
"A_fingerprint_": "O fingerprint é usado para certificar que a pessoa com a qual se está falando é que ela diz ser.",
|
||||
"Your_roster_is_empty_add_a": "Sua lista está vazia, adicione um ",
|
||||
"new_buddy": "novo contato",
|
||||
"is": "é",
|
||||
"Login_options": "Opções de login",
|
||||
"BOSH_url": "BOSH URL",
|
||||
"Domain": "Domínio",
|
||||
"Resource": "Recurso",
|
||||
"On_login": "Ao autenticar",
|
||||
"Received_an_unencrypted_message": "Mensagem não encriptada recebida",
|
||||
"Sorry_your_buddy_doesnt_provide_any_information": "Desculpe, seu contato não forneceu nenhuma informação",
|
||||
"Info_about": "Informações sobre",
|
||||
"Authentication_aborted": "Autenticação encerrada.",
|
||||
"Authentication_request_received": "Pedido de autenticação recebido",
|
||||
"Do_you_want_to_display_them": "Você quer mostrá-los?",
|
||||
"Log_in_without_chat": "Entrar sem conversar",
|
||||
"has_come_online": "ficou online",
|
||||
"Unknown_sender": "Emissor desconhecido",
|
||||
"You_received_a_message_from_an_unknown_sender": "Você recebeu uma mensagem de um emissor desconhecido",
|
||||
"Please_allow_access_to_microphone_and_camera": "Por favor clique no botão \"Permitir\" no topo, para conceder acesso ao seu microfone e câmera.",
|
||||
"Incoming_call": "Recebendo chamada",
|
||||
"from": "de",
|
||||
"Do_you_want_to_accept_the_call_from": "Você aceita a chamada de",
|
||||
"Reject": "Negar",
|
||||
"Accept": "Aceitar",
|
||||
"hang_up": "desligar",
|
||||
"snapshot": "registrar imagem",
|
||||
"mute_my_audio": "mudo",
|
||||
"pause_my_video": "pausar vídeo",
|
||||
"fullscreen": "tela cheia",
|
||||
"Info": "Informações",
|
||||
"Local_IP": "IP local",
|
||||
"Remote_IP": "IP remoto",
|
||||
"Local_Fingerprint": "Fingerprint local",
|
||||
"Remote_Fingerprint": "Fingerprint remoto",
|
||||
"Video_call_not_possible": "Chamada de vídeo impossível. Seu contato não suporta chamadas desse tipo.",
|
||||
"Start_video_call": "Iniciar chamada de vídeo"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,172 @@
|
||||
{
|
||||
"translation": {
|
||||
"Logging_in": null,
|
||||
"your_connection_is_unencrypted": null,
|
||||
"your_connection_is_encrypted": null,
|
||||
"your_buddy_closed_the_private_connection": null,
|
||||
"start_private": null,
|
||||
"close_private": null,
|
||||
"your_buddy_is_verificated": null,
|
||||
"you_have_only_a_subscription_in_one_way": null,
|
||||
"authentication_query_sent": null,
|
||||
"your_message_wasnt_send_please_end_your_private_conversation": null,
|
||||
"unencrypted_message_received": null,
|
||||
"your_message_wasnt_send_because_you_have_no_valid_subscription": null,
|
||||
"not_available": null,
|
||||
"no_connection": null,
|
||||
"relogin": null,
|
||||
"trying_to_start_private_conversation": null,
|
||||
"Verified": null,
|
||||
"Unverified": null,
|
||||
"private_conversation_started": null,
|
||||
"private_conversation_aborted": null,
|
||||
"your_buddy_closed_the_private_conversation_you_should_do_the_same": null,
|
||||
"conversation_is_now_verified": null,
|
||||
"authentication_failed": null,
|
||||
"your_buddy_is_attempting_to_determine_": null,
|
||||
"to_authenticate_to_your_buddy": null,
|
||||
"enter_the_answer_and_click_answer": null,
|
||||
"enter_the_secret": null,
|
||||
"Creating_your_private_key_": null,
|
||||
"Authenticating_a_buddy_helps_": null,
|
||||
"How_do_you_want_to_authenticate_your_buddy": null,
|
||||
"Select_method": null,
|
||||
"Manual": null,
|
||||
"Question": null,
|
||||
"Secret": null,
|
||||
"To_verify_the_fingerprint_": null,
|
||||
"Your_fingerprint": null,
|
||||
"Buddy_fingerprint": null,
|
||||
"Close": null,
|
||||
"Compared": null,
|
||||
"To_authenticate_using_a_question_": null,
|
||||
"Ask": null,
|
||||
"To_authenticate_pick_a_secret_": null,
|
||||
"Compare": null,
|
||||
"Fingerprints": null,
|
||||
"Authentication": null,
|
||||
"Message": null,
|
||||
"Add_buddy": null,
|
||||
"rename_buddy": null,
|
||||
"delete_buddy": null,
|
||||
"Login": null,
|
||||
"Username": null,
|
||||
"Password": null,
|
||||
"Cancel": null,
|
||||
"Connect": null,
|
||||
"Type_in_the_full_username_": null,
|
||||
"Alias": null,
|
||||
"Add": null,
|
||||
"Subscription_request": null,
|
||||
"You_have_a_request_from": null,
|
||||
"Deny": null,
|
||||
"Approve": null,
|
||||
"Remove_buddy": null,
|
||||
"You_are_about_to_remove_": null,
|
||||
"Continue_without_chat": null,
|
||||
"Please_wait": null,
|
||||
"Login_failed": null,
|
||||
"Sorry_we_cant_authentikate_": null,
|
||||
"Retry": null,
|
||||
"clear_history": null,
|
||||
"New_message_from": null,
|
||||
"Should_we_notify_you_": null,
|
||||
"Please_accept_": null,
|
||||
"Hide_offline": null,
|
||||
"Show_offline": null,
|
||||
"About": null,
|
||||
"dnd": null,
|
||||
"Mute": null,
|
||||
"Unmute": null,
|
||||
"Subscription": null,
|
||||
"both": null,
|
||||
"Status": null,
|
||||
"online": null,
|
||||
"chat": null,
|
||||
"away": null,
|
||||
"xa": null,
|
||||
"offline": null,
|
||||
"none": null,
|
||||
"Unknown_instance_tag": null,
|
||||
"Not_one_of_our_latest_keys": null,
|
||||
"Received_an_unreadable_encrypted_message": null,
|
||||
"Online": null,
|
||||
"Chatty": null,
|
||||
"Away": null,
|
||||
"Extended_away": null,
|
||||
"Offline": null,
|
||||
"Friendship_request": null,
|
||||
"Confirm": null,
|
||||
"Dismiss": null,
|
||||
"Remove": null,
|
||||
"Online_help": null,
|
||||
"FN": null,
|
||||
"N": null,
|
||||
"FAMILY": null,
|
||||
"GIVEN": null,
|
||||
"NICKNAME": null,
|
||||
"URL": null,
|
||||
"ADR": null,
|
||||
"STREET": null,
|
||||
"EXTADD": null,
|
||||
"LOCALITY": null,
|
||||
"REGION": null,
|
||||
"PCODE": null,
|
||||
"CTRY": null,
|
||||
"TEL": null,
|
||||
"NUMBER": null,
|
||||
"EMAIL": null,
|
||||
"USERID": null,
|
||||
"ORG": null,
|
||||
"ORGNAME": null,
|
||||
"ORGUNIT": null,
|
||||
"TITLE": null,
|
||||
"ROLE": null,
|
||||
"BDAY": null,
|
||||
"DESC": null,
|
||||
"PHOTO": null,
|
||||
"send_message": null,
|
||||
"get_info": null,
|
||||
"Settings": null,
|
||||
"Priority": null,
|
||||
"Save": null,
|
||||
"User_settings": null,
|
||||
"A_fingerprint_": null,
|
||||
"Your_roster_is_empty_add_a": null,
|
||||
"new_buddy": null,
|
||||
"is": null,
|
||||
"Login_options": null,
|
||||
"BOSH_url": null,
|
||||
"Domain": null,
|
||||
"Resource": null,
|
||||
"On_login": null,
|
||||
"Received_an_unencrypted_message": null,
|
||||
"Sorry_your_buddy_doesnt_provide_any_information": null,
|
||||
"Info_about": null,
|
||||
"Authentication_aborted": null,
|
||||
"Authentication_request_received": null,
|
||||
"Do_you_want_to_display_them": null,
|
||||
"Log_in_without_chat": null,
|
||||
"has_come_online": null,
|
||||
"Unknown_sender": null,
|
||||
"You_received_a_message_from_an_unknown_sender": null,
|
||||
"Please_allow_access_to_microphone_and_camera": null,
|
||||
"Incoming_call": null,
|
||||
"from": null,
|
||||
"Do_you_want_to_accept_the_call_from": null,
|
||||
"Reject": null,
|
||||
"Accept": null,
|
||||
"hang_up": null,
|
||||
"snapshot": null,
|
||||
"mute_my_audio": null,
|
||||
"pause_my_video": null,
|
||||
"fullscreen": null,
|
||||
"Info": null,
|
||||
"Local_IP": null,
|
||||
"Remote_IP": null,
|
||||
"Local_Fingerprint": null,
|
||||
"Remote_Fingerprint": null,
|
||||
"Video_call_not_possible": null,
|
||||
"Start_video_call": null
|
||||
}
|
||||
}
|
||||
+13
-5
@@ -1,28 +1,36 @@
|
||||
{
|
||||
"name": "jsxc",
|
||||
"version": "1.0.0",
|
||||
"version": "2.0.0-beta2",
|
||||
"description": "Real-time chat app",
|
||||
"homepage": "http://www.jsxc.org/",
|
||||
"bugs": "https://github.com/sualko/jsxc/issues",
|
||||
"bugs": "https://github.com/jsxc/jsxc/issues",
|
||||
"license": "MIT",
|
||||
"author": "Klaus Herberth <klaus@jsxc.org>",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/sualko/jsxc"
|
||||
"url": "https://github.com/jsxc/jsxc"
|
||||
},
|
||||
"devDependencies": {
|
||||
"grunt": "~0.4.4",
|
||||
"autoprefixer-core": "^4.0.2",
|
||||
"grunt": "^0.4.5",
|
||||
"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-contrib-watch": "^0.6.1",
|
||||
"grunt-data-uri": "^0.2.0",
|
||||
"grunt-jsdoc": "^0.5.7",
|
||||
"grunt-merge-data": "^0.4.3",
|
||||
"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,706 @@
|
||||
.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;
|
||||
display: inline-block;
|
||||
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_inputinfo {
|
||||
padding-left: 30%;
|
||||
font-style: italic;
|
||||
margin-top: -1em;
|
||||
}
|
||||
.jsxc_waiting {
|
||||
&:before {
|
||||
content: " ";
|
||||
width: 1em;
|
||||
height: 1em;
|
||||
display: inline-block;
|
||||
background-size: 100%;
|
||||
margin: 0 3px 0 0;
|
||||
background-image: image-url('loading.gif');
|
||||
}
|
||||
}
|
||||
}
|
||||
.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;
|
||||
background-image: image-url('resize_gray.svg');
|
||||
}
|
||||
.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_avatar {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
.jsxc_timestamp {
|
||||
font-size: 8px;
|
||||
color: $chatmessage_timestamp;
|
||||
line-height: 8px;
|
||||
overflow: hidden;
|
||||
white-space: nowrap;
|
||||
max-width: 100%;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
.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,109 @@
|
||||
%muc-avatar-icon {
|
||||
text-indent: 999px;
|
||||
background-image: image-url('group_white.svg');
|
||||
background-size: 70% 70% !important;
|
||||
background-repeat: no-repeat;
|
||||
}
|
||||
|
||||
.jsxc_windowItem {
|
||||
&.jsxc_groupchat {
|
||||
.jsxc_fade {
|
||||
padding-top: 30px;
|
||||
}
|
||||
.jsxc_video {
|
||||
display: none;
|
||||
}
|
||||
.jsxc_transfer {
|
||||
display: none;
|
||||
}
|
||||
.jsxc_fingerprints, jsxc_verification, jsxc_transfer {
|
||||
display: none;
|
||||
}
|
||||
.jsxc_members {
|
||||
background-image: image-url('group_grey.svg');
|
||||
background-size: 90%;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
&:hover {
|
||||
background-image: image-url('group_white.svg');
|
||||
}
|
||||
}
|
||||
.jsxc_chatmessage.jsxc_in {
|
||||
margin-left: 40px;
|
||||
.jsxc_avatar {
|
||||
display: block;
|
||||
position:absolute;
|
||||
bottom: 0px;
|
||||
left: -37px;
|
||||
background-color: #777;
|
||||
}
|
||||
}
|
||||
.jsxc_bar {
|
||||
.jsxc_avatar {
|
||||
@extend %muc-avatar-icon;
|
||||
}
|
||||
}
|
||||
}
|
||||
.jsxc_memberlist {
|
||||
height: 30px;
|
||||
width: 100%;
|
||||
background-color: $window_bar_bg;
|
||||
overflow: hidden;
|
||||
position: absolute;
|
||||
top: 0px;
|
||||
transition: height 400ms;
|
||||
z-index: 100;
|
||||
ul {
|
||||
white-space: nowrap;
|
||||
position: absolute;
|
||||
background-color: $window_bar_bg;
|
||||
color: $window_bar_color;
|
||||
overflow: hidden;
|
||||
transition: left 400ms;
|
||||
&>li {
|
||||
display: inline-block;
|
||||
white-space: normal;
|
||||
&:last-child {
|
||||
margin-right: 2px;
|
||||
}
|
||||
.jsxc_name {
|
||||
display: none;
|
||||
}
|
||||
.jsxc_avatar {
|
||||
margin-left: 2px;
|
||||
margin-right: 0px;
|
||||
}
|
||||
}
|
||||
}
|
||||
&.jsxc_expand {
|
||||
ul {
|
||||
white-space: normal;
|
||||
&>li {
|
||||
display: block;
|
||||
width: 100%;
|
||||
height: 27px;
|
||||
line-height: 27px;
|
||||
.jsxc_name {
|
||||
display: block;
|
||||
cursor: default;
|
||||
&:hover {
|
||||
color: inherit;
|
||||
}
|
||||
}
|
||||
.jsxc_avatar {
|
||||
margin-right: 4px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
li[data-type="groupchat"] {
|
||||
.jsxc_avatar {
|
||||
@extend %muc-avatar-icon;
|
||||
}
|
||||
.jsxc_video {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
@@ -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,15 @@
|
||||
.jsxc_emoticon {
|
||||
display: inline-block;
|
||||
width: 19px;
|
||||
height: 19px;
|
||||
background-size: 19px 19px !important;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
$emoticons: angel, angry, smile, grin, sad, wink, tonguesmile, surpised, kiss,
|
||||
sunglassess, crysad, doubt, zip, thumbsup, thumbsdown, beer, devil,
|
||||
kissing, rose, music, love, tired, surprised;
|
||||
|
||||
@each $emoticon in $emoticons {
|
||||
.jsxc_#{$emoticon} { background: image-url('emotions/#{$emoticon}.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';
|
||||
@@ -0,0 +1,4 @@
|
||||
var jsxc = null, RTC = null, RTCPeerconnection = null;
|
||||
|
||||
(function($) {
|
||||
"use strict";
|
||||
Diferenças do arquivo suprimidas por serem muito extensas
Carregar Diff
Arquivo executável
+769
@@ -0,0 +1,769 @@
|
||||
/**
|
||||
* JavaScript Xmpp Chat namespace
|
||||
*
|
||||
* @namespace jsxc
|
||||
*/
|
||||
jsxc = {
|
||||
/** Version of jsxc */
|
||||
version: '< $ app.version $ >',
|
||||
|
||||
/** True if i'm the master */
|
||||
master: false,
|
||||
|
||||
/** True if the role allocation is finished */
|
||||
role_allocation: false,
|
||||
|
||||
/** Timeout for keepalive */
|
||||
to: null,
|
||||
|
||||
/** Timeout after normal keepalive starts */
|
||||
toBusy: null,
|
||||
|
||||
/** Timeout for notification */
|
||||
toNotification: null,
|
||||
|
||||
/** Timeout delay for notification */
|
||||
toNotificationDelay: 500,
|
||||
|
||||
/** Interval for keep-alive */
|
||||
keepalive: null,
|
||||
|
||||
/** True if last activity was 10 min ago */
|
||||
restore: false,
|
||||
|
||||
/** True if restore is complete */
|
||||
restoreCompleted: false,
|
||||
|
||||
/** True if login through box */
|
||||
triggeredFromBox: false,
|
||||
|
||||
/** True if logout through element click */
|
||||
triggeredFromElement: false,
|
||||
|
||||
/** True if logout through logout click */
|
||||
triggeredFromLogout: false,
|
||||
|
||||
/** last values which we wrote into localstorage (IE workaround) */
|
||||
ls: [],
|
||||
|
||||
/**
|
||||
* storage event is even fired if I write something into storage (IE
|
||||
* workaround) 0: conform, 1: not conform, 2: not shure
|
||||
*/
|
||||
storageNotConform: null,
|
||||
|
||||
/** Timeout for storageNotConform test */
|
||||
toSNC: null,
|
||||
|
||||
/** My bar id */
|
||||
bid: null,
|
||||
|
||||
/** Some constants */
|
||||
CONST: {
|
||||
NOTIFICATION_DEFAULT: 'default',
|
||||
NOTIFICATION_GRANTED: 'granted',
|
||||
NOTIFICATION_DENIED: 'denied',
|
||||
STATUS: [ 'offline', 'dnd', 'xa', 'away', 'chat', 'online' ],
|
||||
SOUNDS: {
|
||||
MSG: 'incomingMessage.wav',
|
||||
CALL: 'Rotary-Phone6.mp3',
|
||||
NOTICE: 'Ping1.mp3'
|
||||
},
|
||||
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.
|
||||
*
|
||||
* @memberOf jsxc
|
||||
* @param {String} msg Debug message
|
||||
* @param {Object} data
|
||||
* @param {String} Could be warn|error|null
|
||||
*/
|
||||
debug: function(msg, data, level) {
|
||||
if (level) {
|
||||
msg = '[' + level + '] ' + msg;
|
||||
}
|
||||
|
||||
if (data) {
|
||||
if (jsxc.storage.getItem('debug') === true) {
|
||||
console.log(msg, data);
|
||||
}
|
||||
|
||||
// try to convert data to string
|
||||
var d;
|
||||
try {
|
||||
// clone html snippet
|
||||
d = $("<span>").prepend($(data).clone()).html();
|
||||
} catch (err) {
|
||||
try {
|
||||
d = JSON.stringify(data);
|
||||
} catch (err2) {
|
||||
d = 'see js console';
|
||||
}
|
||||
}
|
||||
|
||||
jsxc.log = jsxc.log + msg + ': ' + d + '\n';
|
||||
} else {
|
||||
console.log(msg);
|
||||
jsxc.log = jsxc.log + msg + '\n';
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Write warn message.
|
||||
*
|
||||
* @memberOf jsxc
|
||||
* @param {String} msg Warn message
|
||||
* @param {Object} data
|
||||
*/
|
||||
warn: function(msg, data) {
|
||||
jsxc.debug(msg, data, 'WARN');
|
||||
},
|
||||
|
||||
/**
|
||||
* Write error message.
|
||||
*
|
||||
* @memberOf jsxc
|
||||
* @param {String} msg Error message
|
||||
* @param {Object} data
|
||||
*/
|
||||
error: function(msg, data) {
|
||||
jsxc.debug(msg, data, 'ERROR');
|
||||
},
|
||||
|
||||
/** debug log */
|
||||
log: '',
|
||||
|
||||
/**
|
||||
* Starts the action
|
||||
*
|
||||
* @memberOf jsxc
|
||||
* @param {object} options
|
||||
*/
|
||||
init: function(options) {
|
||||
|
||||
if (options) {
|
||||
// override default options
|
||||
$.extend(true, jsxc.options, options);
|
||||
}
|
||||
|
||||
/**
|
||||
* Getter method for options. Saved options will override default one.
|
||||
*
|
||||
* @param {string} key option key
|
||||
* @returns default or saved option value
|
||||
*/
|
||||
jsxc.options.get = function(key) {
|
||||
var local = jsxc.storage.getUserItem('options') || {};
|
||||
|
||||
return local[key] || jsxc.options[key];
|
||||
};
|
||||
|
||||
/**
|
||||
* Setter method for options. Will write into localstorage.
|
||||
*
|
||||
* @param {string} key option key
|
||||
* @param {object} value option value
|
||||
*/
|
||||
jsxc.options.set = function(key, value) {
|
||||
jsxc.storage.updateItem('options', key, value, true);
|
||||
};
|
||||
|
||||
jsxc.storageNotConform = jsxc.storage.getItem('storageNotConform');
|
||||
if (jsxc.storageNotConform === null) {
|
||||
jsxc.storageNotConform = 2;
|
||||
}
|
||||
|
||||
// detect language
|
||||
var lang;
|
||||
if (jsxc.storage.getItem('lang') !== null) {
|
||||
lang = jsxc.storage.getItem('lang');
|
||||
} else if (jsxc.options.autoLang && navigator.language) {
|
||||
lang = navigator.language.substr(0, 2);
|
||||
} else {
|
||||
lang = jsxc.options.defaultLang;
|
||||
}
|
||||
|
||||
// initialize i18n translator
|
||||
$.i18n.init({
|
||||
lng: lang,
|
||||
fallbackLng: 'en',
|
||||
resStore: I18next,
|
||||
// use localStorage and set expiration to a day
|
||||
useLocalStorage: true,
|
||||
localStorageExpirationTime: 60 * 60 * 24 * 1000,
|
||||
});
|
||||
|
||||
// Check localStorage
|
||||
if (typeof (localStorage) === 'undefined') {
|
||||
jsxc.debug("Browser doesn't support localStorage.");
|
||||
return;
|
||||
}
|
||||
|
||||
if (jsxc.storage.getItem('debug') === true) {
|
||||
jsxc.options.otr.debug = true;
|
||||
}
|
||||
|
||||
// Register event listener for the storage event
|
||||
window.addEventListener('storage', jsxc.storage.onStorage, false);
|
||||
|
||||
var lastActivity = jsxc.storage.getItem('lastActivity') || 0;
|
||||
|
||||
if ((new Date()).getTime() - lastActivity < jsxc.options.loginTimeout) {
|
||||
jsxc.restore = true;
|
||||
}
|
||||
|
||||
$(document).on('connectionReady.jsxc', function() {
|
||||
// Looking for logout element
|
||||
if (jsxc.options.logoutElement !== null && jsxc.options.logoutElement.length > 0) {
|
||||
var logout = function() {
|
||||
jsxc.options.logoutElement = $(this);
|
||||
jsxc.triggeredFromLogout = true;
|
||||
return jsxc.xmpp.logout();
|
||||
};
|
||||
|
||||
jsxc.options.logoutElement.off('click', null, logout).one('click', logout);
|
||||
}
|
||||
});
|
||||
|
||||
// Check if we have to establish a new connection
|
||||
if (!jsxc.storage.getItem('rid') || !jsxc.storage.getItem('sid') || !jsxc.restore) {
|
||||
|
||||
// Looking for a login form
|
||||
if (!jsxc.options.loginForm.form || !(jsxc.el_exists(jsxc.options.loginForm.form) && jsxc.el_exists(jsxc.options.loginForm.jid) && jsxc.el_exists(jsxc.options.loginForm.pass))) {
|
||||
|
||||
if (jsxc.options.displayRosterMinimized()) {
|
||||
// Show minimized roster
|
||||
jsxc.storage.setUserItem('roster', 'hidden');
|
||||
jsxc.gui.roster.init();
|
||||
jsxc.gui.roster.noConnection();
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if (typeof jsxc.options.formFound === 'function') {
|
||||
jsxc.options.formFound.call();
|
||||
}
|
||||
|
||||
// create jquery object
|
||||
var form = jsxc.options.loginForm.form = $(jsxc.options.loginForm.form);
|
||||
var events = form.data('events') || {
|
||||
submit: []
|
||||
};
|
||||
var submits = [];
|
||||
|
||||
// save attached submit events and remove them. Will be reattached
|
||||
// in jsxc.submitLoginForm
|
||||
$.each(events.submit, function(index, val) {
|
||||
submits.push(val.handler);
|
||||
});
|
||||
|
||||
form.data('submits', submits);
|
||||
form.off('submit');
|
||||
|
||||
// Add jsxc login action to form
|
||||
form.submit(function() {
|
||||
|
||||
var settings = jsxc.prepareLogin();
|
||||
|
||||
if (settings !== false && (settings.xmpp.onlogin === "true" || settings.xmpp.onlogin === true)) {
|
||||
jsxc.options.loginForm.triggered = true;
|
||||
|
||||
jsxc.xmpp.login();
|
||||
|
||||
// Trigger submit in jsxc.xmpp.connected()
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
});
|
||||
|
||||
} else {
|
||||
|
||||
// Restore old connection
|
||||
|
||||
jsxc.bid = jsxc.jidToBid(jsxc.storage.getItem('jid'));
|
||||
|
||||
jsxc.gui.init();
|
||||
|
||||
if (typeof (jsxc.storage.getItem('alive')) === 'undefined' || !jsxc.restore) {
|
||||
jsxc.onMaster();
|
||||
} else {
|
||||
jsxc.checkMaster();
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Load settings and prepare jid.
|
||||
*
|
||||
* @memberOf jsxc
|
||||
* @returns Loaded settings
|
||||
*/
|
||||
prepareLogin: function() {
|
||||
var username = $(jsxc.options.loginForm.jid).val();
|
||||
var password = $(jsxc.options.loginForm.pass).val();
|
||||
|
||||
if (typeof jsxc.options.loadSettings !== 'function') {
|
||||
jsxc.error('No loadSettings function given. Abort.');
|
||||
return;
|
||||
}
|
||||
|
||||
jsxc.gui.showWaitAlert($.t('Logging_in'));
|
||||
|
||||
var settings = jsxc.options.loadSettings.call(this, username, password);
|
||||
|
||||
if (settings === false || settings === null || typeof settings === 'undefined') {
|
||||
jsxc.warn('No settings provided');
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
if (typeof settings.xmpp.username === 'string') {
|
||||
username = settings.xmpp.username;
|
||||
}
|
||||
|
||||
var resource = (settings.xmpp.resource) ? '/' + settings.xmpp.resource : '';
|
||||
var domain = settings.xmpp.domain;
|
||||
var jid;
|
||||
|
||||
if (username.match(/@(.*)$/)) {
|
||||
jid = (username.match(/\/(.*)$/)) ? username : username + resource;
|
||||
} else {
|
||||
jid = username + '@' + domain + resource;
|
||||
}
|
||||
|
||||
if (typeof jsxc.options.loginForm.preJid === 'function') {
|
||||
jid = jsxc.options.loginForm.preJid(jid);
|
||||
}
|
||||
|
||||
jsxc.bid = jsxc.jidToBid(jid);
|
||||
|
||||
settings.xmpp.username = jid.split('@')[0];
|
||||
settings.xmpp.domain = jid.split('@')[1].split('/')[0];
|
||||
settings.xmpp.resource = jid.split('@')[1].split('/')[1] || "";
|
||||
|
||||
$.each(settings, function(key, val) {
|
||||
jsxc.options.set(key, val);
|
||||
});
|
||||
|
||||
jsxc.options.xmpp.jid = jid;
|
||||
jsxc.options.xmpp.password = password;
|
||||
|
||||
return settings;
|
||||
},
|
||||
|
||||
/**
|
||||
* Called if the script is a slave
|
||||
*/
|
||||
onSlave: function() {
|
||||
jsxc.debug('I am the slave.');
|
||||
|
||||
jsxc.role_allocation = true;
|
||||
|
||||
jsxc.restoreRoster();
|
||||
jsxc.restoreWindows();
|
||||
jsxc.restoreCompleted = true;
|
||||
|
||||
$(document).trigger('restoreCompleted.jsxc');
|
||||
},
|
||||
|
||||
/**
|
||||
* Called if the script is the master
|
||||
*/
|
||||
onMaster: function() {
|
||||
jsxc.debug('I am master.');
|
||||
|
||||
jsxc.master = true;
|
||||
|
||||
// Init local storage
|
||||
jsxc.storage.setItem('alive', 0);
|
||||
jsxc.storage.setItem('alive_busy', 0);
|
||||
if (!jsxc.storage.getUserItem('windowlist')) {
|
||||
jsxc.storage.setUserItem('windowlist', []);
|
||||
}
|
||||
|
||||
// Sending keepalive signal
|
||||
jsxc.startKeepAlive();
|
||||
|
||||
if (jsxc.options.get('otr').enable) {
|
||||
// create or load DSA key and call _onMaster
|
||||
jsxc.otr.createDSA();
|
||||
} else {
|
||||
jsxc._onMaster();
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Second half of the onMaster routine
|
||||
*/
|
||||
_onMaster: function() {
|
||||
|
||||
// create otr objects, if we lost the master
|
||||
if (jsxc.role_allocation) {
|
||||
$.each(jsxc.storage.getUserItem('windowlist'), function(index, val) {
|
||||
jsxc.otr.create(val);
|
||||
});
|
||||
}
|
||||
|
||||
jsxc.role_allocation = true;
|
||||
|
||||
if (jsxc.restore && !jsxc.restoreCompleted) {
|
||||
jsxc.restoreRoster();
|
||||
jsxc.restoreWindows();
|
||||
jsxc.restoreCompleted = true;
|
||||
|
||||
$(document).trigger('restoreCompleted.jsxc');
|
||||
}
|
||||
|
||||
// Prepare notifications
|
||||
if (jsxc.restore) {
|
||||
var noti = jsxc.storage.getUserItem('notification');
|
||||
noti = (typeof noti === 'number')? noti : 2;
|
||||
if (jsxc.options.notification && noti > 0 && jsxc.notification.hasSupport()) {
|
||||
if (jsxc.notification.hasPermission()) {
|
||||
jsxc.notification.init();
|
||||
} else {
|
||||
jsxc.notification.prepareRequest();
|
||||
}
|
||||
} else {
|
||||
// No support => disable
|
||||
jsxc.options.notification = false;
|
||||
}
|
||||
}
|
||||
|
||||
$(document).on('connectionReady.jsxc', function() {
|
||||
jsxc.gui.updateAvatar($('#jsxc_avatar'), jsxc.jidToBid(jsxc.storage.getItem('jid')), 'own');
|
||||
});
|
||||
|
||||
jsxc.xmpp.login();
|
||||
},
|
||||
|
||||
/**
|
||||
* Checks if there is a master
|
||||
*/
|
||||
checkMaster: function() {
|
||||
jsxc.debug('check master');
|
||||
|
||||
jsxc.to = window.setTimeout(jsxc.onMaster, 1000);
|
||||
jsxc.storage.ink('alive');
|
||||
},
|
||||
|
||||
/**
|
||||
* Start sending keep-alive signal
|
||||
*/
|
||||
startKeepAlive: function() {
|
||||
jsxc.keepalive = window.setInterval(jsxc.keepAlive, jsxc.options.timeout - 1000);
|
||||
},
|
||||
|
||||
/**
|
||||
* Sends the keep-alive signal to signal that the master is still there.
|
||||
*/
|
||||
keepAlive: function() {
|
||||
jsxc.storage.ink('alive');
|
||||
|
||||
if (jsxc.role_allocation) {
|
||||
jsxc.storage.setItem('lastActivity', (new Date()).getTime());
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Send one keep-alive signal with higher timeout, and than resume with
|
||||
* normal signal
|
||||
*/
|
||||
keepBusyAlive: function() {
|
||||
if (jsxc.toBusy) {
|
||||
window.clearTimeout(jsxc.toBusy);
|
||||
}
|
||||
|
||||
if (jsxc.keepalive) {
|
||||
window.clearInterval(jsxc.keepalive);
|
||||
}
|
||||
|
||||
jsxc.storage.ink('alive_busy');
|
||||
jsxc.toBusy = window.setTimeout(jsxc.startKeepAlive, jsxc.options.busyTimeout - 1000);
|
||||
},
|
||||
|
||||
/**
|
||||
* Generates a random integer number between 0 and max
|
||||
*
|
||||
* @param {Integer} max
|
||||
* @return {Integer} random integer between 0 and max
|
||||
*/
|
||||
random: function(max) {
|
||||
return Math.floor(Math.random() * max);
|
||||
},
|
||||
|
||||
/**
|
||||
* Checks if there is a element with the given selector
|
||||
*
|
||||
* @param {String} selector jQuery selector
|
||||
* @return {Boolean}
|
||||
*/
|
||||
el_exists: function(selector) {
|
||||
return $(selector).length > 0;
|
||||
},
|
||||
|
||||
/**
|
||||
* Creates a CSS compatible string from a JID
|
||||
*
|
||||
* @param {type} jid Valid Jabber ID
|
||||
* @returns {String} css Compatible string
|
||||
*/
|
||||
jidToCid: function(jid) {
|
||||
jsxc.warn('jsxc.jidToCid is deprecated!');
|
||||
|
||||
var cid = Strophe.getBareJidFromJid(jid).replace('@', '-').replace(/\./g, '-').toLowerCase();
|
||||
|
||||
return cid;
|
||||
},
|
||||
|
||||
/**
|
||||
* Create comparable bar jid.
|
||||
*
|
||||
* @memberOf jsxc
|
||||
* @param jid
|
||||
* @returns comparable bar jid
|
||||
*/
|
||||
jidToBid: function(jid) {
|
||||
return Strophe.getBareJidFromJid(jid).toLowerCase();
|
||||
},
|
||||
|
||||
/**
|
||||
* Restore roster
|
||||
*/
|
||||
restoreRoster: function() {
|
||||
var buddies = jsxc.storage.getUserItem('buddylist');
|
||||
|
||||
if (!buddies || buddies.length === 0) {
|
||||
jsxc.debug('No saved buddylist.');
|
||||
|
||||
jsxc.gui.roster.empty();
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
$.each(buddies, function(index, value) {
|
||||
jsxc.gui.roster.add(value);
|
||||
});
|
||||
|
||||
$(document).trigger('cloaded.roster.jsxc');
|
||||
},
|
||||
|
||||
/**
|
||||
* Restore all windows
|
||||
*/
|
||||
restoreWindows: function() {
|
||||
var windows = jsxc.storage.getUserItem('windowlist');
|
||||
|
||||
if (windows === null) {
|
||||
return;
|
||||
}
|
||||
|
||||
$.each(windows, function(index, bid) {
|
||||
var window = jsxc.storage.getUserItem('window', bid);
|
||||
|
||||
if (!window) {
|
||||
jsxc.debug('Associated window-element is missing: ' + bid);
|
||||
return true;
|
||||
}
|
||||
|
||||
jsxc.gui.window.init(bid);
|
||||
|
||||
if (!window.minimize) {
|
||||
jsxc.gui.window.show(bid);
|
||||
} else {
|
||||
jsxc.gui.window.hide(bid);
|
||||
}
|
||||
|
||||
jsxc.gui.window.setText(bid, window.text);
|
||||
});
|
||||
},
|
||||
|
||||
/**
|
||||
* This method submits the specified login form.
|
||||
*/
|
||||
submitLoginForm: function() {
|
||||
var form = jsxc.options.loginForm.form.off('submit');
|
||||
|
||||
// Attach original events
|
||||
var submits = form.data('submits') || [];
|
||||
$.each(submits, function(index, val) {
|
||||
form.submit(val);
|
||||
});
|
||||
|
||||
if (form.find('#submit').length > 0) {
|
||||
form.find('#submit').click();
|
||||
} else {
|
||||
form.submit();
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Escapes some characters to HTML character
|
||||
*/
|
||||
escapeHTML: function(text) {
|
||||
text = text.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');
|
||||
return text.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');
|
||||
},
|
||||
|
||||
/**
|
||||
* Removes all html tags.
|
||||
*
|
||||
* @memberOf jsxc
|
||||
* @param text
|
||||
* @returns stripped text
|
||||
*/
|
||||
removeHTML: function(text) {
|
||||
return $('<span>').html(text).text();
|
||||
},
|
||||
|
||||
/**
|
||||
* Executes only one of the given events
|
||||
*
|
||||
* @param {string} obj.key event name
|
||||
* @param {function} obj.value function to execute
|
||||
* @returns {string} namespace of all events
|
||||
*/
|
||||
switchEvents: function(obj) {
|
||||
var ns = Math.random().toString(36).substr(2, 12);
|
||||
var self = this;
|
||||
|
||||
$.each(obj, function(key, val) {
|
||||
$(document).one(key + '.' + ns, function() {
|
||||
$(document).off('.' + ns);
|
||||
|
||||
val.apply(self, arguments);
|
||||
});
|
||||
});
|
||||
|
||||
return ns;
|
||||
},
|
||||
|
||||
/**
|
||||
* Checks if tab is hidden.
|
||||
*
|
||||
* @returns {boolean} True if tab is hidden
|
||||
*/
|
||||
isHidden: function() {
|
||||
var hidden = false;
|
||||
|
||||
if (typeof document.hidden !== 'undefined') {
|
||||
hidden = document.hidden;
|
||||
} else if (typeof document.webkitHidden !== 'undefined') {
|
||||
hidden = document.webkitHidden;
|
||||
} else if (typeof document.mozHidden !== 'undefined') {
|
||||
hidden = document.mozHidden;
|
||||
} else if (typeof document.msHidden !== 'undefined') {
|
||||
hidden = document.msHidden;
|
||||
}
|
||||
|
||||
// handle multiple tabs
|
||||
if (hidden && jsxc.master) {
|
||||
jsxc.storage.ink('hidden', 0);
|
||||
} else if (!hidden && !jsxc.master) {
|
||||
jsxc.storage.ink('hidden');
|
||||
}
|
||||
|
||||
return hidden;
|
||||
},
|
||||
|
||||
/**
|
||||
* Checks if tab has focus.
|
||||
*
|
||||
* @returns {boolean} True if tabs has focus
|
||||
*/
|
||||
hasFocus: function() {
|
||||
var focus = true;
|
||||
|
||||
if (typeof document.hasFocus === 'function') {
|
||||
focus = document.hasFocus();
|
||||
}
|
||||
|
||||
if (!focus && jsxc.master) {
|
||||
jsxc.storage.ink('focus', 0);
|
||||
} else if (focus && !jsxc.master) {
|
||||
jsxc.storage.ink('focus');
|
||||
}
|
||||
|
||||
return focus;
|
||||
},
|
||||
|
||||
/**
|
||||
* 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);
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Hash string into 32-bit signed integer.
|
||||
*
|
||||
* @memberOf jsxc
|
||||
* @param {string} str input string
|
||||
* @returns {integer} 32-bit signed integer
|
||||
*/
|
||||
hashStr: function(str) {
|
||||
var hash = 0, i;
|
||||
|
||||
if (str.length === 0) {
|
||||
return hash;
|
||||
}
|
||||
|
||||
for (i = 0; i < str.length; i++) {
|
||||
hash = ((hash << 5) - hash) + str.charCodeAt(i);
|
||||
hash |= 0; // Convert to 32bit integer
|
||||
}
|
||||
|
||||
return hash;
|
||||
}
|
||||
};
|
||||
Diferenças do arquivo suprimidas por serem muito extensas
Carregar Diff
@@ -0,0 +1,116 @@
|
||||
/**
|
||||
* This namespace handle the notice system.
|
||||
*
|
||||
* @namspace jsxc.notice
|
||||
* @memberOf jsxc
|
||||
*/
|
||||
jsxc.notice = {
|
||||
/** Number of notices. */
|
||||
_num: 0,
|
||||
|
||||
/**
|
||||
* Loads the saved notices.
|
||||
*
|
||||
* @memberOf jsxc.notice
|
||||
*/
|
||||
load: function() {
|
||||
// reset list
|
||||
$('#jsxc_notice ul li').remove();
|
||||
$('#jsxc_notice > span').text('');
|
||||
jsxc.notice._num = 0;
|
||||
|
||||
var saved = jsxc.storage.getUserItem('notices') || [];
|
||||
var key = null;
|
||||
|
||||
for (key in saved) {
|
||||
if (saved.hasOwnProperty(key)) {
|
||||
var val = saved[key];
|
||||
|
||||
jsxc.notice.add(val.msg, val.description, val.fnName, val.fnParams, key);
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Add a new notice to the stack;
|
||||
*
|
||||
* @memberOf jsxc.notice
|
||||
* @param msg Header message
|
||||
* @param description Notice description
|
||||
* @param fnName Function name to be called if you open the notice
|
||||
* @param fnParams Array of params for function
|
||||
* @param id Notice id
|
||||
*/
|
||||
add: function(msg, description, fnName, fnParams, id) {
|
||||
var nid = id || Date.now();
|
||||
var list = $('#jsxc_notice ul');
|
||||
var notice = $('<li/>');
|
||||
|
||||
notice.click(function() {
|
||||
jsxc.notice.remove(nid);
|
||||
|
||||
jsxc.exec(fnName, fnParams);
|
||||
|
||||
return false;
|
||||
});
|
||||
|
||||
notice.text(msg);
|
||||
notice.attr('title', description || '');
|
||||
notice.attr('data-nid', nid);
|
||||
list.append(notice);
|
||||
|
||||
$('#jsxc_notice > span').text(++jsxc.notice._num);
|
||||
|
||||
if (!id) {
|
||||
var saved = jsxc.storage.getUserItem('notices') || {};
|
||||
saved[nid] = {
|
||||
msg: msg,
|
||||
description: description,
|
||||
fnName: fnName,
|
||||
fnParams: fnParams
|
||||
};
|
||||
jsxc.storage.setUserItem('notices', saved);
|
||||
|
||||
jsxc.notification.notify(msg, description || '', null, true, jsxc.CONST.SOUNDS.NOTICE);
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Removes notice from stack
|
||||
*
|
||||
* @memberOf jsxc.notice
|
||||
* @param nid The notice id
|
||||
*/
|
||||
remove: function(nid) {
|
||||
var el = $('#jsxc_notice li[data-nid=' + nid + ']');
|
||||
|
||||
el.remove();
|
||||
$('#jsxc_notice > span').text(--jsxc.notice._num || '');
|
||||
|
||||
var s = jsxc.storage.getUserItem('notices');
|
||||
delete s[nid];
|
||||
jsxc.storage.setUserItem('notices', s);
|
||||
},
|
||||
|
||||
/**
|
||||
* Check if there is already a notice for the given function name.
|
||||
*
|
||||
* @memberOf jsxc.notice
|
||||
* @param {string} fnName Function name
|
||||
* @returns {boolean} True if there is >0 functions with the given name
|
||||
*/
|
||||
has: function(fnName) {
|
||||
var saved = jsxc.storage.getUserItem('notices') || [];
|
||||
var has = false;
|
||||
|
||||
$.each(saved, function(index, val){
|
||||
if (val.fnName === fnName) {
|
||||
has = true;
|
||||
|
||||
return false;
|
||||
}
|
||||
});
|
||||
|
||||
return has;
|
||||
}
|
||||
};
|
||||
@@ -0,0 +1,272 @@
|
||||
/**
|
||||
* This namespace handles the Notification API.
|
||||
*
|
||||
* @namespace jsxc.notification
|
||||
*/
|
||||
jsxc.notification = {
|
||||
|
||||
/** Current audio file. */
|
||||
audio: null,
|
||||
|
||||
/**
|
||||
* Register notification on incoming messages.
|
||||
*
|
||||
* @memberOf jsxc.notification
|
||||
*/
|
||||
init: function() {
|
||||
$(document).on('postmessagein.jsxc', function(event, bid, msg) {
|
||||
msg = (msg.match(/^\?OTR/)) ? $.t('Encrypted_message') : msg;
|
||||
var data = jsxc.storage.getUserItem('buddy', bid);
|
||||
|
||||
jsxc.notification.notify({
|
||||
title: $.t('New_message_from') + ' ' + data.name,
|
||||
msg: msg,
|
||||
soundFile: jsxc.CONST.SOUNDS.MSG,
|
||||
source: bid
|
||||
});
|
||||
});
|
||||
|
||||
$(document).on('callincoming.jingle', function() {
|
||||
jsxc.notification.playSound(jsxc.CONST.SOUNDS.CALL, true, true);
|
||||
});
|
||||
|
||||
$(document).on('accept.call.jsxc reject.call.jsxc', function() {
|
||||
jsxc.notification.stopSound();
|
||||
});
|
||||
},
|
||||
|
||||
/**
|
||||
* Shows a pop up notification and optional play sound.
|
||||
*
|
||||
* @param title Title
|
||||
* @param msg Message
|
||||
* @param d Duration
|
||||
* @param force Should message also shown, if tab is visible?
|
||||
* @param soundFile Playing given sound file
|
||||
* @param loop Loop sound file?
|
||||
* @param source Bid which triggered this notification
|
||||
*/
|
||||
notify: function(title, msg, d, force, soundFile, loop, source) {
|
||||
if (!jsxc.options.notification || !jsxc.notification.hasPermission()) {
|
||||
return; // notifications disabled
|
||||
}
|
||||
|
||||
var o;
|
||||
|
||||
if (title !== null && typeof title === 'object') {
|
||||
o = title;
|
||||
} else {
|
||||
o = {
|
||||
title: title,
|
||||
msg: msg,
|
||||
duration: d,
|
||||
force: force,
|
||||
soundFile: soundFile,
|
||||
loop: loop,
|
||||
source: source
|
||||
};
|
||||
}
|
||||
|
||||
if (jsxc.hasFocus() && !o.force) {
|
||||
return; // Tab is visible
|
||||
}
|
||||
|
||||
var icon = o.icon || jsxc.options.root + '/img/XMPP_logo.png';
|
||||
|
||||
if (typeof o.source === 'string') {
|
||||
var data = jsxc.storage.getUserItem('buddy', o.source);
|
||||
var src = jsxc.storage.getUserItem('avatar', data.avatar);
|
||||
|
||||
if (typeof src === 'string' && src !== '0') {
|
||||
icon = src;
|
||||
}
|
||||
}
|
||||
|
||||
jsxc.toNotification = setTimeout(function() {
|
||||
|
||||
if (typeof o.soundFile === 'string') {
|
||||
jsxc.notification.playSound(o.soundFile, o.loop, o.force);
|
||||
}
|
||||
|
||||
var popup = new Notification($.t(o.title), {
|
||||
body: $.t(o.msg),
|
||||
icon: icon
|
||||
});
|
||||
|
||||
var duration = o.duration || jsxc.options.popupDuration;
|
||||
|
||||
if (duration > 0) {
|
||||
setTimeout(function() {
|
||||
popup.close();
|
||||
}, duration);
|
||||
}
|
||||
}, jsxc.toNotificationDelay);
|
||||
},
|
||||
|
||||
/**
|
||||
* Checks if browser has support for notifications and add on chrome to the
|
||||
* default api.
|
||||
*
|
||||
* @returns {Boolean} True if the browser has support.
|
||||
*/
|
||||
hasSupport: function() {
|
||||
if (window.webkitNotifications) {
|
||||
// prepare chrome
|
||||
|
||||
window.Notification = function(title, opt) {
|
||||
var popup = window.webkitNotifications.createNotification(null, title, opt.body);
|
||||
popup.show();
|
||||
|
||||
popup.close = function() {
|
||||
popup.cancel();
|
||||
};
|
||||
|
||||
return popup;
|
||||
};
|
||||
|
||||
var permission;
|
||||
switch (window.webkitNotifications.checkPermission()) {
|
||||
case 0:
|
||||
permission = jsxc.CONST.NOTIFICATION_GRANTED;
|
||||
break;
|
||||
case 2:
|
||||
permission = jsxc.CONST.NOTIFICATION_DENIED;
|
||||
break;
|
||||
default: // 1
|
||||
permission = jsxc.CONST.NOTIFICATION_DEFAULT;
|
||||
}
|
||||
window.Notification.permission = permission;
|
||||
|
||||
window.Notification.requestPermission = function(func) {
|
||||
window.webkitNotifications.requestPermission(func);
|
||||
};
|
||||
|
||||
return true;
|
||||
} else if (window.Notification) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Ask user on first incoming message if we should inform him about new
|
||||
* messages.
|
||||
*/
|
||||
prepareRequest: function() {
|
||||
|
||||
if (jsxc.notice.has('gui.showRequestNotification')) {
|
||||
return;
|
||||
}
|
||||
|
||||
$(document).one('postmessagein.jsxc', function() {
|
||||
setTimeout(function() {
|
||||
jsxc.notice.add($.t('Notifications') + '?', $.t('Should_we_notify_you_'), 'gui.showRequestNotification');
|
||||
}, 1000);
|
||||
});
|
||||
},
|
||||
|
||||
/**
|
||||
* Request notification permission.
|
||||
*/
|
||||
requestPermission: function() {
|
||||
window.Notification.requestPermission(function(status) {
|
||||
if (window.Notification.permission !== status) {
|
||||
window.Notification.permission = status;
|
||||
}
|
||||
|
||||
if (jsxc.notification.hasPermission()) {
|
||||
$(document).trigger('notificationready.jsxc');
|
||||
} else {
|
||||
$(document).trigger('notificationfailure.jsxc');
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
/**
|
||||
* Check permission.
|
||||
*
|
||||
* @returns {Boolean} True if we have the permission
|
||||
*/
|
||||
hasPermission: function() {
|
||||
return window.Notification.permission === jsxc.CONST.NOTIFICATION_GRANTED;
|
||||
},
|
||||
|
||||
/**
|
||||
* Plays the given file.
|
||||
*
|
||||
* @memberOf jsxc.notification
|
||||
* @param {string} soundFile File relative to the sound directory
|
||||
* @param {boolean} loop True for loop
|
||||
* @param {boolean} force Play even if a tab is visible. Default: false.
|
||||
*/
|
||||
playSound: function(soundFile, loop, force) {
|
||||
if (!jsxc.master) {
|
||||
// only master plays sound
|
||||
return;
|
||||
}
|
||||
|
||||
if (jsxc.options.get('muteNotification') || jsxc.storage.getUserItem('presence') === 'dnd') {
|
||||
// sound mute or own presence is dnd
|
||||
return;
|
||||
}
|
||||
|
||||
if (jsxc.hasFocus() && !force) {
|
||||
// tab is visible
|
||||
return;
|
||||
}
|
||||
|
||||
// stop current audio file
|
||||
jsxc.notification.stopSound();
|
||||
|
||||
var audio = new Audio(jsxc.options.root + '/sound/' + soundFile);
|
||||
audio.loop = loop || false;
|
||||
audio.play();
|
||||
|
||||
jsxc.notification.audio = audio;
|
||||
},
|
||||
|
||||
/**
|
||||
* Stop/remove current sound.
|
||||
*
|
||||
* @memberOf jsxc.notification
|
||||
*/
|
||||
stopSound: function() {
|
||||
var audio = jsxc.notification.audio;
|
||||
|
||||
if (typeof audio !== 'undefined' && audio !== null) {
|
||||
audio.pause();
|
||||
jsxc.notification.audio = null;
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Mute sound.
|
||||
*
|
||||
* @memberOf jsxc.notification
|
||||
* @param {boolean} external True if triggered from external tab. Default:
|
||||
* false.
|
||||
*/
|
||||
muteSound: function(external) {
|
||||
$('#jsxc_menu .jsxc_muteNotification').text($.t('Unmute'));
|
||||
|
||||
if (external !== true) {
|
||||
jsxc.options.set('muteNotification', true);
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Unmute sound.
|
||||
*
|
||||
* @memberOf jsxc.notification
|
||||
* @param {boolean} external True if triggered from external tab. Default:
|
||||
* false.
|
||||
*/
|
||||
unmuteSound: function(external) {
|
||||
$('#jsxc_menu .jsxc_muteNotification').text($.t('Mute'));
|
||||
|
||||
if (external !== true) {
|
||||
jsxc.options.set('muteNotification', false);
|
||||
}
|
||||
}
|
||||
};
|
||||
@@ -0,0 +1,169 @@
|
||||
/**
|
||||
* Set some options for the chat.
|
||||
*
|
||||
* @namespace jsxc.options
|
||||
*/
|
||||
jsxc.options = {
|
||||
|
||||
/** name of container application (e.g. owncloud or SOGo) */
|
||||
app_name: 'web applications',
|
||||
|
||||
/** Timeout for the keepalive signal */
|
||||
timeout: 3000,
|
||||
|
||||
/** Timeout for the keepalive signal if the master is busy */
|
||||
busyTimeout: 15000,
|
||||
|
||||
/** OTR options */
|
||||
otr: {
|
||||
enable: true,
|
||||
ERROR_START_AKE: false,
|
||||
debug: false,
|
||||
SEND_WHITESPACE_TAG: true,
|
||||
WHITESPACE_START_AKE: true
|
||||
},
|
||||
|
||||
/** xmpp options */
|
||||
xmpp: {
|
||||
url: null,
|
||||
jid: null,
|
||||
domain: null,
|
||||
password: null,
|
||||
overwrite: false,
|
||||
onlogin: true
|
||||
},
|
||||
|
||||
/** default xmpp priorities */
|
||||
priority: {
|
||||
online: 0,
|
||||
chat: 0,
|
||||
away: 0,
|
||||
xa: 0,
|
||||
dnd: 0
|
||||
},
|
||||
|
||||
/** If all 3 properties are set, the login form is used */
|
||||
loginForm: {
|
||||
/** jquery object from form */
|
||||
form: null,
|
||||
|
||||
/** jquery object from input element which contains the jid */
|
||||
jid: null,
|
||||
|
||||
/** jquery object from input element which contains the password */
|
||||
pass: null,
|
||||
|
||||
/** manipulate JID from input element */
|
||||
preJid: function(jid) {
|
||||
return jid;
|
||||
},
|
||||
|
||||
/**
|
||||
* Action after 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 */
|
||||
logoutElement: null,
|
||||
|
||||
/** How many messages should be logged? */
|
||||
numberOfMsg: 10,
|
||||
|
||||
/** Default language */
|
||||
defaultLang: 'en',
|
||||
|
||||
/** auto language detection */
|
||||
autoLang: true,
|
||||
|
||||
/** Place for roster */
|
||||
rosterAppend: 'body',
|
||||
|
||||
/** Should we use the HTML5 notification API? */
|
||||
notification: true,
|
||||
|
||||
/** duration for notification */
|
||||
popupDuration: 6000,
|
||||
|
||||
/** Absolute path root of JSXC installation */
|
||||
root: '',
|
||||
|
||||
/** Timeout for restore in ms */
|
||||
loginTimeout: 1000 * 60 * 10,
|
||||
|
||||
/**
|
||||
* This function decides wether the roster will be displayed or not if no
|
||||
* connection is found.
|
||||
*/
|
||||
displayRosterMinimized: function() {
|
||||
return false;
|
||||
},
|
||||
|
||||
/** Set to true if you want to hide offline buddies. */
|
||||
hideOffline: false,
|
||||
|
||||
/** Mute notification sound? */
|
||||
muteNotification: false,
|
||||
|
||||
/**
|
||||
* If no avatar is found, this function is called.
|
||||
*
|
||||
* @param jid Jid of that user.
|
||||
* @this {jQuery} Elements to update with probable .jsxc_avatar elements
|
||||
*/
|
||||
defaultAvatar: function(jid) {
|
||||
jsxc.gui.avatarPlaceholder($(this).find('.jsxc_avatar'), jid);
|
||||
},
|
||||
|
||||
/**
|
||||
* Returns permanent saved settings and overwrite default jsxc.options.
|
||||
*
|
||||
* @memberOf jsxc.options
|
||||
* @param username String username
|
||||
* @param password String password
|
||||
* @returns {object} at least xmpp.url
|
||||
*/
|
||||
loadSettings: function() {
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* Call this function to save user settings permanent.
|
||||
*
|
||||
* @memberOf jsxc.options
|
||||
* @param data Holds all data as key/value
|
||||
* @returns {boolean} false if function failes
|
||||
*/
|
||||
saveSettinsPermanent: function() {
|
||||
|
||||
},
|
||||
|
||||
carbons: {
|
||||
/** Enable carbon copies? */
|
||||
enable: false
|
||||
},
|
||||
|
||||
/**
|
||||
* Processes user list.
|
||||
*
|
||||
* @callback getUsers-cb
|
||||
* @param {object} list List of users, key: username, value: alias
|
||||
*/
|
||||
|
||||
/**
|
||||
* Returns a list of usernames and aliases
|
||||
*
|
||||
* @function getUsers
|
||||
* @memberOf jsxc.options
|
||||
* @param {string} search Search token (start with)
|
||||
* @param {getUsers-cb} cb Called with list of users
|
||||
*/
|
||||
getUsers: null
|
||||
};
|
||||
@@ -0,0 +1,462 @@
|
||||
|
||||
/**
|
||||
* @namespace jsxc.otr
|
||||
*/
|
||||
jsxc.otr = {
|
||||
/** list of otr objects */
|
||||
objects: {},
|
||||
|
||||
dsaFallback: null,
|
||||
/**
|
||||
* Handler for otr receive event
|
||||
*
|
||||
* @memberOf jsxc.otr
|
||||
* @param {Object} d
|
||||
* @param {string} d.bid
|
||||
* @param {string} d.msg received message
|
||||
* @param {boolean} d.encrypted True, if msg was encrypted.
|
||||
* @param {boolean} d.forwarded
|
||||
* @param {string} d.stamp timestamp
|
||||
*/
|
||||
receiveMessage: function(d) {
|
||||
var bid = d.bid;
|
||||
|
||||
if (jsxc.otr.objects[bid].msgstate !== OTR.CONST.MSGSTATE_PLAINTEXT) {
|
||||
jsxc.otr.backup(bid);
|
||||
}
|
||||
|
||||
if (jsxc.otr.objects[bid].msgstate !== OTR.CONST.MSGSTATE_PLAINTEXT && !d.encrypted) {
|
||||
jsxc.gui.window.postMessage(bid, 'sys', $.t('Received_an_unencrypted_message') + '. [' + d.msg + ']', d.encrypted, d.forwarded, d.stamp);
|
||||
} else {
|
||||
jsxc.gui.window.postMessage(bid, 'in', d.msg, d.encrypted, d.forwarded, d.stamp);
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Handler for otr send event
|
||||
*
|
||||
* @param {string} jid
|
||||
* @param {string} msg message to be send
|
||||
*/
|
||||
sendMessage: function(jid, msg, uid) {
|
||||
if (jsxc.otr.objects[jsxc.jidToBid(jid)].msgstate !== 0) {
|
||||
jsxc.otr.backup(jsxc.jidToBid(jid));
|
||||
}
|
||||
|
||||
jsxc.xmpp._sendMessage(jid, msg, uid);
|
||||
},
|
||||
|
||||
/**
|
||||
* Create new otr instance
|
||||
*
|
||||
* @param {type} bid
|
||||
* @returns {undefined}
|
||||
*/
|
||||
create: function(bid) {
|
||||
|
||||
if (jsxc.otr.objects.hasOwnProperty(bid)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!jsxc.options.otr.priv) {
|
||||
return;
|
||||
}
|
||||
|
||||
// save list of otr objects
|
||||
var ol = jsxc.storage.getUserItem('otrlist') || [];
|
||||
if (ol.indexOf(bid) < 0) {
|
||||
ol.push(bid);
|
||||
jsxc.storage.setUserItem('otrlist', ol);
|
||||
}
|
||||
|
||||
jsxc.otr.objects[bid] = new OTR(jsxc.options.otr);
|
||||
|
||||
if (jsxc.options.otr.SEND_WHITESPACE_TAG) {
|
||||
jsxc.otr.objects[bid].SEND_WHITESPACE_TAG = true;
|
||||
}
|
||||
|
||||
if (jsxc.options.otr.WHITESPACE_START_AKE) {
|
||||
jsxc.otr.objects[bid].WHITESPACE_START_AKE = true;
|
||||
}
|
||||
|
||||
jsxc.otr.objects[bid].on('status', function(status) {
|
||||
var data = jsxc.storage.getUserItem('buddy', bid);
|
||||
|
||||
if (data === null) {
|
||||
return;
|
||||
}
|
||||
|
||||
switch (status) {
|
||||
case OTR.CONST.STATUS_SEND_QUERY:
|
||||
jsxc.gui.window.postMessage(bid, 'sys', $.t('trying_to_start_private_conversation'));
|
||||
break;
|
||||
case OTR.CONST.STATUS_AKE_SUCCESS:
|
||||
data.fingerprint = jsxc.otr.objects[bid].their_priv_pk.fingerprint();
|
||||
data.msgstate = OTR.CONST.MSGSTATE_ENCRYPTED;
|
||||
|
||||
var msg = (jsxc.otr.objects[bid].trust ? $.t('Verified') : $.t('Unverified')) + ' ' + $.t('private_conversation_started');
|
||||
jsxc.gui.window.postMessage(bid, 'sys', msg);
|
||||
break;
|
||||
case OTR.CONST.STATUS_END_OTR:
|
||||
data.fingerprint = null;
|
||||
|
||||
if (jsxc.otr.objects[bid].msgstate === OTR.CONST.MSGSTATE_PLAINTEXT) {
|
||||
// we abort the private conversation
|
||||
|
||||
data.msgstate = OTR.CONST.MSGSTATE_PLAINTEXT;
|
||||
jsxc.gui.window.postMessage(bid, 'sys', $.t('private_conversation_aborted'));
|
||||
|
||||
} else {
|
||||
// the buddy abort the private conversation
|
||||
|
||||
data.msgstate = OTR.CONST.MSGSTATE_FINISHED;
|
||||
jsxc.gui.window.postMessage(bid, 'sys', $.t('your_buddy_closed_the_private_conversation_you_should_do_the_same'));
|
||||
}
|
||||
break;
|
||||
case OTR.CONST.STATUS_SMP_HANDLE:
|
||||
jsxc.keepBusyAlive();
|
||||
break;
|
||||
}
|
||||
|
||||
jsxc.storage.setUserItem('buddy', bid, data);
|
||||
|
||||
// for encryption and verification state
|
||||
jsxc.gui.update(bid);
|
||||
});
|
||||
|
||||
jsxc.otr.objects[bid].on('smp', function(type, data) {
|
||||
switch (type) {
|
||||
case 'question': // verification request received
|
||||
jsxc.gui.window.postMessage(bid, 'sys', $.t('Authentication_request_received'));
|
||||
|
||||
if ($('#jsxc_dialog').length > 0) {
|
||||
jsxc.otr.objects[bid].sm.abort();
|
||||
break;
|
||||
}
|
||||
|
||||
jsxc.otr.onSmpQuestion(bid, data);
|
||||
jsxc.storage.setUserItem('smp_' + bid, {
|
||||
data: data || null
|
||||
});
|
||||
|
||||
break;
|
||||
case 'trust': // verification completed
|
||||
jsxc.otr.objects[bid].trust = data;
|
||||
jsxc.storage.updateUserItem('buddy', bid, 'trust', data);
|
||||
jsxc.otr.backup(bid);
|
||||
jsxc.gui.update(bid);
|
||||
|
||||
if (data) {
|
||||
jsxc.gui.window.postMessage(bid, 'sys', $.t('conversation_is_now_verified'));
|
||||
} else {
|
||||
jsxc.gui.window.postMessage(bid, 'sys', $.t('authentication_failed'));
|
||||
}
|
||||
jsxc.storage.removeUserItem('smp_' + bid);
|
||||
jsxc.gui.dialog.close();
|
||||
break;
|
||||
case 'abort':
|
||||
jsxc.gui.window.postMessage(bid, 'sys', $.t('Authentication_aborted'));
|
||||
break;
|
||||
default:
|
||||
jsxc.debug('[OTR] sm callback: Unknown type: ' + type);
|
||||
}
|
||||
});
|
||||
|
||||
// Receive message
|
||||
jsxc.otr.objects[bid].on('ui', function(msg, encrypted, meta) {
|
||||
jsxc.otr.receiveMessage({
|
||||
bid: bid,
|
||||
msg: msg,
|
||||
encrypted: encrypted === true,
|
||||
stamp: meta.stamp,
|
||||
forwarded: meta.forwarded
|
||||
});
|
||||
});
|
||||
|
||||
// Send message
|
||||
jsxc.otr.objects[bid].on('io', function(msg, uid) {
|
||||
var jid = jsxc.gui.window.get(bid).data('jid') || jsxc.otr.objects[bid].jid;
|
||||
|
||||
jsxc.otr.objects[bid].jid = jid;
|
||||
|
||||
jsxc.otr.sendMessage(jid, msg, uid);
|
||||
});
|
||||
|
||||
jsxc.otr.objects[bid].on('error', function(err) {
|
||||
// Handle this case in jsxc.otr.receiveMessage
|
||||
if (err !== 'Received an unencrypted message.') {
|
||||
jsxc.gui.window.postMessage(bid, 'sys', '[OTR] ' + $.t(err));
|
||||
}
|
||||
|
||||
jsxc.error('[OTR] ' + err);
|
||||
});
|
||||
|
||||
jsxc.otr.restore(bid);
|
||||
},
|
||||
|
||||
/**
|
||||
* show verification dialog with related part (secret or question)
|
||||
*
|
||||
* @param {type} bid
|
||||
* @param {string} [data]
|
||||
* @returns {undefined}
|
||||
*/
|
||||
onSmpQuestion: function(bid, data) {
|
||||
jsxc.gui.showVerification(bid);
|
||||
|
||||
$('#jsxc_dialog select').prop('selectedIndex', (data ? 2 : 3)).change();
|
||||
$('#jsxc_dialog > div:eq(0)').hide();
|
||||
|
||||
if (data) {
|
||||
$('#jsxc_dialog > div:eq(2)').find('#jsxc_quest').val(data).prop('disabled', true);
|
||||
$('#jsxc_dialog > div:eq(2)').find('.creation').text('Answer');
|
||||
$('#jsxc_dialog > div:eq(2)').find('.jsxc_explanation').text($.t('your_buddy_is_attempting_to_determine_') + ' ' + $.t('to_authenticate_to_your_buddy') + $.t('enter_the_answer_and_click_answer'));
|
||||
} else {
|
||||
$('#jsxc_dialog > div:eq(3)').find('.jsxc_explanation').text($.t('your_buddy_is_attempting_to_determine_') + ' ' + $.t('to_authenticate_to_your_buddy') + $.t('enter_the_secret'));
|
||||
}
|
||||
|
||||
$('#jsxc_dialog .jsxc_close').click(function() {
|
||||
jsxc.storage.removeUserItem('smp_' + bid);
|
||||
|
||||
if (jsxc.master) {
|
||||
jsxc.otr.objects[bid].sm.abort();
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
/**
|
||||
* Send verification request to buddy
|
||||
*
|
||||
* @param {string} bid
|
||||
* @param {string} sec secret
|
||||
* @param {string} [quest] question
|
||||
* @returns {undefined}
|
||||
*/
|
||||
sendSmpReq: function(bid, sec, quest) {
|
||||
jsxc.keepBusyAlive();
|
||||
|
||||
jsxc.otr.objects[bid].smpSecret(sec, quest || '');
|
||||
},
|
||||
|
||||
/**
|
||||
* Toggle encryption state
|
||||
*
|
||||
* @param {type} bid
|
||||
* @returns {undefined}
|
||||
*/
|
||||
toggleTransfer: function(bid) {
|
||||
if (jsxc.storage.getUserItem('buddy', bid).msgstate === 0) {
|
||||
jsxc.otr.goEncrypt(bid);
|
||||
} else {
|
||||
jsxc.otr.goPlain(bid);
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Send request to encrypt the session
|
||||
*
|
||||
* @param {type} bid
|
||||
* @returns {undefined}
|
||||
*/
|
||||
goEncrypt: function(bid) {
|
||||
if (jsxc.master) {
|
||||
jsxc.otr.objects[bid].sendQueryMsg();
|
||||
} else {
|
||||
jsxc.storage.updateUserItem('buddy', bid, 'transferReq', 1);
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Abort encryptet session
|
||||
*
|
||||
* @param {type} bid
|
||||
* @param cb callback
|
||||
* @returns {undefined}
|
||||
*/
|
||||
goPlain: function(bid, cb) {
|
||||
if (jsxc.master) {
|
||||
jsxc.otr.objects[bid].endOtr.call(jsxc.otr.objects[bid], cb);
|
||||
jsxc.otr.objects[bid].init.call(jsxc.otr.objects[bid]);
|
||||
|
||||
jsxc.otr.backup(bid);
|
||||
} else {
|
||||
jsxc.storage.updateUserItem('buddy', bid, 'transferReq', 0);
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Backups otr session
|
||||
*
|
||||
* @param {string} bid
|
||||
*/
|
||||
backup: function(bid) {
|
||||
var o = jsxc.otr.objects[bid]; // otr object
|
||||
var r = {}; // return value
|
||||
|
||||
if (o === null) {
|
||||
return;
|
||||
}
|
||||
|
||||
// all variables which should be saved
|
||||
var savekey = [ 'jid', 'our_instance_tag', 'msgstate', 'authstate', 'fragment', 'their_y', 'their_old_y', 'their_keyid', 'their_instance_tag', 'our_dh', 'our_old_dh', 'our_keyid', 'sessKeys', 'storedMgs', 'oldMacKeys', 'trust', 'transmittedRS', 'ssid', 'receivedPlaintext', 'authstate', 'send_interval' ];
|
||||
|
||||
var i;
|
||||
for (i = 0; i < savekey.length; i++) {
|
||||
r[savekey[i]] = JSON.stringify(o[savekey[i]]);
|
||||
}
|
||||
|
||||
if (o.their_priv_pk !== null) {
|
||||
r.their_priv_pk = JSON.stringify(o.their_priv_pk.packPublic());
|
||||
}
|
||||
|
||||
if (o.ake.otr_version && o.ake.otr_version !== '') {
|
||||
r.otr_version = JSON.stringify(o.ake.otr_version);
|
||||
}
|
||||
|
||||
jsxc.storage.setUserItem('otr', bid, r);
|
||||
},
|
||||
|
||||
/**
|
||||
* Restore old otr session
|
||||
*
|
||||
* @param {string} bid
|
||||
*/
|
||||
restore: function(bid) {
|
||||
var o = jsxc.otr.objects[bid];
|
||||
var d = jsxc.storage.getUserItem('otr', bid);
|
||||
|
||||
if (o !== null || d !== null) {
|
||||
var key;
|
||||
for (key in d) {
|
||||
if (d.hasOwnProperty(key)) {
|
||||
var val = JSON.parse(d[key]);
|
||||
if (key === 'their_priv_pk' && val !== null) {
|
||||
val = DSA.parsePublic(val);
|
||||
}
|
||||
if (key === 'otr_version' && val !== null) {
|
||||
o.ake.otr_version = val;
|
||||
} else {
|
||||
o[key] = val;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
jsxc.otr.objects[bid] = o;
|
||||
|
||||
if (o.msgstate === 1 && o.their_priv_pk !== null) {
|
||||
o._smInit.call(jsxc.otr.objects[bid]);
|
||||
}
|
||||
}
|
||||
|
||||
jsxc.otr.enable(bid);
|
||||
},
|
||||
|
||||
/**
|
||||
* Create or load DSA key
|
||||
*
|
||||
* @returns {unresolved}
|
||||
*/
|
||||
createDSA: function() {
|
||||
if (jsxc.options.otr.priv) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (jsxc.storage.getUserItem('key') === null) {
|
||||
var msg = $.t('Creating_your_private_key_');
|
||||
var worker = null;
|
||||
|
||||
if (Worker) {
|
||||
// try to create web-worker
|
||||
|
||||
try {
|
||||
worker = new Worker(jsxc.options.root + '/lib/otr/build/dsa-webworker.js');
|
||||
} catch (err) {
|
||||
jsxc.warn('Couldn\'t create web-worker.', err);
|
||||
}
|
||||
}
|
||||
|
||||
jsxc.otr.dsaFallback = (worker === null);
|
||||
|
||||
if (!jsxc.otr.dsaFallback) {
|
||||
// create DSA key in background
|
||||
|
||||
jsxc._onMaster();
|
||||
|
||||
worker.onmessage = function(e) {
|
||||
var type = e.data.type;
|
||||
var val = e.data.val;
|
||||
|
||||
if (type === 'debug') {
|
||||
jsxc.debug(val);
|
||||
} else if (type === 'data') {
|
||||
jsxc.otr.DSAready(DSA.parsePrivate(val));
|
||||
}
|
||||
};
|
||||
|
||||
// start worker
|
||||
worker.postMessage({
|
||||
imports: [ jsxc.options.root + '/lib/otr/vendor/salsa20.js', jsxc.options.root + '/lib/otr/vendor/bigint.js', jsxc.options.root + '/lib/otr/vendor/crypto.js', jsxc.options.root + '/lib/otr/vendor/eventemitter.js', jsxc.options.root + '/lib/otr/lib/const.js', jsxc.options.root + '/lib/otr/lib/helpers.js', jsxc.options.root + '/lib/otr/lib/dsa.js' ],
|
||||
seed: BigInt.getSeed(),
|
||||
debug: true
|
||||
});
|
||||
|
||||
} else {
|
||||
// fallback
|
||||
|
||||
jsxc.gui.dialog.open(jsxc.gui.template.get('waitAlert', null, msg), {
|
||||
noClose: true
|
||||
});
|
||||
|
||||
jsxc.debug('DSA key creation started.');
|
||||
|
||||
// wait until the wait alert is opened
|
||||
setTimeout(function() {
|
||||
var dsa = new DSA();
|
||||
jsxc.otr.DSAready(dsa);
|
||||
}, 500);
|
||||
}
|
||||
} else {
|
||||
jsxc.debug('DSA key loaded');
|
||||
jsxc.options.otr.priv = DSA.parsePrivate(jsxc.storage.getUserItem('key'));
|
||||
|
||||
jsxc.otr._createDSA();
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Ending of createDSA().
|
||||
*/
|
||||
_createDSA: function() {
|
||||
|
||||
jsxc.storage.setUserItem('priv_fingerprint', jsxc.options.otr.priv.fingerprint());
|
||||
|
||||
if (jsxc.otr.dsaFallback !== false) {
|
||||
jsxc._onMaster();
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Ending of DSA key generation.
|
||||
*
|
||||
* @param {DSA} dsa DSA object
|
||||
*/
|
||||
DSAready: function(dsa) {
|
||||
jsxc.storage.setUserItem('key', dsa.packPrivate());
|
||||
jsxc.options.otr.priv = dsa;
|
||||
|
||||
// close wait alert
|
||||
if (jsxc.otr.dsaFallback) {
|
||||
jsxc.gui.dialog.close();
|
||||
} else {
|
||||
$.each(jsxc.storage.getUserItem('windowlist'), function(index, val) {
|
||||
jsxc.otr.create(val);
|
||||
});
|
||||
}
|
||||
|
||||
jsxc.otr._createDSA();
|
||||
},
|
||||
|
||||
enable: function(bid) {
|
||||
jsxc.gui.window.get(bid).find('.jsxc_otr').removeClass('jsxc_disabled');
|
||||
}
|
||||
};
|
||||
@@ -0,0 +1,612 @@
|
||||
|
||||
|
||||
/**
|
||||
* Handle long-live data
|
||||
*
|
||||
* @namespace jsxc.storage
|
||||
*/
|
||||
jsxc.storage = {
|
||||
/**
|
||||
* Prefix for localstorage
|
||||
*
|
||||
* @privat
|
||||
*/
|
||||
PREFIX: 'jsxc',
|
||||
|
||||
SEP: ':',
|
||||
|
||||
/**
|
||||
* @param {type} uk Should we generate a user prefix?
|
||||
* @returns {String} prefix
|
||||
* @memberOf jsxc.storage
|
||||
*/
|
||||
getPrefix: function(uk) {
|
||||
var self = jsxc.storage;
|
||||
|
||||
return self.PREFIX + self.SEP + ((uk && jsxc.bid) ? jsxc.bid + self.SEP : '');
|
||||
},
|
||||
|
||||
/**
|
||||
* Save item to storage
|
||||
*
|
||||
* @function
|
||||
* @param {String} key variablename
|
||||
* @param {Object} value value
|
||||
* @param {String} uk Userkey? Should we add the bid as prefix?
|
||||
*/
|
||||
setItem: function(key, value, uk) {
|
||||
|
||||
// Workaround for non-conform browser
|
||||
if (jsxc.storageNotConform > 0 && key !== 'rid' && key !== 'lastActivity') {
|
||||
if (jsxc.storageNotConform > 1 && jsxc.toSNC === null) {
|
||||
jsxc.toSNC = window.setTimeout(function() {
|
||||
jsxc.storageNotConform = 0;
|
||||
jsxc.storage.setItem('storageNotConform', 0);
|
||||
}, 1000);
|
||||
}
|
||||
|
||||
jsxc.ls.push(JSON.stringify({
|
||||
key: key,
|
||||
value: value
|
||||
}));
|
||||
}
|
||||
|
||||
if (typeof (value) === 'object') {
|
||||
value = JSON.stringify(value);
|
||||
}
|
||||
|
||||
localStorage.setItem(jsxc.storage.getPrefix(uk) + key, value);
|
||||
},
|
||||
|
||||
setUserItem: function(type, key, value) {
|
||||
var self = jsxc.storage;
|
||||
|
||||
if (arguments.length === 2) {
|
||||
value = key;
|
||||
key = type;
|
||||
type = '';
|
||||
} else if (arguments.length === 3) {
|
||||
key = type + self.SEP + key;
|
||||
}
|
||||
|
||||
return jsxc.storage.setItem(key, value, true);
|
||||
},
|
||||
|
||||
/**
|
||||
* Load item from storage
|
||||
*
|
||||
* @function
|
||||
* @param {String} key variablename
|
||||
* @param {String} uk Userkey? Should we add the bid as prefix?
|
||||
*/
|
||||
getItem: function(key, uk) {
|
||||
key = jsxc.storage.getPrefix(uk) + key;
|
||||
|
||||
var value = localStorage.getItem(key);
|
||||
try {
|
||||
return JSON.parse(value);
|
||||
} catch (e) {
|
||||
return value;
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Get a user item from storage.
|
||||
*
|
||||
* @param key
|
||||
* @returns user item
|
||||
*/
|
||||
getUserItem: function(type, key) {
|
||||
var self = jsxc.storage;
|
||||
|
||||
if (arguments.length === 1) {
|
||||
key = type;
|
||||
} else if (arguments.length === 2) {
|
||||
key = type + self.SEP + key;
|
||||
}
|
||||
|
||||
return jsxc.storage.getItem(key, true);
|
||||
},
|
||||
|
||||
/**
|
||||
* Remove item from storage
|
||||
*
|
||||
* @function
|
||||
* @param {String} key variablename
|
||||
* @param {String} uk Userkey? Should we add the bid as prefix?
|
||||
*/
|
||||
removeItem: function(key, uk) {
|
||||
|
||||
// Workaround for non-conform browser
|
||||
if (jsxc.storageNotConform && key !== 'rid' && key !== 'lastActivity') {
|
||||
jsxc.ls.push(JSON.stringify({
|
||||
key: jsxc.storage.prefix + key,
|
||||
value: ''
|
||||
}));
|
||||
}
|
||||
|
||||
localStorage.removeItem(jsxc.storage.getPrefix(uk) + key);
|
||||
},
|
||||
|
||||
/**
|
||||
* Remove user item from storage.
|
||||
*
|
||||
* @param key
|
||||
*/
|
||||
removeUserItem: function(type, key) {
|
||||
var self = jsxc.storage;
|
||||
|
||||
if (arguments.length === 1) {
|
||||
key = type;
|
||||
} else if (arguments.length === 2) {
|
||||
key = type + self.SEP + key;
|
||||
}
|
||||
|
||||
jsxc.storage.removeItem(key, true);
|
||||
},
|
||||
|
||||
/**
|
||||
* Updates value of a variable in a saved object.
|
||||
*
|
||||
* @function
|
||||
* @param {String} key variablename
|
||||
* @param {String|object} variable variablename in object or object with
|
||||
* variable/key pairs
|
||||
* @param {Object} [value] value
|
||||
* @param {String} uk Userkey? Should we add the bid as prefix?
|
||||
*/
|
||||
updateItem: function(key, variable, value, uk) {
|
||||
|
||||
var data = jsxc.storage.getItem(key, uk) || {};
|
||||
|
||||
if (typeof (variable) === 'object') {
|
||||
|
||||
$.each(variable, function(key, val) {
|
||||
if (typeof (data[key]) === 'undefined') {
|
||||
jsxc.debug('Variable ' + key + ' doesn\'t exist in ' + variable + '. It was created.');
|
||||
}
|
||||
|
||||
data[key] = val;
|
||||
});
|
||||
} else {
|
||||
if (typeof (data[variable]) === 'undefined') {
|
||||
jsxc.debug('Variable ' + variable + ' doesn\'t exist. It was created.');
|
||||
}
|
||||
|
||||
data[variable] = value;
|
||||
}
|
||||
|
||||
jsxc.storage.setItem(key, data, uk);
|
||||
},
|
||||
|
||||
/**
|
||||
* Updates value of a variable in a saved user object.
|
||||
*
|
||||
* @param {String} key variablename
|
||||
* @param {String|object} variable variablename in object or object with
|
||||
* variable/key pairs
|
||||
* @param {Object} [value] value
|
||||
*/
|
||||
updateUserItem: function(type, key, variable, value) {
|
||||
var self = jsxc.storage;
|
||||
|
||||
if (arguments.length === 4 || (arguments.length === 3 && typeof variable === 'object')) {
|
||||
key = type + self.SEP + key;
|
||||
} else {
|
||||
value = variable;
|
||||
variable = key;
|
||||
key = type;
|
||||
}
|
||||
|
||||
return jsxc.storage.updateItem(key, variable, value, true);
|
||||
},
|
||||
|
||||
/**
|
||||
* Inkrements value
|
||||
*
|
||||
* @function
|
||||
* @param {String} key variablename
|
||||
* @param {String} uk Userkey? Should we add the bid as prefix?
|
||||
*/
|
||||
ink: function(key, uk) {
|
||||
|
||||
jsxc.storage.setItem(key, Number(jsxc.storage.getItem(key, uk)) + 1, uk);
|
||||
},
|
||||
|
||||
/**
|
||||
* Remove element from array or object
|
||||
*
|
||||
* @param {string} key name of array or object
|
||||
* @param {string} name name of element in array or object
|
||||
* @param {String} uk Userkey? Should we add the bid as prefix?
|
||||
* @returns {undefined}
|
||||
*/
|
||||
removeElement: function(key, name, uk) {
|
||||
var item = jsxc.storage.getItem(key, uk);
|
||||
|
||||
if ($.isArray(item)) {
|
||||
item = $.grep(item, function(e) {
|
||||
return e !== name;
|
||||
});
|
||||
} else if (typeof (item) === 'object') {
|
||||
delete item[name];
|
||||
}
|
||||
|
||||
jsxc.storage.setItem(key, item, uk);
|
||||
},
|
||||
|
||||
removeUserElement: function(type, key, name) {
|
||||
var self = jsxc.storage;
|
||||
|
||||
if (arguments.length === 2) {
|
||||
name = key;
|
||||
key = type;
|
||||
} else if (arguments.length === 3) {
|
||||
key = type + self.SEP + key;
|
||||
}
|
||||
|
||||
return jsxc.storage.removeElement(key, name, true);
|
||||
},
|
||||
|
||||
/**
|
||||
* Triggered if changes are recognized
|
||||
*
|
||||
* @function
|
||||
* @param {event} e Storageevent
|
||||
* @param {String} e.key Keyname which triggered event
|
||||
* @param {Object} e.oldValue Old Value for key
|
||||
* @param {Object} e.newValue New Value for key
|
||||
* @param {String} e.url
|
||||
*/
|
||||
onStorage: function(e) {
|
||||
|
||||
// skip
|
||||
if (e.key === jsxc.storage.PREFIX + jsxc.storage.SEP + 'rid' || e.key === jsxc.storage.PREFIX + jsxc.storage.SEP + 'lastActivity') {
|
||||
return;
|
||||
}
|
||||
|
||||
var re = new RegExp('^' + jsxc.storage.PREFIX + jsxc.storage.SEP + '(?:[^' + jsxc.storage.SEP + ']+@[^' + jsxc.storage.SEP + ']+' + jsxc.storage.SEP + ')?(.*)', 'i');
|
||||
var key = e.key.replace(re, '$1');
|
||||
|
||||
// Workaround for non-conform browser: Triggered event on every page
|
||||
// (own)
|
||||
if (jsxc.storageNotConform > 0 && jsxc.ls.length > 0) {
|
||||
|
||||
var val = e.newValue;
|
||||
try {
|
||||
val = JSON.parse(val);
|
||||
} catch (err) {
|
||||
}
|
||||
|
||||
var index = $.inArray(JSON.stringify({
|
||||
key: key,
|
||||
value: val
|
||||
}), jsxc.ls);
|
||||
|
||||
if (index >= 0) {
|
||||
|
||||
// confirm that the storage event is not fired regularly
|
||||
if (jsxc.storageNotConform > 1) {
|
||||
window.clearTimeout(jsxc.toSNC);
|
||||
jsxc.storageNotConform = 1;
|
||||
jsxc.storage.setItem('storageNotConform', 1);
|
||||
}
|
||||
|
||||
jsxc.ls.splice(index, 1);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// Workaround for non-conform browser
|
||||
if (e.oldValue === e.newValue) {
|
||||
return;
|
||||
}
|
||||
|
||||
var n, o;
|
||||
var bid = key.replace(new RegExp('[^' + jsxc.storage.SEP + ']+' + jsxc.storage.SEP + '(.*)', 'i'), '$1');
|
||||
|
||||
// react if someone ask, if there is a master
|
||||
if (jsxc.master && key === 'alive') {
|
||||
jsxc.debug('Master request.');
|
||||
|
||||
jsxc.storage.ink('alive');
|
||||
return;
|
||||
}
|
||||
|
||||
// master alive
|
||||
if (!jsxc.master && (key === 'alive' || key === 'alive_busy') && !jsxc.triggeredFromElement) {
|
||||
|
||||
// reset timeout
|
||||
window.clearTimeout(jsxc.to);
|
||||
jsxc.to = window.setTimeout(jsxc.checkMaster, ((key === 'alive') ? jsxc.options.timeout : jsxc.options.busyTimeout) + jsxc.random(60));
|
||||
|
||||
// only call the first time
|
||||
if (!jsxc.role_allocation) {
|
||||
jsxc.onSlave();
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if (key.match(/^notices/)) {
|
||||
jsxc.notice.load();
|
||||
}
|
||||
|
||||
if (key.match(/^presence/)) {
|
||||
jsxc.gui.changePresence(e.newValue, true);
|
||||
}
|
||||
|
||||
if (key.match(/^options/) && e.newValue) {
|
||||
n = JSON.parse(e.newValue);
|
||||
|
||||
if (typeof n.muteNotification !== 'undefined' && n.muteNotification) {
|
||||
jsxc.notification.muteSound(true);
|
||||
} else {
|
||||
jsxc.notification.unmuteSound(true);
|
||||
}
|
||||
}
|
||||
|
||||
if (key.match(/^hidden/)) {
|
||||
if (jsxc.master) {
|
||||
clearTimeout(jsxc.toNotification);
|
||||
} else {
|
||||
jsxc.isHidden();
|
||||
}
|
||||
}
|
||||
|
||||
if (key.match(/^focus/)) {
|
||||
if (jsxc.master) {
|
||||
clearTimeout(jsxc.toNotification);
|
||||
} else {
|
||||
jsxc.hasFocus();
|
||||
}
|
||||
}
|
||||
|
||||
if (key.match(new RegExp('^chat' + jsxc.storage.SEP))) {
|
||||
|
||||
var posts = JSON.parse(e.newValue);
|
||||
var data, el;
|
||||
|
||||
while (posts.length > 0) {
|
||||
data = posts.pop();
|
||||
el = $('#' + data.uid);
|
||||
|
||||
if (el.length === 0) {
|
||||
if (jsxc.master && data.direction === 'out') {
|
||||
jsxc.xmpp.sendMessage(bid, data.msg, data.uid);
|
||||
}
|
||||
|
||||
jsxc.gui.window._postMessage(bid, data);
|
||||
} else if (data.received) {
|
||||
el.addClass('jsxc_received');
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
if (key.match(new RegExp('^window' + jsxc.storage.SEP))) {
|
||||
|
||||
if (!e.newValue) {
|
||||
jsxc.gui.window._close(bid);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!e.oldValue) {
|
||||
jsxc.gui.window.open(bid);
|
||||
return;
|
||||
}
|
||||
|
||||
n = JSON.parse(e.newValue);
|
||||
|
||||
if (n.minimize) {
|
||||
jsxc.gui.window._hide(bid);
|
||||
} else {
|
||||
jsxc.gui.window._show(bid);
|
||||
}
|
||||
|
||||
jsxc.gui.window.setText(bid, n.text);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if (key.match(new RegExp('^smp' + jsxc.storage.SEP))) {
|
||||
|
||||
if (!e.newValue) {
|
||||
|
||||
jsxc.gui.dialog.close();
|
||||
|
||||
if (jsxc.master) {
|
||||
jsxc.otr.objects[bid].sm.abort();
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
n = JSON.parse(e.newValue);
|
||||
|
||||
if (typeof (n.data) !== 'undefined') {
|
||||
|
||||
jsxc.otr.onSmpQuestion(bid, n.data);
|
||||
|
||||
} else if (jsxc.master && n.sec) {
|
||||
jsxc.gui.dialog.close();
|
||||
|
||||
jsxc.otr.sendSmpReq(bid, n.sec, n.quest);
|
||||
}
|
||||
}
|
||||
|
||||
if (!jsxc.master && key.match(new RegExp('^buddy' + jsxc.storage.SEP))) {
|
||||
|
||||
if (!e.newValue) {
|
||||
jsxc.gui.roster.purge(bid);
|
||||
return;
|
||||
}
|
||||
if (!e.oldValue) {
|
||||
jsxc.gui.roster.add(bid);
|
||||
return;
|
||||
}
|
||||
|
||||
n = JSON.parse(e.newValue);
|
||||
o = JSON.parse(e.oldValue);
|
||||
|
||||
jsxc.gui.update(bid);
|
||||
|
||||
if (o.status !== n.status || o.sub !== n.sub) {
|
||||
jsxc.gui.roster.reorder(bid);
|
||||
}
|
||||
}
|
||||
|
||||
if (jsxc.master && key.match(new RegExp('^deletebuddy' + jsxc.storage.SEP)) && e.newValue) {
|
||||
n = JSON.parse(e.newValue);
|
||||
|
||||
jsxc.xmpp.removeBuddy(n.jid);
|
||||
jsxc.storage.removeUserItem(key);
|
||||
}
|
||||
|
||||
if (jsxc.master && key.match(new RegExp('^buddy' + jsxc.storage.SEP))) {
|
||||
|
||||
n = JSON.parse(e.newValue);
|
||||
o = JSON.parse(e.oldValue);
|
||||
|
||||
if (o.transferReq !== n.transferReq) {
|
||||
jsxc.storage.updateUserItem('buddy', bid, 'transferReq', -1);
|
||||
|
||||
if (n.transferReq === 0) {
|
||||
jsxc.otr.goPlain(bid);
|
||||
}
|
||||
if (n.transferReq === 1) {
|
||||
jsxc.otr.goEncrypt(bid);
|
||||
}
|
||||
}
|
||||
|
||||
if (o.name !== n.name) {
|
||||
jsxc.gui.roster._rename(bid, n.name);
|
||||
}
|
||||
}
|
||||
|
||||
// logout
|
||||
if (key === 'sid') {
|
||||
if (!e.newValue) {
|
||||
// if (jsxc.master && jsxc.xmpp.conn) {
|
||||
// jsxc.xmpp.conn.disconnect();
|
||||
// jsxc.triggeredFromElement = true;
|
||||
// }
|
||||
jsxc.xmpp.logout();
|
||||
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
if (key === 'friendReq') {
|
||||
n = JSON.parse(e.newValue);
|
||||
|
||||
if (jsxc.master && n.approve >= 0) {
|
||||
jsxc.xmpp.resFriendReq(n.jid, n.approve);
|
||||
}
|
||||
}
|
||||
|
||||
if (jsxc.master && key.match(new RegExp('^add' + jsxc.storage.SEP))) {
|
||||
n = JSON.parse(e.newValue);
|
||||
|
||||
jsxc.xmpp.addBuddy(n.username, n.alias);
|
||||
}
|
||||
|
||||
if (key === 'roster') {
|
||||
jsxc.gui.roster.toggle();
|
||||
}
|
||||
|
||||
if (jsxc.master && key.match(new RegExp('^vcard' + jsxc.storage.SEP)) && e.newValue !== null && e.newValue.match(/^request:/)) {
|
||||
|
||||
jsxc.xmpp.loadVcard(bid, function(stanza) {
|
||||
jsxc.storage.setUserItem('vcard', bid, {
|
||||
state: 'success',
|
||||
data: $('<div>').append(stanza).html()
|
||||
});
|
||||
}, function() {
|
||||
jsxc.storage.setUserItem('vcard', bid, {
|
||||
state: 'error'
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
if (!jsxc.master && key.match(new RegExp('^vcard' + jsxc.storage.SEP)) && e.newValue !== null && !e.newValue.match(/^request:/)) {
|
||||
n = JSON.parse(e.newValue);
|
||||
|
||||
if (typeof n.state !== 'undefined') {
|
||||
$(document).trigger('loaded.vcard.jsxc', n);
|
||||
}
|
||||
|
||||
jsxc.storage.removeUserItem('vcard', bid);
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Save message to storage.
|
||||
*
|
||||
* @memberOf jsxc.storage
|
||||
* @param bid
|
||||
* @param direction
|
||||
* @param msg
|
||||
* @param encrypted
|
||||
* @param forwarded
|
||||
* @param sender
|
||||
* @return post
|
||||
*/
|
||||
saveMessage: function(bid, direction, msg, encrypted, forwarded, stamp, sender) {
|
||||
var chat = jsxc.storage.getUserItem('chat', bid) || [];
|
||||
|
||||
var uid = new Date().getTime() + ':msg';
|
||||
|
||||
if (chat.length > jsxc.options.get('numberOfMsg')) {
|
||||
chat.pop();
|
||||
}
|
||||
|
||||
var post = {
|
||||
direction: direction,
|
||||
msg: msg,
|
||||
uid: uid.replace(/:/, '-'),
|
||||
received: false,
|
||||
encrypted: encrypted || false,
|
||||
forwarded: forwarded || false,
|
||||
stamp: stamp || new Date().getTime(),
|
||||
sender: sender
|
||||
};
|
||||
|
||||
chat.unshift(post);
|
||||
jsxc.storage.setUserItem('chat', bid, chat);
|
||||
|
||||
return post;
|
||||
},
|
||||
|
||||
/**
|
||||
* Save or update buddy data.
|
||||
*
|
||||
* @memberOf jsxc.storage
|
||||
* @param bid
|
||||
* @param data
|
||||
* @returns {String} Updated or created
|
||||
*/
|
||||
saveBuddy: function(bid, data) {
|
||||
|
||||
if (jsxc.storage.getUserItem('buddy', bid)) {
|
||||
jsxc.storage.updateUserItem('buddy', bid, data);
|
||||
|
||||
return 'updated';
|
||||
}
|
||||
|
||||
jsxc.storage.setUserItem('buddy', bid, $.extend({
|
||||
jid: '',
|
||||
name: '',
|
||||
status: 0,
|
||||
sub: 'none',
|
||||
msgstate: 0,
|
||||
transferReq: -1,
|
||||
trust: false,
|
||||
fingerprint: null,
|
||||
res: [],
|
||||
type: 'chat'
|
||||
}, data));
|
||||
|
||||
return 'created';
|
||||
}
|
||||
};
|
||||
@@ -1,14 +1,13 @@
|
||||
/* global jsxc, Strophe, SDPUtil, getUserMediaWithConstraints, setupRTC, jQuery, MediaStreamTrack */
|
||||
/* global SDPUtil, getUserMediaWithConstraints, setupRTC, MediaStreamTrack, RTC, RTCPeerconnection */
|
||||
/* jshint -W020 */
|
||||
|
||||
var RTC = null, RTCPeerconnection = null;
|
||||
|
||||
jsxc.gui.template.incomingCall = '<h3>%%Incoming_call%%</h3>\
|
||||
<p>%%Do_you_want_to_accept_the_call_from%% {{bid_name}}?</p>\
|
||||
jsxc.gui.template.incomingCall = '<h3 data-i18n="Incoming_call"></h3>\
|
||||
<p><span data-i18n="Do_you_want_to_accept_the_call_from"></span> {{bid_name}}?</p>\
|
||||
<p class="jsxc_right">\
|
||||
<a href="#" class="button jsxc_reject">%%Reject%%</a> <a href="#" class="button creation jsxc_accept">%%Accept%%</a>\
|
||||
<a href="#" class="button jsxc_reject" data-i18n="Reject"></a> <a href="#" class="button creation jsxc_accept" data-i18n="Accept"></a>\
|
||||
</p>';
|
||||
|
||||
jsxc.gui.template.allowMediaAccess = '<p>%%Please_allow_access_to_microphone_and_camera%%</p>';
|
||||
jsxc.gui.template.allowMediaAccess = '<p data-i18n="Please_allow_access_to_microphone_and_camera"></p>';
|
||||
|
||||
jsxc.gui.template.videoWindow = '<div class="jsxc_webrtc">\
|
||||
<div class="jsxc_chatarea">\
|
||||
@@ -29,22 +28,22 @@ jsxc.gui.template.videoWindow = '<div class="jsxc_webrtc">\
|
||||
<div class="jsxc_noRemoteVideo">\
|
||||
<div>\
|
||||
<div></div>\
|
||||
<p>%%No_video_signal%%</p>\
|
||||
<p data-i18n="No_video_signal"></p>\
|
||||
<div></div>\
|
||||
</div>\
|
||||
</div>\
|
||||
</div>\
|
||||
<div class="jsxc_controlbar">\
|
||||
<button type="button" class="jsxc_hangUp">%%hang_up%%</button>\
|
||||
<button type="button" class="jsxc_hangUp" data-i18n="hang_up"></button>\
|
||||
<input type="range" class="jsxc_volume" min="0.0" max="1.0" step="0.05" value="0.5" />\
|
||||
<div class="jsxc_buttongroup">\
|
||||
<button type="button" class="jsxc_snapshot">%%snapshot%%</button><button type="button" class="jsxc_snapshots">▼</button>\
|
||||
<button type="button" class="jsxc_snapshot" data-i18n="snapshot"></button><button type="button" class="jsxc_snapshots">▼</button>\
|
||||
</div>\
|
||||
<!-- <button type="button" class="jsxc_mute_local">%%mute_my_audio%%</button>\
|
||||
<button type="button" class="jsxc_pause_local">%%pause_my_video%%</button> --> \
|
||||
<button type="button" class="jsxc_showchat">%%chat%%</button>\
|
||||
<button type="button" class="jsxc_fullscreen">%%fullscreen%%</button>\
|
||||
<button type="button" class="jsxc_info">%%Info%%</button>\
|
||||
<!-- <button type="button" class="jsxc_mute_local" data-i18n="mute_my_audio"></button>\
|
||||
<button type="button" class="jsxc_pause_local" data-i18n="pause_my_video"></button> --> \
|
||||
<button type="button" class="jsxc_showchat" data-i18n="chat"></button>\
|
||||
<button type="button" class="jsxc_fullscreen" data-i18n="fullscreen"></button>\
|
||||
<button type="button" class="jsxc_info" data-i18n="Info"></button>\
|
||||
</div>\
|
||||
<div class="jsxc_multi">\
|
||||
<div class="jsxc_snapshotbar">\
|
||||
@@ -57,9 +56,6 @@ jsxc.gui.template.videoWindow = '<div class="jsxc_webrtc">\
|
||||
</div>\
|
||||
</div>';
|
||||
|
||||
(function($) {
|
||||
"use strict";
|
||||
|
||||
/**
|
||||
* WebRTC namespace for jsxc.
|
||||
*
|
||||
@@ -225,7 +221,7 @@ jsxc.gui.template.videoWindow = '<div class="jsxc_webrtc">\
|
||||
return;
|
||||
}
|
||||
|
||||
var videoIcon = $('<div class="jsxc_video jsxc_disabled" title="' + jsxc.l.Start_video_call + '"></div>');
|
||||
var videoIcon = $('<div class="jsxc_video jsxc_disabled" title="' + $.t("Start_video_call") + '"></div>');
|
||||
|
||||
videoIcon.click(function() {
|
||||
self.startCall(data.jid);
|
||||
@@ -250,6 +246,10 @@ jsxc.gui.template.videoWindow = '<div class="jsxc_webrtc">\
|
||||
initWindow: function(event, win) {
|
||||
var self = jsxc.webrtc;
|
||||
|
||||
if (win.hasClass('jsxc_groupchat')) {
|
||||
return;
|
||||
}
|
||||
|
||||
jsxc.debug('webrtc.initWindow');
|
||||
|
||||
if (!self.conn) {
|
||||
@@ -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;
|
||||
|
||||
@@ -284,28 +289,30 @@ jsxc.gui.template.videoWindow = '<div class="jsxc_webrtc">\
|
||||
var targetRes = Strophe.getResourceFromJid(jid);
|
||||
|
||||
if (targetRes === null) {
|
||||
$.each(jsxc.storage.getUserItem('buddy', bid).res, function(index, val) {
|
||||
$.each(jsxc.storage.getUserItem('buddy', bid).res || [], function(index, val) {
|
||||
if (capableRes.indexOf(val) > -1) {
|
||||
targetRes = val;
|
||||
return false;
|
||||
}
|
||||
});
|
||||
|
||||
jid = jid + '/' + targetRes;
|
||||
}
|
||||
|
||||
el.off('click');
|
||||
|
||||
if (capableRes.indexOf(targetRes) > -1) {
|
||||
el.click(function() {
|
||||
self.startCall(jid + '/' + targetRes);
|
||||
self.startCall(jid);
|
||||
});
|
||||
|
||||
el.removeClass('jsxc_disabled');
|
||||
|
||||
el.attr('title', jsxc.translate('%%Start video call%%'));
|
||||
el.attr('title', $.t('Start_video_call'));
|
||||
} else {
|
||||
el.addClass('jsxc_disabled');
|
||||
|
||||
el.attr('title', jsxc.translate('%%Video call not possible.%%'));
|
||||
el.attr('title', $.t('Video_call_not_possible'));
|
||||
}
|
||||
},
|
||||
|
||||
@@ -450,7 +457,7 @@ jsxc.gui.template.videoWindow = '<div class="jsxc_webrtc">\
|
||||
onMediaFailure: function(ev, err) {
|
||||
this.setStatus('media failure');
|
||||
|
||||
jsxc.gui.window.postMessage(jsxc.jidToBid(jsxc.webrtc.last_caller), 'sys', jsxc.translate('%%Media failure%%: ') + err.name);
|
||||
jsxc.gui.window.postMessage(jsxc.jidToBid(jsxc.webrtc.last_caller), 'sys', $.t('Media_failure') + err.name);
|
||||
jsxc.debug('media failure: ' + err.name);
|
||||
},
|
||||
|
||||
@@ -469,10 +476,10 @@ jsxc.gui.template.videoWindow = '<div class="jsxc_webrtc">\
|
||||
var sess = this.conn.jingle.sessions[sid];
|
||||
var bid = jsxc.jidToBid(sess.peerjid);
|
||||
|
||||
jsxc.gui.window.postMessage(bid, 'sys', jsxc.translate('%%Incoming call.%%'));
|
||||
jsxc.gui.window.postMessage(bid, 'sys', $.t('Incoming_call'));
|
||||
|
||||
// display notification
|
||||
jsxc.notification.notify(jsxc.translate('%%Incoming call%%'), jsxc.translate('%%from%% ' + bid));
|
||||
jsxc.notification.notify($.t('Incoming_call'), $.t('from') + ' ' + bid);
|
||||
|
||||
// send signal to partner
|
||||
sess.sendRinging();
|
||||
@@ -555,7 +562,7 @@ jsxc.gui.template.videoWindow = '<div class="jsxc_webrtc">\
|
||||
$(document).off('error.jingle');
|
||||
jsxc.gui.dialog.close();
|
||||
|
||||
jsxc.gui.window.postMessage(bid, 'sys', jsxc.translate('%%Call terminated%%' + (reason ? (': %%' + reason + '%%') : '') + '.'));
|
||||
jsxc.gui.window.postMessage(bid, 'sys', ($.t('Call_terminated') + (reason ? (': ' + $.t(reason)) : '') + '.'));
|
||||
},
|
||||
|
||||
/**
|
||||
@@ -659,15 +666,15 @@ jsxc.gui.template.videoWindow = '<div class="jsxc_webrtc">\
|
||||
}
|
||||
|
||||
var text = '<p>';
|
||||
text += '<b>' + jsxc.translate('%%Local IP%%: ') + '</b>' + sess.local_ip + '<br />';
|
||||
text += '<b>' + jsxc.translate('%%Remote IP%%: ') + '</b>' + sess.remote_ip + '<br />';
|
||||
text += '<b>' + jsxc.translate('%%Local Fingerprint%%: ') + '</b>' + sess.local_fp + '<br />';
|
||||
text += '<b>' + jsxc.translate('%%Remote Fingerprint%%: ') + '</b>' + sess.remote_fp;
|
||||
text += '<b>' + $.t('Local_IP') + ': </b>' + sess.local_ip + '<br />';
|
||||
text += '<b>' + $.t('Remote_IP') + ': </b>' + sess.remote_ip + '<br />';
|
||||
text += '<b>' + $.t('Local_Fingerprint') + ': </b>' + sess.local_fp + '<br />';
|
||||
text += '<b>' + $.t('Remote_Fingerprint') + ': </b>' + sess.remote_fp;
|
||||
text += '</p>';
|
||||
|
||||
$('#jsxc_dialog .jsxc_infobar').html(text);
|
||||
} else if (iceCon === 'failed') {
|
||||
jsxc.gui.window.postMessage(jsxc.jidToBid(sess.peerjid), 'sys', jsxc.translate('%%ICE connection failure%%.'));
|
||||
jsxc.gui.window.postMessage(jsxc.jidToBid(sess.peerjid), 'sys', $.t('ICE_connection_failure'));
|
||||
|
||||
$(document).off('cleanup.dialog.jsxc');
|
||||
|
||||
@@ -709,7 +716,7 @@ jsxc.gui.template.videoWindow = '<div class="jsxc_webrtc">\
|
||||
'finish.mediaready.jsxc': function() {
|
||||
self.setStatus('Initiate call');
|
||||
|
||||
jsxc.gui.window.postMessage(jsxc.jidToBid(jid), 'sys', jsxc.translate('%%Call started.%%'));
|
||||
jsxc.gui.window.postMessage(jsxc.jidToBid(jid), 'sys', $.t('Call_started'));
|
||||
|
||||
$(document).one('error.jingle', function(e, sid, error) {
|
||||
if (error.source !== 'offer') {
|
||||
@@ -973,66 +980,3 @@ jsxc.gui.template.videoWindow = '<div class="jsxc_webrtc">\
|
||||
}
|
||||
});
|
||||
|
||||
$.extend(jsxc.l10n.en, {
|
||||
Please_allow_access_to_microphone_and_camera: 'Please click the "Allow" button at the top, to allow access to microphone and camera.',
|
||||
Incoming_call: 'Incoming call',
|
||||
from: 'from',
|
||||
Do_you_want_to_accept_the_call_from: 'Do you want to accept the call from',
|
||||
Reject: 'Reject',
|
||||
Accept: 'Accept',
|
||||
hang_up: 'hang up',
|
||||
snapshot: 'snapshot',
|
||||
mute_my_audio: 'mute my audio',
|
||||
pause_my_video: 'pause my video',
|
||||
fullscreen: 'fullscreen',
|
||||
Info: 'Info',
|
||||
Local_IP: 'Local IP',
|
||||
Remote_IP: 'Remote IP',
|
||||
Local_Fingerprint: 'Local fingerprint',
|
||||
Remote_Fingerprint: 'Remote fingerprint',
|
||||
Video_call_not_possible: 'Video call not possible. Your buddy does not support video calls.',
|
||||
Start_video_call: 'Start video call'
|
||||
});
|
||||
|
||||
$.extend(jsxc.l10n.de, {
|
||||
Please_allow_access_to_microphone_and_camera: 'Bitte klick auf den "Zulassen" Button oben, um den Zugriff auf Kamera und Mikrofon zu erlauben.',
|
||||
Incoming_call: 'Eingehender Anruf',
|
||||
from: 'von',
|
||||
Do_you_want_to_accept_the_call_from: 'Möchtest Du den Anruf annehmen von',
|
||||
Reject: 'Ablehnen',
|
||||
Accept: 'Annehmen',
|
||||
hang_up: 'Auflegen',
|
||||
snapshot: 'Schnappschuss',
|
||||
mute_my_audio: 'Mein Ton aus',
|
||||
pause_my_video: 'Mein Video pausieren',
|
||||
fullscreen: 'Vollbild',
|
||||
Info: 'Info',
|
||||
Local_IP: 'Lokale IP',
|
||||
Remote_IP: 'Remote IP',
|
||||
Local_Fingerprint: 'Lokaler Fingerprint',
|
||||
Remote_Fingerprint: 'Remote Fingerprint',
|
||||
Video_call_not_possible: 'Videoanruf nicht verfügbar. Dein Gesprächspartner unterstützt keine Videotelefonie.',
|
||||
Start_video_call: 'Starte Videoanruf'
|
||||
});
|
||||
|
||||
$.extend(jsxc.l10n.es, {
|
||||
Please_allow_access_to_microphone_and_camera: 'Por favor, permitir el acceso al micrófono y la cámara.',
|
||||
Incoming_call: 'Llamada entrante',
|
||||
from: 'de',
|
||||
Do_you_want_to_accept_the_call_from: 'Desea aceptar la llamada de',
|
||||
Reject: 'Rechazar',
|
||||
Accept: 'Aceptar',
|
||||
hang_up: 'colgar',
|
||||
snapshot: 'instantánea',
|
||||
mute_my_audio: 'silenciar mi audio',
|
||||
pause_my_video: 'pausar mi vídeo',
|
||||
fullscreen: 'pantalla completa',
|
||||
Info: 'Info',
|
||||
Local_IP: 'IP local',
|
||||
Remote_IP: 'IP remota',
|
||||
Local_Fingerprint: 'Firma digital local',
|
||||
Remote_Fingerprint: 'Firma digital remota',
|
||||
Video_call_not_possible: 'Llamada de vídeo no es posible',
|
||||
Start_video_call: 'Iniciar llamada de vídeo'
|
||||
});
|
||||
}(jQuery));
|
||||
Diferenças do arquivo suprimidas por serem muito extensas
Carregar Diff
@@ -0,0 +1 @@
|
||||
}(jQuery));
|
||||
Referência em uma Nova Issue
Bloquear um usuário