src/cm/media/js/client/c_server_exchange.js
changeset 0 40c8f766c9b8
child 24 c8a95e540b79
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cm/media/js/client/c_server_exchange.js	Mon Nov 23 15:14:29 2009 +0100
@@ -0,0 +1,82 @@
+//frames['text_view_comment_frames'].gtest.myFunc()
+var gtest = {
+	renaud : 'RENAUD',
+	random : Math.random(),
+	bernard : 'BERNARD',
+	myFunc : function() {
+		doExchange("theServerFun", {}, null, this.myRetFunc, this, ['foo', 'bar'])
+	},
+	myRetFunc : function(args) {
+		CY.log('this.renaud : ' + this.renaud) ;
+		CY.log('this.random : ' + this.random) ;
+		CY.log('arg.returned : ' + args.returned) ;
+		CY.log(args.returned) ;
+		CY.log('arg.success : ' + args.success) ;
+		CY.log(args.success) ;
+		//CY.log('arg.success : ' + arg.success) ;
+	}
+} ;
+
+
+// clientArgs should be an array
+doExchange = function(serverFun, obj, formId, retFunc, clientContext, clientArgs, inCaseErrorMsg) {
+	obj['fun'] = serverFun ;
+	obj['key'] = sv_key ;
+//	obj['adminKey'] = sv_adminKey ;
+	
+	var cfg = {
+		method: "POST", 
+		data: urlEncode(obj), 
+//		headers: { 'X-Transaction': 'POST Example'},
+		on: {
+//			start: gtH.start,
+//			complete: gtH.complete,
+			success: function(id, oResponse, args){ // args will be {success:clientArgs etc ...
+				var ret = {};
+				if (oResponse.responseText) 
+					ret = CY.JSON.parse(oResponse.responseText);
+				
+				if (gLayout.isInFrame() && ('msg' in ret))
+					parent.f_enqueueMsg(ret['msg']) ; 
+					
+				args['returned'] = ret ;
+				args['successfull'] = true ;
+				
+				retFunc.call(clientContext, args);
+			},
+			failure: function(id, oResponse, args){ // args will be {success:clientArgs etc ...
+				if (gLayout.isInFrame())
+					parent.f_enqueueErrorMsg(gettext('error:') + inCaseErrorMsg) ;
+				
+				args['successfull'] = false ;
+				retFunc.call(clientContext, args);
+			}
+		},
+//		context: gtH,
+		arguments: {
+//				   start: 'foo',
+//				   complete: 'bar',
+				   success: clientArgs,
+				   failure: clientArgs
+				   }
+	} ; 
+	if (formId != null)
+		cfg['form'] = {'id':formId};
+	CY.io(sv_client_url, cfg);
+	
+} ;
+
+// TODO try to get a stack trace instead of passing an obj 
+warn_server = function(obj) {
+	obj['fun'] = "warn" ;
+	obj['key'] = sv_key ;
+
+	var obj2 = CY.UA ;
+
+	var cfg = {
+		method: "POST", 
+		data: urlEncode(CY.merge(obj, obj2))
+	} ; 
+	CY.io('/client/', cfg);
+} ;
+