Revision: 2804
Author: [email protected]
Date: Wed Jan 20 07:45:53 2010
Log: Added instant communication plugin code
http://code.google.com/p/openmeetings/source/detail?r=2804
Added:
/trunk/plugins/instant_communication_plugin/openMeetingsAjaxClientLibrary.js
=======================================
--- /dev/null
+++
/trunk/plugins/instant_communication_plugin/openMeetingsAjaxClientLibrary.js
Wed Jan 20 07:45:53 2010
@@ -0,0 +1,401 @@
+var updateInterval;
+var incomingCallPresent = false;
+
+//current user display name id
+var currentUser;
+var userid = null;
+var instanceId = '0';
+
+//caller id, display name
+var caller = null;
+var callerName = null;
+
+//callee id and display name
+var callee = null;
+var calleeName = null;
+
+//server address
+var server_address = 'http://127.0.0.1:8888/om_server.php';
+
+function getXmlHttp(){
+ var xmlhttp;
+ try {
+ xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
+ } catch (e) {
+ try {
+ xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
+ } catch (E) {
+ xmlhttp = false;
+ }
+ }
+ if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
+ xmlhttp = new XMLHttpRequest();
+ }
+ return xmlhttp;
+}
+
+function queryServer(params)
+{
+ var request = getXmlHttp();
+
+ request.open('POST', server_address, true);
+
request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
+ request.setRequestHeader("Content-length", params.length);
+ request.setRequestHeader("Connection", "close");
+ request.onreadystatechange = function()
+ {
+ if (request.readyState == 4)
+ {
+ if(request.status == 200)
+ {
+ var result = request.responseText.split('|');
+
+
processServerMessage(result,request.responseText);
+ }
+ }
+ }
+ request.send(params);
+}
+
+function logMessage(message)
+{
+ om_onstatusmessage(message);
+}
+
+function processServerMessage( result, fullmessage )
+{
+ if ( result[0] == 'O' )
+ {
+ switch ( result[1] )
+ {
+ case 'R':
+ {
+ //Register user
+
+ updateInterval = setInterval( updateStatus,
15000 );
+ loginstatuschange( true );
+
+ break;
+ }
+ case 'U':
+ {
+ logMessage( result[2] );
+ //Update user state
+ if ( result[2] != 'U0OK' )
+ {
+ var incomingCallFound = false;
+
+ //We are still online
+ //if we have unanswered calls, we must
inform a user
+ var messages = result[2].split('\n');
+
+ for ( var i = 0; i < messages.length;
i++)
+ {
+ if ( messages[i] != 'U1OK' )
+ {
+ //Checking for incoming
calls
+ if (
messages[i].match('^CALL') == 'CALL' )
+ {
+ var callerStrArray =
messages[i].substr(4,messages[i].length-4).split('^...@^');
+
+ caller =
callerStrArray[1];
+ callerName =
callerStrArray[0];
+
+ getCalleeLink(
caller, userid );
+
+
incomingCallPresent = true;
+
incomingCallFound = true;
+
+
om_onincomingcallstatechanged( true );
+
+ break;
+ }
+
+ //Checking for answered
calls
+ if (
messages[i].match('^ANSW') == 'ANSW' )
+ {
+ var calleeStrArray =
messages[i].substr(4,messages[i].length-4).split('^...@^');
+
+ calleeName =
calleeStrArray[0];
+ callee =
calleeStrArray[1];
+
+ getCallerLink(
userid, callee );
+
+ break;
+ }
+
+ //Checking for rejected
calls
+ if (
messages[i].match('^RJCT') == 'RJCT' )
+ {
+ alert('call
rej');
+ var calleeStrArray =
messages[i].substr(4,messages[i].length-4).split('^...@^');
+
+ calleeName =
calleeStrArray[0];
+ callee =
calleeStrArray[1];
+
+
om_oncallrejected( calleeName );
+
+ break;
+ }
+
+ //Checking for being
logged from another place
+ if (
messages[i].match('^LIAP') == 'LIAP' )
+ {
+ alert("Logged in
from another place");
+
+
loginstatuschange(false);
+
+ break;
+ }
+
+ if ( messages[i] != '')
+ alert('Unprocessed
message: '+messages[i]);
+ }
+ }
+
+ if (( !incomingCallFound
)&&(incomingCallPresent))
+ {
+ incomingCallPresent = false;
+ om_onincomingcallstatechanged(
false );
+ }
+ }
+ else
+ {
+ loginstatuschange(false);
+ }
+
+ break;
+ }
+ case 'M':
+ {
+ //Make call
+ if ( result[2] == 'MOK' )
+ {
+ om_onmakecall( true )
+ }
+ else
+ {
+ om_onmakecall(false);
+ }
+ break;
+ }
+ case 'A':
+ {
+ //Answer call
+ //Do nothing
+
+ break;
+ }
+ case 'C':
+ {
+ //Clear call
+ //Do nothing
+
+ break;
+ }
+ case 'J':
+ {
+ //Reject call
+ //Do nothing
+
+ break;
+ }
+ case 'L':
+ {
+ //Get caller link
+ om_oncallanswered( calleeName, result[2] );
+
+ break;
+ }
+ case 'E':
+ {
+ //Get callee link
+ om_onincomingcall( callerName, result[2] );
+
+ break;
+ }
+ default:
+ {
+ alert( 'OK, method='+result[1]+'; Message:
'+result[2]);
+
+ break;
+ }
+ }
+ }
+ else
+ if ( result[0] == 'F' )
+ {
+ //Failure, display it
+ //TODO: remove after diag is done
+ alert('Error, method='+result[1]+'; Message: '+result[2]);
+ }
+ else
+ {
+ alert('Error in script:'+fullmessage);
+ }
+}
+
+function getCallerLink( caller, callee )
+{
+ var getCallerLinkParams
= 'method=getCallerLink&arg0='+caller+'&arg1='+callee;
+ queryServer( getCallerLinkParams );
+}
+
+function getCalleeLink( caller, callee )
+{
+ var getCalleeLinkParams
= 'method=getCalleeLink&arg0='+caller+'&arg1='+callee;
+ queryServer( getCalleeLinkParams );
+}
+
+function clearCall( caller, callee )
+{
+ var clearCallParams = 'method=clearCall&arg0='+caller+'&arg1='+callee;
+ queryServer( clearCallParams);
+}
+
+function arrangeCall(user_from, user_to)
+{
+ callee = user_to;
+ var callParams = 'method=makeCall&arg0='+user_from+'&arg1='+user_to;
+ queryServer( callParams );
+}
+
+function updateStatus()
+{
+ var updateParams
= 'method=updateState&arg0='+userid+'&arg1=LOGGED_ON'+'&arg2='+instanceId;
+ queryServer(updateParams);
+}
+
+function om_makecall(id)
+{
+ arrangeCall(userid, id);
+}
+
+function om_answercall()
+{
+ var answerParams = 'method=answerCall&arg0='+caller+'&arg1='+userid;
+ queryServer( answerParams);
+}
+
+function om_rejectCall()
+{
+ var answerParams = 'method=rejectCall&arg0='+caller+'&arg1='+userid;
+ queryServer( answerParams);
+}
+
+function om_clearoutgoingcall()
+{
+ clearCall( userid, callee );
+}
+
+function om_clearincomingcall()
+{
+ clearCall( caller, userid );
+}
+
+function om_setinstanceid( newInstance )
+{
+ instanceId = newInstance;
+}
+
+function om_login(id, name)
+{
+ userid = id;
+ currentUser = name;
+ var loginParams
= 'method=registerUser&arg0='+id+'&arg1='+name+'&arg2='+instanceId;
+ queryServer(loginParams);
+}
+
+function om_logoff()
+{
+ var logoutParams = 'method=updateState&arg0='+userid+'&arg1=LOGGED_OFF';
+ queryServer(logoutParams);
+}
+
+function om_setserveraddress( newAddress )
+{
+ server_address = newAddress;
+}
+
+function om_setomlink(link)
+{
+ window.onLoad = function(){
+
+ om_link = link;
+
+ //var wh = window.open( link, "CachedOMWindow" );
+
+ var str = "<object type='application/x-shockwave-flash' data='"+link+"'
width='1' height='1'><param name='movie' value='"+link+"'/></object>";
+
+ var obj = document.createElement('para');
+ obj.innerHTML = str;
+
+ document.body.appendChild(obj);
+ }
+}
+
+//Events:
+//om_onstatuschange - changed status (online/offline)
+//om_onmakecall - call has been made, user is offline or all is ok
+//om_onincomingcall - we got call
+//om_oncallanswered - our call has been answered
+//om_oncallrejected - our call has been rejected
+//om_onstatusmessage - engine has something to display
+
+function loginstatuschange(status)
+{
+ if (!status)
+ {
+ clearInterval( updateInterval );
+ }
+ om_onstatuschange( status );
+}
+
+function om_onstatuschange( status )
+{
+ if ( status )
+ {
+ om_onstatusmessage('Logged on');
+ }
+ else
+ {
+ om_onstatusmessage('Logged off');
+ }
+}
+
+function om_onmakecall( result )
+{
+ if ( result )
+ {
+ om_onstatusmessage( 'Makecall ok' );
+ }
+ else
+ {
+ om_onstatusmessage('Makecall failed - User is offline');
+ }
+}
+
+function om_onincomingcall( callerName, link )
+{
+ om_onstatusmessage(callerName+' called, link to call - '+link);
+}
+
+function om_oncallanswered( calleeName, link )
+{
+ om_onstatusmessage(calleeName+' answered our call, link to call -
'+link);
+}
+
+function om_oncallrejected( calleeName )
+{
+ om_onstatusmessage(calleeName+' rejected our call');
+}
+
+function om_onincomingcallstatechanged( state )
+{
+ om_onstatusmessage('Incoming call state changed');
+}
+
+function om_onstatusmessage(message)
+{
+ alert( message );
+}
--
You received this message because you are subscribed to the Google Groups
"OpenMeetings developers" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/openmeetings-dev?hl=en.