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'); |