Najnowsze wpisy

Zaawansowana subskrypcja, nasze nowe rozszerzenie

W repozytorium CMS TYPO3 jest już kilka pluginów za pomocą których można...
09 styczeń 2012

Convenient In/Out animation using expressions

We recently had an opportunity to make a set of instructional animations...
07 listopad 2011

Wdrożenie Sphinx Search

W ostatnim czasie potrzebowaliśmy wydajnego i rozbudowanego mechanizmu...
26 lipiec 2011

Tagi

Nowa wtyczka evo_chained_selector

Evo_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

zaznacz
  1.  
  2.  $TCA[$table]['field']['config']['params']['table']
  3.  

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

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

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

Zrzut ekranu

evo_chain_selector

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

 

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:

Gravatar: ktostaki ktostaki, 11.11.2009 08:41
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.
Gravatar: Typo3 Freelancer Typo3 Freelancer, 16.11.2009 11:28
Thank you ... this has me very helped.
Gravatar: Social Media Agentur Social Media Agentur, 17.02.2011 12:24
Thanks, this config have I searched.
Dodaj swój komentarz:

* Tylko oznaczone pola są wymagane