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
getRequestData
etsetRequestData
customData
- L'objet
customData
contient l'objetcustomClientData
, cet objet peut-être modifié si besoin. La fonctionaddCustomClientData
n'est pas prise en compte durant cet événement. La modification n'est pas prise en compte si la fonctionsetRequestData
est 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_title
est 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 ); });