Comparar commits

...

29 Commits

Autor SHA1 Mensagem Data
sualko 515bde12be build v3.0.0 2016-03-11 17:42:14 +01:00
sualko c2295e6b02 merge jsxc.webrtc.css into jsxc.css 2016-03-11 17:28:03 +01:00
sualko 06e1968140 fix file abort button 2016-03-11 17:22:26 +01:00
sualko a7f5c90d76 fix debug information 2016-03-11 14:20:22 +01:00
sualko d556d74011 fix blank video (fix #281) 2016-03-11 14:00:54 +01:00
sualko 91f8c5a2f1 fix muc message without id (fix #282) 2016-03-10 13:26:03 +01:00
sualko 53067ae9b6 fix type error in jingle error (#287) 2016-03-10 12:08:28 +01:00
sualko 0a75b8e121 Merge branch 'master' of github.com:jsxc/jsxc 2016-03-10 10:47:24 +01:00
Klaus c3a84c88e0 Merge pull request #283 from Perlence/stop-localstream
Stop each MediaStreamTrack individually
2016-03-10 10:44:25 +01:00
Sviatoslav Abakumov ec5b9a80f2 Stop each MediaStreamTrack individually
Method MediaStream.stop has been deprecated since Google Chrome 45 in
favor of stopping each track.
2016-03-09 15:07:48 +03:00
Klaus ca18690728 build v3.0.0-beta2 2016-02-11 23:19:34 +01:00
Klaus be4677b784 update locales 2016-02-11 23:17:36 +01:00
sualko 629395fb1b use cb for saveSettingsPermanent 2016-02-10 12:20:13 +01:00
sualko 60b3318a72 display line breaks in chat messages (#278) 2016-02-10 11:00:29 +01:00
sualko 563c8be51d add disabled otr icon 2016-02-10 10:45:19 +01:00
sualko cb5f4e2503 add close button to window overlay (fix #277) 2016-02-10 10:26:26 +01:00
sualko 5fca7c4240 add padlock icon to message 2016-02-04 15:07:55 +01:00
sualko bd038b4915 add new option loginForm.ifFound
- deprecates loginForm.attachIfFound
- fix #276
2016-02-04 14:38:52 +01:00
sualko 2e80a31416 clean up webrtc
- remove outdated code
- fix close (fix #273)
2016-02-04 13:55:45 +01:00
sualko 5e4645cb75 remove unread counter on logout 2016-02-04 13:28:36 +01:00
sualko 99069b58d5 fix last message in roster 2016-02-04 13:16:54 +01:00
sualko d7479c703b add max-width to credits 2016-02-04 13:09:17 +01:00
sualko adb96cd0f0 fix initial storage of member list 2016-02-04 13:07:33 +01:00
sualko 1e22b95407 hide avatar for connected messages 2016-02-04 12:01:53 +01:00
sualko b0a3768425 multiple muc fixes
- disable file transfer
- fix window menu
- fix roster menu
- fix member list
2016-02-03 17:27:01 +01:00
sualko 519387cd41 fix minified muc window 2016-02-03 16:38:39 +01:00
sualko 49a50de3ca adapt muc to new message api 2016-02-03 16:35:43 +01:00
sualko efbd0016d6 fix muc message reception (fix #271) 2016-02-03 16:35:01 +01:00
Klaus 9ab2ffa261 remove outdated styles 2016-01-29 11:48:48 +01:00
74 arquivos alterados com 8548 adições e 3067 exclusões
+46
Ver Arquivo
@@ -1,3 +1,49 @@
v3.0.0 / 2016-03-11
===
### New features
- responsive material-like design
- refactoring settings dialog
- over 1600 emoticons from emojione
- support mobile devices
- new video call interface
- status usable for daltonian
- use css for animations
- file transfer via webrtc
- previews
- show progress
- use local date and time format
- add no-video-call-possible icon
- add disabled otr icon
- add padlock icon to message
- display line breaks in chat messages
- hide avatar for connected messages (muc)
- auto approve incoming contact request (if contact is already in our roster)
### Bug fixes
- use crendential when performing turn credential ajax crossdomain call
- update favico.js
- update strophe.js
- update strophe.jinglejs
- improve otr verification
- update locales
- reset unread counter on logout
- fix blank video
- fix hang up video call
- fix debug information
- fix muc message without id
- fix type error in jingle error
### Developer changes
- remove "develop" branch and use instead "master" branch
- Makefile for setup developer environment
- remove loginTimeout option
- add new jsxc.start function to start chat with password or sid/rid
- add new option loginForm.ifFound (deprecates loginForm.attachIfFound)
- add named dialogs
- new message object
- remove outdated stuff
- merge jsxc.webrtc.css into jsxc.css
v2.1.5 / 2015-11-17
===
- Reset TURN credentials on login
+1 -1
Ver Arquivo
@@ -372,7 +372,7 @@ module.exports = function(grunt) {
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', 'replace:todo', 'uglify', 'compress']);
grunt.task.run(['search:console', 'build', 'usebanner', 'replace:version', 'replace:libraries', 'replace:todo', 'uglify', 'compress']);
});
grunt.registerTask('build:release', 'Build a new release', function() {
-189
Ver Arquivo
@@ -1,189 +0,0 @@
/* Remove close button from firstrunwizard */
#closeWizard {
display: none !important;
}
/*
Colorbox Core Style:
The following CSS is consistent between example themes and should not be altered.
*/
#colorbox,#cboxOverlay,#cboxWrapper {
position: absolute;
top: 0;
left: 0;
z-index: 9999;
overflow: hidden;
}
#cboxWrapper {
max-width: none;
}
#cboxOverlay {
position: fixed;
width: 100%;
height: 100%;
}
#cboxMiddleLeft,#cboxBottomLeft {
clear: left;
}
#cboxContent {
position: relative;
}
#cboxLoadedContent {
overflow: auto;
-webkit-overflow-scrolling: touch;
}
#cboxTitle {
margin: 0;
}
#cboxLoadingOverlay,#cboxLoadingGraphic {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
#cboxPrevious,#cboxNext,#cboxClose,#cboxSlideshow {
cursor: pointer;
}
.cboxPhoto {
float: left;
margin: auto;
border: 0;
display: block;
max-width: none;
-ms-interpolation-mode: bicubic;
}
.cboxIframe {
width: 100%;
height: 100%;
display: block;
border: 0;
}
#colorbox,#cboxContent,#cboxLoadedContent {
box-sizing: content-box;
-moz-box-sizing: content-box;
-webkit-box-sizing: content-box;
}
/*
User Style:
Change the following styles to modify the appearance of Colorbox. They are
ordered & tabbed in a way that represents the nesting of the generated HTML.
*/
#cboxOverlay {
background: #000;
}
#colorbox {
}
#cboxContent {
margin-top: 20px;
}
.cboxIframe {
background: #fff;
}
#cboxError {
padding: 50px;
border: 0px solid #ccc;
}
#cboxLoadedContent {
border: 0px solid #555;
background: #fff;
border-radius: 5px;
}
#cboxTitle {
position: absolute;
top: -20px;
left: 0;
color: #ccc;
}
#cboxCurrent {
position: absolute;
top: -20px;
right: 0px;
color: #ccc;
}
#cboxSlideshow {
position: absolute;
top: -20px;
right: 90px;
color: #fff;
}
#cboxPrevious:hover {
background-position: bottom left;
}
#cboxNext:hover {
background-position: bottom right;
}
#cboxLoadingOverlay {
background: #fff;
}
#cboxClose {
position: absolute;
top: 5px;
right: 5px;
display: block;
opacity: 0.5;
width: 19px !important;
height: 19px;
border: 0px;
text-indent: -9999px;
background-color: #fff;
}
#cboxClose:before {
content: '×';
position: absolute;
top: 0px;
left: 0px;
display: block;
width: 19px;
height: 19px;
opacity: 0.5;
text-indent: 0;
text-align: center;
line-height: 19px;
font-size: 19px;
}
#cboxClose:before:hover {
opacity: 1;
}
#cboxClose:hover {
background-position: right center !important;
opacity: 1.0;
}
/*
The following fixes a problem where IE7 and IE8 replace a PNG's alpha transparency with a black fill
when an alpha filter (opacity change) is set on the element or ancestor element. This style is not applied to or needed in IE9.
See: http://jacklmoore.com/notes/ie-transparency-problems/
*/
.cboxIE #cboxTopLeft,.cboxIE #cboxTopCenter,.cboxIE #cboxTopRight,.cboxIE #cboxBottomLeft,.cboxIE #cboxBottomCenter,.cboxIE #cboxBottomRight,.cboxIE #cboxMiddleLeft,.cboxIE #cboxMiddleRight
{
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#00FFFFFF,
endColorstr=#00FFFFFF);
}
+396 -48
Ver Arquivo
@@ -2785,7 +2785,7 @@ fieldset[disabled] #jsxc_webrtc .checkbox label {
background-color: green; }
.jsxc_away:before {
background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgaWQ9InN2ZzgiCiAgIHZlcnNpb249IjEuMSIKICAgdmlld0JveD0iMCAwIDMuMTc0OTk5OSAzLjE3NTAwMDEiCiAgIGhlaWdodD0iMTIiCiAgIHdpZHRoPSIxMiIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC45MStkZXZlbCByIgogICBzb2RpcG9kaTpkb2NuYW1lPSJwcmVzZW5jZV9hd2F5LnN2ZyI+CiAgPHNvZGlwb2RpOm5hbWVkdmlldwogICAgIHBhZ2Vjb2xvcj0iI2ZmZmZmZiIKICAgICBib3JkZXJjb2xvcj0iIzY2NjY2NiIKICAgICBib3JkZXJvcGFjaXR5PSIxIgogICAgIG9iamVjdHRvbGVyYW5jZT0iMTAiCiAgICAgZ3JpZHRvbGVyYW5jZT0iMTAiCiAgICAgZ3VpZGV0b2xlcmFuY2U9IjEwIgogICAgIGlua3NjYXBlOnBhZ2VvcGFjaXR5PSIwIgogICAgIGlua3NjYXBlOnBhZ2VzaGFkb3c9IjIiCiAgICAgaW5rc2NhcGU6d2luZG93LXdpZHRoPSIxODY5IgogICAgIGlua3NjYXBlOndpbmRvdy1oZWlnaHQ9IjEwNTYiCiAgICAgaWQ9Im5hbWVkdmlldzQ3NTQiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209Ijc4LjY2NjY2NyIKICAgICBpbmtzY2FwZTpjeD0iNS45MTI0Mjc1IgogICAgIGlua3NjYXBlOmN5PSI1LjY3NTQ4MzMiCiAgICAgaW5rc2NhcGU6d2luZG93LXg9IjUxIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNCIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIxIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzgiIC8+CiAgPGRlZnMKICAgICBpZD0iZGVmczIiIC8+CiAgPG1ldGFkYXRhCiAgICAgaWQ9Im1ldGFkYXRhNSI+CiAgICA8cmRmOlJERj4KICAgICAgPGNjOldvcmsKICAgICAgICAgcmRmOmFib3V0PSIiPgogICAgICAgIDxkYzpmb3JtYXQ+aW1hZ2Uvc3ZnK3htbDwvZGM6Zm9ybWF0PgogICAgICAgIDxkYzp0eXBlCiAgICAgICAgICAgcmRmOnJlc291cmNlPSJodHRwOi8vcHVybC5vcmcvZGMvZGNtaXR5cGUvU3RpbGxJbWFnZSIgLz4KICAgICAgICA8ZGM6dGl0bGUgLz4KICAgICAgPC9jYzpXb3JrPgogICAgPC9yZGY6UkRGPgogIDwvbWV0YWRhdGE+CiAgPGNpcmNsZQogICAgIHN0eWxlPSJmaWxsOiNmZmZmZmY7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOm5vbmU7c3Ryb2tlLXdpZHRoOjAuNDI5NDY4NTc7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MSIKICAgICBpZD0icGF0aDUyOTkiCiAgICAgY3g9IjEuNTg3NSIKICAgICBjeT0iMS41ODc1IgogICAgIHI9IjAuNjU5MjE2MTEiIC8+Cjwvc3ZnPgo=');
background-image: url('../img/presence_away.svg');
background-color: #ffa500; }
.jsxc_xa:before {
@@ -2793,7 +2793,7 @@ fieldset[disabled] #jsxc_webrtc .checkbox label {
background-color: #ffa500; }
.jsxc_dnd:before {
background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgaWQ9InN2ZzgiCiAgIHZlcnNpb249IjEuMSIKICAgdmlld0JveD0iMCAwIDMuMTc0OTk5OSAzLjE3NTAwMDEiCiAgIGhlaWdodD0iMTIiCiAgIHdpZHRoPSIxMiIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC45MStkZXZlbCByIgogICBzb2RpcG9kaTpkb2NuYW1lPSJwcmVzZW5jZV9kbmQuc3ZnIj4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjE4NjkiCiAgICAgaW5rc2NhcGU6d2luZG93LWhlaWdodD0iMTA1NiIKICAgICBpZD0ibmFtZWR2aWV3NDE2OSIKICAgICBzaG93Z3JpZD0iZmFsc2UiCiAgICAgaW5rc2NhcGU6em9vbT0iNzYuNTgzMzMzIgogICAgIGlua3NjYXBlOmN4PSI2IgogICAgIGlua3NjYXBlOmN5PSI2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSI1MSIKICAgICBpbmtzY2FwZTp3aW5kb3cteT0iMjQiCiAgICAgaW5rc2NhcGU6d2luZG93LW1heGltaXplZD0iMSIKICAgICBpbmtzY2FwZTpjdXJyZW50LWxheWVyPSJzdmc4IiAvPgogIDxkZWZzCiAgICAgaWQ9ImRlZnMyIiAvPgogIDxtZXRhZGF0YQogICAgIGlkPSJtZXRhZGF0YTUiPgogICAgPHJkZjpSREY+CiAgICAgIDxjYzpXb3JrCiAgICAgICAgIHJkZjphYm91dD0iIj4KICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3N2Zyt4bWw8L2RjOmZvcm1hdD4KICAgICAgICA8ZGM6dHlwZQogICAgICAgICAgIHJkZjpyZXNvdXJjZT0iaHR0cDovL3B1cmwub3JnL2RjL2RjbWl0eXBlL1N0aWxsSW1hZ2UiIC8+CiAgICAgICAgPGRjOnRpdGxlIC8+CiAgICAgIDwvY2M6V29yaz4KICAgIDwvcmRmOlJERj4KICA8L21ldGFkYXRhPgogIDxwYXRoCiAgICAgc3R5bGU9ImZpbGw6I2ZmZmZmZjtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6I2ZmZmZmZjtzdHJva2Utd2lkdGg6MC40NTI3MDIwODtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxIgogICAgIGQ9Ik0gMC44NDk4OTExOCwxLjU4NzUgSCAyLjMyNTEwODgiCiAgICAgaWQ9InBhdGg0MTcxIgogICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiIC8+Cjwvc3ZnPgo=');
background-image: url('../img/presence_dnd.svg');
background-color: #f00; }
.jsxc_hidden {
@@ -3011,10 +3011,6 @@ fieldset[disabled] #jsxc_webrtc .checkbox label {
background-size: contain;
background-repeat: no-repeat;
background-image: url('../img/bookmark_red.svg'); }
.jsxc_rosteritem.jsxc_bookmarked .jsxc_bookmarkOptions {
text-indent: 9999px;
background-image: url('../img/gear_white.svg');
background-size: 15px 15px; }
.jsxc_caption {
padding-right: 30px;
@@ -3026,13 +3022,13 @@ fieldset[disabled] #jsxc_webrtc .checkbox label {
cursor: pointer; }
.jsxc_caption .jsxc_name {
height: 100%;
line-height: 35px; }
line-height: 40px; }
.jsxc_min .jsxc_caption .jsxc_name {
height: 50%;
line-height: 17.5px; }
line-height: 20px; }
.jsxc_rosteritem .jsxc_caption .jsxc_name {
height: 50%;
line-height: 17.5px; }
line-height: 20px; }
.jsxc_caption .jsxc_lastmsg {
font-size: 12px;
display: none;
@@ -3150,7 +3146,7 @@ fieldset[disabled] #jsxc_webrtc .checkbox label {
display: block;
width: 100%;
height: 100%;
background-image: url('data:image/svg+xml;base64,PHN2ZyB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaGVpZ2h0PSIxNiIgd2lkdGg9IjE2IiB2ZXJzaW9uPSIxLjEiIHhtbG5zOmNjPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9ucyMiIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyI+CiA8bWV0YWRhdGE+CiAgPHJkZjpSREY+CiAgIDxjYzpXb3JrIHJkZjphYm91dD0iIj4KICAgIDxkYzpmb3JtYXQ+aW1hZ2Uvc3ZnK3htbDwvZGM6Zm9ybWF0PgogICAgPGRjOnR5cGUgcmRmOnJlc291cmNlPSJodHRwOi8vcHVybC5vcmcvZGMvZGNtaXR5cGUvU3RpbGxJbWFnZSIvPgogICAgPGRjOnRpdGxlLz4KICAgPC9jYzpXb3JrPgogIDwvcmRmOlJERj4KIDwvbWV0YWRhdGE+CiA8cGF0aCBkPSJtMiwyLDAsMiwxMiwwLDAtMnptMCw1LDAsMiwxMiwwLDAtMnptMCw1LDAsMiwxMiwwLDAtMnoiLz4KPC9zdmc+Cg==');
background-image: url('../img/menu_black.svg');
background-repeat: no-repeat;
background-position: center 10px;
background-size: 17px; }
@@ -3368,7 +3364,32 @@ fieldset[disabled] #jsxc_webrtc .checkbox label {
margin: 30px 10px;
padding: 5px;
border-radius: 3px;
text-align: center; }
text-align: center;
position: relative; }
.jsxc_window .jsxc_fade .jsxc_overlay > div .jsxc_close {
position: absolute;
top: 0;
right: 0;
height: 44px;
width: 44px; }
.jsxc_window .jsxc_fade .jsxc_overlay > div .jsxc_close:after {
content: '×';
position: absolute;
top: 4px;
right: 4px;
font-size: 20px;
font-family: Arial, sans-serif;
cursor: pointer;
color: #000;
opacity: 0.4; }
.jsxc_window .jsxc_fade .jsxc_overlay > div .jsxc_close:hover:after {
opacity: 1; }
@media (min-width: 768px) {
.jsxc_window .jsxc_fade .jsxc_overlay > div .jsxc_close {
width: 30px;
height: 30px; } }
.jsxc_window .jsxc_fade .jsxc_overlay > div .jsxc_body {
margin-top: 20px; }
.jsxc_window .jsxc_fade .jsxc_overlay > div p {
margin-bottom: 10px; }
.jsxc_window .jsxc_fade .jsxc_overlay > div li {
@@ -3456,7 +3477,6 @@ fieldset[disabled] #jsxc_webrtc .checkbox label {
.jsxc_chatmessage {
margin: 3px;
padding: 4px;
padding-right: 10px;
word-wrap: break-word;
background-color: #fff;
position: relative;
@@ -3480,7 +3500,7 @@ fieldset[disabled] #jsxc_webrtc .checkbox label {
background-position: 3px center;
background-size: 25px 25px;
background-repeat: no-repeat;
background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMTYiIHdpZHRoPSIxNiIgdmVyc2lvbj0iMS4wIiB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iPgogPHBhdGggc3R5bGU9ImNvbG9yOiMwMDAwMDA7YmxvY2stcHJvZ3Jlc3Npb246dGI7dGV4dC10cmFuc2Zvcm06bm9uZTt0ZXh0LWluZGVudDowIiBkPSJtMi4zNTAxIDEuMDAxNGMtMC4xOTc1MSAwLjAzODItMC4zNTM1MSAwLjIzMzMxLTAuMzUwMDEgMC40Mzc0MnYxMy4xMjNjMC4wMDAwMDUgMC4yMjkwNSAwLjIwNTIzIDAuNDM3NDUgMC40MzA3OSAwLjQzNzQ2bDExLjEzOSAwLjAwMWMwLjIyNTU2LTAuMDAwMDA2IDAuNDMwNzgtMC4yMDg0MSAwLjQzMDc5LTAuNDM3NDZ2LTEwLjE0M2MtMC4wMDQtMC4wNjY4NC0wLjAyMi0wLjEzMjg0LTAuMDU0LTAuMTkxMzVsLTMuMzEyMS0zLjE5ODljLTAuMDQzLTAuMDE2NC0wLjA4OC0wLjAyNTYtMC4xMzQtMC4wMjc0bC04LjA2OTktMC4wMDFjLTAuMDI2ODQtMC4wMDI2LTAuMDUzOTMtMC4wMDI2LTAuMDgwNzcgMHoiIGZpbGw9IiM5Njk2OTYiLz4KPC9zdmc+Cg=='); }
background-image: url('../img/filetypes/file.svg'); }
.jsxc_chatmessage .jsxc_attachment img {
border-radius: 3px; }
.jsxc_chatmessage .jsxc_attachment.jsxc_image {
@@ -3488,15 +3508,15 @@ fieldset[disabled] #jsxc_webrtc .checkbox label {
padding: 0;
background-image: url(); }
.jsxc_chatmessage .jsxc_attachment.jsxc_application {
background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMTYiIHdpZHRoPSIxNiIgdmVyc2lvbj0iMS4wIiB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iPgogPGcgdHJhbnNmb3JtPSJtYXRyaXgoLjc5OTk4IDAgMCAuOCAxLjYgMS45NTU0KSIgZmlsbD0iIzk2OTY5NiI+CiAgPHBhdGggZD0ibTYuOTM3NSAwLjA1NmMtMC4yNDg0IDAtMC40Mzc1IDAuMTg5MDgtMC40Mzc1IDAuNDM3NXYxLjI1Yy0wLjU1MzkgMC4xNDIyLTEuMDUxMiAwLjM3MTktMS41MzEyIDAuNjU2M2wtMC45MDYzLTAuOTA2M2MtMC4xNzU2Ni0wLjE3NTY2LTAuNDQ5MzQtMC4xNzU2Ni0wLjYyNSAwbC0xLjUgMS41Yy0wLjE3NTY2IDAuMTc1NjYtMC4xNzU2NiAwLjQ0OTM0IDAgMC42MjVsMC45MDYzIDAuOTA2M2MtMC4yODQ0IDAuNDgtMC41MTQxIDAuOTc3My0wLjY1NjMgMS41MzEyaC0xLjI1Yy0wLjI0ODQyIDAtMC40Mzc1IDAuMTg5MS0wLjQzNzUgMC40Mzc1djIuMTI1YzFlLTggMC4yNDg0MiAwLjE4OTA4IDAuNDM3NSAwLjQzNzUgMC40Mzc1aDEuMjVjMC4xNDIyIDAuNTUzOSAwLjM3MTg4IDEuMDUxMiAwLjY1NjI1IDEuNTMxMmwtMC45MDYzIDAuOTA3Yy0wLjE3NTY2IDAuMTc1NjYtMC4xNzU2NiAwLjQ0OTM0IDAgMC42MjVsMS41IDEuNWMwLjE3NTY2IDAuMTc1NjYgMC40NDkzNCAwLjE3NTY2IDAuNjI1IDBsMC45MDYzLTAuOTA3YzAuNDggMC4yODUgMC45NzczIDAuNTE0IDEuNTMxMiAwLjY1NnYxLjI1YzFlLTcgMC4yNDg0MiAwLjE4OTA4IDAuNDM3NSAwLjQzNzUgMC40Mzc1aDIuMTI1YzAuMjQ4NCAwIDAuNDM3NS0wLjE4OSAwLjQzNzUtMC40Mzh2LTEuMjVjMC41NTM5LTAuMTQyMiAxLjA1MTItMC4zNzE4OCAxLjUzMTItMC42NTYyNWwwLjkwNjI1IDAuOTA2MjVjMC4xNzU2NiAwLjE3NTY2IDAuNDQ5MzQgMC4xNzU2NiAwLjYyNSAwbDEuNS0xLjVjMC4xNzU2Ni0wLjE3NTY2IDAuMTc1NjYtMC40NDkzNCAwLTAuNjI1bC0wLjkwNi0wLjkwNmMwLjI4NS0wLjQ4IDAuNTE0LTAuOTc3MSAwLjY1Ni0xLjUzMWgxLjI1YzAuMjQ5IDAgMC40MzgtMC4xODkxIDAuNDM4LTAuNDM3NXYtMi4xMjVjMC0wLjI0ODQtMC4xODktMC40Mzc1LTAuNDM4LTAuNDM3NWgtMS4yNWMtMC4xNDItMC41NTM5LTAuMzcxLTEuMDUxMi0wLjY1Ni0xLjUzMTJsMC45MDYtMC45MDYzYzAuMTc1NjYtMC4xNzU2NiAwLjE3NTY2LTAuNDQ5MzQgMC0wLjYyNWwtMS41LTEuNWMtMC4xNzU2Ni0wLjE3NTY2LTAuNDQ5MzQtMC4xNzU2Ni0wLjYyNSAwbC0wLjkwNiAwLjkwNjNjLTAuNDgtMC4yODQ0LTAuOTc3LTAuNTE0MS0xLjUzMS0wLjY1NjN2LTEuMjVjMC4wMDA0LTAuMjQ4NzItMC4xODg3LTAuNDM3OC0wLjQzNzEtMC40Mzc4em0xLjA2MjUgNC4xNTczYzEuODQ1MSAwIDMuMzQyNyAxLjQ5NzUgMy4zNDI3IDMuMzQyNyAwIDEuODQ1MS0xLjQ5NzUgMy4zNDI3LTMuMzQyNyAzLjM0MjctMS44NDUxIDAtMy4zNDI3LTEuNDk3OS0zLjM0MjctMy4zNDNzMS40OTc2LTMuMzQyNyAzLjM0MjctMy4zNDI3eiIgZGlzcGxheT0iYmxvY2siIGZpbGw9IiM5Njk2OTYiLz4KIDwvZz4KPC9zdmc+Cg=='); }
background-image: url('../img/filetypes/application.svg'); }
.jsxc_chatmessage .jsxc_attachment.jsxc_application-pdf {
background-image: url('../img/filetypes/application-pdf.svg'); }
.jsxc_chatmessage .jsxc_attachment.jsxc_audio {
background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMTYiIHdpZHRoPSIxNiIgdmVyc2lvbj0iMS4wIiB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iPgogPHBhdGggZD0ibTEyLjgwNSAxLjAwMTFjLTIuMiAwLjM1NDUtNS4xNDQ1IDAuNzE5NC03LjMzODMgMS4wOTM3LTAuNTgxIDAuMjgzNS0wLjQ1MDMgMS4wMTMzLTAuNDc2MSAxLjU0Mjl2Ny4wODk1Yy0xLjIyNDMtMC4yMzAxNy0yLjcxNzMgMC43ODE0Mi0yLjc4MiAyLjM4MzEtMC4xMDU3IDAuOTk3MjEgMC43Nzg1OSAxLjg2NTIgMS43NDAyIDEuODg4NSAxLjcyMTcgMC4wNDE3OSAyLjg5OTItMS4xMDA1IDIuOTE3OS0yLjU0NS0wLjAxODc2LTIuNDI2MSAwLjAwNTYtNC44NTMzIDAtNy4yNzk1IDAuMjY2NTQtMC4wMTk3NCA0LjMwMzYtMC43OTAwNiA0LjY2NjctMC44NDEzNHY1LjQ1MmMtMS4wNy0wLjI1NjEtMi40Mzc0IDAuNDQ3Mi0yLjc3NjYgMS44ODMyLTAuMTQzMTQgMC44MDQ4OSAwLjEyNzQgMS44MTUyIDAuOTQ0MTEgMi4xNTYgMS41OTQzIDAuNzMyNjEgMy43ODMtMC43NTEzNyAzLjY5NC0yLjQ5My0wLjAyNDczLTMuMjM1IDAuMDIwMjUtNi40NzE3IDAtOS43MDctMC4wNDItMC4zMDQyMi0wLjI0ODI3LTAuNjQ0NzQtMC41OTAzMy0wLjYyMjgxeiIgZmlsbD0iIzk2OTY5NiIvPgo8L3N2Zz4K'); }
background-image: url('../img/filetypes/audio.svg'); }
.jsxc_chatmessage .jsxc_attachment.jsxc_video {
background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMTYiIHdpZHRoPSIxNiIgdmVyc2lvbj0iMS4wIiB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iPgogPHBhdGggc3R5bGU9ImNvbG9yOiMwMDAwMDA7YmxvY2stcHJvZ3Jlc3Npb246dGI7dGV4dC10cmFuc2Zvcm06bm9uZTt0ZXh0LWluZGVudDowIiBkPSJtMS4zNDM4IDJjLTAuMTk3NSAwLjAzODItMC4zNDczNiAwLjIzMzQtMC4zNDM4IDAuNDM3NXYxMS4xMjVjMCAwLjIyOSAwLjIxMiAwLjQzOCAwLjQzNzUgMC40MzhoMTMuMTI1YzAuMjI1NTUtMC4wMDAwMDYgMC40Mzc1LTAuMjA4NDYgMC40Mzc1LTAuNDM3NXYtMTAuOTUzYzAtMC4zMzYyLTAuMjY1LTAuNjExLTAuNTE2LTAuNjA5em0wLjY1NjIgMWgxMnYxMGgtMTJ6bTMgMnY2bDYtM3oiIGZpbGw9IiM5Njk2OTYiLz4KPC9zdmc+Cg=='); }
background-image: url('../img/filetypes/video.svg'); }
.jsxc_chatmessage .jsxc_attachment.jsxc_text {
background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMTYiIHdpZHRoPSIxNiIgdmVyc2lvbj0iMS4wIiB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iPgogPHBhdGggc3R5bGU9ImNvbG9yOiMwMDAwMDA7YmxvY2stcHJvZ3Jlc3Npb246dGI7dGV4dC10cmFuc2Zvcm06bm9uZTt0ZXh0LWluZGVudDowIiBkPSJtMi4zNDk2IDEuMDAyYy0wLjE5NzUgMC4wMzgyLTAuMzUzMSAwLjIzMzMtMC4zNDk2IDAuNDM3NXYxMy4xMjJjMCAwLjIzIDAuMjA2MSAwLjQzOCAwLjQzMTYgMC40MzhoMTEuMTM4YzAuMjI2IDAgMC40MzItMC4yMDggMC40MzItMC40Mzh2LTEwLjE0MmMtMC4wMDQtMC4wNjY5LTAuMDIzLTAuMTMzLTAuMDU1LTAuMTkxNWwtMy4zMTItMy4xOTkyYy0wLjA0My0wLjAxNjQtMC4wODktMC4wMjU1LTAuMTM1LTAuMDI3M2gtOC4wNjg0Yy0wLjAyNjgtMC4wMDI2NS0wLjA1NTItMC4wMDI2NS0wLjA4MiAwem0xLjY1MDQgMS45OThoNnYxaC02di0xem0wIDNoNXYxaC01di0xem0wIDNoOHYxaC04di0xem0wIDNoNHYxaC00di0xeiIgZmlsbD0iIzk2OTY5NiIvPgo8L3N2Zz4K'); }
background-image: url('../img/filetypes/text.svg'); }
.jsxc_timestamp {
font-size: 8px;
@@ -3508,6 +3528,19 @@ fieldset[disabled] #jsxc_webrtc .checkbox label {
text-overflow: ellipsis;
clear: both; }
.jsxc_encrypted.jsxc_received.jsxc_out .jsxc_timestamp {
margin-right: 1px; }
.jsxc_encrypted .jsxc_timestamp:after {
content: " ";
display: inline-block;
width: 10px;
height: 8px;
margin-left: 2px;
background-image: url('../img/padlock_close_grey.svg');
background-size: contain;
background-repeat: no-repeat; }
.jsxc_in {
float: left;
position: relative;
@@ -3534,6 +3567,7 @@ fieldset[disabled] #jsxc_webrtc .checkbox label {
position: relative;
max-width: 76%;
margin-right: 10px;
padding-right: 10px;
border-radius: 3px;
background-color: #e6ffd1; }
.jsxc_out:after {
@@ -3576,7 +3610,7 @@ div.jsxc_settings {
right: -6px; }
div.jsxc_transfer {
background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgdmlld0JveD0iMCAwIDE1IDE1IgogICBpZD0ic3ZnMzA0MSIKICAgaGVpZ2h0PSIxNSIKICAgd2lkdGg9IjE1IgogICB2ZXJzaW9uPSIxLjEiPgogIDxtZXRhZGF0YQogICAgIGlkPSJtZXRhZGF0YTMwNDciPgogICAgPHJkZjpSREY+CiAgICAgIDxjYzpXb3JrCiAgICAgICAgIHJkZjphYm91dD0iIj4KICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3N2Zyt4bWw8L2RjOmZvcm1hdD4KICAgICAgICA8ZGM6dHlwZQogICAgICAgICAgIHJkZjpyZXNvdXJjZT0iaHR0cDovL3B1cmwub3JnL2RjL2RjbWl0eXBlL1N0aWxsSW1hZ2UiIC8+CiAgICAgICAgPGRjOnRpdGxlPjwvZGM6dGl0bGU+CiAgICAgIDwvY2M6V29yaz4KICAgIDwvcmRmOlJERj4KICA8L21ldGFkYXRhPgogIDxkZWZzCiAgICAgaWQ9ImRlZnMzMDQ1IiAvPgogIDxyZWN0CiAgICAgc3R5bGU9ImZpbGw6IzAwMDAwMDtzdHJva2U6bm9uZSIKICAgICBpZD0icmVjdDMwNTEiCiAgICAgeT0iOC4wMDg0NzQzIgogICAgIHg9IjIuMTYxMDE3MiIKICAgICBoZWlnaHQ9IjYuOTkxNTI1NyIKICAgICB3aWR0aD0iMTEuMDU5MzIyIiAvPgogIDxwYXRoCiAgICAgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MS44OTk5OTk5ODtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxIgogICAgIGlkPSJwYXRoMzg0OCIKICAgICBkPSJtIDMuMDgyNjI4LDUuMDIxMTg2NCBjIDAsMCAtMC4xMjcxMTksLTQuMDY3Nzk2NTIgNC40NDkxNTIsLTQuMDY3Nzk2NTIgNC41NzYyNjgsMCA0LjcwMzM4NiwzLjk0MDY3NzgyIDQuNzAzMzg2LDMuOTQwNjc3ODIgbCAwLjA2MzU2LDUuNTkzMjE5MyB2IDAiIC8+Cjwvc3ZnPgo=');
background-image: url('../img/padlock_open_black.svg');
background-repeat: no-repeat;
background-position: center center;
background-size: 14px 14px;
@@ -3589,6 +3623,11 @@ div.jsxc_transfer {
cursor: pointer; }
div.jsxc_transfer:hover {
opacity: 1.0; }
div.jsxc_transfer.jsxc_disabled {
background-image: url('../img/padlock_open_disabled_black.svg');
cursor: default; }
div.jsxc_transfer.jsxc_disabled:hover {
opacity: 0.3; }
div.jsxc_transfer.jsxc_fin {
opacity: 1.0;
background-image: url('../img/padlock_close_grey.svg'); }
@@ -3598,43 +3637,35 @@ div.jsxc_transfer {
div.jsxc_transfer.jsxc_enc.jsxc_trust {
background-image: url('../img/padlock_close_green.svg'); }
.jsxc_windowItem.jsxc_groupchat .jsxc_bar .jsxc_avatar, li[data-type="groupchat"] .jsxc_avatar {
.jsxc_windowItem.jsxc_groupchat.jsxc_normal .jsxc_bar .jsxc_avatar, li[data-type="groupchat"] .jsxc_avatar {
text-indent: 999px;
background-image: url('../img/group_white.svg');
background-size: 70% 70% !important;
background-repeat: no-repeat; }
.jsxc_windowItem.jsxc_groupchat .jsxc_fade {
.jsxc_windowItem.jsxc_groupchat.jsxc_normal .jsxc_fade {
padding-top: 44px; }
.jsxc_min .jsxc_windowItem.jsxc_groupchat .jsxc_fade {
padding-top: 0px; }
.jsxc_windowItem.jsxc_groupchat .jsxc_video {
.jsxc_windowItem.jsxc_groupchat.jsxc_normal .jsxc_fingerprints, .jsxc_windowItem.jsxc_groupchat.jsxc_normal .jsxc_verification, .jsxc_windowItem.jsxc_groupchat.jsxc_normal .jsxc_transfer, .jsxc_windowItem.jsxc_groupchat.jsxc_normal .jsxc_video, .jsxc_windowItem.jsxc_groupchat.jsxc_normal .jsxc_sendFile {
display: none; }
.jsxc_windowItem.jsxc_groupchat .jsxc_transfer {
display: none; }
.jsxc_windowItem.jsxc_groupchat .jsxc_fingerprints, .jsxc_windowItem.jsxc_groupchat .jsxc_verification, .jsxc_windowItem.jsxc_groupchat .jsxc_transfer {
display: none; }
.jsxc_windowItem.jsxc_groupchat .jsxc_members {
background-image: url('../img/group_grey.svg');
.jsxc_windowItem.jsxc_groupchat.jsxc_normal .jsxc_members {
background-image: url('../img/group_white.svg');
background-size: 15px 15px;
background-repeat: no-repeat;
background-position: center; }
.jsxc_windowItem.jsxc_groupchat .jsxc_members:hover {
background-image: url('../img/group_white.svg'); }
.jsxc_windowItem.jsxc_groupchat.jsxc_normal .jsxc_members:hover {
opacity: 1.0; }
.jsxc_windowItem.jsxc_groupchat .jsxc_chatmessage.jsxc_in {
.jsxc_windowItem.jsxc_groupchat.jsxc_normal .jsxc_chatmessage.jsxc_in {
margin-left: 50px; }
.jsxc_windowItem.jsxc_groupchat .jsxc_chatmessage.jsxc_in .jsxc_avatar {
.jsxc_windowItem.jsxc_groupchat.jsxc_normal .jsxc_chatmessage.jsxc_in .jsxc_avatar {
display: block;
position: absolute;
bottom: 0px;
left: -50px;
background-color: #777; }
.jsxc_windowItem.jsxc_groupchat .jsxc_chatmessage.jsxc_in .jsxc_avatar:before {
.jsxc_windowItem.jsxc_groupchat.jsxc_normal .jsxc_chatmessage.jsxc_in .jsxc_avatar:before {
display: none; }
.jsxc_windowItem .jsxc_memberlist {
@@ -3674,8 +3705,8 @@ div.jsxc_transfer {
.jsxc_windowItem .jsxc_memberlist.jsxc_expand ul > li {
display: block;
width: 100%;
height: 27px;
line-height: 27px; }
height: 40px;
line-height: 40px; }
.jsxc_windowItem .jsxc_memberlist.jsxc_expand ul > li .jsxc_name {
display: block;
cursor: default; }
@@ -3708,6 +3739,7 @@ li[data-type="groupchat"] .jsxc_video {
#jsxc_dialog {
padding: 20px;
min-width: 320px;
max-width: 100%;
display: inline-block;
text-align: left;
position: relative;
@@ -3780,7 +3812,7 @@ li[data-type="groupchat"] .jsxc_video {
background-size: 100%;
margin: 0 3px 0 0;
background-image: url('../img/loading.gif'); }
#jsxc_dialog .jsxc_libraries {
#jsxc_dialog .jsxc_libraries, #jsxc_dialog .jsxc_credits {
max-width: 300px; }
.jsxc_avatar {
@@ -3930,12 +3962,27 @@ img.jsxc_vCard {
.jsxc_btn {
width: auto;
min-width: 25px;
padding: 5px;
background-color: rgba(240, 240, 240, 0.9);
font-weight: bold;
color: #555;
border: 1px solid rgba(190, 190, 190, 0.9);
cursor: pointer; }
display: inline-block;
padding: 6px 12px;
margin: 0px 2px;
font-size: 14px;
font-weight: 400;
line-height: 1.42857143;
text-align: center;
white-space: nowrap;
vertical-align: middle;
cursor: pointer;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
background-image: none;
border: 1px solid transparent;
border-radius: 4px; }
.jsxc_btn.jsxc_btn-default {
border-color: #ccc;
color: #555;
background-color: rgba(240, 240, 240, 0.9); }
.jsxc_btn.jsxc_btn-primary {
color: #fff;
background-color: #337ab7;
@@ -4007,16 +4054,16 @@ img.jsxc_vCard {
vertical-align: sub; }
.jsxc_editicon {
background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMTYiIHdpZHRoPSIxNiIgdmVyc2lvbj0iMS4xIiB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iPgogPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCAtMTAzNi40KSI+CiAgPHBhdGggZD0ibTEyLjU5NCAxLjM0MzhjLTAuNTMyLTAuMDMxMy0xLjA5NCAwLjE1NjItMS41OTQgMC42NTYybDMgM2MxLjUtMS41IDAuMTg4LTMuNTYyNS0xLjQwNi0zLjY1NjJ6bS0yLjU5NCAxLjY1NjJsLTcgNy0yIDUgNS0yIDctNy0zLTN6bS02LjUgNy41bDIgMi0yLjUgMS41LTEtMSAxLjUtMi41eiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCAxMDM2LjQpIi8+CiA8L2c+Cjwvc3ZnPgo='); }
background-image: url('../img/edit_black.svg'); }
.jsxc_deleteicon {
background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMTYiIHdpZHRoPSIxNiIgdmVyc2lvbj0iMS4xIiB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iPgogPHBhdGggZD0ibTYuNSAxLTAuNSAxaC0zYy0wLjU1NCAwLTEgMC40NDYtMSAxdjFoMTJ2LTFjMC0wLjU1NC0wLjQ0Ni0xLTEtMWgtM2wtMC41LTF6bS0zLjUgNCAwLjg3NSA5YzAuMDYxIDAuNTQ5IDAuNTcyOSAxIDEuMTI1IDFoNmMwLjU1MjMyIDAgMS4wNjQtMC40NTEwMiAxLjEyNS0xbDAuODc1LTl6IiBmaWxsLXJ1bGU9ImV2ZW5vZGQiLz4KPC9zdmc+Cg=='); }
background-image: url('../img/delete_black.svg'); }
.jsxc_chaticon {
background-image: url('../img/speech_balloon_black.svg'); }
.jsxc_videoicon {
background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgdmlld0JveD0iMCAwIDIwIDIwIgogICBoZWlnaHQ9IjIwIgogICB3aWR0aD0iMjAiCiAgIGlkPSJzdmcyIgogICB2ZXJzaW9uPSIxLjEiPgogIDxtZXRhZGF0YQogICAgIGlkPSJtZXRhZGF0YTEwIj4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICAgIDxkYzp0aXRsZT48L2RjOnRpdGxlPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzOCIgLz4KICA8ZwogICAgIHN0eWxlPSJmaWxsOiMwMDAwMDAiCiAgICAgdHJhbnNmb3JtPSJtYXRyaXgoMC4wMzc4ODU5NCwwLDAsMC4wMzc4ODU5NCwtMC40MTM0MDc5MywtMi42MzEwNzE2KSIKICAgICBpZD0ibGF5ZXIxIj4KICAgIDxwYXRoCiAgICAgICBkPSJNIDM2MS42NTE0OCwzMTMuNTE3NjggNTM4LjgxMjIyLDE4MS43MzI1MiBWIDQ4My45NjI1MSBMIDM1OC45NzMzOCwzNTAuMTg1MTcgWiBNIDEwLjkxMTkyMiwxODIuNDA2MzQgSCAzODkuMjg0NiBWIDQ4NS4wNjIxNiBIIDEwLjkxMTkyMiBaIgogICAgICAgc3R5bGU9ImZpbGw6IzAwMDAwMDtzdHJva2U6bm9uZSIKICAgICAgIGlkPSJwYXRoMzkwNiIgLz4KICA8L2c+Cjwvc3ZnPgo='); }
background-image: url('../img/camera_icon_black.svg'); }
.jsxc_infoicon {
background-image: url('../img/info_black.svg'); }
@@ -4033,6 +4080,9 @@ img.jsxc_vCard {
.jsxc_groupcontacticon {
background-image: url('../img/groupcontact_black.svg'); }
.jsxc_bookmarkicon {
background-image: url('../img/bookmark_black.svg'); }
.jsxc_more {
float: right;
width: 44px;
@@ -4047,3 +4097,301 @@ img.jsxc_vCard {
@media (min-width: 768px) {
.jsxc_more {
width: 25px; } }
.jsxc_remotevideo, .jsxc_noRemoteVideo {
width: 100%;
height: 100%;
position: absolute;
top: 0;
left: 0;
z-index: 9000;
background-color: #999999; }
#jsxc_webrtc {
position: fixed;
top: 0;
bottom: 0;
right: 0;
left: 0;
z-index: 9999;
background-color: black; }
#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: #bbb; }
.jsxc_videoContainer {
position: absolute;
top: 0;
left: 0;
right: 0px;
bottom: 0px;
background-color: #999999; }
.jsxc_videoContainer video {
display: none; }
.jsxc_videoContainer .jsxc_noRemoteVideo {
display: none; }
@media (min-width: 768px) {
.jsxc_videoContainer {
right: 250px; }
.jsxc_videoContainer .jsxc_controlbar {
opacity: 0; }
.jsxc_videoContainer:hover .jsxc_controlbar {
opacity: 1.0; } }
.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('../img/camera_icon_white.svg');
background-repeat: no-repeat;
background-position: center center;
background-size: 15px 15px;
opacity: 0.4; }
div.jsxc_video.jsxc_disabled {
background-image: url('../img/camera_disabled_icon_white.svg'); }
div.jsxc_video:not(.jsxc_disabled):hover {
opacity: 1.0; }
.jsxc_controlbar {
position: absolute;
top: 50px;
left: 0;
right: 0px;
text-align: center;
z-index: 9090;
-webkit-transition: 1s opacity;
transition: 1s opacity;
opacity: 0; }
@media (min-width: 768px) {
.jsxc_controlbar {
bottom: 5%;
top: initial; } }
.jsxc_controlbar.jsxc_visible {
opacity: 1.0; }
.jsxc_controlbar > div {
background-color: rgba(0, 0, 0, 0.5);
height: 44px;
border-radius: 22px;
padding: 0px 5px;
display: inline-block; }
.jsxc_controlbar .jsxc_videoControl {
height: 44px;
width: 44px;
margin: 0 5px;
background-position: center;
background-repeat: no-repeat;
background-size: 90%;
cursor: pointer;
display: inline-block;
opacity: 0.8; }
.jsxc_controlbar .jsxc_videoControl:hover {
opacity: 1.0; }
.jsxc_controlbar .jsxc_hangUp {
background-image: url('../img/hang_up_red.svg'); }
.jsxc_controlbar .jsxc_fullscreen {
background-image: url('../img/fullscreen_white.svg'); }
.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: absolute;
top: 0;
right: 0;
bottom: 0;
width: 250px;
background-color: whitesmoke;
display: none; }
@media (min-width: 768px) {
.jsxc_chatarea {
display: block; } }
.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: 100%;
height: 100%;
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; }
-286
Ver Arquivo
@@ -1,286 +0,0 @@
.jsxc_remotevideo, .jsxc_noRemoteVideo {
width: 100%;
height: 100%;
position: absolute;
top: 0;
left: 0;
z-index: 9000;
background-color: #999999; }
#jsxc_webrtc {
position: fixed;
top: 0;
bottom: 0;
right: 0;
left: 0;
z-index: 9999;
background-color: black; }
#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: #bbb; }
.jsxc_videoContainer {
position: absolute;
top: 0;
left: 0;
right: 0px;
bottom: 0px;
background-color: #999999; }
.jsxc_videoContainer video {
display: none; }
.jsxc_videoContainer .jsxc_noRemoteVideo {
display: none; }
@media (min-width: 768px) {
.jsxc_videoContainer {
right: 250px; }
.jsxc_videoContainer .jsxc_controlbar {
opacity: 0;
-webkit-transition: 1s opacity;
transition: 1s opacity; }
.jsxc_videoContainer:hover .jsxc_controlbar {
opacity: 1.0; } }
.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('../img/camera_icon_white.svg');
background-repeat: no-repeat;
background-position: center center;
background-size: 15px 15px;
opacity: 0.4; }
div.jsxc_video.jsxc_disabled {
background-image: url('../img/camera_disabled_icon_white.svg'); }
div.jsxc_video:not(.jsxc_disabled):hover {
opacity: 1.0; }
.jsxc_controlbar {
position: absolute;
top: 50px;
left: 0;
right: 0px;
text-align: center;
z-index: 9090; }
.jsxc_controlbar > div {
background-color: rgba(0, 0, 0, 0.5);
height: 44px;
border-radius: 22px;
padding: 5px;
display: inline-block; }
.jsxc_controlbar .jsxc_videoControl {
height: 44px;
width: 44px;
margin: 0 5px;
background-position: center;
background-repeat: no-repeat;
background-size: 90%;
cursor: pointer;
display: inline-block;
opacity: 0.8; }
.jsxc_controlbar .jsxc_videoControl:hover {
opacity: 1.0; }
.jsxc_controlbar .jsxc_hangUp {
background-image: url('../img/hang_up_red.svg'); }
.jsxc_controlbar .jsxc_fullscreen {
background-image: url('../img/fullscreen_white.svg'); }
.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: absolute;
top: 0;
right: 0;
bottom: 0;
width: 250px;
background-color: whitesmoke; }
.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: 100%;
height: 100%;
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; }
+57
Ver Arquivo
@@ -0,0 +1,57 @@
<?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"
height="16"
width="16"
version="1.1"
id="svg6"
inkscape:version="0.91+devel r"
sodipodi:docname="bookmark_black.svg"
viewBox="0 0 16 16">
<metadata
id="metadata12">
<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="defs10" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1394"
inkscape:window-height="922"
inkscape:document-units="px"
id="namedview8"
showgrid="false"
inkscape:zoom="41.7193"
inkscape:cx="9.0040062"
inkscape:cy="8.196313"
inkscape:window-x="61"
inkscape:window-y="34"
inkscape:window-maximized="0"
inkscape:current-layer="svg6" />
<path
style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.69061381;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 4.1233005,0.89389693 V 14.588472 l 3.8089033,-4.450726 3.8089022,4.450726 V 0.93667093 Z"
id="path4141"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccc" />
</svg>

Depois

Largura:  |  Altura:  |  Tamanho: 1.8 KiB

+58
Ver Arquivo
@@ -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"
height="16"
width="16"
version="1.1"
id="svg6"
inkscape:version="0.91+devel r"
sodipodi:docname="bookmark_white.svg"
viewBox="0 0 16 16">
<metadata
id="metadata12">
<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="defs10" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1394"
inkscape:window-height="922"
inkscape:document-units="px"
id="namedview8"
showgrid="false"
inkscape:zoom="41.7193"
inkscape:cx="9.0040062"
inkscape:cy="8.196313"
inkscape:window-x="61"
inkscape:window-y="34"
inkscape:window-maximized="0"
inkscape:current-layer="svg6" />
<path
style="fill:#ffffff;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.69061381;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 4.1233005,0.89389693 V 14.588472 l 3.8089033,-4.450726 3.8089022,4.450726 V 0.93667093 Z"
id="path4141"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccc" />
</svg>

Depois

Largura:  |  Altura:  |  Tamanho: 1.8 KiB

+67
Ver Arquivo
@@ -0,0 +1,67 @@
<?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 15 15"
id="svg3041"
height="15"
width="15"
version="1.1"
inkscape:version="0.91+devel r"
sodipodi:docname="padlock_open_disabled_black.svg">
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1678"
inkscape:window-height="958"
id="namedview7"
showgrid="false"
inkscape:zoom="22.627417"
inkscape:cx="7.9563473"
inkscape:cy="5.2327464"
inkscape:window-x="51"
inkscape:window-y="34"
inkscape:window-maximized="0"
inkscape:current-layer="svg3041" />
<metadata
id="metadata3047">
<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 />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs3045" />
<path
style="fill:#000000;stroke:none"
d="M 7.53125 0.00390625 C 4.961633 0.00390625 3.4225559 1.2787042 2.7519531 2.5410156 C 2.0813503 3.803327 2.1328125 5.0507812 2.1328125 5.0507812 L 4.03125 4.9921875 C 4.03125 4.9921875 4.019782 4.2051806 4.4296875 3.4335938 C 4.8395929 2.6620069 5.524596 1.9042969 7.53125 1.9042969 C 9.5466986 1.9042969 10.324942 2.6626717 10.789062 3.4199219 C 11.253184 4.177172 11.285156 4.9238281 11.285156 4.9238281 L 11.320312 8.0078125 L 2.1601562 8.0078125 L 2.1601562 15 L 13.220703 15 L 13.220703 9.5371094 L 13.238281 9.5371094 L 13.220703 8.0078125 L 13.185547 4.8730469 L 13.185547 4.8632812 C 13.185547 4.8632812 13.153667 3.6408231 12.410156 2.4277344 C 11.666646 1.2146499 10.092069 0.00390625 7.53125 0.00390625 z "
id="rect3051" />
<path
style="fill:#ffffff;fill-rule:evenodd;stroke:#ffffff;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 0.18997448,16.385763 15.366374,-2.2072779"
id="path4160-1-3-1"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M -0.40599717,17.241436 14.770403,-1.3516053"
id="path4160-1-3"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
</svg>

Depois

Largura:  |  Altura:  |  Tamanho: 2.9 KiB

+294 -172
Ver Arquivo
@@ -1,5 +1,5 @@
/*!
* jsxc v3.0.0-beta1 - 2016-01-28
* jsxc v3.0.0 - 2016-03-11
*
* Copyright (c) 2016 Klaus Herberth <klaus@jsxc.org> <br>
* Released under the MIT license
@@ -7,7 +7,7 @@
* Please see http://www.jsxc.org/
*
* @author Klaus Herberth <klaus@jsxc.org>
* @version 3.0.0-beta1
* @version 3.0.0
* @license MIT
*/
@@ -25,7 +25,7 @@ var jsxc = null, RTC = null, RTCPeerconnection = null;
*/
jsxc = {
/** Version of jsxc */
version: '3.0.0-beta1',
version: '3.0.0',
/** True if i'm the master */
master: false,
@@ -161,10 +161,10 @@ jsxc = {
}
}
jsxc.log = jsxc.log + msg + ': ' + d + '\n';
jsxc.log = jsxc.log + '$ ' + msg + ': ' + d + '\n';
} else {
console.log(msg);
jsxc.log = jsxc.log + msg + '\n';
jsxc.log = jsxc.log + '$ ' + msg + '\n';
}
},
@@ -201,6 +201,11 @@ jsxc = {
*/
init: function(options) {
if (options && options.loginForm && typeof options.loginForm.attachIfFound === 'boolean' && !options.loginForm.ifFound) {
// translate deprated option attachIfFound found to new ifFound
options.loginForm.ifFound = (options.loginForm.attachIfFound) ? 'attach' : 'pause';
}
if (options) {
// override default options
$.extend(true, jsxc.options, options);
@@ -293,7 +298,7 @@ jsxc = {
});
// Check if we have to establish a new connection
if (!jsxc.storage.getItem('rid') || !jsxc.storage.getItem('sid') || !jsxc.storage.getItem('jid')) {
if (!(jsxc.storage.getItem('rid') && jsxc.storage.getItem('sid') && jsxc.storage.getItem('jid')) || (jsxc.options.loginForm && jsxc.options.loginForm.ifFound === 'force' && jsxc.isLoginForm())) {
// clean up rid and sid
jsxc.storage.removeItem('rid');
@@ -354,7 +359,7 @@ jsxc = {
return false;
});
} else if (!jsxc.isLoginForm() || (jsxc.options.loginForm && jsxc.options.loginForm.attachIfFound)) {
} else if (!jsxc.isLoginForm() || (jsxc.options.loginForm && jsxc.options.loginForm.ifFound === 'attach')) {
// Restore old connection
@@ -1077,6 +1082,7 @@ jsxc.xmpp = {
// clean up
jsxc.storage.removeUserItem('buddylist');
jsxc.storage.removeUserItem('windowlist');
jsxc.storage.removeUserItem('unreadMsg');
if (!jsxc.master) {
$('#jsxc_roster').remove();
@@ -2139,6 +2145,7 @@ jsxc.xmpp.carbons = {
* @param {boolean} args.encrypted
* @param {boolean} args.forwarded
* @param {boolean} args.sender
* @param {integer} args.stamp
* @param {object} args.attachment Attached data
* @param {string} args.attachment.name File name
* @param {string} args.attachment.size File size
@@ -3211,12 +3218,16 @@ jsxc.gui = {
if (navigator) {
var key;
for (key in navigator) {
if (navigator.hasOwnProperty(key) && typeof navigator[key] === 'string') {
if (typeof navigator[key] === 'string') {
userInfo += '<b>' + key + ':</b> ' + navigator[key] + '<br />';
}
}
}
if ($.fn && $.fn.jquery) {
userInfo += '<b>jQuery:</b> ' + $.fn.jquery + '<br />';
}
if (window.screen) {
userInfo += '<b>Height:</b> ' + window.screen.height + '<br />';
userInfo += '<b>Width:</b> ' + window.screen.width + '<br />';
@@ -3426,22 +3437,24 @@ jsxc.gui = {
jsxc.options.set(key, val);
});
var success = jsxc.options.saveSettinsPermanent.call(this, data);
if (typeof self.attr('data-onsubmit') === 'string') {
jsxc.exec(self.attr('data-onsubmit'), [success]);
}
setTimeout(function() {
if (success) {
self.find('button[type="submit"]').switchClass('btn-primary', 'btn-success');
} else {
self.find('button[type="submit"]').switchClass('btn-primary', 'btn-danger');
var cb = function(success) {
if (typeof self.attr('data-onsubmit') === 'string') {
jsxc.exec(self.attr('data-onsubmit'), [success]);
}
setTimeout(function() {
self.find('button[type="submit"]').switchClass('btn-danger btn-success', 'btn-primary');
}, 2000);
}, 200);
if (success) {
self.find('button[type="submit"]').switchClass('btn-primary', 'btn-success');
} else {
self.find('button[type="submit"]').switchClass('btn-primary', 'btn-danger');
}
setTimeout(function() {
self.find('button[type="submit"]').switchClass('btn-danger btn-success', 'btn-primary');
}, 2000);
}, 200);
};
jsxc.options.saveSettinsPermanent.call(this, data, cb);
return false;
});
@@ -3619,7 +3632,7 @@ jsxc.gui = {
* @param bid
*/
unreadMsg: function(bid) {
var winData = jsxc.storage.getUserItem('window', bid);
var winData = jsxc.storage.getUserItem('window', bid) || {};
var count = (winData && winData.unread) || 0;
count = (count === true) ? 1 : count + 1; //unread was boolean (<2.1.0)
@@ -4020,11 +4033,12 @@ jsxc.gui.roster = {
scrollTo: '0px'
});
var chat = jsxc.storage.getUserItem('chat', bid) || [];
var history = jsxc.storage.getUserItem('history', bid) || [];
var i = 0;
while (chat.length > i) {
if (chat[i].direction !== 'sys') {
$('[data-bid="' + bid + '"]').find('.jsxc_lastmsg .jsxc_text').html(chat[i].msg);
while (history.length > i) {
var message = new jsxc.Message(history[i]);
if (message.direction !== jsxc.Message.SYS) {
$('[data-bid="' + bid + '"]').find('.jsxc_lastmsg .jsxc_text').html(message.msg);
break;
}
i++;
@@ -4864,6 +4878,7 @@ jsxc.gui.window = {
* @param {boolean} args.encrypted
* @param {boolean} args.forwarded
* @param {boolean} args.sender
* @param {integer} args.stamp
* @param {object} args.attachment Attached data
* @param {string} args.attachment.name File name
* @param {string} args.attachment.size File size
@@ -4980,6 +4995,9 @@ jsxc.gui.window = {
// translate shortnames to images
msg = jsxc.gui.shortnameToImage(msg);
// replace line breaks
msg = msg.replace(/(\r\n|\r|\n)/g, '<br />');
var msgDiv = $("<div>"),
msgTsDiv = $("<div>");
msgDiv.addClass('jsxc_chatmessage jsxc_' + direction);
@@ -5076,6 +5094,10 @@ jsxc.gui.window = {
}
avatarDiv.attr('title', jsxc.escapeHTML(title));
if (msgDiv.prev().length > 0 && msgDiv.prev().find('.jsxc_avatar').attr('title') === avatarDiv.attr('title')) {
avatarDiv.css('visibility', 'hidden');
}
}
jsxc.gui.detectUriScheme(win);
@@ -5149,7 +5171,11 @@ jsxc.gui.window = {
jsxc.storage.setUserItem('history', bid, []);
jsxc.gui.window.get(bid).find('.jsxc_textarea').empty();
var win = jsxc.gui.window.get(bid);
if (win.length > 0) {
win.find('.jsxc_textarea').empty();
}
},
/**
@@ -5185,10 +5211,19 @@ jsxc.gui.window = {
}
},
showOverlay: function(bid, content) {
showOverlay: function(bid, content, allowClose) {
var win = jsxc.gui.window.get(bid);
win.find('.jsxc_overlay > div').empty().append(content);
win.find('.jsxc_overlay .jsxc_body').empty().append(content);
win.find('.jsxc_overlay .jsxc_close').off('click').click(function() {
jsxc.gui.window.hideOverlay(bid);
});
if (allowClose !== true) {
win.find('.jsxc_overlay .jsxc_close').hide();
} else {
win.find('.jsxc_overlay .jsxc_close').show();
}
win.addClass('jsxc_showOverlay');
},
@@ -5303,7 +5338,7 @@ jsxc.gui.window = {
var msg = $('<div><div><label><input type="file" name="files" /><label></div></div>');
msg.addClass('jsxc_chatmessage');
jsxc.gui.window.showOverlay(bid, msg);
jsxc.gui.window.showOverlay(bid, msg, true);
msg.find('label').click();
@@ -5362,7 +5397,7 @@ jsxc.gui.window = {
}).appendTo(msg);
$('<button>').text($.t('Abort')).click(function() {
$('<button>').addClass('jsxc_btn jsxc_btn-default').text($.t('Abort')).click(function() {
jsxc.gui.window.hideOverlay(bid);
}).appendTo(msg);
});
@@ -5713,6 +5748,10 @@ jsxc.muc = {
var bookmark = $("#jsxc_bookmark").prop("checked");
var autojoin = $('#jsxc_autojoin').prop('checked');
// clean up
jsxc.gui.window.clear(room);
jsxc.storage.setUserItem('member', room, {});
self.join(room, nickname, password, roomName, subject, bookmark, autojoin);
return false;
@@ -5957,7 +5996,11 @@ jsxc.muc = {
var roomdata = jsxc.storage.getUserItem('buddy', room);
jsxc.storage.updateUserItem('buddy', room, 'state', self.CONST.ROOMSTATE.AWAIT_DESTRUCTION);
jsxc.gui.window.postMessage(room, 'sys', $.t('This_room_will_be_closed'));
jsxc.gui.window.postMessage({
bid: room,
direction: jsxc.Message.SYS,
msg: $.t('This_room_will_be_closed')
});
var iq = $iq({
to: room,
@@ -6035,7 +6078,7 @@ jsxc.muc = {
var ownNickname = own[bid];
var mlIcon = $('<div class="jsxc_members"></div>');
win.find('.jsxc_tools > .jsxc_transfer').after(mlIcon);
win.find('.jsxc_tools > .jsxc_settings').after(mlIcon);
var ml = $('<div class="jsxc_memberlist"><ul></ul></div>');
win.find('.jsxc_fade').prepend(ml);
@@ -6104,7 +6147,7 @@ jsxc.muc = {
jsxc.muc.scrollMemberListBy(bid, 0);
});
var destroy = $('<li>');
var destroy = $('<a>');
destroy.text($.t('Destroy'));
destroy.addClass('jsxc_destroy');
destroy.hide();
@@ -6112,7 +6155,7 @@ jsxc.muc = {
self.destroy(bid);
});
win.find('.jsxc_settings ul').append(destroy);
win.find('.jsxc_settings ul').append($('<li>').append(destroy));
if (roomdata.state > self.CONST.ROOMSTATE.INIT) {
var member = jsxc.storage.getUserItem('member', bid) || {};
@@ -6126,14 +6169,14 @@ jsxc.muc = {
});
}
var leave = $('<li>');
var leave = $('<a>');
leave.text($.t('Leave'));
leave.addClass('jsxc_leave');
leave.click(function() {
self.leave(bid);
});
win.find('.jsxc_settings ul').append(leave);
win.find('.jsxc_settings ul').append($('<li>').append(leave));
},
/**
@@ -6175,10 +6218,6 @@ jsxc.muc = {
jsxc.storage.setUserItem('roomNames', jsxc.xmpp.conn.muc.roomNames);
// clean up
jsxc.storage.removeUserItem('chat', room);
member = {};
if (jsxc.gui.roster.getItem(room).length === 0) {
var bl = jsxc.storage.getUserItem('buddylist');
bl.push(room);
@@ -6201,7 +6240,11 @@ jsxc.muc = {
// room has been destroyed
member = {};
jsxc.gui.window.postMessage(room, 'sys', $.t('This_room_has_been_closed'));
jsxc.gui.window.postMessage({
bid: room,
direction: jsxc.Message.SYS,
msg: $.t('This_room_has_been_closed')
});
self.close(room);
} else {
@@ -6219,27 +6262,39 @@ jsxc.muc = {
// prevent to display enter message
member[newNickname] = {};
jsxc.gui.window.postMessage(room, 'sys', $.t('is_now_known_as', {
oldNickname: nickname,
newNickname: newNickname,
escapeInterpolation: true
}));
jsxc.gui.window.postMessage({
bid: room,
direction: jsxc.Message.SYS,
msg: $.t('is_now_known_as', {
oldNickname: nickname,
newNickname: newNickname,
escapeInterpolation: true
})
});
} else if (codes.length === 0 || (codes.length === 1 && codes.indexOf('110') > -1)) {
// normal user exit
jsxc.gui.window.postMessage(room, 'sys', $.t('left_the_building', {
nickname: nickname,
escapeInterpolation: true
}));
jsxc.gui.window.postMessage({
bid: room,
direction: jsxc.Message.SYS,
msg: $.t('left_the_building', {
nickname: nickname,
escapeInterpolation: true
})
});
}
}
} else {
// new member joined
if (!member[nickname] && own[room]) {
jsxc.gui.window.postMessage(room, 'sys', $.t('entered_the_room', {
nickname: nickname,
escapeInterpolation: true
}));
jsxc.gui.window.postMessage({
bid: room,
direction: jsxc.Message.SYS,
msg: $.t('entered_the_room', {
nickname: nickname,
escapeInterpolation: true
})
});
}
member[nickname] = {
@@ -6324,19 +6379,35 @@ jsxc.muc = {
},
/** Inform occupants that room logging is now enabled */
170: function(room) {
jsxc.gui.window.postMessage(room, 'sys', $.t('Room_logging_is_enabled'));
jsxc.gui.window.postMessage({
bid: room,
direction: jsxc.Message.SYS,
msg: $.t('Room_logging_is_enabled')
});
},
/** Inform occupants that room logging is now disabled */
171: function(room) {
jsxc.gui.window.postMessage(room, 'sys', $.t('Room_logging_is_disabled'));
jsxc.gui.window.postMessage({
bid: room,
direction: jsxc.Message.SYS,
msg: $.t('Room_logging_is_disabled')
});
},
/** Inform occupants that the room is now non-anonymous */
172: function(room) {
jsxc.gui.window.postMessage(room, 'sys', $.t('Room_is_now_non-anoymous'));
jsxc.gui.window.postMessage({
bid: room,
direction: jsxc.Message.SYS,
msg: $.t('Room_is_now_non-anoymous')
});
},
/** Inform occupants that the room is now semi-anonymous */
173: function(room) {
jsxc.gui.window.postMessage(room, 'sys', $.t('Room_is_now_semi-anonymous'));
jsxc.gui.window.postMessage({
bid: room,
direction: jsxc.Message.SYS,
msg: $.t('Room_is_now_semi-anonymous')
});
},
/** Inform user that a new room has been created */
201: function(room) {
@@ -6382,14 +6453,22 @@ jsxc.muc = {
if (own[room] === nickname) {
jsxc.muc.close(room);
jsxc.gui.window.postMessage(room, 'sys', $.t('muc_removed_banned'));
jsxc.gui.window.postMessage({
bid: room,
direction: jsxc.Message.SYS,
msg: $.t('muc_removed_banned')
});
jsxc.muc.postReason(room, xdata);
} else {
jsxc.gui.window.postMessage(room, 'sys', $.t('muc_removed_info_banned', {
nickname: nickname,
escapeInterpolation: true
}));
jsxc.gui.window.postMessage({
bid: room,
direction: jsxc.Message.SYS,
msg: $.t('muc_removed_info_banned', {
nickname: nickname,
escapeInterpolation: true
})
});
}
},
/** Inform user that he or she has been kicked */
@@ -6398,14 +6477,22 @@ jsxc.muc = {
if (own[room] === nickname) {
jsxc.muc.close(room);
jsxc.gui.window.postMessage(room, 'sys', $.t('muc_removed_kicked'));
jsxc.gui.window.postMessage({
bid: room,
direction: jsxc.Message.SYS,
msg: $.t('muc_removed_kicked')
});
jsxc.muc.postReason(room, xdata);
} else {
jsxc.gui.window.postMessage(room, 'sys', $.t('muc_removed_info_kicked', {
nickname: nickname,
escapeInterpolation: true
}));
jsxc.gui.window.postMessage({
bid: room,
direction: jsxc.Message.SYS,
msg: $.t('muc_removed_info_kicked', {
nickname: nickname,
escapeInterpolation: true
})
});
}
},
/** Inform user that he or she is beeing removed from the room because of an affiliation change */
@@ -6414,12 +6501,21 @@ jsxc.muc = {
if (own[room] === nickname) {
jsxc.muc.close(room);
jsxc.gui.window.postMessage(room, 'sys', $.t('muc_removed_affiliation'));
jsxc.gui.window.postMessage({
bid: room,
direction: jsxc.Message.SYS,
msg: $.t('muc_removed_affiliation')
});
} else {
jsxc.gui.window.postMessage(room, 'sys', $.t('muc_removed_info_affiliation', {
nickname: nickname,
escapeInterpolation: true
}));
jsxc.gui.window.postMessage({
bid: room,
direction: jsxc.Message.SYS,
msg: $.t('muc_removed_info_affiliation', {
nickname: nickname,
escapeInterpolation: true
})
});
}
},
/**
@@ -6431,12 +6527,20 @@ jsxc.muc = {
if (own[room] === nickname) {
jsxc.muc.close(room);
jsxc.gui.window.postMessage(room, 'sys', $.t('muc_removed_membersonly'));
jsxc.gui.window.postMessage({
bid: room,
direction: jsxc.Message.SYS,
msg: $.t('muc_removed_membersonly')
});
} else {
jsxc.gui.window.postMessage(room, 'sys', $.t('muc_removed_info_membersonly', {
nickname: nickname,
escapeInterpolation: true
}));
jsxc.gui.window.postMessage({
bid: room,
direction: jsxc.Message.SYS,
msg: $.t('muc_removed_info_membersonly', {
nickname: nickname,
escapeInterpolation: true
})
});
}
},
/**
@@ -6445,7 +6549,11 @@ jsxc.muc = {
*/
332: function(room) {
jsxc.muc.close(room);
jsxc.gui.window.postMessage(room, 'sys', $.t('muc_removed_shutdown'));
jsxc.gui.window.postMessage({
bid: room,
direction: jsxc.Message.SYS,
msg: $.t('muc_removed_shutdown')
});
}
},
@@ -6467,9 +6575,18 @@ jsxc.muc = {
reason = $.t('Reason') + ': ' + reason;
if (typeof actor.name === 'string' || typeof actor.jid === 'string') {
jsxc.gui.window.postMessage(room, 'in', reason, false, false, null, actor);
jsxc.gui.window.postMessage({
bid: room,
direction: jsxc.Message.IN,
msg: reason,
sender: actor
});
} else {
jsxc.gui.window.postMessage(room, 'sys', reason);
jsxc.gui.window.postMessage({
bid: room,
direction: jsxc.Message.SYS,
msg: reason
});
}
}
},
@@ -6589,7 +6706,7 @@ jsxc.muc = {
onGroupchatMessage: function(message) {
var id = $(message).attr('id');
if (jsxc.el_exists($('#' + id))) {
if (id && jsxc.el_exists(jsxc.Message.getDOM(id))) {
// ignore own incoming messages
return true;
}
@@ -6613,7 +6730,15 @@ jsxc.muc = {
sender.jid = member[nickname].jid;
}
jsxc.gui.window.postMessage(room, 'in', body, false, false, stamp, sender);
jsxc.gui.window.init(room);
jsxc.gui.window.postMessage({
bid: room,
direction: jsxc.Message.IN,
msg: body,
stamp: stamp,
sender: sender
});
}
var subject = $(message).find('subject');
@@ -6625,10 +6750,14 @@ jsxc.muc = {
jsxc.storage.setUserItem('buddy', room, roomdata);
jsxc.gui.window.postMessage(room, 'sys', $.t('changed_subject_to', {
nickname: nickname,
subject: subject.text()
}));
jsxc.gui.window.postMessage({
bid: room,
direction: jsxc.Message.SYS,
msg: $.t('changed_subject_to', {
nickname: nickname,
subject: subject.text()
})
});
}
return true;
@@ -6649,13 +6778,29 @@ jsxc.muc = {
}
if ($(message).find('item-not-found').length > 0) {
jsxc.gui.window.postMessage(room, 'sys', $.t('message_not_send_item-not-found'));
jsxc.gui.window.postMessage({
bid: room,
direction: jsxc.Message.SYS,
msg: $.t('message_not_send_item-not-found')
});
} else if ($(message).find('forbidden').length > 0) {
jsxc.gui.window.postMessage(room, 'sys', $.t('message_not_send_forbidden'));
jsxc.gui.window.postMessage({
bid: room,
direction: jsxc.Message.SYS,
msg: $.t('message_not_send_forbidden')
});
} else if ($(message).find('not-acceptable').length > 0) {
jsxc.gui.window.postMessage(room, 'sys', $.t('message_not_send_not-acceptable'));
jsxc.gui.window.postMessage({
bid: room,
direction: jsxc.Message.SYS,
msg: $.t('message_not_send_not-acceptable')
});
} else {
jsxc.gui.window.postMessage(room, 'sys', $.t('message_not_send'));
jsxc.gui.window.postMessage({
bid: room,
direction: jsxc.Message.SYS,
msg: $.t('message_not_send')
});
}
jsxc.debug('[muc] error message for ' + room, $(message).find('error')[0]);
@@ -6680,8 +6825,9 @@ jsxc.muc = {
return;
}
var bo = $('<div>');
bo.text('+');
var bo = $('<a>');
$('<span>').addClass('jsxc_icon jsxc_bookmarkicon').appendTo(bo);
$('<span>').text($.t('Bookmark')).appendTo(bo);
bo.addClass('jsxc_bookmarkOptions');
bo.click(function(ev) {
ev.preventDefault();
@@ -6691,7 +6837,7 @@ jsxc.muc = {
return false;
});
bud.find('.jsxc_rename').before(bo);
bud.find('.jsxc_menu ul').append($('<li>').append(bo));
if (data.bookmarked) {
bud.addClass('jsxc_bookmarked');
@@ -7386,9 +7532,24 @@ jsxc.options = {
*/
onAuthFail: 'submit',
/** True: Attach connection even is login form was found */
/**
* True: Attach connection even is login form was found.
*
* @type {Boolean}
* @deprecated since 3.0.0. Use now loginForm.ifFound (true => attach, false => pause)
*/
attachIfFound: true,
/**
* Describes what we should do if login form was found:
* - Attach connection
* - Force new connection with loginForm.jid and loginForm.passed
* - Pause connection and do nothing
*
* @type {(attach|force|pause)}
*/
ifFound: 'attach',
/**
* True: Display roster minimized after first login. Afterwards the last
* roster state will be used.
@@ -7466,10 +7627,10 @@ jsxc.options = {
*
* @memberOf jsxc.options
* @param data Holds all data as key/value
* @returns {boolean} false if function failes
* @param cb Called with true on success, false otherwise
*/
saveSettinsPermanent: function() {
saveSettinsPermanent: function(data, cb) {
cb(true);
},
carbons: {
@@ -9300,7 +9461,14 @@ jsxc.webrtc = {
var bid = jsxc.jidToBid(session.peerID);
if (this.localStream) {
this.localStream.stop();
if (typeof this.localStream.stop === 'function') {
this.localStream.stop();
} else {
var tracks = this.localStream.getTracks();
tracks.forEach(function(track) {
track.stop();
});
}
}
if ($('.jsxc_videoContainer').length) {
@@ -9312,17 +9480,10 @@ jsxc.webrtc = {
this.localStream = null;
this.remoteStream = null;
var win = $('#jsxc_webrtc .jsxc_chatarea > ul > li');
$('#jsxc_windowList > ul').prepend(win.detach());
win.find('.slimScrollDiv').resizable('enable');
jsxc.gui.window.resize(win);
jsxc.gui.closeVideoWindow();
$(document).off('cleanup.dialog.jsxc');
$(document).off('error.jingle');
jsxc.gui.dialog.close();
$('#jsxc_webrtc').remove();
jsxc.gui.window.postMessage({
bid: bid,
direction: jsxc.Message.SYS,
@@ -9421,8 +9582,6 @@ jsxc.webrtc = {
msg: $.t('ICE_connection_failure')
});
$(document).off('cleanup.dialog.jsxc');
session.end('failed-transport');
$(document).trigger('callterminated.jingle');
@@ -9459,11 +9618,10 @@ jsxc.webrtc = {
});
$(document).one('error.jingle', function(e, sid, error) {
if (error.source !== 'offer') {
if (error && error.source !== 'offer') {
return;
}
$(document).off('cleanup.dialog.jsxc');
setTimeout(function() {
jsxc.gui.showAlert("Sorry, we couldn't establish a connection. Maybe your buddy is offline.");
}, 500);
@@ -9487,9 +9645,13 @@ jsxc.webrtc = {
* @memberOf jsxc.webrtc
*/
hangUp: function(reason, text) {
$(document).off('cleanup.dialog.jsxc');
if (jsxc.webrtc.conn.jingle.manager && !$.isEmptyObject(jsxc.webrtc.conn.jingle.manager.peers)) {
jsxc.webrtc.conn.jingle.terminate(null, reason, text);
} else {
jsxc.gui.closeVideoWindow();
}
jsxc.webrtc.conn.jingle.terminate(null, reason, text);
// @TODO check event
$(document).trigger('callterminated.jingle');
},
@@ -9752,20 +9914,6 @@ jsxc.gui.showVideoWindow = function(jid) {
$('#jsxc_webrtc .jsxc_' + (self.remoteStream.getVideoTracks().length > 0 ? 'remotevideo' : 'noRemoteVideo')).addClass('jsxc_deviceAvailable');
}
var toggleMulti = function(elem, open) {
$('#jsxc_webrtc .jsxc_multi > div').not(elem).slideUp();
var opt = {
complete: jsxc.gui.dialog.resize
};
if (open) {
elem.slideDown(opt);
} else {
elem.slideToggle(opt);
}
};
var win = jsxc.gui.window.open(jsxc.jidToBid(jid));
win.find('.slimScrollDiv').resizable('disable');
@@ -9782,33 +9930,6 @@ jsxc.gui.showVideoWindow = function(jid) {
jsxc.webrtc.hangUp('success');
});
$('#jsxc_webrtc .jsxc_snapshot').click(function() {
jsxc.webrtc.snapshot(rv);
toggleMulti($('#jsxc_webrtc .jsxc_snapshotbar'), true);
});
$('#jsxc_webrtc .jsxc_snapshots').click(function() {
toggleMulti($('#jsxc_webrtc .jsxc_snapshotbar'));
});
$('#jsxc_webrtc .jsxc_showchat').click(function() {
var chatarea = $('#jsxc_webrtc .jsxc_chatarea');
if (chatarea.is(':hidden')) {
chatarea.show();
$('#jsxc_webrtc .jsxc_webrtc').width('900');
jsxc.gui.dialog.resize({
width: '920px'
});
} else {
chatarea.hide();
$('#jsxc_webrtc .jsxc_webrtc').width('650');
jsxc.gui.dialog.resize({
width: '660px'
});
}
});
$('#jsxc_webrtc .jsxc_fullscreen').click(function() {
if ($.support.fullscreen) {
@@ -9821,24 +9942,22 @@ jsxc.gui.showVideoWindow = function(jid) {
}
});
$('#jsxc_webrtc .jsxc_volume').change(function() {
rv[0].volume = $(this).val();
$('#jsxc_webrtc .jsxc_videoContainer').click(function() {
$('#jsxc_webrtc .jsxc_controlbar').toggleClass('jsxc_visible');
});
$('#jsxc_webrtc .jsxc_volume').dblclick(function() {
$(this).val(0.5);
});
$('#jsxc_webrtc .jsxc_videoContainer').toggle(function() {
$('#jsxc_webrtc .jsxc_controlbar').css('opacity', '1.0');
}, function() {
$('#jsxc_webrtc .jsxc_controlbar').css('opacity', '');
});
return $('#jsxc_webrtc');
};
jsxc.gui.closeVideoWindow = function() {
var win = $('#jsxc_webrtc .jsxc_chatarea > ul > li');
$('#jsxc_windowList > ul').prepend(win.detach());
win.find('.slimScrollDiv').resizable('enable');
jsxc.gui.window.resize(win);
$('#jsxc_webrtc').remove();
};
$.extend(jsxc.CONST, {
KEYCODE_ENTER: 13,
KEYCODE_ESC: 27
@@ -10207,7 +10326,7 @@ jsxc.gui.template['aboutDialog'] = '<h3>JavaScript XMPP Chat</h3>\n' +
' Real-time chat app for {{app_name}} and more.\n' +
' <br /> Requires an external <a href="https://xmpp.org/xmpp-software/servers/" target="_blank">XMPP server</a>.\n' +
'</p>\n' +
'<p>\n' +
'<p class="jsxc_credits">\n' +
' <b>Credits: </b> <a href="http://www.beepzoid.com/old-phones/" target="_blank">David English (Ringtone)</a>,\n' +
' <a href="https://soundcloud.com/freefilmandgamemusic/ping-1?in=freefilmandgamemusic/sets/free-notification-sounds-and" target="_blank">CameronMusic (Ping)</a>,\n' +
' <a href="http://www.picol.org/">Picol (Fullscreen icon)</a>, <a href="http://www.jabber.org/">Jabber Software Foundation (Jabber lightbulb logo)</a>\n' +
@@ -10390,7 +10509,10 @@ jsxc.gui.template['chatWindow'] = '<li class="jsxc_windowItem">\n' +
' </div>\n' +
' <div class="jsxc_fade">\n' +
' <div class="jsxc_overlay">\n' +
' <div />\n' +
' <div>\n' +
' <div class="jsxc_body" />\n' +
' <div class="jsxc_close" />\n' +
' </div>\n' +
' </div>\n' +
' <div class="jsxc_textarea" />\n' +
' <div class="jsxc_emoticons">\n' +
@@ -10777,7 +10899,7 @@ jsxc.gui.template['videoWindow'] = '<div id="jsxc_webrtc">\n' +
' <div></div>\n' +
' </div>\n' +
' </div>\n' +
' <div class="jsxc_controlbar">\n' +
' <div class="jsxc_controlbar jsxc_visible">\n' +
' <div>\n' +
' <div class="jsxc_hangUp jsxc_videoControl" />\n' +
' <div class="jsxc_fullscreen jsxc_videoControl" />\n' +
+8 -8
Ver Arquivo
Diff do arquivo suprimido porque uma ou mais linhas são muito longas
Diff do arquivo suprimido porque uma ou mais linhas são muito longas
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
+4 -4
Ver Arquivo
Diff do arquivo suprimido porque uma ou mais linhas são muito longas
Diff do arquivo suprimido porque uma ou mais linhas são muito longas
Diff do arquivo suprimido porque uma ou mais linhas são muito longas
+378 -4
Ver Arquivo
@@ -84,6 +84,310 @@
<h3 class="subsection-title">Members</h3>
<dl>
<dt>
<h4 class="name" id="{boolean}"><span class="type-signature"></span>{boolean}<span class="type-signature"> :boolean</span></h4>
</dt>
<dd>
<h5>Type:</h5>
<ul>
<li>
<span class="param-type">boolean</span>
</li>
</ul>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.Message.js.html">jsxc.lib.Message.js</a>, <a href="jsxc.lib.Message.js.html#line33">line 33</a>
</li></ul></dd>
</dl>
</dd>
<dt>
<h4 class="name" id="{boolean}"><span class="type-signature"></span>{boolean}<span class="type-signature"> :boolean</span></h4>
</dt>
<dd>
<h5>Type:</h5>
<ul>
<li>
<span class="param-type">boolean</span>
</li>
</ul>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.Message.js.html">jsxc.lib.Message.js</a>, <a href="jsxc.lib.Message.js.html#line36">line 36</a>
</li></ul></dd>
</dl>
</dd>
<dt>
<h4 class="name" id="{boolean}"><span class="type-signature"></span>{boolean}<span class="type-signature"> :boolean</span></h4>
</dt>
<dd>
<h5>Type:</h5>
<ul>
<li>
<span class="param-type">boolean</span>
</li>
</ul>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.Message.js.html">jsxc.lib.Message.js</a>, <a href="jsxc.lib.Message.js.html#line39">line 39</a>
</li></ul></dd>
</dl>
</dd>
<dt>
<h4 class="name" id="{integer}"><span class="type-signature"></span>{integer}<span class="type-signature"> :integer</span></h4>
</dt>
<dd>
<h5>Type:</h5>
<ul>
<li>
<span class="param-type">integer</span>
</li>
</ul>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.Message.js.html">jsxc.lib.Message.js</a>, <a href="jsxc.lib.Message.js.html#line42">line 42</a>
</li></ul></dd>
</dl>
</dd>
<dt>
<h4 class="name" id="{string}"><span class="type-signature"></span>{string}<span class="type-signature"> :string</span></h4>
</dt>
<dd>
<h5>Type:</h5>
<ul>
<li>
<span class="param-type">string</span>
</li>
</ul>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.Message.js.html">jsxc.lib.Message.js</a>, <a href="jsxc.lib.Message.js.html#line30">line 30</a>
</li></ul></dd>
</dl>
</dd>
</dl>
@@ -92,6 +396,76 @@
<dl>
<dt>
<h4 class="name" id="direction">direction</h4>
</dt>
<dd>
<div class="description">
Message direction can be incoming, outgoing or system.
</div>
<h5>Type:</h5>
<ul>
<li>
<span class="param-type"><a href="jsxc.Message.html#IN">jsxc.Message.IN</a></span>
|
<span class="param-type"><a href="jsxc.Message.html#OUT">jsxc.Message.OUT</a></span>
|
<span class="param-type"><a href="jsxc.Message.html#SYS">jsxc.Message.SYS</a></span>
</li>
</ul>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.Message.js.html">jsxc.lib.Message.js</a>, <a href="jsxc.lib.Message.js.html#line236">line 236</a>
</li></ul></dd>
</dl>
</dd>
<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>
@@ -182,7 +556,7 @@
<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#line187">line 187</a>
<a href="jsxc.lib.options.js.html">jsxc.lib.options.js</a>, <a href="jsxc.lib.options.js.html#line199">line 199</a>
</li></ul></dd>
@@ -299,7 +673,7 @@
<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#line154">line 154</a>
<a href="jsxc.lib.options.js.html">jsxc.lib.options.js</a>, <a href="jsxc.lib.options.js.html#line166">line 166</a>
</li></ul></dd>
@@ -338,13 +712,13 @@
</div>
<nav>
<h2><a href="index.html">Index</a></h2><h3>Namespaces</h3><ul><li><a href="jsxc.html">jsxc</a></li><li><a href="jsxc.gui.html">gui</a></li><li><a href="jsxc.gui.dialog.html">dialog</a></li><li><a href="jsxc.gui.queryActions.html">queryActions</a></li><li><a href="jsxc.gui.roster.html">roster</a></li><li><a href="jsxc.gui.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.bookmarks.html">bookmarks</a></li><li><a href="jsxc.xmpp.carbons.html">carbons</a></li></ul><h3><a href="global.html">Global</a></h3>
<h2><a href="index.html">Index</a></h2><h3>Classes</h3><ul><li><a href="jsxc.Message.html">Message</a></li></ul><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.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.bookmarks.html">bookmarks</a></li><li><a href="jsxc.xmpp.carbons.html">carbons</a></li></ul><h3>Global</h3><ul><li>{boolean}</li><li>{integer}</li><li>{string}</li></ul>
</nav>
<br clear="both">
<footer>
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Tue Nov 17 2015 17:01:04 GMT+0100 (CET)
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Fri Mar 11 2016 17:32:12 GMT+0100 (CET)
</footer>
<script> prettyPrint(); </script>
+2 -2
Ver Arquivo
@@ -48,13 +48,13 @@
</div>
<nav>
<h2><a href="index.html">Index</a></h2><h3>Namespaces</h3><ul><li><a href="jsxc.html">jsxc</a></li><li><a href="jsxc.gui.html">gui</a></li><li><a href="jsxc.gui.dialog.html">dialog</a></li><li><a href="jsxc.gui.queryActions.html">queryActions</a></li><li><a href="jsxc.gui.roster.html">roster</a></li><li><a href="jsxc.gui.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.bookmarks.html">bookmarks</a></li><li><a href="jsxc.xmpp.carbons.html">carbons</a></li></ul><h3><a href="global.html">Global</a></h3>
<h2><a href="index.html">Index</a></h2><h3>Classes</h3><ul><li><a href="jsxc.Message.html">Message</a></li></ul><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.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.bookmarks.html">bookmarks</a></li><li><a href="jsxc.xmpp.carbons.html">carbons</a></li></ul><h3>Global</h3><ul><li>{boolean}</li><li>{integer}</li><li>{string}</li></ul>
</nav>
<br clear="both">
<footer>
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Tue Nov 17 2015 17:01:04 GMT+0100 (CET)
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Fri Mar 11 2016 17:32:12 GMT+0100 (CET)
</footer>
<script> prettyPrint(); </script>
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+69 -8
Ver Arquivo
@@ -66,7 +66,7 @@
<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#line1765">line 1765</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line1878">line 1878</a>
</li></ul></dd>
@@ -100,7 +100,7 @@
<dl>
<dt>
<h4 class="name" id="close"><span class="type-signature">&lt;static> </span>close<span class="signature">()</span><span class="type-signature"></span></h4>
<h4 class="name" id="close"><span class="type-signature">&lt;static> </span>close<span class="signature">(<span class="optional">name</span>)</span><span class="type-signature"></span></h4>
</dt>
@@ -108,7 +108,8 @@
<div class="description">
Close current dialog.
If no name is provided every dialog will be closed,
otherwise only dialog with given name is closed.
</div>
@@ -117,6 +118,66 @@
<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>name</code></td>
<td class="type">
<span class="param-type">string</span>
</td>
<td class="attributes">
&lt;optional><br>
</td>
<td class="description last">Close only dialog with the given name</td>
</tr>
</tbody>
</table>
<dl class="details">
@@ -141,7 +202,7 @@
<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#line1843">line 1843</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line1961">line 1961</a>
</li></ul></dd>
@@ -361,7 +422,7 @@
<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#line1780">line 1780</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line1893">line 1893</a>
</li></ul></dd>
@@ -500,7 +561,7 @@
<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#line1854">line 1854</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line1976">line 1976</a>
</li></ul></dd>
@@ -541,13 +602,13 @@
</div>
<nav>
<h2><a href="index.html">Index</a></h2><h3>Namespaces</h3><ul><li><a href="jsxc.html">jsxc</a></li><li><a href="jsxc.gui.html">gui</a></li><li><a href="jsxc.gui.dialog.html">dialog</a></li><li><a href="jsxc.gui.queryActions.html">queryActions</a></li><li><a href="jsxc.gui.roster.html">roster</a></li><li><a href="jsxc.gui.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.bookmarks.html">bookmarks</a></li><li><a href="jsxc.xmpp.carbons.html">carbons</a></li></ul><h3><a href="global.html">Global</a></h3>
<h2><a href="index.html">Index</a></h2><h3>Classes</h3><ul><li><a href="jsxc.Message.html">Message</a></li></ul><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.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.bookmarks.html">bookmarks</a></li><li><a href="jsxc.xmpp.carbons.html">carbons</a></li></ul><h3>Global</h3><ul><li>{boolean}</li><li>{integer}</li><li>{string}</li></ul>
</nav>
<br clear="both">
<footer>
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Tue Nov 17 2015 17:01:04 GMT+0100 (CET)
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Fri Mar 11 2016 17:32:12 GMT+0100 (CET)
</footer>
<script> prettyPrint(); </script>
+172 -31
Ver Arquivo
@@ -276,7 +276,7 @@
<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#line1218">line 1218</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line1272">line 1272</a>
</li></ul></dd>
@@ -416,7 +416,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line1144">line 1144</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line1188">line 1188</a>
</li></ul></dd>
@@ -528,7 +528,7 @@
<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#line1271">line 1271</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line1325">line 1325</a>
</li></ul></dd>
@@ -633,6 +633,8 @@
<dt class="important tag-deprecated">Deprecated:</dt><dd><ul class="dummy"><li>Use <a href="jsxc.gui.window.html#get">jsxc.gui.window.get</a> instead.</li><ul></dd>
@@ -645,7 +647,7 @@
<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#line343">line 343</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line370">line 370</a>
</li></ul></dd>
@@ -736,7 +738,7 @@
<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#line83">line 83</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line98">line 98</a>
</li></ul></dd>
@@ -848,7 +850,7 @@
<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#line1240">line 1240</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line1294">line 1294</a>
</li></ul></dd>
@@ -960,7 +962,7 @@
<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#line314">line 314</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line340">line 340</a>
</li></ul></dd>
@@ -983,6 +985,145 @@
</dd>
<dt>
<h4 class="name" id="shortnameToImage"><span class="type-signature">&lt;static> </span>shortnameToImage<span class="signature">(str)</span><span class="type-signature"> &rarr; {string}</span></h4>
</dt>
<dd>
<div class="description">
Replace shortname emoticons with images.
</div>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>str</code></td>
<td class="type">
<span class="param-type">string</span>
</td>
<td class="description last">text with emoticons as shortname</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#line1432">line 1432</a>
</li></ul></dd>
</dl>
<h5>Returns:</h5>
<div class="param-desc">
text with emoticons as images
</div>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type">string</span>
</dd>
</dl>
</dd>
@@ -1029,7 +1170,7 @@
<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#line774">line 774</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line812">line 812</a>
</li></ul></dd>
@@ -1146,7 +1287,7 @@
<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#line722">line 722</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line760">line 760</a>
</li></ul></dd>
@@ -1281,7 +1422,7 @@
<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#line572">line 572</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line610">line 610</a>
</li></ul></dd>
@@ -1350,7 +1491,7 @@
<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#line731">line 731</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line769">line 769</a>
</li></ul></dd>
@@ -1531,7 +1672,7 @@
<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#line755">line 755</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line793">line 793</a>
</li></ul></dd>
@@ -1678,7 +1819,7 @@
<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#line606">line 606</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line644">line 644</a>
</li></ul></dd>
@@ -1747,7 +1888,7 @@
<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#line787">line 787</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line825">line 825</a>
</li></ul></dd>
@@ -1864,7 +2005,7 @@
<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#line452">line 452</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line476">line 476</a>
</li></ul></dd>
@@ -1933,7 +2074,7 @@
<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#line399">line 399</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line423">line 423</a>
</li></ul></dd>
@@ -2050,7 +2191,7 @@
<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#line682">line 682</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line720">line 720</a>
</li></ul></dd>
@@ -2137,7 +2278,7 @@
<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#line1034">line 1034</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line1078">line 1078</a>
</li></ul></dd>
@@ -2254,7 +2395,7 @@
<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#line815">line 815</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line857">line 857</a>
</li></ul></dd>
@@ -2371,7 +2512,7 @@
<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#line461">line 461</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line485">line 485</a>
</li></ul></dd>
@@ -2440,7 +2581,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.webrtc.js.html">jsxc.lib.webrtc.js</a>, <a href="jsxc.lib.webrtc.js.html#line860">line 860</a>
<a href="jsxc.lib.webrtc.js.html">jsxc.lib.webrtc.js</a>, <a href="jsxc.lib.webrtc.js.html#line1027">line 1027</a>
</li></ul></dd>
@@ -2557,7 +2698,7 @@
<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#line710">line 710</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line748">line 748</a>
</li></ul></dd>
@@ -2644,7 +2785,7 @@
<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#line354">line 354</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line381">line 381</a>
</li></ul></dd>
@@ -2761,7 +2902,7 @@
<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#line142">line 142</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line159">line 159</a>
</li></ul></dd>
@@ -2873,7 +3014,7 @@
<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#line1190">line 1190</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line1244">line 1244</a>
</li></ul></dd>
@@ -2990,7 +3131,7 @@
<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#line158">line 158</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line175">line 175</a>
</li></ul></dd>
@@ -3153,7 +3294,7 @@
<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#line232">line 232</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line249">line 249</a>
</li></ul></dd>
@@ -3288,7 +3429,7 @@
<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#line1166">line 1166</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line1210">line 1210</a>
</li></ul></dd>
@@ -3357,7 +3498,7 @@
<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#line298">line 298</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line324">line 324</a>
</li></ul></dd>
@@ -3398,13 +3539,13 @@
</div>
<nav>
<h2><a href="index.html">Index</a></h2><h3>Namespaces</h3><ul><li><a href="jsxc.html">jsxc</a></li><li><a href="jsxc.gui.html">gui</a></li><li><a href="jsxc.gui.dialog.html">dialog</a></li><li><a href="jsxc.gui.queryActions.html">queryActions</a></li><li><a href="jsxc.gui.roster.html">roster</a></li><li><a href="jsxc.gui.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.bookmarks.html">bookmarks</a></li><li><a href="jsxc.xmpp.carbons.html">carbons</a></li></ul><h3><a href="global.html">Global</a></h3>
<h2><a href="index.html">Index</a></h2><h3>Classes</h3><ul><li><a href="jsxc.Message.html">Message</a></li></ul><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.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.bookmarks.html">bookmarks</a></li><li><a href="jsxc.xmpp.carbons.html">carbons</a></li></ul><h3>Global</h3><ul><li>{boolean}</li><li>{integer}</li><li>{string}</li></ul>
</nav>
<br clear="both">
<footer>
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Tue Nov 17 2015 17:01:04 GMT+0100 (CET)
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Fri Mar 11 2016 17:32:12 GMT+0100 (CET)
</footer>
<script> prettyPrint(); </script>
+8 -8
Ver Arquivo
@@ -66,7 +66,7 @@
<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#line36">line 36</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line51">line 51</a>
</li></ul></dd>
@@ -141,7 +141,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line71">line 71</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line86">line 86</a>
</li></ul></dd>
@@ -210,7 +210,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line43">line 43</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line58">line 58</a>
</li></ul></dd>
@@ -279,7 +279,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line52">line 52</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line67">line 67</a>
</li></ul></dd>
@@ -348,7 +348,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line57">line 57</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line72">line 72</a>
</li></ul></dd>
@@ -417,7 +417,7 @@
<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#line66">line 66</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line81">line 81</a>
</li></ul></dd>
@@ -458,13 +458,13 @@
</div>
<nav>
<h2><a href="index.html">Index</a></h2><h3>Namespaces</h3><ul><li><a href="jsxc.html">jsxc</a></li><li><a href="jsxc.gui.html">gui</a></li><li><a href="jsxc.gui.dialog.html">dialog</a></li><li><a href="jsxc.gui.queryActions.html">queryActions</a></li><li><a href="jsxc.gui.roster.html">roster</a></li><li><a href="jsxc.gui.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.bookmarks.html">bookmarks</a></li><li><a href="jsxc.xmpp.carbons.html">carbons</a></li></ul><h3><a href="global.html">Global</a></h3>
<h2><a href="index.html">Index</a></h2><h3>Classes</h3><ul><li><a href="jsxc.Message.html">Message</a></li></ul><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.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.bookmarks.html">bookmarks</a></li><li><a href="jsxc.xmpp.carbons.html">carbons</a></li></ul><h3>Global</h3><ul><li>{boolean}</li><li>{integer}</li><li>{string}</li></ul>
</nav>
<br clear="both">
<footer>
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Tue Nov 17 2015 17:01:04 GMT+0100 (CET)
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Fri Mar 11 2016 17:32:12 GMT+0100 (CET)
</footer>
<script> prettyPrint(); </script>
+20 -20
Ver Arquivo
@@ -66,7 +66,7 @@
<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#line1373">line 1373</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line1461">line 1461</a>
</li></ul></dd>
@@ -134,7 +134,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line1384">line 1384</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line1472">line 1472</a>
</li></ul></dd>
@@ -188,7 +188,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line1381">line 1381</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line1469">line 1469</a>
</li></ul></dd>
@@ -324,7 +324,7 @@
<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#line1681">line 1681</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line1788">line 1788</a>
</li></ul></dd>
@@ -459,7 +459,7 @@
<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#line1503">line 1503</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line1587">line 1587</a>
</li></ul></dd>
@@ -528,7 +528,7 @@
<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#line1751">line 1751</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line1864">line 1864</a>
</li></ul></dd>
@@ -597,7 +597,7 @@
<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#line1392">line 1392</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line1480">line 1480</a>
</li></ul></dd>
@@ -756,7 +756,7 @@ alphabetical of the name
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line1568">line 1568</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line1672">line 1672</a>
</li></ul></dd>
@@ -843,7 +843,7 @@ alphabetical of the name
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line1736">line 1736</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line1849">line 1849</a>
</li></ul></dd>
@@ -960,7 +960,7 @@ alphabetical of the name
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line1620">line 1620</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line1724">line 1724</a>
</li></ul></dd>
@@ -1077,7 +1077,7 @@ alphabetical of the name
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line1611">line 1611</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line1715">line 1715</a>
</li></ul></dd>
@@ -1216,7 +1216,7 @@ alphabetical of the name
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line1641">line 1641</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line1745">line 1745</a>
</li></ul></dd>
@@ -1351,7 +1351,7 @@ alphabetical of the name
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line1601">line 1601</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line1705">line 1705</a>
</li></ul></dd>
@@ -1397,7 +1397,7 @@ alphabetical of the name
<dt>
<h4 class="name" id="toggle"><span class="type-signature">&lt;static> </span>toggle<span class="signature">(d)</span><span class="type-signature"></span></h4>
<h4 class="name" id="toggle"><span class="type-signature">&lt;static> </span>toggle<span class="signature">(state)</span><span class="type-signature"></span></h4>
</dt>
@@ -1439,13 +1439,13 @@ alphabetical of the name
<tr>
<td class="name"><code>d</code></td>
<td class="name"><code>state</code></td>
<td class="type">
<span class="param-type">Integer</span>
<span class="param-type">string</span>
@@ -1455,7 +1455,7 @@ alphabetical of the name
<td class="description last">Duration in ms</td>
<td class="description last">Toggle to state</td>
</tr>
@@ -1486,7 +1486,7 @@ alphabetical of the name
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line1709">line 1709</a>
<a href="jsxc.lib.gui.js.html">jsxc.lib.gui.js</a>, <a href="jsxc.lib.gui.js.html#line1816">line 1816</a>
</li></ul></dd>
@@ -1527,13 +1527,13 @@ alphabetical of the name
</div>
<nav>
<h2><a href="index.html">Index</a></h2><h3>Namespaces</h3><ul><li><a href="jsxc.html">jsxc</a></li><li><a href="jsxc.gui.html">gui</a></li><li><a href="jsxc.gui.dialog.html">dialog</a></li><li><a href="jsxc.gui.queryActions.html">queryActions</a></li><li><a href="jsxc.gui.roster.html">roster</a></li><li><a href="jsxc.gui.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.bookmarks.html">bookmarks</a></li><li><a href="jsxc.xmpp.carbons.html">carbons</a></li></ul><h3><a href="global.html">Global</a></h3>
<h2><a href="index.html">Index</a></h2><h3>Classes</h3><ul><li><a href="jsxc.Message.html">Message</a></li></ul><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.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.bookmarks.html">bookmarks</a></li><li><a href="jsxc.xmpp.carbons.html">carbons</a></li></ul><h3>Global</h3><ul><li>{boolean}</li><li>{integer}</li><li>{string}</li></ul>
</nav>
<br clear="both">
<footer>
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Tue Nov 17 2015 17:01:04 GMT+0100 (CET)
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Fri Mar 11 2016 17:32:12 GMT+0100 (CET)
</footer>
<script> prettyPrint(); </script>
+778 -155
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+206 -102
Ver Arquivo
@@ -87,6 +87,16 @@
<h3 class="subsection-title">Classes</h3>
<dl>
<dt><a href="jsxc.Message.html">Message</a></dt>
<dd></dd>
<dt><a href="jsxc.Message.html">Message</a></dt>
<dd></dd>
</dl>
<h3 class="subsection-title">Namespaces</h3>
@@ -322,7 +332,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line170">line 170</a>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line174">line 174</a>
</li></ul></dd>
@@ -502,14 +512,14 @@
<dt>
<h4 class="name" id="restore"><span class="type-signature">&lt;static> </span>restore<span class="type-signature"></span></h4>
<h4 class="name" id="reconnect"><span class="type-signature">&lt;static> </span>reconnect<span class="type-signature"></span></h4>
</dt>
<dd>
<div class="description">
True if last activity was up to 10 min ago
True if jid, sid and rid was used to connect
</div>
@@ -1210,75 +1220,6 @@ workaround) 0: conform, 1: not conform, 2: not shure
<dl>
<dt>
<h4 class="name" id="_onMaster"><span class="type-signature">&lt;static> </span>_onMaster<span class="signature">()</span><span class="type-signature"></span></h4>
</dt>
<dd>
<div class="description">
Second half of the onMaster routine
</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#line503">line 503</a>
</li></ul></dd>
</dl>
</dd>
<dt>
<h4 class="name" id="_prepareLogin"><span class="type-signature">&lt;private, static> </span>_prepareLogin<span class="signature">(username, password, cb, <span class="optional">loadedSettings</span>)</span><span class="type-signature"></span></h4>
@@ -1474,7 +1415,7 @@ workaround) 0: conform, 1: not conform, 2: not shure
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line397">line 397</a>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line455">line 455</a>
</li></ul></dd>
@@ -1543,7 +1484,7 @@ workaround) 0: conform, 1: not conform, 2: not shure
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line548">line 548</a>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line558">line 558</a>
</li></ul></dd>
@@ -1706,7 +1647,7 @@ workaround) 0: conform, 1: not conform, 2: not shure
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line117">line 117</a>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line121">line 121</a>
</li></ul></dd>
@@ -1823,7 +1764,7 @@ workaround) 0: conform, 1: not conform, 2: not shure
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line606">line 606</a>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line640">line 640</a>
</li></ul></dd>
@@ -1981,7 +1922,7 @@ workaround) 0: conform, 1: not conform, 2: not shure
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line165">line 165</a>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line169">line 169</a>
</li></ul></dd>
@@ -2050,7 +1991,7 @@ workaround) 0: conform, 1: not conform, 2: not shure
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line709">line 709</a>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line743">line 743</a>
</li></ul></dd>
@@ -2190,7 +2131,7 @@ workaround) 0: conform, 1: not conform, 2: not shure
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line804">line 804</a>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line838">line 838</a>
</li></ul></dd>
@@ -2317,7 +2258,7 @@ workaround) 0: conform, 1: not conform, 2: not shure
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line89">line 89</a>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line91">line 91</a>
</li></ul></dd>
@@ -2396,7 +2337,7 @@ workaround) 0: conform, 1: not conform, 2: not shure
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line780">line 780</a>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line814">line 814</a>
</li></ul></dd>
@@ -2535,7 +2476,7 @@ workaround) 0: conform, 1: not conform, 2: not shure
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line824">line 824</a>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line858">line 858</a>
</li></ul></dd>
@@ -2674,7 +2615,7 @@ workaround) 0: conform, 1: not conform, 2: not shure
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line178">line 178</a>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line182">line 182</a>
</li></ul></dd>
@@ -2743,7 +2684,7 @@ workaround) 0: conform, 1: not conform, 2: not shure
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line752">line 752</a>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line786">line 786</a>
</li></ul></dd>
@@ -2834,7 +2775,7 @@ workaround) 0: conform, 1: not conform, 2: not shure
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line348">line 348</a>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line406">line 406</a>
</li></ul></dd>
@@ -2968,7 +2909,7 @@ workaround) 0: conform, 1: not conform, 2: not shure
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line631">line 631</a>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line665">line 665</a>
</li></ul></dd>
@@ -3095,7 +3036,7 @@ workaround) 0: conform, 1: not conform, 2: not shure
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line616">line 616</a>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line650">line 650</a>
</li></ul></dd>
@@ -3186,7 +3127,7 @@ workaround) 0: conform, 1: not conform, 2: not shure
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line565">line 565</a>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line603">line 603</a>
</li></ul></dd>
@@ -3256,7 +3197,7 @@ normal signal
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line577">line 577</a>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line611">line 611</a>
</li></ul></dd>
@@ -3325,7 +3266,7 @@ normal signal
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line477">line 477</a>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line538">line 538</a>
</li></ul></dd>
@@ -3394,7 +3335,7 @@ normal signal
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line462">line 462</a>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line520">line 520</a>
</li></ul></dd>
@@ -3557,7 +3498,7 @@ normal signal
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line360">line 360</a>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line418">line 418</a>
</li></ul></dd>
@@ -3674,7 +3615,7 @@ normal signal
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line596">line 596</a>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line630">line 630</a>
</li></ul></dd>
@@ -3808,7 +3749,7 @@ normal signal
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line721">line 721</a>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line755">line 755</a>
</li></ul></dd>
@@ -3887,7 +3828,7 @@ normal signal
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line638">line 638</a>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line672">line 672</a>
</li></ul></dd>
@@ -3956,7 +3897,170 @@ normal signal
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line660">line 660</a>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line694">line 694</a>
</li></ul></dd>
</dl>
</dd>
<dt>
<h4 class="name" id="start"><span class="type-signature">&lt;static> </span>start<span class="signature">(jid, sid, rid)</span><span class="type-signature"></span></h4>
</dt>
<dd>
<div class="description">
Attach to new chat session with jid, sid and rid.
</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>jid</code></td>
<td class="type">
<span class="param-type">string</span>
</td>
<td class="description last">Jabber Id</td>
</tr>
<tr>
<td class="name"><code>sid</code></td>
<td class="type">
<span class="param-type">string</span>
</td>
<td class="description last">Session Id</td>
</tr>
<tr>
<td class="name"><code>rid</code></td>
<td class="type">
<span class="param-type">string</span>
</td>
<td class="description last">Request Id</td>
</tr>
</tbody>
</table>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line375">line 375</a>
</li></ul></dd>
@@ -4025,7 +4129,7 @@ normal signal
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line558">line 558</a>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line596">line 596</a>
</li></ul></dd>
@@ -4094,7 +4198,7 @@ normal signal
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line690">line 690</a>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line724">line 724</a>
</li></ul></dd>
@@ -4234,7 +4338,7 @@ normal signal
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line732">line 732</a>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line766">line 766</a>
</li></ul></dd>
@@ -4396,7 +4500,7 @@ normal signal
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line154">line 154</a>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line158">line 158</a>
</li></ul></dd>
@@ -4437,13 +4541,13 @@ normal signal
</div>
<nav>
<h2><a href="index.html">Index</a></h2><h3>Namespaces</h3><ul><li><a href="jsxc.html">jsxc</a></li><li><a href="jsxc.gui.html">gui</a></li><li><a href="jsxc.gui.dialog.html">dialog</a></li><li><a href="jsxc.gui.queryActions.html">queryActions</a></li><li><a href="jsxc.gui.roster.html">roster</a></li><li><a href="jsxc.gui.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.bookmarks.html">bookmarks</a></li><li><a href="jsxc.xmpp.carbons.html">carbons</a></li></ul><h3><a href="global.html">Global</a></h3>
<h2><a href="index.html">Index</a></h2><h3>Classes</h3><ul><li><a href="jsxc.Message.html">Message</a></li></ul><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.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.bookmarks.html">bookmarks</a></li><li><a href="jsxc.xmpp.carbons.html">carbons</a></li></ul><h3>Global</h3><ul><li>{boolean}</li><li>{integer}</li><li>{string}</li></ul>
</nav>
<br clear="both">
<footer>
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Tue Nov 17 2015 17:01:04 GMT+0100 (CET)
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Fri Mar 11 2016 17:32:12 GMT+0100 (CET)
</footer>
<script> prettyPrint(); </script>
+311
Ver Arquivo
@@ -0,0 +1,311 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>JSDoc: Source: jsxc.lib.Message.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.Message.js</h1>
<section>
<article>
<pre class="prettyprint source"><code>/**
* Load message object with given uid.
*
* @class Message
* @memberOf jsxc
* @param {string} uid Unified identifier from message object
*/
/**
* Create new message object.
*
* @class Message
* @memberOf jsxc
* @param {object} args New message properties
* @param {string} args.bid
* @param {direction} args.direction
* @param {string} args.msg
* @param {boolean} args.encrypted
* @param {boolean} args.forwarded
* @param {boolean} args.sender
* @param {integer} args.stamp
* @param {object} args.attachment Attached data
* @param {string} args.attachment.name File name
* @param {string} args.attachment.size File size
* @param {string} args.attachment.type File type
* @param {string} args.attachment.data File data
*/
jsxc.Message = function() {
/** @member {string} */
this._uid = null;
/** @member {boolean} */
this._received = false;
/** @member {boolean} */
this.encrypted = false;
/** @member {boolean} */
this.forwarded = false;
/** @member {integer} */
this.stamp = new Date().getTime();
if (typeof arguments[0] === 'string' && arguments[0].length > 0 && arguments.length === 1) {
this._uid = arguments[0];
this.load(this._uid);
} else if (typeof arguments[0] === 'object' && arguments[0] !== null) {
$.extend(this, arguments[0]);
}
if (!this._uid) {
this._uid = new Date().getTime() + ':msg';
}
};
/**
* Load message properties.
*
* @memberof jsxc.Message
* @param {string} uid
*/
jsxc.Message.prototype.load = function(uid) {
var data = jsxc.storage.getUserItem('msg', uid);
if (!data) {
jsxc.debug('Could not load message with uid ' + uid);
}
$.extend(this, data);
};
/**
* Save message properties and create thumbnail.
*
* @memberOf jsxc.Message
* @return {Message} this object
*/
jsxc.Message.prototype.save = function() {
var history;
if (this.bid) {
history = jsxc.storage.getUserItem('history', this.bid) || [];
if (history.indexOf(this._uid) &lt; 0) {
if (history.length > jsxc.options.get('numberOfMsg')) {
jsxc.Message.delete(history.pop());
}
} else {
history = null;
}
}
if (Image && this.attachment && this.attachment.type.match(/^image\//i) && this.attachment.data) {
var sHeight, sWidth, sx, sy;
var dHeight = 100,
dWidth = 100;
var canvas = $("&lt;canvas>").get(0);
canvas.width = dWidth;
canvas.height = dHeight;
var ctx = canvas.getContext("2d");
var img = new Image();
img.src = this.attachment.data;
if (img.height > img.width) {
sHeight = img.width;
sWidth = img.width;
sx = 0;
sy = (img.height - img.width) / 2;
} else {
sHeight = img.height;
sWidth = img.height;
sx = (img.width - img.height) / 2;
sy = 0;
}
ctx.drawImage(img, sx, sy, sWidth, sHeight, 0, 0, dWidth, dHeight);
this.attachment.thumbnail = canvas.toDataURL();
if (this.direction === 'out') {
// save storage
this.attachment.data = null;
}
}
var data;
if (this.attachment && this.attachment.size > jsxc.options.maxStorableSize && this.direction === 'in') {
jsxc.debug('Attachment to large to store');
data = this.attachment.data;
this.attachment.data = null;
this.attachment.persistent = false;
//@TODO inform user
}
jsxc.storage.setUserItem('msg', this._uid, this);
if (history) {
history.unshift(this._uid);
jsxc.storage.setUserItem('history', this.bid, history);
}
if (data && this.attachment) {
this.attachment.data = data;
}
return this;
};
/**
* Remove object from storage.
*
* @memberOf jsxc.Message
*/
jsxc.Message.prototype.delete = function() {
jsxc.Message.delete(this._uid);
};
/**
* Returns object as jquery object.
*
* @memberOf jsxc.Message
* @return {jQuery} Representation in DOM
*/
jsxc.Message.prototype.getDOM = function() {
return jsxc.Message.getDOM(this._uid);
};
/**
* Mark message as received.
*
* @memberOf jsxc.Message
*/
jsxc.Message.prototype.received = function() {
this._received = true;
this.save();
this.getDOM().addClass('jsxc_received');
};
/**
* Returns true if the message was already received.
*
* @memberOf jsxc.Message
* @return {boolean} true means received
*/
jsxc.Message.prototype.isReceived = function() {
return this._received;
};
/**
* Remove message with uid.
*
* @memberOf jsxc.Message
* @static
* @param {string} uid message uid
*/
jsxc.Message.delete = function(uid) {
var data = jsxc.storage.getUserItem('msg', uid);
if (data) {
jsxc.storage.removeUserItem('msg', uid);
if (data.bid) {
var history = jsxc.storage.getUserItem('history', data.bid) || [];
history = $.grep(history, function(el) {
return el !== uid;
});
jsxc.storage.setUserItem('history', data.bid);
}
}
};
/**
* Returns message object as jquery object.
*
* @memberOf jsxc.Message
* @static
* @param {string} uid message uid
* @return {jQuery} jQuery representation in DOM
*/
jsxc.Message.getDOM = function(uid) {
return $('#' + uid.replace(/:/g, '-'));
};
/**
* Message direction can be incoming, outgoing or system.
*
* @typedef {(jsxc.Message.IN|jsxc.Message.OUT|jsxc.Message.SYS)} direction
*/
/**
* @constant
* @type {string}
* @default
*/
jsxc.Message.IN = 'in';
/**
* @constant
* @type {string}
* @default
*/
jsxc.Message.OUT = 'out';
/**
* @constant
* @type {string}
* @default
*/
jsxc.Message.SYS = 'sys';
</code></pre>
</article>
</section>
</div>
<nav>
<h2><a href="index.html">Index</a></h2><h3>Classes</h3><ul><li><a href="jsxc.Message.html">Message</a></li></ul><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.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.bookmarks.html">bookmarks</a></li><li><a href="jsxc.xmpp.carbons.html">carbons</a></li></ul><h3>Global</h3><ul><li>{boolean}</li><li>{integer}</li><li>{string}</li></ul>
</nav>
<br clear="both">
<footer>
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Fri Mar 11 2016 17:32:12 GMT+0100 (CET)
</footer>
<script> prettyPrint(); </script>
<script src="scripts/linenumber.js"> </script>
</body>
</html>
+805 -221
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+128 -90
Ver Arquivo
@@ -55,8 +55,8 @@ jsxc = {
/** Interval for keep-alive */
keepalive: null,
/** True if last activity was up to 10 min ago */
restore: false,
/** True if jid, sid and rid was used to connect */
reconnect: false,
/** True if restore is complete */
restoreCompleted: false,
@@ -98,12 +98,14 @@ jsxc = {
},
REGEX: {
JID: new RegExp('\\b[^"&\'\\/:&lt;>@\\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)
URL: new RegExp(/(https?:\/\/|www\.)[^\s&lt;>'"]+/gi)
},
NS: {
CARBONS: 'urn:xmpp:carbons:2',
FORWARD: 'urn:xmpp:forward:0'
}
},
HIDDEN: 'hidden',
SHOWN: 'shown'
},
/**
@@ -115,20 +117,22 @@ jsxc = {
*/
getFormattedTime: function(unixtime) {
var msgDate = new Date(parseInt(unixtime));
var date = ('0' + msgDate.getDate()).slice(-2);
var day = ('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;
var dateNow = new Date();
var date = (typeof msgDate.toLocaleDateString === 'function') ? msgDate.toLocaleDateString() : day + '.' + month + '.' + year;
var time = (typeof msgDate.toLocaleTimeString === 'function') ? msgDate.toLocaleTimeString() : 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 date + ' ' + time;
}
return time;
},
@@ -164,10 +168,10 @@ jsxc = {
}
}
jsxc.log = jsxc.log + msg + ': ' + d + '\n';
jsxc.log = jsxc.log + '$ ' + msg + ': ' + d + '\n';
} else {
console.log(msg);
jsxc.log = jsxc.log + msg + '\n';
jsxc.log = jsxc.log + '$ ' + msg + '\n';
}
},
@@ -204,6 +208,11 @@ jsxc = {
*/
init: function(options) {
if (options && options.loginForm && typeof options.loginForm.attachIfFound === 'boolean' && !options.loginForm.ifFound) {
// translate deprated option attachIfFound found to new ifFound
options.loginForm.ifFound = (options.loginForm.attachIfFound) ? 'attach' : 'pause';
}
if (options) {
// override default options
$.extend(true, jsxc.options, options);
@@ -222,9 +231,13 @@ jsxc = {
* @returns default or saved option value
*/
jsxc.options.get = function(key) {
var local = jsxc.storage.getUserItem('options') || {};
if (jsxc.bid) {
var local = jsxc.storage.getUserItem('options') || {};
return local[key] || jsxc.options[key];
return local[key] || jsxc.options[key];
}
return jsxc.options[key];
};
/**
@@ -260,6 +273,7 @@ jsxc = {
// use localStorage and set expiration to a day
useLocalStorage: true,
localStorageExpirationTime: 60 * 60 * 24 * 1000,
debug: jsxc.storage.getItem('debug') === true
});
if (jsxc.storage.getItem('debug') === true) {
@@ -269,19 +283,21 @@ jsxc = {
// 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 &lt; jsxc.options.loginTimeout) {
jsxc.restore = true;
}
$(document).on('connectionReady.jsxc', function() {
$(document).on('attached.jsxc', function() {
// Looking for logout element
if (jsxc.options.logoutElement !== null && jsxc.options.logoutElement.length > 0) {
var logout = function() {
var logout = function(ev) {
if (!jsxc.xmpp.conn || !jsxc.xmpp.conn.authenticated) {
return;
}
ev.stopPropagation();
ev.preventDefault();
jsxc.options.logoutElement = $(this);
jsxc.triggeredFromLogout = true;
return jsxc.xmpp.logout();
jsxc.xmpp.logout();
};
jsxc.options.logoutElement.off('click', null, logout).one('click', logout);
@@ -289,7 +305,7 @@ jsxc = {
});
// Check if we have to establish a new connection
if (!jsxc.storage.getItem('rid') || !jsxc.storage.getItem('sid') || !jsxc.restore) {
if (!(jsxc.storage.getItem('rid') && jsxc.storage.getItem('sid') && jsxc.storage.getItem('jid')) || (jsxc.options.loginForm && jsxc.options.loginForm.ifFound === 'force' && jsxc.isLoginForm())) {
// clean up rid and sid
jsxc.storage.removeItem('rid');
@@ -339,7 +355,7 @@ jsxc = {
if (enabled) {
jsxc.options.loginForm.triggered = true;
jsxc.xmpp.login();
jsxc.xmpp.login(jsxc.options.xmpp.jid, jsxc.options.xmpp.password);
}
} else {
jsxc.submitLoginForm();
@@ -350,15 +366,11 @@ jsxc = {
return false;
});
} else if (!jsxc.isLoginForm() || (jsxc.options.loginForm && jsxc.options.loginForm.attachIfFound)) {
} else if (!jsxc.isLoginForm() || (jsxc.options.loginForm && jsxc.options.loginForm.ifFound === 'attach')) {
// Restore old connection
jsxc.bid = jsxc.jidToBid(jsxc.storage.getItem('jid'));
jsxc.gui.init();
if (typeof(jsxc.storage.getItem('alive')) === 'undefined' || !jsxc.restore) {
if (typeof(jsxc.storage.getItem('alive')) === 'undefined') {
jsxc.onMaster();
} else {
jsxc.checkMaster();
@@ -366,6 +378,52 @@ jsxc = {
}
},
/**
* Attach to previous session if jid, sid and rid are available in storage
* (default behaviour also for {@link jsxc.init}). Otherwise try to start new session
* with given jid and password in jsxc.options.xmpp.
*
* @memberOf jsxc
*/
/**
* Start new chat session with given jid and password.
*
* @memberOf jsxc
* @param {string} jid Jabber Id
*/
/**
* Attach to new chat session with jid, sid and rid.
*
* @memberOf jsxc
* @param {string} jid Jabber Id
* @param {string} sid Session Id
* @param {string} rid Request Id
*/
start: function() {
if (jsxc.role_allocation && !jsxc.master) {
jsxc.debug('There is an other master tab');
return false;
}
if (jsxc.xmpp.conn && jsxc.xmpp.connected) {
jsxc.debug('We are already connected');
return false;
}
if (arguments.length === 3) {
$(document).one('attached.jsxc', function() {
// save rid after first attachment
jsxc.xmpp.onRidChange(jsxc.xmpp.conn._proto.rid);
jsxc.onMaster();
});
}
jsxc.xmpp.login.apply(this, arguments);
},
/**
* Returns true if login form is found.
*
@@ -490,6 +548,9 @@ jsxc = {
jsxc.debug('I am the slave.');
jsxc.role_allocation = true;
jsxc.bid = jsxc.jidToBid(jsxc.storage.getItem('jid'));
jsxc.gui.init();
jsxc.restoreRoster();
jsxc.restoreWindows();
@@ -509,63 +570,12 @@ jsxc = {
// 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();
},
@@ -579,6 +589,34 @@ jsxc = {
jsxc.storage.ink('alive');
},
masterActions: function() {
if (!jsxc.xmpp.conn || !jsxc.xmpp.conn.authenticated) {
return;
}
//prepare notifications
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;
}
if (jsxc.options.get('otr').enable) {
// create or load DSA key
jsxc.otr.createDSA();
}
jsxc.gui.updateAvatar($('#jsxc_roster > .jsxc_bottom'), jsxc.jidToBid(jsxc.storage.getItem('jid')), 'own');
},
/**
* Start sending keep-alive signal
*/
@@ -591,10 +629,6 @@ jsxc = {
*/
keepAlive: function() {
jsxc.storage.ink('alive');
if (jsxc.role_allocation) {
jsxc.storage.setItem('lastActivity', (new Date()).getTime());
}
},
/**
@@ -692,22 +726,22 @@ jsxc = {
}
$.each(windows, function(index, bid) {
var window = jsxc.storage.getUserItem('window', bid);
var win = jsxc.storage.getUserItem('window', bid);
if (!window) {
if (!win) {
jsxc.debug('Associated window-element is missing: ' + bid);
return true;
}
jsxc.gui.window.init(bid);
if (!window.minimize) {
if (!win.minimize) {
jsxc.gui.window.show(bid);
} else {
jsxc.gui.window.hide(bid);
}
jsxc.gui.window.setText(bid, window.text);
jsxc.gui.window.setText(bid, win.text);
});
},
@@ -862,6 +896,10 @@ jsxc = {
}
return hash;
},
isExtraSmallDevice: function() {
return $(window).width() &lt; 500;
}
};
</code></pre>
@@ -874,13 +912,13 @@ jsxc = {
</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.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.bookmarks.html">bookmarks</a></li><li><a href="jsxc.xmpp.carbons.html">carbons</a></li></ul><h3><a href="global.html">Global</a></h3>
<h2><a href="index.html">Index</a></h2><h3>Classes</h3><ul><li><a href="jsxc.Message.html">Message</a></li></ul><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.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.bookmarks.html">bookmarks</a></li><li><a href="jsxc.xmpp.carbons.html">carbons</a></li></ul><h3>Global</h3><ul><li>{boolean}</li><li>{integer}</li><li>{string}</li></ul>
</nav>
<br clear="both">
<footer>
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Tue Nov 17 2015 17:01:04 GMT+0100 (CET)
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Fri Mar 11 2016 17:32:12 GMT+0100 (CET)
</footer>
<script> prettyPrint(); </script>
+184 -78
Ver Arquivo
@@ -130,11 +130,11 @@ jsxc.muc = {
* @memberOf jsxc.muc
*/
initMenu: function() {
var li = $('&lt;li>').attr('class', 'jsxc_joinChat').text($.t('Join_chat'));
var li = $('&lt;li>').attr('class', 'jsxc_joinChat jsxc_groupcontacticon').text($.t('Join_chat'));
li.click(jsxc.muc.showJoinChat);
$('#jsxc_menu ul').append(li);
$('#jsxc_menu ul .jsxc_about').before(li);
},
/**
@@ -307,6 +307,10 @@ jsxc.muc = {
var bookmark = $("#jsxc_bookmark").prop("checked");
var autojoin = $('#jsxc_autojoin').prop('checked');
// clean up
jsxc.gui.window.clear(room);
jsxc.storage.setUserItem('member', room, {});
self.join(room, nickname, password, roomName, subject, bookmark, autojoin);
return false;
@@ -551,7 +555,11 @@ jsxc.muc = {
var roomdata = jsxc.storage.getUserItem('buddy', room);
jsxc.storage.updateUserItem('buddy', room, 'state', self.CONST.ROOMSTATE.AWAIT_DESTRUCTION);
jsxc.gui.window.postMessage(room, 'sys', $.t('This_room_will_be_closed'));
jsxc.gui.window.postMessage({
bid: room,
direction: jsxc.Message.SYS,
msg: $.t('This_room_will_be_closed')
});
var iq = $iq({
to: room,
@@ -607,17 +615,18 @@ jsxc.muc = {
*/
initWindow: function(event, win) {
var self = jsxc.muc;
var data = win.data();
var bid = jsxc.jidToBid(data.jid);
var roomdata = jsxc.storage.getUserItem('buddy', bid);
if (!jsxc.xmpp.conn) {
$(document).one('connectionReady.jsxc', function() {
$(document).one('attached.jsxc', function() {
self.initWindow(null, win);
});
return;
}
var data = win.data();
var bid = jsxc.jidToBid(data.jid);
var roomdata = jsxc.storage.getUserItem('buddy', bid);
if (roomdata.type !== 'groupchat') {
return;
}
@@ -628,7 +637,7 @@ jsxc.muc = {
var ownNickname = own[bid];
var mlIcon = $('&lt;div class="jsxc_members">&lt;/div>');
win.find('.jsxc_tools > .jsxc_transfer').after(mlIcon);
win.find('.jsxc_tools > .jsxc_settings').after(mlIcon);
var ml = $('&lt;div class="jsxc_memberlist">&lt;ul>&lt;/ul>&lt;/div>');
win.find('.jsxc_fade').prepend(ml);
@@ -697,13 +706,7 @@ jsxc.muc = {
jsxc.muc.scrollMemberListBy(bid, 0);
});
// update emoticon button
setTimeout(function() {
var top = win.find('.jsxc_emoticons').position().top + win.find('.slimScrollDiv').position().top;
win.find('.jsxc_emoticons').css('top', top + 'px');
}, 400);
var destroy = $('&lt;li>');
var destroy = $('&lt;a>');
destroy.text($.t('Destroy'));
destroy.addClass('jsxc_destroy');
destroy.hide();
@@ -711,7 +714,7 @@ jsxc.muc = {
self.destroy(bid);
});
win.find('.jsxc_settings ul').append(destroy);
win.find('.jsxc_settings ul').append($('&lt;li>').append(destroy));
if (roomdata.state > self.CONST.ROOMSTATE.INIT) {
var member = jsxc.storage.getUserItem('member', bid) || {};
@@ -725,14 +728,14 @@ jsxc.muc = {
});
}
var leave = $('&lt;li>');
var leave = $('&lt;a>');
leave.text($.t('Leave'));
leave.addClass('jsxc_leave');
leave.click(function() {
self.leave(bid);
});
win.find('.jsxc_settings ul').append(leave);
win.find('.jsxc_settings ul').append($('&lt;li>').append(leave));
},
/**
@@ -774,10 +777,6 @@ jsxc.muc = {
jsxc.storage.setUserItem('roomNames', jsxc.xmpp.conn.muc.roomNames);
// clean up
jsxc.storage.removeUserItem('chat', room);
member = {};
if (jsxc.gui.roster.getItem(room).length === 0) {
var bl = jsxc.storage.getUserItem('buddylist');
bl.push(room);
@@ -800,7 +799,11 @@ jsxc.muc = {
// room has been destroyed
member = {};
jsxc.gui.window.postMessage(room, 'sys', $.t('This_room_has_been_closed'));
jsxc.gui.window.postMessage({
bid: room,
direction: jsxc.Message.SYS,
msg: $.t('This_room_has_been_closed')
});
self.close(room);
} else {
@@ -818,27 +821,39 @@ jsxc.muc = {
// prevent to display enter message
member[newNickname] = {};
jsxc.gui.window.postMessage(room, 'sys', $.t('is_now_known_as', {
oldNickname: nickname,
newNickname: newNickname,
escapeInterpolation: true
}));
jsxc.gui.window.postMessage({
bid: room,
direction: jsxc.Message.SYS,
msg: $.t('is_now_known_as', {
oldNickname: nickname,
newNickname: newNickname,
escapeInterpolation: true
})
});
} else if (codes.length === 0 || (codes.length === 1 && codes.indexOf('110') > -1)) {
// normal user exit
jsxc.gui.window.postMessage(room, 'sys', $.t('left_the_building', {
nickname: nickname,
escapeInterpolation: true
}));
jsxc.gui.window.postMessage({
bid: room,
direction: jsxc.Message.SYS,
msg: $.t('left_the_building', {
nickname: nickname,
escapeInterpolation: true
})
});
}
}
} else {
// new member joined
if (!member[nickname] && own[room]) {
jsxc.gui.window.postMessage(room, 'sys', $.t('entered_the_room', {
nickname: nickname,
escapeInterpolation: true
}));
jsxc.gui.window.postMessage({
bid: room,
direction: jsxc.Message.SYS,
msg: $.t('entered_the_room', {
nickname: nickname,
escapeInterpolation: true
})
});
}
member[nickname] = {
@@ -923,19 +938,35 @@ jsxc.muc = {
},
/** Inform occupants that room logging is now enabled */
170: function(room) {
jsxc.gui.window.postMessage(room, 'sys', $.t('Room_logging_is_enabled'));
jsxc.gui.window.postMessage({
bid: room,
direction: jsxc.Message.SYS,
msg: $.t('Room_logging_is_enabled')
});
},
/** Inform occupants that room logging is now disabled */
171: function(room) {
jsxc.gui.window.postMessage(room, 'sys', $.t('Room_logging_is_disabled'));
jsxc.gui.window.postMessage({
bid: room,
direction: jsxc.Message.SYS,
msg: $.t('Room_logging_is_disabled')
});
},
/** Inform occupants that the room is now non-anonymous */
172: function(room) {
jsxc.gui.window.postMessage(room, 'sys', $.t('Room_is_now_non-anoymous'));
jsxc.gui.window.postMessage({
bid: room,
direction: jsxc.Message.SYS,
msg: $.t('Room_is_now_non-anoymous')
});
},
/** Inform occupants that the room is now semi-anonymous */
173: function(room) {
jsxc.gui.window.postMessage(room, 'sys', $.t('Room_is_now_semi-anonymous'));
jsxc.gui.window.postMessage({
bid: room,
direction: jsxc.Message.SYS,
msg: $.t('Room_is_now_semi-anonymous')
});
},
/** Inform user that a new room has been created */
201: function(room) {
@@ -981,14 +1012,22 @@ jsxc.muc = {
if (own[room] === nickname) {
jsxc.muc.close(room);
jsxc.gui.window.postMessage(room, 'sys', $.t('muc_removed_banned'));
jsxc.gui.window.postMessage({
bid: room,
direction: jsxc.Message.SYS,
msg: $.t('muc_removed_banned')
});
jsxc.muc.postReason(room, xdata);
} else {
jsxc.gui.window.postMessage(room, 'sys', $.t('muc_removed_info_banned', {
nickname: nickname,
escapeInterpolation: true
}));
jsxc.gui.window.postMessage({
bid: room,
direction: jsxc.Message.SYS,
msg: $.t('muc_removed_info_banned', {
nickname: nickname,
escapeInterpolation: true
})
});
}
},
/** Inform user that he or she has been kicked */
@@ -997,14 +1036,22 @@ jsxc.muc = {
if (own[room] === nickname) {
jsxc.muc.close(room);
jsxc.gui.window.postMessage(room, 'sys', $.t('muc_removed_kicked'));
jsxc.gui.window.postMessage({
bid: room,
direction: jsxc.Message.SYS,
msg: $.t('muc_removed_kicked')
});
jsxc.muc.postReason(room, xdata);
} else {
jsxc.gui.window.postMessage(room, 'sys', $.t('muc_removed_info_kicked', {
nickname: nickname,
escapeInterpolation: true
}));
jsxc.gui.window.postMessage({
bid: room,
direction: jsxc.Message.SYS,
msg: $.t('muc_removed_info_kicked', {
nickname: nickname,
escapeInterpolation: true
})
});
}
},
/** Inform user that he or she is beeing removed from the room because of an affiliation change */
@@ -1013,12 +1060,21 @@ jsxc.muc = {
if (own[room] === nickname) {
jsxc.muc.close(room);
jsxc.gui.window.postMessage(room, 'sys', $.t('muc_removed_affiliation'));
jsxc.gui.window.postMessage({
bid: room,
direction: jsxc.Message.SYS,
msg: $.t('muc_removed_affiliation')
});
} else {
jsxc.gui.window.postMessage(room, 'sys', $.t('muc_removed_info_affiliation', {
nickname: nickname,
escapeInterpolation: true
}));
jsxc.gui.window.postMessage({
bid: room,
direction: jsxc.Message.SYS,
msg: $.t('muc_removed_info_affiliation', {
nickname: nickname,
escapeInterpolation: true
})
});
}
},
/**
@@ -1030,12 +1086,20 @@ jsxc.muc = {
if (own[room] === nickname) {
jsxc.muc.close(room);
jsxc.gui.window.postMessage(room, 'sys', $.t('muc_removed_membersonly'));
jsxc.gui.window.postMessage({
bid: room,
direction: jsxc.Message.SYS,
msg: $.t('muc_removed_membersonly')
});
} else {
jsxc.gui.window.postMessage(room, 'sys', $.t('muc_removed_info_membersonly', {
nickname: nickname,
escapeInterpolation: true
}));
jsxc.gui.window.postMessage({
bid: room,
direction: jsxc.Message.SYS,
msg: $.t('muc_removed_info_membersonly', {
nickname: nickname,
escapeInterpolation: true
})
});
}
},
/**
@@ -1044,7 +1108,11 @@ jsxc.muc = {
*/
332: function(room) {
jsxc.muc.close(room);
jsxc.gui.window.postMessage(room, 'sys', $.t('muc_removed_shutdown'));
jsxc.gui.window.postMessage({
bid: room,
direction: jsxc.Message.SYS,
msg: $.t('muc_removed_shutdown')
});
}
},
@@ -1066,9 +1134,18 @@ jsxc.muc = {
reason = $.t('Reason') + ': ' + reason;
if (typeof actor.name === 'string' || typeof actor.jid === 'string') {
jsxc.gui.window.postMessage(room, 'in', reason, false, false, null, actor);
jsxc.gui.window.postMessage({
bid: room,
direction: jsxc.Message.IN,
msg: reason,
sender: actor
});
} else {
jsxc.gui.window.postMessage(room, 'sys', reason);
jsxc.gui.window.postMessage({
bid: room,
direction: jsxc.Message.SYS,
msg: reason
});
}
}
},
@@ -1188,7 +1265,7 @@ jsxc.muc = {
onGroupchatMessage: function(message) {
var id = $(message).attr('id');
if (jsxc.el_exists($('#' + id))) {
if (id && jsxc.el_exists(jsxc.Message.getDOM(id))) {
// ignore own incoming messages
return true;
}
@@ -1212,7 +1289,15 @@ jsxc.muc = {
sender.jid = member[nickname].jid;
}
jsxc.gui.window.postMessage(room, 'in', body, false, false, stamp, sender);
jsxc.gui.window.init(room);
jsxc.gui.window.postMessage({
bid: room,
direction: jsxc.Message.IN,
msg: body,
stamp: stamp,
sender: sender
});
}
var subject = $(message).find('subject');
@@ -1224,10 +1309,14 @@ jsxc.muc = {
jsxc.storage.setUserItem('buddy', room, roomdata);
jsxc.gui.window.postMessage(room, 'sys', $.t('changed_subject_to', {
nickname: nickname,
subject: subject.text()
}));
jsxc.gui.window.postMessage({
bid: room,
direction: jsxc.Message.SYS,
msg: $.t('changed_subject_to', {
nickname: nickname,
subject: subject.text()
})
});
}
return true;
@@ -1248,13 +1337,29 @@ jsxc.muc = {
}
if ($(message).find('item-not-found').length > 0) {
jsxc.gui.window.postMessage(room, 'sys', $.t('message_not_send_item-not-found'));
jsxc.gui.window.postMessage({
bid: room,
direction: jsxc.Message.SYS,
msg: $.t('message_not_send_item-not-found')
});
} else if ($(message).find('forbidden').length > 0) {
jsxc.gui.window.postMessage(room, 'sys', $.t('message_not_send_forbidden'));
jsxc.gui.window.postMessage({
bid: room,
direction: jsxc.Message.SYS,
msg: $.t('message_not_send_forbidden')
});
} else if ($(message).find('not-acceptable').length > 0) {
jsxc.gui.window.postMessage(room, 'sys', $.t('message_not_send_not-acceptable'));
jsxc.gui.window.postMessage({
bid: room,
direction: jsxc.Message.SYS,
msg: $.t('message_not_send_not-acceptable')
});
} else {
jsxc.gui.window.postMessage(room, 'sys', $.t('message_not_send'));
jsxc.gui.window.postMessage({
bid: room,
direction: jsxc.Message.SYS,
msg: $.t('message_not_send')
});
}
jsxc.debug('[muc] error message for ' + room, $(message).find('error')[0]);
@@ -1279,8 +1384,9 @@ jsxc.muc = {
return;
}
var bo = $('&lt;div>');
bo.text('+');
var bo = $('&lt;a>');
$('&lt;span>').addClass('jsxc_icon jsxc_bookmarkicon').appendTo(bo);
$('&lt;span>').text($.t('Bookmark')).appendTo(bo);
bo.addClass('jsxc_bookmarkOptions');
bo.click(function(ev) {
ev.preventDefault();
@@ -1290,7 +1396,7 @@ jsxc.muc = {
return false;
});
bud.find('.jsxc_rename').before(bo);
bud.find('.jsxc_menu ul').append($('&lt;li>').append(bo));
if (data.bookmarked) {
bud.addClass('jsxc_bookmarked');
@@ -1510,13 +1616,13 @@ $(document).one('connected.jsxc', function() {
</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.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.bookmarks.html">bookmarks</a></li><li><a href="jsxc.xmpp.carbons.html">carbons</a></li></ul><h3><a href="global.html">Global</a></h3>
<h2><a href="index.html">Index</a></h2><h3>Classes</h3><ul><li><a href="jsxc.Message.html">Message</a></li></ul><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.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.bookmarks.html">bookmarks</a></li><li><a href="jsxc.xmpp.carbons.html">carbons</a></li></ul><h3>Global</h3><ul><li>{boolean}</li><li>{integer}</li><li>{string}</li></ul>
</nav>
<br clear="both">
<footer>
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Tue Nov 17 2015 17:01:04 GMT+0100 (CET)
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Fri Mar 11 2016 17:32:12 GMT+0100 (CET)
</footer>
<script> prettyPrint(); </script>
+2 -2
Ver Arquivo
@@ -151,13 +151,13 @@ jsxc.notice = {
</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.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.bookmarks.html">bookmarks</a></li><li><a href="jsxc.xmpp.carbons.html">carbons</a></li></ul><h3><a href="global.html">Global</a></h3>
<h2><a href="index.html">Index</a></h2><h3>Classes</h3><ul><li><a href="jsxc.Message.html">Message</a></li></ul><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.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.bookmarks.html">bookmarks</a></li><li><a href="jsxc.xmpp.carbons.html">carbons</a></li></ul><h3>Global</h3><ul><li>{boolean}</li><li>{integer}</li><li>{string}</li></ul>
</nav>
<br clear="both">
<footer>
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Tue Nov 17 2015 17:01:04 GMT+0100 (CET)
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Fri Mar 11 2016 17:32:12 GMT+0100 (CET)
</footer>
<script> prettyPrint(); </script>
+3 -3
Ver Arquivo
@@ -42,7 +42,7 @@ jsxc.notification = {
*/
init: function() {
$(document).on('postmessagein.jsxc', function(event, bid, msg) {
msg = (msg.match(/^\?OTR/)) ? $.t('Encrypted_message') : msg;
msg = (msg && msg.match(/^\?OTR/)) ? $.t('Encrypted_message') : msg;
var data = jsxc.storage.getUserItem('buddy', bid);
jsxc.notification.notify({
@@ -309,13 +309,13 @@ jsxc.notification = {
</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.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.bookmarks.html">bookmarks</a></li><li><a href="jsxc.xmpp.carbons.html">carbons</a></li></ul><h3><a href="global.html">Global</a></h3>
<h2><a href="index.html">Index</a></h2><h3>Classes</h3><ul><li><a href="jsxc.Message.html">Message</a></li></ul><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.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.bookmarks.html">bookmarks</a></li><li><a href="jsxc.xmpp.carbons.html">carbons</a></li></ul><h3>Global</h3><ul><li>{boolean}</li><li>{integer}</li><li>{string}</li></ul>
</nav>
<br clear="both">
<footer>
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Tue Nov 17 2015 17:01:04 GMT+0100 (CET)
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Fri Mar 11 2016 17:32:12 GMT+0100 (CET)
</footer>
<script> prettyPrint(); </script>
+43 -10
Ver Arquivo
@@ -117,9 +117,24 @@ jsxc.options = {
*/
onAuthFail: 'submit',
/** True: Attach connection even is login form was found */
/**
* True: Attach connection even is login form was found.
*
* @type {Boolean}
* @deprecated since 3.0.0. Use now loginForm.ifFound (true => attach, false => pause)
*/
attachIfFound: true,
/**
* Describes what we should do if login form was found:
* - Attach connection
* - Force new connection with loginForm.jid and loginForm.passed
* - Pause connection and do nothing
*
* @type {(attach|force|pause)}
*/
ifFound: 'attach',
/**
* True: Display roster minimized after first login. Afterwards the last
* roster state will be used.
@@ -151,9 +166,6 @@ jsxc.options = {
/** 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.
@@ -200,10 +212,10 @@ jsxc.options = {
*
* @memberOf jsxc.options
* @param data Holds all data as key/value
* @returns {boolean} false if function failes
* @param cb Called with true on success, false otherwise
*/
saveSettinsPermanent: function() {
saveSettinsPermanent: function(data, cb) {
cb(true);
},
carbons: {
@@ -250,6 +262,9 @@ jsxc.options = {
/** [optional] If set, jsxc requests and uses RTCPeerConfig from this url */
url: null,
/** If true, jsxc send cookies when requesting RTCPeerConfig from the url above */
withCredentials: false,
/** ICE servers like defined in http://www.w3.org/TR/webrtc/#idl-def-RTCIceServer */
iceServers: [{
urls: 'stun:stun.stunprotocol.org'
@@ -257,7 +272,25 @@ jsxc.options = {
},
/** Link to an online user manual */
onlineHelp: 'http://www.jsxc.org/manual.html'
onlineHelp: 'http://www.jsxc.org/manual.html',
viewport: {
getSize: function() {
var w = $(window).width() - $('#jsxc_windowListSB').width();
var h = $(window).height();
if (jsxc.storage.getUserItem('roster') === 'shown') {
w -= $('#jsxc_roster').outerWidth(true);
}
return {
width: w,
height: h
};
}
},
maxStorableSize: 1000000
};
</code></pre>
</article>
@@ -269,13 +302,13 @@ jsxc.options = {
</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.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.bookmarks.html">bookmarks</a></li><li><a href="jsxc.xmpp.carbons.html">carbons</a></li></ul><h3><a href="global.html">Global</a></h3>
<h2><a href="index.html">Index</a></h2><h3>Classes</h3><ul><li><a href="jsxc.Message.html">Message</a></li></ul><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.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.bookmarks.html">bookmarks</a></li><li><a href="jsxc.xmpp.carbons.html">carbons</a></li></ul><h3>Global</h3><ul><li>{boolean}</li><li>{integer}</li><li>{string}</li></ul>
</nav>
<br clear="both">
<footer>
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Tue Nov 17 2015 17:01:04 GMT+0100 (CET)
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Fri Mar 11 2016 17:32:12 GMT+0100 (CET)
</footer>
<script> prettyPrint(); </script>
+80 -36
Ver Arquivo
@@ -52,9 +52,23 @@ jsxc.otr = {
}
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);
jsxc.gui.window.postMessage({
bid: bid,
direction: jsxc.Message.SYS,
msg: $.t('Received_an_unencrypted_message') + '. [' + d.msg + ']',
encrypted: d.encrypted,
forwarded: d.forwarded,
stamp: d.stamp
});
} else {
jsxc.gui.window.postMessage(bid, 'in', d.msg, d.encrypted, d.forwarded, d.stamp);
jsxc.gui.window.postMessage({
bid: bid,
direction: jsxc.Message.IN,
msg: d.msg,
encrypted: d.encrypted,
forwarded: d.forwarded,
stamp: d.stamp
});
}
},
@@ -114,7 +128,11 @@ jsxc.otr = {
switch (status) {
case OTR.CONST.STATUS_SEND_QUERY:
jsxc.gui.window.postMessage(bid, 'sys', $.t('trying_to_start_private_conversation'));
jsxc.gui.window.postMessage({
bid: bid,
direction: jsxc.Message.SYS,
msg: $.t('trying_to_start_private_conversation')
});
break;
case OTR.CONST.STATUS_AKE_SUCCESS:
data.fingerprint = jsxc.otr.objects[bid].their_priv_pk.fingerprint();
@@ -123,7 +141,11 @@ jsxc.otr = {
var msg_state = jsxc.otr.objects[bid].trust ? 'Verified' : 'Unverified';
var msg = $.t(msg_state + '_private_conversation_started');
jsxc.gui.window.postMessage(bid, 'sys', msg);
jsxc.gui.window.postMessage({
bid: bid,
direction: 'sys',
msg: msg
});
break;
case OTR.CONST.STATUS_END_OTR:
data.fingerprint = null;
@@ -132,13 +154,21 @@ jsxc.otr = {
// we abort the private conversation
data.msgstate = OTR.CONST.MSGSTATE_PLAINTEXT;
jsxc.gui.window.postMessage(bid, 'sys', $.t('private_conversation_aborted'));
jsxc.gui.window.postMessage({
bid: bid,
direction: jsxc.Message.SYS,
msg: $.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'));
jsxc.gui.window.postMessage({
bid: bid,
direction: jsxc.Message.SYS,
msg: $.t('your_buddy_closed_the_private_conversation_you_should_do_the_same')
});
}
break;
case OTR.CONST.STATUS_SMP_HANDLE:
@@ -155,15 +185,14 @@ jsxc.otr = {
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'));
jsxc.gui.window.postMessage({
bid: bid,
direction: jsxc.Message.SYS,
msg: $.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, {
jsxc.gui.window.smpRequest(bid, data);
jsxc.storage.setUserItem('smp', bid, {
data: data || null
});
@@ -175,15 +204,28 @@ jsxc.otr = {
jsxc.gui.update(bid);
if (data) {
jsxc.gui.window.postMessage(bid, 'sys', $.t('conversation_is_now_verified'));
jsxc.gui.window.postMessage({
bid: bid,
direction: jsxc.Message.SYS,
msg: $.t('conversation_is_now_verified')
});
} else {
jsxc.gui.window.postMessage(bid, 'sys', $.t('authentication_failed'));
jsxc.gui.window.postMessage({
bid: bid,
direction: jsxc.Message.SYS,
msg: $.t('authentication_failed')
});
}
jsxc.storage.removeUserItem('smp_' + bid);
jsxc.gui.dialog.close();
jsxc.storage.removeUserItem('smp', bid);
jsxc.gui.dialog.close('smp');
break;
case 'abort':
jsxc.gui.window.postMessage(bid, 'sys', $.t('Authentication_aborted'));
jsxc.gui.window.hideOverlay(bid);
jsxc.gui.window.postMessage({
bid: bid,
direction: jsxc.Message.SYS,
msg: $.t('Authentication_aborted')
});
break;
default:
jsxc.debug('[OTR] sm callback: Unknown type: ' + type);
@@ -213,7 +255,11 @@ jsxc.otr = {
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.gui.window.postMessage({
bid: bid,
direction: jsxc.Message.SYS,
msg: '[OTR] ' + $.t(err)
});
}
jsxc.error('[OTR] ' + err);
@@ -237,14 +283,16 @@ jsxc.otr = {
if (data) {
$('#jsxc_dialog > div:eq(2)').find('#jsxc_quest').val(data).prop('disabled', true);
$('#jsxc_dialog > div:eq(2)').find('.jsxc_submit').text($('Answer'));
$('#jsxc_dialog > div:eq(2)').find('.jsxc_submit').text($.t('Answer'));
$('#jsxc_dialog > div:eq(2)').find('.jsxc_explanation').text($.t('onsmp_explanation_question'));
$('#jsxc_dialog > div:eq(2)').show();
} else {
$('#jsxc_dialog > div:eq(3)').find('.jsxc_explanation').text($.t('onsmp_explanation_secret'));
$('#jsxc_dialog > div:eq(3)').show();
}
$('#jsxc_dialog .jsxc_close').click(function() {
jsxc.storage.removeUserItem('smp_' + bid);
jsxc.storage.removeUserItem('smp', bid);
if (jsxc.master) {
jsxc.otr.objects[bid].sm.abort();
@@ -407,8 +455,6 @@ jsxc.otr = {
MSGSTATE_FINISHED: 2
};
jsxc._onMaster();
return;
}
@@ -431,8 +477,6 @@ jsxc.otr = {
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;
@@ -444,6 +488,8 @@ jsxc.otr = {
}
};
jsxc.debug('DSA key creation started.');
// 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'],
@@ -453,12 +499,13 @@ jsxc.otr = {
} else {
// fallback
jsxc.xmpp.conn.pause();
jsxc.gui.dialog.open(jsxc.gui.template.get('waitAlert', null, msg), {
noClose: true
});
jsxc.debug('DSA key creation started.');
jsxc.debug('DSA key creation started in fallback mode.');
// wait until the wait alert is opened
setTimeout(function() {
@@ -481,9 +528,9 @@ jsxc.otr = {
jsxc.storage.setUserItem('priv_fingerprint', jsxc.options.otr.priv.fingerprint());
if (jsxc.otr.dsaFallback !== false) {
jsxc._onMaster();
}
$.each(jsxc.storage.getUserItem('windowlist') || [], function(index, val) {
jsxc.otr.create(val);
});
},
/**
@@ -497,11 +544,8 @@ jsxc.otr = {
// close wait alert
if (jsxc.otr.dsaFallback) {
jsxc.xmpp.conn.resume();
jsxc.gui.dialog.close();
} else {
$.each(jsxc.storage.getUserItem('windowlist'), function(index, val) {
jsxc.otr.create(val);
});
}
jsxc.otr._createDSA();
@@ -521,13 +565,13 @@ jsxc.otr = {
</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.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.bookmarks.html">bookmarks</a></li><li><a href="jsxc.xmpp.carbons.html">carbons</a></li></ul><h3><a href="global.html">Global</a></h3>
<h2><a href="index.html">Index</a></h2><h3>Classes</h3><ul><li><a href="jsxc.Message.html">Message</a></li></ul><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.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.bookmarks.html">bookmarks</a></li><li><a href="jsxc.xmpp.carbons.html">carbons</a></li></ul><h3>Global</h3><ul><li>{boolean}</li><li>{integer}</li><li>{string}</li></ul>
</nav>
<br clear="both">
<footer>
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Tue Nov 17 2015 17:01:04 GMT+0100 (CET)
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Fri Mar 11 2016 17:32:12 GMT+0100 (CET)
</footer>
<script> prettyPrint(); </script>
+27 -57
Ver Arquivo
@@ -48,6 +48,10 @@ jsxc.storage = {
getPrefix: function(uk) {
var self = jsxc.storage;
if (uk && !jsxc.bid) {
console.trace('Unable to create user prefix');
}
return self.PREFIX + self.SEP + ((uk && jsxc.bid) ? jsxc.bid + self.SEP : '');
},
@@ -62,7 +66,7 @@ jsxc.storage = {
setItem: function(key, value, uk) {
// Workaround for non-conform browser
if (jsxc.storageNotConform > 0 && key !== 'rid' && key !== 'lastActivity') {
if (jsxc.storageNotConform > 0 && key !== 'rid') {
if (jsxc.storageNotConform > 1 && jsxc.toSNC === null) {
jsxc.toSNC = window.setTimeout(function() {
jsxc.storageNotConform = 0;
@@ -148,7 +152,7 @@ jsxc.storage = {
removeItem: function(key, uk) {
// Workaround for non-conform browser
if (jsxc.storageNotConform && key !== 'rid' && key !== 'lastActivity') {
if (jsxc.storageNotConform && key !== 'rid') {
jsxc.ls.push(JSON.stringify({
key: jsxc.storage.prefix + key,
value: ''
@@ -291,7 +295,7 @@ jsxc.storage = {
onStorage: function(e) {
// skip
if (e.key === jsxc.storage.PREFIX + jsxc.storage.SEP + 'rid' || e.key === jsxc.storage.PREFIX + jsxc.storage.SEP + 'lastActivity') {
if (e.key === jsxc.storage.PREFIX + jsxc.storage.SEP + 'rid') {
return;
}
@@ -391,22 +395,24 @@ jsxc.storage = {
}
}
if (key.match(new RegExp('^chat' + jsxc.storage.SEP))) {
if (key.match(new RegExp('^history' + jsxc.storage.SEP))) {
var posts = JSON.parse(e.newValue);
var data, el;
var history = JSON.parse(e.newValue);
var uid, el, message;
while (posts.length > 0) {
data = posts.pop();
el = $('#' + data.uid);
while (history.length > 0) {
uid = history.pop();
message = new jsxc.Message(uid);
el = message.getDOM();
if (el.length === 0) {
if (jsxc.master && data.direction === 'out') {
jsxc.xmpp.sendMessage(bid, data.msg, data.uid);
if (jsxc.master && message.direction === jsxc.Message.OUT) {
jsxc.xmpp.sendMessage(message.bid, message.msg, message._uid);
}
jsxc.gui.window._postMessage(bid, data);
} else if (data.received) {
jsxc.gui.window._postMessage(message, true);
} else if (message.isReceived()) {
el.addClass('jsxc_received');
}
}
@@ -457,7 +463,8 @@ jsxc.storage = {
if (!e.newValue) {
jsxc.gui.dialog.close();
jsxc.gui.dialog.close('smp');
jsxc.gui.window.hideOverlay(bid);
if (jsxc.master) {
jsxc.otr.objects[bid].sm.abort();
@@ -470,10 +477,11 @@ jsxc.storage = {
if (typeof(n.data) !== 'undefined') {
jsxc.otr.onSmpQuestion(bid, n.data);
jsxc.gui.window.smpRequest(bid, n.data);
} else if (jsxc.master && n.sec) {
jsxc.gui.dialog.close();
jsxc.gui.dialog.close('smp');
jsxc.gui.window.hideOverlay(bid);
jsxc.otr.sendSmpReq(bid, n.sec, n.quest);
}
@@ -556,7 +564,7 @@ jsxc.storage = {
}
if (key === 'roster') {
jsxc.gui.roster.toggle();
jsxc.gui.roster.toggle(e.newValue);
}
if (jsxc.master && key.match(new RegExp('^vcard' + jsxc.storage.SEP)) && e.newValue !== null && e.newValue.match(/^request:/)) {
@@ -584,44 +592,6 @@ jsxc.storage = {
}
},
/**
* 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.
*
@@ -664,13 +634,13 @@ jsxc.storage = {
</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.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.bookmarks.html">bookmarks</a></li><li><a href="jsxc.xmpp.carbons.html">carbons</a></li></ul><h3><a href="global.html">Global</a></h3>
<h2><a href="index.html">Index</a></h2><h3>Classes</h3><ul><li><a href="jsxc.Message.html">Message</a></li></ul><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.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.bookmarks.html">bookmarks</a></li><li><a href="jsxc.xmpp.carbons.html">carbons</a></li></ul><h3>Global</h3><ul><li>{boolean}</li><li>{integer}</li><li>{string}</li></ul>
</nav>
<br clear="both">
<footer>
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Tue Nov 17 2015 17:01:04 GMT+0100 (CET)
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Fri Mar 11 2016 17:32:12 GMT+0100 (CET)
</footer>
<script> prettyPrint(); </script>
+327 -196
Ver Arquivo
@@ -25,7 +25,7 @@
<section>
<article>
<pre class="prettyprint source"><code>/* global MediaStreamTrack */
<pre class="prettyprint source"><code>/* global MediaStreamTrack, File */
/* jshint -W020 */
/**
@@ -49,9 +49,12 @@ jsxc.webrtc = {
/** should we auto accept incoming calls? */
AUTO_ACCEPT: false,
/** required disco features */
/** required disco features for video call */
reqVideoFeatures: ['urn:xmpp:jingle:apps:rtp:video', 'urn:xmpp:jingle:apps:rtp:audio', 'urn:xmpp:jingle:transports:ice-udp:1', 'urn:xmpp:jingle:apps:dtls:0'],
/** required disco features for file transfer */
reqFileFeatures: ['urn:xmpp:jingle:1', 'urn:xmpp:jingle:apps:file-transfer:3'],
/** bare jid to current jid mapping */
chatJids: {},
@@ -80,10 +83,17 @@ jsxc.webrtc = {
$(document).on('mediaready.jingle', self.onMediaReady);
$(document).on('mediafailure.jingle', self.onMediaFailure);
manager.on('incoming', $.proxy(self.onCallIncoming, self));
manager.on('terminated', $.proxy(self.onCallTerminated, self));
manager.on('incoming', $.proxy(self.onIncoming, self));
manager.on('terminated', $.proxy(self.onTerminated, self));
manager.on('ringing', $.proxy(self.onCallRinging, self));
manager.on('receivedFile', $.proxy(self.onReceivedFile, self));
manager.on('sentFile', function(sess, metadata) {
jsxc.debug('sent ' + metadata.hash);
});
manager.on('peerStreamAdded', $.proxy(self.onRemoteStreamAdded, self));
manager.on('peerStreamRemoved', $.proxy(self.onRemoteStreamRemoved, self));
@@ -160,6 +170,9 @@ jsxc.webrtc = {
$.ajax(url, {
async: true,
xhrFields: {
withCredentials: jsxc.options.get('RTCPeerConfig').withCredentials
},
success: function(data) {
var ttl = data.ttl || 3600;
var iceServers = data.iceServers;
@@ -206,20 +219,27 @@ jsxc.webrtc = {
},
/**
* Return list of video capable resources.
* Return list of capable resources.
*
* @memberOf jsxc.webrtc
* @param jid
* @param {(string|string[])} features list of required features
* @returns {Array}
*/
getCapableRes: function(jid) {
getCapableRes: function(jid, features) {
var self = jsxc.webrtc;
var bid = jsxc.jidToBid(jid);
var res = jsxc.storage.getUserItem('res', bid) || [];
var res = Object.keys(jsxc.storage.getUserItem('res', bid) || {}) || [];
if (!features) {
return res;
} else if (typeof features === 'string') {
features = [features];
}
var available = [];
$.each(res, function(r) {
if (self.conn.caps.hasFeatureByJid(bid + '/' + r, self.reqVideoFeatures)) {
$.each(res, function(i, r) {
if (self.conn.caps.hasFeatureByJid(bid + '/' + r, features)) {
available.push(r);
}
});
@@ -227,40 +247,6 @@ jsxc.webrtc = {
return available;
},
/**
* Add "video" button to roster
*
* @private
* @memberOf jsxc.webrtc
* @param event
* @param bid bid of roster item
* @param data data wich belongs to bid
* @param el the roster item
*/
onAddRosterItem: function(event, bid, data, el) {
var self = jsxc.webrtc;
if (!self.conn) {
$(document).one('connectionReady.jsxc', function() {
self.onAddRosterItem(null, bid, data, el);
});
return;
}
var videoIcon = $('&lt;div class="jsxc_video jsxc_disabled" title="' + $.t("Start_video_call") + '">&lt;/div>');
videoIcon.click(function() {
self.startCall(data.jid);
return false;
});
el.find('.jsxc_options.jsxc_left').append(videoIcon);
el.on('extra.jsxc', function() {
self.updateIcon(bid);
});
},
/**
* Add "video" button to window menu.
*
@@ -279,16 +265,16 @@ jsxc.webrtc = {
jsxc.debug('webrtc.initWindow');
if (!self.conn) {
$(document).one('connectionReady.jsxc', function() {
$(document).one('attached.jsxc', function() {
self.initWindow(null, win);
});
return;
}
var div = $('&lt;div>').addClass('jsxc_video');
win.find('.jsxc_transfer:eq(1)').after(div);
win.find('.jsxc_tools .jsxc_settings').after(div);
self.updateIcon(jsxc.jidToBid(win.data('jid')));
self.updateIcon(win.data('bid'));
},
/**
@@ -319,10 +305,12 @@ jsxc.webrtc = {
}
}
var el = win.find('.jsxc_video').add(jsxc.gui.roster.getItem(bid).find('.jsxc_video'));
var res = Strophe.getResourceFromJid(jid);
var capableRes = self.getCapableRes(jid);
var targetRes = Strophe.getResourceFromJid(jid);
var el = win.find('.jsxc_video');
var capableRes = self.getCapableRes(jid, self.reqVideoFeatures);
var targetRes = res;
if (targetRes === null) {
$.each(jsxc.storage.getUserItem('buddy', bid).res || [], function(index, val) {
@@ -350,6 +338,15 @@ jsxc.webrtc = {
el.attr('title', $.t('Video_call_not_possible'));
}
var fileCapableRes = self.getCapableRes(jid, self.reqFileFeatures);
var resources = Object.keys(jsxc.storage.getUserItem('res', bid) || {}) || [];
if (fileCapableRes.indexOf(res) > -1 || (res === null && fileCapableRes.length === 1 && resources.length === 1)) {
win.find('.jsxc_sendFile').removeClass('jsxc_disabled');
} else {
win.find('.jsxc_sendFile').addClass('jsxc_disabled');
}
},
/**
@@ -511,10 +508,52 @@ jsxc.webrtc = {
self.setStatus('media failure');
jsxc.gui.window.postMessage(jsxc.jidToBid(jsxc.webrtc.last_caller), 'sys', $.t('Media_failure') + ': ' + $.t(err.name) + ' (' + err.name + ').');
jsxc.gui.window.postMessage({
bid: jsxc.jidToBid(jsxc.webrtc.last_caller),
direction: jsxc.Message.SYS,
msg: $.t('Media_failure') + ': ' + $.t(err.name) + ' (' + err.name + ').'
});
jsxc.debug('media failure: ' + err.name);
},
onIncoming: function(session) {
var self = jsxc.webrtc;
var type = (session.constructor) ? session.constructor.name : null;
if (type === 'FileTransferSession') {
self.onIncomingFileTransfer(session);
} else if (type === 'MediaSession') {
self.onIncomingCall(session);
}
},
onIncomingFileTransfer: function(session) {
jsxc.debug('incoming file transfer from ' + session.peerID);
var buddylist = jsxc.storage.getUserItem('buddylist') || [];
var bid = jsxc.jidToBid(session.peerID);
if (buddylist.indexOf(bid) > -1) {
//Accept file transfers only from contacts
session.accept();
var message = jsxc.gui.window.postMessage({
_uid: session.sid + ':msg',
bid: bid,
direction: jsxc.Message.IN,
attachment: {
name: session.receiver.metadata.name,
type: session.receiver.metadata.type || 'application/octet-stream'
}
});
session.receiver.on('progress', function(sent, size) {
jsxc.gui.window.updateProgress(message, sent, size);
});
}
},
/**
* Called on incoming call.
*
@@ -523,15 +562,19 @@ jsxc.webrtc = {
* @param event
* @param sid Session id
*/
onCallIncoming: function(session) {
onIncomingCall: function(session) {
jsxc.debug('incoming call from ' + session.peerID);
var self = this;
var self = jsxc.webrtc;
var bid = jsxc.jidToBid(session.peerID);
session.on('change:connectionState', $.proxy(self.onIceConnectionStateChanged, self));
jsxc.gui.window.postMessage(bid, 'sys', $.t('Incoming_call'));
jsxc.gui.window.postMessage({
bid: bid,
direction: jsxc.Message.SYS,
msg: $.t('Incoming_call')
});
// display notification
jsxc.notification.notify($.t('Incoming_call'), $.t('from_sender', {
@@ -579,6 +622,15 @@ jsxc.webrtc = {
});
},
onTerminated: function(session, reason) {
var self = jsxc.webrtc;
var type = (session.constructor) ? session.constructor.name : null;
if (type === 'MediaSession') {
self.onCallTerminated(session, reason);
}
},
/**
* Called if call is terminated.
*
@@ -590,12 +642,19 @@ jsxc.webrtc = {
* @param [text] Optional explanation
*/
onCallTerminated: function(session, reason) {
this.setStatus('call terminated ' + session.peer + (reason ? reason.condition : ''));
this.setStatus('call terminated ' + session.peerID + (reason ? reason.condition : ''));
var bid = jsxc.jidToBid(session.peer);
var bid = jsxc.jidToBid(session.peerID);
if (this.localStream) {
this.localStream.stop();
if (typeof this.localStream.stop === 'function') {
this.localStream.stop();
} else {
var tracks = this.localStream.getTracks();
tracks.forEach(function(track) {
track.stop();
});
}
}
if ($('.jsxc_videoContainer').length) {
@@ -607,15 +666,15 @@ jsxc.webrtc = {
this.localStream = null;
this.remoteStream = null;
var win = $('#jsxc_dialog .jsxc_chatarea > ul > li');
$('#jsxc_windowList > ul').prepend(win.detach());
win.find('.slimScrollDiv').resizable('enable');
jsxc.gui.closeVideoWindow();
$(document).off('cleanup.dialog.jsxc');
$(document).off('error.jingle');
jsxc.gui.dialog.close();
jsxc.gui.window.postMessage(bid, 'sys', ($.t('Call_terminated') + (reason ? (': ' + $.t('jingle_reason_' + reason.condition)) : '') + '.'));
jsxc.gui.window.postMessage({
bid: bid,
direction: jsxc.Message.SYS,
msg: ($.t('Call_terminated') + (reason ? (': ' + $.t('jingle_reason_' + reason.condition)) : '') + '.')
});
},
/**
@@ -649,9 +708,9 @@ jsxc.webrtc = {
this.setStatus(isAudioDevice ? 'Use remote audio device.' : 'No remote audio device');
if ($('.jsxc_remotevideo').length) {
this.attachMediaStream($('#jsxc_dialog .jsxc_remotevideo'), stream);
this.attachMediaStream($('#jsxc_webrtc .jsxc_remotevideo'), stream);
$('#jsxc_dialog .jsxc_' + (isVideoDevice ? 'remotevideo' : 'noRemoteVideo')).addClass('jsxc_deviceAvailable');
$('#jsxc_webrtc .jsxc_' + (isVideoDevice ? 'remotevideo' : 'noRemoteVideo')).addClass('jsxc_deviceAvailable');
}
},
@@ -699,13 +758,15 @@ jsxc.webrtc = {
if (state === 'connected') {
$('#jsxc_dialog .jsxc_deviceAvailable').show();
$('#jsxc_dialog .bubblingG').hide();
$('#jsxc_webrtc .jsxc_deviceAvailable').show();
$('#jsxc_webrtc .bubblingG').hide();
} else if (state === 'failed') {
jsxc.gui.window.postMessage(jsxc.jidToBid(session.peerID), 'sys', $.t('ICE_connection_failure'));
$(document).off('cleanup.dialog.jsxc');
jsxc.gui.window.postMessage({
bid: jsxc.jidToBid(session.peerID),
direction: jsxc.Message.SYS,
msg: $.t('ICE_connection_failure')
});
session.end('failed-transport');
@@ -736,14 +797,17 @@ jsxc.webrtc = {
'finish.mediaready.jsxc': function() {
self.setStatus('Initiate call');
jsxc.gui.window.postMessage(jsxc.jidToBid(jid), 'sys', $.t('Call_started'));
jsxc.gui.window.postMessage({
bid: jsxc.jidToBid(jid),
direction: jsxc.Message.SYS,
msg: $.t('Call_started')
});
$(document).one('error.jingle', function(e, sid, error) {
if (error.source !== 'offer') {
if (error && error.source !== 'offer') {
return;
}
$(document).off('cleanup.dialog.jsxc');
setTimeout(function() {
jsxc.gui.showAlert("Sorry, we couldn't establish a connection. Maybe your buddy is offline.");
}, 500);
@@ -767,9 +831,13 @@ jsxc.webrtc = {
* @memberOf jsxc.webrtc
*/
hangUp: function(reason, text) {
$(document).off('cleanup.dialog.jsxc');
if (jsxc.webrtc.conn.jingle.manager && !$.isEmptyObject(jsxc.webrtc.conn.jingle.manager.peers)) {
jsxc.webrtc.conn.jingle.terminate(null, reason, text);
} else {
jsxc.gui.closeVideoWindow();
}
jsxc.webrtc.conn.jingle.terminate(null, reason, text);
// @TODO check event
$(document).trigger('callterminated.jingle');
},
@@ -876,6 +944,105 @@ jsxc.webrtc = {
$('.jsxc_snapshotbar').append(link);
canvas.remove();
},
/**
* Send file to full jid.
*
* @memberOf jsxc.webrtc
* @param {string} jid full jid
* @param {file} file
* @return {object} session
*/
sendFile: function(jid, file) {
var self = jsxc.webrtc;
var sess = self.conn.jingle.manager.createFileTransferSession(jid);
sess.on('change:sessionState', function() {
jsxc.debug('Session state', sess.state);
});
sess.on('change:connectionState', function() {
jsxc.debug('Connection state', sess.connectionState);
});
sess.start(file);
return sess;
},
/**
* Display received file.
*
* @memberOf jsxc.webrtc
* @param {object} sess
* @param {File} file
* @param {object} metadata file metadata
*/
onReceivedFile: function(sess, file, metadata) {
jsxc.debug('file received', metadata);
if (!FileReader) {
return;
}
var reader = new FileReader();
var type;
if (!metadata.type) {
// detect file type via file extension, because XEP-0234 v0.14
// does not send any type
var ext = metadata.name.replace(/.+\.([a-z0-9]+)$/i, '$1').toLowerCase();
switch (ext) {
case 'jpg':
case 'jpeg':
case 'png':
case 'gif':
case 'svg':
type = 'image/' + ext.replace(/^jpg$/, 'jpeg');
break;
case 'mp3':
case 'wav':
type = 'audio/' + ext;
break;
case 'pdf':
type = 'application/pdf';
break;
case 'txt':
type = 'text/' + ext;
break;
default:
type = 'application/octet-stream';
}
} else {
type = metadata.type;
}
reader.onload = function(ev) {
// modify element with uid metadata.actualhash
jsxc.gui.window.postMessage({
_uid: sess.sid + ':msg',
bid: jsxc.jidToBid(sess.peerID),
direction: jsxc.Message.IN,
attachment: {
name: metadata.name,
type: type,
size: metadata.size,
data: ev.target.result
}
});
};
if (!file.type) {
// file type should be handled in lib
file = new File([file], metadata.name, {
type: type
});
}
reader.readAsDataURL(file);
}
};
@@ -887,129 +1054,94 @@ jsxc.webrtc = {
jsxc.gui.showVideoWindow = function(jid) {
var self = jsxc.webrtc;
$(document).one('complete.dialog.jsxc', function() {
// mute own video element to avoid echoes
$('#jsxc_dialog .jsxc_localvideo')[0].muted = true;
$('#jsxc_dialog .jsxc_localvideo')[0].volume = 0;
var rv = $('#jsxc_dialog .jsxc_remotevideo');
var lv = $('#jsxc_dialog .jsxc_localvideo');
lv.draggable({
containment: "parent"
});
self.attachMediaStream(lv, self.localStream);
var w_dialog = $('#jsxc_dialog').width();
var w_remote = rv.width();
// fit in video
if (w_remote > w_dialog) {
var scale = w_dialog / w_remote;
var new_h = rv.height() * scale;
var new_w = w_dialog;
var vc = $('#jsxc_dialog .jsxc_videoContainer');
rv.height(new_h);
rv.width(new_w);
vc.height(new_h);
vc.width(new_w);
lv.height(lv.height() * scale);
lv.width(lv.width() * scale);
}
if (self.remoteStream) {
self.attachMediaStream(rv, self.remoteStream);
$('#jsxc_dialog .jsxc_' + (self.remoteStream.getVideoTracks().length > 0 ? 'remotevideo' : 'noRemoteVideo')).addClass('jsxc_deviceAvailable');
}
var toggleMulti = function(elem, open) {
$('#jsxc_dialog .jsxc_multi > div').not(elem).slideUp();
var opt = {
complete: jsxc.gui.dialog.resize
};
if (open) {
elem.slideDown(opt);
} else {
elem.slideToggle(opt);
}
};
var win = jsxc.gui.window.open(jsxc.jidToBid(jid));
win.find('.slimScrollDiv').resizable('disable');
win.find('.jsxc_textarea').slimScroll({
height: 413
});
win.find('.jsxc_emoticons').css('top', (413 + 6) + 'px');
$('#jsxc_dialog .jsxc_chatarea ul').append(win.detach());
$('#jsxc_dialog .jsxc_hangUp').click(function() {
jsxc.webrtc.hangUp('success');
});
$('#jsxc_dialog .jsxc_snapshot').click(function() {
jsxc.webrtc.snapshot(rv);
toggleMulti($('#jsxc_dialog .jsxc_snapshotbar'), true);
});
$('#jsxc_dialog .jsxc_snapshots').click(function() {
toggleMulti($('#jsxc_dialog .jsxc_snapshotbar'));
});
$('#jsxc_dialog .jsxc_showchat').click(function() {
var chatarea = $('#jsxc_dialog .jsxc_chatarea');
if (chatarea.is(':hidden')) {
chatarea.show();
$('#jsxc_dialog .jsxc_webrtc').width('900');
jsxc.gui.dialog.resize({
width: '920px'
});
} else {
chatarea.hide();
$('#jsxc_dialog .jsxc_webrtc').width('650');
jsxc.gui.dialog.resize({
width: '660px'
});
}
});
$('#jsxc_dialog .jsxc_fullscreen').click(function() {
if ($.support.fullscreen) {
// Reset position of localvideo
$(document).one('disabled.fullscreen', function() {
lv.removeAttr('style');
});
$('#jsxc_dialog .jsxc_videoContainer').fullscreen();
}
});
$('#jsxc_dialog .jsxc_volume').change(function() {
rv[0].volume = $(this).val();
});
$('#jsxc_dialog .jsxc_volume').dblclick(function() {
$(this).val(0.5);
});
});
// needed to trigger complete.dialog.jsxc
jsxc.gui.dialog.close();
return jsxc.gui.dialog.open(jsxc.gui.template.get('videoWindow'), {
noClose: true
$('body').append(jsxc.gui.template.get('videoWindow'));
// mute own video element to avoid echoes
$('#jsxc_webrtc .jsxc_localvideo')[0].muted = true;
$('#jsxc_webrtc .jsxc_localvideo')[0].volume = 0;
var rv = $('#jsxc_webrtc .jsxc_remotevideo');
var lv = $('#jsxc_webrtc .jsxc_localvideo');
lv.draggable({
containment: "parent"
});
if (self.localStream) {
self.attachMediaStream(lv, self.localStream);
}
var w_dialog = $('#jsxc_webrtc').width();
var w_remote = rv.width();
// fit in video
if (w_remote > w_dialog) {
var scale = w_dialog / w_remote;
var new_h = rv.height() * scale;
var new_w = w_dialog;
var vc = $('#jsxc_webrtc .jsxc_videoContainer');
rv.height(new_h);
rv.width(new_w);
vc.height(new_h);
vc.width(new_w);
lv.height(lv.height() * scale);
lv.width(lv.width() * scale);
}
if (self.remoteStream) {
self.attachMediaStream(rv, self.remoteStream);
$('#jsxc_webrtc .jsxc_' + (self.remoteStream.getVideoTracks().length > 0 ? 'remotevideo' : 'noRemoteVideo')).addClass('jsxc_deviceAvailable');
}
var win = jsxc.gui.window.open(jsxc.jidToBid(jid));
win.find('.slimScrollDiv').resizable('disable');
jsxc.gui.window.resize(win, {
size: {
width: $('#jsxc_webrtc .jsxc_chatarea').width(),
height: $('#jsxc_webrtc .jsxc_chatarea').height()
}
}, true);
$('#jsxc_webrtc .jsxc_chatarea ul').append(win.detach());
$('#jsxc_webrtc .jsxc_hangUp').click(function() {
jsxc.webrtc.hangUp('success');
});
$('#jsxc_webrtc .jsxc_fullscreen').click(function() {
if ($.support.fullscreen) {
// Reset position of localvideo
$(document).one('disabled.fullscreen', function() {
lv.removeAttr('style');
});
$('#jsxc_webrtc .jsxc_videoContainer').fullscreen();
}
});
$('#jsxc_webrtc .jsxc_videoContainer').click(function() {
$('#jsxc_webrtc .jsxc_controlbar').toggleClass('jsxc_visible');
});
return $('#jsxc_webrtc');
};
jsxc.gui.closeVideoWindow = function() {
var win = $('#jsxc_webrtc .jsxc_chatarea > ul > li');
$('#jsxc_windowList > ul').prepend(win.detach());
win.find('.slimScrollDiv').resizable('enable');
jsxc.gui.window.resize(win);
$('#jsxc_webrtc').remove();
};
$.extend(jsxc.CONST, {
@@ -1018,7 +1150,6 @@ $.extend(jsxc.CONST, {
});
$(document).ready(function() {
$(document).on('add.roster.jsxc', jsxc.webrtc.onAddRosterItem);
$(document).on('init.window.jsxc', jsxc.webrtc.initWindow);
$(document).on('attached.jsxc', jsxc.webrtc.init);
$(document).on('disconnected.jsxc', jsxc.webrtc.onDisconnected);
@@ -1034,13 +1165,13 @@ $(document).ready(function() {
</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.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.bookmarks.html">bookmarks</a></li><li><a href="jsxc.xmpp.carbons.html">carbons</a></li></ul><h3><a href="global.html">Global</a></h3>
<h2><a href="index.html">Index</a></h2><h3>Classes</h3><ul><li><a href="jsxc.Message.html">Message</a></li></ul><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.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.bookmarks.html">bookmarks</a></li><li><a href="jsxc.xmpp.carbons.html">carbons</a></li></ul><h3>Global</h3><ul><li>{boolean}</li><li>{integer}</li><li>{string}</li></ul>
</nav>
<br clear="both">
<footer>
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Tue Nov 17 2015 17:01:04 GMT+0100 (CET)
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Fri Mar 11 2016 17:32:12 GMT+0100 (CET)
</footer>
<script> prettyPrint(); </script>
+2 -2
Ver Arquivo
@@ -376,13 +376,13 @@ jsxc.xmpp.bookmarks.showDialog = function(room) {
</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.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.bookmarks.html">bookmarks</a></li><li><a href="jsxc.xmpp.carbons.html">carbons</a></li></ul><h3><a href="global.html">Global</a></h3>
<h2><a href="index.html">Index</a></h2><h3>Classes</h3><ul><li><a href="jsxc.Message.html">Message</a></li></ul><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.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.bookmarks.html">bookmarks</a></li><li><a href="jsxc.xmpp.carbons.html">carbons</a></li></ul><h3>Global</h3><ul><li>{boolean}</li><li>{integer}</li><li>{string}</li></ul>
</nav>
<br clear="both">
<footer>
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Tue Nov 17 2015 17:01:04 GMT+0100 (CET)
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Fri Mar 11 2016 17:32:12 GMT+0100 (CET)
</footer>
<script> prettyPrint(); </script>
+107 -76
Ver Arquivo
@@ -90,14 +90,29 @@ jsxc.xmpp = {
}
}
if (!jid) {
jsxc.warn('Jid required for login');
return;
}
if (!jsxc.bid) {
jsxc.bid = jsxc.jidToBid(jid);
}
var url = jsxc.options.get('xmpp').url;
if (!url) {
jsxc.warn('xmpp.url required for login');
return;
}
if (!(jsxc.xmpp.conn && jsxc.xmpp.conn.connected)) {
// Register eventlistener
$(document).on('connected.jsxc', jsxc.xmpp.connected);
$(document).on('attached.jsxc', jsxc.xmpp.attached);
$(document).on('disconnected.jsxc', jsxc.xmpp.disconnected);
$(document).on('ridChange', jsxc.xmpp.onRidChange);
$(document).on('connfail.jsxc', jsxc.xmpp.onConnfail);
$(document).on('authfail.jsxc', jsxc.xmpp.onAuthFail);
@@ -107,15 +122,6 @@ jsxc.xmpp = {
// Create new connection (no login)
jsxc.xmpp.conn = new Strophe.Connection(url);
// Override default function to preserve unique id
var stropheGetUniqueId = jsxc.xmpp.conn.getUniqueId;
jsxc.xmpp.conn.getUniqueId = function(suffix) {
var uid = stropheGetUniqueId.call(jsxc.xmpp.conn, suffix);
jsxc.storage.setItem('_uniqueId', jsxc.xmpp.conn._uniqueId);
return uid;
};
if (jsxc.storage.getItem('debug') === true) {
jsxc.xmpp.conn.xmlInput = function(data) {
console.log('&lt;', data);
@@ -125,6 +131,8 @@ jsxc.xmpp = {
};
}
jsxc.xmpp.conn.nextValidRid = jsxc.xmpp.onRidChange;
var callback = function(status, condition) {
jsxc.debug(Object.getOwnPropertyNames(Strophe.Status)[status] + ': ' + condition);
@@ -156,9 +164,12 @@ jsxc.xmpp = {
jsxc.xmpp.conn.caps.node = 'http://jsxc.org/';
}
if (jsxc.restore && sid && rid) {
if (sid && rid) {
jsxc.debug('Try to attach');
jsxc.debug('SID: ' + sid);
jsxc.reconnect = true;
jsxc.xmpp.conn.attach(jid, sid, rid, callback);
} else {
jsxc.debug('New connection');
@@ -182,7 +193,7 @@ jsxc.xmpp = {
}, Strophe.NS.CAPS);
}
jsxc.xmpp.conn.connect(jid || jsxc.options.xmpp.jid, password || jsxc.options.xmpp.password, callback);
jsxc.xmpp.conn.connect(jid, password || jsxc.options.xmpp.password, callback);
}
},
@@ -200,7 +211,7 @@ jsxc.xmpp = {
// clean up
jsxc.storage.removeUserItem('buddylist');
jsxc.storage.removeUserItem('windowlist');
jsxc.storage.removeItem('_uniqueId');
jsxc.storage.removeUserItem('unreadMsg');
if (!jsxc.master) {
$('#jsxc_roster').remove();
@@ -262,45 +273,27 @@ jsxc.xmpp = {
jsxc.xmpp.conn.pause();
var nomJid = Strophe.getBareJidFromJid(jsxc.xmpp.conn.jid).toLowerCase() + '/' + Strophe.getResourceFromJid(jsxc.xmpp.conn.jid);
jsxc.xmpp.initNewConnection();
// Save sid and jid
jsxc.storage.setItem('sid', jsxc.xmpp.conn._proto.sid);
jsxc.storage.setItem('jid', nomJid);
jsxc.storage.setItem('lastActivity', (new Date()).getTime());
// make shure roster will be reloaded
jsxc.storage.removeUserItem('buddylist');
jsxc.storage.removeUserItem('windowlist');
jsxc.storage.removeUserItem('own');
jsxc.storage.removeUserItem('avatar', 'own');
jsxc.storage.removeUserItem('otrlist');
jsxc.storage.removeUserItem('unreadMsg');
// reset user options
jsxc.storage.removeUserElement('options', 'RTCPeerConfig');
jsxc.xmpp.saveSessionParameter();
if (jsxc.options.loginForm.triggered) {
switch (jsxc.options.loginForm.onConnected || 'submit') {
case 'submit':
jsxc.submitLoginForm();
/* falls through */
return;
case false:
jsxc.xmpp.connectionReady();
return;
}
}
// start chat
jsxc.gui.init();
$('#jsxc_roster').removeClass('jsxc_noConnection');
jsxc.onMaster();
jsxc.xmpp.conn.resume();
jsxc.gui.dialog.close();
jsxc.restoreCompleted = true;
jsxc.xmpp.conn.resume();
jsxc.onMaster();
$(document).trigger('attached.jsxc');
},
@@ -311,11 +304,15 @@ jsxc.xmpp = {
*/
attached: function() {
$('#jsxc_roster').removeClass('jsxc_noConnection');
jsxc.xmpp.conn.addHandler(jsxc.xmpp.onRosterChanged, 'jabber:iq:roster', 'iq', 'set');
jsxc.xmpp.conn.addHandler(jsxc.xmpp.onMessage, null, 'message', 'chat');
jsxc.xmpp.conn.addHandler(jsxc.xmpp.onReceived, null, 'message');
jsxc.xmpp.conn.addHandler(jsxc.xmpp.onPresence, null, 'presence');
jsxc.gui.init();
var caps = jsxc.xmpp.conn.caps;
var domain = jsxc.xmpp.conn.domain;
@@ -354,7 +351,7 @@ jsxc.xmpp = {
}
// Only load roaster if necessary
if (!jsxc.restore || !jsxc.storage.getUserItem('buddylist')) {
if (!jsxc.reconnect || !jsxc.storage.getUserItem('buddylist')) {
// in order to not overide existing presence information, we send
// pres first after roster is ready
$(document).one('cloaded.roster.jsxc', jsxc.xmpp.sendPres);
@@ -370,20 +367,42 @@ jsxc.xmpp = {
jsxc.xmpp.conn.sendIQ(iq, jsxc.xmpp.onRoster);
} else {
jsxc.xmpp.sendPres();
if (!jsxc.restoreCompleted) {
jsxc.restoreRoster();
jsxc.restoreWindows();
jsxc.restoreCompleted = true;
$(document).trigger('restoreCompleted.jsxc');
}
}
jsxc.xmpp.connectionReady();
jsxc.xmpp.saveSessionParameter();
jsxc.masterActions();
},
/**
* Triggered if the connection is ready
*/
connectionReady: function() {
saveSessionParameter: function() {
// Load saved unique id
jsxc.xmpp.conn._uniqueId = jsxc.storage.getItem('_uniqueId') || new Date().getTime();
var nomJid = Strophe.getBareJidFromJid(jsxc.xmpp.conn.jid).toLowerCase() + '/' + Strophe.getResourceFromJid(jsxc.xmpp.conn.jid);
$(document).trigger('connectionReady.jsxc');
// Save sid and jid
jsxc.storage.setItem('sid', jsxc.xmpp.conn._proto.sid);
jsxc.storage.setItem('jid', nomJid);
},
initNewConnection: function() {
// make shure roster will be reloaded
jsxc.storage.removeUserItem('buddylist');
jsxc.storage.removeUserItem('windowlist');
jsxc.storage.removeUserItem('own');
jsxc.storage.removeUserItem('avatar', 'own');
jsxc.storage.removeUserItem('otrlist');
jsxc.storage.removeUserItem('unreadMsg');
// reset user options
jsxc.storage.removeUserElement('options', 'RTCPeerConfig');
},
/**
@@ -427,9 +446,9 @@ jsxc.xmpp = {
disconnected: function() {
jsxc.debug('disconnected');
jsxc.storage.removeItem('jid');
jsxc.storage.removeItem('sid');
jsxc.storage.removeItem('rid');
jsxc.storage.removeItem('lastActivity');
jsxc.storage.removeItem('hidden');
jsxc.storage.removeUserItem('avatar', 'own');
jsxc.storage.removeUserItem('otrlist');
@@ -437,7 +456,6 @@ jsxc.xmpp = {
$(document).off('connected.jsxc', jsxc.xmpp.connected);
$(document).off('attached.jsxc', jsxc.xmpp.attached);
$(document).off('disconnected.jsxc', jsxc.xmpp.disconnected);
$(document).off('ridChange', jsxc.xmpp.onRidChange);
$(document).off('connfail.jsxc', jsxc.xmpp.onConnfail);
$(document).off('authfail.jsxc', jsxc.xmpp.onAuthFail);
@@ -669,6 +687,19 @@ jsxc.xmpp = {
// incoming friendship request
if (ptype === 'subscribe') {
var bl = jsxc.storage.getUserItem('buddylist');
if (bl.indexOf(bid) > -1) {
jsxc.debug('Auto approve contact request, because he is already in our contact list.');
jsxc.xmpp.resFriendReq(jid, true);
if (data.sub !== 'to') {
jsxc.xmpp.addBuddy(jid, data.name);
}
return true;
}
jsxc.storage.setUserItem('friendReq', {
jid: jid,
approve: -1
@@ -802,10 +833,17 @@ jsxc.xmpp = {
stamp = stamp.getTime();
if (carbon) {
var direction = (carbon.prop("tagName") === 'sent') ? 'out' : 'in';
var direction = (carbon.prop("tagName") === 'sent') ? jsxc.Message.OUT : jsxc.Message.IN;
bid = jsxc.jidToBid((direction === 'out') ? $(message).attr('to') : from);
jsxc.gui.window.postMessage(bid, direction, body, false, forwarded, stamp);
jsxc.gui.window.postMessage({
bid: bid,
direction: direction,
msg: body,
encrypted: false,
forwarded: forwarded,
stamp: stamp
});
return true;
@@ -872,7 +910,14 @@ jsxc.xmpp = {
forwarded: forwarded
});
} else {
jsxc.gui.window.postMessage(bid, 'in', body, false, forwarded, stamp);
jsxc.gui.window.postMessage({
bid: bid,
direction: jsxc.Message.IN,
msg: body,
encrypted: false,
forwarded: forwarded,
stamp: stamp
});
}
// preserve handler
@@ -882,12 +927,11 @@ jsxc.xmpp = {
/**
* Triggerd if the rid changed
*
* @param {event} ev
* @param {obejct} data
* @param {integer} rid next valid request id
* @private
*/
onRidChange: function(ev, data) {
jsxc.storage.setItem('rid', data.rid);
onRidChange: function(rid) {
jsxc.storage.setItem('rid', rid);
},
/**
@@ -969,27 +1013,14 @@ jsxc.xmpp = {
jsxc.gui.roster.purge(bid);
},
onReceived: function(message) {
var from = $(message).attr('from');
var jid = Strophe.getBareJidFromJid(from);
var bid = jsxc.jidToBid(jid);
var received = $(message).find("received[xmlns='urn:xmpp:receipts']");
onReceived: function(stanza) {
var received = $(stanza).find("received[xmlns='urn:xmpp:receipts']");
if (received.length) {
var receivedId = received.attr('id').replace(/:/, '-');
var chat = jsxc.storage.getUserItem('chat', bid);
var i;
var receivedId = received.attr('id');
var message = new jsxc.Message(receivedId);
for (i = chat.length - 1; i >= 0; i--) {
if (chat[i].uid === receivedId) {
chat[i].received = true;
$('#' + receivedId).addClass('jsxc_received');
jsxc.storage.setUserItem('chat', bid, chat);
break;
}
}
message.received();
}
return true;
@@ -1233,13 +1264,13 @@ jsxc.xmpp.carbons = {
</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.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.bookmarks.html">bookmarks</a></li><li><a href="jsxc.xmpp.carbons.html">carbons</a></li></ul><h3><a href="global.html">Global</a></h3>
<h2><a href="index.html">Index</a></h2><h3>Classes</h3><ul><li><a href="jsxc.Message.html">Message</a></li></ul><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.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.bookmarks.html">bookmarks</a></li><li><a href="jsxc.xmpp.carbons.html">carbons</a></li></ul><h3>Global</h3><ul><li>{boolean}</li><li>{integer}</li><li>{string}</li></ul>
</nav>
<br clear="both">
<footer>
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Tue Nov 17 2015 17:01:04 GMT+0100 (CET)
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Fri Mar 11 2016 17:32:12 GMT+0100 (CET)
</footer>
<script> prettyPrint(); </script>
+22 -22
Ver Arquivo
@@ -252,7 +252,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.muc.js.html">jsxc.lib.muc.js</a>, <a href="jsxc.lib.muc.js.html#line1303">line 1303</a>
<a href="jsxc.lib.muc.js.html">jsxc.lib.muc.js</a>, <a href="jsxc.lib.muc.js.html#line1409">line 1409</a>
</li></ul></dd>
@@ -306,7 +306,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.muc.js.html">jsxc.lib.muc.js</a>, <a href="jsxc.lib.muc.js.html#line876">line 876</a>
<a href="jsxc.lib.muc.js.html">jsxc.lib.muc.js</a>, <a href="jsxc.lib.muc.js.html#line891">line 891</a>
</li></ul></dd>
@@ -442,7 +442,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.muc.js.html">jsxc.lib.muc.js</a>, <a href="jsxc.lib.muc.js.html#line384">line 384</a>
<a href="jsxc.lib.muc.js.html">jsxc.lib.muc.js</a>, <a href="jsxc.lib.muc.js.html#line388">line 388</a>
</li></ul></dd>
@@ -554,7 +554,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.muc.js.html">jsxc.lib.muc.js</a>, <a href="jsxc.lib.muc.js.html#line549">line 549</a>
<a href="jsxc.lib.muc.js.html">jsxc.lib.muc.js</a>, <a href="jsxc.lib.muc.js.html#line557">line 557</a>
</li></ul></dd>
@@ -717,7 +717,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.muc.js.html">jsxc.lib.muc.js</a>, <a href="jsxc.lib.muc.js.html#line522">line 522</a>
<a href="jsxc.lib.muc.js.html">jsxc.lib.muc.js</a>, <a href="jsxc.lib.muc.js.html#line526">line 526</a>
</li></ul></dd>
@@ -834,7 +834,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.muc.js.html">jsxc.lib.muc.js</a>, <a href="jsxc.lib.muc.js.html#line1145">line 1145</a>
<a href="jsxc.lib.muc.js.html">jsxc.lib.muc.js</a>, <a href="jsxc.lib.muc.js.html#line1222">line 1222</a>
</li></ul></dd>
@@ -1155,7 +1155,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.muc.js.html">jsxc.lib.muc.js</a>, <a href="jsxc.lib.muc.js.html#line581">line 581</a>
<a href="jsxc.lib.muc.js.html">jsxc.lib.muc.js</a>, <a href="jsxc.lib.muc.js.html#line589">line 589</a>
</li></ul></dd>
@@ -1318,7 +1318,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.muc.js.html">jsxc.lib.muc.js</a>, <a href="jsxc.lib.muc.js.html#line1057">line 1057</a>
<a href="jsxc.lib.muc.js.html">jsxc.lib.muc.js</a>, <a href="jsxc.lib.muc.js.html#line1134">line 1134</a>
</li></ul></dd>
@@ -1575,7 +1575,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.muc.js.html">jsxc.lib.muc.js</a>, <a href="jsxc.lib.muc.js.html#line443">line 443</a>
<a href="jsxc.lib.muc.js.html">jsxc.lib.muc.js</a>, <a href="jsxc.lib.muc.js.html#line447">line 447</a>
</li></ul></dd>
@@ -1692,7 +1692,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.muc.js.html">jsxc.lib.muc.js</a>, <a href="jsxc.lib.muc.js.html#line472">line 472</a>
<a href="jsxc.lib.muc.js.html">jsxc.lib.muc.js</a>, <a href="jsxc.lib.muc.js.html#line476">line 476</a>
</li></ul></dd>
@@ -1873,7 +1873,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.muc.js.html">jsxc.lib.muc.js</a>, <a href="jsxc.lib.muc.js.html#line1248">line 1248</a>
<a href="jsxc.lib.muc.js.html">jsxc.lib.muc.js</a>, <a href="jsxc.lib.muc.js.html#line1353">line 1353</a>
</li></ul></dd>
@@ -1990,7 +1990,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.muc.js.html">jsxc.lib.muc.js</a>, <a href="jsxc.lib.muc.js.html#line1216">line 1216</a>
<a href="jsxc.lib.muc.js.html">jsxc.lib.muc.js</a>, <a href="jsxc.lib.muc.js.html#line1305">line 1305</a>
</li></ul></dd>
@@ -2107,7 +2107,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.muc.js.html">jsxc.lib.muc.js</a>, <a href="jsxc.lib.muc.js.html#line493">line 493</a>
<a href="jsxc.lib.muc.js.html">jsxc.lib.muc.js</a>, <a href="jsxc.lib.muc.js.html#line497">line 497</a>
</li></ul></dd>
@@ -2224,7 +2224,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.muc.js.html">jsxc.lib.muc.js</a>, <a href="jsxc.lib.muc.js.html#line1161">line 1161</a>
<a href="jsxc.lib.muc.js.html">jsxc.lib.muc.js</a>, <a href="jsxc.lib.muc.js.html#line1238">line 1238</a>
</li></ul></dd>
@@ -2427,7 +2427,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.muc.js.html">jsxc.lib.muc.js</a>, <a href="jsxc.lib.muc.js.html#line721">line 721</a>
<a href="jsxc.lib.muc.js.html">jsxc.lib.muc.js</a>, <a href="jsxc.lib.muc.js.html#line724">line 724</a>
</li></ul></dd>
@@ -2585,7 +2585,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.muc.js.html">jsxc.lib.muc.js</a>, <a href="jsxc.lib.muc.js.html#line852">line 852</a>
<a href="jsxc.lib.muc.js.html">jsxc.lib.muc.js</a>, <a href="jsxc.lib.muc.js.html#line867">line 867</a>
</li></ul></dd>
@@ -2747,7 +2747,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.muc.js.html">jsxc.lib.muc.js</a>, <a href="jsxc.lib.muc.js.html#line1031">line 1031</a>
<a href="jsxc.lib.muc.js.html">jsxc.lib.muc.js</a>, <a href="jsxc.lib.muc.js.html#line1099">line 1099</a>
</li></ul></dd>
@@ -2887,7 +2887,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.muc.js.html">jsxc.lib.muc.js</a>, <a href="jsxc.lib.muc.js.html#line1100">line 1100</a>
<a href="jsxc.lib.muc.js.html">jsxc.lib.muc.js</a>, <a href="jsxc.lib.muc.js.html#line1177">line 1177</a>
</li></ul></dd>
@@ -3027,7 +3027,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.muc.js.html">jsxc.lib.muc.js</a>, <a href="jsxc.lib.muc.js.html#line1116">line 1116</a>
<a href="jsxc.lib.muc.js.html">jsxc.lib.muc.js</a>, <a href="jsxc.lib.muc.js.html#line1193">line 1193</a>
</li></ul></dd>
@@ -3306,7 +3306,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.muc.js.html">jsxc.lib.muc.js</a>, <a href="jsxc.lib.muc.js.html#line360">line 360</a>
<a href="jsxc.lib.muc.js.html">jsxc.lib.muc.js</a>, <a href="jsxc.lib.muc.js.html#line364">line 364</a>
</li></ul></dd>
@@ -3347,13 +3347,13 @@
</div>
<nav>
<h2><a href="index.html">Index</a></h2><h3>Namespaces</h3><ul><li><a href="jsxc.html">jsxc</a></li><li><a href="jsxc.gui.html">gui</a></li><li><a href="jsxc.gui.dialog.html">dialog</a></li><li><a href="jsxc.gui.queryActions.html">queryActions</a></li><li><a href="jsxc.gui.roster.html">roster</a></li><li><a href="jsxc.gui.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.bookmarks.html">bookmarks</a></li><li><a href="jsxc.xmpp.carbons.html">carbons</a></li></ul><h3><a href="global.html">Global</a></h3>
<h2><a href="index.html">Index</a></h2><h3>Classes</h3><ul><li><a href="jsxc.Message.html">Message</a></li></ul><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.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.bookmarks.html">bookmarks</a></li><li><a href="jsxc.xmpp.carbons.html">carbons</a></li></ul><h3>Global</h3><ul><li>{boolean}</li><li>{integer}</li><li>{string}</li></ul>
</nav>
<br clear="both">
<footer>
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Tue Nov 17 2015 17:01:04 GMT+0100 (CET)
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Fri Mar 11 2016 17:32:12 GMT+0100 (CET)
</footer>
<script> prettyPrint(); </script>
+2 -2
Ver Arquivo
@@ -1250,13 +1250,13 @@ messages.
</div>
<nav>
<h2><a href="index.html">Index</a></h2><h3>Namespaces</h3><ul><li><a href="jsxc.html">jsxc</a></li><li><a href="jsxc.gui.html">gui</a></li><li><a href="jsxc.gui.dialog.html">dialog</a></li><li><a href="jsxc.gui.queryActions.html">queryActions</a></li><li><a href="jsxc.gui.roster.html">roster</a></li><li><a href="jsxc.gui.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.bookmarks.html">bookmarks</a></li><li><a href="jsxc.xmpp.carbons.html">carbons</a></li></ul><h3><a href="global.html">Global</a></h3>
<h2><a href="index.html">Index</a></h2><h3>Classes</h3><ul><li><a href="jsxc.Message.html">Message</a></li></ul><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.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.bookmarks.html">bookmarks</a></li><li><a href="jsxc.xmpp.carbons.html">carbons</a></li></ul><h3>Global</h3><ul><li>{boolean}</li><li>{integer}</li><li>{string}</li></ul>
</nav>
<br clear="both">
<footer>
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Tue Nov 17 2015 17:01:05 GMT+0100 (CET)
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Fri Mar 11 2016 17:32:12 GMT+0100 (CET)
</footer>
<script> prettyPrint(); </script>
+42 -100
Ver Arquivo
@@ -188,7 +188,7 @@
<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#line113">line 113</a>
<a href="jsxc.lib.options.js.html">jsxc.lib.options.js</a>, <a href="jsxc.lib.options.js.html#line128">line 128</a>
</li></ul></dd>
@@ -296,7 +296,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.options.js.html">jsxc.lib.options.js</a>, <a href="jsxc.lib.options.js.html#line110">line 110</a>
<a href="jsxc.lib.options.js.html">jsxc.lib.options.js</a>, <a href="jsxc.lib.options.js.html#line125">line 125</a>
</li></ul></dd>
@@ -350,7 +350,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.options.js.html">jsxc.lib.options.js</a>, <a href="jsxc.lib.options.js.html#line205">line 205</a>
<a href="jsxc.lib.options.js.html">jsxc.lib.options.js</a>, <a href="jsxc.lib.options.js.html#line217">line 217</a>
</li></ul></dd>
@@ -404,7 +404,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.options.js.html">jsxc.lib.options.js</a>, <a href="jsxc.lib.options.js.html#line139">line 139</a>
<a href="jsxc.lib.options.js.html">jsxc.lib.options.js</a>, <a href="jsxc.lib.options.js.html#line151">line 151</a>
</li></ul></dd>
@@ -467,60 +467,6 @@
</dl>
</dd>
<dt>
<h4 class="name" id="loginTimeout"><span class="type-signature">&lt;static> </span>loginTimeout<span class="type-signature"></span></h4>
</dt>
<dd>
<div class="description">
Timeout for restore in ms
</div>
<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#line128">line 128</a>
</li></ul></dd>
</dl>
@@ -566,7 +512,7 @@
<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#line104">line 104</a>
<a href="jsxc.lib.options.js.html">jsxc.lib.options.js</a>, <a href="jsxc.lib.options.js.html#line119">line 119</a>
</li></ul></dd>
@@ -620,7 +566,7 @@
<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#line142">line 142</a>
<a href="jsxc.lib.options.js.html">jsxc.lib.options.js</a>, <a href="jsxc.lib.options.js.html#line154">line 154</a>
</li></ul></dd>
@@ -674,7 +620,7 @@
<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#line119">line 119</a>
<a href="jsxc.lib.options.js.html">jsxc.lib.options.js</a>, <a href="jsxc.lib.options.js.html#line134">line 134</a>
</li></ul></dd>
@@ -728,7 +674,7 @@
<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#line107">line 107</a>
<a href="jsxc.lib.options.js.html">jsxc.lib.options.js</a>, <a href="jsxc.lib.options.js.html#line122">line 122</a>
</li></ul></dd>
@@ -782,7 +728,7 @@
<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#line233">line 233</a>
<a href="jsxc.lib.options.js.html">jsxc.lib.options.js</a>, <a href="jsxc.lib.options.js.html#line248">line 248</a>
</li></ul></dd>
@@ -890,7 +836,7 @@
<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#line122">line 122</a>
<a href="jsxc.lib.options.js.html">jsxc.lib.options.js</a>, <a href="jsxc.lib.options.js.html#line137">line 137</a>
</li></ul></dd>
@@ -998,7 +944,7 @@
<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#line125">line 125</a>
<a href="jsxc.lib.options.js.html">jsxc.lib.options.js</a>, <a href="jsxc.lib.options.js.html#line140">line 140</a>
</li></ul></dd>
@@ -1052,7 +998,7 @@
<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#line116">line 116</a>
<a href="jsxc.lib.options.js.html">jsxc.lib.options.js</a>, <a href="jsxc.lib.options.js.html#line131">line 131</a>
</li></ul></dd>
@@ -1106,7 +1052,7 @@
<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#line219">line 219</a>
<a href="jsxc.lib.options.js.html">jsxc.lib.options.js</a>, <a href="jsxc.lib.options.js.html#line231">line 231</a>
</li></ul></dd>
@@ -1212,7 +1158,7 @@
<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#line216">line 216</a>
<a href="jsxc.lib.options.js.html">jsxc.lib.options.js</a>, <a href="jsxc.lib.options.js.html#line228">line 228</a>
</li></ul></dd>
@@ -1377,7 +1323,7 @@
<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#line150">line 150</a>
<a href="jsxc.lib.options.js.html">jsxc.lib.options.js</a>, <a href="jsxc.lib.options.js.html#line162">line 162</a>
</li></ul></dd>
@@ -1447,7 +1393,7 @@ connection is found.
<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#line134">line 134</a>
<a href="jsxc.lib.options.js.html">jsxc.lib.options.js</a>, <a href="jsxc.lib.options.js.html#line146">line 146</a>
</li></ul></dd>
@@ -1564,7 +1510,7 @@ connection is found.
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line197">line 197</a>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line206">line 206</a>
</li></ul></dd>
@@ -1714,7 +1660,7 @@ connection is found.
<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#line189">line 189</a>
<a href="jsxc.lib.options.js.html">jsxc.lib.options.js</a>, <a href="jsxc.lib.options.js.html#line201">line 201</a>
</li></ul></dd>
@@ -1877,7 +1823,7 @@ connection is found.
<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#line169">line 169</a>
<a href="jsxc.lib.options.js.html">jsxc.lib.options.js</a>, <a href="jsxc.lib.options.js.html#line181">line 181</a>
</li></ul></dd>
@@ -1905,7 +1851,7 @@ connection is found.
<dt>
<h4 class="name" id="saveSettinsPermanent"><span class="type-signature">&lt;static> </span>saveSettinsPermanent<span class="signature">(data)</span><span class="type-signature"> &rarr; {boolean}</span></h4>
<h4 class="name" id="saveSettinsPermanent"><span class="type-signature">&lt;static> </span>saveSettinsPermanent<span class="signature">(data, cb)</span><span class="type-signature"></span></h4>
</dt>
@@ -1962,6 +1908,24 @@ connection is found.
</tr>
<tr>
<td class="name"><code>cb</code></td>
<td class="type">
</td>
<td class="description last">Called with true on success, false otherwise</td>
</tr>
</tbody>
</table>
@@ -1989,7 +1953,7 @@ connection is found.
<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#line178">line 178</a>
<a href="jsxc.lib.options.js.html">jsxc.lib.options.js</a>, <a href="jsxc.lib.options.js.html#line190">line 190</a>
</li></ul></dd>
@@ -2010,28 +1974,6 @@ connection is found.
<h5>Returns:</h5>
<div class="param-desc">
false if function failes
</div>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type">boolean</span>
</dd>
</dl>
</dd>
@@ -2151,7 +2093,7 @@ connection is found.
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line209">line 209</a>
<a href="jsxc.lib.js.html">jsxc.lib.js</a>, <a href="jsxc.lib.js.html#line222">line 222</a>
</li></ul></dd>
@@ -2192,13 +2134,13 @@ connection is found.
</div>
<nav>
<h2><a href="index.html">Index</a></h2><h3>Namespaces</h3><ul><li><a href="jsxc.html">jsxc</a></li><li><a href="jsxc.gui.html">gui</a></li><li><a href="jsxc.gui.dialog.html">dialog</a></li><li><a href="jsxc.gui.queryActions.html">queryActions</a></li><li><a href="jsxc.gui.roster.html">roster</a></li><li><a href="jsxc.gui.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.bookmarks.html">bookmarks</a></li><li><a href="jsxc.xmpp.carbons.html">carbons</a></li></ul><h3><a href="global.html">Global</a></h3>
<h2><a href="index.html">Index</a></h2><h3>Classes</h3><ul><li><a href="jsxc.Message.html">Message</a></li></ul><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.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.bookmarks.html">bookmarks</a></li><li><a href="jsxc.xmpp.carbons.html">carbons</a></li></ul><h3>Global</h3><ul><li>{boolean}</li><li>{integer}</li><li>{string}</li></ul>
</nav>
<br clear="both">
<footer>
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Tue Nov 17 2015 17:01:05 GMT+0100 (CET)
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Fri Mar 11 2016 17:32:13 GMT+0100 (CET)
</footer>
<script> prettyPrint(); </script>
+14 -14
Ver Arquivo
@@ -197,7 +197,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.otr.js.html">jsxc.lib.otr.js</a>, <a href="jsxc.lib.otr.js.html#line453">line 453</a>
<a href="jsxc.lib.otr.js.html">jsxc.lib.otr.js</a>, <a href="jsxc.lib.otr.js.html#line500">line 500</a>
</li></ul></dd>
@@ -314,7 +314,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.otr.js.html">jsxc.lib.otr.js</a>, <a href="jsxc.lib.otr.js.html#line301">line 301</a>
<a href="jsxc.lib.otr.js.html">jsxc.lib.otr.js</a>, <a href="jsxc.lib.otr.js.html#line349">line 349</a>
</li></ul></dd>
@@ -431,7 +431,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.otr.js.html">jsxc.lib.otr.js</a>, <a href="jsxc.lib.otr.js.html#line54">line 54</a>
<a href="jsxc.lib.otr.js.html">jsxc.lib.otr.js</a>, <a href="jsxc.lib.otr.js.html#line68">line 68</a>
</li></ul></dd>
@@ -518,7 +518,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.otr.js.html">jsxc.lib.otr.js</a>, <a href="jsxc.lib.otr.js.html#line368">line 368</a>
<a href="jsxc.lib.otr.js.html">jsxc.lib.otr.js</a>, <a href="jsxc.lib.otr.js.html#line416">line 416</a>
</li></ul></dd>
@@ -653,7 +653,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.otr.js.html">jsxc.lib.otr.js</a>, <a href="jsxc.lib.otr.js.html#line467">line 467</a>
<a href="jsxc.lib.otr.js.html">jsxc.lib.otr.js</a>, <a href="jsxc.lib.otr.js.html#line514">line 514</a>
</li></ul></dd>
@@ -770,7 +770,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.otr.js.html">jsxc.lib.otr.js</a>, <a href="jsxc.lib.otr.js.html#line266">line 266</a>
<a href="jsxc.lib.otr.js.html">jsxc.lib.otr.js</a>, <a href="jsxc.lib.otr.js.html#line314">line 314</a>
</li></ul></dd>
@@ -923,7 +923,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.otr.js.html">jsxc.lib.otr.js</a>, <a href="jsxc.lib.otr.js.html#line283">line 283</a>
<a href="jsxc.lib.otr.js.html">jsxc.lib.otr.js</a>, <a href="jsxc.lib.otr.js.html#line331">line 331</a>
</li></ul></dd>
@@ -1101,7 +1101,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.otr.js.html">jsxc.lib.otr.js</a>, <a href="jsxc.lib.otr.js.html#line205">line 205</a>
<a href="jsxc.lib.otr.js.html">jsxc.lib.otr.js</a>, <a href="jsxc.lib.otr.js.html#line251">line 251</a>
</li></ul></dd>
@@ -1493,7 +1493,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.otr.js.html">jsxc.lib.otr.js</a>, <a href="jsxc.lib.otr.js.html#line333">line 333</a>
<a href="jsxc.lib.otr.js.html">jsxc.lib.otr.js</a>, <a href="jsxc.lib.otr.js.html#line381">line 381</a>
</li></ul></dd>
@@ -1633,7 +1633,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.otr.js.html">jsxc.lib.otr.js</a>, <a href="jsxc.lib.otr.js.html#line40">line 40</a>
<a href="jsxc.lib.otr.js.html">jsxc.lib.otr.js</a>, <a href="jsxc.lib.otr.js.html#line54">line 54</a>
</li></ul></dd>
@@ -1824,7 +1824,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.otr.js.html">jsxc.lib.otr.js</a>, <a href="jsxc.lib.otr.js.html#line236">line 236</a>
<a href="jsxc.lib.otr.js.html">jsxc.lib.otr.js</a>, <a href="jsxc.lib.otr.js.html#line284">line 284</a>
</li></ul></dd>
@@ -1959,7 +1959,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.otr.js.html">jsxc.lib.otr.js</a>, <a href="jsxc.lib.otr.js.html#line248">line 248</a>
<a href="jsxc.lib.otr.js.html">jsxc.lib.otr.js</a>, <a href="jsxc.lib.otr.js.html#line296">line 296</a>
</li></ul></dd>
@@ -2018,13 +2018,13 @@
</div>
<nav>
<h2><a href="index.html">Index</a></h2><h3>Namespaces</h3><ul><li><a href="jsxc.html">jsxc</a></li><li><a href="jsxc.gui.html">gui</a></li><li><a href="jsxc.gui.dialog.html">dialog</a></li><li><a href="jsxc.gui.queryActions.html">queryActions</a></li><li><a href="jsxc.gui.roster.html">roster</a></li><li><a href="jsxc.gui.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.bookmarks.html">bookmarks</a></li><li><a href="jsxc.xmpp.carbons.html">carbons</a></li></ul><h3><a href="global.html">Global</a></h3>
<h2><a href="index.html">Index</a></h2><h3>Classes</h3><ul><li><a href="jsxc.Message.html">Message</a></li></ul><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.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.bookmarks.html">bookmarks</a></li><li><a href="jsxc.xmpp.carbons.html">carbons</a></li></ul><h3>Global</h3><ul><li>{boolean}</li><li>{integer}</li><li>{string}</li></ul>
</nav>
<br clear="both">
<footer>
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Tue Nov 17 2015 17:01:05 GMT+0100 (CET)
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Fri Mar 11 2016 17:32:13 GMT+0100 (CET)
</footer>
<script> prettyPrint(); </script>
+13 -225
Ver Arquivo
@@ -270,7 +270,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.storage.js.html">jsxc.lib.storage.js</a>, <a href="jsxc.lib.storage.js.html#line85">line 85</a>
<a href="jsxc.lib.storage.js.html">jsxc.lib.storage.js</a>, <a href="jsxc.lib.storage.js.html#line89">line 89</a>
</li></ul></dd>
@@ -517,7 +517,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.storage.js.html">jsxc.lib.storage.js</a>, <a href="jsxc.lib.storage.js.html#line102">line 102</a>
<a href="jsxc.lib.storage.js.html">jsxc.lib.storage.js</a>, <a href="jsxc.lib.storage.js.html#line106">line 106</a>
</li></ul></dd>
@@ -667,7 +667,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.storage.js.html">jsxc.lib.storage.js</a>, <a href="jsxc.lib.storage.js.html#line214">line 214</a>
<a href="jsxc.lib.storage.js.html">jsxc.lib.storage.js</a>, <a href="jsxc.lib.storage.js.html#line218">line 218</a>
</li></ul></dd>
@@ -901,7 +901,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.storage.js.html">jsxc.lib.storage.js</a>, <a href="jsxc.lib.storage.js.html#line264">line 264</a>
<a href="jsxc.lib.storage.js.html">jsxc.lib.storage.js</a>, <a href="jsxc.lib.storage.js.html#line268">line 268</a>
</li></ul></dd>
@@ -1064,7 +1064,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.storage.js.html">jsxc.lib.storage.js</a>, <a href="jsxc.lib.storage.js.html#line227">line 227</a>
<a href="jsxc.lib.storage.js.html">jsxc.lib.storage.js</a>, <a href="jsxc.lib.storage.js.html#line231">line 231</a>
</li></ul></dd>
@@ -1222,7 +1222,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.storage.js.html">jsxc.lib.storage.js</a>, <a href="jsxc.lib.storage.js.html#line121">line 121</a>
<a href="jsxc.lib.storage.js.html">jsxc.lib.storage.js</a>, <a href="jsxc.lib.storage.js.html#line125">line 125</a>
</li></ul></dd>
@@ -1334,7 +1334,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.storage.js.html">jsxc.lib.storage.js</a>, <a href="jsxc.lib.storage.js.html#line139">line 139</a>
<a href="jsxc.lib.storage.js.html">jsxc.lib.storage.js</a>, <a href="jsxc.lib.storage.js.html#line143">line 143</a>
</li></ul></dd>
@@ -1464,7 +1464,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.storage.js.html">jsxc.lib.storage.js</a>, <a href="jsxc.lib.storage.js.html#line606">line 606</a>
<a href="jsxc.lib.storage.js.html">jsxc.lib.storage.js</a>, <a href="jsxc.lib.storage.js.html#line576">line 576</a>
</li></ul></dd>
@@ -1509,218 +1509,6 @@
</dd>
<dt>
<h4 class="name" id="saveMessage"><span class="type-signature">&lt;static> </span>saveMessage<span class="signature">(bid, direction, msg, encrypted, forwarded, sender)</span><span class="type-signature"></span></h4>
</dt>
<dd>
<div class="description">
Save message to storage.
</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>bid</code></td>
<td class="type">
</td>
<td class="description last"></td>
</tr>
<tr>
<td class="name"><code>direction</code></td>
<td class="type">
</td>
<td class="description last"></td>
</tr>
<tr>
<td class="name"><code>msg</code></td>
<td class="type">
</td>
<td class="description last"></td>
</tr>
<tr>
<td class="name"><code>encrypted</code></td>
<td class="type">
</td>
<td class="description last"></td>
</tr>
<tr>
<td class="name"><code>forwarded</code></td>
<td class="type">
</td>
<td class="description last"></td>
</tr>
<tr>
<td class="name"><code>sender</code></td>
<td class="type">
</td>
<td class="description last"></td>
</tr>
</tbody>
</table>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.storage.js.html">jsxc.lib.storage.js</a>, <a href="jsxc.lib.storage.js.html#line572">line 572</a>
</li></ul></dd>
</dl>
<h5>Returns:</h5>
<div class="param-desc">
post
</div>
</dd>
@@ -1861,7 +1649,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.storage.js.html">jsxc.lib.storage.js</a>, <a href="jsxc.lib.storage.js.html#line35">line 35</a>
<a href="jsxc.lib.storage.js.html">jsxc.lib.storage.js</a>, <a href="jsxc.lib.storage.js.html#line39">line 39</a>
</li></ul></dd>
@@ -2087,7 +1875,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.storage.js.html">jsxc.lib.storage.js</a>, <a href="jsxc.lib.storage.js.html#line161">line 161</a>
<a href="jsxc.lib.storage.js.html">jsxc.lib.storage.js</a>, <a href="jsxc.lib.storage.js.html#line165">line 165</a>
</li></ul></dd>
@@ -2282,7 +2070,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.storage.js.html">jsxc.lib.storage.js</a>, <a href="jsxc.lib.storage.js.html#line193">line 193</a>
<a href="jsxc.lib.storage.js.html">jsxc.lib.storage.js</a>, <a href="jsxc.lib.storage.js.html#line197">line 197</a>
</li></ul></dd>
@@ -2323,13 +2111,13 @@
</div>
<nav>
<h2><a href="index.html">Index</a></h2><h3>Namespaces</h3><ul><li><a href="jsxc.html">jsxc</a></li><li><a href="jsxc.gui.html">gui</a></li><li><a href="jsxc.gui.dialog.html">dialog</a></li><li><a href="jsxc.gui.queryActions.html">queryActions</a></li><li><a href="jsxc.gui.roster.html">roster</a></li><li><a href="jsxc.gui.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.bookmarks.html">bookmarks</a></li><li><a href="jsxc.xmpp.carbons.html">carbons</a></li></ul><h3><a href="global.html">Global</a></h3>
<h2><a href="index.html">Index</a></h2><h3>Classes</h3><ul><li><a href="jsxc.Message.html">Message</a></li></ul><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.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.bookmarks.html">bookmarks</a></li><li><a href="jsxc.xmpp.carbons.html">carbons</a></li></ul><h3>Global</h3><ul><li>{boolean}</li><li>{integer}</li><li>{string}</li></ul>
</nav>
<br clear="both">
<footer>
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Tue Nov 17 2015 17:01:05 GMT+0100 (CET)
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Fri Mar 11 2016 17:32:13 GMT+0100 (CET)
</footer>
<script> prettyPrint(); </script>
+562 -323
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+2 -2
Ver Arquivo
@@ -1781,13 +1781,13 @@
</div>
<nav>
<h2><a href="index.html">Index</a></h2><h3>Namespaces</h3><ul><li><a href="jsxc.html">jsxc</a></li><li><a href="jsxc.gui.html">gui</a></li><li><a href="jsxc.gui.dialog.html">dialog</a></li><li><a href="jsxc.gui.queryActions.html">queryActions</a></li><li><a href="jsxc.gui.roster.html">roster</a></li><li><a href="jsxc.gui.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.bookmarks.html">bookmarks</a></li><li><a href="jsxc.xmpp.carbons.html">carbons</a></li></ul><h3><a href="global.html">Global</a></h3>
<h2><a href="index.html">Index</a></h2><h3>Classes</h3><ul><li><a href="jsxc.Message.html">Message</a></li></ul><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.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.bookmarks.html">bookmarks</a></li><li><a href="jsxc.xmpp.carbons.html">carbons</a></li></ul><h3>Global</h3><ul><li>{boolean}</li><li>{integer}</li><li>{string}</li></ul>
</nav>
<br clear="both">
<footer>
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Tue Nov 17 2015 17:01:05 GMT+0100 (CET)
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Fri Mar 11 2016 17:32:13 GMT+0100 (CET)
</footer>
<script> prettyPrint(); </script>
+6 -6
Ver Arquivo
@@ -66,7 +66,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.xmpp.js.html">jsxc.lib.xmpp.js</a>, <a href="jsxc.lib.xmpp.js.html#line1121">line 1121</a>
<a href="jsxc.lib.xmpp.js.html">jsxc.lib.xmpp.js</a>, <a href="jsxc.lib.xmpp.js.html#line1152">line 1152</a>
</li></ul></dd>
@@ -184,7 +184,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.xmpp.js.html">jsxc.lib.xmpp.js</a>, <a href="jsxc.lib.xmpp.js.html#line1161">line 1161</a>
<a href="jsxc.lib.xmpp.js.html">jsxc.lib.xmpp.js</a>, <a href="jsxc.lib.xmpp.js.html#line1192">line 1192</a>
</li></ul></dd>
@@ -296,7 +296,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.xmpp.js.html">jsxc.lib.xmpp.js</a>, <a href="jsxc.lib.xmpp.js.html#line1135">line 1135</a>
<a href="jsxc.lib.xmpp.js.html">jsxc.lib.xmpp.js</a>, <a href="jsxc.lib.xmpp.js.html#line1166">line 1166</a>
</li></ul></dd>
@@ -408,7 +408,7 @@
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="jsxc.lib.xmpp.js.html">jsxc.lib.xmpp.js</a>, <a href="jsxc.lib.xmpp.js.html#line1187">line 1187</a>
<a href="jsxc.lib.xmpp.js.html">jsxc.lib.xmpp.js</a>, <a href="jsxc.lib.xmpp.js.html#line1218">line 1218</a>
</li></ul></dd>
@@ -449,13 +449,13 @@
</div>
<nav>
<h2><a href="index.html">Index</a></h2><h3>Namespaces</h3><ul><li><a href="jsxc.html">jsxc</a></li><li><a href="jsxc.gui.html">gui</a></li><li><a href="jsxc.gui.dialog.html">dialog</a></li><li><a href="jsxc.gui.queryActions.html">queryActions</a></li><li><a href="jsxc.gui.roster.html">roster</a></li><li><a href="jsxc.gui.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.bookmarks.html">bookmarks</a></li><li><a href="jsxc.xmpp.carbons.html">carbons</a></li></ul><h3><a href="global.html">Global</a></h3>
<h2><a href="index.html">Index</a></h2><h3>Classes</h3><ul><li><a href="jsxc.Message.html">Message</a></li></ul><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.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.bookmarks.html">bookmarks</a></li><li><a href="jsxc.xmpp.carbons.html">carbons</a></li></ul><h3>Global</h3><ul><li>{boolean}</li><li>{integer}</li><li>{string}</li></ul>
</nav>
<br clear="both">
<footer>
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Tue Nov 17 2015 17:01:05 GMT+0100 (CET)
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Fri Mar 11 2016 17:32:13 GMT+0100 (CET)
</footer>
<script> prettyPrint(); </script>
+26 -118
Ver Arquivo
@@ -396,7 +396,7 @@
<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#line996">line 996</a>
<a href="jsxc.lib.xmpp.js.html">jsxc.lib.xmpp.js</a>, <a href="jsxc.lib.xmpp.js.html#line1027">line 1027</a>
</li></ul></dd>
@@ -536,7 +536,7 @@
<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#line893">line 893</a>
<a href="jsxc.lib.xmpp.js.html">jsxc.lib.xmpp.js</a>, <a href="jsxc.lib.xmpp.js.html#line937">line 937</a>
</li></ul></dd>
@@ -605,7 +605,7 @@
<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#line285">line 285</a>
<a href="jsxc.lib.xmpp.js.html">jsxc.lib.xmpp.js</a>, <a href="jsxc.lib.xmpp.js.html#line278">line 278</a>
</li></ul></dd>
@@ -674,76 +674,7 @@
<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#line234">line 234</a>
</li></ul></dd>
</dl>
</dd>
<dt>
<h4 class="name" id="connectionReady"><span class="type-signature">&lt;static> </span>connectionReady<span class="signature">()</span><span class="type-signature"></span></h4>
</dt>
<dd>
<div class="description">
Triggered if the connection is ready
</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#line354">line 354</a>
<a href="jsxc.lib.xmpp.js.html">jsxc.lib.xmpp.js</a>, <a href="jsxc.lib.xmpp.js.html#line245">line 245</a>
</li></ul></dd>
@@ -812,7 +743,7 @@
<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#line400">line 400</a>
<a href="jsxc.lib.xmpp.js.html">jsxc.lib.xmpp.js</a>, <a href="jsxc.lib.xmpp.js.html#line419">line 419</a>
</li></ul></dd>
@@ -924,7 +855,7 @@
<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>
<a href="jsxc.lib.xmpp.js.html">jsxc.lib.xmpp.js</a>, <a href="jsxc.lib.xmpp.js.html#line1085">line 1085</a>
</li></ul></dd>
@@ -1097,7 +1028,7 @@
<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#line1077">line 1077</a>
<a href="jsxc.lib.xmpp.js.html">jsxc.lib.xmpp.js</a>, <a href="jsxc.lib.xmpp.js.html#line1108">line 1108</a>
</li></ul></dd>
@@ -1267,7 +1198,7 @@
<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#line1031">line 1031</a>
<a href="jsxc.lib.xmpp.js.html">jsxc.lib.xmpp.js</a>, <a href="jsxc.lib.xmpp.js.html#line1062">line 1062</a>
</li></ul></dd>
@@ -1384,7 +1315,7 @@
<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#line168">line 168</a>
<a href="jsxc.lib.xmpp.js.html">jsxc.lib.xmpp.js</a>, <a href="jsxc.lib.xmpp.js.html#line179">line 179</a>
</li></ul></dd>
@@ -1471,7 +1402,7 @@
<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#line454">line 454</a>
<a href="jsxc.lib.xmpp.js.html">jsxc.lib.xmpp.js</a>, <a href="jsxc.lib.xmpp.js.html#line472">line 472</a>
</li></ul></dd>
@@ -1588,7 +1519,7 @@
<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#line441">line 441</a>
<a href="jsxc.lib.xmpp.js.html">jsxc.lib.xmpp.js</a>, <a href="jsxc.lib.xmpp.js.html#line459">line 459</a>
</li></ul></dd>
@@ -1705,7 +1636,7 @@
<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#line738">line 738</a>
<a href="jsxc.lib.xmpp.js.html">jsxc.lib.xmpp.js</a>, <a href="jsxc.lib.xmpp.js.html#line769">line 769</a>
</li></ul></dd>
@@ -1840,7 +1771,7 @@
<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#line603">line 603</a>
<a href="jsxc.lib.xmpp.js.html">jsxc.lib.xmpp.js</a>, <a href="jsxc.lib.xmpp.js.html#line621">line 621</a>
</li></ul></dd>
@@ -1868,7 +1799,7 @@
<dt>
<h4 class="name" id="onRidChange"><span class="type-signature">&lt;private, static> </span>onRidChange<span class="signature">(ev, data)</span><span class="type-signature"></span></h4>
<h4 class="name" id="onRidChange"><span class="type-signature">&lt;private, static> </span>onRidChange<span class="signature">(rid)</span><span class="type-signature"></span></h4>
</dt>
@@ -1910,13 +1841,13 @@
<tr>
<td class="name"><code>ev</code></td>
<td class="name"><code>rid</code></td>
<td class="type">
<span class="param-type">event</span>
<span class="param-type">integer</span>
@@ -1926,30 +1857,7 @@
<td class="description last"></td>
</tr>
<tr>
<td class="name"><code>data</code></td>
<td class="type">
<span class="param-type">obejct</span>
</td>
<td class="description last"></td>
<td class="description last">next valid request id</td>
</tr>
@@ -1980,7 +1888,7 @@
<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#line862">line 862</a>
<a href="jsxc.lib.xmpp.js.html">jsxc.lib.xmpp.js</a>, <a href="jsxc.lib.xmpp.js.html#line906">line 906</a>
</li></ul></dd>
@@ -2097,7 +2005,7 @@
<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#line477">line 477</a>
<a href="jsxc.lib.xmpp.js.html">jsxc.lib.xmpp.js</a>, <a href="jsxc.lib.xmpp.js.html#line495">line 495</a>
</li></ul></dd>
@@ -2214,7 +2122,7 @@
<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#line529">line 529</a>
<a href="jsxc.lib.xmpp.js.html">jsxc.lib.xmpp.js</a>, <a href="jsxc.lib.xmpp.js.html#line547">line 547</a>
</li></ul></dd>
@@ -2353,7 +2261,7 @@
<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#line928">line 928</a>
<a href="jsxc.lib.xmpp.js.html">jsxc.lib.xmpp.js</a>, <a href="jsxc.lib.xmpp.js.html#line972">line 972</a>
</li></ul></dd>
@@ -2493,7 +2401,7 @@
<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#line872">line 872</a>
<a href="jsxc.lib.xmpp.js.html">jsxc.lib.xmpp.js</a>, <a href="jsxc.lib.xmpp.js.html#line916">line 916</a>
</li></ul></dd>
@@ -2641,7 +2549,7 @@
<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#line979">line 979</a>
<a href="jsxc.lib.xmpp.js.html">jsxc.lib.xmpp.js</a>, <a href="jsxc.lib.xmpp.js.html#line1010">line 1010</a>
</li></ul></dd>
@@ -2710,7 +2618,7 @@
<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#line365">line 365</a>
<a href="jsxc.lib.xmpp.js.html">jsxc.lib.xmpp.js</a>, <a href="jsxc.lib.xmpp.js.html#line384">line 384</a>
</li></ul></dd>
@@ -2751,13 +2659,13 @@
</div>
<nav>
<h2><a href="index.html">Index</a></h2><h3>Namespaces</h3><ul><li><a href="jsxc.html">jsxc</a></li><li><a href="jsxc.gui.html">gui</a></li><li><a href="jsxc.gui.dialog.html">dialog</a></li><li><a href="jsxc.gui.queryActions.html">queryActions</a></li><li><a href="jsxc.gui.roster.html">roster</a></li><li><a href="jsxc.gui.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.bookmarks.html">bookmarks</a></li><li><a href="jsxc.xmpp.carbons.html">carbons</a></li></ul><h3><a href="global.html">Global</a></h3>
<h2><a href="index.html">Index</a></h2><h3>Classes</h3><ul><li><a href="jsxc.Message.html">Message</a></li></ul><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.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.bookmarks.html">bookmarks</a></li><li><a href="jsxc.xmpp.carbons.html">carbons</a></li></ul><h3>Global</h3><ul><li>{boolean}</li><li>{integer}</li><li>{string}</li></ul>
</nav>
<br clear="both">
<footer>
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Tue Nov 17 2015 17:01:05 GMT+0100 (CET)
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Fri Mar 11 2016 17:32:13 GMT+0100 (CET)
</footer>
<script> prettyPrint(); </script>
-2
Ver Arquivo
@@ -12,7 +12,6 @@
<!-- require:dependencies -->
<link href="../build/css/jquery-ui.min.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" />
<!-- endrequire -->
<link href="css/example.css" media="all" rel="stylesheet" type="text/css" />
@@ -20,7 +19,6 @@
<!-- require:dependencies -->
<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>
-2
Ver Arquivo
@@ -12,7 +12,6 @@
<!-- require:dependencies -->
<link href="../build/css/jquery-ui.min.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" />
<!-- endrequire -->
<link href="css/example.css" media="all" rel="stylesheet" type="text/css" />
@@ -20,7 +19,6 @@
<!-- require:dependencies -->
<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>
-4
Ver Arquivo
@@ -10,14 +10,10 @@
<link href="css/bootstrap.min.css" media="all" rel="stylesheet" type="text/css" />
<link href="../build/css/jquery-ui.min.css" media="all" rel="stylesheet" type="text/css" />
<link href="../build/css/jquery.mCustomScrollbar.css" media="all" rel="stylesheet" type="text/css" />
<link href="../build/css/jquery.colorbox.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" />
<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>
+57
Ver Arquivo
@@ -0,0 +1,57 @@
<?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"
height="16"
width="16"
version="1.1"
id="svg6"
inkscape:version="0.91+devel r"
sodipodi:docname="bookmark_black.svg"
viewBox="0 0 16 16">
<metadata
id="metadata12">
<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="defs10" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1394"
inkscape:window-height="922"
inkscape:document-units="px"
id="namedview8"
showgrid="false"
inkscape:zoom="41.7193"
inkscape:cx="9.0040062"
inkscape:cy="8.196313"
inkscape:window-x="61"
inkscape:window-y="34"
inkscape:window-maximized="0"
inkscape:current-layer="svg6" />
<path
style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.69061381;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 4.1233005,0.89389693 V 14.588472 l 3.8089033,-4.450726 3.8089022,4.450726 V 0.93667093 Z"
id="path4141"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccc" />
</svg>

Depois

Largura:  |  Altura:  |  Tamanho: 1.8 KiB

+58
Ver Arquivo
@@ -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"
height="16"
width="16"
version="1.1"
id="svg6"
inkscape:version="0.91+devel r"
sodipodi:docname="bookmark_white.svg"
viewBox="0 0 16 16">
<metadata
id="metadata12">
<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="defs10" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1394"
inkscape:window-height="922"
inkscape:document-units="px"
id="namedview8"
showgrid="false"
inkscape:zoom="41.7193"
inkscape:cx="9.0040062"
inkscape:cy="8.196313"
inkscape:window-x="61"
inkscape:window-y="34"
inkscape:window-maximized="0"
inkscape:current-layer="svg6" />
<path
style="fill:#ffffff;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.69061381;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 4.1233005,0.89389693 V 14.588472 l 3.8089033,-4.450726 3.8089022,4.450726 V 0.93667093 Z"
id="path4141"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccc" />
</svg>

Depois

Largura:  |  Altura:  |  Tamanho: 1.8 KiB

+67
Ver Arquivo
@@ -0,0 +1,67 @@
<?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 15 15"
id="svg3041"
height="15"
width="15"
version="1.1"
inkscape:version="0.91+devel r"
sodipodi:docname="padlock_open_disabled_black.svg">
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1678"
inkscape:window-height="958"
id="namedview7"
showgrid="false"
inkscape:zoom="22.627417"
inkscape:cx="7.9563473"
inkscape:cy="5.2327464"
inkscape:window-x="51"
inkscape:window-y="34"
inkscape:window-maximized="0"
inkscape:current-layer="svg3041" />
<metadata
id="metadata3047">
<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 />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs3045" />
<path
style="fill:#000000;stroke:none"
d="M 7.53125 0.00390625 C 4.961633 0.00390625 3.4225559 1.2787042 2.7519531 2.5410156 C 2.0813503 3.803327 2.1328125 5.0507812 2.1328125 5.0507812 L 4.03125 4.9921875 C 4.03125 4.9921875 4.019782 4.2051806 4.4296875 3.4335938 C 4.8395929 2.6620069 5.524596 1.9042969 7.53125 1.9042969 C 9.5466986 1.9042969 10.324942 2.6626717 10.789062 3.4199219 C 11.253184 4.177172 11.285156 4.9238281 11.285156 4.9238281 L 11.320312 8.0078125 L 2.1601562 8.0078125 L 2.1601562 15 L 13.220703 15 L 13.220703 9.5371094 L 13.238281 9.5371094 L 13.220703 8.0078125 L 13.185547 4.8730469 L 13.185547 4.8632812 C 13.185547 4.8632812 13.153667 3.6408231 12.410156 2.4277344 C 11.666646 1.2146499 10.092069 0.00390625 7.53125 0.00390625 z "
id="rect3051" />
<path
style="fill:#ffffff;fill-rule:evenodd;stroke:#ffffff;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 0.18997448,16.385763 15.366374,-2.2072779"
id="path4160-1-3-1"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M -0.40599717,17.241436 14.770403,-1.3516053"
id="path4160-1-3"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
</svg>

Depois

Largura:  |  Altura:  |  Tamanho: 2.9 KiB

-7
Ver Arquivo
Diff do arquivo suprimido porque uma ou mais linhas são muito longas
-189
Ver Arquivo
@@ -1,189 +0,0 @@
/* Remove close button from firstrunwizard */
#closeWizard {
display: none !important;
}
/*
Colorbox Core Style:
The following CSS is consistent between example themes and should not be altered.
*/
#colorbox,#cboxOverlay,#cboxWrapper {
position: absolute;
top: 0;
left: 0;
z-index: 9999;
overflow: hidden;
}
#cboxWrapper {
max-width: none;
}
#cboxOverlay {
position: fixed;
width: 100%;
height: 100%;
}
#cboxMiddleLeft,#cboxBottomLeft {
clear: left;
}
#cboxContent {
position: relative;
}
#cboxLoadedContent {
overflow: auto;
-webkit-overflow-scrolling: touch;
}
#cboxTitle {
margin: 0;
}
#cboxLoadingOverlay,#cboxLoadingGraphic {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
#cboxPrevious,#cboxNext,#cboxClose,#cboxSlideshow {
cursor: pointer;
}
.cboxPhoto {
float: left;
margin: auto;
border: 0;
display: block;
max-width: none;
-ms-interpolation-mode: bicubic;
}
.cboxIframe {
width: 100%;
height: 100%;
display: block;
border: 0;
}
#colorbox,#cboxContent,#cboxLoadedContent {
box-sizing: content-box;
-moz-box-sizing: content-box;
-webkit-box-sizing: content-box;
}
/*
User Style:
Change the following styles to modify the appearance of Colorbox. They are
ordered & tabbed in a way that represents the nesting of the generated HTML.
*/
#cboxOverlay {
background: #000;
}
#colorbox {
}
#cboxContent {
margin-top: 20px;
}
.cboxIframe {
background: #fff;
}
#cboxError {
padding: 50px;
border: 0px solid #ccc;
}
#cboxLoadedContent {
border: 0px solid #555;
background: #fff;
border-radius: 5px;
}
#cboxTitle {
position: absolute;
top: -20px;
left: 0;
color: #ccc;
}
#cboxCurrent {
position: absolute;
top: -20px;
right: 0px;
color: #ccc;
}
#cboxSlideshow {
position: absolute;
top: -20px;
right: 90px;
color: #fff;
}
#cboxPrevious:hover {
background-position: bottom left;
}
#cboxNext:hover {
background-position: bottom right;
}
#cboxLoadingOverlay {
background: #fff;
}
#cboxClose {
position: absolute;
top: 5px;
right: 5px;
display: block;
opacity: 0.5;
width: 19px !important;
height: 19px;
border: 0px;
text-indent: -9999px;
background-color: #fff;
}
#cboxClose:before {
content: '×';
position: absolute;
top: 0px;
left: 0px;
display: block;
width: 19px;
height: 19px;
opacity: 0.5;
text-indent: 0;
text-align: center;
line-height: 19px;
font-size: 19px;
}
#cboxClose:before:hover {
opacity: 1;
}
#cboxClose:hover {
background-position: right center !important;
opacity: 1.0;
}
/*
The following fixes a problem where IE7 and IE8 replace a PNG's alpha transparency with a black fill
when an alpha filter (opacity change) is set on the element or ancestor element. This style is not applied to or needed in IE9.
See: http://jacklmoore.com/notes/ie-transparency-problems/
*/
.cboxIE #cboxTopLeft,.cboxIE #cboxTopCenter,.cboxIE #cboxTopRight,.cboxIE #cboxBottomLeft,.cboxIE #cboxBottomCenter,.cboxIE #cboxBottomRight,.cboxIE #cboxMiddleLeft,.cboxIE #cboxMiddleRight
{
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#00FFFFFF,
endColorstr=#00FFFFFF);
}
+1 -1
Ver Arquivo
@@ -241,7 +241,7 @@
"message_not_send_forbidden": "Votre message n'a pas été envoyé parce que vous n'avez pas le droit de parler dans ce salon",
"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": "L'historique du salon est archivé",
"Room_logging_is_enabled": "L'historique du salon est conservé",
"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",
+20 -20
Ver Arquivo
@@ -160,14 +160,14 @@
"Start_video_call": "Iniciar chamada de vídeo",
"Join_chat": null,
"Join": null,
"Room": null,
"Room": "Sala",
"Nickname": "Apelido",
"left_the_building": null,
"entered_the_room": null,
"left_the_building": "__nickname__ deixou o prédio",
"entered_the_room": "__nickname__ entrou na sala",
"is_now_known_as": "__oldNickname__ agora é conhecido como __newNickname__",
"This_room_is": null,
"This_room_is": "Esta sala é",
"muc_hidden": {
"keyword": null,
"keyword": "oculto",
"description": "Não pode ser encontrado através de pesquisa"
},
"muc_membersonly": {
@@ -175,7 +175,7 @@
"description": "você precisa estar na lista de membros"
},
"muc_moderated": {
"keyword": null,
"keyword": "moderado",
"description": "Somente pessoas com \"voice\" podem enviar mensagens"
},
"muc_nonanonymous": {
@@ -183,7 +183,7 @@
"description": null
},
"muc_open": {
"keyword": null,
"keyword": "abrir",
"description": "Todos podem entrar"
},
"muc_passwordprotected": {
@@ -195,7 +195,7 @@
"description": "Não será destruída se o último ocupante tiver saído"
},
"muc_public": {
"keyword": null,
"keyword": "público",
"description": null
},
"muc_semianonymous": {
@@ -203,26 +203,26 @@
"description": "Sua identificação jabber só é exposta para administradores da sala"
},
"muc_temporary": {
"keyword": null,
"keyword": "temporário",
"description": "Será destruída se o último ocupante tiver saído"
},
"muc_unmoderated": {
"keyword": null,
"keyword": "sem moderação",
"description": "Todos tem permissão de enviar mensagens"
},
"muc_unsecured": {
"keyword": null,
"description": "Você não precisa de senha para entrar"
},
"Continue": null,
"Continue": "Avançar",
"Server": null,
"Rooms_are_loaded": null,
"Rooms_are_loaded": "Sala carregada",
"Could_load_only": null,
"muc_explanation": null,
"You_already_joined_this_room": "Você já entrou nesta sala",
"This_room_will_be_closed": null,
"This_room_will_be_closed": "Esta sala será fechada",
"Room_not_found_": null,
"Loading_room_information": null,
"Loading_room_information": "Carregar informação da sala",
"Destroy": null,
"Leave": null,
"changed_subject_to": null,
@@ -235,7 +235,7 @@
"muc_removed_membersonly": "Você foi removido da sala pois a sala foi alterada somente para membros e você não é um membro",
"muc_removed_info_membersonly": null,
"muc_removed_shutdown": null,
"Reason": null,
"Reason": "Motivo",
"message_not_send": null,
"message_not_send_item-not-found": null,
"message_not_send_forbidden": null,
@@ -249,18 +249,18 @@
"The_maximum_number_": null,
"This_room_is_locked_": null,
"You_are_not_allowed_to_create_": null,
"Alert": null,
"Alert": "Alerta",
"Call_started": null,
"Call_terminated": null,
"Carbon_copy": null,
"Enable": null,
"jingle_reason_busy": null,
"jingle_reason_busy": "ocupado",
"jingle_reason_decline": null,
"jingle_reason_success": null,
"Media_failure": null,
"No_local_audio_device": null,
"No_local_video_device": null,
"Ok": null,
"Ok": "Ok",
"PermissionDeniedError": "Você ou seu navegador negou permissão para acessar audio/video",
"Use_local_audio_device": null,
"Use_local_video_device": null,
@@ -281,10 +281,10 @@
"Do_you_want_to_change_the_default_room_configuration": "Você quer alterar as configurações da sala?",
"Default": "Padrão",
"Change": "Alterar",
"Send_file": null,
"Send_file": "Enviar arquivo",
"setting-explanation-carbon": null,
"setting-explanation-login": null,
"setting-explanation-priority": null,
"setting-explanation-xmpp": null
"setting-explanation-xmpp": "Essas opções são usadas para conectar no Servidor XMPP"
}
}
+1 -1
Ver Arquivo
@@ -1,6 +1,6 @@
{
"name": "jsxc",
"version": "3.0.0-beta1",
"version": "3.0.0",
"description": "Real-time chat app",
"homepage": "http://www.jsxc.org/",
"bugs": "https://github.com/jsxc/jsxc/issues",
+25 -6
Ver Arquivo
@@ -24,6 +24,7 @@
#jsxc_dialog {
padding: 20px;
min-width: 320px;
max-width: 100%;
display: inline-block;
text-align: left;
position: relative;
@@ -137,7 +138,7 @@
}
}
.jsxc_libraries {
.jsxc_libraries, .jsxc_credits {
max-width: 300px;
}
}
@@ -318,12 +319,26 @@ img.jsxc_vCard {
.jsxc_btn {
width: auto;
min-width: 25px;
padding: 5px;
background-color: rgba(240, 240, 240, 0.9);
font-weight: bold;
color: #555;
border: 1px solid rgba(190, 190, 190, 0.9);
display: inline-block;
padding: 6px 12px;
margin: 0px 2px;
font-size: 14px;
font-weight: 400;
line-height: 1.42857143;
text-align: center;
white-space: nowrap;
vertical-align: middle;
cursor: pointer;
user-select: none;
background-image: none;
border: 1px solid transparent;
border-radius: 4px;
&.jsxc_btn-default {
border-color: #ccc;
color: #555;
background-color: rgba(240, 240, 240, 0.9);
}
&.jsxc_btn-primary {
color: #fff;
@@ -455,6 +470,10 @@ img.jsxc_vCard {
background-image: image-url("groupcontact_black.svg");
}
.jsxc_bookmarkicon {
background-image: image-url("bookmark_black.svg");
}
.jsxc_more {
float: right;
width: 44px;
+6 -18
Ver Arquivo
@@ -6,35 +6,23 @@
}
.jsxc_windowItem {
&.jsxc_groupchat {
&.jsxc_groupchat.jsxc_normal {
.jsxc_fade {
padding-top: 44px;
.jsxc_min & {
padding-top: 0px;
}
}
.jsxc_video {
display: none;
}
.jsxc_transfer {
display: none;
}
.jsxc_fingerprints, .jsxc_verification, .jsxc_transfer {
.jsxc_fingerprints, .jsxc_verification, .jsxc_transfer, .jsxc_video, .jsxc_sendFile {
display: none;
}
.jsxc_members {
background-image: image-url("group_grey.svg");
background-image: image-url("group_white.svg");
background-size: 15px 15px;
background-repeat: no-repeat;
background-position: center;
&:hover {
background-image: image-url("group_white.svg");
opacity: 1.0;
}
}
@@ -109,8 +97,8 @@
& > li {
display: block;
width: 100%;
height: 27px;
line-height: 27px;
height: 40px;
line-height: 40px;
.jsxc_name {
display: block;
+3 -9
Ver Arquivo
@@ -172,12 +172,6 @@
background-repeat: no-repeat;
background-image: image-url("bookmark_red.svg");
}
.jsxc_bookmarkOptions {
text-indent: 9999px;
background-image: image-url("gear_white.svg");
background-size: 15px 15px;
}
}
}
@@ -195,16 +189,16 @@
.jsxc_name {
height: 100%;
line-height: 35px;
line-height: 40px;
.jsxc_min & {
height: 50%;
line-height: 17.5px;
line-height: 20px;
}
.jsxc_rosteritem & {
height: 50%;
line-height: 17.5px;
line-height: 20px;
}
}
+17 -2
Ver Arquivo
@@ -67,7 +67,6 @@
.jsxc_controlbar {
opacity: 0;
transition: 1s opacity;
}
&:hover {
@@ -187,12 +186,23 @@ div {
right: 0px;
text-align: center;
z-index: 9090;
transition: 1s opacity;
opacity: 0;
@media (min-width: 768px) {
bottom: 5%;
top: initial;
}
&.jsxc_visible {
opacity: 1.0;
}
& > div {
background-color: rgba(0, 0, 0, 0.5);
height: 44px;
border-radius: 22px;
padding: 5px;
padding: 0px 5px;
display: inline-block;
}
@@ -263,6 +273,11 @@ div {
bottom: 0;
width: 250px;
background-color: $window_bg;
display: none;
@media (min-width: 768px) {
display: block;
}
.jsxc_settings {
display: none !important;
+63 -1
Ver Arquivo
@@ -251,6 +251,42 @@
padding: 5px;
border-radius: 3px;
text-align: center;
position: relative;
.jsxc_close {
position: absolute;
top: 0;
right: 0;
height: 44px;
width: 44px;
&:after {
content: '×';
position: absolute;
top: 4px;
right: 4px;
font-size: 20px;
font-family: Arial, sans-serif;
cursor: pointer;
color: #000;
opacity: 0.4;
}
&:hover {
&:after {
opacity: 1;
}
}
@media (min-width: 768px) {
width: 30px;
height: 30px;
}
}
.jsxc_body {
margin-top: 20px;
}
p {
margin-bottom: 10px;
@@ -371,7 +407,6 @@
.jsxc_chatmessage {
margin: 3px;
padding: 4px;
padding-right: 10px;
word-wrap: break-word;
background-color: $chatmessage_bg;
position: relative;
@@ -447,6 +482,23 @@
clear: both;
}
.jsxc_encrypted {
&.jsxc_received.jsxc_out .jsxc_timestamp {
margin-right: 1px;
}
.jsxc_timestamp:after {
content: " ";
display: inline-block;
width: 10px;
height: 8px;
margin-left: 2px;
background-image: image-url("padlock_close_grey.svg");
background-size: contain;
background-repeat: no-repeat;
}
}
.jsxc_in {
float: left;
position: relative;
@@ -478,6 +530,7 @@
position: relative;
max-width: 76%;
margin-right: 10px;
padding-right: 10px;
border-radius: 3px;
background-color: $chatmessage_out_bg;
@@ -551,6 +604,15 @@ div.jsxc_transfer {
opacity: 1.0;
}
&.jsxc_disabled {
background-image: image-url("padlock_open_disabled_black.svg");
cursor: default;
&:hover {
opacity: 0.3;
}
}
&.jsxc_fin {
opacity: 1.0;
background-image: image-url("padlock_close_grey.svg");
+1
Ver Arquivo
@@ -14,3 +14,4 @@ $font_serif: serif;
@import "muc";
@import "jsxc";
@import "webrtc";
-3
Ver Arquivo
@@ -1,3 +0,0 @@
@import "colors";
@import "webrtc";
+1
Ver Arquivo
@@ -17,6 +17,7 @@
* @param {boolean} args.encrypted
* @param {boolean} args.forwarded
* @param {boolean} args.sender
* @param {integer} args.stamp
* @param {object} args.attachment Attached data
* @param {string} args.attachment.name File name
* @param {string} args.attachment.size File size
+53 -25
Ver Arquivo
@@ -828,12 +828,16 @@ jsxc.gui = {
if (navigator) {
var key;
for (key in navigator) {
if (navigator.hasOwnProperty(key) && typeof navigator[key] === 'string') {
if (typeof navigator[key] === 'string') {
userInfo += '<b>' + key + ':</b> ' + navigator[key] + '<br />';
}
}
}
if ($.fn && $.fn.jquery) {
userInfo += '<b>jQuery:</b> ' + $.fn.jquery + '<br />';
}
if (window.screen) {
userInfo += '<b>Height:</b> ' + window.screen.height + '<br />';
userInfo += '<b>Width:</b> ' + window.screen.width + '<br />';
@@ -1043,22 +1047,24 @@ jsxc.gui = {
jsxc.options.set(key, val);
});
var success = jsxc.options.saveSettinsPermanent.call(this, data);
if (typeof self.attr('data-onsubmit') === 'string') {
jsxc.exec(self.attr('data-onsubmit'), [success]);
}
setTimeout(function() {
if (success) {
self.find('button[type="submit"]').switchClass('btn-primary', 'btn-success');
} else {
self.find('button[type="submit"]').switchClass('btn-primary', 'btn-danger');
var cb = function(success) {
if (typeof self.attr('data-onsubmit') === 'string') {
jsxc.exec(self.attr('data-onsubmit'), [success]);
}
setTimeout(function() {
self.find('button[type="submit"]').switchClass('btn-danger btn-success', 'btn-primary');
}, 2000);
}, 200);
if (success) {
self.find('button[type="submit"]').switchClass('btn-primary', 'btn-success');
} else {
self.find('button[type="submit"]').switchClass('btn-primary', 'btn-danger');
}
setTimeout(function() {
self.find('button[type="submit"]').switchClass('btn-danger btn-success', 'btn-primary');
}, 2000);
}, 200);
};
jsxc.options.saveSettinsPermanent.call(this, data, cb);
return false;
});
@@ -1236,7 +1242,7 @@ jsxc.gui = {
* @param bid
*/
unreadMsg: function(bid) {
var winData = jsxc.storage.getUserItem('window', bid);
var winData = jsxc.storage.getUserItem('window', bid) || {};
var count = (winData && winData.unread) || 0;
count = (count === true) ? 1 : count + 1; //unread was boolean (<2.1.0)
@@ -1637,11 +1643,12 @@ jsxc.gui.roster = {
scrollTo: '0px'
});
var chat = jsxc.storage.getUserItem('chat', bid) || [];
var history = jsxc.storage.getUserItem('history', bid) || [];
var i = 0;
while (chat.length > i) {
if (chat[i].direction !== 'sys') {
$('[data-bid="' + bid + '"]').find('.jsxc_lastmsg .jsxc_text').html(chat[i].msg);
while (history.length > i) {
var message = new jsxc.Message(history[i]);
if (message.direction !== jsxc.Message.SYS) {
$('[data-bid="' + bid + '"]').find('.jsxc_lastmsg .jsxc_text').html(message.msg);
break;
}
i++;
@@ -2481,6 +2488,7 @@ jsxc.gui.window = {
* @param {boolean} args.encrypted
* @param {boolean} args.forwarded
* @param {boolean} args.sender
* @param {integer} args.stamp
* @param {object} args.attachment Attached data
* @param {string} args.attachment.name File name
* @param {string} args.attachment.size File size
@@ -2597,6 +2605,9 @@ jsxc.gui.window = {
// translate shortnames to images
msg = jsxc.gui.shortnameToImage(msg);
// replace line breaks
msg = msg.replace(/(\r\n|\r|\n)/g, '<br />');
var msgDiv = $("<div>"),
msgTsDiv = $("<div>");
msgDiv.addClass('jsxc_chatmessage jsxc_' + direction);
@@ -2693,6 +2704,10 @@ jsxc.gui.window = {
}
avatarDiv.attr('title', jsxc.escapeHTML(title));
if (msgDiv.prev().length > 0 && msgDiv.prev().find('.jsxc_avatar').attr('title') === avatarDiv.attr('title')) {
avatarDiv.css('visibility', 'hidden');
}
}
jsxc.gui.detectUriScheme(win);
@@ -2766,7 +2781,11 @@ jsxc.gui.window = {
jsxc.storage.setUserItem('history', bid, []);
jsxc.gui.window.get(bid).find('.jsxc_textarea').empty();
var win = jsxc.gui.window.get(bid);
if (win.length > 0) {
win.find('.jsxc_textarea').empty();
}
},
/**
@@ -2802,10 +2821,19 @@ jsxc.gui.window = {
}
},
showOverlay: function(bid, content) {
showOverlay: function(bid, content, allowClose) {
var win = jsxc.gui.window.get(bid);
win.find('.jsxc_overlay > div').empty().append(content);
win.find('.jsxc_overlay .jsxc_body').empty().append(content);
win.find('.jsxc_overlay .jsxc_close').off('click').click(function() {
jsxc.gui.window.hideOverlay(bid);
});
if (allowClose !== true) {
win.find('.jsxc_overlay .jsxc_close').hide();
} else {
win.find('.jsxc_overlay .jsxc_close').show();
}
win.addClass('jsxc_showOverlay');
},
@@ -2920,7 +2948,7 @@ jsxc.gui.window = {
var msg = $('<div><div><label><input type="file" name="files" /><label></div></div>');
msg.addClass('jsxc_chatmessage');
jsxc.gui.window.showOverlay(bid, msg);
jsxc.gui.window.showOverlay(bid, msg, true);
msg.find('label').click();
@@ -2979,7 +3007,7 @@ jsxc.gui.window = {
}).appendTo(msg);
$('<button>').text($.t('Abort')).click(function() {
$('<button>').addClass('jsxc_btn jsxc_btn-default').text($.t('Abort')).click(function() {
jsxc.gui.window.hideOverlay(bid);
}).appendTo(msg);
});
+9 -4
Ver Arquivo
@@ -141,10 +141,10 @@ jsxc = {
}
}
jsxc.log = jsxc.log + msg + ': ' + d + '\n';
jsxc.log = jsxc.log + '$ ' + msg + ': ' + d + '\n';
} else {
console.log(msg);
jsxc.log = jsxc.log + msg + '\n';
jsxc.log = jsxc.log + '$ ' + msg + '\n';
}
},
@@ -181,6 +181,11 @@ jsxc = {
*/
init: function(options) {
if (options && options.loginForm && typeof options.loginForm.attachIfFound === 'boolean' && !options.loginForm.ifFound) {
// translate deprated option attachIfFound found to new ifFound
options.loginForm.ifFound = (options.loginForm.attachIfFound) ? 'attach' : 'pause';
}
if (options) {
// override default options
$.extend(true, jsxc.options, options);
@@ -273,7 +278,7 @@ jsxc = {
});
// Check if we have to establish a new connection
if (!jsxc.storage.getItem('rid') || !jsxc.storage.getItem('sid') || !jsxc.storage.getItem('jid')) {
if (!(jsxc.storage.getItem('rid') && jsxc.storage.getItem('sid') && jsxc.storage.getItem('jid')) || (jsxc.options.loginForm && jsxc.options.loginForm.ifFound === 'force' && jsxc.isLoginForm())) {
// clean up rid and sid
jsxc.storage.removeItem('rid');
@@ -334,7 +339,7 @@ jsxc = {
return false;
});
} else if (!jsxc.isLoginForm() || (jsxc.options.loginForm && jsxc.options.loginForm.attachIfFound)) {
} else if (!jsxc.isLoginForm() || (jsxc.options.loginForm && jsxc.options.loginForm.ifFound === 'attach')) {
// Restore old connection
+175 -64
Ver Arquivo
@@ -280,6 +280,10 @@ jsxc.muc = {
var bookmark = $("#jsxc_bookmark").prop("checked");
var autojoin = $('#jsxc_autojoin').prop('checked');
// clean up
jsxc.gui.window.clear(room);
jsxc.storage.setUserItem('member', room, {});
self.join(room, nickname, password, roomName, subject, bookmark, autojoin);
return false;
@@ -524,7 +528,11 @@ jsxc.muc = {
var roomdata = jsxc.storage.getUserItem('buddy', room);
jsxc.storage.updateUserItem('buddy', room, 'state', self.CONST.ROOMSTATE.AWAIT_DESTRUCTION);
jsxc.gui.window.postMessage(room, 'sys', $.t('This_room_will_be_closed'));
jsxc.gui.window.postMessage({
bid: room,
direction: jsxc.Message.SYS,
msg: $.t('This_room_will_be_closed')
});
var iq = $iq({
to: room,
@@ -602,7 +610,7 @@ jsxc.muc = {
var ownNickname = own[bid];
var mlIcon = $('<div class="jsxc_members"></div>');
win.find('.jsxc_tools > .jsxc_transfer').after(mlIcon);
win.find('.jsxc_tools > .jsxc_settings').after(mlIcon);
var ml = $('<div class="jsxc_memberlist"><ul></ul></div>');
win.find('.jsxc_fade').prepend(ml);
@@ -671,7 +679,7 @@ jsxc.muc = {
jsxc.muc.scrollMemberListBy(bid, 0);
});
var destroy = $('<li>');
var destroy = $('<a>');
destroy.text($.t('Destroy'));
destroy.addClass('jsxc_destroy');
destroy.hide();
@@ -679,7 +687,7 @@ jsxc.muc = {
self.destroy(bid);
});
win.find('.jsxc_settings ul').append(destroy);
win.find('.jsxc_settings ul').append($('<li>').append(destroy));
if (roomdata.state > self.CONST.ROOMSTATE.INIT) {
var member = jsxc.storage.getUserItem('member', bid) || {};
@@ -693,14 +701,14 @@ jsxc.muc = {
});
}
var leave = $('<li>');
var leave = $('<a>');
leave.text($.t('Leave'));
leave.addClass('jsxc_leave');
leave.click(function() {
self.leave(bid);
});
win.find('.jsxc_settings ul').append(leave);
win.find('.jsxc_settings ul').append($('<li>').append(leave));
},
/**
@@ -742,10 +750,6 @@ jsxc.muc = {
jsxc.storage.setUserItem('roomNames', jsxc.xmpp.conn.muc.roomNames);
// clean up
jsxc.storage.removeUserItem('chat', room);
member = {};
if (jsxc.gui.roster.getItem(room).length === 0) {
var bl = jsxc.storage.getUserItem('buddylist');
bl.push(room);
@@ -768,7 +772,11 @@ jsxc.muc = {
// room has been destroyed
member = {};
jsxc.gui.window.postMessage(room, 'sys', $.t('This_room_has_been_closed'));
jsxc.gui.window.postMessage({
bid: room,
direction: jsxc.Message.SYS,
msg: $.t('This_room_has_been_closed')
});
self.close(room);
} else {
@@ -786,27 +794,39 @@ jsxc.muc = {
// prevent to display enter message
member[newNickname] = {};
jsxc.gui.window.postMessage(room, 'sys', $.t('is_now_known_as', {
oldNickname: nickname,
newNickname: newNickname,
escapeInterpolation: true
}));
jsxc.gui.window.postMessage({
bid: room,
direction: jsxc.Message.SYS,
msg: $.t('is_now_known_as', {
oldNickname: nickname,
newNickname: newNickname,
escapeInterpolation: true
})
});
} else if (codes.length === 0 || (codes.length === 1 && codes.indexOf('110') > -1)) {
// normal user exit
jsxc.gui.window.postMessage(room, 'sys', $.t('left_the_building', {
nickname: nickname,
escapeInterpolation: true
}));
jsxc.gui.window.postMessage({
bid: room,
direction: jsxc.Message.SYS,
msg: $.t('left_the_building', {
nickname: nickname,
escapeInterpolation: true
})
});
}
}
} else {
// new member joined
if (!member[nickname] && own[room]) {
jsxc.gui.window.postMessage(room, 'sys', $.t('entered_the_room', {
nickname: nickname,
escapeInterpolation: true
}));
jsxc.gui.window.postMessage({
bid: room,
direction: jsxc.Message.SYS,
msg: $.t('entered_the_room', {
nickname: nickname,
escapeInterpolation: true
})
});
}
member[nickname] = {
@@ -891,19 +911,35 @@ jsxc.muc = {
},
/** Inform occupants that room logging is now enabled */
170: function(room) {
jsxc.gui.window.postMessage(room, 'sys', $.t('Room_logging_is_enabled'));
jsxc.gui.window.postMessage({
bid: room,
direction: jsxc.Message.SYS,
msg: $.t('Room_logging_is_enabled')
});
},
/** Inform occupants that room logging is now disabled */
171: function(room) {
jsxc.gui.window.postMessage(room, 'sys', $.t('Room_logging_is_disabled'));
jsxc.gui.window.postMessage({
bid: room,
direction: jsxc.Message.SYS,
msg: $.t('Room_logging_is_disabled')
});
},
/** Inform occupants that the room is now non-anonymous */
172: function(room) {
jsxc.gui.window.postMessage(room, 'sys', $.t('Room_is_now_non-anoymous'));
jsxc.gui.window.postMessage({
bid: room,
direction: jsxc.Message.SYS,
msg: $.t('Room_is_now_non-anoymous')
});
},
/** Inform occupants that the room is now semi-anonymous */
173: function(room) {
jsxc.gui.window.postMessage(room, 'sys', $.t('Room_is_now_semi-anonymous'));
jsxc.gui.window.postMessage({
bid: room,
direction: jsxc.Message.SYS,
msg: $.t('Room_is_now_semi-anonymous')
});
},
/** Inform user that a new room has been created */
201: function(room) {
@@ -949,14 +985,22 @@ jsxc.muc = {
if (own[room] === nickname) {
jsxc.muc.close(room);
jsxc.gui.window.postMessage(room, 'sys', $.t('muc_removed_banned'));
jsxc.gui.window.postMessage({
bid: room,
direction: jsxc.Message.SYS,
msg: $.t('muc_removed_banned')
});
jsxc.muc.postReason(room, xdata);
} else {
jsxc.gui.window.postMessage(room, 'sys', $.t('muc_removed_info_banned', {
nickname: nickname,
escapeInterpolation: true
}));
jsxc.gui.window.postMessage({
bid: room,
direction: jsxc.Message.SYS,
msg: $.t('muc_removed_info_banned', {
nickname: nickname,
escapeInterpolation: true
})
});
}
},
/** Inform user that he or she has been kicked */
@@ -965,14 +1009,22 @@ jsxc.muc = {
if (own[room] === nickname) {
jsxc.muc.close(room);
jsxc.gui.window.postMessage(room, 'sys', $.t('muc_removed_kicked'));
jsxc.gui.window.postMessage({
bid: room,
direction: jsxc.Message.SYS,
msg: $.t('muc_removed_kicked')
});
jsxc.muc.postReason(room, xdata);
} else {
jsxc.gui.window.postMessage(room, 'sys', $.t('muc_removed_info_kicked', {
nickname: nickname,
escapeInterpolation: true
}));
jsxc.gui.window.postMessage({
bid: room,
direction: jsxc.Message.SYS,
msg: $.t('muc_removed_info_kicked', {
nickname: nickname,
escapeInterpolation: true
})
});
}
},
/** Inform user that he or she is beeing removed from the room because of an affiliation change */
@@ -981,12 +1033,21 @@ jsxc.muc = {
if (own[room] === nickname) {
jsxc.muc.close(room);
jsxc.gui.window.postMessage(room, 'sys', $.t('muc_removed_affiliation'));
jsxc.gui.window.postMessage({
bid: room,
direction: jsxc.Message.SYS,
msg: $.t('muc_removed_affiliation')
});
} else {
jsxc.gui.window.postMessage(room, 'sys', $.t('muc_removed_info_affiliation', {
nickname: nickname,
escapeInterpolation: true
}));
jsxc.gui.window.postMessage({
bid: room,
direction: jsxc.Message.SYS,
msg: $.t('muc_removed_info_affiliation', {
nickname: nickname,
escapeInterpolation: true
})
});
}
},
/**
@@ -998,12 +1059,20 @@ jsxc.muc = {
if (own[room] === nickname) {
jsxc.muc.close(room);
jsxc.gui.window.postMessage(room, 'sys', $.t('muc_removed_membersonly'));
jsxc.gui.window.postMessage({
bid: room,
direction: jsxc.Message.SYS,
msg: $.t('muc_removed_membersonly')
});
} else {
jsxc.gui.window.postMessage(room, 'sys', $.t('muc_removed_info_membersonly', {
nickname: nickname,
escapeInterpolation: true
}));
jsxc.gui.window.postMessage({
bid: room,
direction: jsxc.Message.SYS,
msg: $.t('muc_removed_info_membersonly', {
nickname: nickname,
escapeInterpolation: true
})
});
}
},
/**
@@ -1012,7 +1081,11 @@ jsxc.muc = {
*/
332: function(room) {
jsxc.muc.close(room);
jsxc.gui.window.postMessage(room, 'sys', $.t('muc_removed_shutdown'));
jsxc.gui.window.postMessage({
bid: room,
direction: jsxc.Message.SYS,
msg: $.t('muc_removed_shutdown')
});
}
},
@@ -1034,9 +1107,18 @@ jsxc.muc = {
reason = $.t('Reason') + ': ' + reason;
if (typeof actor.name === 'string' || typeof actor.jid === 'string') {
jsxc.gui.window.postMessage(room, 'in', reason, false, false, null, actor);
jsxc.gui.window.postMessage({
bid: room,
direction: jsxc.Message.IN,
msg: reason,
sender: actor
});
} else {
jsxc.gui.window.postMessage(room, 'sys', reason);
jsxc.gui.window.postMessage({
bid: room,
direction: jsxc.Message.SYS,
msg: reason
});
}
}
},
@@ -1156,7 +1238,7 @@ jsxc.muc = {
onGroupchatMessage: function(message) {
var id = $(message).attr('id');
if (jsxc.el_exists($('#' + id))) {
if (id && jsxc.el_exists(jsxc.Message.getDOM(id))) {
// ignore own incoming messages
return true;
}
@@ -1180,7 +1262,15 @@ jsxc.muc = {
sender.jid = member[nickname].jid;
}
jsxc.gui.window.postMessage(room, 'in', body, false, false, stamp, sender);
jsxc.gui.window.init(room);
jsxc.gui.window.postMessage({
bid: room,
direction: jsxc.Message.IN,
msg: body,
stamp: stamp,
sender: sender
});
}
var subject = $(message).find('subject');
@@ -1192,10 +1282,14 @@ jsxc.muc = {
jsxc.storage.setUserItem('buddy', room, roomdata);
jsxc.gui.window.postMessage(room, 'sys', $.t('changed_subject_to', {
nickname: nickname,
subject: subject.text()
}));
jsxc.gui.window.postMessage({
bid: room,
direction: jsxc.Message.SYS,
msg: $.t('changed_subject_to', {
nickname: nickname,
subject: subject.text()
})
});
}
return true;
@@ -1216,13 +1310,29 @@ jsxc.muc = {
}
if ($(message).find('item-not-found').length > 0) {
jsxc.gui.window.postMessage(room, 'sys', $.t('message_not_send_item-not-found'));
jsxc.gui.window.postMessage({
bid: room,
direction: jsxc.Message.SYS,
msg: $.t('message_not_send_item-not-found')
});
} else if ($(message).find('forbidden').length > 0) {
jsxc.gui.window.postMessage(room, 'sys', $.t('message_not_send_forbidden'));
jsxc.gui.window.postMessage({
bid: room,
direction: jsxc.Message.SYS,
msg: $.t('message_not_send_forbidden')
});
} else if ($(message).find('not-acceptable').length > 0) {
jsxc.gui.window.postMessage(room, 'sys', $.t('message_not_send_not-acceptable'));
jsxc.gui.window.postMessage({
bid: room,
direction: jsxc.Message.SYS,
msg: $.t('message_not_send_not-acceptable')
});
} else {
jsxc.gui.window.postMessage(room, 'sys', $.t('message_not_send'));
jsxc.gui.window.postMessage({
bid: room,
direction: jsxc.Message.SYS,
msg: $.t('message_not_send')
});
}
jsxc.debug('[muc] error message for ' + room, $(message).find('error')[0]);
@@ -1247,8 +1357,9 @@ jsxc.muc = {
return;
}
var bo = $('<div>');
bo.text('+');
var bo = $('<a>');
$('<span>').addClass('jsxc_icon jsxc_bookmarkicon').appendTo(bo);
$('<span>').text($.t('Bookmark')).appendTo(bo);
bo.addClass('jsxc_bookmarkOptions');
bo.click(function(ev) {
ev.preventDefault();
@@ -1258,7 +1369,7 @@ jsxc.muc = {
return false;
});
bud.find('.jsxc_rename').before(bo);
bud.find('.jsxc_menu ul').append($('<li>').append(bo));
if (data.bookmarked) {
bud.addClass('jsxc_bookmarked');
+19 -4
Ver Arquivo
@@ -90,9 +90,24 @@ jsxc.options = {
*/
onAuthFail: 'submit',
/** True: Attach connection even is login form was found */
/**
* True: Attach connection even is login form was found.
*
* @type {Boolean}
* @deprecated since 3.0.0. Use now loginForm.ifFound (true => attach, false => pause)
*/
attachIfFound: true,
/**
* Describes what we should do if login form was found:
* - Attach connection
* - Force new connection with loginForm.jid and loginForm.passed
* - Pause connection and do nothing
*
* @type {(attach|force|pause)}
*/
ifFound: 'attach',
/**
* True: Display roster minimized after first login. Afterwards the last
* roster state will be used.
@@ -170,10 +185,10 @@ jsxc.options = {
*
* @memberOf jsxc.options
* @param data Holds all data as key/value
* @returns {boolean} false if function failes
* @param cb Called with true on success, false otherwise
*/
saveSettinsPermanent: function() {
saveSettinsPermanent: function(data, cb) {
cb(true);
},
carbons: {
+27 -69
Ver Arquivo
@@ -620,7 +620,14 @@ jsxc.webrtc = {
var bid = jsxc.jidToBid(session.peerID);
if (this.localStream) {
this.localStream.stop();
if (typeof this.localStream.stop === 'function') {
this.localStream.stop();
} else {
var tracks = this.localStream.getTracks();
tracks.forEach(function(track) {
track.stop();
});
}
}
if ($('.jsxc_videoContainer').length) {
@@ -632,17 +639,10 @@ jsxc.webrtc = {
this.localStream = null;
this.remoteStream = null;
var win = $('#jsxc_webrtc .jsxc_chatarea > ul > li');
$('#jsxc_windowList > ul').prepend(win.detach());
win.find('.slimScrollDiv').resizable('enable');
jsxc.gui.window.resize(win);
jsxc.gui.closeVideoWindow();
$(document).off('cleanup.dialog.jsxc');
$(document).off('error.jingle');
jsxc.gui.dialog.close();
$('#jsxc_webrtc').remove();
jsxc.gui.window.postMessage({
bid: bid,
direction: jsxc.Message.SYS,
@@ -741,8 +741,6 @@ jsxc.webrtc = {
msg: $.t('ICE_connection_failure')
});
$(document).off('cleanup.dialog.jsxc');
session.end('failed-transport');
$(document).trigger('callterminated.jingle');
@@ -779,11 +777,10 @@ jsxc.webrtc = {
});
$(document).one('error.jingle', function(e, sid, error) {
if (error.source !== 'offer') {
if (error && error.source !== 'offer') {
return;
}
$(document).off('cleanup.dialog.jsxc');
setTimeout(function() {
jsxc.gui.showAlert("Sorry, we couldn't establish a connection. Maybe your buddy is offline.");
}, 500);
@@ -807,9 +804,13 @@ jsxc.webrtc = {
* @memberOf jsxc.webrtc
*/
hangUp: function(reason, text) {
$(document).off('cleanup.dialog.jsxc');
if (jsxc.webrtc.conn.jingle.manager && !$.isEmptyObject(jsxc.webrtc.conn.jingle.manager.peers)) {
jsxc.webrtc.conn.jingle.terminate(null, reason, text);
} else {
jsxc.gui.closeVideoWindow();
}
jsxc.webrtc.conn.jingle.terminate(null, reason, text);
// @TODO check event
$(document).trigger('callterminated.jingle');
},
@@ -1072,20 +1073,6 @@ jsxc.gui.showVideoWindow = function(jid) {
$('#jsxc_webrtc .jsxc_' + (self.remoteStream.getVideoTracks().length > 0 ? 'remotevideo' : 'noRemoteVideo')).addClass('jsxc_deviceAvailable');
}
var toggleMulti = function(elem, open) {
$('#jsxc_webrtc .jsxc_multi > div').not(elem).slideUp();
var opt = {
complete: jsxc.gui.dialog.resize
};
if (open) {
elem.slideDown(opt);
} else {
elem.slideToggle(opt);
}
};
var win = jsxc.gui.window.open(jsxc.jidToBid(jid));
win.find('.slimScrollDiv').resizable('disable');
@@ -1102,33 +1089,6 @@ jsxc.gui.showVideoWindow = function(jid) {
jsxc.webrtc.hangUp('success');
});
$('#jsxc_webrtc .jsxc_snapshot').click(function() {
jsxc.webrtc.snapshot(rv);
toggleMulti($('#jsxc_webrtc .jsxc_snapshotbar'), true);
});
$('#jsxc_webrtc .jsxc_snapshots').click(function() {
toggleMulti($('#jsxc_webrtc .jsxc_snapshotbar'));
});
$('#jsxc_webrtc .jsxc_showchat').click(function() {
var chatarea = $('#jsxc_webrtc .jsxc_chatarea');
if (chatarea.is(':hidden')) {
chatarea.show();
$('#jsxc_webrtc .jsxc_webrtc').width('900');
jsxc.gui.dialog.resize({
width: '920px'
});
} else {
chatarea.hide();
$('#jsxc_webrtc .jsxc_webrtc').width('650');
jsxc.gui.dialog.resize({
width: '660px'
});
}
});
$('#jsxc_webrtc .jsxc_fullscreen').click(function() {
if ($.support.fullscreen) {
@@ -1141,24 +1101,22 @@ jsxc.gui.showVideoWindow = function(jid) {
}
});
$('#jsxc_webrtc .jsxc_volume').change(function() {
rv[0].volume = $(this).val();
$('#jsxc_webrtc .jsxc_videoContainer').click(function() {
$('#jsxc_webrtc .jsxc_controlbar').toggleClass('jsxc_visible');
});
$('#jsxc_webrtc .jsxc_volume').dblclick(function() {
$(this).val(0.5);
});
$('#jsxc_webrtc .jsxc_videoContainer').toggle(function() {
$('#jsxc_webrtc .jsxc_controlbar').css('opacity', '1.0');
}, function() {
$('#jsxc_webrtc .jsxc_controlbar').css('opacity', '');
});
return $('#jsxc_webrtc');
};
jsxc.gui.closeVideoWindow = function() {
var win = $('#jsxc_webrtc .jsxc_chatarea > ul > li');
$('#jsxc_windowList > ul').prepend(win.detach());
win.find('.slimScrollDiv').resizable('enable');
jsxc.gui.window.resize(win);
$('#jsxc_webrtc').remove();
};
$.extend(jsxc.CONST, {
KEYCODE_ENTER: 13,
KEYCODE_ESC: 27
+1
Ver Arquivo
@@ -184,6 +184,7 @@ jsxc.xmpp = {
// clean up
jsxc.storage.removeUserItem('buddylist');
jsxc.storage.removeUserItem('windowlist');
jsxc.storage.removeUserItem('unreadMsg');
if (!jsxc.master) {
$('#jsxc_roster').remove();
+1 -1
Ver Arquivo
@@ -10,7 +10,7 @@
Real-time chat app for {{app_name}} and more.
<br /> Requires an external <a href="https://xmpp.org/xmpp-software/servers/" target="_blank">XMPP server</a>.
</p>
<p>
<p class="jsxc_credits">
<b>Credits: </b> <a href="http://www.beepzoid.com/old-phones/" target="_blank">David English (Ringtone)</a>,
<a href="https://soundcloud.com/freefilmandgamemusic/ping-1?in=freefilmandgamemusic/sets/free-notification-sounds-and" target="_blank">CameronMusic (Ping)</a>,
<a href="http://www.picol.org/">Picol (Fullscreen icon)</a>, <a href="http://www.jabber.org/">Jabber Software Foundation (Jabber lightbulb logo)</a>
+4 -1
Ver Arquivo
@@ -37,7 +37,10 @@
</div>
<div class="jsxc_fade">
<div class="jsxc_overlay">
<div />
<div>
<div class="jsxc_body" />
<div class="jsxc_close" />
</div>
</div>
<div class="jsxc_textarea" />
<div class="jsxc_emoticons">
+1 -1
Ver Arquivo
@@ -16,7 +16,7 @@
<div></div>
</div>
</div>
<div class="jsxc_controlbar">
<div class="jsxc_controlbar jsxc_visible">
<div>
<div class="jsxc_hangUp jsxc_videoControl" />
<div class="jsxc_fullscreen jsxc_videoControl" />