DialogWizard - kreator
Kreator to rodzaj dialogu, czyli skryptu interaktywnego posiadający swoje etapy, gdzie na każdym z nich wykonuje określone akcje. Dialog ten można porównać do instalatora, gdzie na każdym etapie użytkownik wykonuje jakąś czynność. Poniższe zrzuty ekranu prezentują zakładanie kolejnej jednostki organizacyjnej.
![wizard1](/assets/wizard1-XYlHIRoZ.png)
![wizard2](/assets/wizard2--kZ_Ob9N.png)
![wizard3](/assets/wizard3-lEy2u-qs.png)
kliknij, aby pobrać klasę SystemWizardDialog.inc
Każdy krok składa się z wpisu do tablicy $stepsDefMethods i dwóch metod createMyStep i saveMyStep, gdzie słowo MyStep to unikalna nazwa naszego kroku.
Do tablicy $stepsDefMethods wpisujemy tylko metodę createMyStep.
Metody asynchroniczne służą do pobierania dodatkowych danych, które potrzebujemy do naszego kroku np. po wybraniu dodatkowych parametrów lub podmienieniu wartości w polu wyboru. Więcej na ten temat przeczytasz tutaj..
Ważne, że metody te definiujemy w tablicy_ $cMethods
nie ustawiając indeksów. Do pobierania indeksów służy metoda getIdCallableMethod($methodName)
.
$this->getIdCallableMethod($methodName);
Gdzie parametr $methodName
przyjmuje nazwę metody wpisanej do $cMethods
.
W konstrukcie definiujemy wysokość i szerokość okienka.
Metoda open jest wywoływana tylko jeden raz przy kliknięciu przycisku.
W metodzie open należy wywołać metodę create, jak to jest pokazane po prawej stronie.
W metodach create definiujemy wszystkie potrzebne pola dla danego kroku.
W kreatorze wszystkie pola przypisujemy do specjalnego panelu, który dostaniemy po wywołaniu metody getPanel i przekazaniu do niego parametru $number, który dostajemy jako pierwszy parametr.
Za pomocą metody setHeaderStep można ustawić nagłówek kroku jego treść, kolor oraz ikonkę z prawej strony.
$this->setHeaderStep(($number + 1).'. '.Translator::translate('Wprowadź nip, nazwę subdomeny, ilość użytkowników i datę wyłączenia systemu'), '#f0f0f0', 'eic eic-user');
Jeżeli chcemy ustawić wartości do pól w następnym kroku, to robimy to za pomocą metody setStepWData, której przekazujemy numer kroku i tablicę kluczy i wartości. Kluczem jest zawsze alias, który podajemy przy dodaniu pola do panelu.
$this->setStepWData($this->currentPanel + 1, $data);
disableButtons
Usunięcie przycisku z wizarda Jeżeli chcemy, aby w naszym wizardzie nie było możliwości cofania (przycisku nie będzie na formatce).
Wystarczy, że do metody __construct
dodamy następującą linię:
$this->disableButtons = ['bBack'];
setHeaderStep('Przykładowy krok', 'eic eic-user-filled', '#2ecc71')
Ustawienie nagłówka dla etapu
/**
* @param string $text Tekst wyświetlany w nagłówku
* @param string $eicIcon Nazwa klasy ikonki fontowej wyświetlanej z prawej strony w nagłówku
* @param string $bgColour Kod koloru tła
* @method DialogWizard::setHeaderStep($text, $eicIcon = false, $bgColour = false)
*/
$this->setHeaderStep('Przykładowy krok', 'eic eic-user-filled', '#2ecc71');
setNextStep($currentStep = FALSE, $nextStep = FALSE)
Ukrywa etapy pomiędzy tymi przekazanymi w argumencie 1 i drugim. Układa na nowo kroki wizarda. Jeżeli chcemy usunąć wszystkie kroki do końca od bieżącego wtedy wywołujemy
Przykład 1
$this->setNextStep('createPanel1');
Przykładowe kroki:
- createPanel1
- createPanel2
- createPanel3
- createPanel4
Jeżeli chcemy wyciąć kroki createPanel2 i createPanel3 wtedy robimy tak
Przykład 2
$this->setNextPanel('createPanel2','createPanel3');
/**
* @param string|bool $currentStep
* @param string|bool $nextStep
*
* @throws CustomErrorException
*/
protected function setNextStep($currentStep = FALSE, $nextStep = FALSE)
getPanel($number)
Zwraca Panel kontener na elementy GUI
/**
* @param integer $number
* @return \Panel
*/
$this->getPanel($number);
setStepWData($number, ['input' => 'Wartość dla inputa'])
Ustawienie danych wejściowych dla etapu
/**
* @param integer $number Numer kroku
* @param array $wData Tablica wartości alias => wartość dla inputów zostaną ustawione przed wywołaniem tego kroku
*/
$this->setStepWData($number, ['input' => 'Wartość dla inputa']);
setNextButton($caption, $title = '', $js = FALSE, $restore = TRUE);
Ustawienie etykietki dla przycisku DALEJ. Gdy chcemy na danym etapie zmienić nazwę przycisku z 'DALEJ' na 'UTWÓRZ' lub zmienić zachowanie przycisku.
/**
* Ustawia etykiety dla przycisku DALEJ
* @param string $caption
* @param string $title
* @param bool|string $js
* @param bool $restore
*/
$this->setNextButton($caption, $title = '', $js = FALSE, $restore = TRUE);
getIdCallableMethod($methodName)
Zwraca ID metody asynchronicznej
/**
* @param string $methodName
*
* @return false|int
*/
$this->getIdCallableMethod($methodName);
getCurrentPanel()
Zwraca id aktualnego kroku
/**
* @return int
*/
$this->getCurrentPanel()