Dzisiaj zostało wydane Contao 3.2.0. 140 zgłoszeń zostało zaakceptowanych i wdrożonych przez 4 miesiące prac i 2 miesiące testów. Wersja 3.2 jest wersją LTS, czyli taką, która będzie wspierana przez 18 miesięcy. Nowa wersja jest przetłumaczona na język polski w 100%.
Poniżej krótka lista najważniejszych zmian:
Unikalne ID pliku
W Contao 3 wprowadzony został system plików, który jest wspierany przez bazę danych. W bazie danych trzymane są informacje na temat wszystkich katalogów i plików w folderze "files". Do tej pory unikalnym odwołaniem do rekordu było zwykłe liczbowe ID. Powodowało to problemy z synchronizacją takimi narzędziami jak np. syncCto, gdzie te same ID występowało w dwóch instalacjach Contao.
Wraz z wersją 3.2 wprowadzone zostało UUID (Universally Unique Identifier), które jest unikalne w różnych systemach i np. wygląda tak: bb643d42-0026-ba97-11e3-ccd717221c8a.
Insert tag "file" również wspiera UUID jako parametr:
<img src="{{file::bb643d42-0026-ba97-11e3-ccd717221c8a}}" alt="">
Zostanie on zastąpiony przez ścieżkę do pliku.
Anonimowe funkcje w DCA i szablonach
PHP w wersji 5.3 nareszcie wspiera anonimowe funkcje, dzięki czemu kod może być jeszcze lepszy. Można ich używać jako dowolny callback w DCA. Więcej szczegółów tutaj: https://contao.org/en/news/contao-3_2_beta1.html
Wsparcie serwerów proxy
Poprawiło się wsparcie serwerów proxy:
- Teraz możesz wprowadzić listę zaufanych serwerów proxy w ustawieniach panelu administratora, aby usprawnić filtrowanie adresu IP użytkownika po ewentualnie istniejących adresach IP serwerów proxy.
- Jeśli używasz proxy serwer SSL i jeśli dodałeś nazwę domeny w ustawieniach, Contao to rozpozna i dostosuje generowanie URL na podstawie wysyłanych nagłówków.
Debugowanie stało się łatwiejsze
Od tej pory Contao zawsze będzie pokazywać błędy, jeśli jesteś zalogowany w narzędziu instalacyjnym. W tym wypadku ustawienie "Wyświetl komunikaty błędów" będzie ignorowane.
system/docs/UPGRADE.md
Administratorzy mogą teraz wprowadzić ID swojego profilu Google+. Dzięki temu wszystkie ich artykuły (włączając w to np. newsy) będą automatycznie połączone z profilem Google+. Spowoduje to pokazanie zdjęcia profilu Google+ przy wynikach wyszukiwania. Oczywiście taką opcję trzeba włączyć w samym profilu Google+. Przykład: https://www.google.pl/search?q=create+custom+contao+module
Nazwy użytkowników wrażliwe na wielkość liter
Od tej wersji wielkość liter w nazwach użytkowników ma znaczenie. Poprzednio można było zalogować się na to samo konto za pomocą "k.jones" lub "K.JONES" lub nawet "k.joNEs". W Contao 3.2 zostało to zmienione, zatem "k.jones" i "K.JONES" będą w istocie dwoma różnymi kontami.
Model registry
Tristan Lins opracował rejestr modelów, który minimalizuje ryzyko utraty danych przez przypadkowe utworzenie dwóch różnych modelów wskazujących na ten sam rekord bazy danych. Rejestr działa w tle i nie wymaga żadnych zmian we własnych rozszerzeniach.
Własne sekcje układu
Pojawiły się dwa nowe sekcje układu strony:
- top: przed elementem #wrapper
- bottom: po elemencie #wrapper
Dodatkowo, od teraz własne sekcje strony nie będą określane w ustawieniach, a bezpośrednio w układach stron. Istniejące układy zostaną automatycznie dostosowane podczas aktualizacji do wersji 3.2.
Powtarzające się wydarzenia
Do tej pory, powtarzające się wydarzenie zawsze pokazywało pierwszą datę w widoku szczegółów, np. "6 Grudzień, 1990", razem z notką "to wydarzenie powtarza się każdego roku aż do 2020". Z wersją 3.2, wydarzenie będzie pokazywać tylko następną nadchodzącą datę, np. jeśli wyświetlimy dzisiaj "6 Grudzień 2013" to 7-go grudnia zobaczymy już "6 Grudzień 2014".
Nowe atrybuty pola formularza
Od teraz widżety wspierają atrybuty "autocomplete", "autocorrect", "autocapitalize" i "spellcheck". Mogą być one określone w DCA lub bezpośrednio w obiekcie Widget.
Uproszczony insert tag "iflng"
Użycie insert tagu "iflng" oraz "ifnlng" zostało uproszczone:
<!-- stare -->
{{iflng::de}}Hallo Welt{{iflng}}{{iflng::en}}Hello world{{iflng}}
<!-- nowe: tylko jeden zamykający tag {{iflng}} -->
{{iflng::de}}Hallo Welt{{iflng::en}}Hello world{{iflng}}
Magiczna metoda "Model::countBy*()"
Dodatkowo do metod "findBy()" oraz "findOneBy()", które mogą być wywołane poprzez "Model::__callStatic()", dołączyła metoda "countBy()".
$count = PageModel::countBy('pid', 3);
$count = PageModel::countByPid(3);
Nowe hooki
Hook "compileFormFields" pozwala na zmodyfikowanie arraya z polami formularza, kiedy formularz jest generowany.
Hook "isVisibleElement" jest wykonywany kiedy element (artykuł, element treści lub moduł) jest wyświetlany na stronie. Bazując na ustawieniach decyduje on o tym, czy element ma zostać pokazany.
Hook "getAttributesFromDca" jest wykonywany kiedy atrybuty obiektu Widget są kompilowane na podstawie informacji DCA. Pozwala na dynamiczne dostosowanie atrybutów.
Tryb konserwacji
W nowym trybie konserwacji, serwis wyśle nagłówek 503 i wyświetli neutralną stronę z odpowiednim komunikatem. Instalacja przechodzi w ten tryb podczas instalacji, aktualizacji lub usunięcia rozszerzeń z repozytorium rozszerzeń. Dodatkowo, tryb ten można włączyć ręcznie w ustawieniach instalacji, np. przy aktualizacji systemu.