Strict Standards: Declaration of action_plugin_searchtext::register() should be compatible with DokuWiki_Action_Plugin::register($controller) in /lib/plugins/searchtext/action.php on line 14

Warning: Cannot modify header information - headers already sent by (output started at /lib/plugins/searchtext/action.php:14) in /inc/auth.php on line 313

Warning: Cannot modify header information - headers already sent by (output started at /lib/plugins/searchtext/action.php:14) in /inc/actions.php on line 163
style-graficzne:js-baskethandler [Shop Docs]

Dokumentacja techniczna

basketHandler

Pod-klasa Shop. Obsługa koszyka w kroku pierwszym (strona główna) i drugim (uzupełnianie danych adresowych).

Parametry w HTML

Krok 1

Parametry te potrzebne są w do dynamicznych zmian kraju, płatności i dostawy, wraz z przeliczaniem kosztów.

  • Shop.values.CurrencyMap (string) - wartość 1234.56 sformatowana za pomocą {currency}
  • Shop.values.ShippingValue (obiekt) - mapa dostaw do ich kosztów „s” + ID dostawy : koszt
  • Shop.values.SumNoShipping (float) - wartość koszyka bez kosztów dostawy
  • Shop.values.Shipping2Payment (obiekt) - mapa dostaw do płatności, które są przez nie obsługiwane „s” + ID dostawy : [ tablica z ID płatności ]
  • Shop.values.Country2Shipping (obiekt) - mapa krajów do dostaw, które są dostępne na ich terenie dwuliterowy kod kraju : [ tablica z ID dostaw ]

Krok 2

  • Shop.values.Country2Shipping (tablica) - tablica dwuliterowych kodów krajów przypisanych do wybranej wcześniej formy dostawy

Parametry w JS

Ponieważ klasa jest inicjalizowana razem z Shop, wszystkie parametry należy nadać przed zdarzeniem domready lub najpóźniej w funkcji warunkowej Shop.basketHandler.condition()

Parametry Shop.basketHandler.options :

  • Dla kroku pierwszego
    • step : (int) 1 - informacja o kroku
    • containers (obiekt)
      • step1 : element DOM, kontener zawierający wszystkie kraje, dostawy i płatności
    • ordersumfield : element DOM z końcowym kosztem zamówienia (koszyk + dostawa)
    • selectors (obiekt)
      • deliveryrow : wiersze zawierające dostawy
      • paymentrow : wiersze zawierające płatności
      • deliverychangelink : link odsłaniający listę dostaw do wyboru
      • paymentchangelink : jw. dla płatności
      • paymentheadlabel : pole z nazwą wybranej płatności
      • paymentrlabel : pod-selector dla każdego paymentrow, nazwa płatności
      • paymentradios : input radio dla każdej płatności
      • deliveryheadlabel : pole z nazwą wybranej formy dostawy
      • deliveryheadvalue : pole z kosztem wybranej formy dostawy
      • deliverytrlabel : pod-selector dla każdego deliveryrow, nazwa formy dostawy
      • deliverytrvalue : pod-selector dla każdego deliveryrow, koszt formy dostawy
      • deliveryradios : input radio dla każdej dostawy
      • trradio : pod-selector dla deliveryrow i paymentrow, input radio
      • countrytr : wiersz z wyborem kraju dostawy
      • trcountryselect : pod-selector dla countrytr, pole select z krajami
  • Dla kroku drugiego
    • step : (int) 2 - informacja o kroku
    • containers (obiekt)
      • step2 : element DOM, kontener zawierający formularz z polami adresowymi
    • selectors (obiekt)
      • trdifferentaddress - wiersze zawierające pola input od adresu dostawy (drugiego)
      • differentaddress - input checkbox od wyboru adresu dostawy
      • personaladdress - input radio, adres osoby prywatnej
      • companyaddress - input radio, adres firmowy
      • formcompanyname - input text, nazwa firmy w drugiego adresie
      • formtaxid - input text, NIP w pierwszym adresie
      • formcompanyname2 - input text, nazwa firmy w drugiego adresie
      • formtaxid2 - input text, NIP w pierwszym adresie
      • countryselect - select od wyboru kraju w pierwszym adresie
      • addresstyperadios - pola radio (personaladdress i companyaddress)
      • addressselectsubmit - input submit (lub button) od pobierania adresu z książki adresowej (powiązany z polem <select>, ukrywany kiedy JavaScript jest włączony)
      • addressselect - pole <select> z adresami użytkownika do szybkiego załadowania
      • addressinput - uniwersalny selector z ciągiem znaków ”{name}”, który jest wykorzystywany do pobrania elementu DOM z konkretnym name
    • getaddressurl (string) - adres URL skąd można pobrać dane adresowe klienta, wymagany wewnątrz ciąg znaków {id}, który zostanie podmieniony na ID żądanego adresu

