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.
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()