Vediamo come modificare la ricerca incrementale sui campi Azienda per poter cercare su tutto il nome.
I campi tramite i quali selezionare le aziende, permettono di utilizzare una “ricerca incrementale” in stile google. Questa ricerca fornisce risultati solo se cerchiamo inserendo le lettere iniziali del nome.
Non sempre ricordiamo come è stata scritto il nome di ogni azienda ed a volte fatichiamo a ricordarlo. A questo scopo può essere utile modificare la ricerca incrementale in modo che vada a cercare il testo inserito su tutto il nome.
La gestione della ricerca incrementale è demandata ad un oggetto javascript denominato “sqs_objects“. In base alle proprietà di questo oggetto il sistema effettua la ricerca.
Nel nostro caso vogliamo dire a SuiteCRM di cercare una azienda che nel nome contenga, in una posizione qualsiasi, la sequenza di caratteri che stiamo inserendo.
Per fare questo creiamo un hook che carichi nel footer della pagina (after_ui_footer) il codice javascript utile a modificare le proprietà dell’oggetto sqs_objects.
Creiamo la chiamata all’hook nel file:
custom/modules/logic_hooks.php
1 2 3 4 |
$hook_array['after_ui_footer'] = Array(); $hook_array['after_ui_footer'][] = Array(15, 'SIT sqs', 'custom/modules/Accounts/SIT_sqs.php','SIT_sqs', 'load_js'); |
Inseriamo il codice come ultima chiamata prima della chiusura del tag php “ ?> “.
Possiamo ora creare il file SIT_sqs.php, che conterrà la classe ed il metodo che si occuperanno di includere il codice javascript e modificare la ricerca incrementale:
custom/modules/Accounts/SIT_sqs.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
class SIT_sqs { public function load_js($event, $arguments){ if ((!isset($_REQUEST["to_pdf"]) || $_REQUEST["to_pdf"] == false)) { echo '<script type="text/javascript">'. 'if(typeof sqs_objects !== "undefined" && typeof sqs_objects["EditView_account_name"] !== "undefined"){'. 'sqs_objects["EditView_account_name"]["conditions"][0] = {'. '"name": "name",'. '"op": "like_custom",'. '"end": "%",'. '"begin": "%",'. '"value": ""'. '};'. 'enableQS(true);'. '}'. '</script>'; } } } |
Il metodo load_js, inserisce nelle pagine il codice javascript che serve a modificare il tipo di ricerca incrementale.
Nel dettaglio indichiamo a SuiteCRM che tutti i campi “EditView_account_name” avranno le condizioni seguenti:
- name: il nome del campo su cui effettuare la ricerca;
- op: il tipo di operazione che nel nostro caso è un “like” sql;
- end: l’operatore a fine stringa;
- begin: l’operatore ad inizio stringa;
- value: il valore da cercare che sarà preso durante la digitazione.
La vera modifica è l’aggiunta del valore “begin”: “%”, attraverso il quale definiamo che non serve che il nome azienda inizi con i caratteri inseriti, ma che li deve solo contenere.
Fatte le modifiche sarà necessario un Ripara e Ricostruisci perché SuiteCRM possa identificare e attivare il nuovo hook e le azioni da compiere.