Frazy:

  • Shop.lang.basket.address_request_error - komunikat podczas nieudanego pobrania adresu
  • Shop.lang.basket.shipping_different_country - komunikat przy próbie odznaczenia pola „inny adres dostawy”

Działanie

Wszystkie podane selectory wywoływane są wewnątrz kontenera danego kroku.

Krok 1

  • deliverychangelink - link „zmień »” do wyboru dostawy, usunięcie klasy none
  • jeżeli pomimo usunięcia klasy none, link jest niewidoczny (odpowiednie ustawienia CSS), listy dostaw i płatności zostają permanentnie widoczne
  • w przeciwnym wypadku „zmień »” dla dostaw deliverychangelink oraz „zmień»” dla płatności paymentchangelink otrzymują zdarzenia onClick do rozwinięcia wierszy
  • paymentradios] otrzymują zdarzenia onChange
    • nadają klasę selected swojemu <tr>, pozostałym paymentrow usuwają
    • nadają paymentheadlabel treść równą paymentrlabel ze swojego wiersza
    • ukrywają wiersze płatności
  • deliveryradios otrzymują zdarzenia onChange
    • nadają klasę selected swojemu <tr>, pozostałym deliveryrow usuwają
    • nadają deliveryheadlabel treść równą deliverytrlabel ze swojego wiersza
    • nadają deliveryheadvalue treść równą deliverytrvalue ze swojego wiersza
    • sprawdzają które płatności są dostępne dla danej dostawy i uwidaczniają (klasa none) tylko te dostępne, reszta zostaje ukryta
    • przesuwają klasę first do wiersza pierwszej widocznej płatności
  • jeżeli podano tablicę Shop.values.Country2Shipping i krajów jest więcej niż jeden, countrytr –> trcountryselect otrzymuje zdarzenie onChange
    • zmiana wartości uwidacznia tylko dostawy deliveryrow dostępne na terenie danego, reszta zostaje ukryta (klasa none)
    • klasa first zostaje przesunięta do pierwszej widocznej dostawy

Krok 2

  • w zależności od zaznaczenia radio companyaddress, wiersze zawierające formcompanyname, formtaxid są ukrywane lub pokazywane
  • w zależności od zaznaczenia checkbox differentaddress (inny adres dostawy), wiersze trdifferentaddress są ukrywane lub pokazywane (klasa none)
  • countryselect otrzymuje zdarzenie onChange, które sprawdza czy wybrany kraj znajduje się w tablicy Shop.values.Country2Shipping; jeżeli nie zaznacza differentaddress i blokuje jego odznaczenie
  • przycisk addressselectsubmit jest ukrywany (klasa none), jest on zbędny kiedy JavaScript działa, pobranie adresu odbywa się onChange
  • addressselect otrzymuje zdarzenie onChange, które pobiera adres użytkownika o wybranym value (ID) i wypełnia pola <input> według otrzymanej treści