- Timestamp:
- 06/15/11 10:25:30 (11 months ago)
- Files:
-
- 1 modified
-
HelpIM3/branches/chatgroups/htdocs/helpim.js (modified) (30 diffs)
Legend:
- Unmodified
- Added
- Removed
-
HelpIM3/branches/chatgroups/htdocs/helpim.js
r1442 r1446 90 90 if (soundPlaying) 91 91 return; 92 92 93 93 soundPlaying = true; 94 94 95 95 var frameD = frames["jwc_sound"].document; 96 96 … … 121 121 122 122 function changeStatus(val,away) { 123 123 124 124 Debug.log("changeStatus: "+val+","+away, 2); 125 125 126 126 onlstat = val; 127 127 if (away) … … 134 134 135 135 var aPresence = new JSJaCPresence(); 136 136 137 137 switch(val) { 138 138 case "unavailable": … … 170 170 sendPresence2Groupchats(roster.getGroupchats(),onlstat,onlmsg); 171 171 } 172 172 173 173 } 174 174 … … 227 227 userSpan.innerHTML += '*'; 228 228 } else { 229 if (userSpan.origHTML) { 229 if (userSpan.origHTML) { 230 230 userSpan.innerHTML = userSpan.origHTML; 231 231 userSpan.origHTML = false; … … 297 297 } 298 298 } 299 299 300 300 /* handle presence for MUC */ 301 301 for (var i=0; i<presence.getNode().getElementsByTagName('x').length; i++) … … 305 305 } 306 306 307 if (user.roster && x) { 307 if (user.roster && x) { 308 308 var ofrom = presence.getFrom().substring(presence.getFrom().indexOf('/')+1); 309 309 310 310 Debug.log("jabber.from:"+presence.getFrom()+", ofrom:"+ofrom,3); 311 311 312 312 var ouser = user.roster.getUserByJID(presence.getFrom()); 313 313 if (!ouser) // no user? create one! 314 314 ouser = new GroupchatRosterUser(presence.getFrom(),ofrom); 315 315 316 316 var item = x.getElementsByTagName('item').item(0); 317 317 318 318 ouser.affiliation = item.getAttribute('affiliation'); 319 319 ouser.role = item.getAttribute('role'); … … 333 333 else if (item.getElementsByTagName('actor').item(0).firstChild != null) 334 334 ouser.actor = item.getElementsByTagName('actor').item(0).firstChild.nodeValue; 335 } 335 } 336 336 if (ouser.role != '') { 337 337 ouser.add2Group(ouser.role+'s'); 338 338 339 339 /* check if it is our own presence 340 340 * must be done here cause we want to be sure that role != '' 341 341 */ 342 342 343 343 if (ouser.name == htmlEnc(user.roster.nick)) { // seems to be me 344 344 user.roster.me = ouser; // store this reference … … 376 376 if (!ouser.nick) 377 377 return; 378 378 379 379 var aMessage = new JSJaCMessage(); 380 380 aMessage.setFrom(user.jid); … … 383 383 if (user.chatW && !user.chatW.closed && user.chatW.popMsgs) 384 384 user.chatW.popMsgs(); 385 385 386 386 // update nick if it's me 387 387 if (ouser.name == htmlEnc(user.roster.nick)) 388 388 user.roster.nick = ouser.nick; 389 389 390 390 // remove old user 391 391 var aChatW = ouser.chatW; 392 392 user.roster.removeUser(ouser); 393 393 394 394 // add new user 395 395 ouser = new GroupchatRosterUser(presence.getFrom().substring(0,presence.getFrom().lastIndexOf('/')+1).concat(ouser.nick),ouser.nick); 396 396 397 397 if (aChatW && !aChatW.closed) { 398 398 ouser.chatW = aChatW; … … 403 403 break; 404 404 case '301': // user has been banned 405 405 406 406 // check if it's me 407 407 if (ouser.name == user.chatW.nick) { … … 411 411 return user.chatW.rePost(3301, "You are banned"); 412 412 } 413 413 414 414 var aMessage = new JSJaCMessage(); 415 415 aMessage.setFrom(user.jid); … … 424 424 user.chatmsgs = user.chatmsgs.concat(aMessage); 425 425 if (user.chatW && !user.chatW.closed && user.chatW.popMsgs) 426 user.chatW.popMsgs(); 427 426 user.chatW.popMsgs(); 427 428 428 playSound('chat_recv'); 429 429 break; 430 430 case '307': // user has been kicked 431 431 432 432 // check if it's me 433 433 if (ouser.name == user.chatW.nick) { … … 437 437 return user.chatW.rePost(3307, "You have been kicked"); 438 438 } 439 439 440 440 var aMessage = new JSJaCMessage(); 441 441 aMessage.setFrom(user.jid); … … 450 450 user.chatmsgs = user.chatmsgs.concat(aMessage); 451 451 if (user.chatW && !user.chatW.closed && user.chatW.popMsgs) 452 user.chatW.popMsgs(); 453 452 user.chatW.popMsgs(); 453 454 454 playSound('chat_recv'); 455 455 break; 456 456 } 457 457 } 458 458 459 459 Debug.log("<"+ouser.name+"> affiliation:"+ouser.affiliation+", role:"+ouser.role,3); 460 460 461 461 if (!user.roster.getUserByJID(presence.getFrom()) && !nickChanged) { // join 462 462 // add user … … 498 498 user.chatmsgs = user.chatmsgs.concat(aMessage); 499 499 if (user.chatW && !user.chatW.closed && user.chatW.popMsgs) 500 user.chatW.popMsgs(); 500 user.chatW.popMsgs(); 501 501 playSound('ring'); 502 502 } 503 503 504 504 } else if (presence.getType() == 'unavailable' && !nickChanged) { // parted 505 505 if (chatW.staffChat || CHATGROUP_CHAT) { // we have a groupchat … … 519 519 user.chatmsgs = user.chatmsgs.concat(aMessage); 520 520 if (user.chatW && !user.chatW.closed && user.chatW.popMsgs) 521 user.chatW.popMsgs(); 522 521 user.chatW.popMsgs(); 522 523 523 playSound('offline'); 524 524 } else { // we are in an One2One chat … … 552 552 else 553 553 var rt = setTimeout("user.chatW.rePost()", 3000); 554 554 555 555 } else { // peer exited dirty 556 556 peerParted = true; … … 560 560 user.chatmsgs = user.chatmsgs.concat(aMessage); 561 561 if (user.chatW && !user.chatW.closed && user.chatW.popMsgs) 562 user.chatW.popMsgs(); 562 user.chatW.popMsgs(); 563 563 playSound('offline'); 564 564 } … … 571 571 aRoster = user.roster; 572 572 user = ouser; 573 } 573 } 574 574 575 575 if (show) { … … 604 604 605 605 // update presence indicator of chat window 606 if (user.chatW && !user.chatW.closed && user.chatW.updateUserPresence) 606 if (user.chatW && !user.chatW.closed && user.chatW.updateUserPresence) 607 607 user.chatW.updateUserPresence(); 608 608 609 609 aRoster.print(); // update roster 610 610 } … … 647 647 jid = con.jid; 648 648 Debug.log("jid: "+jid); 649 649 650 650 var ac = getSecs(readCookie(hex_sha1(aRoom))); 651 651 if (ac>0) { … … 653 653 frames['chatW'].document.body.innerHTML = "<div class='infoBox'>Sorry, you're locked out for<br /> <span id='var_secs'></span>.<br />Please stand by, you'll be redirected automatically!</div>"; 654 654 updateVarSecs(ac); 655 } else 655 } else 656 656 roster.openGroupchat(aRoom); 657 657 } … … 672 672 ts.setTime(ts_millis); 673 673 var now = new Date(); 674 674 675 675 return Math.round((ts.getTime()-now.getTime())/1000); 676 676 } 677 677 678 678 /************************************************************************ 679 * ****** END HANDLERS ******* 679 * ****** END HANDLERS ******* 680 680 ************************************************************************ 681 681 */ … … 700 700 } 701 701 Debug.start(); 702 702 703 703 if (typeof(AUTHTYPE) == 'undefined' || AUTHTYPE == "anonymous") 704 704 Debug.log("jid: "+jid+"\npass: "+pass,2); 705 705 else 706 706 Debug.log("using sasl anonymous for login",2); 707 707 708 708 /* set title */ 709 709 document.title = TITLE; 710 710 711 711 /* *** 712 712 * create new connection … … 721 721 return; 722 722 } 723 723 724 724 /* register handlers */ 725 725 con.registerHandler('presence',handlePresence); … … 728 728 con.registerHandler('onconnect',handleConnected); 729 729 con.registerHandler('onerror',handleConError); 730 730 731 731 /* connect to remote */ 732 732 if (typeof(AUTHTYPE) == 'undefined' || AUTHTYPE!="saslanon") … … 749 749 if (roster) 750 750 roster.cleanUp(); 751 751 752 752 // clear frames 753 753 if (frames['jwc_sound']) { … … 764 764 logoutCalled = true; 765 765 cleanUp(); 766 766 767 767 if (!con.connected()) 768 768 return; 769 769 770 770 var aPresence = new JSJaCPresence(); 771 771 aPresence.setType('unavailable'); … … 807 807 808 808 // create a unique resource 809 if (typeof(ANONHOST) == 'undefined') 809 if (typeof(ANONHOST) == 'undefined') 810 810 jid += '/' + hex_sha1(navigator.userAgent + Date.UTC(new Date()) + nick); 811 811
