Projekt Fast-CMSdate2015-10-31 20:00:24authoradminpreviews4983
cms on my framework mvc

Jest to autorskie rozwiązanie systemu CMS opartego na własnym frameworku MVC. Dlaczego nie skorzystałem z gotowych systemów typu Wordpress czy Joomla? Z kilku powodów.

Po pierwsze chciałem stworzyć coś swojego i przy okazji się czegoś nauczyć. Uważam, że najszybciej się uczymy - przynajmniej jeśli chodzi o mnie - gdy robimy coś w praktyce. Zanim zacząłem projekt, wielu rozwiązań, które w nim zastosowałem, nie znałem, i byłem zmuszony poszukać ich w internecie (w dokumentacjach, na forach). W ten sposób zdobyłem mnóstwo cennej wiedzy.

Po drugie chciałem mieć system skrojony na miarę, wyglądający i działający dokładnie tak, jak sobie zaprojektowałem. Wspomniane gotowe CMS-y nie umożliwiłyby mi tego. Chyba że poinstalowałbym w nich mnóstwo różnych wtyczek, ale obniżyłoby to wydajność i bezpieczeństwo systemu. A tego chciałem uniknąć.

Po trzecie mój system - w przeciwieństwie do Wordpressa i Joomli - jest lekki i szybki. Nie jest takim ogromnym kombajnem, nie ma w nim niepotrzebnych rzeczy, jest dokładnie tyle, ile potrzebuję. Ani grama więcej.

Po czwarte wreszcie, znam mój system od podszewki, dzięki czemu wiem, jak go rozbudowywać, dokładać kolejne moduły funkcjonalne, ulepszać. W ten sposób powstały serwisy, które zostały stworzone na bazie mojego systemu i mają dodatkowe swoje własne, odrębne funkcjonalności: Katalog płyt czy Dokumentacja produktów oraz Prezentacja danych.

System ten zacząłem tworzyć w kwietniu 2013 r. i w dużej mierze skorzystałem z rozwiązań wprowadzonych w moich poprzednich projektach. Ten szablon jest najnowszy i najlepszy, gdyż zawiera mechanizmy automatyzujące generowanie stron oraz własne walidatory formularzy. Framework jest już kompletny, wszystkie wymagane funkcje zarządzania stroną już są zrobione. Należą do nich m. in.: zarządzanie konfiguracją serwisu, kontami użytkowników, mechanizm kontroli praw dostępu, zarządzanie nawigacją serwisu, podstronami, galerią, generowanie raportów aktywności i statystyk. A wszystko jest zgromadzone w wygodnym i przejrzystym panelu administracyjnym.

Na początku listopada napisałem nową funkcjonalność - filtrowanie list. Uznałem, że jest to przydatne narzędzie, ułatwiające znajdowanie poszukiwanych pozycji na długich listach, zwłaszcza gdy są one podzielone na wiele stron. Aby mechanizm działał, musiałem stworzyć jedną klasę z trzema metodami, i w każdym kontrolerze mającym funkcję listy stworzyć obiekt tej klasy i wywoływać odpowiednie metody (inicjującą i aktualizującą paginację). A dzięki wprowadzeniu nowej klasy pojawiło się rozwiązanie problemu, nad którym pracowałem od dłuższego czasu. I tak oto upiekłem dwie pieczenie na jednym ogniu.

W połowie grudnia rozszerzyłem funkcjonalność paginacji list - dodałem możliwość zmiany ilości pozycji wyświetlanych na jednej stronie za pomocą wygodnej kontrolki. Dzięki temu można na bieżąco dobierać sobie ilość wierszy na stronę, tak aby wygodnie nawigować po różnych listach - wiadomo: raz chcemy mieć listy krótsze i z większym podziałem na strony, raz dłuższe ale za to z mniejszą liczbą stron.

Ostatnio napisałem własny mechanizm kontroli dostępu użytkowników do zasobów serwisu. Mechanizm oparty jest na dynamicznie zarządzanej liście powiązań użytkownicy - zasoby. Powiązania te można zmieniać z poziomu panelu administratora. Jak to się robi, pokazałem na filmie CMS - mechanizm kontroli dostępu.

Dopełnieniem całości było stworzenie instalatora serwisu, który znacznie ułatwia, a wręcz wyręcza webmastera w zainicjowaniu i uruchomieniu aplikacji na serwerze. Teraz framework będzie dostarczany wraz z instalatorem, dzięki czemu postawienie serwisu stanie się jeszcze łatwiejsze.

Cały kod źródłowy CMS-a jest do pobrania z repozytorium na GitHubie: https://github.com/andrzuk/MyCMS. Zachęcam do eksperymentów i przeróbek na własne potrzeby i według własnych wizji. Powodzenia!