5.7.3.12 beforeSave
5.7.3.12.1 Déclenchement
Le document va être sauvegardé. Cet événement est déclenché après la phase de validation.
5.7.3.12.2 Éléments passés au callback
event- objet événement standard de jQuery,
currentDocumentObject- un objet document décrivant le document courant.
requestOptions- Cette option contient 2 fonctions
getRequestDataetsetRequestData customData- L'objet
customDatacontient l'objetcustomClientData, cet objet peut-être modifié si besoin. La fonctionaddCustomClientDatan'est pas prise en compte durant cet événement. La modification n'est pas prise en compte si la fonctionsetRequestDataest appelée.
La fonction getRequestData retourne un objet json. Cet objet est la donnée envoyée au serveur
lors de la sauvegarde.
L'objet requestData a trois principales données :
- document.properties
- document.attributes
- customClientData
Seules les données document.attributes et customClientData peuvent être modifiée.
La modification de document.properties n'a aucun effet.
Extrait de données requestData (partielles):
{ "document": { "properties" : { "initid" : 1256 "title" : "My Awesome Document" } "attributes": { "my_title": { "value": "Hello world" "displayValue" : "Hello world" }, "my_level": { "value": 12 "displayValue" : "12" } } } "customClientData": { "myKey" => "Special Data" } }
La fonction setRequestData prend en entrée, un objet JSON de la forme indiqué
ci-dessus.
5.7.3.12.3 Annulable
Oui. Dans ce cas, la sauvegarde est annulée et rien n'est fait.
5.7.3.12.4 Exemple
5.7.3.12.4.1 Interrompre la sauvegarde
- ajoute au ready du document (fonction
addAnimalEvents) un écouteur sur l'événementbeforeSave, -
l'écouteur (fonction
preventSaveAnimal) empêche la sauvegarde du document si- l'attribut
zoo_titleest différent defermer.
Dans ce cas, il affiche un message pour avertir l'utilisateur qu'il doit changer la valeur.
- l'attribut
window.dcp.document.documentController("addEventListener", "ready", { "name": "addAnimalEvent", "documentCheck": function(documentObject) { return documentObject.family.name === "ANIMAL"; } }, function addAnimalEvents() { this.documentController("addEventListener", "beforeSave", { "name": "preventSave.animal", "documentCheck": function(document) { return document.family.name === "ANIMAL"; } }, function preventSaveAnimal(event, currentDocumentObject) { if (this.documentController("getValue", "zoo_title").value !== "fermer") { event.preventDefault(); this.documentController("showMessage", { "type" : "error", "message" : "If you want to save the doc, change the title to fermer" }); } }); } );
5.7.3.12.4.2 Enregistrer seulement les données modifiées
Cet exemple montre comment utiliser les fonctions getRequestData et setRequestData
pour ne renvoyer que les données modifiées lors de la sauvegarde.
window.dcp.document.documentController("addEventListener", "beforeSave", { "name": "SaveOnlyModified.test", }, function saveOnlyModified(event, currentDocumentObject, requestOptions, customData) { var systemData= requestOptions.getRequestData(); this.documentController("getAttributes").forEach(function (attr) { if (!attr.isModified()) { delete systemData.document.attributes[attr.id]; } }); requestOptions.setRequestData( systemData ); });