reload page if agent lost the thread (switch to viewonly mode) or agent became its owner

git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@145 c66351dc-e62f-0410-b875-e3a5c0b9693f
This commit is contained in:
Evgeny Gryaznov 2008-10-02 22:41:35 +00:00
parent fe87d0dfc2
commit 06e1c2e8eb
6 changed files with 15 additions and 7 deletions

View File

@ -62,6 +62,7 @@ Class.inherit( Ajax.ChatThreadUpdater, Ajax.Base, {
this.cansend = true;
this.skipNextsound = true;
this.focused = true;
this.ownThread = this._options.message != null;
FrameUtils.initFrame(this._options.container);
if( this._options.message ) {
this._options.message.onkeydown = this.handleKeyDown.bind(this);
@ -205,6 +206,13 @@ Class.inherit( Ajax.ChatThreadUpdater, Ajax.Base, {
this.showTyping(typing == '1');
}
var canpost = NodeUtils.getAttrValue(xmlRoot, "canpost");
if( canpost ) {
if( canpost == '1' && !this.ownThread || this.ownThread && canpost != '1' ) {
window.location.href = window.location.href;
}
}
for( var i = 0; i < xmlRoot.childNodes.length; i++ ) {
var node = xmlRoot.childNodes[i];
if( node.tagName == 'message' ) {

View File

@ -1 +1 @@
var myAgent="";var nk=0;var myRealAgent="";function qk(){var rk=["\157p\u0065\u0072\u0061","\u006d\u0073\u0069e","\163\141f\141ri","fi\u0072\u0065f\157\170","\156\145\164\u0073\u0063\141p\u0065","\u006d\157\172\u0069\u006c\154a"];var jj=navigator.userAgent.toLowerCase();for(var i=0;i<rk.length;i++){var sk=rk[i];if(jj.indexOf(sk)!=-1){myAgent=sk;if(!window.RegExp)break;var tk=new RegExp(sk+"\u005b \/\135\u003f\u0028\133\u0030-\u0039]+\050\.[\u0030-\071\u005d+\051\077)");if(tk.exec(jj)!=null){nk=parseFloat(RegExp.$1);} break;} } myRealAgent=myAgent;if(navigator.product=="Ge\143k\157")myAgent="m\157z";} qk();function getEl(name){return document.getElementById(name);}
var myAgent="";var rk=0;var myRealAgent="";function sk(){var tk=["\u006f\u0070\145r\u0061","\u006d\163\151\u0065","\u0073af\u0061\u0072\151","\u0066i\162\u0065\u0066\u006fx","\u006eet\u0073\143a\160\145","\155\u006f\172i\u006cl\141"];var lj=navigator.userAgent.toLowerCase();for(var i=0;i<tk.length;i++){var uk=tk[i];if(lj.indexOf(uk)!=-1){myAgent=uk;if(!window.RegExp)break;var hk=new RegExp(uk+"\133\u0020\/]?(\1330-9]\u002b\u0028\.[0-9\u005d+\051\u003f\u0029");if(hk.exec(lj)!=null){rk=parseFloat(RegExp.$1);} break;} } myRealAgent=myAgent;if(navigator.product=="\u0047e\u0063k\u006f")myAgent="m\157\u007a";} sk();function getEl(name){return document.getElementById(name);}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -126,7 +126,7 @@ function get_messages($threadid,$meth,$isuser,&$lastid) {
return $messages;
}
function print_thread_messages($thread, $token, $lastid, $isuser,$format) {
function print_thread_messages($thread, $token, $lastid, $isuser, $format, $agentid=null) {
global $webim_encoding, $webimroot, $connection_timeout;
$threadid = $thread['threadid'];
$istyping = abs($thread['current']-$thread[$isuser ? "lpagent" : "lpuser"]) < $connection_timeout
@ -136,7 +136,7 @@ function print_thread_messages($thread, $token, $lastid, $isuser,$format) {
$output = get_messages($threadid,"xml",$isuser,$lastid);
start_xml_output();
print("<thread lastid=\"$lastid\" typing=\"".$istyping."\">");
print("<thread lastid=\"$lastid\" typing=\"".$istyping."\" canpost=\"".(($isuser || $agentid != null && $agentid == $thread['agentId']) ? 1 : 0)."\">");
foreach( $output as $msg ) {
print $msg;
}

View File

@ -49,7 +49,7 @@ if( !$isuser && $act != "rename" ) {
if( $act == "refresh" ) {
$lastid = verifyparam( "lastid", "/^\d{1,9}$/", -1);
print_thread_messages($thread, $token, $lastid, $isuser,$outformat);
print_thread_messages($thread, $token, $lastid, $isuser,$outformat, $isuser ? null : $operator['operatorid']);
exit;
} else if( $act == "post" ) {
@ -64,7 +64,7 @@ if( $act == "refresh" ) {
}
post_message($threadid,$kind,$message,$from, $isuser ? null : $operator['operatorid'] );
print_thread_messages($thread, $token, $lastid, $isuser, $outformat);
print_thread_messages($thread, $token, $lastid, $isuser, $outformat, $isuser ? null : $operator['operatorid']);
exit;
} else if( $act == "rename" ) {