Przejdź do głównej treści

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.

Widok - krok 1
wizard1
wizard1

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