web/data/cubicweb.edition.js
branchstable
changeset 2371 76bf522c27be
parent 2364 fa16d36d60cb
child 2381 caad2367d940
child 2382 c1dcb5aef4b4
equal deleted inserted replaced
2369:5a2b8ed266ca 2371:76bf522c27be
   452  * @param formid : the dom id of the form used
   452  * @param formid : the dom id of the form used
   453  * @param rtype : the attribute being edited
   453  * @param rtype : the attribute being edited
   454  * @param eid : the eid of the entity being edited
   454  * @param eid : the eid of the entity being edited
   455  * @param reload: boolean to reload page if true (when changing URL dependant data)
   455  * @param reload: boolean to reload page if true (when changing URL dependant data)
   456  */
   456  */
   457 function inlineValidateAttributeForm(formid, rtype, eid, divid, reload, default_value) {
   457 function inlineValidateAttributeForm(rtype, eid, divid, reload, default_value) {
   458     try {
   458     try {
   459 	var form = getNode(formid);
   459 	var form = getNode(divid+'-form');
   460 	if (typeof FCKeditorAPI != "undefined") {
   460 	if (typeof FCKeditorAPI != "undefined") {
   461 	    for ( var name in FCKeditorAPI.__Instances ) {
   461 	    for ( var name in FCKeditorAPI.__Instances ) {
   462 		var oEditor = FCKeditorAPI.__Instances[name] ;
   462 		var oEditor = FCKeditorAPI.__Instances[name] ;
   463 		if ( oEditor.GetParentForm() == form ) {
   463 		if ( oEditor.GetParentForm() == form ) {
   464 		    oEditor.UpdateLinkedField();
   464 		    oEditor.UpdateLinkedField();
   471     } catch (ex) {
   471     } catch (ex) {
   472 	log('got exception', ex);
   472 	log('got exception', ex);
   473 	return false;
   473 	return false;
   474     }
   474     }
   475     d.addCallback(function (result, req) {
   475     d.addCallback(function (result, req) {
   476     handleFormValidationResponse(formid, noop, noop, result);
   476         handleFormValidationResponse(divid+'-form', noop, noop, result);
   477 	if (reload) {
   477 	if (reload) {
   478 	    document.location.href = result[1];
   478 	    document.location.href = result[1];
   479 	} else {
   479 	} else {
   480 	    var fieldview = getNode(divid);
   480 	    var fieldview = getNode(divid);
   481 	    // XXX using innerHTML is very fragile and won't work if
   481 	    // XXX using innerHTML is very fragile and won't work if
   484 	    // switch inline form off only if no error
   484 	    // switch inline form off only if no error
   485 	    if (result[0]) {
   485 	    if (result[0]) {
   486 		// hide global error messages
   486 		// hide global error messages
   487 		jQuery('div.errorMessage').remove();
   487 		jQuery('div.errorMessage').remove();
   488 		jQuery('#appMsg').hide();
   488 		jQuery('#appMsg').hide();
   489 		cancelInlineEdit(eid, rtype, divid);
   489 		hideInlineEdit(eid, rtype, divid);
   490 	    }
   490 	    }
   491 	}
   491 	}
   492 	return false;
   492 	return false;
   493     });
   493     });
   494     return false;
   494     return false;
   495 }
   495 }
   496 
   496 
   497 function inlineValidateRelationForm(formid, rtype, role, eid, divid, reload, vid,
   497 function inlineValidateRelationForm(rtype, role, eid, divid, reload, vid,
   498                                     default_value, lzone) {
   498                                     default_value, lzone) {
   499     try {
   499     try {
   500 	var form = getNode(formid);
   500 	var form = getNode(divid+'-form');
   501         var relname = rtype + ':' + eid;
   501         var relname = rtype + ':' + eid;
   502         var newtarget = jQuery('[name=' + relname + ']').val();
   502         var newtarget = jQuery('[name=' + relname + ']').val();
   503 	var zipped = formContents(form);
   503 	var zipped = formContents(form);
   504 	var d = asyncRemoteExec('edit_relation', 'apply', zipped[0], zipped[1], rtype, role,
   504 	var d = asyncRemoteExec('edit_relation', 'apply', zipped[0], zipped[1], rtype, role,
   505                                 eid, vid, default_value, lzone);
   505                                 eid, vid, default_value, lzone);
   506     } catch (ex) {
   506     } catch (ex) {
   507 	log('got exception', ex);
   507 	log('got exception', ex);
   508 	return false;
   508 	return false;
   509     }
   509     }
   510     d.addCallback(function (result, req) {
   510     d.addCallback(function (result, req) {
       
   511         handleFormValidationResponse(divid+'-form', noop, noop, result);
   511         if (reload) {
   512         if (reload) {
   512           document.location.href = result[1];
   513           document.location.href = result[1];
   513         } else {
   514         } else {
   514           handleFormValidationResponse(formid, noop, noop, result);
       
   515 	  var fieldview = getNode(divid);
       
   516           fieldview.innerHTML = result[2];
       
   517 	  // switch inline form off only if no error
       
   518 	  if (result[0]) {
   515 	  if (result[0]) {
   519             // hide global error messages
   516             var d = asyncRemoteExec('reledit_form', eid, rtype, role, lzone);
   520 	    jQuery('div.errorMessage').remove();
   517             d.addCallback(function (result) {
   521 	    jQuery('#appMsg').hide();
   518               jQuery('#'+divid+'-reledit').replaceWith(result);
   522             var inputname = 'edit' + role[0] + '-' + relname;
   519             });
   523             jQuery('input[name=' + inputname + ']').val(newtarget);
       
   524 	    cancelInlineEdit(eid, rtype, divid);
       
   525           }
   520           }
   526 	}
   521 	}
   527         return false;
   522         return false;
   528     });
   523     });
   529   return false;
   524   return false;
   531 
   526 
   532 
   527 
   533 /**** inline edition ****/
   528 /**** inline edition ****/
   534 function showInlineEditionForm(eid, rtype, divid) {
   529 function showInlineEditionForm(eid, rtype, divid) {
   535     jQuery('#' + divid).hide();
   530     jQuery('#' + divid).hide();
   536     jQuery('#' + divid + '-form').show();
   531     jQuery('#' + divid+'-form').show();
   537 }
   532 }
   538 
   533 
   539 function cancelInlineEdit(eid, rtype, divid) {
   534 function hideInlineEdit(eid, rtype, divid) {
   540     jQuery('#' + divid).show();
   535     jQuery('#' + divid).show();
   541     jQuery('#' + divid + '-form').hide();
   536     jQuery('#' + divid+'-form').hide();
   542 }
   537 }
   543 
   538 
   544 CubicWeb.provide('edition.js');
   539 CubicWeb.provide('edition.js');