Home > TYPO3 > Nowa wtyczka evo_chained_selector

Nowa wtyczka evo_chained_selector

November 10th, 2009

chainEvo_chained_selector jest rozszerzeniem BE pozwalającym na tworzenie powiązania między rekordami za pomocą tzw “chained selection”.
Geneza powstania tego rozszerzenia wiąże się z wdrożeniem nad którym ostatnio pracowaliśmy. Strona posiada rozbudowaną bazę aktów prawnych których struktura jest następująca:

Akty -> artykuły -> paragrafy i rozdziały -> sekcje

Redaktor podczas wprowadzania nowego rekordu tt_news ma możliwość dowiązania odpowiedniego paragrafu do nowego newsa. Zastanawialiśmy się jak to elastycznie rozwiązać, aby redaktor mógł szybko i efektywnie tworzyć nowe relacje i postanowiliśmy przygotować nową kontrolkę.

Evo_chained_selector to mechanizm oparty na ajaxie który analizuje strukturę tabeli wskazanej w

#
  1. $TCA[$table]['field']['config']['params']['table']

i sprawdza czy wybrany rekord w pierwszym inpucie posiada dzieci jeśli tak to dodaje kolejny input. Zakres rekordów w polu wyboru jest ograniczany dynamicznie podczas wpisywania słowa kluczowego. W ten sposób każdy z poziomów może operować na nieograniczonej ilości rekordów nie powodując przy tym długiego ładowania się formularza edycji rekordu.

Integracja we własnych modułach BE

Relacja jest budowana za pomocą typu TCA user, gdzie w kluczu userFunc należy zdefiniować wywołanie funkcji tx_evochainedselector_client->render.
Tabela do której tworzymy relacje musi mieć strukturę drzewa dlatego klucz parentField powinien odwoływać się do pola parent_uid. (w przypadku tabeli pages: pid).

#tca.php
  1. "myfield" => Array (
  2.  "exclude" => 1,
  3.  "label" => "Select record",
  4.  "config" => Array (
  5.   "type" => "user",
  6.                 "userFunc" => "tx_evochainedselector_client->render",
  7.    'params' => array(
  8.     'table' => 'pages',
  9.     'parentField' => 'pid',
  10.     'title' => '###title###', // title of records in autocomplete form
  11.     'searchFields' => 'title', // which fields to search
  12.     'limit' => 20,
  13.     'order' => 'title',
  14.     'additionalWhere' => ''
  15.     )
  16.    )
  17.   ),

W polu relacji zapisywany jest ostatni wybrany UID w łańcuchu.

Zrzut ekranu

evo_chain_selector

evo_chained_selector

Zrzut ekranu 2009-10-29 (godz. 21.10.03)

evo_chained_selector

VIDEO

Do zrobienia

Jest to pierwsza startowa wersja tego rozszerzenia. Wiele rzeczy można poprawić oraz dodać.
Czekam na wasze sugestie i pytania.

Pliki do pobrania:

  • Share/Save/Bookmark

Bartosz Aninowski TYPO3 chain, prototype, select, tca

  1. ktostaki
    November 11th, 2009 at 08:41 | #1

    Jak ponad rok temu pytałem czy można takie coś robić w BE to dostałem odpowiedź, że nie bo BE jest cachowany ;) . Jeśli utrzymacie takie tępo to za rok zaczniecie robić ciekawe rzeczy po stronie BE powodzenia.

  2. November 16th, 2009 at 11:28 | #2

    Thank you … this has me very helped.

  1. Brak jeszcze trackbacków