Podstawowe zmiany w stosunku do wersji 2.0.0
Wprowadzenie:
Pomiędzy wersją 2.1.0 a 2.0.0 zaszło szereg zmian które zostały opisane poniżej.
- System posiada automatycznie uaktualnianą dokumentację API,
- Oznacza to, że z każdą nową wersją systemu będzie dokumentacja klas i metod z których można skorzystać pisząc własne rozszerzenia.
- System napisany jest zgodnie z metodologią domain driven design,
- Oznacza to, że nazwy klas i metod odzwierciedlają to jak wygląda system, wieć jeżeli chcemy opublikować stronę to należy szukać obiektu typu Page i tam będzie metoda publikacji.
- Oznacz także, że duża część funkcji w systemie ma opisowe nazwy.
- System posiada mechanizmy modyfikacji strony przez zewnętrzne skrypty php, które można przypiąć np. do zdarzeń typu PageLoad, PagePublish, PageLock, PageUnpublish. Obecnie (wersja 2.1.0rc1) brak interfejsu do przypisywania zdarzeń. Będzie on dostępny w wersji 2.1.0.
- Oznacza to, że dla każdej strony która znajduje się w systemie można dodać własny skrypt który może zmodyfikować jej zachowanie. Lista zdarzen będzie systematycznie rozszerzana. Obecnie najlepszym miejscem dodawania własnych scryptów jest PageLoad, które wykonywane jest zaraz po tym jak strona się załaduje.
- Wykorzystanie wewnętrznych funkcji systemu API jest możliwe także w ramach klas rozszerzających klasy DynamicItem, StaticItem, w zdarzaniach strony lub w tzw. code-behind, czyli w kodzie dołączanym do każdej strony,
- Oznacza to, że możesz korzystać z dorobku sytemu +CMS aby szybko pisać nowe elementy wyświetlane na swoich stronach. Nie trzeba martwić się o to np. jak sprawdzić czy element jest zablokowany wystarczy napisać if($this->isLocked()) i wiemy czy któś zablokował nasz element.
- Został zmieniony parametr URL'a wskazujący na stronę w systemie, zamiast id jest teraz __page__id. Podobnie jest z identyfikatorem elementu na stronie, przekazywany przez parametr __item_id.
- Jest to wewnętrzna część systemu i nie jest widoczna dla zwykłego użytkownika.
- Został przepisany parser szablonów - przyjmuje on jedynie poprawnie sformatowane pliki XML lub XHTML.
- W ten sposób będą powstawać lepiej pozycjonujące się strony.
- Zmieniono format zapisu tagów, z np.<cms:library-set.myid ..> na <cms:LibrarySet id="myid"..>
- Można obecnie zamykać tagi tak jak w XMLu, nie trzeba pisać <cms:image.x></cms:image.x> można zapisać ten tag tak: <cms:Image id="x" />
- Tagi mogą być zagnieżdżone, nie było to możliwe w poprzednich wersjach. Można napisać coś takiego <cms:Html id="x"><cms:Image id="y"/></cms:Html>. Dostęp do potomnych tagów (tutaj cms:Image) dostępny jest z poziomu API lub zdarzań na stronie.
- Daje to możliwość tworzenia elementów o dużo bardziej rozbudowanej strukturze, np. listy z bazy danych w których możemy definiować kolmny do wyświetlenia, sposób sortowania, etc.
- System posiada rejestrator zewnętrznych klas, dzięki czemu nie trzeba wykonywać za każdym razem funkcji require(nazwa_pliku). Plik z klasą jest ładowany przy pierwszym jej wykorzystaniu, np. przez new NazwaKlasy() lub statyczne wywołanie klasy NazwaKlasy::nazwaMetody().
- Bardzo wygodny sposób pisania oprogramowania który uwalnia programistę od myślenia o tym gdzie znajduje się plik z daną klasą.
- Dodano interfejs pozwalający na modyfikację właściwości klasy z poziomu systemu.
- Oznacza to, że w prosty sposób można przygotwać interfejs dla wdrożeniowca w którym może on zmieniać właściwości elementów.
- System jest w pełni rozszerzalny, czyli można w prosty sposób dopisać własny tag. W przypadku prostych implementacji nie trwa to więcej niż 15 min.
- Usunięto z systemu kilka tagów, które nie można było w prosty sposób przepisać, są to
- cms;poll
- cms:db - nie potrzeby przy obecnych możliwościach konfiguracyjnych systemu
- cms:db-sql - nie potrzeby przy obecnych możliwościach konfiguracyjnych systemu
- cms:db-table - nie potrzeby przy obecnych możliwościach konfiguracyjnych systemu
- cms:rss - w wersji 2.1.0 całkowicie nowy mechanizm
- cms:area - nie potrzeby przy obecnych możliwościach konfiguracyjnych system
- Niektóre tagi mają jedynie interfejs do zmiany właściwości, brak interfejsu edycyjnego. Są to tagi, które nigdy nie są zmieniane przez edytora, typu:
- cms:Xform
- cms:Library

