# Presave

Si può inserire uno script personalizzato anche quando si preme il pulsante “Salva” in modalità EditView. Per registrare uno script di questo tipo usare il metodo:

**SDK::setPreSave($module, $src);** *$module : il nome del modulo*  
*$src : il percorso dello script php*

Per de-registrarlo usare il metodo:

**SD<span lang="en-US">K::unsetPreSave($module,</span> <span lang="en-US">$src</span> <span lang="en-US">=</span> <span lang="en-US">NULL);  
</span>***$module : il nome del modulo*  
*$src : il percorso dello script (se NULL, include tutti gli script registrati per quel modulo)*

All’interno dello script sono disponibili le seguenti variabili:

*$type : tipo di salvataggio (“MassEditSave”, “DetailView”, “EditView”, “createTODO”, “QcEditView”, “ConvertLead”, “createQuickTODO”, “Kanban”)*  
*$values : (array) nuovi valori*  
  
Nota: nel caso MassEditSave, è possibile conoscere i record coinvolti richiamando la funzione getListViewCheck($currentModule);

Nota: nel caso createQuickTODO i campi disponibili in $values sono i seguenti:

<table border="1" id="bkmrk-eventi-todo-module-%3D" style="border-collapse: collapse; width: 100%;"><tbody><tr><td style="width: 50%;">Eventi</td><td style="width: 50%;">TODO</td></tr><tr><td style="width: 50%;">Module =&gt; 'Calendar',CalendarTitle, CalendarStartTime, CalendarEndTime, IsAllDayEvent, timezone, EventType, Description, Location</td><td style="width: 50%;">Module = 'Calendar',  
activity\_mode =&gt; Task,hour, day, month, year, task\_time\_start, task\_subject, task\_description, taskstatus, taskpriority, task\_assigntype, task\_assigned\_user\_id, task\_assigned\_group\_id, starthr, startmin, startfmt, task\_date\_start, task\_due\_date</td></tr></tbody></table>

E possono essere restituite le seguenti:

*$status : (bool) se il salvataggio ha avuto successo o no*  
*$message: (string) se presente viene mostrato un popup con il messaggio*  
*$confirm: (bool) se vero viene mostrato un popup Javascript che chiede conferma per proseguire, mostrando $message. In tal caso non si deve impostare $status.*  
*$focus : (string) in caso di errore, l’elemento che prende il focus (solo se $status = false)*  
*$changes: (array) valori da assegnare ai campi (solo se $status = false)*

Le variabili $focus e $changes sono disponibili solo quando $status è false e $type è uno tra 'EditView', 'createTodo', 'QcEditView', 'ConvertLead'.

<p class="callout info">**Hooks**  
include/js/general.js  
include/js/KanbanView.js  
modules/Calendar/script.js  
modules/Calendar/wdCalendar/sample.php  
modules/Leads/Leads.js  
modules/Users/Forms.php  
modules/VteCore/KanbanAjax.php  
Smarty/templates/Header.tpl  
Smarty/templates/ComposeEmail.tpl  
Smarty/templates/Popup.tpl</p>