src/cm/media/js/client/c_server_exchange.js
author gibus
Wed, 25 Apr 2012 09:15:23 +0200
changeset 413 2479d33898dd
parent 341 053551f213fb
permissions -rw-r--r--
Fix mismatching filter with tag.

//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['version_key'] = sv_version_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 ;
  obj['version_key'] = sv_version_key ;

  var obj2 = CY.UA ;

  var cfg = {
    method: "POST", 
    data: urlEncode(CY.merge(obj, obj2))
  } ; 
  CY.io('/client/', cfg);
} ;