Comparar commits
150 Commits
v1.0.0-beta2
...
v2.0.1
| Autor | SHA1 | Data | |
|---|---|---|---|
| 0c5f405503 | |||
| 499804d53b | |||
| 49a6782244 | |||
| 2c9efba0bd | |||
| b73aeafb5c | |||
| 616085d2a5 | |||
| 42c7939474 | |||
| 3538a0ad62 | |||
| 6925034cf3 | |||
| c242f05afe | |||
| 3b23f20268 | |||
| 3fba657d40 | |||
| 3c1ef25e2c | |||
| 569ab66016 | |||
| 84aab421a0 | |||
| 86ad16ef4b | |||
| 2fe742f169 | |||
| ee93f36a4c | |||
| bdd4236d1a | |||
| 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 | |||
| 2b6dd690f4 | |||
| 292e7646b6 | |||
| 9c137be6ae | |||
| c711167d3f | |||
| 4c388212eb | |||
| b843aa2f03 | |||
| 8d1fba000a | |||
| e9f0634d29 |
@@ -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,99 @@
|
||||
v2.0.1 / 2015-05-23
|
||||
===
|
||||
- improve login box
|
||||
- fix browsers without CSPRNG generator
|
||||
- fix ajax login after credential failure
|
||||
- fix some webrtc issues
|
||||
- fix login with different username after dirty logout
|
||||
- remove ie (<11) gradient
|
||||
- remove broken mitm detection
|
||||
- fix temporary template 404
|
||||
- fix login option
|
||||
- add connecting event
|
||||
|
||||
v2.0.0 / 2015-05-08
|
||||
===
|
||||
- add multi-user chat (XEP-0045)
|
||||
- add window resize handle
|
||||
- add username autocomplete
|
||||
- add offline state
|
||||
- add Italian, French, Polish, Portuguese/Brazil
|
||||
- use user avatar as notification icon
|
||||
- show notifications if tabs has no focus
|
||||
- split files into namespaces
|
||||
- sass improvements
|
||||
- replace own translation engine with i18next
|
||||
- fix login from login box
|
||||
- fix selection of chat messages
|
||||
- fix video calls
|
||||
- fix emoticons
|
||||
- fix duplicated roster items
|
||||
- fix notification request
|
||||
- fix logout
|
||||
|
||||
v1.1.0a / 2015-02-25
|
||||
===
|
||||
- fix css url path
|
||||
|
||||
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
|
||||
- add XEP-0147 URI Scheme Query support
|
||||
- add has-come-online notification
|
||||
- add silent notification request
|
||||
- add more information in vCard view
|
||||
- add resizable function to chat window
|
||||
- add vertical scrollbar to window list
|
||||
- add call information to chat window
|
||||
- add concatinated and uglified files
|
||||
- add translations
|
||||
- minor video call improvements
|
||||
- minor style improvements
|
||||
- generate dsa key complete in background
|
||||
- update caps node property to jsxc.org
|
||||
- update strophe.jingle
|
||||
- update otr
|
||||
- fix wrong avatars
|
||||
- fix minor message delivery errors
|
||||
- fix ff snapshot security error
|
||||
- fix case sensitive resource handling
|
||||
- fix non-square avatars
|
||||
- fix several video issues
|
||||
- fix messages from unknown (not in roster) jid
|
||||
- fix vcard retrieval from unknown (not in roster) jid
|
||||
- fix vcard in second tab
|
||||
- fix jids with non-word characters (replace user identifier)
|
||||
- improve video window design
|
||||
- improve user info
|
||||
- improve login box
|
||||
- improve smp user interaction
|
||||
- improve notifications (sync sound/message, icon)
|
||||
- minor chat window improvements
|
||||
- detect email in message
|
||||
- detect uri scheme in message
|
||||
- end all private conversations on logout
|
||||
- remove email pattern from contact dialog
|
||||
- disable video on second tab
|
||||
- add/require disco dtls feature for webrtc
|
||||
- move emoticons to css
|
||||
- handle loadSettings failure
|
||||
- change cursor for some elements
|
||||
- prevent event bubbling for dialog
|
||||
|
||||
v0.8.2 / 2014-08-20
|
||||
===
|
||||
- fix use of custom username
|
||||
|
||||
+157
-34
@@ -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,61 @@ 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 %>"
|
||||
}
|
||||
]
|
||||
},
|
||||
libraries: {
|
||||
src: ['<%= target %>/jsxc.js'],
|
||||
overwrite: true,
|
||||
replacements: [{
|
||||
from: '< $ dep.libraries $ >',
|
||||
to: function() {
|
||||
var i, d, libraries = '';
|
||||
|
||||
for(i = 0; i < dep.length; i++) {
|
||||
d = dep[i];
|
||||
if (typeof d.name === 'string') {
|
||||
libraries += '<a href="' + d.url + '">' + d.name + '</a> (' + d.license + '), ';
|
||||
}
|
||||
}
|
||||
|
||||
return libraries.replace(/, $/, '');
|
||||
}
|
||||
}]
|
||||
},
|
||||
locales: {
|
||||
src: [ '<%= target %>/lib/translation.js' ],
|
||||
overwrite: true,
|
||||
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 +109,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;
|
||||
|
||||
var data = dep[dep_files.indexOf('<%= target %>/' + filepath)];
|
||||
|
||||
if (data) {
|
||||
return '\n/*!\n * Source: ' + filepath + ', license: ' + data.license + ', url: ' + data.url + '\n */\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 +143,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 +168,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 +177,7 @@ module.exports = function(grunt) {
|
||||
compress: {
|
||||
main: {
|
||||
options: {
|
||||
archive: "jsxc-<%= app.version %>.zip"
|
||||
archive: "archives/jsxc-<%= app.version %>.zip"
|
||||
},
|
||||
files: [ {
|
||||
src: [ '**' ],
|
||||
@@ -134,9 +187,59 @@ module.exports = function(grunt) {
|
||||
} ]
|
||||
}
|
||||
},
|
||||
shell: {
|
||||
hooks: {
|
||||
command: 'cp pre-commit .git/hooks/'
|
||||
dataUri: {
|
||||
dist: {
|
||||
src: '<%= target %>/css/*.css',
|
||||
dest: '<%= target %>/css/',
|
||||
options: {
|
||||
target: ['<%= target %>/img/*.*', '<%= target %>/img/**/*.*'],
|
||||
fixDirLevel: false,
|
||||
maxBytes: 2048
|
||||
}
|
||||
}
|
||||
},
|
||||
jsdoc: {
|
||||
dist: {
|
||||
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']
|
||||
}
|
||||
}
|
||||
});
|
||||
@@ -151,14 +254,34 @@ module.exports = function(grunt) {
|
||||
grunt.loadNpmTasks('grunt-text-replace');
|
||||
grunt.loadNpmTasks('grunt-search');
|
||||
grunt.loadNpmTasks('grunt-contrib-compress');
|
||||
grunt.loadNpmTasks('grunt-shell');
|
||||
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', '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', 'replace:libraries', '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,240 @@
|
||||
.jsxc_remotevideo, .jsxc_noRemoteVideo {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
z-index: 9000;
|
||||
background-color: #999999; }
|
||||
|
||||
.jsxc_webrtc {
|
||||
width: 900px; }
|
||||
.jsxc_webrtc .jsxc_status {
|
||||
z-index: 9999;
|
||||
border-radius: 20px;
|
||||
display: none;
|
||||
position: absolute;
|
||||
top: 30px;
|
||||
left: 50%;
|
||||
background-color: rgba(0, 0, 0, 0.5);
|
||||
color: #fff;
|
||||
padding: 15px;
|
||||
font-weight: bold;
|
||||
text-align: center; }
|
||||
.jsxc_webrtc .slimScrollDiv {
|
||||
opacity: 1 !important; }
|
||||
.jsxc_webrtc li .jsxc_name {
|
||||
cursor: auto; }
|
||||
.jsxc_webrtc li .jsxc_name:hover {
|
||||
color: gray; }
|
||||
|
||||
.jsxc_videoContainer {
|
||||
width: 640px;
|
||||
height: 480px;
|
||||
position: relative;
|
||||
background-color: #999999; }
|
||||
.jsxc_videoContainer video {
|
||||
display: none; }
|
||||
.jsxc_videoContainer .jsxc_noRemoteVideo {
|
||||
display: none; }
|
||||
|
||||
.jsxc_noRemoteVideo p {
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
text-align: center;
|
||||
color: #fff;
|
||||
width: 100%;
|
||||
z-index: 100; }
|
||||
.jsxc_noRemoteVideo > div {
|
||||
width: 200px;
|
||||
height: 200px;
|
||||
overflow: hidden;
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
margin-top: -100px;
|
||||
left: 50%;
|
||||
margin-left: -100px; }
|
||||
.jsxc_noRemoteVideo > div > div {
|
||||
background-color: #4d4d4d; }
|
||||
.jsxc_noRemoteVideo > div > div:first-child {
|
||||
width: 50%;
|
||||
height: 50%;
|
||||
border-radius: 50%;
|
||||
position: absolute;
|
||||
left: 50%;
|
||||
margin-left: -25%;
|
||||
top: 10%; }
|
||||
.jsxc_noRemoteVideo > div > div:last-child {
|
||||
position: absolute;
|
||||
bottom: -50%;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
border-radius: 50%; }
|
||||
|
||||
.jsxc_localvideo {
|
||||
width: 160px;
|
||||
height: 120px;
|
||||
position: absolute;
|
||||
right: 10px;
|
||||
bottom: 10px;
|
||||
z-index: 9990;
|
||||
background-color: #000;
|
||||
cursor: pointer; }
|
||||
|
||||
div:full-screen {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background-color: #000; }
|
||||
div:full-screen.jsxc_localvideo {
|
||||
border: 1px solid #fff; }
|
||||
div:-webkit-full-screen {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background-color: #000; }
|
||||
div:-moz-full-screen {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background-color: #000; }
|
||||
div:-ms-fullscreen {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background-color: #000; }
|
||||
div:fullscreen {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background-color: #000; }
|
||||
div:-webkit-full-screen.jsxc_localvideo {
|
||||
border: 1px solid #fff; }
|
||||
div:-moz-full-screen.jsxc_localvideo {
|
||||
border: 1px solid #fff; }
|
||||
div:-ms-fullscreen.jsxc_localvideo {
|
||||
border: 1px solid #fff; }
|
||||
div:fullscreen.jsxc_localvideo {
|
||||
border: 1px solid #fff; }
|
||||
div.jsxc_video {
|
||||
background-image: url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgdmVyc2lvbj0iMS4xIgogICBpZD0ic3ZnMiIKICAgd2lkdGg9IjIwIgogICBoZWlnaHQ9IjIwIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGExMCI+CiAgICA8cmRmOlJERj4KICAgICAgPGNjOldvcmsKICAgICAgICAgcmRmOmFib3V0PSIiPgogICAgICAgIDxkYzpmb3JtYXQ+aW1hZ2Uvc3ZnK3htbDwvZGM6Zm9ybWF0PgogICAgICAgIDxkYzp0eXBlCiAgICAgICAgICAgcmRmOnJlc291cmNlPSJodHRwOi8vcHVybC5vcmcvZGMvZGNtaXR5cGUvU3RpbGxJbWFnZSIgLz4KICAgICAgICA8ZGM6dGl0bGU+PC9kYzp0aXRsZT4KICAgICAgPC9jYzpXb3JrPgogICAgPC9yZGY6UkRGPgogIDwvbWV0YWRhdGE+CiAgPGRlZnMKICAgICBpZD0iZGVmczgiIC8+CiAgPGcKICAgICBpZD0ibGF5ZXIxIgogICAgIHRyYW5zZm9ybT0ibWF0cml4KDAuMDM3ODg1OTQsMCwwLDAuMDM3ODg1OTQsLTAuNDEzNDA3OTMsLTIuNjMxMDcxNikiPgogICAgPHBhdGgKICAgICAgIGlkPSJwYXRoMzkwNiIKICAgICAgIHN0eWxlPSJmaWxsOiM4MDgwODA7c3Ryb2tlOm5vbmUiCiAgICAgICBkPSJtIDM2MS42NTE0OCwzMTMuNTE3NjggMTc3LjE2MDc0LC0xMzEuNzg1MTYgMCwzMDIuMjI5OTkgTCAzNTguOTczMzgsMzUwLjE4NTE3IFogTSAxMC45MTE5MjIsMTgyLjQwNjM0IGwgMzc4LjM3MjY3OCwwIDAsMzAyLjY1NTgyIC0zNzguMzcyNjc4LDAgeiIgLz4KICA8L2c+Cjwvc3ZnPgo=");
|
||||
background-repeat: no-repeat;
|
||||
background-position: center center;
|
||||
background-size: 15px 15px; }
|
||||
div.jsxc_video:not(.jsxc_disabled):hover {
|
||||
background-image: url("../img/camera_icon_white.svg"); }
|
||||
|
||||
.jsxc_controlbar {
|
||||
width: 640px; }
|
||||
.jsxc_controlbar .jsxc_showchat {
|
||||
float: right; }
|
||||
|
||||
.jsxc_multi > div {
|
||||
display: none; }
|
||||
|
||||
.jsxc_snapshotbar {
|
||||
width: 100%;
|
||||
display: none; }
|
||||
.jsxc_snapshotbar img {
|
||||
height: 50px; }
|
||||
|
||||
.jsxc_buttongroup {
|
||||
display: inline; }
|
||||
.jsxc_buttongroup button:first-child {
|
||||
border-top-right-radius: 0;
|
||||
border-bottom-right-radius: 0;
|
||||
margin-right: 0; }
|
||||
.jsxc_buttongroup button:last-child {
|
||||
border-top-left-radius: 0;
|
||||
border-bottom-left-radius: 0;
|
||||
margin-left: 0; }
|
||||
|
||||
.jsxc_chatarea {
|
||||
position: relative;
|
||||
float: right;
|
||||
height: 480px;
|
||||
width: 250px;
|
||||
background-color: #999999; }
|
||||
.jsxc_chatarea .jsxc_settings {
|
||||
display: none !important; }
|
||||
.jsxc_chatarea .jsxc_close {
|
||||
display: none !important; }
|
||||
.jsxc_chatarea .jsxc_video {
|
||||
display: none !important; }
|
||||
.jsxc_chatarea .jsxc_window {
|
||||
bottom: 0;
|
||||
box-shadow: none; }
|
||||
.jsxc_chatarea > ul {
|
||||
width: 250px;
|
||||
height: 480px;
|
||||
list-style: none;
|
||||
padding: 0; }
|
||||
|
||||
.bubblingG {
|
||||
text-align: center;
|
||||
width: 129px;
|
||||
height: 80px;
|
||||
position: absolute;
|
||||
top: 40%;
|
||||
left: 50%;
|
||||
margin-left: -64px; }
|
||||
.bubblingG span {
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
margin: 40px auto;
|
||||
background: #000;
|
||||
border-radius: 81px;
|
||||
-webkit-animation: bubblingG 1.3s infinite alternate;
|
||||
animation: bubblingG 1.3s infinite alternate; }
|
||||
|
||||
#bubblingG_1 {
|
||||
-webkit-animation-delay: 0s;
|
||||
animation-delay: 0s; }
|
||||
|
||||
#bubblingG_2 {
|
||||
-webkit-animation-delay: 0.39s;
|
||||
animation-delay: 0.39s; }
|
||||
|
||||
#bubblingG_3 {
|
||||
-webkit-animation-delay: 0.78s;
|
||||
animation-delay: 0.78s; }
|
||||
|
||||
@-webkit-keyframes bubblingG {
|
||||
|
||||
0% {
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
background-color: #000;
|
||||
-webkit-transform: translateY(0);
|
||||
transform: translateY(0); }
|
||||
|
||||
100% {
|
||||
width: 39px;
|
||||
height: 39px;
|
||||
background-color: #fff;
|
||||
-webkit-transform: translateY(-34px);
|
||||
transform: translateY(-34px); } }
|
||||
|
||||
@keyframes bubblingG {
|
||||
0% {
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
background-color: #000;
|
||||
-webkit-transform: translateY(0);
|
||||
transform: translateY(0); }
|
||||
|
||||
100% {
|
||||
width: 39px;
|
||||
height: 39px;
|
||||
background-color: #fff;
|
||||
-webkit-transform: translateY(-34px);
|
||||
transform: translateY(-34px); } }
|
||||
|
||||
.jsxc_fullscreen.jsxc_localvideo {
|
||||
border: 1px solid #fff; }
|
||||
|
||||
.jsxc_videoSuitable .jsxc_name {
|
||||
font-style: italic; }
|
||||
|
||||
#jsxc_buddylist .jsxc_options .jsxc_video {
|
||||
background-image: url("../img/camera_icon_white.svg"); }
|
||||
#jsxc_buddylist .jsxc_options .jsxc_video.jsxc_disabled {
|
||||
opacity: 0.2; }
|
||||
@@ -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
+6450
-5127
Diferenças do arquivo suprimidas por serem muito extensas
Carregar Diff
-5875
Diferenças do arquivo suprimidas por serem muito extensas
Carregar Diff
externo
+9
-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
+138
-146
Diff do arquivo suprimido porque uma ou mais linhas são muito longas
externo
+36
-19
Diff do arquivo suprimido porque uma ou mais linhas são muito longas
Diff do arquivo suprimido porque uma ou mais linhas são muito longas
@@ -5,7 +5,11 @@
|
||||
} else if (typeof module !== 'undefined' && module.exports) {
|
||||
module.exports = factory(require('crypto'))
|
||||
} else {
|
||||
root.BigInt = factory(root.crypto || root.msCrypto)
|
||||
try {
|
||||
root.BigInt = factory(root.crypto || root.msCrypto)
|
||||
} catch(e) {
|
||||
console.warn(e.message);
|
||||
}
|
||||
}
|
||||
|
||||
}(this, function (crypto) {
|
||||
|
||||
@@ -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.
|
||||
@@ -29,7 +29,9 @@
|
||||
} else {
|
||||
root.OTR = {}
|
||||
root.DSA = {}
|
||||
factory.call(root)
|
||||
if (typeof root.BigInt !== 'undefined') {
|
||||
factory.call(root)
|
||||
}
|
||||
}
|
||||
|
||||
}(this, function () {
|
||||
@@ -1620,10 +1622,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 +2414,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 +2478,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 +2529,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) {
|
||||
@@ -261,4 +267,4 @@
|
||||
return 0;
|
||||
}
|
||||
});
|
||||
}(jQuery));
|
||||
}(jQuery));
|
||||
|
||||
@@ -68,7 +68,7 @@ TraceablePeerConnection = function(ice_config, constraints) {
|
||||
if (self.ondatachannel !== null) {
|
||||
self.ondatachannel(event);
|
||||
}
|
||||
}
|
||||
};
|
||||
if (!navigator.mozGetUserMedia) {
|
||||
this.statsinterval = window.setInterval(function() {
|
||||
self.peerconnection.getStats(function(stats) {
|
||||
@@ -99,18 +99,19 @@ TraceablePeerConnection = function(ice_config, constraints) {
|
||||
|
||||
}, 1000);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
dumpSDP = function(description) {
|
||||
return 'type: ' + description.type + '\r\n' + description.sdp;
|
||||
}
|
||||
};
|
||||
|
||||
if (TraceablePeerConnection.prototype.__defineGetter__ !== undefined) {
|
||||
TraceablePeerConnection.prototype.__defineGetter__('signalingState', function() { return this.peerconnection.signalingState; });
|
||||
TraceablePeerConnection.prototype.__defineGetter__('iceConnectionState', function() { return this.peerconnection.iceConnectionState; });
|
||||
TraceablePeerConnection.prototype.__defineGetter__('localDescription', function() { return this.peerconnection.localDescription; });
|
||||
TraceablePeerConnection.prototype.__defineGetter__('remoteDescription', function() { return this.peerconnection.remoteDescription; });
|
||||
}
|
||||
['signalingState', 'iceConnectionState', 'localDescription', 'remoteDescription'].forEach(function (prop) {
|
||||
Object.defineProperty(TraceablePeerConnection.prototype, prop, {
|
||||
get: function () {
|
||||
return this.peerconnection[prop]
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
TraceablePeerConnection.prototype.addStream = function (stream) {
|
||||
this.trace('addStream', stream.id);
|
||||
@@ -125,7 +126,7 @@ TraceablePeerConnection.prototype.removeStream = function (stream) {
|
||||
TraceablePeerConnection.prototype.createDataChannel = function (label, opts) {
|
||||
this.trace('createDataChannel', label, opts);
|
||||
this.peerconnection.createDataChannel(label, opts);
|
||||
}
|
||||
};
|
||||
|
||||
TraceablePeerConnection.prototype.setLocalDescription = function (description, successCallback, failureCallback) {
|
||||
var self = this;
|
||||
@@ -212,21 +213,19 @@ TraceablePeerConnection.prototype.addIceCandidate = function (candidate, success
|
||||
var self = this;
|
||||
this.trace('addIceCandidate', JSON.stringify(candidate, null, ' '));
|
||||
this.peerconnection.addIceCandidate(candidate);
|
||||
/* maybe later
|
||||
this.peerconnection.addIceCandidate(candidate,
|
||||
function () {
|
||||
self.trace('addIceCandidateOnSuccess');
|
||||
successCallback();
|
||||
if (successCallback) successCallback();
|
||||
},
|
||||
function (err) {
|
||||
self.trace('addIceCandidateOnFailure', err);
|
||||
failureCallback(err);
|
||||
if (failureCallback) failureCallback(err);
|
||||
}
|
||||
);
|
||||
*/
|
||||
};
|
||||
|
||||
TraceablePeerConnection.prototype.getStats = function(callback, errback) {
|
||||
TraceablePeerConnection.prototype.getStats = function(callback) {
|
||||
if (navigator.mozGetUserMedia) {
|
||||
// ignore for now...
|
||||
} else {
|
||||
@@ -237,9 +236,9 @@ TraceablePeerConnection.prototype.getStats = function(callback, errback) {
|
||||
// mozilla chrome compat layer -- very similar to adapter.js
|
||||
setupRTC = function (){
|
||||
var RTC = null;
|
||||
if (navigator.mozGetUserMedia) {
|
||||
if (navigator.mozGetUserMedia && mozRTCPeerConnection) {
|
||||
console.log('This appears to be Firefox');
|
||||
var version = parseInt(navigator.userAgent.match(/Firefox\/([0-9]+)\./)[1], 10);
|
||||
var version = navigator.userAgent.match(/Firefox/) ? parseInt(navigator.userAgent.match(/Firefox\/([0-9]+)\./)[1], 10) : 0;
|
||||
if (version >= 22) {
|
||||
RTC = {
|
||||
peerconnection: mozRTCPeerConnection,
|
||||
@@ -251,10 +250,6 @@ setupRTC = function (){
|
||||
},
|
||||
pc_constraints: {}
|
||||
};
|
||||
if (!MediaStream.prototype.getVideoTracks)
|
||||
MediaStream.prototype.getVideoTracks = function () { return []; };
|
||||
if (!MediaStream.prototype.getAudioTracks)
|
||||
MediaStream.prototype.getAudioTracks = function () { return []; };
|
||||
RTCSessionDescription = mozRTCSessionDescription;
|
||||
RTCIceCandidate = mozRTCIceCandidate;
|
||||
}
|
||||
@@ -270,19 +265,6 @@ setupRTC = function (){
|
||||
// DTLS should now be enabled by default but..
|
||||
pc_constraints: {'optional': [{'DtlsSrtpKeyAgreement': 'true'}]}
|
||||
};
|
||||
if (navigator.userAgent.indexOf('Android') != -1) {
|
||||
RTC.pc_constraints = {}; // disable DTLS on Android
|
||||
}
|
||||
if (!webkitMediaStream.prototype.getVideoTracks) {
|
||||
webkitMediaStream.prototype.getVideoTracks = function () {
|
||||
return this.videoTracks;
|
||||
};
|
||||
}
|
||||
if (!webkitMediaStream.prototype.getAudioTracks) {
|
||||
webkitMediaStream.prototype.getAudioTracks = function () {
|
||||
return this.audioTracks;
|
||||
};
|
||||
}
|
||||
}
|
||||
if (RTC === null) {
|
||||
try { console.log('Browser does not appear to be WebRTC-capable'); } catch (e) { }
|
||||
@@ -317,23 +299,19 @@ getUserMediaWithConstraints = function(um, resolution, bandwidth, fps) {
|
||||
case 'fullhd':
|
||||
constraints.video.mandatory.minWidth = 1920;
|
||||
constraints.video.mandatory.minHeight = 1080;
|
||||
constraints.video.mandatory.minAspectRatio = 1.77;
|
||||
break;
|
||||
case '720':
|
||||
case 'hd':
|
||||
constraints.video.mandatory.minWidth = 1280;
|
||||
constraints.video.mandatory.minHeight = 720;
|
||||
constraints.video.mandatory.minAspectRatio = 1.77;
|
||||
break;
|
||||
case '360':
|
||||
constraints.video.mandatory.minWidth = 640;
|
||||
constraints.video.mandatory.minHeight = 360;
|
||||
constraints.video.mandatory.minAspectRatio = 1.77;
|
||||
break;
|
||||
case '180':
|
||||
constraints.video.mandatory.minWidth = 320;
|
||||
constraints.video.mandatory.minHeight = 180;
|
||||
constraints.video.mandatory.minAspectRatio = 1.77;
|
||||
break;
|
||||
// 4:3
|
||||
case '960':
|
||||
@@ -358,6 +336,10 @@ getUserMediaWithConstraints = function(um, resolution, bandwidth, fps) {
|
||||
break;
|
||||
}
|
||||
|
||||
// take what is configured and try not to be more intelligent
|
||||
if (constraints.video.minWidth) constraints.video.maxWidth = constraints.video.minWidth;
|
||||
if (constraints.video.minHeight) constraints.video.maxHeight = constraints.video.minHeight;
|
||||
|
||||
if (bandwidth) { // doesn't work currently, see webrtc issue 1846
|
||||
if (!constraints.video) constraints.video = {mandatory: {}};//same behaviour as true
|
||||
constraints.video.optional = [{bandwidth: bandwidth}];
|
||||
|
||||
@@ -44,7 +44,6 @@ Strophe.addConnectionPlugin('jingle', {
|
||||
to: iq.getAttribute('from'),
|
||||
id: iq.getAttribute('id')
|
||||
});
|
||||
console.log('on jingle ' + action);
|
||||
var sess = this.sessions[sid];
|
||||
if ('session-initiate' != action) {
|
||||
if (sess === null) {
|
||||
@@ -93,11 +92,6 @@ Strophe.addConnectionPlugin('jingle', {
|
||||
sess.initiate($(iq).attr('from'), false);
|
||||
sess.setRemoteDescription($(iq).find('>jingle'), 'offer');
|
||||
|
||||
if ($(iq).find('>jingle>muted[xmlns="http://jitsi.org/protocol/meet#startmuted"]').length) {
|
||||
console.log('got a request to start muted');
|
||||
sess.startmuted = true;
|
||||
}
|
||||
|
||||
this.sessions[sess.sid] = sess;
|
||||
this.jid2session[sess.peerjid] = sess;
|
||||
|
||||
@@ -112,7 +106,6 @@ Strophe.addConnectionPlugin('jingle', {
|
||||
$(document).trigger('callaccepted.jingle', [sess.sid]);
|
||||
break;
|
||||
case 'session-terminate':
|
||||
console.log('terminating...');
|
||||
sess.terminate();
|
||||
this.terminate(sess.sid);
|
||||
if ($(iq).find('>jingle>reason').length) {
|
||||
@@ -194,7 +187,6 @@ Strophe.addConnectionPlugin('jingle', {
|
||||
var sess = this.jid2session[jid];
|
||||
if (sess) {
|
||||
sess.terminate();
|
||||
console.log('peer went away silently', jid);
|
||||
delete this.sessions[sess.sid];
|
||||
delete this.jid2session[jid];
|
||||
$(document).trigger('callterminated.jingle', [sess.sid, 'gone']);
|
||||
@@ -232,12 +224,8 @@ Strophe.addConnectionPlugin('jingle', {
|
||||
break;
|
||||
case 'turn':
|
||||
dict.url = 'turn:';
|
||||
if (el.attr('username')) { // https://code.google.com/p/webrtc/issues/detail?id=1508
|
||||
if (navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./) && parseInt(navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./)[2], 10) < 28) {
|
||||
dict.url += el.attr('username') + '@';
|
||||
} else {
|
||||
dict.username = el.attr('username'); // only works in M28
|
||||
}
|
||||
if (el.attr('username')) {
|
||||
dict.username = el.attr('username');
|
||||
}
|
||||
dict.url += el.attr('host');
|
||||
if (el.attr('port') && el.attr('port') != '3478') {
|
||||
|
||||
@@ -52,7 +52,8 @@ SDP.prototype.removeSessionLines = function(prefix) {
|
||||
});
|
||||
this.raw = this.session + this.media.join('');
|
||||
return lines;
|
||||
}
|
||||
};
|
||||
|
||||
// remove lines matching prefix from a media section specified by mediaindex
|
||||
// TODO: non-numeric mediaindex could match mid
|
||||
SDP.prototype.removeMediaLines = function(mediaindex, prefix) {
|
||||
@@ -63,7 +64,7 @@ SDP.prototype.removeMediaLines = function(mediaindex, prefix) {
|
||||
});
|
||||
this.raw = this.session + this.media.join('');
|
||||
return lines;
|
||||
}
|
||||
};
|
||||
|
||||
// add content's to a jingle element
|
||||
SDP.prototype.toJingle = function (elem, thecreator) {
|
||||
@@ -104,12 +105,6 @@ SDP.prototype.toJingle = function (elem, thecreator) {
|
||||
// prefer identifier from a=mid if present
|
||||
var mid = SDPUtil.parse_mid(SDPUtil.find_line(this.media[i], 'a=mid:'));
|
||||
elem.attrs({ name: mid });
|
||||
|
||||
// old BUNDLE plan, to be removed
|
||||
if (bundle.indexOf(mid) != -1) {
|
||||
elem.c('bundle', {xmlns: 'http://estos.de/ns/bundle'}).up();
|
||||
bundle.splice(bundle.indexOf(mid), 1);
|
||||
}
|
||||
}
|
||||
if (SDPUtil.find_line(this.media[i], 'a=rtpmap:').length) {
|
||||
elem.c('description',
|
||||
@@ -165,12 +160,6 @@ SDP.prototype.toJingle = function (elem, thecreator) {
|
||||
elem.up();
|
||||
});
|
||||
elem.up();
|
||||
|
||||
// old proprietary mapping, to be removed at some point
|
||||
tmp = SDPUtil.parse_ssrc(this.media[i]);
|
||||
tmp.xmlns = 'http://estos.de/ns/ssrc';
|
||||
tmp.ssrc = ssrc;
|
||||
elem.c('ssrc', tmp).up(); // ssrc is part of description
|
||||
}
|
||||
|
||||
if (SDPUtil.find_line(this.media[i], 'a=rtcp-mux')) {
|
||||
@@ -267,7 +256,7 @@ SDP.prototype.TransportToJingle = function (mediaindex, elem) {
|
||||
}
|
||||
}
|
||||
elem.up(); // end of transport
|
||||
}
|
||||
};
|
||||
|
||||
SDP.prototype.RtcpFbToJingle = function (mediaindex, elem, payloadtype) { // XEP-0293
|
||||
var lines = SDPUtil.find_lines(this.media[mediaindex], 'a=rtcp-fb:' + payloadtype);
|
||||
@@ -340,7 +329,6 @@ SDP.prototype.fromJingle = function (jingle) {
|
||||
// for backward compability, to be removed soon
|
||||
// assume all contents are in the same bundle group, can be improved upon later
|
||||
var bundle = $(jingle).find('>content').filter(function (idx, content) {
|
||||
//elem.c('bundle', {xmlns:'http://estos.de/ns/bundle'});
|
||||
return $(content).find('>bundle').length > 0;
|
||||
}).map(function (idx, content) {
|
||||
return content.getAttribute('name');
|
||||
@@ -476,17 +464,6 @@ SDP.prototype.jingle2media = function (content) {
|
||||
media += '\r\n';
|
||||
});
|
||||
});
|
||||
|
||||
if (tmp.length === 0) {
|
||||
// fallback to proprietary mapping of a=ssrc lines
|
||||
tmp = content.find('description>ssrc[xmlns="http://estos.de/ns/ssrc"]');
|
||||
if (tmp.length) {
|
||||
media += 'a=ssrc:' + ssrc + ' cname:' + tmp.attr('cname') + '\r\n';
|
||||
media += 'a=ssrc:' + ssrc + ' msid:' + tmp.attr('msid') + '\r\n';
|
||||
media += 'a=ssrc:' + ssrc + ' mslabel:' + tmp.attr('mslabel') + '\r\n';
|
||||
media += 'a=ssrc:' + ssrc + ' label:' + tmp.attr('label') + '\r\n';
|
||||
}
|
||||
}
|
||||
return media;
|
||||
};
|
||||
|
||||
@@ -728,8 +705,6 @@ SDPUtil = {
|
||||
return needles;
|
||||
},
|
||||
candidateToJingle: function (line) {
|
||||
// a=candidate:2979166662 1 udp 2113937151 192.168.2.100 57698 typ host generation 0
|
||||
// <candidate component=... foundation=... generation=... id=... ip=... network=... port=... priority=... protocol=... type=.../>
|
||||
if (line.indexOf('candidate:') === 0) {
|
||||
line = 'a=' + line;
|
||||
} else if (line.substring(0, 12) != 'a=candidate:') {
|
||||
@@ -755,8 +730,7 @@ SDPUtil = {
|
||||
candidate.port = elems[5];
|
||||
// elems[6] => "typ"
|
||||
candidate.type = elems[7];
|
||||
|
||||
candidate.generation = '0'; // fippo from jitsi-meet: default, may be overwritten below
|
||||
candidate.generation = '0';
|
||||
|
||||
for (i = 8; i < elems.length; i += 2) {
|
||||
switch (elems[i]) {
|
||||
@@ -781,42 +755,31 @@ SDPUtil = {
|
||||
return candidate;
|
||||
},
|
||||
candidateFromJingle: function (cand) {
|
||||
var line = 'a=candidate:';
|
||||
line += cand.getAttribute('foundation');
|
||||
line += ' ';
|
||||
line += cand.getAttribute('component');
|
||||
line += ' ';
|
||||
line += cand.getAttribute('protocol'); //.toUpperCase(); // chrome M23 doesn't like this
|
||||
line += ' ';
|
||||
line += cand.getAttribute('priority');
|
||||
line += ' ';
|
||||
line += cand.getAttribute('ip');
|
||||
line += ' ';
|
||||
line += cand.getAttribute('port');
|
||||
line += ' ';
|
||||
line += 'typ';
|
||||
line += ' ' + cand.getAttribute('type');
|
||||
line += ' ';
|
||||
var parts = [
|
||||
'a=candidate:' + cand.getAttribute('foundation'),
|
||||
cand.getAttribute('component'),
|
||||
cand.getAttribute('protocol'),
|
||||
cand.getAttribute('priority'),
|
||||
cand.getAttribute('ip'),
|
||||
cand.getAttribute('port'),
|
||||
'typ',
|
||||
cand.getAttribute('type')
|
||||
];
|
||||
switch (cand.getAttribute('type')) {
|
||||
case 'srflx':
|
||||
case 'prflx':
|
||||
case 'relay':
|
||||
if (cand.getAttribute('rel-addr') && cand.getAttribute('rel-port')) {
|
||||
line += 'raddr';
|
||||
line += ' ';
|
||||
line += cand.getAttribute('rel-addr');
|
||||
line += ' ';
|
||||
line += 'rport';
|
||||
line += ' ';
|
||||
line += cand.getAttribute('rel-port');
|
||||
line += ' ';
|
||||
parts.push('raddr');
|
||||
parts.push(cand.getAttribute('rel-addr'));
|
||||
parts.push('rport');
|
||||
parts.push(cand.getAttribute('rel-port'));
|
||||
}
|
||||
break;
|
||||
}
|
||||
line += 'generation';
|
||||
line += ' ';
|
||||
line += cand.getAttribute('generation') || '0';
|
||||
return line + '\r\n';
|
||||
parts.push('generation');
|
||||
parts.push(cand.getAttribute('generation') || '0');
|
||||
return parts.join(' ') + '\r\n';
|
||||
}
|
||||
};
|
||||
}(jQuery));
|
||||
|
||||
@@ -222,11 +222,11 @@ JingleSession.prototype.sendIceCandidate = function (candidate) {
|
||||
}, 20);
|
||||
|
||||
}
|
||||
this.drip_container.push(event.candidate);
|
||||
this.drip_container.push(candidate);
|
||||
return;
|
||||
} else {
|
||||
console.log('sending single candidate');
|
||||
self.sendIceCandidates([event.candidate]);
|
||||
self.sendIceCandidates([candidate]);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -240,7 +240,7 @@ JingleSession.prototype.sendIceCandidate = function (candidate) {
|
||||
action: this.peerconnection.localDescription.type == 'offer' ? 'session-initiate' : 'session-accept',
|
||||
initiator: this.initiator,
|
||||
sid: this.sid});
|
||||
if (this.nickname != null) {
|
||||
if (this.nickname !== null) {
|
||||
init.c('nick', {xmlns:'http://jabber.org/protocol/nick'}).t(this.nickname).up();
|
||||
}
|
||||
if (this.startmuted) {
|
||||
@@ -288,11 +288,12 @@ JingleSession.prototype.sendIceCandidates = function (candidates) {
|
||||
sid: this.sid});
|
||||
for (var mid = 0; mid < this.localSDP.media.length; mid++) {
|
||||
var cands = candidates.filter(function (el) { return el.sdpMLineIndex == mid; });
|
||||
var mline = SDPUtil.parse_mline(this.localSDP.media[mid].split('\r\n')[0]);
|
||||
if (cands.length > 0) {
|
||||
var ice = SDPUtil.iceparams(this.localSDP.media[mid], this.localSDP.session);
|
||||
ice.xmlns = 'urn:xmpp:jingle:transports:ice-udp:1';
|
||||
cand.c('content', {creator: this.initiator == this.me ? 'initiator' : 'responder',
|
||||
name: cands[0].sdpMid
|
||||
name: (cands[0].sdpMid? cands[0].sdpMid : mline.media)
|
||||
}).c('transport', ice);
|
||||
for (var i = 0; i < cands.length; i++) {
|
||||
cand.c('candidate', SDPUtil.candidateToJingle(cands[i].candidate)).up();
|
||||
@@ -357,7 +358,7 @@ JingleSession.prototype.createdOffer = function (sdp) {
|
||||
action: 'session-initiate',
|
||||
initiator: this.initiator,
|
||||
sid: this.sid});
|
||||
if (this.nickname != null) {
|
||||
if (this.nickname !== null) {
|
||||
init.c('nick', {xmlns:'http://jabber.org/protocol/nick'}).t(this.nickname).up();
|
||||
}
|
||||
if (this.startmuted) {
|
||||
|
||||
Diff do arquivo suprimido porque uma ou mais linhas são muito longas
+41
-15
@@ -1,72 +1,98 @@
|
||||
[
|
||||
{
|
||||
"file": "build/lib/strophe.js",
|
||||
"name": "strophe.js",
|
||||
"file": "lib/strophe.js",
|
||||
"license": "multiple",
|
||||
"url": "http://strophe.im/strophejs/"
|
||||
},
|
||||
{
|
||||
"file": "build/lib/strophe.muc.js",
|
||||
"name": "strophe.js/muc",
|
||||
"file": "lib/strophe.muc.js",
|
||||
"license": "MIT",
|
||||
"url": "https://github.com/strophe/strophejs-plugins"
|
||||
},
|
||||
{
|
||||
"file": "build/lib/strophe.disco.js",
|
||||
"name": "strophe.js/disco",
|
||||
"file": "lib/strophe.disco.js",
|
||||
"license": "MIT",
|
||||
"url": "https://github.com/strophe/strophejs-plugins"
|
||||
},
|
||||
{
|
||||
"file": "build/lib/strophe.caps.js",
|
||||
"name": "strophe.js/caps",
|
||||
"file": "lib/strophe.caps.js",
|
||||
"license": "MIT",
|
||||
"url": "https://github.com/strophe/strophejs-plugins"
|
||||
},
|
||||
{
|
||||
"file": "build/lib/strophe.vcard.js",
|
||||
"name": "strophe.js/vcard",
|
||||
"file": "lib/strophe.vcard.js",
|
||||
"license": "MIT",
|
||||
"url": "https://github.com/strophe/strophejs-plugins"
|
||||
},
|
||||
{
|
||||
"file": "build/lib/strophe.jingle/strophe.jingle.js",
|
||||
"name": "strophe.jingle",
|
||||
"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",
|
||||
"name": null,
|
||||
"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",
|
||||
"name": null,
|
||||
"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",
|
||||
"name": null,
|
||||
"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",
|
||||
"name": "Salsa20",
|
||||
"file": "lib/otr/build/dep/salsa20.js",
|
||||
"license": "AGPL3",
|
||||
"url": "https://github.com/neoatlantis/node-salsa20"
|
||||
},
|
||||
{
|
||||
"file": "build/lib/otr/build/dep/bigint.js",
|
||||
"name": "bigint",
|
||||
"file": "lib/otr/build/dep/bigint.js",
|
||||
"license": "public domain",
|
||||
"url": "www.leemon.com"
|
||||
},
|
||||
{
|
||||
"file": "build/lib/otr/build/dep/crypto.js",
|
||||
"name": "cryptojs",
|
||||
"file": "lib/otr/build/dep/crypto.js",
|
||||
"license": "code.google.com/p/crypto-js/wiki/license",
|
||||
"url": "code.google.com/p/crypto-js"
|
||||
},
|
||||
{
|
||||
"file": "build/lib/otr/build/dep/eventemitter.js",
|
||||
"name": "eventemitter",
|
||||
"file": "lib/otr/build/dep/eventemitter.js",
|
||||
"license": "MIT",
|
||||
"url": "http://git.io/ee"
|
||||
},
|
||||
{
|
||||
"file": "build/lib/otr/build/otr.js",
|
||||
"name": "otr.js",
|
||||
"file": "lib/otr/build/otr.js",
|
||||
"license": "MPL v2.0",
|
||||
"url": "https://arlolra.github.io/otr/"
|
||||
},
|
||||
{
|
||||
"name": "i18next",
|
||||
"file": "lib/i18next/release/i18next-latest.min.js",
|
||||
"license": "MIT",
|
||||
"url": "http://i18next.com/"
|
||||
},
|
||||
{
|
||||
"name": null,
|
||||
"file": "lib/translation.js",
|
||||
"license": "MIT",
|
||||
"url": "https://webtranslateit.com/en/projects/10365-JSXC"
|
||||
}
|
||||
]
|
||||
]
|
||||
|
||||
@@ -0,0 +1,236 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>JSDoc: Global</title>
|
||||
|
||||
<script src="scripts/prettify/prettify.js"> </script>
|
||||
<script src="scripts/prettify/lang-css.js"> </script>
|
||||
<!--[if lt IE 9]>
|
||||
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
|
||||
<![endif]-->
|
||||
<link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css">
|
||||
<link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<div id="main">
|
||||
|
||||
<h1 class="page-title">Global</h1>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<section>
|
||||
|
||||
<header>
|
||||
<h2>
|
||||
|
||||
</h2>
|
||||
|
||||
</header>
|
||||
|
||||
<article>
|
||||
<div class="container-overview">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<dl class="details">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h3 class="subsection-title">Type Definitions</h3>
|
||||
|
||||
<dl>
|
||||
|
||||
<dt>
|
||||
<h4 class="name" id="getUsers-cb"><span class="type-signature"></span>getUsers-cb<span class="signature">(list)</span><span class="type-signature"></span></h4>
|
||||
|
||||
|
||||
</dt>
|
||||
<dd>
|
||||
|
||||
|
||||
<div class="description">
|
||||
Processes user list.
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h5>Parameters:</h5>
|
||||
|
||||
|
||||
<table class="params">
|
||||
<thead>
|
||||
<tr>
|
||||
|
||||
<th>Name</th>
|
||||
|
||||
|
||||
<th>Type</th>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<th class="last">Description</th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
<tbody>
|
||||
|
||||
|
||||
<tr>
|
||||
|
||||
<td class="name"><code>list</code></td>
|
||||
|
||||
|
||||
<td class="type">
|
||||
|
||||
|
||||
<span class="param-type">object</span>
|
||||
|
||||
|
||||
|
||||
</td>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<td class="description last">List of users, key: username, value: alias</td>
|
||||
</tr>
|
||||
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
|
||||
|
||||
<dl class="details">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<dt class="tag-source">Source:</dt>
|
||||
<dd class="tag-source"><ul class="dummy"><li>
|
||||
<a href="jsxc.lib.options.js.html">jsxc.lib.options.js</a>, <a href="jsxc.lib.options.js.html#line159">line 159</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</dd>
|
||||
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
</article>
|
||||
|
||||
</section>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<nav>
|
||||
<h2><a href="index.html">Index</a></h2><h3>Namespaces</h3><ul><li><a href="jsxc.html">jsxc</a></li><li><a href="jsxc.gui.html">gui</a></li><li><a href="jsxc.gui.dialog.html">dialog</a></li><li><a href="jsxc.gui.queryActions.html">queryActions</a></li><li><a href="jsxc.gui.roster.html">roster</a></li><li><a href="jsxc.gui.template.html">template</a></li><li><a href="jsxc.gui.window.html">window</a></li><li><a href="jsxc.muc.html">muc</a></li><li><a href="jsxc.notification.html">notification</a></li><li><a href="jsxc.options.html">options</a></li><li><a href="jsxc.otr.html">otr</a></li><li><a href="jsxc.storage.html">storage</a></li><li><a href="jsxc.webrtc.html">webrtc</a></li><li><a href="jsxc.xmpp.html">xmpp</a></li><li><a href="jsxc.xmpp.carbons.html">carbons</a></li></ul><h3><a href="global.html">Global</a></h3>
|
||||
</nav>
|
||||
|
||||
<br clear="both">
|
||||
|
||||
<footer>
|
||||
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Sat May 23 2015 16:03:19 GMT+0200 (CEST)
|
||||
</footer>
|
||||
|
||||
<script> prettyPrint(); </script>
|
||||
<script src="scripts/linenumber.js"> </script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,63 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>JSDoc: Index</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">Index</h1>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h3> </h3>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<nav>
|
||||
<h2><a href="index.html">Index</a></h2><h3>Namespaces</h3><ul><li><a href="jsxc.html">jsxc</a></li><li><a href="jsxc.gui.html">gui</a></li><li><a href="jsxc.gui.dialog.html">dialog</a></li><li><a href="jsxc.gui.queryActions.html">queryActions</a></li><li><a href="jsxc.gui.roster.html">roster</a></li><li><a href="jsxc.gui.template.html">template</a></li><li><a href="jsxc.gui.window.html">window</a></li><li><a href="jsxc.muc.html">muc</a></li><li><a href="jsxc.notification.html">notification</a></li><li><a href="jsxc.options.html">options</a></li><li><a href="jsxc.otr.html">otr</a></li><li><a href="jsxc.storage.html">storage</a></li><li><a href="jsxc.webrtc.html">webrtc</a></li><li><a href="jsxc.xmpp.html">xmpp</a></li><li><a href="jsxc.xmpp.carbons.html">carbons</a></li></ul><h3><a href="global.html">Global</a></h3>
|
||||
</nav>
|
||||
|
||||
<br clear="both">
|
||||
|
||||
<footer>
|
||||
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Sat May 23 2015 16:03:19 GMT+0200 (CEST)
|
||||
</footer>
|
||||
|
||||
<script> prettyPrint(); </script>
|
||||
<script src="scripts/linenumber.js"> </script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,556 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>JSDoc: Namespace: dialog</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: dialog</h1>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<section>
|
||||
|
||||
<header>
|
||||
<h2>
|
||||
<span class="ancestors"><a href="jsxc.html">jsxc</a><a href="jsxc.gui.html">.gui</a>.</span>
|
||||
|
||||
dialog
|
||||
</h2>
|
||||
|
||||
</header>
|
||||
|
||||
<article>
|
||||
<div class="container-overview">
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="description">Wrapper for dialog</div>
|
||||
|
||||
|
||||
|
||||
<dl class="details">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<dt class="tag-source">Source:</dt>
|
||||
<dd class="tag-source"><ul class="dummy"><li>
|
||||
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line1596">line 1596</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h3 class="subsection-title">Methods</h3>
|
||||
|
||||
<dl>
|
||||
|
||||
<dt>
|
||||
<h4 class="name" id="close"><span class="type-signature"><static> </span>close<span class="signature">()</span><span class="type-signature"></span></h4>
|
||||
|
||||
|
||||
</dt>
|
||||
<dd>
|
||||
|
||||
|
||||
<div class="description">
|
||||
Close current dialog.
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<dl class="details">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<dt class="tag-source">Source:</dt>
|
||||
<dd class="tag-source"><ul class="dummy"><li>
|
||||
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line1688">line 1688</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</dd>
|
||||
|
||||
|
||||
|
||||
<dt>
|
||||
<h4 class="name" id="open"><span class="type-signature"><static> </span>open<span class="signature">(data, <span class="optional">o</span>)</span><span class="type-signature"> → {jQuery}</span></h4>
|
||||
|
||||
|
||||
</dt>
|
||||
<dd>
|
||||
|
||||
|
||||
<div class="description">
|
||||
Open a Dialog.
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h5>Parameters:</h5>
|
||||
|
||||
|
||||
<table class="params">
|
||||
<thead>
|
||||
<tr>
|
||||
|
||||
<th>Name</th>
|
||||
|
||||
|
||||
<th>Type</th>
|
||||
|
||||
|
||||
<th>Argument</th>
|
||||
|
||||
|
||||
|
||||
|
||||
<th class="last">Description</th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
<tbody>
|
||||
|
||||
|
||||
<tr>
|
||||
|
||||
<td class="name"><code>data</code></td>
|
||||
|
||||
|
||||
<td class="type">
|
||||
|
||||
|
||||
<span class="param-type">String</span>
|
||||
|
||||
|
||||
|
||||
</td>
|
||||
|
||||
|
||||
<td class="attributes">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</td>
|
||||
|
||||
|
||||
|
||||
|
||||
<td class="description last">Data of the dialog</td>
|
||||
</tr>
|
||||
|
||||
|
||||
|
||||
<tr>
|
||||
|
||||
<td class="name"><code>o</code></td>
|
||||
|
||||
|
||||
<td class="type">
|
||||
|
||||
|
||||
<span class="param-type">Object</span>
|
||||
|
||||
|
||||
|
||||
</td>
|
||||
|
||||
|
||||
<td class="attributes">
|
||||
|
||||
<optional><br>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</td>
|
||||
|
||||
|
||||
|
||||
|
||||
<td class="description last">Options for the dialog
|
||||
<h6>Properties</h6>
|
||||
|
||||
|
||||
<table class="params">
|
||||
<thead>
|
||||
<tr>
|
||||
|
||||
<th>Name</th>
|
||||
|
||||
|
||||
<th>Type</th>
|
||||
|
||||
|
||||
<th>Argument</th>
|
||||
|
||||
|
||||
|
||||
|
||||
<th class="last">Description</th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
<tbody>
|
||||
|
||||
|
||||
<tr>
|
||||
|
||||
<td class="name"><code>noClose</code></td>
|
||||
|
||||
|
||||
<td class="type">
|
||||
|
||||
|
||||
<span class="param-type">Boolean</span>
|
||||
|
||||
|
||||
|
||||
</td>
|
||||
|
||||
|
||||
<td class="attributes">
|
||||
|
||||
<optional><br>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</td>
|
||||
|
||||
|
||||
|
||||
|
||||
<td class="description last">If true, hide all default close options</td>
|
||||
</tr>
|
||||
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
</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.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line1611">line 1611</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h5>Returns:</h5>
|
||||
|
||||
|
||||
<div class="param-desc">
|
||||
Dialog object
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<dl>
|
||||
<dt>
|
||||
Type
|
||||
</dt>
|
||||
<dd>
|
||||
|
||||
<span class="param-type">jQuery</span>
|
||||
|
||||
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
</dd>
|
||||
|
||||
|
||||
|
||||
<dt>
|
||||
<h4 class="name" id="resize"><span class="type-signature"><static> </span>resize<span class="signature">(options)</span><span class="type-signature"></span></h4>
|
||||
|
||||
|
||||
</dt>
|
||||
<dd>
|
||||
|
||||
|
||||
<div class="description">
|
||||
Resizes current dialog.
|
||||
</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>options</code></td>
|
||||
|
||||
|
||||
<td class="type">
|
||||
|
||||
|
||||
<span class="param-type">Object</span>
|
||||
|
||||
|
||||
|
||||
</td>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<td class="description last">e.g. width and height</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.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line1698">line 1698</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</dd>
|
||||
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</article>
|
||||
|
||||
</section>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<nav>
|
||||
<h2><a href="index.html">Index</a></h2><h3>Namespaces</h3><ul><li><a href="jsxc.html">jsxc</a></li><li><a href="jsxc.gui.html">gui</a></li><li><a href="jsxc.gui.dialog.html">dialog</a></li><li><a href="jsxc.gui.queryActions.html">queryActions</a></li><li><a href="jsxc.gui.roster.html">roster</a></li><li><a href="jsxc.gui.template.html">template</a></li><li><a href="jsxc.gui.window.html">window</a></li><li><a href="jsxc.muc.html">muc</a></li><li><a href="jsxc.notification.html">notification</a></li><li><a href="jsxc.options.html">options</a></li><li><a href="jsxc.otr.html">otr</a></li><li><a href="jsxc.storage.html">storage</a></li><li><a href="jsxc.webrtc.html">webrtc</a></li><li><a href="jsxc.xmpp.html">xmpp</a></li><li><a href="jsxc.xmpp.carbons.html">carbons</a></li></ul><h3><a href="global.html">Global</a></h3>
|
||||
</nav>
|
||||
|
||||
<br clear="both">
|
||||
|
||||
<footer>
|
||||
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Sat May 23 2015 16:03:19 GMT+0200 (CEST)
|
||||
</footer>
|
||||
|
||||
<script> prettyPrint(); </script>
|
||||
<script src="scripts/linenumber.js"> </script>
|
||||
</body>
|
||||
</html>
|
||||
+3286
Diferenças do arquivo suprimidas por serem muito extensas
Carregar Diff
@@ -0,0 +1,404 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>JSDoc: Namespace: queryActions</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: queryActions</h1>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<section>
|
||||
|
||||
<header>
|
||||
<h2>
|
||||
<span class="ancestors"><a href="jsxc.html">jsxc</a><a href="jsxc.gui.html">.gui</a>.</span>
|
||||
|
||||
queryActions
|
||||
</h2>
|
||||
|
||||
</header>
|
||||
|
||||
<article>
|
||||
<div class="container-overview">
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="description">Different uri query actions as defined in XEP-0147.</div>
|
||||
|
||||
|
||||
|
||||
<dl class="details">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<dt class="tag-source">Source:</dt>
|
||||
<dd class="tag-source"><ul class="dummy"><li>
|
||||
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line10">line 10</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h3 class="subsection-title">Methods</h3>
|
||||
|
||||
<dl>
|
||||
|
||||
<dt>
|
||||
<h4 class="name" id="message"><span class="type-signature"><static> </span>message<span class="signature">()</span><span class="type-signature"></span></h4>
|
||||
|
||||
|
||||
</dt>
|
||||
<dd>
|
||||
|
||||
|
||||
<div class="description">
|
||||
xmpp:JID?message[;body=TEXT]
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<dl class="details">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<dt class="tag-source">Source:</dt>
|
||||
<dd class="tag-source"><ul class="dummy"><li>
|
||||
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line17">line 17</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</dd>
|
||||
|
||||
|
||||
|
||||
<dt>
|
||||
<h4 class="name" id="remove"><span class="type-signature"><static> </span>remove<span class="signature">()</span><span class="type-signature"></span></h4>
|
||||
|
||||
|
||||
</dt>
|
||||
<dd>
|
||||
|
||||
|
||||
<div class="description">
|
||||
xmpp:JID?remove
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<dl class="details">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<dt class="tag-source">Source:</dt>
|
||||
<dd class="tag-source"><ul class="dummy"><li>
|
||||
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line26">line 26</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</dd>
|
||||
|
||||
|
||||
|
||||
<dt>
|
||||
<h4 class="name" id="subscribe"><span class="type-signature"><static> </span>subscribe<span class="signature">()</span><span class="type-signature"></span></h4>
|
||||
|
||||
|
||||
</dt>
|
||||
<dd>
|
||||
|
||||
|
||||
<div class="description">
|
||||
xmpp:JID?subscribe[;name=NAME]
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<dl class="details">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<dt class="tag-source">Source:</dt>
|
||||
<dd class="tag-source"><ul class="dummy"><li>
|
||||
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line31">line 31</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</dd>
|
||||
|
||||
|
||||
|
||||
<dt>
|
||||
<h4 class="name" id="vcard"><span class="type-signature"><static> </span>vcard<span class="signature">()</span><span class="type-signature"></span></h4>
|
||||
|
||||
|
||||
</dt>
|
||||
<dd>
|
||||
|
||||
|
||||
<div class="description">
|
||||
xmpp:JID?vcard
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<dl class="details">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<dt class="tag-source">Source:</dt>
|
||||
<dd class="tag-source"><ul class="dummy"><li>
|
||||
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line40">line 40</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</dd>
|
||||
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</article>
|
||||
|
||||
</section>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<nav>
|
||||
<h2><a href="index.html">Index</a></h2><h3>Namespaces</h3><ul><li><a href="jsxc.html">jsxc</a></li><li><a href="jsxc.gui.html">gui</a></li><li><a href="jsxc.gui.dialog.html">dialog</a></li><li><a href="jsxc.gui.queryActions.html">queryActions</a></li><li><a href="jsxc.gui.roster.html">roster</a></li><li><a href="jsxc.gui.template.html">template</a></li><li><a href="jsxc.gui.window.html">window</a></li><li><a href="jsxc.muc.html">muc</a></li><li><a href="jsxc.notification.html">notification</a></li><li><a href="jsxc.options.html">options</a></li><li><a href="jsxc.otr.html">otr</a></li><li><a href="jsxc.storage.html">storage</a></li><li><a href="jsxc.webrtc.html">webrtc</a></li><li><a href="jsxc.xmpp.html">xmpp</a></li><li><a href="jsxc.xmpp.carbons.html">carbons</a></li></ul><h3><a href="global.html">Global</a></h3>
|
||||
</nav>
|
||||
|
||||
<br clear="both">
|
||||
|
||||
<footer>
|
||||
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Sat May 23 2015 16:03:19 GMT+0200 (CEST)
|
||||
</footer>
|
||||
|
||||
<script> prettyPrint(); </script>
|
||||
<script src="scripts/linenumber.js"> </script>
|
||||
</body>
|
||||
</html>
|
||||
Diferenças do arquivo suprimidas por serem muito extensas
Carregar Diff
@@ -0,0 +1,124 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>JSDoc: Namespace: template</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: template</h1>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<section>
|
||||
|
||||
<header>
|
||||
<h2>
|
||||
<span class="ancestors"><a href="jsxc.html">jsxc</a><a href="jsxc.gui.html">.gui</a>.</span>
|
||||
|
||||
template
|
||||
</h2>
|
||||
|
||||
</header>
|
||||
|
||||
<article>
|
||||
<div class="container-overview">
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="description">Hold all HTML templates.</div>
|
||||
|
||||
|
||||
|
||||
<dl class="details">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<dt class="tag-source">Source:</dt>
|
||||
<dd class="tag-source"><ul class="dummy"><li>
|
||||
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line2288">line 2288</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</article>
|
||||
|
||||
</section>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<nav>
|
||||
<h2><a href="index.html">Index</a></h2><h3>Namespaces</h3><ul><li><a href="jsxc.html">jsxc</a></li><li><a href="jsxc.gui.html">gui</a></li><li><a href="jsxc.gui.dialog.html">dialog</a></li><li><a href="jsxc.gui.queryActions.html">queryActions</a></li><li><a href="jsxc.gui.roster.html">roster</a></li><li><a href="jsxc.gui.template.html">template</a></li><li><a href="jsxc.gui.window.html">window</a></li><li><a href="jsxc.muc.html">muc</a></li><li><a href="jsxc.notification.html">notification</a></li><li><a href="jsxc.options.html">options</a></li><li><a href="jsxc.otr.html">otr</a></li><li><a href="jsxc.storage.html">storage</a></li><li><a href="jsxc.webrtc.html">webrtc</a></li><li><a href="jsxc.xmpp.html">xmpp</a></li><li><a href="jsxc.xmpp.carbons.html">carbons</a></li></ul><h3><a href="global.html">Global</a></h3>
|
||||
</nav>
|
||||
|
||||
<br clear="both">
|
||||
|
||||
<footer>
|
||||
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Sat May 23 2015 16:03:19 GMT+0200 (CEST)
|
||||
</footer>
|
||||
|
||||
<script> prettyPrint(); </script>
|
||||
<script src="scripts/linenumber.js"> </script>
|
||||
</body>
|
||||
</html>
|
||||
Diferenças do arquivo suprimidas por serem muito extensas
Carregar Diff
+4055
Diferenças do arquivo suprimidas por serem muito extensas
Carregar Diff
@@ -0,0 +1,124 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>JSDoc: Namespace: l10n</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: l10n</h1>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<section>
|
||||
|
||||
<header>
|
||||
<h2>
|
||||
<span class="ancestors"><a href="jsxc.html">jsxc</a>.</span>
|
||||
|
||||
l10n
|
||||
</h2>
|
||||
|
||||
</header>
|
||||
|
||||
<article>
|
||||
<div class="container-overview">
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="description">Contains all available translations</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#line5777">line 5777</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</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:14 GMT+0100 (CET)
|
||||
</footer>
|
||||
|
||||
<script> prettyPrint(); </script>
|
||||
<script src="scripts/linenumber.js"> </script>
|
||||
</body>
|
||||
</html>
|
||||
Diferenças do arquivo suprimidas por serem muito extensas
Carregar Diff
@@ -0,0 +1,829 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>JSDoc: Source: jsxc.lib.js</title>
|
||||
|
||||
<script src="scripts/prettify/prettify.js"> </script>
|
||||
<script src="scripts/prettify/lang-css.js"> </script>
|
||||
<!--[if lt IE 9]>
|
||||
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
|
||||
<![endif]-->
|
||||
<link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css">
|
||||
<link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<div id="main">
|
||||
|
||||
<h1 class="page-title">Source: jsxc.lib.js</h1>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<section>
|
||||
<article>
|
||||
<pre class="prettyprint source"><code>/**
|
||||
* 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);
|
||||
}
|
||||
|
||||
// Check localStorage
|
||||
if (typeof (localStorage) === 'undefined') {
|
||||
jsxc.warn("Browser doesn't support localStorage.");
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* 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,
|
||||
});
|
||||
|
||||
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) {
|
||||
|
||||
// clean up rid and sid
|
||||
jsxc.storage.removeItem('rid');
|
||||
jsxc.storage.removeItem('sid');
|
||||
|
||||
// Looking for a login form
|
||||
if (!jsxc.options.loginForm.form || !(jsxc.el_exists(jsxc.options.loginForm.form) && jsxc.el_exists(jsxc.options.loginForm.jid) && jsxc.el_exists(jsxc.options.loginForm.pass))) {
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
if (!jsxc.triggeredFromBox && (jsxc.options.loginForm.onConnecting === 'dialog' || typeof jsxc.options.loginForm.onConnecting === 'undefined')) {
|
||||
jsxc.gui.showWaitAlert($.t('Logging_in'));
|
||||
}
|
||||
|
||||
var settings = jsxc.options.loadSettings.call(this, username, password);
|
||||
|
||||
if (settings === false || settings === null || typeof settings === 'undefined') {
|
||||
jsxc.warn('No settings provided');
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
// prevent to modify the original object
|
||||
settings = $.extend(true, {}, settings);
|
||||
|
||||
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);
|
||||
});
|
||||
|
||||
jsxc.gui.roster.loaded = true;
|
||||
$(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;
|
||||
}
|
||||
};
|
||||
</code></pre>
|
||||
</article>
|
||||
</section>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<nav>
|
||||
<h2><a href="index.html">Index</a></h2><h3>Namespaces</h3><ul><li><a href="jsxc.html">jsxc</a></li><li><a href="jsxc.gui.html">gui</a></li><li><a href="jsxc.gui.dialog.html">dialog</a></li><li><a href="jsxc.gui.queryActions.html">queryActions</a></li><li><a href="jsxc.gui.roster.html">roster</a></li><li><a href="jsxc.gui.template.html">template</a></li><li><a href="jsxc.gui.window.html">window</a></li><li><a href="jsxc.muc.html">muc</a></li><li><a href="jsxc.notification.html">notification</a></li><li><a href="jsxc.options.html">options</a></li><li><a href="jsxc.otr.html">otr</a></li><li><a href="jsxc.storage.html">storage</a></li><li><a href="jsxc.webrtc.html">webrtc</a></li><li><a href="jsxc.xmpp.html">xmpp</a></li><li><a href="jsxc.xmpp.carbons.html">carbons</a></li></ul><h3><a href="global.html">Global</a></h3>
|
||||
</nav>
|
||||
|
||||
<br clear="both">
|
||||
|
||||
<footer>
|
||||
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Sat May 23 2015 16:03:18 GMT+0200 (CEST)
|
||||
</footer>
|
||||
|
||||
<script> prettyPrint(); </script>
|
||||
<script src="scripts/linenumber.js"> </script>
|
||||
</body>
|
||||
</html>
|
||||
Diferenças do arquivo suprimidas por serem muito extensas
Carregar Diff
@@ -0,0 +1,166 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>JSDoc: Source: jsxc.lib.notice.js</title>
|
||||
|
||||
<script src="scripts/prettify/prettify.js"> </script>
|
||||
<script src="scripts/prettify/lang-css.js"> </script>
|
||||
<!--[if lt IE 9]>
|
||||
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
|
||||
<![endif]-->
|
||||
<link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css">
|
||||
<link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<div id="main">
|
||||
|
||||
<h1 class="page-title">Source: jsxc.lib.notice.js</h1>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<section>
|
||||
<article>
|
||||
<pre class="prettyprint source"><code>/**
|
||||
* This namespace handle the notice system.
|
||||
*
|
||||
* @namspace jsxc.notice
|
||||
* @memberOf jsxc
|
||||
*/
|
||||
jsxc.notice = {
|
||||
/** Number of notices. */
|
||||
_num: 0,
|
||||
|
||||
/**
|
||||
* Loads the saved notices.
|
||||
*
|
||||
* @memberOf jsxc.notice
|
||||
*/
|
||||
load: function() {
|
||||
// reset list
|
||||
$('#jsxc_notice ul li').remove();
|
||||
$('#jsxc_notice > span').text('');
|
||||
jsxc.notice._num = 0;
|
||||
|
||||
var saved = jsxc.storage.getUserItem('notices') || [];
|
||||
var key = null;
|
||||
|
||||
for (key in saved) {
|
||||
if (saved.hasOwnProperty(key)) {
|
||||
var val = saved[key];
|
||||
|
||||
jsxc.notice.add(val.msg, val.description, val.fnName, val.fnParams, key);
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Add a new notice to the stack;
|
||||
*
|
||||
* @memberOf jsxc.notice
|
||||
* @param msg Header message
|
||||
* @param description Notice description
|
||||
* @param fnName Function name to be called if you open the notice
|
||||
* @param fnParams Array of params for function
|
||||
* @param id Notice id
|
||||
*/
|
||||
add: function(msg, description, fnName, fnParams, id) {
|
||||
var nid = id || Date.now();
|
||||
var list = $('#jsxc_notice ul');
|
||||
var notice = $('<li/>');
|
||||
|
||||
notice.click(function() {
|
||||
jsxc.notice.remove(nid);
|
||||
|
||||
jsxc.exec(fnName, fnParams);
|
||||
|
||||
return false;
|
||||
});
|
||||
|
||||
notice.text(msg);
|
||||
notice.attr('title', description || '');
|
||||
notice.attr('data-nid', nid);
|
||||
list.append(notice);
|
||||
|
||||
$('#jsxc_notice > span').text(++jsxc.notice._num);
|
||||
|
||||
if (!id) {
|
||||
var saved = jsxc.storage.getUserItem('notices') || {};
|
||||
saved[nid] = {
|
||||
msg: msg,
|
||||
description: description,
|
||||
fnName: fnName,
|
||||
fnParams: fnParams
|
||||
};
|
||||
jsxc.storage.setUserItem('notices', saved);
|
||||
|
||||
jsxc.notification.notify(msg, description || '', null, true, jsxc.CONST.SOUNDS.NOTICE);
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Removes notice from stack
|
||||
*
|
||||
* @memberOf jsxc.notice
|
||||
* @param nid The notice id
|
||||
*/
|
||||
remove: function(nid) {
|
||||
var el = $('#jsxc_notice li[data-nid=' + nid + ']');
|
||||
|
||||
el.remove();
|
||||
$('#jsxc_notice > span').text(--jsxc.notice._num || '');
|
||||
|
||||
var s = jsxc.storage.getUserItem('notices');
|
||||
delete s[nid];
|
||||
jsxc.storage.setUserItem('notices', s);
|
||||
},
|
||||
|
||||
/**
|
||||
* Check if there is already a notice for the given function name.
|
||||
*
|
||||
* @memberOf jsxc.notice
|
||||
* @param {string} fnName Function name
|
||||
* @returns {boolean} True if there is >0 functions with the given name
|
||||
*/
|
||||
has: function(fnName) {
|
||||
var saved = jsxc.storage.getUserItem('notices') || [];
|
||||
var has = false;
|
||||
|
||||
$.each(saved, function(index, val){
|
||||
if (val.fnName === fnName) {
|
||||
has = true;
|
||||
|
||||
return false;
|
||||
}
|
||||
});
|
||||
|
||||
return has;
|
||||
}
|
||||
};
|
||||
</code></pre>
|
||||
</article>
|
||||
</section>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<nav>
|
||||
<h2><a href="index.html">Index</a></h2><h3>Namespaces</h3><ul><li><a href="jsxc.html">jsxc</a></li><li><a href="jsxc.gui.html">gui</a></li><li><a href="jsxc.gui.dialog.html">dialog</a></li><li><a href="jsxc.gui.queryActions.html">queryActions</a></li><li><a href="jsxc.gui.roster.html">roster</a></li><li><a href="jsxc.gui.template.html">template</a></li><li><a href="jsxc.gui.window.html">window</a></li><li><a href="jsxc.muc.html">muc</a></li><li><a href="jsxc.notification.html">notification</a></li><li><a href="jsxc.options.html">options</a></li><li><a href="jsxc.otr.html">otr</a></li><li><a href="jsxc.storage.html">storage</a></li><li><a href="jsxc.webrtc.html">webrtc</a></li><li><a href="jsxc.xmpp.html">xmpp</a></li><li><a href="jsxc.xmpp.carbons.html">carbons</a></li></ul><h3><a href="global.html">Global</a></h3>
|
||||
</nav>
|
||||
|
||||
<br clear="both">
|
||||
|
||||
<footer>
|
||||
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Sat May 23 2015 16:03:18 GMT+0200 (CEST)
|
||||
</footer>
|
||||
|
||||
<script> prettyPrint(); </script>
|
||||
<script src="scripts/linenumber.js"> </script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,322 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>JSDoc: Source: jsxc.lib.notification.js</title>
|
||||
|
||||
<script src="scripts/prettify/prettify.js"> </script>
|
||||
<script src="scripts/prettify/lang-css.js"> </script>
|
||||
<!--[if lt IE 9]>
|
||||
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
|
||||
<![endif]-->
|
||||
<link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css">
|
||||
<link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<div id="main">
|
||||
|
||||
<h1 class="page-title">Source: jsxc.lib.notification.js</h1>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<section>
|
||||
<article>
|
||||
<pre class="prettyprint source"><code>/**
|
||||
* This namespace handles the Notification API.
|
||||
*
|
||||
* @namespace jsxc.notification
|
||||
*/
|
||||
jsxc.notification = {
|
||||
|
||||
/** Current audio file. */
|
||||
audio: null,
|
||||
|
||||
/**
|
||||
* Register notification on incoming messages.
|
||||
*
|
||||
* @memberOf jsxc.notification
|
||||
*/
|
||||
init: function() {
|
||||
$(document).on('postmessagein.jsxc', function(event, bid, msg) {
|
||||
msg = (msg.match(/^\?OTR/)) ? $.t('Encrypted_message') : msg;
|
||||
var data = jsxc.storage.getUserItem('buddy', bid);
|
||||
|
||||
jsxc.notification.notify({
|
||||
title: $.t('New_message_from') + ' ' + data.name,
|
||||
msg: msg,
|
||||
soundFile: jsxc.CONST.SOUNDS.MSG,
|
||||
source: bid
|
||||
});
|
||||
});
|
||||
|
||||
$(document).on('callincoming.jingle', function() {
|
||||
jsxc.notification.playSound(jsxc.CONST.SOUNDS.CALL, true, true);
|
||||
});
|
||||
|
||||
$(document).on('accept.call.jsxc reject.call.jsxc', function() {
|
||||
jsxc.notification.stopSound();
|
||||
});
|
||||
},
|
||||
|
||||
/**
|
||||
* Shows a pop up notification and optional play sound.
|
||||
*
|
||||
* @param title Title
|
||||
* @param msg Message
|
||||
* @param d Duration
|
||||
* @param force Should message also shown, if tab is visible?
|
||||
* @param soundFile Playing given sound file
|
||||
* @param loop Loop sound file?
|
||||
* @param source Bid which triggered this notification
|
||||
*/
|
||||
notify: function(title, msg, d, force, soundFile, loop, source) {
|
||||
if (!jsxc.options.notification || !jsxc.notification.hasPermission()) {
|
||||
return; // notifications disabled
|
||||
}
|
||||
|
||||
var o;
|
||||
|
||||
if (title !== null && typeof title === 'object') {
|
||||
o = title;
|
||||
} else {
|
||||
o = {
|
||||
title: title,
|
||||
msg: msg,
|
||||
duration: d,
|
||||
force: force,
|
||||
soundFile: soundFile,
|
||||
loop: loop,
|
||||
source: source
|
||||
};
|
||||
}
|
||||
|
||||
if (jsxc.hasFocus() && !o.force) {
|
||||
return; // Tab is visible
|
||||
}
|
||||
|
||||
var icon = o.icon || jsxc.options.root + '/img/XMPP_logo.png';
|
||||
|
||||
if (typeof o.source === 'string') {
|
||||
var data = jsxc.storage.getUserItem('buddy', o.source);
|
||||
var src = jsxc.storage.getUserItem('avatar', data.avatar);
|
||||
|
||||
if (typeof src === 'string' && src !== '0') {
|
||||
icon = src;
|
||||
}
|
||||
}
|
||||
|
||||
jsxc.toNotification = setTimeout(function() {
|
||||
|
||||
if (typeof o.soundFile === 'string') {
|
||||
jsxc.notification.playSound(o.soundFile, o.loop, o.force);
|
||||
}
|
||||
|
||||
var popup = new Notification($.t(o.title), {
|
||||
body: $.t(o.msg),
|
||||
icon: icon
|
||||
});
|
||||
|
||||
var duration = o.duration || jsxc.options.popupDuration;
|
||||
|
||||
if (duration > 0) {
|
||||
setTimeout(function() {
|
||||
popup.close();
|
||||
}, duration);
|
||||
}
|
||||
}, jsxc.toNotificationDelay);
|
||||
},
|
||||
|
||||
/**
|
||||
* Checks if browser has support for notifications and add on chrome to the
|
||||
* default api.
|
||||
*
|
||||
* @returns {Boolean} True if the browser has support.
|
||||
*/
|
||||
hasSupport: function() {
|
||||
if (window.webkitNotifications) {
|
||||
// prepare chrome
|
||||
|
||||
window.Notification = function(title, opt) {
|
||||
var popup = window.webkitNotifications.createNotification(null, title, opt.body);
|
||||
popup.show();
|
||||
|
||||
popup.close = function() {
|
||||
popup.cancel();
|
||||
};
|
||||
|
||||
return popup;
|
||||
};
|
||||
|
||||
var permission;
|
||||
switch (window.webkitNotifications.checkPermission()) {
|
||||
case 0:
|
||||
permission = jsxc.CONST.NOTIFICATION_GRANTED;
|
||||
break;
|
||||
case 2:
|
||||
permission = jsxc.CONST.NOTIFICATION_DENIED;
|
||||
break;
|
||||
default: // 1
|
||||
permission = jsxc.CONST.NOTIFICATION_DEFAULT;
|
||||
}
|
||||
window.Notification.permission = permission;
|
||||
|
||||
window.Notification.requestPermission = function(func) {
|
||||
window.webkitNotifications.requestPermission(func);
|
||||
};
|
||||
|
||||
return true;
|
||||
} else if (window.Notification) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Ask user on first incoming message if we should inform him about new
|
||||
* messages.
|
||||
*/
|
||||
prepareRequest: function() {
|
||||
|
||||
if (jsxc.notice.has('gui.showRequestNotification')) {
|
||||
return;
|
||||
}
|
||||
|
||||
$(document).one('postmessagein.jsxc', function() {
|
||||
setTimeout(function() {
|
||||
jsxc.notice.add($.t('Notifications') + '?', $.t('Should_we_notify_you_'), 'gui.showRequestNotification');
|
||||
}, 1000);
|
||||
});
|
||||
},
|
||||
|
||||
/**
|
||||
* Request notification permission.
|
||||
*/
|
||||
requestPermission: function() {
|
||||
window.Notification.requestPermission(function(status) {
|
||||
if (window.Notification.permission !== status) {
|
||||
window.Notification.permission = status;
|
||||
}
|
||||
|
||||
if (jsxc.notification.hasPermission()) {
|
||||
$(document).trigger('notificationready.jsxc');
|
||||
} else {
|
||||
$(document).trigger('notificationfailure.jsxc');
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
/**
|
||||
* Check permission.
|
||||
*
|
||||
* @returns {Boolean} True if we have the permission
|
||||
*/
|
||||
hasPermission: function() {
|
||||
return window.Notification.permission === jsxc.CONST.NOTIFICATION_GRANTED;
|
||||
},
|
||||
|
||||
/**
|
||||
* Plays the given file.
|
||||
*
|
||||
* @memberOf jsxc.notification
|
||||
* @param {string} soundFile File relative to the sound directory
|
||||
* @param {boolean} loop True for loop
|
||||
* @param {boolean} force Play even if a tab is visible. Default: false.
|
||||
*/
|
||||
playSound: function(soundFile, loop, force) {
|
||||
if (!jsxc.master) {
|
||||
// only master plays sound
|
||||
return;
|
||||
}
|
||||
|
||||
if (jsxc.options.get('muteNotification') || jsxc.storage.getUserItem('presence') === 'dnd') {
|
||||
// sound mute or own presence is dnd
|
||||
return;
|
||||
}
|
||||
|
||||
if (jsxc.hasFocus() && !force) {
|
||||
// tab is visible
|
||||
return;
|
||||
}
|
||||
|
||||
// stop current audio file
|
||||
jsxc.notification.stopSound();
|
||||
|
||||
var audio = new Audio(jsxc.options.root + '/sound/' + soundFile);
|
||||
audio.loop = loop || false;
|
||||
audio.play();
|
||||
|
||||
jsxc.notification.audio = audio;
|
||||
},
|
||||
|
||||
/**
|
||||
* Stop/remove current sound.
|
||||
*
|
||||
* @memberOf jsxc.notification
|
||||
*/
|
||||
stopSound: function() {
|
||||
var audio = jsxc.notification.audio;
|
||||
|
||||
if (typeof audio !== 'undefined' && audio !== null) {
|
||||
audio.pause();
|
||||
jsxc.notification.audio = null;
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Mute sound.
|
||||
*
|
||||
* @memberOf jsxc.notification
|
||||
* @param {boolean} external True if triggered from external tab. Default:
|
||||
* false.
|
||||
*/
|
||||
muteSound: function(external) {
|
||||
$('#jsxc_menu .jsxc_muteNotification').text($.t('Unmute'));
|
||||
|
||||
if (external !== true) {
|
||||
jsxc.options.set('muteNotification', true);
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Unmute sound.
|
||||
*
|
||||
* @memberOf jsxc.notification
|
||||
* @param {boolean} external True if triggered from external tab. Default:
|
||||
* false.
|
||||
*/
|
||||
unmuteSound: function(external) {
|
||||
$('#jsxc_menu .jsxc_muteNotification').text($.t('Mute'));
|
||||
|
||||
if (external !== true) {
|
||||
jsxc.options.set('muteNotification', false);
|
||||
}
|
||||
}
|
||||
};
|
||||
</code></pre>
|
||||
</article>
|
||||
</section>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<nav>
|
||||
<h2><a href="index.html">Index</a></h2><h3>Namespaces</h3><ul><li><a href="jsxc.html">jsxc</a></li><li><a href="jsxc.gui.html">gui</a></li><li><a href="jsxc.gui.dialog.html">dialog</a></li><li><a href="jsxc.gui.queryActions.html">queryActions</a></li><li><a href="jsxc.gui.roster.html">roster</a></li><li><a href="jsxc.gui.template.html">template</a></li><li><a href="jsxc.gui.window.html">window</a></li><li><a href="jsxc.muc.html">muc</a></li><li><a href="jsxc.notification.html">notification</a></li><li><a href="jsxc.options.html">options</a></li><li><a href="jsxc.otr.html">otr</a></li><li><a href="jsxc.storage.html">storage</a></li><li><a href="jsxc.webrtc.html">webrtc</a></li><li><a href="jsxc.xmpp.html">xmpp</a></li><li><a href="jsxc.xmpp.carbons.html">carbons</a></li></ul><h3><a href="global.html">Global</a></h3>
|
||||
</nav>
|
||||
|
||||
<br clear="both">
|
||||
|
||||
<footer>
|
||||
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Sat May 23 2015 16:03:18 GMT+0200 (CEST)
|
||||
</footer>
|
||||
|
||||
<script> prettyPrint(); </script>
|
||||
<script src="scripts/linenumber.js"> </script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,224 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>JSDoc: Source: jsxc.lib.options.js</title>
|
||||
|
||||
<script src="scripts/prettify/prettify.js"> </script>
|
||||
<script src="scripts/prettify/lang-css.js"> </script>
|
||||
<!--[if lt IE 9]>
|
||||
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
|
||||
<![endif]-->
|
||||
<link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css">
|
||||
<link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<div id="main">
|
||||
|
||||
<h1 class="page-title">Source: jsxc.lib.options.js</h1>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<section>
|
||||
<article>
|
||||
<pre class="prettyprint source"><code>/**
|
||||
* Set some options for the chat.
|
||||
*
|
||||
* @namespace jsxc.options
|
||||
*/
|
||||
jsxc.options = {
|
||||
|
||||
/** name of container application (e.g. owncloud or SOGo) */
|
||||
app_name: 'web applications',
|
||||
|
||||
/** Timeout for the keepalive signal */
|
||||
timeout: 3000,
|
||||
|
||||
/** Timeout for the keepalive signal if the master is busy */
|
||||
busyTimeout: 15000,
|
||||
|
||||
/** OTR options */
|
||||
otr: {
|
||||
enable: true,
|
||||
ERROR_START_AKE: false,
|
||||
debug: false,
|
||||
SEND_WHITESPACE_TAG: true,
|
||||
WHITESPACE_START_AKE: true
|
||||
},
|
||||
|
||||
/** xmpp options */
|
||||
xmpp: {
|
||||
url: null,
|
||||
jid: null,
|
||||
domain: null,
|
||||
password: null,
|
||||
overwrite: false,
|
||||
onlogin: true
|
||||
},
|
||||
|
||||
/** default xmpp priorities */
|
||||
priority: {
|
||||
online: 0,
|
||||
chat: 0,
|
||||
away: 0,
|
||||
xa: 0,
|
||||
dnd: 0
|
||||
},
|
||||
|
||||
/** If all 3 properties are set, the login form is used */
|
||||
loginForm: {
|
||||
/** jquery object from form */
|
||||
form: null,
|
||||
|
||||
/** jquery object from input element which contains the jid */
|
||||
jid: null,
|
||||
|
||||
/** jquery object from input element which contains the password */
|
||||
pass: null,
|
||||
|
||||
/** manipulate JID from input element */
|
||||
preJid: function(jid) {
|
||||
return jid;
|
||||
},
|
||||
|
||||
/**
|
||||
* Action after login was called: dialog [String] Show wait dialog, false [boolean] |
|
||||
* quiet [String] Do nothing
|
||||
*/
|
||||
onConnecting: 'dialog',
|
||||
|
||||
/**
|
||||
* Action after connected: submit [String] Submit form, false [boolean] Do
|
||||
* nothing, continue [String] Start chat
|
||||
*/
|
||||
onConnected: 'submit',
|
||||
|
||||
/**
|
||||
* Action after auth fail: submit [String] Submit form, false [boolean] | quiet [String] Do
|
||||
* nothing, ask [String] Show auth fail dialog
|
||||
*/
|
||||
onAuthFail: 'submit'
|
||||
},
|
||||
|
||||
/** jquery object from logout element */
|
||||
logoutElement: null,
|
||||
|
||||
/** How many messages should be logged? */
|
||||
numberOfMsg: 10,
|
||||
|
||||
/** Default language */
|
||||
defaultLang: 'en',
|
||||
|
||||
/** auto language detection */
|
||||
autoLang: true,
|
||||
|
||||
/** Place for roster */
|
||||
rosterAppend: 'body',
|
||||
|
||||
/** Should we use the HTML5 notification API? */
|
||||
notification: true,
|
||||
|
||||
/** duration for notification */
|
||||
popupDuration: 6000,
|
||||
|
||||
/** Absolute path root of JSXC installation */
|
||||
root: '',
|
||||
|
||||
/** Timeout for restore in ms */
|
||||
loginTimeout: 1000 * 60 * 10,
|
||||
|
||||
/**
|
||||
* This function decides wether the roster will be displayed or not if no
|
||||
* connection is found.
|
||||
*/
|
||||
displayRosterMinimized: function() {
|
||||
return false;
|
||||
},
|
||||
|
||||
/** Set to true if you want to hide offline buddies. */
|
||||
hideOffline: false,
|
||||
|
||||
/** Mute notification sound? */
|
||||
muteNotification: false,
|
||||
|
||||
/**
|
||||
* If no avatar is found, this function is called.
|
||||
*
|
||||
* @param jid Jid of that user.
|
||||
* @this {jQuery} Elements to update with probable .jsxc_avatar elements
|
||||
*/
|
||||
defaultAvatar: function(jid) {
|
||||
jsxc.gui.avatarPlaceholder($(this).find('.jsxc_avatar'), jid);
|
||||
},
|
||||
|
||||
/**
|
||||
* Returns permanent saved settings and overwrite default jsxc.options.
|
||||
*
|
||||
* @memberOf jsxc.options
|
||||
* @param username String username
|
||||
* @param password String password
|
||||
* @returns {object} at least xmpp.url
|
||||
*/
|
||||
loadSettings: function() {
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* Call this function to save user settings permanent.
|
||||
*
|
||||
* @memberOf jsxc.options
|
||||
* @param data Holds all data as key/value
|
||||
* @returns {boolean} false if function failes
|
||||
*/
|
||||
saveSettinsPermanent: function() {
|
||||
|
||||
},
|
||||
|
||||
carbons: {
|
||||
/** Enable carbon copies? */
|
||||
enable: false
|
||||
},
|
||||
|
||||
/**
|
||||
* Processes user list.
|
||||
*
|
||||
* @callback getUsers-cb
|
||||
* @param {object} list List of users, key: username, value: alias
|
||||
*/
|
||||
|
||||
/**
|
||||
* Returns a list of usernames and aliases
|
||||
*
|
||||
* @function getUsers
|
||||
* @memberOf jsxc.options
|
||||
* @param {string} search Search token (start with)
|
||||
* @param {getUsers-cb} cb Called with list of users
|
||||
*/
|
||||
getUsers: null
|
||||
};</code></pre>
|
||||
</article>
|
||||
</section>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<nav>
|
||||
<h2><a href="index.html">Index</a></h2><h3>Namespaces</h3><ul><li><a href="jsxc.html">jsxc</a></li><li><a href="jsxc.gui.html">gui</a></li><li><a href="jsxc.gui.dialog.html">dialog</a></li><li><a href="jsxc.gui.queryActions.html">queryActions</a></li><li><a href="jsxc.gui.roster.html">roster</a></li><li><a href="jsxc.gui.template.html">template</a></li><li><a href="jsxc.gui.window.html">window</a></li><li><a href="jsxc.muc.html">muc</a></li><li><a href="jsxc.notification.html">notification</a></li><li><a href="jsxc.options.html">options</a></li><li><a href="jsxc.otr.html">otr</a></li><li><a href="jsxc.storage.html">storage</a></li><li><a href="jsxc.webrtc.html">webrtc</a></li><li><a href="jsxc.xmpp.html">xmpp</a></li><li><a href="jsxc.xmpp.carbons.html">carbons</a></li></ul><h3><a href="global.html">Global</a></h3>
|
||||
</nav>
|
||||
|
||||
<br clear="both">
|
||||
|
||||
<footer>
|
||||
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Sat May 23 2015 16:03:18 GMT+0200 (CEST)
|
||||
</footer>
|
||||
|
||||
<script> prettyPrint(); </script>
|
||||
<script src="scripts/linenumber.js"> </script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,535 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>JSDoc: Source: jsxc.lib.otr.js</title>
|
||||
|
||||
<script src="scripts/prettify/prettify.js"> </script>
|
||||
<script src="scripts/prettify/lang-css.js"> </script>
|
||||
<!--[if lt IE 9]>
|
||||
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
|
||||
<![endif]-->
|
||||
<link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css">
|
||||
<link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<div id="main">
|
||||
|
||||
<h1 class="page-title">Source: jsxc.lib.otr.js</h1>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<section>
|
||||
<article>
|
||||
<pre class="prettyprint source"><code>
|
||||
/**
|
||||
* @namespace jsxc.otr
|
||||
*/
|
||||
jsxc.otr = {
|
||||
/** list of otr objects */
|
||||
objects: {},
|
||||
|
||||
dsaFallback: null,
|
||||
/**
|
||||
* Handler for otr receive event
|
||||
*
|
||||
* @memberOf jsxc.otr
|
||||
* @param {Object} d
|
||||
* @param {string} d.bid
|
||||
* @param {string} d.msg received message
|
||||
* @param {boolean} d.encrypted True, if msg was encrypted.
|
||||
* @param {boolean} d.forwarded
|
||||
* @param {string} d.stamp timestamp
|
||||
*/
|
||||
receiveMessage: function(d) {
|
||||
var bid = d.bid;
|
||||
|
||||
if (jsxc.otr.objects[bid].msgstate !== OTR.CONST.MSGSTATE_PLAINTEXT) {
|
||||
jsxc.otr.backup(bid);
|
||||
}
|
||||
|
||||
if (jsxc.otr.objects[bid].msgstate !== OTR.CONST.MSGSTATE_PLAINTEXT && !d.encrypted) {
|
||||
jsxc.gui.window.postMessage(bid, 'sys', $.t('Received_an_unencrypted_message') + '. [' + d.msg + ']', d.encrypted, d.forwarded, d.stamp);
|
||||
} else {
|
||||
jsxc.gui.window.postMessage(bid, 'in', d.msg, d.encrypted, d.forwarded, d.stamp);
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Handler for otr send event
|
||||
*
|
||||
* @param {string} jid
|
||||
* @param {string} msg message to be send
|
||||
*/
|
||||
sendMessage: function(jid, msg, uid) {
|
||||
if (jsxc.otr.objects[jsxc.jidToBid(jid)].msgstate !== 0) {
|
||||
jsxc.otr.backup(jsxc.jidToBid(jid));
|
||||
}
|
||||
|
||||
jsxc.xmpp._sendMessage(jid, msg, uid);
|
||||
},
|
||||
|
||||
/**
|
||||
* Create new otr instance
|
||||
*
|
||||
* @param {type} bid
|
||||
* @returns {undefined}
|
||||
*/
|
||||
create: function(bid) {
|
||||
|
||||
if (jsxc.otr.objects.hasOwnProperty(bid)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!jsxc.options.otr.priv) {
|
||||
return;
|
||||
}
|
||||
|
||||
// save list of otr objects
|
||||
var ol = jsxc.storage.getUserItem('otrlist') || [];
|
||||
if (ol.indexOf(bid) < 0) {
|
||||
ol.push(bid);
|
||||
jsxc.storage.setUserItem('otrlist', ol);
|
||||
}
|
||||
|
||||
jsxc.otr.objects[bid] = new OTR(jsxc.options.otr);
|
||||
|
||||
if (jsxc.options.otr.SEND_WHITESPACE_TAG) {
|
||||
jsxc.otr.objects[bid].SEND_WHITESPACE_TAG = true;
|
||||
}
|
||||
|
||||
if (jsxc.options.otr.WHITESPACE_START_AKE) {
|
||||
jsxc.otr.objects[bid].WHITESPACE_START_AKE = true;
|
||||
}
|
||||
|
||||
jsxc.otr.objects[bid].on('status', function(status) {
|
||||
var data = jsxc.storage.getUserItem('buddy', bid);
|
||||
|
||||
if (data === null) {
|
||||
return;
|
||||
}
|
||||
|
||||
switch (status) {
|
||||
case OTR.CONST.STATUS_SEND_QUERY:
|
||||
jsxc.gui.window.postMessage(bid, 'sys', $.t('trying_to_start_private_conversation'));
|
||||
break;
|
||||
case OTR.CONST.STATUS_AKE_SUCCESS:
|
||||
data.fingerprint = jsxc.otr.objects[bid].their_priv_pk.fingerprint();
|
||||
data.msgstate = OTR.CONST.MSGSTATE_ENCRYPTED;
|
||||
|
||||
var msg = (jsxc.otr.objects[bid].trust ? $.t('Verified') : $.t('Unverified')) + ' ' + $.t('private_conversation_started');
|
||||
jsxc.gui.window.postMessage(bid, 'sys', msg);
|
||||
break;
|
||||
case OTR.CONST.STATUS_END_OTR:
|
||||
data.fingerprint = null;
|
||||
|
||||
if (jsxc.otr.objects[bid].msgstate === OTR.CONST.MSGSTATE_PLAINTEXT) {
|
||||
// we abort the private conversation
|
||||
|
||||
data.msgstate = OTR.CONST.MSGSTATE_PLAINTEXT;
|
||||
jsxc.gui.window.postMessage(bid, 'sys', $.t('private_conversation_aborted'));
|
||||
|
||||
} else {
|
||||
// the buddy abort the private conversation
|
||||
|
||||
data.msgstate = OTR.CONST.MSGSTATE_FINISHED;
|
||||
jsxc.gui.window.postMessage(bid, 'sys', $.t('your_buddy_closed_the_private_conversation_you_should_do_the_same'));
|
||||
}
|
||||
break;
|
||||
case OTR.CONST.STATUS_SMP_HANDLE:
|
||||
jsxc.keepBusyAlive();
|
||||
break;
|
||||
}
|
||||
|
||||
jsxc.storage.setUserItem('buddy', bid, data);
|
||||
|
||||
// for encryption and verification state
|
||||
jsxc.gui.update(bid);
|
||||
});
|
||||
|
||||
jsxc.otr.objects[bid].on('smp', function(type, data) {
|
||||
switch (type) {
|
||||
case 'question': // verification request received
|
||||
jsxc.gui.window.postMessage(bid, 'sys', $.t('Authentication_request_received'));
|
||||
|
||||
if ($('#jsxc_dialog').length > 0) {
|
||||
jsxc.otr.objects[bid].sm.abort();
|
||||
break;
|
||||
}
|
||||
|
||||
jsxc.otr.onSmpQuestion(bid, data);
|
||||
jsxc.storage.setUserItem('smp_' + bid, {
|
||||
data: data || null
|
||||
});
|
||||
|
||||
break;
|
||||
case 'trust': // verification completed
|
||||
jsxc.otr.objects[bid].trust = data;
|
||||
jsxc.storage.updateUserItem('buddy', bid, 'trust', data);
|
||||
jsxc.otr.backup(bid);
|
||||
jsxc.gui.update(bid);
|
||||
|
||||
if (data) {
|
||||
jsxc.gui.window.postMessage(bid, 'sys', $.t('conversation_is_now_verified'));
|
||||
} else {
|
||||
jsxc.gui.window.postMessage(bid, 'sys', $.t('authentication_failed'));
|
||||
}
|
||||
jsxc.storage.removeUserItem('smp_' + bid);
|
||||
jsxc.gui.dialog.close();
|
||||
break;
|
||||
case 'abort':
|
||||
jsxc.gui.window.postMessage(bid, 'sys', $.t('Authentication_aborted'));
|
||||
break;
|
||||
default:
|
||||
jsxc.debug('[OTR] sm callback: Unknown type: ' + type);
|
||||
}
|
||||
});
|
||||
|
||||
// Receive message
|
||||
jsxc.otr.objects[bid].on('ui', function(msg, encrypted, meta) {
|
||||
jsxc.otr.receiveMessage({
|
||||
bid: bid,
|
||||
msg: msg,
|
||||
encrypted: encrypted === true,
|
||||
stamp: meta.stamp,
|
||||
forwarded: meta.forwarded
|
||||
});
|
||||
});
|
||||
|
||||
// Send message
|
||||
jsxc.otr.objects[bid].on('io', function(msg, uid) {
|
||||
var jid = jsxc.gui.window.get(bid).data('jid') || jsxc.otr.objects[bid].jid;
|
||||
|
||||
jsxc.otr.objects[bid].jid = jid;
|
||||
|
||||
jsxc.otr.sendMessage(jid, msg, uid);
|
||||
});
|
||||
|
||||
jsxc.otr.objects[bid].on('error', function(err) {
|
||||
// Handle this case in jsxc.otr.receiveMessage
|
||||
if (err !== 'Received an unencrypted message.') {
|
||||
jsxc.gui.window.postMessage(bid, 'sys', '[OTR] ' + $.t(err));
|
||||
}
|
||||
|
||||
jsxc.error('[OTR] ' + err);
|
||||
});
|
||||
|
||||
jsxc.otr.restore(bid);
|
||||
},
|
||||
|
||||
/**
|
||||
* show verification dialog with related part (secret or question)
|
||||
*
|
||||
* @param {type} bid
|
||||
* @param {string} [data]
|
||||
* @returns {undefined}
|
||||
*/
|
||||
onSmpQuestion: function(bid, data) {
|
||||
jsxc.gui.showVerification(bid);
|
||||
|
||||
$('#jsxc_dialog select').prop('selectedIndex', (data ? 2 : 3)).change();
|
||||
$('#jsxc_dialog > div:eq(0)').hide();
|
||||
|
||||
if (data) {
|
||||
$('#jsxc_dialog > div:eq(2)').find('#jsxc_quest').val(data).prop('disabled', true);
|
||||
$('#jsxc_dialog > div:eq(2)').find('.creation').text('Answer');
|
||||
$('#jsxc_dialog > div:eq(2)').find('.jsxc_explanation').text($.t('your_buddy_is_attempting_to_determine_') + ' ' + $.t('to_authenticate_to_your_buddy') + $.t('enter_the_answer_and_click_answer'));
|
||||
} else {
|
||||
$('#jsxc_dialog > div:eq(3)').find('.jsxc_explanation').text($.t('your_buddy_is_attempting_to_determine_') + ' ' + $.t('to_authenticate_to_your_buddy') + $.t('enter_the_secret'));
|
||||
}
|
||||
|
||||
$('#jsxc_dialog .jsxc_close').click(function() {
|
||||
jsxc.storage.removeUserItem('smp_' + bid);
|
||||
|
||||
if (jsxc.master) {
|
||||
jsxc.otr.objects[bid].sm.abort();
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
/**
|
||||
* Send verification request to buddy
|
||||
*
|
||||
* @param {string} bid
|
||||
* @param {string} sec secret
|
||||
* @param {string} [quest] question
|
||||
* @returns {undefined}
|
||||
*/
|
||||
sendSmpReq: function(bid, sec, quest) {
|
||||
jsxc.keepBusyAlive();
|
||||
|
||||
jsxc.otr.objects[bid].smpSecret(sec, quest || '');
|
||||
},
|
||||
|
||||
/**
|
||||
* Toggle encryption state
|
||||
*
|
||||
* @param {type} bid
|
||||
* @returns {undefined}
|
||||
*/
|
||||
toggleTransfer: function(bid) {
|
||||
if (typeof OTR !== 'function') {
|
||||
return;
|
||||
}
|
||||
|
||||
if (jsxc.storage.getUserItem('buddy', bid).msgstate === 0) {
|
||||
jsxc.otr.goEncrypt(bid);
|
||||
} else {
|
||||
jsxc.otr.goPlain(bid);
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Send request to encrypt the session
|
||||
*
|
||||
* @param {type} bid
|
||||
* @returns {undefined}
|
||||
*/
|
||||
goEncrypt: function(bid) {
|
||||
if (jsxc.master) {
|
||||
if (jsxc.otr.objects.hasOwnProperty(bid)) {
|
||||
jsxc.otr.objects[bid].sendQueryMsg();
|
||||
}
|
||||
} else {
|
||||
jsxc.storage.updateUserItem('buddy', bid, 'transferReq', 1);
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Abort encryptet session
|
||||
*
|
||||
* @param {type} bid
|
||||
* @param cb callback
|
||||
* @returns {undefined}
|
||||
*/
|
||||
goPlain: function(bid, cb) {
|
||||
if (jsxc.master) {
|
||||
if (jsxc.otr.objects.hasOwnProperty(bid)) {
|
||||
jsxc.otr.objects[bid].endOtr.call(jsxc.otr.objects[bid], cb);
|
||||
jsxc.otr.objects[bid].init.call(jsxc.otr.objects[bid]);
|
||||
|
||||
jsxc.otr.backup(bid);
|
||||
}
|
||||
} else {
|
||||
jsxc.storage.updateUserItem('buddy', bid, 'transferReq', 0);
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Backups otr session
|
||||
*
|
||||
* @param {string} bid
|
||||
*/
|
||||
backup: function(bid) {
|
||||
var o = jsxc.otr.objects[bid]; // otr object
|
||||
var r = {}; // return value
|
||||
|
||||
if (o === null) {
|
||||
return;
|
||||
}
|
||||
|
||||
// all variables which should be saved
|
||||
var savekey = [ 'jid', 'our_instance_tag', 'msgstate', 'authstate', 'fragment', 'their_y', 'their_old_y', 'their_keyid', 'their_instance_tag', 'our_dh', 'our_old_dh', 'our_keyid', 'sessKeys', 'storedMgs', 'oldMacKeys', 'trust', 'transmittedRS', 'ssid', 'receivedPlaintext', 'authstate', 'send_interval' ];
|
||||
|
||||
var i;
|
||||
for (i = 0; i < savekey.length; i++) {
|
||||
r[savekey[i]] = JSON.stringify(o[savekey[i]]);
|
||||
}
|
||||
|
||||
if (o.their_priv_pk !== null) {
|
||||
r.their_priv_pk = JSON.stringify(o.their_priv_pk.packPublic());
|
||||
}
|
||||
|
||||
if (o.ake.otr_version && o.ake.otr_version !== '') {
|
||||
r.otr_version = JSON.stringify(o.ake.otr_version);
|
||||
}
|
||||
|
||||
jsxc.storage.setUserItem('otr', bid, r);
|
||||
},
|
||||
|
||||
/**
|
||||
* Restore old otr session
|
||||
*
|
||||
* @param {string} bid
|
||||
*/
|
||||
restore: function(bid) {
|
||||
var o = jsxc.otr.objects[bid];
|
||||
var d = jsxc.storage.getUserItem('otr', bid);
|
||||
|
||||
if (o !== null || d !== null) {
|
||||
var key;
|
||||
for (key in d) {
|
||||
if (d.hasOwnProperty(key)) {
|
||||
var val = JSON.parse(d[key]);
|
||||
if (key === 'their_priv_pk' && val !== null) {
|
||||
val = DSA.parsePublic(val);
|
||||
}
|
||||
if (key === 'otr_version' && val !== null) {
|
||||
o.ake.otr_version = val;
|
||||
} else {
|
||||
o[key] = val;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
jsxc.otr.objects[bid] = o;
|
||||
|
||||
if (o.msgstate === 1 && o.their_priv_pk !== null) {
|
||||
o._smInit.call(jsxc.otr.objects[bid]);
|
||||
}
|
||||
}
|
||||
|
||||
jsxc.otr.enable(bid);
|
||||
},
|
||||
|
||||
/**
|
||||
* Create or load DSA key
|
||||
*
|
||||
* @returns {unresolved}
|
||||
*/
|
||||
createDSA: function() {
|
||||
if (jsxc.options.otr.priv) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (typeof OTR !== 'function') {
|
||||
jsxc.warn('OTR support disabled');
|
||||
|
||||
OTR = {};
|
||||
OTR.CONST = {
|
||||
MSGSTATE_PLAINTEXT : 0,
|
||||
MSGSTATE_ENCRYPTED : 1,
|
||||
MSGSTATE_FINISHED : 2
|
||||
};
|
||||
|
||||
jsxc._onMaster();
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if (jsxc.storage.getUserItem('key') === null) {
|
||||
var msg = $.t('Creating_your_private_key_');
|
||||
var worker = null;
|
||||
|
||||
if (Worker) {
|
||||
// try to create web-worker
|
||||
|
||||
try {
|
||||
worker = new Worker(jsxc.options.root + '/lib/otr/build/dsa-webworker.js');
|
||||
} catch (err) {
|
||||
jsxc.warn('Couldn\'t create web-worker.', err);
|
||||
}
|
||||
}
|
||||
|
||||
jsxc.otr.dsaFallback = (worker === null);
|
||||
|
||||
if (!jsxc.otr.dsaFallback) {
|
||||
// create DSA key in background
|
||||
|
||||
jsxc._onMaster();
|
||||
|
||||
worker.onmessage = function(e) {
|
||||
var type = e.data.type;
|
||||
var val = e.data.val;
|
||||
|
||||
if (type === 'debug') {
|
||||
jsxc.debug(val);
|
||||
} else if (type === 'data') {
|
||||
jsxc.otr.DSAready(DSA.parsePrivate(val));
|
||||
}
|
||||
};
|
||||
|
||||
// start worker
|
||||
worker.postMessage({
|
||||
imports: [ jsxc.options.root + '/lib/otr/vendor/salsa20.js', jsxc.options.root + '/lib/otr/vendor/bigint.js', jsxc.options.root + '/lib/otr/vendor/crypto.js', jsxc.options.root + '/lib/otr/vendor/eventemitter.js', jsxc.options.root + '/lib/otr/lib/const.js', jsxc.options.root + '/lib/otr/lib/helpers.js', jsxc.options.root + '/lib/otr/lib/dsa.js' ],
|
||||
seed: BigInt.getSeed(),
|
||||
debug: true
|
||||
});
|
||||
|
||||
} else {
|
||||
// fallback
|
||||
|
||||
jsxc.gui.dialog.open(jsxc.gui.template.get('waitAlert', null, msg), {
|
||||
noClose: true
|
||||
});
|
||||
|
||||
jsxc.debug('DSA key creation started.');
|
||||
|
||||
// wait until the wait alert is opened
|
||||
setTimeout(function() {
|
||||
var dsa = new DSA();
|
||||
jsxc.otr.DSAready(dsa);
|
||||
}, 500);
|
||||
}
|
||||
} else {
|
||||
jsxc.debug('DSA key loaded');
|
||||
jsxc.options.otr.priv = DSA.parsePrivate(jsxc.storage.getUserItem('key'));
|
||||
|
||||
jsxc.otr._createDSA();
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Ending of createDSA().
|
||||
*/
|
||||
_createDSA: function() {
|
||||
|
||||
jsxc.storage.setUserItem('priv_fingerprint', jsxc.options.otr.priv.fingerprint());
|
||||
|
||||
if (jsxc.otr.dsaFallback !== false) {
|
||||
jsxc._onMaster();
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Ending of DSA key generation.
|
||||
*
|
||||
* @param {DSA} dsa DSA object
|
||||
*/
|
||||
DSAready: function(dsa) {
|
||||
jsxc.storage.setUserItem('key', dsa.packPrivate());
|
||||
jsxc.options.otr.priv = dsa;
|
||||
|
||||
// close wait alert
|
||||
if (jsxc.otr.dsaFallback) {
|
||||
jsxc.gui.dialog.close();
|
||||
} else {
|
||||
$.each(jsxc.storage.getUserItem('windowlist'), function(index, val) {
|
||||
jsxc.otr.create(val);
|
||||
});
|
||||
}
|
||||
|
||||
jsxc.otr._createDSA();
|
||||
},
|
||||
|
||||
enable: function(bid) {
|
||||
jsxc.gui.window.get(bid).find('.jsxc_otr').removeClass('jsxc_disabled');
|
||||
}
|
||||
};
|
||||
</code></pre>
|
||||
</article>
|
||||
</section>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<nav>
|
||||
<h2><a href="index.html">Index</a></h2><h3>Namespaces</h3><ul><li><a href="jsxc.html">jsxc</a></li><li><a href="jsxc.gui.html">gui</a></li><li><a href="jsxc.gui.dialog.html">dialog</a></li><li><a href="jsxc.gui.queryActions.html">queryActions</a></li><li><a href="jsxc.gui.roster.html">roster</a></li><li><a href="jsxc.gui.template.html">template</a></li><li><a href="jsxc.gui.window.html">window</a></li><li><a href="jsxc.muc.html">muc</a></li><li><a href="jsxc.notification.html">notification</a></li><li><a href="jsxc.options.html">options</a></li><li><a href="jsxc.otr.html">otr</a></li><li><a href="jsxc.storage.html">storage</a></li><li><a href="jsxc.webrtc.html">webrtc</a></li><li><a href="jsxc.xmpp.html">xmpp</a></li><li><a href="jsxc.xmpp.carbons.html">carbons</a></li></ul><h3><a href="global.html">Global</a></h3>
|
||||
</nav>
|
||||
|
||||
<br clear="both">
|
||||
|
||||
<footer>
|
||||
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Sat May 23 2015 16:03:18 GMT+0200 (CEST)
|
||||
</footer>
|
||||
|
||||
<script> prettyPrint(); </script>
|
||||
<script src="scripts/linenumber.js"> </script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,662 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>JSDoc: Source: jsxc.lib.storage.js</title>
|
||||
|
||||
<script src="scripts/prettify/prettify.js"> </script>
|
||||
<script src="scripts/prettify/lang-css.js"> </script>
|
||||
<!--[if lt IE 9]>
|
||||
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
|
||||
<![endif]-->
|
||||
<link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css">
|
||||
<link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<div id="main">
|
||||
|
||||
<h1 class="page-title">Source: jsxc.lib.storage.js</h1>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<section>
|
||||
<article>
|
||||
<pre class="prettyprint source"><code>
|
||||
|
||||
/**
|
||||
* Handle long-live data
|
||||
*
|
||||
* @namespace jsxc.storage
|
||||
*/
|
||||
jsxc.storage = {
|
||||
/**
|
||||
* Prefix for localstorage
|
||||
*
|
||||
* @privat
|
||||
*/
|
||||
PREFIX: 'jsxc',
|
||||
|
||||
SEP: ':',
|
||||
|
||||
/**
|
||||
* @param {type} uk Should we generate a user prefix?
|
||||
* @returns {String} prefix
|
||||
* @memberOf jsxc.storage
|
||||
*/
|
||||
getPrefix: function(uk) {
|
||||
var self = jsxc.storage;
|
||||
|
||||
return self.PREFIX + self.SEP + ((uk && jsxc.bid) ? jsxc.bid + self.SEP : '');
|
||||
},
|
||||
|
||||
/**
|
||||
* Save item to storage
|
||||
*
|
||||
* @function
|
||||
* @param {String} key variablename
|
||||
* @param {Object} value value
|
||||
* @param {String} uk Userkey? Should we add the bid as prefix?
|
||||
*/
|
||||
setItem: function(key, value, uk) {
|
||||
|
||||
// Workaround for non-conform browser
|
||||
if (jsxc.storageNotConform > 0 && key !== 'rid' && key !== 'lastActivity') {
|
||||
if (jsxc.storageNotConform > 1 && jsxc.toSNC === null) {
|
||||
jsxc.toSNC = window.setTimeout(function() {
|
||||
jsxc.storageNotConform = 0;
|
||||
jsxc.storage.setItem('storageNotConform', 0);
|
||||
}, 1000);
|
||||
}
|
||||
|
||||
jsxc.ls.push(JSON.stringify({
|
||||
key: key,
|
||||
value: value
|
||||
}));
|
||||
}
|
||||
|
||||
if (typeof (value) === 'object') {
|
||||
value = JSON.stringify(value);
|
||||
}
|
||||
|
||||
localStorage.setItem(jsxc.storage.getPrefix(uk) + key, value);
|
||||
},
|
||||
|
||||
setUserItem: function(type, key, value) {
|
||||
var self = jsxc.storage;
|
||||
|
||||
if (arguments.length === 2) {
|
||||
value = key;
|
||||
key = type;
|
||||
type = '';
|
||||
} else if (arguments.length === 3) {
|
||||
key = type + self.SEP + key;
|
||||
}
|
||||
|
||||
return jsxc.storage.setItem(key, value, true);
|
||||
},
|
||||
|
||||
/**
|
||||
* Load item from storage
|
||||
*
|
||||
* @function
|
||||
* @param {String} key variablename
|
||||
* @param {String} uk Userkey? Should we add the bid as prefix?
|
||||
*/
|
||||
getItem: function(key, uk) {
|
||||
key = jsxc.storage.getPrefix(uk) + key;
|
||||
|
||||
var value = localStorage.getItem(key);
|
||||
try {
|
||||
return JSON.parse(value);
|
||||
} catch (e) {
|
||||
return value;
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Get a user item from storage.
|
||||
*
|
||||
* @param key
|
||||
* @returns user item
|
||||
*/
|
||||
getUserItem: function(type, key) {
|
||||
var self = jsxc.storage;
|
||||
|
||||
if (arguments.length === 1) {
|
||||
key = type;
|
||||
} else if (arguments.length === 2) {
|
||||
key = type + self.SEP + key;
|
||||
}
|
||||
|
||||
return jsxc.storage.getItem(key, true);
|
||||
},
|
||||
|
||||
/**
|
||||
* Remove item from storage
|
||||
*
|
||||
* @function
|
||||
* @param {String} key variablename
|
||||
* @param {String} uk Userkey? Should we add the bid as prefix?
|
||||
*/
|
||||
removeItem: function(key, uk) {
|
||||
|
||||
// Workaround for non-conform browser
|
||||
if (jsxc.storageNotConform && key !== 'rid' && key !== 'lastActivity') {
|
||||
jsxc.ls.push(JSON.stringify({
|
||||
key: jsxc.storage.prefix + key,
|
||||
value: ''
|
||||
}));
|
||||
}
|
||||
|
||||
localStorage.removeItem(jsxc.storage.getPrefix(uk) + key);
|
||||
},
|
||||
|
||||
/**
|
||||
* Remove user item from storage.
|
||||
*
|
||||
* @param key
|
||||
*/
|
||||
removeUserItem: function(type, key) {
|
||||
var self = jsxc.storage;
|
||||
|
||||
if (arguments.length === 1) {
|
||||
key = type;
|
||||
} else if (arguments.length === 2) {
|
||||
key = type + self.SEP + key;
|
||||
}
|
||||
|
||||
jsxc.storage.removeItem(key, true);
|
||||
},
|
||||
|
||||
/**
|
||||
* Updates value of a variable in a saved object.
|
||||
*
|
||||
* @function
|
||||
* @param {String} key variablename
|
||||
* @param {String|object} variable variablename in object or object with
|
||||
* variable/key pairs
|
||||
* @param {Object} [value] value
|
||||
* @param {String} uk Userkey? Should we add the bid as prefix?
|
||||
*/
|
||||
updateItem: function(key, variable, value, uk) {
|
||||
|
||||
var data = jsxc.storage.getItem(key, uk) || {};
|
||||
|
||||
if (typeof (variable) === 'object') {
|
||||
|
||||
$.each(variable, function(key, val) {
|
||||
if (typeof (data[key]) === 'undefined') {
|
||||
jsxc.debug('Variable ' + key + ' doesn\'t exist in ' + variable + '. It was created.');
|
||||
}
|
||||
|
||||
data[key] = val;
|
||||
});
|
||||
} else {
|
||||
if (typeof (data[variable]) === 'undefined') {
|
||||
jsxc.debug('Variable ' + variable + ' doesn\'t exist. It was created.');
|
||||
}
|
||||
|
||||
data[variable] = value;
|
||||
}
|
||||
|
||||
jsxc.storage.setItem(key, data, uk);
|
||||
},
|
||||
|
||||
/**
|
||||
* Updates value of a variable in a saved user object.
|
||||
*
|
||||
* @param {String} key variablename
|
||||
* @param {String|object} variable variablename in object or object with
|
||||
* variable/key pairs
|
||||
* @param {Object} [value] value
|
||||
*/
|
||||
updateUserItem: function(type, key, variable, value) {
|
||||
var self = jsxc.storage;
|
||||
|
||||
if (arguments.length === 4 || (arguments.length === 3 && typeof variable === 'object')) {
|
||||
key = type + self.SEP + key;
|
||||
} else {
|
||||
value = variable;
|
||||
variable = key;
|
||||
key = type;
|
||||
}
|
||||
|
||||
return jsxc.storage.updateItem(key, variable, value, true);
|
||||
},
|
||||
|
||||
/**
|
||||
* Inkrements value
|
||||
*
|
||||
* @function
|
||||
* @param {String} key variablename
|
||||
* @param {String} uk Userkey? Should we add the bid as prefix?
|
||||
*/
|
||||
ink: function(key, uk) {
|
||||
|
||||
jsxc.storage.setItem(key, Number(jsxc.storage.getItem(key, uk)) + 1, uk);
|
||||
},
|
||||
|
||||
/**
|
||||
* Remove element from array or object
|
||||
*
|
||||
* @param {string} key name of array or object
|
||||
* @param {string} name name of element in array or object
|
||||
* @param {String} uk Userkey? Should we add the bid as prefix?
|
||||
* @returns {undefined}
|
||||
*/
|
||||
removeElement: function(key, name, uk) {
|
||||
var item = jsxc.storage.getItem(key, uk);
|
||||
|
||||
if ($.isArray(item)) {
|
||||
item = $.grep(item, function(e) {
|
||||
return e !== name;
|
||||
});
|
||||
} else if (typeof (item) === 'object') {
|
||||
delete item[name];
|
||||
}
|
||||
|
||||
jsxc.storage.setItem(key, item, uk);
|
||||
},
|
||||
|
||||
removeUserElement: function(type, key, name) {
|
||||
var self = jsxc.storage;
|
||||
|
||||
if (arguments.length === 2) {
|
||||
name = key;
|
||||
key = type;
|
||||
} else if (arguments.length === 3) {
|
||||
key = type + self.SEP + key;
|
||||
}
|
||||
|
||||
return jsxc.storage.removeElement(key, name, true);
|
||||
},
|
||||
|
||||
/**
|
||||
* Triggered if changes are recognized
|
||||
*
|
||||
* @function
|
||||
* @param {event} e Storageevent
|
||||
* @param {String} e.key Keyname which triggered event
|
||||
* @param {Object} e.oldValue Old Value for key
|
||||
* @param {Object} e.newValue New Value for key
|
||||
* @param {String} e.url
|
||||
*/
|
||||
onStorage: function(e) {
|
||||
|
||||
// skip
|
||||
if (e.key === jsxc.storage.PREFIX + jsxc.storage.SEP + 'rid' || e.key === jsxc.storage.PREFIX + jsxc.storage.SEP + 'lastActivity') {
|
||||
return;
|
||||
}
|
||||
|
||||
var re = new RegExp('^' + jsxc.storage.PREFIX + jsxc.storage.SEP + '(?:[^' + jsxc.storage.SEP + ']+@[^' + jsxc.storage.SEP + ']+' + jsxc.storage.SEP + ')?(.*)', 'i');
|
||||
var key = e.key.replace(re, '$1');
|
||||
|
||||
// Workaround for non-conform browser: Triggered event on every page
|
||||
// (own)
|
||||
if (jsxc.storageNotConform > 0 && jsxc.ls.length > 0) {
|
||||
|
||||
var val = e.newValue;
|
||||
try {
|
||||
val = JSON.parse(val);
|
||||
} catch (err) {
|
||||
}
|
||||
|
||||
var index = $.inArray(JSON.stringify({
|
||||
key: key,
|
||||
value: val
|
||||
}), jsxc.ls);
|
||||
|
||||
if (index >= 0) {
|
||||
|
||||
// confirm that the storage event is not fired regularly
|
||||
if (jsxc.storageNotConform > 1) {
|
||||
window.clearTimeout(jsxc.toSNC);
|
||||
jsxc.storageNotConform = 1;
|
||||
jsxc.storage.setItem('storageNotConform', 1);
|
||||
}
|
||||
|
||||
jsxc.ls.splice(index, 1);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// Workaround for non-conform browser
|
||||
if (e.oldValue === e.newValue) {
|
||||
return;
|
||||
}
|
||||
|
||||
var n, o;
|
||||
var bid = key.replace(new RegExp('[^' + jsxc.storage.SEP + ']+' + jsxc.storage.SEP + '(.*)', 'i'), '$1');
|
||||
|
||||
// react if someone ask, if there is a master
|
||||
if (jsxc.master && key === 'alive') {
|
||||
jsxc.debug('Master request.');
|
||||
|
||||
jsxc.storage.ink('alive');
|
||||
return;
|
||||
}
|
||||
|
||||
// master alive
|
||||
if (!jsxc.master && (key === 'alive' || key === 'alive_busy') && !jsxc.triggeredFromElement) {
|
||||
|
||||
// reset timeout
|
||||
window.clearTimeout(jsxc.to);
|
||||
jsxc.to = window.setTimeout(jsxc.checkMaster, ((key === 'alive') ? jsxc.options.timeout : jsxc.options.busyTimeout) + jsxc.random(60));
|
||||
|
||||
// only call the first time
|
||||
if (!jsxc.role_allocation) {
|
||||
jsxc.onSlave();
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if (key.match(/^notices/)) {
|
||||
jsxc.notice.load();
|
||||
}
|
||||
|
||||
if (key.match(/^presence/)) {
|
||||
jsxc.gui.changePresence(e.newValue, true);
|
||||
}
|
||||
|
||||
if (key.match(/^options/) && e.newValue) {
|
||||
n = JSON.parse(e.newValue);
|
||||
|
||||
if (typeof n.muteNotification !== 'undefined' && n.muteNotification) {
|
||||
jsxc.notification.muteSound(true);
|
||||
} else {
|
||||
jsxc.notification.unmuteSound(true);
|
||||
}
|
||||
}
|
||||
|
||||
if (key.match(/^hidden/)) {
|
||||
if (jsxc.master) {
|
||||
clearTimeout(jsxc.toNotification);
|
||||
} else {
|
||||
jsxc.isHidden();
|
||||
}
|
||||
}
|
||||
|
||||
if (key.match(/^focus/)) {
|
||||
if (jsxc.master) {
|
||||
clearTimeout(jsxc.toNotification);
|
||||
} else {
|
||||
jsxc.hasFocus();
|
||||
}
|
||||
}
|
||||
|
||||
if (key.match(new RegExp('^chat' + jsxc.storage.SEP))) {
|
||||
|
||||
var posts = JSON.parse(e.newValue);
|
||||
var data, el;
|
||||
|
||||
while (posts.length > 0) {
|
||||
data = posts.pop();
|
||||
el = $('#' + data.uid);
|
||||
|
||||
if (el.length === 0) {
|
||||
if (jsxc.master && data.direction === 'out') {
|
||||
jsxc.xmpp.sendMessage(bid, data.msg, data.uid);
|
||||
}
|
||||
|
||||
jsxc.gui.window._postMessage(bid, data);
|
||||
} else if (data.received) {
|
||||
el.addClass('jsxc_received');
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
if (key.match(new RegExp('^window' + jsxc.storage.SEP))) {
|
||||
|
||||
if (!e.newValue) {
|
||||
jsxc.gui.window._close(bid);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!e.oldValue) {
|
||||
jsxc.gui.window.open(bid);
|
||||
return;
|
||||
}
|
||||
|
||||
n = JSON.parse(e.newValue);
|
||||
|
||||
if (n.minimize) {
|
||||
jsxc.gui.window._hide(bid);
|
||||
} else {
|
||||
jsxc.gui.window._show(bid);
|
||||
}
|
||||
|
||||
jsxc.gui.window.setText(bid, n.text);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if (key.match(new RegExp('^smp' + jsxc.storage.SEP))) {
|
||||
|
||||
if (!e.newValue) {
|
||||
|
||||
jsxc.gui.dialog.close();
|
||||
|
||||
if (jsxc.master) {
|
||||
jsxc.otr.objects[bid].sm.abort();
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
n = JSON.parse(e.newValue);
|
||||
|
||||
if (typeof (n.data) !== 'undefined') {
|
||||
|
||||
jsxc.otr.onSmpQuestion(bid, n.data);
|
||||
|
||||
} else if (jsxc.master && n.sec) {
|
||||
jsxc.gui.dialog.close();
|
||||
|
||||
jsxc.otr.sendSmpReq(bid, n.sec, n.quest);
|
||||
}
|
||||
}
|
||||
|
||||
if (!jsxc.master && key.match(new RegExp('^buddy' + jsxc.storage.SEP))) {
|
||||
|
||||
if (!e.newValue) {
|
||||
jsxc.gui.roster.purge(bid);
|
||||
return;
|
||||
}
|
||||
if (!e.oldValue) {
|
||||
jsxc.gui.roster.add(bid);
|
||||
return;
|
||||
}
|
||||
|
||||
n = JSON.parse(e.newValue);
|
||||
o = JSON.parse(e.oldValue);
|
||||
|
||||
jsxc.gui.update(bid);
|
||||
|
||||
if (o.status !== n.status || o.sub !== n.sub) {
|
||||
jsxc.gui.roster.reorder(bid);
|
||||
}
|
||||
}
|
||||
|
||||
if (jsxc.master && key.match(new RegExp('^deletebuddy' + jsxc.storage.SEP)) && e.newValue) {
|
||||
n = JSON.parse(e.newValue);
|
||||
|
||||
jsxc.xmpp.removeBuddy(n.jid);
|
||||
jsxc.storage.removeUserItem(key);
|
||||
}
|
||||
|
||||
if (jsxc.master && key.match(new RegExp('^buddy' + jsxc.storage.SEP))) {
|
||||
|
||||
n = JSON.parse(e.newValue);
|
||||
o = JSON.parse(e.oldValue);
|
||||
|
||||
if (o.transferReq !== n.transferReq) {
|
||||
jsxc.storage.updateUserItem('buddy', bid, 'transferReq', -1);
|
||||
|
||||
if (n.transferReq === 0) {
|
||||
jsxc.otr.goPlain(bid);
|
||||
}
|
||||
if (n.transferReq === 1) {
|
||||
jsxc.otr.goEncrypt(bid);
|
||||
}
|
||||
}
|
||||
|
||||
if (o.name !== n.name) {
|
||||
jsxc.gui.roster._rename(bid, n.name);
|
||||
}
|
||||
}
|
||||
|
||||
// logout
|
||||
if (key === 'sid') {
|
||||
if (!e.newValue) {
|
||||
// if (jsxc.master && jsxc.xmpp.conn) {
|
||||
// jsxc.xmpp.conn.disconnect();
|
||||
// jsxc.triggeredFromElement = true;
|
||||
// }
|
||||
jsxc.xmpp.logout();
|
||||
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
if (key === 'friendReq') {
|
||||
n = JSON.parse(e.newValue);
|
||||
|
||||
if (jsxc.master && n.approve >= 0) {
|
||||
jsxc.xmpp.resFriendReq(n.jid, n.approve);
|
||||
}
|
||||
}
|
||||
|
||||
if (jsxc.master && key.match(new RegExp('^add' + jsxc.storage.SEP))) {
|
||||
n = JSON.parse(e.newValue);
|
||||
|
||||
jsxc.xmpp.addBuddy(n.username, n.alias);
|
||||
}
|
||||
|
||||
if (key === 'roster') {
|
||||
jsxc.gui.roster.toggle();
|
||||
}
|
||||
|
||||
if (jsxc.master && key.match(new RegExp('^vcard' + jsxc.storage.SEP)) && e.newValue !== null && e.newValue.match(/^request:/)) {
|
||||
|
||||
jsxc.xmpp.loadVcard(bid, function(stanza) {
|
||||
jsxc.storage.setUserItem('vcard', bid, {
|
||||
state: 'success',
|
||||
data: $('<div>').append(stanza).html()
|
||||
});
|
||||
}, function() {
|
||||
jsxc.storage.setUserItem('vcard', bid, {
|
||||
state: 'error'
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
if (!jsxc.master && key.match(new RegExp('^vcard' + jsxc.storage.SEP)) && e.newValue !== null && !e.newValue.match(/^request:/)) {
|
||||
n = JSON.parse(e.newValue);
|
||||
|
||||
if (typeof n.state !== 'undefined') {
|
||||
$(document).trigger('loaded.vcard.jsxc', n);
|
||||
}
|
||||
|
||||
jsxc.storage.removeUserItem('vcard', bid);
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Save message to storage.
|
||||
*
|
||||
* @memberOf jsxc.storage
|
||||
* @param bid
|
||||
* @param direction
|
||||
* @param msg
|
||||
* @param encrypted
|
||||
* @param forwarded
|
||||
* @param sender
|
||||
* @return post
|
||||
*/
|
||||
saveMessage: function(bid, direction, msg, encrypted, forwarded, stamp, sender) {
|
||||
var chat = jsxc.storage.getUserItem('chat', bid) || [];
|
||||
|
||||
var uid = new Date().getTime() + ':msg';
|
||||
|
||||
if (chat.length > jsxc.options.get('numberOfMsg')) {
|
||||
chat.pop();
|
||||
}
|
||||
|
||||
var post = {
|
||||
direction: direction,
|
||||
msg: msg,
|
||||
uid: uid.replace(/:/, '-'),
|
||||
received: false,
|
||||
encrypted: encrypted || false,
|
||||
forwarded: forwarded || false,
|
||||
stamp: stamp || new Date().getTime(),
|
||||
sender: sender
|
||||
};
|
||||
|
||||
chat.unshift(post);
|
||||
jsxc.storage.setUserItem('chat', bid, chat);
|
||||
|
||||
return post;
|
||||
},
|
||||
|
||||
/**
|
||||
* Save or update buddy data.
|
||||
*
|
||||
* @memberOf jsxc.storage
|
||||
* @param bid
|
||||
* @param data
|
||||
* @returns {String} Updated or created
|
||||
*/
|
||||
saveBuddy: function(bid, data) {
|
||||
|
||||
if (jsxc.storage.getUserItem('buddy', bid)) {
|
||||
jsxc.storage.updateUserItem('buddy', bid, data);
|
||||
|
||||
return 'updated';
|
||||
}
|
||||
|
||||
jsxc.storage.setUserItem('buddy', bid, $.extend({
|
||||
jid: '',
|
||||
name: '',
|
||||
status: 0,
|
||||
sub: 'none',
|
||||
msgstate: 0,
|
||||
transferReq: -1,
|
||||
trust: false,
|
||||
fingerprint: null,
|
||||
res: [],
|
||||
type: 'chat'
|
||||
}, data));
|
||||
|
||||
return 'created';
|
||||
}
|
||||
};
|
||||
</code></pre>
|
||||
</article>
|
||||
</section>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<nav>
|
||||
<h2><a href="index.html">Index</a></h2><h3>Namespaces</h3><ul><li><a href="jsxc.html">jsxc</a></li><li><a href="jsxc.gui.html">gui</a></li><li><a href="jsxc.gui.dialog.html">dialog</a></li><li><a href="jsxc.gui.queryActions.html">queryActions</a></li><li><a href="jsxc.gui.roster.html">roster</a></li><li><a href="jsxc.gui.template.html">template</a></li><li><a href="jsxc.gui.window.html">window</a></li><li><a href="jsxc.muc.html">muc</a></li><li><a href="jsxc.notification.html">notification</a></li><li><a href="jsxc.options.html">options</a></li><li><a href="jsxc.otr.html">otr</a></li><li><a href="jsxc.storage.html">storage</a></li><li><a href="jsxc.webrtc.html">webrtc</a></li><li><a href="jsxc.xmpp.html">xmpp</a></li><li><a href="jsxc.xmpp.carbons.html">carbons</a></li></ul><h3><a href="global.html">Global</a></h3>
|
||||
</nav>
|
||||
|
||||
<br clear="both">
|
||||
|
||||
<footer>
|
||||
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Sat May 23 2015 16:03:18 GMT+0200 (CEST)
|
||||
</footer>
|
||||
|
||||
<script> prettyPrint(); </script>
|
||||
<script src="scripts/linenumber.js"> </script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,77 +1,87 @@
|
||||
/*!
|
||||
* jsxc v1.0.0-beta2 - 2014-10-31
|
||||
*
|
||||
* Copyright (c) 2014 Klaus Herberth <klaus@jsxc.org> <br>
|
||||
* Released under the MIT license
|
||||
*
|
||||
* Please see http://www.jsxc.org/
|
||||
*
|
||||
* @author Klaus Herberth <klaus@jsxc.org>
|
||||
* @version 1.0.0-beta2
|
||||
* @license MIT
|
||||
*/
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>JSDoc: Source: jsxc.lib.webrtc.js</title>
|
||||
|
||||
<script src="scripts/prettify/prettify.js"> </script>
|
||||
<script src="scripts/prettify/lang-css.js"> </script>
|
||||
<!--[if lt IE 9]>
|
||||
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
|
||||
<![endif]-->
|
||||
<link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css">
|
||||
<link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css">
|
||||
</head>
|
||||
|
||||
/* global jsxc, Strophe, SDPUtil, getUserMediaWithConstraints, setupRTC, jQuery, MediaStreamTrack */
|
||||
<body>
|
||||
|
||||
var RTC = null, RTCPeerconnection = null;
|
||||
<div id="main">
|
||||
|
||||
<h1 class="page-title">Source: jsxc.lib.webrtc.js</h1>
|
||||
|
||||
|
||||
|
||||
jsxc.gui.template.incomingCall = '<h3>%%Incoming_call%%</h3>\
|
||||
<p>%%Do_you_want_to_accept_the_call_from%% {{bid_name}}?</p>\
|
||||
<p class="jsxc_right">\
|
||||
<a href="#" class="button jsxc_reject">%%Reject%%</a> <a href="#" class="button creation jsxc_accept">%%Accept%%</a>\
|
||||
</p>';
|
||||
|
||||
jsxc.gui.template.allowMediaAccess = '<p>%%Please_allow_access_to_microphone_and_camera%%</p>';
|
||||
|
||||
<section>
|
||||
<article>
|
||||
<pre class="prettyprint source"><code>/* global SDPUtil, getUserMediaWithConstraints, setupRTC, MediaStreamTrack, RTC, RTCPeerconnection */
|
||||
/* jshint -W020 */
|
||||
|
||||
jsxc.gui.template.videoWindow = '<div class="jsxc_webrtc">\
|
||||
<div class="jsxc_chatarea">\
|
||||
<ul></ul>\
|
||||
</div>\
|
||||
<div class="jsxc_videoContainer">\
|
||||
<video class="jsxc_localvideo" autoplay></video>\
|
||||
<video class="jsxc_remotevideo" autoplay></video>\
|
||||
<div class="jsxc_status"></div>\
|
||||
<div class="bubblingG">\
|
||||
<span id="bubblingG_1">\
|
||||
</span>\
|
||||
<span id="bubblingG_2">\
|
||||
</span>\
|
||||
<span id="bubblingG_3">\
|
||||
</span>\
|
||||
</div>\
|
||||
<div class="jsxc_noRemoteVideo">\
|
||||
<div>\
|
||||
<div></div>\
|
||||
<p>%%No_video_signal%%</p>\
|
||||
<div></div>\
|
||||
</div>\
|
||||
</div>\
|
||||
</div>\
|
||||
<div class="jsxc_controlbar">\
|
||||
<button type="button" class="jsxc_hangUp">%%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>\
|
||||
</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>\
|
||||
</div>\
|
||||
<div class="jsxc_multi">\
|
||||
<div class="jsxc_snapshotbar">\
|
||||
<p>No pictures yet!</p>\
|
||||
</div>\n\
|
||||
<!--<div class="jsxc_chatarea">\
|
||||
<ul></ul>\
|
||||
</div>-->\
|
||||
<div class="jsxc_infobar"></div>\
|
||||
</div>\
|
||||
</div>';
|
||||
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" data-i18n="Reject"></a> <a href="#" class="button creation jsxc_accept" data-i18n="Accept"></a>\
|
||||
</p>';
|
||||
|
||||
(function($) {
|
||||
"use strict";
|
||||
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">\
|
||||
<ul></ul>\
|
||||
</div>\
|
||||
<div class="jsxc_videoContainer">\
|
||||
<video class="jsxc_localvideo" autoplay></video>\
|
||||
<video class="jsxc_remotevideo" autoplay></video>\
|
||||
<div class="jsxc_status"></div>\
|
||||
<div class="bubblingG">\
|
||||
<span id="bubblingG_1">\
|
||||
</span>\
|
||||
<span id="bubblingG_2">\
|
||||
</span>\
|
||||
<span id="bubblingG_3">\
|
||||
</span>\
|
||||
</div>\
|
||||
<div class="jsxc_noRemoteVideo">\
|
||||
<div>\
|
||||
<div></div>\
|
||||
<p data-i18n="No_video_signal"></p>\
|
||||
<div></div>\
|
||||
</div>\
|
||||
</div>\
|
||||
</div>\
|
||||
<div class="jsxc_controlbar">\
|
||||
<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" data-i18n="snapshot"></button><button type="button" class="jsxc_snapshots">▼</button>\
|
||||
</div>\
|
||||
<!-- <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">\
|
||||
<p>No pictures yet!</p>\
|
||||
</div>\n\
|
||||
<!--<div class="jsxc_chatarea">\
|
||||
<ul></ul>\
|
||||
</div>-->\
|
||||
<div class="jsxc_infobar"></div>\
|
||||
</div>\
|
||||
</div>';
|
||||
|
||||
/**
|
||||
* WebRTC namespace for jsxc.
|
||||
@@ -238,7 +248,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);
|
||||
@@ -263,6 +273,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) {
|
||||
@@ -272,7 +286,7 @@ jsxc.gui.template.videoWindow = '<div class="jsxc_webrtc">\
|
||||
return;
|
||||
}
|
||||
|
||||
var div = $('<div>').addClass('jsxc_video');
|
||||
var div = $('<div>').addClass('jsxc_video');
|
||||
win.find('.jsxc_transfer:eq(1)').after(div);
|
||||
|
||||
self.updateIcon(jsxc.jidToBid(win.data('jid')));
|
||||
@@ -288,8 +302,23 @@ 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;
|
||||
var jid = win.data('jid');
|
||||
var ls = jsxc.storage.getUserItem('buddy', bid);
|
||||
|
||||
if (typeof jid !== 'string') {
|
||||
if (ls && typeof ls.jid === 'string') {
|
||||
jid = ls.jid;
|
||||
} else {
|
||||
jsxc.debug('[webrtc] Could not update icon, because could not find jid for ' + bid);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
var el = win.find('.jsxc_video').add(jsxc.gui.roster.getItem(bid).find('.jsxc_video'));
|
||||
|
||||
@@ -297,28 +326,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'));
|
||||
}
|
||||
},
|
||||
|
||||
@@ -345,17 +376,19 @@ jsxc.gui.template.videoWindow = '<div class="jsxc_webrtc">\
|
||||
/**
|
||||
* Update icon on presence.
|
||||
*
|
||||
* @memberOf
|
||||
* @memberOf jsxc.webrtc
|
||||
* @param ev
|
||||
* @param status
|
||||
* @private
|
||||
*/
|
||||
onPresence: function(ev, jid) {
|
||||
onPresence: function(ev, jid, status, presence) {
|
||||
var self = jsxc.webrtc;
|
||||
|
||||
jsxc.debug('webrtc.onpresence', jid);
|
||||
if ($(presence).find('c[xmlns="' + Strophe.NS.CAPS + '"]').length === 0) {
|
||||
jsxc.debug('webrtc.onpresence', jid);
|
||||
|
||||
self.updateIcon(jsxc.jidToBid(jid));
|
||||
self.updateIcon(jsxc.jidToBid(jid));
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
@@ -373,7 +406,7 @@ jsxc.gui.template.videoWindow = '<div class="jsxc_webrtc">\
|
||||
|
||||
if (status.html()) {
|
||||
// attach old messages
|
||||
txt = status.html() + '<br />' + txt;
|
||||
txt = status.html() + '<br />' + txt;
|
||||
}
|
||||
|
||||
status.html(txt);
|
||||
@@ -416,7 +449,13 @@ jsxc.gui.template.videoWindow = '<div class="jsxc_webrtc">\
|
||||
onCaps: function(event, jid) {
|
||||
var self = jsxc.webrtc;
|
||||
|
||||
self.updateIcon(jsxc.jidToBid(jid));
|
||||
if (jsxc.gui.roster.loaded) {
|
||||
self.updateIcon(jsxc.jidToBid(jid));
|
||||
} else {
|
||||
$(document).on('cloaded.roster.jsxc', function() {
|
||||
self.updateIcon(jsxc.jidToBid(jid));
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
@@ -438,12 +477,12 @@ jsxc.gui.template.videoWindow = '<div class="jsxc_webrtc">\
|
||||
jsxc.gui.showVideoWindow(self.last_caller);
|
||||
|
||||
var i;
|
||||
for (i = 0; i < stream.getAudioTracks().length; i++) {
|
||||
for (i = 0; i < stream.getAudioTracks().length; i++) {
|
||||
self.setStatus((stream.getAudioTracks().length > 0) ? 'Use local audio device.' : 'No local audio device.');
|
||||
|
||||
jsxc.debug('using audio device "' + stream.getAudioTracks()[i].label + '"');
|
||||
}
|
||||
for (i = 0; i < stream.getVideoTracks().length; i++) {
|
||||
for (i = 0; i < stream.getVideoTracks().length; i++) {
|
||||
self.setStatus((stream.getVideoTracks().length > 0) ? 'Use local video device.' : 'No local video device.');
|
||||
|
||||
jsxc.debug('using video device "' + stream.getVideoTracks()[i].label + '"');
|
||||
@@ -463,7 +502,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);
|
||||
},
|
||||
|
||||
@@ -482,10 +521,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();
|
||||
@@ -568,7 +607,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)) : '') + '.'));
|
||||
},
|
||||
|
||||
/**
|
||||
@@ -657,30 +696,14 @@ jsxc.gui.template.videoWindow = '<div class="jsxc_webrtc">\
|
||||
sess.local_fp = SDPUtil.parse_fingerprint(SDPUtil.find_line(localSDP, 'a=fingerprint:')).fingerprint;
|
||||
sess.remote_fp = SDPUtil.parse_fingerprint(SDPUtil.find_line(remoteSDP, 'a=fingerprint:')).fingerprint;
|
||||
|
||||
var ip_regex = "(\\d{1,3}\\.\\d{1,3}.\\d{1,3}\\.\\d{1,3}) \\d+ typ host";
|
||||
|
||||
sess.remote_ip = remoteSDP.match(new RegExp(ip_regex))[1];
|
||||
sess.local_ip = localSDP.match(new RegExp(ip_regex))[1];
|
||||
|
||||
var regex = new RegExp(ip_regex, 'g');
|
||||
var match;
|
||||
while ((match = regex.exec(remoteSDP)) !== null) {
|
||||
if (match[1] !== sess.remote_ip) {
|
||||
alert('!!! WARNING !!!\n\nPossible Man-in-the-middle attack detected!\n\nYou should close the connection.');
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
var text = '<p>';
|
||||
text += '<b>' + 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 += '</p>';
|
||||
var text = '<p>';
|
||||
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');
|
||||
|
||||
@@ -722,7 +745,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') {
|
||||
@@ -796,7 +819,7 @@ jsxc.gui.template.videoWindow = '<div class="jsxc_webrtc">\
|
||||
/**
|
||||
* Make a snapshot from a video stream and display it.
|
||||
*
|
||||
* @memberOf
|
||||
* @memberOf jsxc.webrtc
|
||||
* @param video Video stream
|
||||
*/
|
||||
snapshot: function(video) {
|
||||
@@ -806,14 +829,14 @@ jsxc.gui.template.videoWindow = '<div class="jsxc_webrtc">\
|
||||
|
||||
$('.jsxc_snapshotbar p').remove();
|
||||
|
||||
var canvas = $('<canvas/>').css('display', 'none').appendTo('body').attr({
|
||||
var canvas = $('<canvas/>').css('display', 'none').appendTo('body').attr({
|
||||
width: video.width(),
|
||||
height: video.height()
|
||||
}).get(0);
|
||||
var ctx = canvas.getContext('2d');
|
||||
|
||||
ctx.drawImage(video[0], 0, 0);
|
||||
var img = $('<img/>');
|
||||
var img = $('<img/>');
|
||||
var url = null;
|
||||
|
||||
try {
|
||||
@@ -824,7 +847,7 @@ jsxc.gui.template.videoWindow = '<div class="jsxc_webrtc">\
|
||||
}
|
||||
|
||||
img[0].src = url;
|
||||
var link = $('<a/>').attr({
|
||||
var link = $('<a/>').attr({
|
||||
target: '_blank',
|
||||
href: url
|
||||
});
|
||||
@@ -986,66 +1009,26 @@ 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'
|
||||
});
|
||||
</code></pre>
|
||||
</article>
|
||||
</section>
|
||||
|
||||
$.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));
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<nav>
|
||||
<h2><a href="index.html">Index</a></h2><h3>Namespaces</h3><ul><li><a href="jsxc.html">jsxc</a></li><li><a href="jsxc.gui.html">gui</a></li><li><a href="jsxc.gui.dialog.html">dialog</a></li><li><a href="jsxc.gui.queryActions.html">queryActions</a></li><li><a href="jsxc.gui.roster.html">roster</a></li><li><a href="jsxc.gui.template.html">template</a></li><li><a href="jsxc.gui.window.html">window</a></li><li><a href="jsxc.muc.html">muc</a></li><li><a href="jsxc.notification.html">notification</a></li><li><a href="jsxc.options.html">options</a></li><li><a href="jsxc.otr.html">otr</a></li><li><a href="jsxc.storage.html">storage</a></li><li><a href="jsxc.webrtc.html">webrtc</a></li><li><a href="jsxc.xmpp.html">xmpp</a></li><li><a href="jsxc.xmpp.carbons.html">carbons</a></li></ul><h3><a href="global.html">Global</a></h3>
|
||||
</nav>
|
||||
|
||||
<br clear="both">
|
||||
|
||||
<footer>
|
||||
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Sat May 23 2015 16:03:18 GMT+0200 (CEST)
|
||||
</footer>
|
||||
|
||||
<script> prettyPrint(); </script>
|
||||
<script src="scripts/linenumber.js"> </script>
|
||||
</body>
|
||||
</html>
|
||||
Diferenças do arquivo suprimidas por serem muito extensas
Carregar Diff
+2948
Diferenças do arquivo suprimidas por serem muito extensas
Carregar Diff
Diferenças do arquivo suprimidas por serem muito extensas
Carregar Diff
Diferenças do arquivo suprimidas por serem muito extensas
Carregar Diff
+2033
Diferenças do arquivo suprimidas por serem muito extensas
Carregar Diff
Diferenças do arquivo suprimidas por serem muito extensas
Carregar Diff
Diferenças do arquivo suprimidas por serem muito extensas
Carregar Diff
@@ -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.xmpp.js.html">jsxc.lib.xmpp.js</a>, <a href="jsxc.lib.xmpp.js.html#line1040">line 1040</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.xmpp.js.html">jsxc.lib.xmpp.js</a>, <a href="jsxc.lib.xmpp.js.html#line1080">line 1080</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.xmpp.js.html">jsxc.lib.xmpp.js</a>, <a href="jsxc.lib.xmpp.js.html#line1054">line 1054</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.xmpp.js.html">jsxc.lib.xmpp.js</a>, <a href="jsxc.lib.xmpp.js.html#line1106">line 1106</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</dd>
|
||||
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</article>
|
||||
|
||||
</section>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<nav>
|
||||
<h2><a href="index.html">Index</a></h2><h3>Namespaces</h3><ul><li><a href="jsxc.html">jsxc</a></li><li><a href="jsxc.gui.html">gui</a></li><li><a href="jsxc.gui.dialog.html">dialog</a></li><li><a href="jsxc.gui.queryActions.html">queryActions</a></li><li><a href="jsxc.gui.roster.html">roster</a></li><li><a href="jsxc.gui.template.html">template</a></li><li><a href="jsxc.gui.window.html">window</a></li><li><a href="jsxc.muc.html">muc</a></li><li><a href="jsxc.notification.html">notification</a></li><li><a href="jsxc.options.html">options</a></li><li><a href="jsxc.otr.html">otr</a></li><li><a href="jsxc.storage.html">storage</a></li><li><a href="jsxc.webrtc.html">webrtc</a></li><li><a href="jsxc.xmpp.html">xmpp</a></li><li><a href="jsxc.xmpp.carbons.html">carbons</a></li></ul><h3><a href="global.html">Global</a></h3>
|
||||
</nav>
|
||||
|
||||
<br clear="both">
|
||||
|
||||
<footer>
|
||||
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Sat May 23 2015 16:03:20 GMT+0200 (CEST)
|
||||
</footer>
|
||||
|
||||
<script> prettyPrint(); </script>
|
||||
<script src="scripts/linenumber.js"> </script>
|
||||
</body>
|
||||
</html>
|
||||
Diferenças do arquivo suprimidas por serem muito extensas
Carregar Diff
@@ -0,0 +1,17 @@
|
||||
(function() {
|
||||
var counter = 0;
|
||||
var numbered;
|
||||
var source = document.getElementsByClassName('prettyprint source');
|
||||
|
||||
if (source && source[0]) {
|
||||
source = source[0].getElementsByTagName('code')[0];
|
||||
|
||||
numbered = source.innerHTML.split('\n');
|
||||
numbered = numbered.map(function(item) {
|
||||
counter++;
|
||||
return '<span id="line' + counter + '" class="line"></span>' + item;
|
||||
});
|
||||
|
||||
source.innerHTML = numbered.join('\n');
|
||||
}
|
||||
})();
|
||||
@@ -0,0 +1,202 @@
|
||||
|
||||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
|
||||
To apply the Apache License to your work, attach the following
|
||||
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||
replaced with your own identifying information. (Don't include
|
||||
the brackets!) The text should be enclosed in the appropriate
|
||||
comment syntax for the file format. We also recommend that a
|
||||
file or class name and description of purpose be included on the
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright [yyyy] [name of copyright owner]
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
@@ -0,0 +1,2 @@
|
||||
PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\f\r ]+/,null," \t\r\n"]],[["str",/^"(?:[^\n\f\r"\\]|\\(?:\r\n?|\n|\f)|\\[\S\s])*"/,null],["str",/^'(?:[^\n\f\r'\\]|\\(?:\r\n?|\n|\f)|\\[\S\s])*'/,null],["lang-css-str",/^url\(([^"')]*)\)/i],["kwd",/^(?:url|rgb|!important|@import|@page|@media|@charset|inherit)(?=[^\w-]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*)\s*:/i],["com",/^\/\*[^*]*\*+(?:[^*/][^*]*\*+)*\//],["com",
|
||||
/^(?:<\!--|--\>)/],["lit",/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],["lit",/^#[\da-f]{3,6}/i],["pln",/^-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*/i],["pun",/^[^\s\w"']+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[["kwd",/^-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[["str",/^[^"')]+/]]),["css-str"]);
|
||||
@@ -0,0 +1,28 @@
|
||||
var q=null;window.PR_SHOULD_USE_CONTINUATION=!0;
|
||||
(function(){function L(a){function m(a){var f=a.charCodeAt(0);if(f!==92)return f;var b=a.charAt(1);return(f=r[b])?f:"0"<=b&&b<="7"?parseInt(a.substring(1),8):b==="u"||b==="x"?parseInt(a.substring(2),16):a.charCodeAt(1)}function e(a){if(a<32)return(a<16?"\\x0":"\\x")+a.toString(16);a=String.fromCharCode(a);if(a==="\\"||a==="-"||a==="["||a==="]")a="\\"+a;return a}function h(a){for(var f=a.substring(1,a.length-1).match(/\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\[0-3][0-7]{0,2}|\\[0-7]{1,2}|\\[\S\s]|[^\\]/g),a=
|
||||
[],b=[],o=f[0]==="^",c=o?1:0,i=f.length;c<i;++c){var j=f[c];if(/\\[bdsw]/i.test(j))a.push(j);else{var j=m(j),d;c+2<i&&"-"===f[c+1]?(d=m(f[c+2]),c+=2):d=j;b.push([j,d]);d<65||j>122||(d<65||j>90||b.push([Math.max(65,j)|32,Math.min(d,90)|32]),d<97||j>122||b.push([Math.max(97,j)&-33,Math.min(d,122)&-33]))}}b.sort(function(a,f){return a[0]-f[0]||f[1]-a[1]});f=[];j=[NaN,NaN];for(c=0;c<b.length;++c)i=b[c],i[0]<=j[1]+1?j[1]=Math.max(j[1],i[1]):f.push(j=i);b=["["];o&&b.push("^");b.push.apply(b,a);for(c=0;c<
|
||||
f.length;++c)i=f[c],b.push(e(i[0])),i[1]>i[0]&&(i[1]+1>i[0]&&b.push("-"),b.push(e(i[1])));b.push("]");return b.join("")}function y(a){for(var f=a.source.match(/\[(?:[^\\\]]|\\[\S\s])*]|\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\\d+|\\[^\dux]|\(\?[!:=]|[()^]|[^()[\\^]+/g),b=f.length,d=[],c=0,i=0;c<b;++c){var j=f[c];j==="("?++i:"\\"===j.charAt(0)&&(j=+j.substring(1))&&j<=i&&(d[j]=-1)}for(c=1;c<d.length;++c)-1===d[c]&&(d[c]=++t);for(i=c=0;c<b;++c)j=f[c],j==="("?(++i,d[i]===void 0&&(f[c]="(?:")):"\\"===j.charAt(0)&&
|
||||
(j=+j.substring(1))&&j<=i&&(f[c]="\\"+d[i]);for(i=c=0;c<b;++c)"^"===f[c]&&"^"!==f[c+1]&&(f[c]="");if(a.ignoreCase&&s)for(c=0;c<b;++c)j=f[c],a=j.charAt(0),j.length>=2&&a==="["?f[c]=h(j):a!=="\\"&&(f[c]=j.replace(/[A-Za-z]/g,function(a){a=a.charCodeAt(0);return"["+String.fromCharCode(a&-33,a|32)+"]"}));return f.join("")}for(var t=0,s=!1,l=!1,p=0,d=a.length;p<d;++p){var g=a[p];if(g.ignoreCase)l=!0;else if(/[a-z]/i.test(g.source.replace(/\\u[\da-f]{4}|\\x[\da-f]{2}|\\[^UXux]/gi,""))){s=!0;l=!1;break}}for(var r=
|
||||
{b:8,t:9,n:10,v:11,f:12,r:13},n=[],p=0,d=a.length;p<d;++p){g=a[p];if(g.global||g.multiline)throw Error(""+g);n.push("(?:"+y(g)+")")}return RegExp(n.join("|"),l?"gi":"g")}function M(a){function m(a){switch(a.nodeType){case 1:if(e.test(a.className))break;for(var g=a.firstChild;g;g=g.nextSibling)m(g);g=a.nodeName;if("BR"===g||"LI"===g)h[s]="\n",t[s<<1]=y++,t[s++<<1|1]=a;break;case 3:case 4:g=a.nodeValue,g.length&&(g=p?g.replace(/\r\n?/g,"\n"):g.replace(/[\t\n\r ]+/g," "),h[s]=g,t[s<<1]=y,y+=g.length,
|
||||
t[s++<<1|1]=a)}}var e=/(?:^|\s)nocode(?:\s|$)/,h=[],y=0,t=[],s=0,l;a.currentStyle?l=a.currentStyle.whiteSpace:window.getComputedStyle&&(l=document.defaultView.getComputedStyle(a,q).getPropertyValue("white-space"));var p=l&&"pre"===l.substring(0,3);m(a);return{a:h.join("").replace(/\n$/,""),c:t}}function B(a,m,e,h){m&&(a={a:m,d:a},e(a),h.push.apply(h,a.e))}function x(a,m){function e(a){for(var l=a.d,p=[l,"pln"],d=0,g=a.a.match(y)||[],r={},n=0,z=g.length;n<z;++n){var f=g[n],b=r[f],o=void 0,c;if(typeof b===
|
||||
"string")c=!1;else{var i=h[f.charAt(0)];if(i)o=f.match(i[1]),b=i[0];else{for(c=0;c<t;++c)if(i=m[c],o=f.match(i[1])){b=i[0];break}o||(b="pln")}if((c=b.length>=5&&"lang-"===b.substring(0,5))&&!(o&&typeof o[1]==="string"))c=!1,b="src";c||(r[f]=b)}i=d;d+=f.length;if(c){c=o[1];var j=f.indexOf(c),k=j+c.length;o[2]&&(k=f.length-o[2].length,j=k-c.length);b=b.substring(5);B(l+i,f.substring(0,j),e,p);B(l+i+j,c,C(b,c),p);B(l+i+k,f.substring(k),e,p)}else p.push(l+i,b)}a.e=p}var h={},y;(function(){for(var e=a.concat(m),
|
||||
l=[],p={},d=0,g=e.length;d<g;++d){var r=e[d],n=r[3];if(n)for(var k=n.length;--k>=0;)h[n.charAt(k)]=r;r=r[1];n=""+r;p.hasOwnProperty(n)||(l.push(r),p[n]=q)}l.push(/[\S\s]/);y=L(l)})();var t=m.length;return e}function u(a){var m=[],e=[];a.tripleQuotedStrings?m.push(["str",/^(?:'''(?:[^'\\]|\\[\S\s]|''?(?=[^']))*(?:'''|$)|"""(?:[^"\\]|\\[\S\s]|""?(?=[^"]))*(?:"""|$)|'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$))/,q,"'\""]):a.multiLineStrings?m.push(["str",/^(?:'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$)|`(?:[^\\`]|\\[\S\s])*(?:`|$))/,
|
||||
q,"'\"`"]):m.push(["str",/^(?:'(?:[^\n\r'\\]|\\.)*(?:'|$)|"(?:[^\n\r"\\]|\\.)*(?:"|$))/,q,"\"'"]);a.verbatimStrings&&e.push(["str",/^@"(?:[^"]|"")*(?:"|$)/,q]);var h=a.hashComments;h&&(a.cStyleComments?(h>1?m.push(["com",/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,q,"#"]):m.push(["com",/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\n\r]*)/,q,"#"]),e.push(["str",/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,q])):m.push(["com",/^#[^\n\r]*/,
|
||||
q,"#"]));a.cStyleComments&&(e.push(["com",/^\/\/[^\n\r]*/,q]),e.push(["com",/^\/\*[\S\s]*?(?:\*\/|$)/,q]));a.regexLiterals&&e.push(["lang-regex",/^(?:^^\.?|[!+-]|!=|!==|#|%|%=|&|&&|&&=|&=|\(|\*|\*=|\+=|,|-=|->|\/|\/=|:|::|;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|[?@[^]|\^=|\^\^|\^\^=|{|\||\|=|\|\||\|\|=|~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\s*(\/(?=[^*/])(?:[^/[\\]|\\[\S\s]|\[(?:[^\\\]]|\\[\S\s])*(?:]|$))+\/)/]);(h=a.types)&&e.push(["typ",h]);a=(""+a.keywords).replace(/^ | $/g,
|
||||
"");a.length&&e.push(["kwd",RegExp("^(?:"+a.replace(/[\s,]+/g,"|")+")\\b"),q]);m.push(["pln",/^\s+/,q," \r\n\t\xa0"]);e.push(["lit",/^@[$_a-z][\w$@]*/i,q],["typ",/^(?:[@_]?[A-Z]+[a-z][\w$@]*|\w+_t\b)/,q],["pln",/^[$_a-z][\w$@]*/i,q],["lit",/^(?:0x[\da-f]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+-]?\d+)?)[a-z]*/i,q,"0123456789"],["pln",/^\\[\S\s]?/,q],["pun",/^.[^\s\w"-$'./@\\`]*/,q]);return x(m,e)}function D(a,m){function e(a){switch(a.nodeType){case 1:if(k.test(a.className))break;if("BR"===a.nodeName)h(a),
|
||||
a.parentNode&&a.parentNode.removeChild(a);else for(a=a.firstChild;a;a=a.nextSibling)e(a);break;case 3:case 4:if(p){var b=a.nodeValue,d=b.match(t);if(d){var c=b.substring(0,d.index);a.nodeValue=c;(b=b.substring(d.index+d[0].length))&&a.parentNode.insertBefore(s.createTextNode(b),a.nextSibling);h(a);c||a.parentNode.removeChild(a)}}}}function h(a){function b(a,d){var e=d?a.cloneNode(!1):a,f=a.parentNode;if(f){var f=b(f,1),g=a.nextSibling;f.appendChild(e);for(var h=g;h;h=g)g=h.nextSibling,f.appendChild(h)}return e}
|
||||
for(;!a.nextSibling;)if(a=a.parentNode,!a)return;for(var a=b(a.nextSibling,0),e;(e=a.parentNode)&&e.nodeType===1;)a=e;d.push(a)}var k=/(?:^|\s)nocode(?:\s|$)/,t=/\r\n?|\n/,s=a.ownerDocument,l;a.currentStyle?l=a.currentStyle.whiteSpace:window.getComputedStyle&&(l=s.defaultView.getComputedStyle(a,q).getPropertyValue("white-space"));var p=l&&"pre"===l.substring(0,3);for(l=s.createElement("LI");a.firstChild;)l.appendChild(a.firstChild);for(var d=[l],g=0;g<d.length;++g)e(d[g]);m===(m|0)&&d[0].setAttribute("value",
|
||||
m);var r=s.createElement("OL");r.className="linenums";for(var n=Math.max(0,m-1|0)||0,g=0,z=d.length;g<z;++g)l=d[g],l.className="L"+(g+n)%10,l.firstChild||l.appendChild(s.createTextNode("\xa0")),r.appendChild(l);a.appendChild(r)}function k(a,m){for(var e=m.length;--e>=0;){var h=m[e];A.hasOwnProperty(h)?window.console&&console.warn("cannot override language handler %s",h):A[h]=a}}function C(a,m){if(!a||!A.hasOwnProperty(a))a=/^\s*</.test(m)?"default-markup":"default-code";return A[a]}function E(a){var m=
|
||||
a.g;try{var e=M(a.h),h=e.a;a.a=h;a.c=e.c;a.d=0;C(m,h)(a);var k=/\bMSIE\b/.test(navigator.userAgent),m=/\n/g,t=a.a,s=t.length,e=0,l=a.c,p=l.length,h=0,d=a.e,g=d.length,a=0;d[g]=s;var r,n;for(n=r=0;n<g;)d[n]!==d[n+2]?(d[r++]=d[n++],d[r++]=d[n++]):n+=2;g=r;for(n=r=0;n<g;){for(var z=d[n],f=d[n+1],b=n+2;b+2<=g&&d[b+1]===f;)b+=2;d[r++]=z;d[r++]=f;n=b}for(d.length=r;h<p;){var o=l[h+2]||s,c=d[a+2]||s,b=Math.min(o,c),i=l[h+1],j;if(i.nodeType!==1&&(j=t.substring(e,b))){k&&(j=j.replace(m,"\r"));i.nodeValue=
|
||||
j;var u=i.ownerDocument,v=u.createElement("SPAN");v.className=d[a+1];var x=i.parentNode;x.replaceChild(v,i);v.appendChild(i);e<o&&(l[h+1]=i=u.createTextNode(t.substring(b,o)),x.insertBefore(i,v.nextSibling))}e=b;e>=o&&(h+=2);e>=c&&(a+=2)}}catch(w){"console"in window&&console.log(w&&w.stack?w.stack:w)}}var v=["break,continue,do,else,for,if,return,while"],w=[[v,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"],
|
||||
"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"],F=[w,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"],G=[w,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"],
|
||||
H=[G,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"],w=[w,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"],I=[v,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"],
|
||||
J=[v,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"],v=[v,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"],K=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/,N=/\S/,O=u({keywords:[F,H,w,"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END"+
|
||||
I,J,v],hashComments:!0,cStyleComments:!0,multiLineStrings:!0,regexLiterals:!0}),A={};k(O,["default-code"]);k(x([],[["pln",/^[^<?]+/],["dec",/^<!\w[^>]*(?:>|$)/],["com",/^<\!--[\S\s]*?(?:--\>|$)/],["lang-",/^<\?([\S\s]+?)(?:\?>|$)/],["lang-",/^<%([\S\s]+?)(?:%>|$)/],["pun",/^(?:<[%?]|[%?]>)/],["lang-",/^<xmp\b[^>]*>([\S\s]+?)<\/xmp\b[^>]*>/i],["lang-js",/^<script\b[^>]*>([\S\s]*?)(<\/script\b[^>]*>)/i],["lang-css",/^<style\b[^>]*>([\S\s]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),
|
||||
["default-markup","htm","html","mxml","xhtml","xml","xsl"]);k(x([["pln",/^\s+/,q," \t\r\n"],["atv",/^(?:"[^"]*"?|'[^']*'?)/,q,"\"'"]],[["tag",/^^<\/?[a-z](?:[\w-.:]*\w)?|\/?>$/i],["atn",/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^\s"'>]*(?:[^\s"'/>]|\/(?=\s)))/],["pun",/^[/<->]+/],["lang-js",/^on\w+\s*=\s*"([^"]+)"/i],["lang-js",/^on\w+\s*=\s*'([^']+)'/i],["lang-js",/^on\w+\s*=\s*([^\s"'>]+)/i],["lang-css",/^style\s*=\s*"([^"]+)"/i],["lang-css",/^style\s*=\s*'([^']+)'/i],["lang-css",
|
||||
/^style\s*=\s*([^\s"'>]+)/i]]),["in.tag"]);k(x([],[["atv",/^[\S\s]+/]]),["uq.val"]);k(u({keywords:F,hashComments:!0,cStyleComments:!0,types:K}),["c","cc","cpp","cxx","cyc","m"]);k(u({keywords:"null,true,false"}),["json"]);k(u({keywords:H,hashComments:!0,cStyleComments:!0,verbatimStrings:!0,types:K}),["cs"]);k(u({keywords:G,cStyleComments:!0}),["java"]);k(u({keywords:v,hashComments:!0,multiLineStrings:!0}),["bsh","csh","sh"]);k(u({keywords:I,hashComments:!0,multiLineStrings:!0,tripleQuotedStrings:!0}),
|
||||
["cv","py"]);k(u({keywords:"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END",hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["perl","pl","pm"]);k(u({keywords:J,hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["rb"]);k(u({keywords:w,cStyleComments:!0,regexLiterals:!0}),["js"]);k(u({keywords:"all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes",
|
||||
hashComments:3,cStyleComments:!0,multilineStrings:!0,tripleQuotedStrings:!0,regexLiterals:!0}),["coffee"]);k(x([],[["str",/^[\S\s]+/]]),["regex"]);window.prettyPrintOne=function(a,m,e){var h=document.createElement("PRE");h.innerHTML=a;e&&D(h,e);E({g:m,i:e,h:h});return h.innerHTML};window.prettyPrint=function(a){function m(){for(var e=window.PR_SHOULD_USE_CONTINUATION?l.now()+250:Infinity;p<h.length&&l.now()<e;p++){var n=h[p],k=n.className;if(k.indexOf("prettyprint")>=0){var k=k.match(g),f,b;if(b=
|
||||
!k){b=n;for(var o=void 0,c=b.firstChild;c;c=c.nextSibling)var i=c.nodeType,o=i===1?o?b:c:i===3?N.test(c.nodeValue)?b:o:o;b=(f=o===b?void 0:o)&&"CODE"===f.tagName}b&&(k=f.className.match(g));k&&(k=k[1]);b=!1;for(o=n.parentNode;o;o=o.parentNode)if((o.tagName==="pre"||o.tagName==="code"||o.tagName==="xmp")&&o.className&&o.className.indexOf("prettyprint")>=0){b=!0;break}b||((b=(b=n.className.match(/\blinenums\b(?::(\d+))?/))?b[1]&&b[1].length?+b[1]:!0:!1)&&D(n,b),d={g:k,h:n,i:b},E(d))}}p<h.length?setTimeout(m,
|
||||
250):a&&a()}for(var e=[document.getElementsByTagName("pre"),document.getElementsByTagName("code"),document.getElementsByTagName("xmp")],h=[],k=0;k<e.length;++k)for(var t=0,s=e[k].length;t<s;++t)h.push(e[k][t]);var e=q,l=Date;l.now||(l={now:function(){return+new Date}});var p=0,d,g=/\blang(?:uage)?-([\w.]+)(?!\S)/;m()};window.PR={createSimpleLexer:x,registerLangHandler:k,sourceDecorator:u,PR_ATTRIB_NAME:"atn",PR_ATTRIB_VALUE:"atv",PR_COMMENT:"com",PR_DECLARATION:"dec",PR_KEYWORD:"kwd",PR_LITERAL:"lit",
|
||||
PR_NOCODE:"nocode",PR_PLAIN:"pln",PR_PUNCTUATION:"pun",PR_SOURCE:"src",PR_STRING:"str",PR_TAG:"tag",PR_TYPE:"typ"}})();
|
||||
@@ -0,0 +1,290 @@
|
||||
html
|
||||
{
|
||||
overflow: auto;
|
||||
background-color: #fff;
|
||||
}
|
||||
|
||||
body
|
||||
{
|
||||
font: 14px "DejaVu Sans Condensed", "Liberation Sans", "Nimbus Sans L", Tahoma, Geneva, "Helvetica Neue", Helvetica, Arial, sans serif;
|
||||
line-height: 130%;
|
||||
color: #000;
|
||||
background-color: #fff;
|
||||
}
|
||||
|
||||
a {
|
||||
color: #444;
|
||||
}
|
||||
|
||||
a:visited {
|
||||
color: #444;
|
||||
}
|
||||
|
||||
a:active {
|
||||
color: #444;
|
||||
}
|
||||
|
||||
header
|
||||
{
|
||||
display: block;
|
||||
padding: 6px 4px;
|
||||
}
|
||||
|
||||
.class-description {
|
||||
font-style: italic;
|
||||
font-family: Palatino, 'Palatino Linotype', serif;
|
||||
font-size: 130%;
|
||||
line-height: 140%;
|
||||
margin-bottom: 1em;
|
||||
margin-top: 1em;
|
||||
}
|
||||
|
||||
#main {
|
||||
float: left;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
section
|
||||
{
|
||||
display: block;
|
||||
|
||||
background-color: #fff;
|
||||
padding: 12px 24px;
|
||||
border-bottom: 1px solid #ccc;
|
||||
margin-right: 240px;
|
||||
}
|
||||
|
||||
.variation {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.optional:after {
|
||||
content: "opt";
|
||||
font-size: 60%;
|
||||
color: #aaa;
|
||||
font-style: italic;
|
||||
font-weight: lighter;
|
||||
}
|
||||
|
||||
nav
|
||||
{
|
||||
display: block;
|
||||
float: left;
|
||||
margin-left: -230px;
|
||||
margin-top: 28px;
|
||||
width: 220px;
|
||||
border-left: 1px solid #ccc;
|
||||
padding-left: 9px;
|
||||
}
|
||||
|
||||
nav ul {
|
||||
font-family: 'Lucida Grande', 'Lucida Sans Unicode', arial, sans-serif;
|
||||
font-size: 100%;
|
||||
line-height: 17px;
|
||||
padding:0;
|
||||
margin:0;
|
||||
list-style-type:none;
|
||||
}
|
||||
|
||||
nav h2 a, nav h2 a:visited {
|
||||
color: #A35A00;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
nav h3 {
|
||||
margin-top: 12px;
|
||||
}
|
||||
|
||||
nav li {
|
||||
margin-top: 6px;
|
||||
}
|
||||
|
||||
nav a {
|
||||
color: #5C5954;
|
||||
}
|
||||
|
||||
nav a:visited {
|
||||
color: #5C5954;
|
||||
}
|
||||
|
||||
nav a:active {
|
||||
color: #5C5954;
|
||||
}
|
||||
|
||||
footer {
|
||||
display: block;
|
||||
padding: 6px;
|
||||
margin-top: 12px;
|
||||
font-style: italic;
|
||||
font-size: 90%;
|
||||
}
|
||||
|
||||
h1
|
||||
{
|
||||
font-size: 200%;
|
||||
font-weight: bold;
|
||||
letter-spacing: -0.01em;
|
||||
margin: 6px 0 9px 0;
|
||||
}
|
||||
|
||||
h2
|
||||
{
|
||||
font-size: 170%;
|
||||
font-weight: bold;
|
||||
letter-spacing: -0.01em;
|
||||
margin: 6px 0 3px 0;
|
||||
}
|
||||
|
||||
h3
|
||||
{
|
||||
font-size: 150%;
|
||||
font-weight: bold;
|
||||
letter-spacing: -0.01em;
|
||||
margin-top: 16px;
|
||||
margin: 6px 0 3px 0;
|
||||
}
|
||||
|
||||
h4
|
||||
{
|
||||
font-size: 130%;
|
||||
font-weight: bold;
|
||||
letter-spacing: -0.01em;
|
||||
margin-top: 16px;
|
||||
margin: 18px 0 3px 0;
|
||||
color: #A35A00;
|
||||
}
|
||||
|
||||
h5, .container-overview .subsection-title
|
||||
{
|
||||
font-size: 120%;
|
||||
font-weight: bold;
|
||||
letter-spacing: -0.01em;
|
||||
margin: 8px 0 3px -16px;
|
||||
}
|
||||
|
||||
h6
|
||||
{
|
||||
font-size: 100%;
|
||||
letter-spacing: -0.01em;
|
||||
margin: 6px 0 3px 0;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.ancestors { color: #999; }
|
||||
.ancestors a
|
||||
{
|
||||
color: #999 !important;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.important
|
||||
{
|
||||
font-weight: bold;
|
||||
color: #950B02;
|
||||
}
|
||||
|
||||
.yes-def {
|
||||
text-indent: -1000px;
|
||||
}
|
||||
|
||||
.type-signature {
|
||||
color: #aaa;
|
||||
}
|
||||
|
||||
.name, .signature {
|
||||
font-family: Consolas, "Lucida Console", Monaco, monospace;
|
||||
}
|
||||
|
||||
.details { margin-top: 14px; border-left: 2px solid #DDD; }
|
||||
.details dt { width:100px; float:left; padding-left: 10px; padding-top: 6px; }
|
||||
.details dd { margin-left: 50px; }
|
||||
.details ul { margin: 0; }
|
||||
.details ul { list-style-type: none; }
|
||||
.details li { margin-left: 30px; padding-top: 6px; }
|
||||
.details pre.prettyprint { margin: 0 }
|
||||
.details .object-value { padding-top: 0; }
|
||||
|
||||
.description {
|
||||
margin-bottom: 1em;
|
||||
margin-left: -16px;
|
||||
margin-top: 1em;
|
||||
}
|
||||
|
||||
.code-caption
|
||||
{
|
||||
font-style: italic;
|
||||
font-family: Palatino, 'Palatino Linotype', serif;
|
||||
font-size: 107%;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.prettyprint
|
||||
{
|
||||
border: 1px solid #ddd;
|
||||
width: 80%;
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
.prettyprint.source {
|
||||
width: inherit;
|
||||
}
|
||||
|
||||
.prettyprint code
|
||||
{
|
||||
font-family: Consolas, 'Lucida Console', Monaco, monospace;
|
||||
font-size: 100%;
|
||||
line-height: 18px;
|
||||
display: block;
|
||||
padding: 4px 12px;
|
||||
margin: 0;
|
||||
background-color: #fff;
|
||||
color: #000;
|
||||
border-left: 3px #ddd solid;
|
||||
}
|
||||
|
||||
.prettyprint code span.line
|
||||
{
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.params, .props
|
||||
{
|
||||
border-spacing: 0;
|
||||
border: 0;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
.params .name, .props .name, .name code {
|
||||
color: #A35A00;
|
||||
font-family: Consolas, 'Lucida Console', Monaco, monospace;
|
||||
font-size: 100%;
|
||||
}
|
||||
|
||||
.params td, .params th, .props td, .props th
|
||||
{
|
||||
border: 1px solid #ddd;
|
||||
margin: 0px;
|
||||
text-align: left;
|
||||
vertical-align: top;
|
||||
padding: 4px 6px;
|
||||
display: table-cell;
|
||||
}
|
||||
|
||||
.params thead tr, .props thead tr
|
||||
{
|
||||
background-color: #ddd;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.params .params thead tr, .props .props thead tr
|
||||
{
|
||||
background-color: #fff;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.params th, .props th { border-right: 1px solid #aaa; }
|
||||
.params thead .last, .props thead .last { border-right: 1px solid #ddd; }
|
||||
|
||||
.disabled {
|
||||
color: #454545;
|
||||
}
|
||||
@@ -0,0 +1,111 @@
|
||||
/* JSDoc prettify.js theme */
|
||||
|
||||
/* plain text */
|
||||
.pln {
|
||||
color: #000000;
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
/* string content */
|
||||
.str {
|
||||
color: #006400;
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
/* a keyword */
|
||||
.kwd {
|
||||
color: #000000;
|
||||
font-weight: bold;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
/* a comment */
|
||||
.com {
|
||||
font-weight: normal;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
/* a type name */
|
||||
.typ {
|
||||
color: #000000;
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
/* a literal value */
|
||||
.lit {
|
||||
color: #006400;
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
/* punctuation */
|
||||
.pun {
|
||||
color: #000000;
|
||||
font-weight: bold;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
/* lisp open bracket */
|
||||
.opn {
|
||||
color: #000000;
|
||||
font-weight: bold;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
/* lisp close bracket */
|
||||
.clo {
|
||||
color: #000000;
|
||||
font-weight: bold;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
/* a markup tag name */
|
||||
.tag {
|
||||
color: #006400;
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
/* a markup attribute name */
|
||||
.atn {
|
||||
color: #006400;
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
/* a markup attribute value */
|
||||
.atv {
|
||||
color: #006400;
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
/* a declaration */
|
||||
.dec {
|
||||
color: #000000;
|
||||
font-weight: bold;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
/* a variable name */
|
||||
.var {
|
||||
color: #000000;
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
/* a function name */
|
||||
.fun {
|
||||
color: #000000;
|
||||
font-weight: bold;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
/* Specify class=linenums on a pre to get line numbering */
|
||||
ol.linenums {
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
@@ -0,0 +1,132 @@
|
||||
/* Tomorrow Theme */
|
||||
/* Original theme - https://github.com/chriskempson/tomorrow-theme */
|
||||
/* Pretty printing styles. Used with prettify.js. */
|
||||
/* SPAN elements with the classes below are added by prettyprint. */
|
||||
/* plain text */
|
||||
.pln {
|
||||
color: #4d4d4c; }
|
||||
|
||||
@media screen {
|
||||
/* string content */
|
||||
.str {
|
||||
color: #718c00; }
|
||||
|
||||
/* a keyword */
|
||||
.kwd {
|
||||
color: #8959a8; }
|
||||
|
||||
/* a comment */
|
||||
.com {
|
||||
color: #8e908c; }
|
||||
|
||||
/* a type name */
|
||||
.typ {
|
||||
color: #4271ae; }
|
||||
|
||||
/* a literal value */
|
||||
.lit {
|
||||
color: #f5871f; }
|
||||
|
||||
/* punctuation */
|
||||
.pun {
|
||||
color: #4d4d4c; }
|
||||
|
||||
/* lisp open bracket */
|
||||
.opn {
|
||||
color: #4d4d4c; }
|
||||
|
||||
/* lisp close bracket */
|
||||
.clo {
|
||||
color: #4d4d4c; }
|
||||
|
||||
/* a markup tag name */
|
||||
.tag {
|
||||
color: #c82829; }
|
||||
|
||||
/* a markup attribute name */
|
||||
.atn {
|
||||
color: #f5871f; }
|
||||
|
||||
/* a markup attribute value */
|
||||
.atv {
|
||||
color: #3e999f; }
|
||||
|
||||
/* a declaration */
|
||||
.dec {
|
||||
color: #f5871f; }
|
||||
|
||||
/* a variable name */
|
||||
.var {
|
||||
color: #c82829; }
|
||||
|
||||
/* a function name */
|
||||
.fun {
|
||||
color: #4271ae; } }
|
||||
/* Use higher contrast and text-weight for printable form. */
|
||||
@media print, projection {
|
||||
.str {
|
||||
color: #060; }
|
||||
|
||||
.kwd {
|
||||
color: #006;
|
||||
font-weight: bold; }
|
||||
|
||||
.com {
|
||||
color: #600;
|
||||
font-style: italic; }
|
||||
|
||||
.typ {
|
||||
color: #404;
|
||||
font-weight: bold; }
|
||||
|
||||
.lit {
|
||||
color: #044; }
|
||||
|
||||
.pun, .opn, .clo {
|
||||
color: #440; }
|
||||
|
||||
.tag {
|
||||
color: #006;
|
||||
font-weight: bold; }
|
||||
|
||||
.atn {
|
||||
color: #404; }
|
||||
|
||||
.atv {
|
||||
color: #060; } }
|
||||
/* Style */
|
||||
/*
|
||||
pre.prettyprint {
|
||||
background: white;
|
||||
font-family: Menlo, Monaco, Consolas, monospace;
|
||||
font-size: 12px;
|
||||
line-height: 1.5;
|
||||
border: 1px solid #ccc;
|
||||
padding: 10px; }
|
||||
*/
|
||||
|
||||
/* Specify class=linenums on a pre to get line numbering */
|
||||
ol.linenums {
|
||||
margin-top: 0;
|
||||
margin-bottom: 0; }
|
||||
|
||||
/* IE indents via margin-left */
|
||||
li.L0,
|
||||
li.L1,
|
||||
li.L2,
|
||||
li.L3,
|
||||
li.L4,
|
||||
li.L5,
|
||||
li.L6,
|
||||
li.L7,
|
||||
li.L8,
|
||||
li.L9 {
|
||||
/* */ }
|
||||
|
||||
/* Alternate shading for lines */
|
||||
li.L1,
|
||||
li.L3,
|
||||
li.L5,
|
||||
li.L7,
|
||||
li.L9 {
|
||||
/* */ }
|
||||
@@ -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
-35
@@ -7,44 +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.min.js"></script>
|
||||
|
||||
<script src="js/example.js"></script>
|
||||
|
||||
</head>
|
||||
@@ -52,11 +31,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());
|
||||
});
|
||||
});
|
||||
|
||||
+11
-24
@@ -7,35 +7,22 @@
|
||||
<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.min.js"></script>
|
||||
|
||||
<script src="js/example.js"></script>
|
||||
|
||||
@@ -46,4 +33,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
-5862
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...61c54a31bd
+10
-4
@@ -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) {
|
||||
@@ -261,4 +267,4 @@
|
||||
return 0;
|
||||
}
|
||||
});
|
||||
}(jQuery));
|
||||
}(jQuery));
|
||||
|
||||
+1
-1
Submodule lib/strophe.jingle updated: af28b2bf51...d3ef8baeb6
@@ -0,0 +1,265 @@
|
||||
{
|
||||
"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 sicherzustellen, dass die Person mit der du sprichst auch die ist die sie sagt.",
|
||||
"How_do_you_want_to_authenticate_your_buddy": "Wie willst du {{bid_name}} (<b>{{bid_jid}}</b>) authentifizieren?",
|
||||
"Select_method": "Wähle...",
|
||||
"Manual": "Manual",
|
||||
"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 kennt.",
|
||||
"Ask": "Frage",
|
||||
"To_authenticate_pick_a_secret_": "Um deinen Kontakt zu authentifizieren, wähle ein Geheimnis welches nur deinem Kontakt und dir bekannt ist.",
|
||||
"Compare": "Vergleiche",
|
||||
"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": "Authentifizierungsanfrage empfangen.",
|
||||
"Do_you_want_to_display_them": "Möchtest du sie sehen?",
|
||||
"Log_in_without_chat": "Anmelden ohne Chat",
|
||||
"has_come_online": "ist online gekommen",
|
||||
"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",
|
||||
"Join_chat": "Gruppe beitreten",
|
||||
"Join": "Betreten",
|
||||
"Room": "Gruppe",
|
||||
"Nickname": "Nickname",
|
||||
"left_the_building": "__nickname__ hat die Gruppe verlassen",
|
||||
"entered_the_room": "__nickname__ ist der Gruppe beigetreten",
|
||||
"is_now_known_as": "__oldNickname__ ist nun unter __newNickname__ bekannt",
|
||||
"This_room_is": "Diese Gruppe ist",
|
||||
"muc_hidden": {
|
||||
"keyword": "versteckt",
|
||||
"description": "kann durch die Suche nicht gefunden werden"
|
||||
},
|
||||
"muc_membersonly": {
|
||||
"keyword": "nur für Mitglieder",
|
||||
"description": "du musst auf der Mitgliederliste stehen"
|
||||
},
|
||||
"muc_moderated": {
|
||||
"keyword": "moderiert",
|
||||
"description": "Nur Personen die \"Mitspracherecht\" haben dürfen Nachrichten senden"
|
||||
},
|
||||
"muc_nonanonymous": {
|
||||
"keyword": "nicht anonym",
|
||||
"description": "deine Jabber ID wird für alle Mitglieder sichtbar sein"
|
||||
},
|
||||
"muc_open": {
|
||||
"keyword": "offen",
|
||||
"description": "jeder darf dieser Gruppe beitreten"
|
||||
},
|
||||
"muc_passwordprotected": {
|
||||
"keyword": "passwortgeschützt",
|
||||
"description": "du benötigst das korrekte Passwort"
|
||||
},
|
||||
"muc_persistent": {
|
||||
"keyword": "permanent",
|
||||
"description": "wird nicht geschlossen, wenn das letzte Mitglied die Gruppe verlässt"
|
||||
},
|
||||
"muc_public": {
|
||||
"keyword": "öffentlich",
|
||||
"description": "kann durch die Suche gefunden werden"
|
||||
},
|
||||
"muc_semianonymous": {
|
||||
"keyword": "teilweise anonym",
|
||||
"description": "deine Jabber ID wird nur für die Gruppen Administratoren sichtbar sein"
|
||||
},
|
||||
"muc_temporary": {
|
||||
"keyword": "temporär",
|
||||
"description": "wird geschlossen, wenn das letzte Mitglied die Gruppe verlässt"
|
||||
},
|
||||
"muc_unmoderated": {
|
||||
"keyword": "nicht moderiert",
|
||||
"description": "jeder darf Nachrichten senden"
|
||||
},
|
||||
"muc_unsecured": {
|
||||
"keyword": "ungesichert",
|
||||
"description": "es wird kein Passwort benötigt"
|
||||
},
|
||||
"Continue": "Weiter",
|
||||
"Server": "Server",
|
||||
"Rooms_are_loaded": "Gruppen werden geladen",
|
||||
"Could_load_only": "Es konnten nur __count__ Gruppen für die Autovervollständigung geladen werden",
|
||||
"muc_explanation": "Bitte trage den Gruppennamen und optional ein Nickname und Passwort ein um einer Gruppe beizutreten",
|
||||
"You_already_joined_this_room": "Du bist dieser Gruppe bereits beigetreten",
|
||||
"This_room_will_be_closed": "Diese Gruppe wird geschlossen",
|
||||
"Room_not_found_": "Es wird eine neue Gruppe erstellt",
|
||||
"Loading_room_information": "Informationen über Gruppe werden geladen",
|
||||
"Destroy": "Auflösen",
|
||||
"Leave": "Verlassen",
|
||||
"changed_subject_to": "__nickname__ hat das Thema auf __subject__ geändert",
|
||||
"muc_removed_kicked": "Du wurdest aus der Gruppe entfernt",
|
||||
"muc_removed_info_kicked": "__nickname__ wurde aus der Gruppe entfernt",
|
||||
"muc_removed_banned": "Du wurdest aus der Gruppe ausgeschlossen",
|
||||
"muc_removed_info_banned": "__nickname__ wurde aus der Gruppe ausgeschlossen",
|
||||
"muc_removed_affiliation": "Du wurdest aus der Gruppe entfernt wegen einer Änderung deines Mitgliedstatus",
|
||||
"muc_removed_info_affiliation": "__nickname__ wurde aus der Gruppe entfernt wegen einer Änderung seines Mitgliedstatus",
|
||||
"muc_removed_membersonly": "Diese Gruppe erlaubt jetzt nur noch eingetragene Mitglieder und da du nicht dazugehörst, wurdest du aus der Gruppen entfernt",
|
||||
"muc_removed_info_membersonly": "Diese Gruppe erlaubt jetzt nur noch eingetragene Mitglieder und __nickname__ gehört nicht dazu, daher wurde er aus der Gruppe entfernt",
|
||||
"muc_removed_shutdown": "Du wurdest aus der Gruppe entfernt, da der MUC Server heruntergefahren wird",
|
||||
"Reason": "Grund",
|
||||
"message_not_send": "Deine Nachricht wurde aufgrund eines Fehlers nicht versandt",
|
||||
"message_not_send_item-not-found": "Deine Nachricht wurde nicht versandt, da der Raum nicht mehr existiert",
|
||||
"message_not_send_forbidden": "Deine Nachricht wurde nicht versandt, da du kein \"Mitspracherecht\" hast",
|
||||
"message_not_send_not-acceptable": "Deine Nachricht wurde nicht versandt, da du kein Mitglied dieser Gruppe bist",
|
||||
"This_room_has_been_closed": "Diese Gruppe wurde geschlossen",
|
||||
"Room_logging_is_enabled": "Gesprächsverlauf kann öffentlich einsehbar sein",
|
||||
"A_password_is_required": "Es wird ein Passwort benötigt",
|
||||
"You_are_not_on_the_member_list": "Du bist kein eingetragenes Mitglied",
|
||||
"You_are_banned_from_this_room": "Du wurdest von dieser Gruppe ausgeschlossen",
|
||||
"Your_desired_nickname_": "Dein gewünschter Nickname wird bereits verwendet. Bitte wähle einen anderen.",
|
||||
"The_maximum_number_": "Die maximale Anzahl der Mitglieder wurde erreicht.",
|
||||
"This_room_is_locked_": "Diese Gruppe ist gesperrt",
|
||||
"You_are_not_allowed_to_create_": "Du darfst keine neue Gruppe erstellen",
|
||||
"Carbon_copy": null,
|
||||
"Enable": "Aktivieren"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,265 @@
|
||||
{
|
||||
"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,
|
||||
"Join_chat": null,
|
||||
"Join": null,
|
||||
"Room": null,
|
||||
"Nickname": null,
|
||||
"left_the_building": null,
|
||||
"entered_the_room": null,
|
||||
"is_now_known_as": null,
|
||||
"This_room_is": null,
|
||||
"muc_hidden": {
|
||||
"keyword": null,
|
||||
"description": null
|
||||
},
|
||||
"muc_membersonly": {
|
||||
"keyword": null,
|
||||
"description": null
|
||||
},
|
||||
"muc_moderated": {
|
||||
"keyword": null,
|
||||
"description": null
|
||||
},
|
||||
"muc_nonanonymous": {
|
||||
"keyword": null,
|
||||
"description": null
|
||||
},
|
||||
"muc_open": {
|
||||
"keyword": null,
|
||||
"description": null
|
||||
},
|
||||
"muc_passwordprotected": {
|
||||
"keyword": null,
|
||||
"description": null
|
||||
},
|
||||
"muc_persistent": {
|
||||
"keyword": null,
|
||||
"description": null
|
||||
},
|
||||
"muc_public": {
|
||||
"keyword": null,
|
||||
"description": null
|
||||
},
|
||||
"muc_semianonymous": {
|
||||
"keyword": null,
|
||||
"description": null
|
||||
},
|
||||
"muc_temporary": {
|
||||
"keyword": null,
|
||||
"description": null
|
||||
},
|
||||
"muc_unmoderated": {
|
||||
"keyword": null,
|
||||
"description": null
|
||||
},
|
||||
"muc_unsecured": {
|
||||
"keyword": null,
|
||||
"description": null
|
||||
},
|
||||
"Continue": null,
|
||||
"Server": null,
|
||||
"Rooms_are_loaded": null,
|
||||
"Could_load_only": null,
|
||||
"muc_explanation": null,
|
||||
"You_already_joined_this_room": null,
|
||||
"This_room_will_be_closed": null,
|
||||
"Room_not_found_": null,
|
||||
"Loading_room_information": null,
|
||||
"Destroy": null,
|
||||
"Leave": null,
|
||||
"changed_subject_to": null,
|
||||
"muc_removed_kicked": null,
|
||||
"muc_removed_info_kicked": null,
|
||||
"muc_removed_banned": null,
|
||||
"muc_removed_info_banned": null,
|
||||
"muc_removed_affiliation": null,
|
||||
"muc_removed_info_affiliation": null,
|
||||
"muc_removed_membersonly": null,
|
||||
"muc_removed_info_membersonly": null,
|
||||
"muc_removed_shutdown": null,
|
||||
"Reason": null,
|
||||
"message_not_send": null,
|
||||
"message_not_send_item-not-found": null,
|
||||
"message_not_send_forbidden": null,
|
||||
"message_not_send_not-acceptable": null,
|
||||
"This_room_has_been_closed": null,
|
||||
"Room_logging_is_enabled": null,
|
||||
"A_password_is_required": null,
|
||||
"You_are_not_on_the_member_list": null,
|
||||
"You_are_banned_from_this_room": null,
|
||||
"Your_desired_nickname_": null,
|
||||
"The_maximum_number_": null,
|
||||
"This_room_is_locked_": null,
|
||||
"You_are_not_allowed_to_create_": null,
|
||||
"Carbon_copy": null,
|
||||
"Enable": null
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,265 @@
|
||||
{
|
||||
"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 contact closed the private connection.",
|
||||
"start_private": "Start private",
|
||||
"close_private": "Close private",
|
||||
"your_buddy_is_verificated": "Your contact is verified.",
|
||||
"you_have_only_a_subscription_in_one_way": "You only have a one-way subscription.",
|
||||
"authentication_query_sent": "Authentication query sent.",
|
||||
"your_message_wasnt_send_please_end_your_private_conversation": "Your message was not sent. Please end your private conversation.",
|
||||
"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 contact closed the private conversation! You should do the same.",
|
||||
"conversation_is_now_verified": "Conversation is now verified.",
|
||||
"authentication_failed": "Authentication failed.",
|
||||
"your_buddy_is_attempting_to_determine_": "You contact is attempting to determine if they are really talking to you.",
|
||||
"to_authenticate_to_your_buddy": "To authenticate to your contact, ",
|
||||
"enter_the_answer_and_click_answer": "enter the answer and click Answer.",
|
||||
"enter_the_secret": "enter the secret.",
|
||||
"Creating_your_private_key_": "Creating your private key; this may take a while.",
|
||||
"Authenticating_a_buddy_helps_": "Authenticating a contact helps ensure that the person you are talking to is really the one they claim to be.",
|
||||
"How_do_you_want_to_authenticate_your_buddy": "How do you want to authenticate {{bid_name}} (<b>{{bid_jid}}</b>)?",
|
||||
"Select_method": "Select method...",
|
||||
"Manual": "Manual",
|
||||
"Question": "Question",
|
||||
"Secret": "Secret",
|
||||
"To_verify_the_fingerprint_": "To verify the fingerprint, contact your contact via some other trustworthy channel, such as the telephone.",
|
||||
"Your_fingerprint": "Your fingerprint",
|
||||
"Buddy_fingerprint": "Contact fingerprint",
|
||||
"Close": "Close",
|
||||
"Compared": "Compared",
|
||||
"To_authenticate_using_a_question_": "To authenticate using a question, pick a question whose answer is known only you and your contact.",
|
||||
"Ask": "Ask",
|
||||
"To_authenticate_pick_a_secret_": "To authenticate, pick a secret known only to you and your contact.",
|
||||
"Compare": "Compare",
|
||||
"Fingerprints": "Fingerprints",
|
||||
"Authentication": "Authentication",
|
||||
"Message": "Message",
|
||||
"Add_buddy": "Add contact",
|
||||
"rename_buddy": "rename contact",
|
||||
"delete_buddy": "delete contact",
|
||||
"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 contact",
|
||||
"You_are_about_to_remove_": "You are about to remove {{bid_name}} (<b>{{bid_jid}}</b>) from your contact list. All related chats will be closed.",
|
||||
"Continue_without_chat": "Continue without chat",
|
||||
"Please_wait": "Please wait",
|
||||
"Login_failed": "Chat login failed",
|
||||
"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": "Contact 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 contact",
|
||||
"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 contact 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 contact 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",
|
||||
"Carbon_copy": "Carbon copy",
|
||||
"Enable": "Enable"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,265 @@
|
||||
{
|
||||
"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",
|
||||
"Join_chat": null,
|
||||
"Join": null,
|
||||
"Room": null,
|
||||
"Nickname": null,
|
||||
"left_the_building": null,
|
||||
"entered_the_room": null,
|
||||
"is_now_known_as": null,
|
||||
"This_room_is": null,
|
||||
"muc_hidden": {
|
||||
"keyword": null,
|
||||
"description": null
|
||||
},
|
||||
"muc_membersonly": {
|
||||
"keyword": null,
|
||||
"description": null
|
||||
},
|
||||
"muc_moderated": {
|
||||
"keyword": null,
|
||||
"description": null
|
||||
},
|
||||
"muc_nonanonymous": {
|
||||
"keyword": null,
|
||||
"description": null
|
||||
},
|
||||
"muc_open": {
|
||||
"keyword": null,
|
||||
"description": null
|
||||
},
|
||||
"muc_passwordprotected": {
|
||||
"keyword": null,
|
||||
"description": null
|
||||
},
|
||||
"muc_persistent": {
|
||||
"keyword": null,
|
||||
"description": null
|
||||
},
|
||||
"muc_public": {
|
||||
"keyword": null,
|
||||
"description": null
|
||||
},
|
||||
"muc_semianonymous": {
|
||||
"keyword": null,
|
||||
"description": null
|
||||
},
|
||||
"muc_temporary": {
|
||||
"keyword": null,
|
||||
"description": null
|
||||
},
|
||||
"muc_unmoderated": {
|
||||
"keyword": null,
|
||||
"description": null
|
||||
},
|
||||
"muc_unsecured": {
|
||||
"keyword": null,
|
||||
"description": null
|
||||
},
|
||||
"Continue": null,
|
||||
"Server": null,
|
||||
"Rooms_are_loaded": null,
|
||||
"Could_load_only": null,
|
||||
"muc_explanation": null,
|
||||
"You_already_joined_this_room": null,
|
||||
"This_room_will_be_closed": null,
|
||||
"Room_not_found_": null,
|
||||
"Loading_room_information": null,
|
||||
"Destroy": null,
|
||||
"Leave": null,
|
||||
"changed_subject_to": null,
|
||||
"muc_removed_kicked": null,
|
||||
"muc_removed_info_kicked": null,
|
||||
"muc_removed_banned": null,
|
||||
"muc_removed_info_banned": null,
|
||||
"muc_removed_affiliation": null,
|
||||
"muc_removed_info_affiliation": null,
|
||||
"muc_removed_membersonly": null,
|
||||
"muc_removed_info_membersonly": null,
|
||||
"muc_removed_shutdown": null,
|
||||
"Reason": null,
|
||||
"message_not_send": null,
|
||||
"message_not_send_item-not-found": null,
|
||||
"message_not_send_forbidden": null,
|
||||
"message_not_send_not-acceptable": null,
|
||||
"This_room_has_been_closed": null,
|
||||
"Room_logging_is_enabled": null,
|
||||
"A_password_is_required": null,
|
||||
"You_are_not_on_the_member_list": null,
|
||||
"You_are_banned_from_this_room": null,
|
||||
"Your_desired_nickname_": null,
|
||||
"The_maximum_number_": null,
|
||||
"This_room_is_locked_": null,
|
||||
"You_are_not_allowed_to_create_": null,
|
||||
"Carbon_copy": null,
|
||||
"Enable": "Activar"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,265 @@
|
||||
{
|
||||
"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 contact 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",
|
||||
"Join_chat": "Joindre la discution",
|
||||
"Join": "Joindre",
|
||||
"Room": "Salon",
|
||||
"Nickname": "Surnom",
|
||||
"left_the_building": "__nickname__ a quitté l'immeuble",
|
||||
"entered_the_room": "__nickname__ entre dans le salon",
|
||||
"is_now_known_as": null,
|
||||
"This_room_is": "Ce salon est",
|
||||
"muc_hidden": {
|
||||
"keyword": "caché",
|
||||
"description": null
|
||||
},
|
||||
"muc_membersonly": {
|
||||
"keyword": "pour les membres seulement",
|
||||
"description": "Vous devez être sur la liste des membres"
|
||||
},
|
||||
"muc_moderated": {
|
||||
"keyword": "modéré",
|
||||
"description": "Seulement les personnes avec la \"voix\" sont autorisés à envoyer des messages"
|
||||
},
|
||||
"muc_nonanonymous": {
|
||||
"keyword": "non anonyme",
|
||||
"description": "Votre identifiant Jabber est visible de tous les autres occupants"
|
||||
},
|
||||
"muc_open": {
|
||||
"keyword": "ouvert",
|
||||
"description": "Tout le monde est autorisé à se connecter"
|
||||
},
|
||||
"muc_passwordprotected": {
|
||||
"keyword": "protégé par un mot de passe",
|
||||
"description": "Vous devez fournir un mot de passe correct"
|
||||
},
|
||||
"muc_persistent": {
|
||||
"keyword": "persistent",
|
||||
"description": null
|
||||
},
|
||||
"muc_public": {
|
||||
"keyword": "public",
|
||||
"description": null
|
||||
},
|
||||
"muc_semianonymous": {
|
||||
"keyword": "semi-anonyme",
|
||||
"description": "Votre identifiant Jabber est seulement visible aux administrateurs de ce salon"
|
||||
},
|
||||
"muc_temporary": {
|
||||
"keyword": "temporaire",
|
||||
"description": "sera détruit au départ de son dernier occupant"
|
||||
},
|
||||
"muc_unmoderated": {
|
||||
"keyword": "non modéré",
|
||||
"description": "Tout le monde est autorisé à envoyer des messages"
|
||||
},
|
||||
"muc_unsecured": {
|
||||
"keyword": "non sécurisé",
|
||||
"description": "un mot de passe n'est pas nécessaire pour entrer"
|
||||
},
|
||||
"Continue": "Continuer",
|
||||
"Server": "Serveur",
|
||||
"Rooms_are_loaded": "Les salons sont chargés",
|
||||
"Could_load_only": null,
|
||||
"muc_explanation": "Veuillez saisir le nom du salon, un surnom (optionnel) et un mot de passe pour joindre la conversation",
|
||||
"You_already_joined_this_room": "Vous avez déjà rejoins ce salon",
|
||||
"This_room_will_be_closed": "Ce salon va être fermé",
|
||||
"Room_not_found_": "Un nouveau salon va être créé",
|
||||
"Loading_room_information": "Chargement des informations du salon",
|
||||
"Destroy": "Détruire",
|
||||
"Leave": "Quitter",
|
||||
"changed_subject_to": "__nickname__ a changé le sujet du salon à \"__subject__\"",
|
||||
"muc_removed_kicked": "Vous avez été éjecté de ce salon",
|
||||
"muc_removed_info_kicked": "__nickname__ a été éjecté de ce salon",
|
||||
"muc_removed_banned": "Vous avez été banni de ce salon",
|
||||
"muc_removed_info_banned": "__nickname__ a été banni de ce salon",
|
||||
"muc_removed_affiliation": null,
|
||||
"muc_removed_info_affiliation": null,
|
||||
"muc_removed_membersonly": null,
|
||||
"muc_removed_info_membersonly": null,
|
||||
"muc_removed_shutdown": null,
|
||||
"Reason": "Raison",
|
||||
"message_not_send": null,
|
||||
"message_not_send_item-not-found": null,
|
||||
"message_not_send_forbidden": null,
|
||||
"message_not_send_not-acceptable": "Votre message n'a pas été envoyé car il n'y a personne dans ce salon",
|
||||
"This_room_has_been_closed": "Ce salon a été fermé",
|
||||
"Room_logging_is_enabled": null,
|
||||
"A_password_is_required": "Un mot de passe est requis",
|
||||
"You_are_not_on_the_member_list": "Vous n'êtes pas sur la liste des membres",
|
||||
"You_are_banned_from_this_room": "Vous avez été banni de ce salon",
|
||||
"Your_desired_nickname_": "Votre Surnom souhaité est déjà utilisé.Veuillez en choisir un autre",
|
||||
"The_maximum_number_": "Le nombre maximum d'utilisateur est atteint dans ce salon",
|
||||
"This_room_is_locked_": "Ce salon est vérouillé",
|
||||
"You_are_not_allowed_to_create_": "Vous n'êtes pas autorisé à créer un salon",
|
||||
"Carbon_copy": null,
|
||||
"Enable": null
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,265 @@
|
||||
{
|
||||
"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",
|
||||
"Join_chat": null,
|
||||
"Join": null,
|
||||
"Room": null,
|
||||
"Nickname": null,
|
||||
"left_the_building": null,
|
||||
"entered_the_room": null,
|
||||
"is_now_known_as": null,
|
||||
"This_room_is": null,
|
||||
"muc_hidden": {
|
||||
"keyword": null,
|
||||
"description": null
|
||||
},
|
||||
"muc_membersonly": {
|
||||
"keyword": null,
|
||||
"description": null
|
||||
},
|
||||
"muc_moderated": {
|
||||
"keyword": null,
|
||||
"description": null
|
||||
},
|
||||
"muc_nonanonymous": {
|
||||
"keyword": null,
|
||||
"description": null
|
||||
},
|
||||
"muc_open": {
|
||||
"keyword": null,
|
||||
"description": null
|
||||
},
|
||||
"muc_passwordprotected": {
|
||||
"keyword": null,
|
||||
"description": null
|
||||
},
|
||||
"muc_persistent": {
|
||||
"keyword": null,
|
||||
"description": null
|
||||
},
|
||||
"muc_public": {
|
||||
"keyword": null,
|
||||
"description": null
|
||||
},
|
||||
"muc_semianonymous": {
|
||||
"keyword": null,
|
||||
"description": null
|
||||
},
|
||||
"muc_temporary": {
|
||||
"keyword": null,
|
||||
"description": null
|
||||
},
|
||||
"muc_unmoderated": {
|
||||
"keyword": null,
|
||||
"description": null
|
||||
},
|
||||
"muc_unsecured": {
|
||||
"keyword": null,
|
||||
"description": null
|
||||
},
|
||||
"Continue": null,
|
||||
"Server": null,
|
||||
"Rooms_are_loaded": null,
|
||||
"Could_load_only": null,
|
||||
"muc_explanation": null,
|
||||
"You_already_joined_this_room": null,
|
||||
"This_room_will_be_closed": null,
|
||||
"Room_not_found_": null,
|
||||
"Loading_room_information": null,
|
||||
"Destroy": null,
|
||||
"Leave": null,
|
||||
"changed_subject_to": null,
|
||||
"muc_removed_kicked": null,
|
||||
"muc_removed_info_kicked": null,
|
||||
"muc_removed_banned": null,
|
||||
"muc_removed_info_banned": null,
|
||||
"muc_removed_affiliation": null,
|
||||
"muc_removed_info_affiliation": null,
|
||||
"muc_removed_membersonly": null,
|
||||
"muc_removed_info_membersonly": null,
|
||||
"muc_removed_shutdown": null,
|
||||
"Reason": null,
|
||||
"message_not_send": null,
|
||||
"message_not_send_item-not-found": null,
|
||||
"message_not_send_forbidden": null,
|
||||
"message_not_send_not-acceptable": null,
|
||||
"This_room_has_been_closed": null,
|
||||
"Room_logging_is_enabled": null,
|
||||
"A_password_is_required": null,
|
||||
"You_are_not_on_the_member_list": null,
|
||||
"You_are_banned_from_this_room": null,
|
||||
"Your_desired_nickname_": null,
|
||||
"The_maximum_number_": null,
|
||||
"This_room_is_locked_": null,
|
||||
"You_are_not_allowed_to_create_": null,
|
||||
"Carbon_copy": null,
|
||||
"Enable": null
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,265 @@
|
||||
{
|
||||
"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,
|
||||
"Join_chat": null,
|
||||
"Join": null,
|
||||
"Room": null,
|
||||
"Nickname": null,
|
||||
"left_the_building": null,
|
||||
"entered_the_room": null,
|
||||
"is_now_known_as": null,
|
||||
"This_room_is": null,
|
||||
"muc_hidden": {
|
||||
"keyword": null,
|
||||
"description": null
|
||||
},
|
||||
"muc_membersonly": {
|
||||
"keyword": null,
|
||||
"description": null
|
||||
},
|
||||
"muc_moderated": {
|
||||
"keyword": null,
|
||||
"description": null
|
||||
},
|
||||
"muc_nonanonymous": {
|
||||
"keyword": null,
|
||||
"description": null
|
||||
},
|
||||
"muc_open": {
|
||||
"keyword": null,
|
||||
"description": null
|
||||
},
|
||||
"muc_passwordprotected": {
|
||||
"keyword": null,
|
||||
"description": null
|
||||
},
|
||||
"muc_persistent": {
|
||||
"keyword": null,
|
||||
"description": null
|
||||
},
|
||||
"muc_public": {
|
||||
"keyword": null,
|
||||
"description": null
|
||||
},
|
||||
"muc_semianonymous": {
|
||||
"keyword": null,
|
||||
"description": null
|
||||
},
|
||||
"muc_temporary": {
|
||||
"keyword": null,
|
||||
"description": null
|
||||
},
|
||||
"muc_unmoderated": {
|
||||
"keyword": null,
|
||||
"description": null
|
||||
},
|
||||
"muc_unsecured": {
|
||||
"keyword": null,
|
||||
"description": null
|
||||
},
|
||||
"Continue": null,
|
||||
"Server": null,
|
||||
"Rooms_are_loaded": null,
|
||||
"Could_load_only": null,
|
||||
"muc_explanation": null,
|
||||
"You_already_joined_this_room": null,
|
||||
"This_room_will_be_closed": null,
|
||||
"Room_not_found_": null,
|
||||
"Loading_room_information": null,
|
||||
"Destroy": null,
|
||||
"Leave": null,
|
||||
"changed_subject_to": null,
|
||||
"muc_removed_kicked": null,
|
||||
"muc_removed_info_kicked": null,
|
||||
"muc_removed_banned": null,
|
||||
"muc_removed_info_banned": null,
|
||||
"muc_removed_affiliation": null,
|
||||
"muc_removed_info_affiliation": null,
|
||||
"muc_removed_membersonly": null,
|
||||
"muc_removed_info_membersonly": null,
|
||||
"muc_removed_shutdown": null,
|
||||
"Reason": null,
|
||||
"message_not_send": null,
|
||||
"message_not_send_item-not-found": null,
|
||||
"message_not_send_forbidden": null,
|
||||
"message_not_send_not-acceptable": null,
|
||||
"This_room_has_been_closed": null,
|
||||
"Room_logging_is_enabled": null,
|
||||
"A_password_is_required": null,
|
||||
"You_are_not_on_the_member_list": null,
|
||||
"You_are_banned_from_this_room": null,
|
||||
"Your_desired_nickname_": null,
|
||||
"The_maximum_number_": null,
|
||||
"This_room_is_locked_": null,
|
||||
"You_are_not_allowed_to_create_": null,
|
||||
"Carbon_copy": null,
|
||||
"Enable": null
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,265 @@
|
||||
{
|
||||
"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": "Otrzymano nieczytelną, zaszyfrowaną wiadomość.",
|
||||
"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": "Pełny adres",
|
||||
"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",
|
||||
"Join_chat": "Dołącz do czata",
|
||||
"Join": "Dołącz",
|
||||
"Room": "Pokój",
|
||||
"Nickname": "Nazwa użytkownika",
|
||||
"left_the_building": "__nickname__ wyszedł",
|
||||
"entered_the_room": "__nickname__ wszedł do pokoju",
|
||||
"is_now_known_as": "__oldNickname__ zmienił nazwę na __newNickname__",
|
||||
"This_room_is": "Ten pokój jest",
|
||||
"muc_hidden": {
|
||||
"keyword": "ukryty",
|
||||
"description": "nie można odnaleźć elementów wyszukiwania"
|
||||
},
|
||||
"muc_membersonly": {
|
||||
"keyword": "tylko zalogowani",
|
||||
"description": "musisz być członkiem listy"
|
||||
},
|
||||
"muc_moderated": {
|
||||
"keyword": "moderowano",
|
||||
"description": "tylko osoby z opcją \"głos\" mogą wysyłać wiadomość"
|
||||
},
|
||||
"muc_nonanonymous": {
|
||||
"keyword": "nie-anonimowy",
|
||||
"description": "Twój identyfikator jabber jest widoczny dla wszystkich innych osób"
|
||||
},
|
||||
"muc_open": {
|
||||
"keyword": "otwarty",
|
||||
"description": "wszyscy mają pozwolenie aby dołączyć"
|
||||
},
|
||||
"muc_passwordprotected": {
|
||||
"keyword": "ograniczone hasłem",
|
||||
"description": "musisz wpisać prawidłowe hasło"
|
||||
},
|
||||
"muc_persistent": {
|
||||
"keyword": "trwale",
|
||||
"description": "nie zostaną zniszczone, jeśli ostatnia osoba wyszła"
|
||||
},
|
||||
"muc_public": {
|
||||
"keyword": "publiczny",
|
||||
"description": "wyszukawno"
|
||||
},
|
||||
"muc_semianonymous": {
|
||||
"keyword": "pół-anonimowy",
|
||||
"description": "Twój identyfikator jabber jest widoczny w pokoju adminów"
|
||||
},
|
||||
"muc_temporary": {
|
||||
"keyword": "tymczasowy",
|
||||
"description": "zostanie usunięty jeżeli ostatnia osoba wyjdzie"
|
||||
},
|
||||
"muc_unmoderated": {
|
||||
"keyword": "niemoderowany",
|
||||
"description": "wszyscy są uprawnieni do pisania wiadomości"
|
||||
},
|
||||
"muc_unsecured": {
|
||||
"keyword": "niezabezpieczone",
|
||||
"description": "nie musisz wpisywać hasła"
|
||||
},
|
||||
"Continue": "Kontynuuj",
|
||||
"Server": "Serwer",
|
||||
"Rooms_are_loaded": "Pokoje zostały załadowane",
|
||||
"Could_load_only": "Nie załadowano __count__ pokoi",
|
||||
"muc_explanation": "Aby się zalogować, wpisz nazwę pokoju oraz opcjonalnie nazwę użytkownika i hasło",
|
||||
"You_already_joined_this_room": "Już dołączyłeś do tego pokoju",
|
||||
"This_room_will_be_closed": "Ten pokój będzie zamknięty",
|
||||
"Room_not_found_": "Nowy pokój będzie stworzony",
|
||||
"Loading_room_information": "Ładowani informacji o pokoju",
|
||||
"Destroy": "Zniszczony",
|
||||
"Leave": "Opuść",
|
||||
"changed_subject_to": "__nickname__ zmienił temat pokoju na \"__subject__\"",
|
||||
"muc_removed_kicked": "Zostałeś wyrzucony z pokoju",
|
||||
"muc_removed_info_kicked": "__nickname__ został wyrzucony z pokoju",
|
||||
"muc_removed_banned": "Zostałeś zbanowany",
|
||||
"muc_removed_info_banned": "__nickname__ został zbanowany",
|
||||
"muc_removed_affiliation": "Zostałeś usunięty z pokoju ze względu na zmianę przynależnosci",
|
||||
"muc_removed_info_affiliation": "__nickname__ został usunięty z pokoju ze względu na zmianę przynależnosci",
|
||||
"muc_removed_membersonly": "Zostałeś usunięty z pokoju ze względu na zmianę pokoju tylko dla członków, a Ty nie jesteś członkiem...",
|
||||
"muc_removed_info_membersonly": "__nickname__ został usunięty z pokoju ze względu na zmianę pokoju na tylko dla członków",
|
||||
"muc_removed_shutdown": "Zostałeś usunięty z pokoju ze względu na zamknięcie usługi",
|
||||
"Reason": "Powód",
|
||||
"message_not_send": "Wystąpił błąd i twoja wiadomość nie została wysłana.",
|
||||
"message_not_send_item-not-found": "Twoja wiadomość nie została wysłana ponieważ ten pokój nie istnieje",
|
||||
"message_not_send_forbidden": "Twoja wiadomość nie została wysłana ponieważ nie masz głosu w tym pokoju",
|
||||
"message_not_send_not-acceptable": "Twoja wiadomość nie została wysłana ponieważ nie jesteś właścicielem tego pokoju",
|
||||
"This_room_has_been_closed": "Ten pokój został zamknięty",
|
||||
"Room_logging_is_enabled": "Logowanie do pokoju jest włączone",
|
||||
"A_password_is_required": "Hasło jest wymagane",
|
||||
"You_are_not_on_the_member_list": "Nie jesteś na liście członków",
|
||||
"You_are_banned_from_this_room": "Zostałeś zbanowany w tym pokoju",
|
||||
"Your_desired_nickname_": "Twoja nazwa użytkownika jest już użyta. Spróbuj wybrać inną",
|
||||
"The_maximum_number_": "Została osiągnięta maksymalna liczba użytkowników w tym pokoju",
|
||||
"This_room_is_locked_": "Ten pokój jest zablokowany",
|
||||
"You_are_not_allowed_to_create_": "Nie masz uprawnień do tworzenia pokoju",
|
||||
"Carbon_copy": "Do wiadomości",
|
||||
"Enable": null
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,265 @@
|
||||
{
|
||||
"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",
|
||||
"Join_chat": null,
|
||||
"Join": null,
|
||||
"Room": null,
|
||||
"Nickname": null,
|
||||
"left_the_building": null,
|
||||
"entered_the_room": null,
|
||||
"is_now_known_as": null,
|
||||
"This_room_is": null,
|
||||
"muc_hidden": {
|
||||
"keyword": null,
|
||||
"description": null
|
||||
},
|
||||
"muc_membersonly": {
|
||||
"keyword": null,
|
||||
"description": null
|
||||
},
|
||||
"muc_moderated": {
|
||||
"keyword": null,
|
||||
"description": null
|
||||
},
|
||||
"muc_nonanonymous": {
|
||||
"keyword": null,
|
||||
"description": null
|
||||
},
|
||||
"muc_open": {
|
||||
"keyword": null,
|
||||
"description": null
|
||||
},
|
||||
"muc_passwordprotected": {
|
||||
"keyword": null,
|
||||
"description": null
|
||||
},
|
||||
"muc_persistent": {
|
||||
"keyword": null,
|
||||
"description": null
|
||||
},
|
||||
"muc_public": {
|
||||
"keyword": null,
|
||||
"description": null
|
||||
},
|
||||
"muc_semianonymous": {
|
||||
"keyword": null,
|
||||
"description": null
|
||||
},
|
||||
"muc_temporary": {
|
||||
"keyword": null,
|
||||
"description": null
|
||||
},
|
||||
"muc_unmoderated": {
|
||||
"keyword": null,
|
||||
"description": null
|
||||
},
|
||||
"muc_unsecured": {
|
||||
"keyword": null,
|
||||
"description": null
|
||||
},
|
||||
"Continue": null,
|
||||
"Server": null,
|
||||
"Rooms_are_loaded": null,
|
||||
"Could_load_only": null,
|
||||
"muc_explanation": null,
|
||||
"You_already_joined_this_room": null,
|
||||
"This_room_will_be_closed": null,
|
||||
"Room_not_found_": null,
|
||||
"Loading_room_information": null,
|
||||
"Destroy": null,
|
||||
"Leave": null,
|
||||
"changed_subject_to": null,
|
||||
"muc_removed_kicked": null,
|
||||
"muc_removed_info_kicked": null,
|
||||
"muc_removed_banned": null,
|
||||
"muc_removed_info_banned": null,
|
||||
"muc_removed_affiliation": null,
|
||||
"muc_removed_info_affiliation": null,
|
||||
"muc_removed_membersonly": null,
|
||||
"muc_removed_info_membersonly": null,
|
||||
"muc_removed_shutdown": null,
|
||||
"Reason": null,
|
||||
"message_not_send": null,
|
||||
"message_not_send_item-not-found": null,
|
||||
"message_not_send_forbidden": null,
|
||||
"message_not_send_not-acceptable": null,
|
||||
"This_room_has_been_closed": null,
|
||||
"Room_logging_is_enabled": null,
|
||||
"A_password_is_required": null,
|
||||
"You_are_not_on_the_member_list": null,
|
||||
"You_are_banned_from_this_room": null,
|
||||
"Your_desired_nickname_": null,
|
||||
"The_maximum_number_": null,
|
||||
"This_room_is_locked_": null,
|
||||
"You_are_not_allowed_to_create_": null,
|
||||
"Carbon_copy": null,
|
||||
"Enable": null
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,265 @@
|
||||
{
|
||||
"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,
|
||||
"Join_chat": null,
|
||||
"Join": null,
|
||||
"Room": null,
|
||||
"Nickname": null,
|
||||
"left_the_building": null,
|
||||
"entered_the_room": null,
|
||||
"is_now_known_as": null,
|
||||
"This_room_is": null,
|
||||
"muc_hidden": {
|
||||
"keyword": null,
|
||||
"description": null
|
||||
},
|
||||
"muc_membersonly": {
|
||||
"keyword": null,
|
||||
"description": null
|
||||
},
|
||||
"muc_moderated": {
|
||||
"keyword": null,
|
||||
"description": null
|
||||
},
|
||||
"muc_nonanonymous": {
|
||||
"keyword": null,
|
||||
"description": null
|
||||
},
|
||||
"muc_open": {
|
||||
"keyword": null,
|
||||
"description": null
|
||||
},
|
||||
"muc_passwordprotected": {
|
||||
"keyword": null,
|
||||
"description": null
|
||||
},
|
||||
"muc_persistent": {
|
||||
"keyword": null,
|
||||
"description": null
|
||||
},
|
||||
"muc_public": {
|
||||
"keyword": null,
|
||||
"description": null
|
||||
},
|
||||
"muc_semianonymous": {
|
||||
"keyword": null,
|
||||
"description": null
|
||||
},
|
||||
"muc_temporary": {
|
||||
"keyword": null,
|
||||
"description": null
|
||||
},
|
||||
"muc_unmoderated": {
|
||||
"keyword": null,
|
||||
"description": null
|
||||
},
|
||||
"muc_unsecured": {
|
||||
"keyword": null,
|
||||
"description": null
|
||||
},
|
||||
"Continue": null,
|
||||
"Server": null,
|
||||
"Rooms_are_loaded": null,
|
||||
"Could_load_only": null,
|
||||
"muc_explanation": null,
|
||||
"You_already_joined_this_room": null,
|
||||
"This_room_will_be_closed": null,
|
||||
"Room_not_found_": null,
|
||||
"Loading_room_information": null,
|
||||
"Destroy": null,
|
||||
"Leave": null,
|
||||
"changed_subject_to": null,
|
||||
"muc_removed_kicked": null,
|
||||
"muc_removed_info_kicked": null,
|
||||
"muc_removed_banned": null,
|
||||
"muc_removed_info_banned": null,
|
||||
"muc_removed_affiliation": null,
|
||||
"muc_removed_info_affiliation": null,
|
||||
"muc_removed_membersonly": null,
|
||||
"muc_removed_info_membersonly": null,
|
||||
"muc_removed_shutdown": null,
|
||||
"Reason": null,
|
||||
"message_not_send": null,
|
||||
"message_not_send_item-not-found": null,
|
||||
"message_not_send_forbidden": null,
|
||||
"message_not_send_not-acceptable": null,
|
||||
"This_room_has_been_closed": null,
|
||||
"Room_logging_is_enabled": null,
|
||||
"A_password_is_required": null,
|
||||
"You_are_not_on_the_member_list": null,
|
||||
"You_are_banned_from_this_room": null,
|
||||
"Your_desired_nickname_": null,
|
||||
"The_maximum_number_": null,
|
||||
"This_room_is_locked_": null,
|
||||
"You_are_not_allowed_to_create_": null,
|
||||
"Carbon_copy": null,
|
||||
"Enable": null
|
||||
}
|
||||
}
|
||||
+14
-5
@@ -1,27 +1,36 @@
|
||||
{
|
||||
"name": "jsxc",
|
||||
"version": "1.0.0-beta2",
|
||||
"version": "2.0.1",
|
||||
"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,742 @@
|
||||
.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_libraries {
|
||||
max-width: 300px;
|
||||
}
|
||||
}
|
||||
.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%);
|
||||
}
|
||||
.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%);
|
||||
}
|
||||
}
|
||||
.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;
|
||||
}
|
||||
|
||||
.jsxc_alert {
|
||||
padding: 15px;
|
||||
margin-bottom: 20px;
|
||||
border: 1px solid transparent;
|
||||
border-radius: 4px;
|
||||
&.jsxc_alert-warning {
|
||||
color: #8a6d3b;
|
||||
background-color: #fcf8e3;
|
||||
border-color: #faebcc;
|
||||
}
|
||||
}
|
||||
|
||||
.jsxc_btn {
|
||||
width: auto;
|
||||
min-width: 25px;
|
||||
padding: 5px;
|
||||
background-color: rgba(240,240,240,.9);
|
||||
font-weight: bold;
|
||||
color: #555;
|
||||
border: 1px solid rgba(190,190,190,.9);
|
||||
cursor: pointer;
|
||||
&.jsxc_btn-primary {
|
||||
color: #fff;
|
||||
background-color: #337ab7;
|
||||
border-color: #2e6da4;
|
||||
}
|
||||
&[disabled], &[disabled]:hover {
|
||||
opacity: 0.65;
|
||||
cursor: not-allowed;
|
||||
color: #fff;
|
||||
background-color: #337ab7;
|
||||
border-color: #2e6da4;
|
||||
}
|
||||
}
|
||||
@@ -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,110 @@
|
||||
%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;
|
||||
padding: 0px;
|
||||
&>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;
|
||||
}
|
||||
|
||||
Alguns arquivos não foram exibidos porque demasiados arquivos foram alterados neste diff Mostrar Mais
Referência em uma Nova Issue
Bloquear um usuário