Questa è una vecchia versione del documento!
Superclasse
- cwbBpaWizard: Finestra di gestione wizard da estendere
Interfaccia
- wizardable: Interfaccia da implementare
Per creare un wizard va creata una form 'container' con all'interno:
* la buttonBar (tasti gestiti: Avanti, Indietro, Annulla e Concludi).
* un div segnaposto chiamato 'divGestione' su cui verrannò inserite le form dei vari step.
Questa form container dovrà estendere la classe cwbBpaWizard mentre le form dei singoli step dovranno implementare l'interfaccia wizardable. Sulla form container nel metodo initVars vanno valorizzate le seguenti proprietà:
* nameForm: il nome della form container
* firstStepName: Il nome della form utilizzata come primo step
* lastStepName: Il nome della form utilizzata come ultimo step
* DBName: Il nome del db da usare per la connessione (es. 'CITYWARE')
Il primo e l'ultimo step sono quindi obbligatoriamente fissi, mentre tutte le form intermedie sono dinamiche.
Nella superclasse è presente una variabile'navigationRules' che è una linkedlist che gestisce il flusso. La variabile navigationRules ha un metodo current ($this→navigationRules→current()) che specifica la form corrente in cui ci troviamo.
Nel metodo preNext va gestito il comportamento del wizard al click del tasto avanti (va impostato qual'è lo step successivo e le azioni/parametri da passare). Come parametro arriva 'currentStep' che contiene il nome della form dello step corrente. Per aggiungere uno step alla navigationRules va chiamato il metodo addStepToNavigationRules passandogli come parametro il nome della form successiva ($this→addStepToNavigationRules('nomeDelloStepSuccessivo')).
es implementazione preNext:
protected function preNext($currentStep) { switch ($currentStep) { case 'cwdForm1': $x = $_POST['cwdForm1_x']; switch ($x) { case "1": $this->addStepToNavigationRules('cwdForm2'); // se x=1 aggiungo cwdForm2 come step successivo // codice.... break; case 2: $this->addStepToNavigationRules('cwdForm3'); // se x=2 aggiungo cwdForm3 come step successivo // codice.... break; } break; case 'cwdForm2': // se non aggiungo uno step successivo, vado allo step finale // codice.... break; } }
Implementando l'interfaccia wizardable, verrà richiesto di implementare il metodo 'validaWizardStep($formData, &$msg)' in cui va gestita la validazione della form al click del tasto 'avanti'. Il metodo deve tornare true o false in base al risultato e concatenare i messaggi di errore su $msg.
Per gestire il salvataggio finale/azioni varie è possibile in ogni step, aggiungere delle operazioni o salvarsi dei dati.
* Aggiungere Dati: $this→addFixedParameterCache($key, $value, $formName= ''); In questo modo si aggiunge un valore in cache per poi riutilizzarlo alla fine. Se viene passata $formName questo valore viene pulito in automatico facendo indietro dalla form '$formName' se invece non si passa $formName il valore rimane fisso ed al limite può essere cancellato a mano (cleanFixedParameterCache). es. $this→addFixedParameterCache('CODPROF', $_POST['cwdDtaTitstuWiz_CODPROF'], $this→navigationRules→current());
* Aggiunta Operazioni: $this→addOperationCache($formDataKey, $operationKey, $operation, $table, $value, $recordInfo = null) In questo modo si aggiungo operazioni che vengono eseguite in maniera automatica al click finale su 'Conferma'.
es. $value = array(
'PROGENTE' => 1, 'DESCRIZ' => "AMMAZO IL CANE", 'ALIAS' => "CANE" ); $this->addOperationCache("cwdDanNuovieventi", "salvoGruppi", itaModelService::OPERATION_INSERT, "BOR_GRUPPI", $value);