Evoluzione di un sistema di conferme (via Jquery e BlockUi)

Per chi come me ha la stessa capacità di disegno di un pterodattilo, creare interfacce è davvero frustrante.

Purtroppo però le interfacce sono la scogliera contro cui gli utenti si vanno a sbattere e se non è efficente, spesso e volentieri vi renderà la vita un vero inferno.

Passo indietro: Leggendo Professional MVC per il paragrafo sulla sicurezza, mi son fatto parecchie risate perchè ad ogni trucco/hack svelato c'era un avvertimento: l'utente è il diavolo.

SE l'utente ha la benchè minima possibilità di fare dei danni, questo li farà. Magari non nei primi giorni (Se siete fortunati) ma presto e SICURAMENTE farà qualcosa di malevolo.

Non importa se l'utente è un malintenzionato che cerca di bucare il vostro blog oppure è un utente che sta diligentemente "pulendo" l'anagrafica dal vostro gestionale: se può fare danni li farà.

Ecco perchè è particolarmente importante curare l'aspetto delle interfacce. Non tanto per quel che concerne i 'fiorellini' ma per quello che concerne la consapevolezza delle proprie azioni.

 

Prendiamo un esempio tipico: listato dell'anagrafica clienti. Una delle funzionalità principali è quella di ELIMINARE un dato.

 

Vi ricorda qualcosa questo?:

 

Ecco dovete immaginare che un utente in realtà vedrà questo:

 

Vi posso assicurare, per esperienza oramai decennale, questo non si discosta poi molto dalla realtà!

 

Ok capito il problema?! Bene andiamo avanti.

 

Questa è la mia soluzione:

 

 

Notare che il codice da ricopiare (67) è un numero a random da 0 a 100 che cambia OGNI VOLTA.

Questo rende l'operazione MENO MACCHINOSA e sopratutto richiede che l'utente PRENDA EFFETTIVA COSCIENZA delle proprie azioni.

E' IMPOSSIBILE che l'utente richieda la cancellazione di un utente, inserisca il codice corretto e confermi l'operazione NON sapendo quello che sta facendo.

Il fatto di ricopiare il codice è psicologicamente un pò come firmare la propria azione e questo, nel mondo reale, equivale a prendersi le proprie responsabilità.

 

Veniamo alla programmazione

Capito il problema e definita una soluzione passiamo alla programmazione.

Abbiamo bisogno di:

- JQuery 1.4.x con Ui ed Effects  - che trovate qui

- JQuery UI block   - che trovate qui

- un pò di css

- la plugin che gentilmente vi offro ;)    - che potete scaricare da qui con l'esempio annesso

 

Mostriamo subito l'esempio:

 

Clicca qui per la DEMO

 

Il codice è piuttosto semplice:

 

$("#DivConfirmDelete").ConfirmOperation({ title: 'Un titolo di esempio customizzabile', OnExit: $.unblockUI, OnConfirmed: function () { tr.remove(); $.unblockUI(); $.ExitConfirmOperation(); } });

Si fa una select su un div che farà da container (in questo caso DivConfirmDelete) e ...si esegue la extension ConfirmOperation.

ConfirmOperation non è altri che una funzione extension per jquery che estende 3 parametri:

  • title - per un titolo nel box
  • OnExit - se si annulla/esce dalla schermata (qui è un buon posto per richiamare il metodo di uscita di blockUi se lo si usa
  • OnConfirmed - nel caso in cui sia stato inserito il codice corretto e premuto ok

Niente di più facile,

Buon divertimento ;)