Współczesne architektury systemów zarządzania treścią

POLITECHNIKA KRAKOWSKA

IM. TADEUSZA KOŚCIUSZKI

WYDZIAŁ FIZYKI MATEMATYKI I INFORMATYKI

KIERUNEK INFORMATYKA

ŁUKASZ CZUBERNAT

WSPÓŁCZESNE ARCHITEKTURY SYSTEMÓW ZARZĄDZANIA TREŚCIĄ

CONTEMPORARY ARCHITEKTURES OF CONTENT MANAGEMENT SYSTEMS

PRACA IŻYNIERSKA

STUDIA STACJONARNE

Promotor: dr hab. inż. Marek Stanuszek prof. PK

Kraków 2013


Spis treści

1. Wstęp 5

1.1. Historia systemów zarządzania treścią (CMS) 6

1.2. Co to jest CMS? 6

1.3. Dlaczego warto wybrać system CMS? 7 1.4. Cel i zakres pracy 9

2. Cechy systemów zarządzania treścią 9

2.1. Ogólna architektura 9

2.2. Komponenty i zadania systemu CMS 10

2.3. Klasyfikacja systemów CMS 10

3. Porównanie systemów CMS na licencji opensource 13

3.1. System Quick CMS Lite 13

3.1.1. Administracja stroną 14

3.1.2. Rozszerzenia i funkcjonalności 14

3.2. System SmodCMS 15

3.2.1. Administracja stroną 15

3.2.2. Rozszerzenia i funkcjonalności 16

3.3. System XOOPS 17

3.3.1. Administracja stroną 17

3.3.2. Rozszerzenia i funkcjonalności 19

3.4. System Joomla! 19

3.4.1. Administracja stroną 20

3.4.2. Rozszerzenia i funkcjonalności 21

3.5. Wnioski płynące z przeglądu systemów zarządzania treścią 22

4. Projekt własnego systemu zarządzania treścią 23

4.1. Wymagania funkcjonalne 23

4.2. Wymagania niefunkcjonalne 24

4.3. Model systemowych przypadków użycia 24

4.4. Model statyki systemu 26

4.4. Implementacja 27

4.5. Testowanie systemu 31

4.5.1. System w działaniu 31

4.5.2. Testy jednostkowe 33

4.5.3. Testy bezpieczeństwa 37

4.5.4. Testy w różnych przeglądarkach 39

4.5.4. Test serwera http oraz czasu ładowania strony 39

5. Podsumowanie 41

6. Bibliografia 42

Dodatek A. Formularze wymagań funkcjonalnych i niefunkcjonalnych 43

1. Wstęp

Rozwój Internetu postępuje nieprzerwanie od wielu lat. Obecnie można znaleźć w nim niemal wszystko, zarówno serwisy informacyjne czy witryny firm jak i portale społecznościowe. Wraz z rozwojem Internetu rozwijały się także sposoby oraz formy prezentacji treści. Początkowo strony internetowe budowane były w sposób statyczny przy użyciu języka HTLM. Nadawały się one dla małych witryn, które nie były często modyfikowane, gdyż wszelkie zmiany wiązały się z edycją każdego pliku z osobna. W efekcie było to żmudne i długotrwałe zajęcie, a w przypadku pracy zewnętrznego webmastera, bardzo kosztowne.

Taki stan rzeczy wymusił powstanie języków skryptowych umożliwiających budowanie dynamicznych stron internetowych, które w odróżnieniu od statycznych, generowane są „w locie” przez serwer HTTP wykorzystując w tym celu zmienne przekazywane przez przeglądarkę. Strony oparte o skrypty modyfikują zawartość czy wygląd w zależności od środowiska, w którym zostały wykonane. Zmiany te mogą odbywać się po stronie klienta, tzw. client-side (przy użyciu np. JavaScript, JScript) lub po stronie serwera, tzw. server-side (przy użyciu np. PHP, ASP, Perl). Choć zdarza się, iż wykorzystywane są obie metody jednocześnie.

Choć zdania na ten temat są podzielone, niewątpliwie kamieniem milowym w konstrukcji stron internetowych są systemy zarządzania treścią. Używając klasycznych, dynamicznych stron webmaster budował stronę oraz zarządzał całością treści, natomiast systemy zarządzania treścią umożliwiły znaczącą zamianę tej roli do bardziej wspierającej. Obecnie webmaster dostarcza narzędzia do zarządzania treścią bez osobistej ingerencji w jej redagowanie. Zamiast opłacać webmastera firma może przydzielić funkcje edycji treści własnym pracownikom. Zanim omówione zostanie czym jest system zarządzania treścią należałoby sprecyzować trzy istotne pojęcia. Są nimi: system, zawartość oraz zarządzanie treścią.

System jest to obiekt fizyczny lub abstrakcyjny, na który składają się ściśle powiązane ze sobą elementy, które tworzą całość. W odniesieniu do CMS pojęcie systemu będzie obejmować „silnik” CMS, treść składającą się np. z tekstu czy grafiki oraz modułów i rozszerzeń dołączanych do systemu [1].

Przez swoją niematerialną formę termin „zawartość” trudno jest konkretnie zdefiniować. W zarysie ogólnym zawartością strony jest informacja, o określonym charakterze przeznaczona dla konkretnego odbiorcy [1]. Oczywiście zawartość strony może składać się nie tylko z danych w postaci tekstu, ale także z obrazów czy dźwięków.

Zarządzanie treścią jest kolejnym ważnym pojęciem. Może ono obejmować konstruowanie, administrację informację cyfrową oraz dostarczenie jej odpowiednim odbiorcom [2]. Reasumując, zarządzanie treścią jak i sama zawartość serwisu informacyjnego są trudno definiowalnymi terminami jednak są to nieodzowne elementy każdego systemu zarządzania treścią.

1.1. Historia systemów zarządzania treścią (CMS)

Pierwszy system CMS powstał w połowie lat 90-tych XX wieku. Jako pierwsza, takie rozwiązanie zaproponowała firma CNET. System nosił nazwę PRISM (Presentation Interactive Service Material). Choć znacząco różnił się od współczesnych rozwiązań na tamte czasy był innowacyjny. Firma CNET przewidywała rozwoju tego oprogramowania, ale zawiązała współpracę z firmą Vignette, która miała zająć się komercjalizacją tego rozwiązania (CNET otrzymywało 33% zysku ze sprzedaży).

Choć z początku systemy CSM ułatwiały pracę webmasterom, to z czasem zostały one skierowane w stronę innych odbiorców - osób nie posiadających wiedzy technicznej z zakresu budowy stron internetowych.

Następnym krokiem w rozwoju systemów zarządzania treścią było oddzielenie wyglądu strony od jej treści, poprzez zastosowanie szablonów, zwiększając tym samym elastyczność budowania stron. Dzięki temu zmiana np. koloru czcionki czy wyglądu interfejsu polega tylko na zmianie szablonu bez zmiany treści.

Jednak najważniejszym etapem rozwoju systemów CMS było połączenie ich z bazami danych, w których przechowywana była zawartość stron oraz dane użytkowników, pozwalając na swobodne dysponowanie ich zawartością. W ten sposób umożliwiono np. wstawienie danych z bazy do dowolnego szablonu lub jeśli jedne dane używane są w kilku miejscach i zachodzi potrzeba ich modyfikacji wystarczy je zmienić w jednym miejscu.

1.2. Co to jest CMS?

CMS (Content Management System) - System Zarządzania Treścią jest aplikacją umożliwiającą konstrukcję i zarządzanie treścią witryny internetowej. Można go podzielić na dwa główne elementy: aplikację zarządzającą zawartością (CMA - Content Management Application) oraz aplikację dostarczającą zawartość (CDA - Content Delivery Application) [3]. Moduł CMA umożliwia redagowanie, edycję i usuwanie zawartości strony, natomiast moduł CDA odpowiada za prezentację przekazanej treści.

Jak widać główną zaletą takiego systemu jest oddzielenie treści od formy jej prezentacji. W większości systemów zawartość stron przechowywana jest w bazie danych. Na etapie redagowania treść zapisywana jest w bazie, a przy wywołaniu strony skrypty pobierają odpowiednie dane budując stronę. Jednocześnie osobne szablony definiują wygląd strony i umożliwiają zmianę layout’u w prosty i łatwy sposób.

Podsumowując, zadaniem systemów CMS jest zwolnienie nietechnicznego personelu z wymogu posiadania umiejętności projektowania stron internetowych, zamiast tego kładąc nacisk na redagowanie zawartości skracając czas budowy strony oraz znacząco obniżając koszty jej wdrożenia. Nowoczesne systemy oferują znacznie więcej możliwości przekazu treści wprowadzając obsługę formatów pdf lub arkuszy kalkulacyjnych, wliczając w to także obrazy czy animacje.

1.3. Dlaczego warto wybrać system CMS?

Jak już wspomniano wszelkie zmiany i modyfikacje stron generowanych dynamicznie można przeprowadzić szybciej niż w przypadku stron statycznych. System CMS bazuje na stronach dynamicznych uzupełniając je o mechanizmy usprawniające zarządzanie treścią przez nietechniczny personel redakcyjny. Najlepszym sposobem będzie przedstawienie i porównanie cech stron statycznych, dynamicznych i systemu CMS, za pomocą poniższej tabeli.

Cecha / Funkcja Strona statyczna Strona dynamiczna System CMS
Miejsce przechowywania danych Kod strony Kod strony / Baza danych Baza danych
Miejsce przechowywania wyglądu strony Wyodrębnione pliki Kod strony / wyodrębnione pliki Kod strony / wyodrębnione pliki
Budowa nowej strony Konstrukcja nowego pliku HTML oraz aktualizacja wszystkich innych plików (modyfikacja nawigacji strony) Konstrukcja nowego pliku oraz niewielka ingerencja w kod innych plików (nawigacja strony) Zapis danych/metadanych i zawartości strony w bazie danych oraz automatyczna aktualizacja nawigacji strony
Zmiany na stronie Konieczność modyfikacji kodu strony (wymagana wiedza techniczna) Konieczność modyfikacji kodu / uaktualnienie bazy danych (wymagana wiedza techniczna) Edycja treści strony i/lub dodanie/usunięcie podstrony - automatyczna aktualizacja bazy danych (brak wymagań co do wiedzy technicznej)
Narzędzia do edycji strony Edytor kodu, klient FTP Edytor kodu, dostęp do bazy danych Przeglądarka internetowa
Model zarządzania Scentralizowany - za wszystko odpowiedzialny webmaster Scentralizowany - za wszystko odpowiedzialny webmaster Rozproszony - nadawanie ról i uprawnień
Dodatkowe funkcjonalności Webmaster musi zaimplementować i dostosować nową funkcjonalność Webmaster musi zaimplementować i dopasować nową funkcjonalność Dodanie modułu do systemu
Szybkość wyświetlania Duża szybkość Przez języki skryptowe szybkość jest mniejsza niż HTML Przez języki skryptowe szybkość jest mniejsza niż HTML

Tab.1. Porównanie cech strony statycznej, strony dynamicznej i systemu CMS [1]

Jak widać istnieje wiele podobieństw klasycznej strony dynamicznej i systemu CMS. Jednak zdania na temat, które rozwiązanie wybrać są podzielone. Jedni wolą budować stronę od podstaw według wymogów klienta oraz odpowiadać za zarządzanie nią, utrzymując za każdym razem indywidualne podejście. Inni zaś preferują zbudowanie i dostarczenie klientowi narzędzi do tego aby sam zredagował treść i zarządzał stroną. Rozwiązanie CMS jest obecnie lepszym rozwiązaniem, gdyż duży nacisk kładzie się na to aby rozwiązanie powstało możliwie jak najszybciej. System CMS (posiadając jedną wersję jądra systemu) można szybko dostosować do potrzeb klienta dodając odpowiednie moduły. W przypadku braku odpowiednich funkcjonalności można zaprojektować i zaimplementować dodatkowy moduł, który może zostać później użyty przy konstruowaniu dedykowanego rozwiązania dla innego klienta.

1.4. Cel i zakres pracy

Celem pracy jest prezentacja typowych współczesnych rozwiązań dotyczących budowy systemów zarządzania treścią. W pracy będą analizowane techniki i metody przechowywania treści oraz popularne funkcjonalności dostarczane przez systemy klasy CMS. Przeprowadzone analizy pozwolą na zaprojektowanie i implementację własnego systemu zarządzania treścią przy użyciu najpopularniejszych narzędzi, czyli języka PHP, biblioteki jQuery oraz bazy danych MySQL. Zaprojektowany system będzie konstruowany na bazie danych zdobytych podczas analizy. Między innymi będzie posiadał część z popularnych funkcjonalności, które oferują współczesne rozwiązania tego typu.

2. Cechy systemów zarządzania treścią

Z poprzednich rozdziałów wiadomo już czym jest system CMS. W ogólnym zarysie zostało nakreślone także z czego się składa i jak powinien działać. W tym rozdziale zostaną przedstawione istotne aspekty techniczne pozwalające na sprawne funkcjonowanie takich systemów.

2.1. Ogólna architektura

Systemy zarządzania treścią z często wykorzystują bazy danych (np. MySQL, PostgreSQL) oraz języki skryptowe po stronie serwera (np. PHP).

Baza danych jest tzw. repozytorium treści, gdyż w niej gromadzone m.in. dane odpowiedzialne za treść strony oraz dane użytkowników. Obecnie najpopularniejszym rozwiązaniem bazodanowym stosowanym w systemach CMS jest MySQL.

Za przetwarzanie informacji zawartych w bazie odpowiadają języki skryptowe po stronie serwera (ang. server-side). Gdy zachodzi potrzeba wyświetlania strony skrypt pobiera dane (wykorzystując zapytania SQL) i umieszcza je w odpowiednich miejscach. Następnie w oparciu o te dane oraz zastosowany szablon budowana jest strona.

2.2. Komponenty i zadania systemu CMS

Pierwszym z komponentów klasycznego systemu CMS jest część administracyjna (zaplecze), która umożliwia m.in. dodawanie czy modyfikację treści, zarządzanie zgromadzonymi danymi czy zmianę ustawień samego systemu. Administracja systemem z reguły jest możliwa dopiero po zalogowaniu się. Dostęp do poszczególnych funkcjonalności zaplecza regulowany jest uprawnieniami.

Kolejnym komponentem jest część prezentacyjna (wynikowa), czyli efekt końcowy widoczny w przeglądarce internetowej - strona WWW. W części prezentacyjnej treść pobierana jest z bazy danych za pomocą skryptów po czym generuje dynamiczne strony w oparciu o te dane. W tej części obsługiwane są szablony decydujące o wyglądzie i formie prezentacji strony (w oparciu o CSS).

Oba podstawowe komponenty wykorzystują skrypty przetwarzające dane z repozytorium danych (najczęściej w postaci bazy danych). Poniższy rysunek prezentuje opisany schemat działania.

Rys.1. Schemat architektury systemu CMS

  1. . Klasyfikacja systemów CMS

Systemy CSM są coraz bardziej powszechne i w związku z tym implementowane są w coraz to nowych środowiskach. Mimo wielu podobieństw różnią się między sobą funkcjonalnościami oraz budową. Obecnie istnieje wiele dedykowanych rozwiązań, które można podzielić na:

WCMS (Web Content Management System) jest modelem systemu, który występuje na najszerszą skalę, gdyż jest to system najogólniejszy. Zbudowany głównie w celu wspomagania zarządzania stronami internetowymi przez nietechnicznych użytkowników z małą znajomością (lub jej brakiem) języków do implementacji stron internetowych. Czasem skrót WCMS stosuje się zamienne z CMS. Takimi systemami są np. WordPress, Joomla! czy Drupal.

ECMS (Enterprise Content Management System) powstał z myślą o obsłudze dużych i rozwiniętych firm. Po za klasycznymi rozwiązaniami CMS może obejmować także strategie, metody i narzędzia stosowane do przechowywania, zarządzania i przekazywania dokumentów dotyczących procesów korporacyjnych. Pozwala także wspierać procesy biznesowe przedsiębiorstwa. Istnieje kilka podtypów takich systemów:

Takimi systemami są np. Alfresco Enterprise, Amaxus czy Filenet firmy IBM.

DMS (Document Management System) jest to system umożliwiający m.in. przechowywanie oraz zarządzanie dokumentami (w formie elektronicznej) tworzonymi w obrębie danej firmy lub pochodzącymi z zewnętrznych źródeł (np. dokumenty biurowe pakietów Office, faktury czy pliki pdf). W związku z tym, iż takich dokumentów może istnieć bardzo dużo w systemie DMS, położono duży nacisk na implementację rozbudowanego modułu wyszukiwania, w którym precyzyjnie można określić kryteria wyszukiwania. Takim systemem jest np. Docushare firmy Xerox.

TCMS (Transactional Content Management System) jest rozwiązaniem zaprojektowanym i zaimplementowanym na potrzeby przedsiębiorstw, w których nacisk położony jest na transakcje. System powinien obsługiwać różne typy danych, które można dostarczyć ze źródeł takich jak: papier, faks czy e-mail. Funkcje systemu dostępne są w panelu administracyjnym, który umożliwia śledzenie statusów i postępów każdej transakcji. Głównym odbiorcą takich systemów są sklepy.

ICMS (Integrated Content Management System) jest systemem, w którym łączy się zarządzanie stroną internetową przedsiębiorstwa z oprogramowaniem CRM (Customer Relationship Management - Zarządzanie Relacjami z Klientami) łącząc różne obszary działalności firmy. System jednocześnie zapewnia dystrybucję informacji (za pomocą CMS), a system CRM gromadzi i przechowuje informacje dotyczące różnych aspektów użytkowania systemu przez klientów (zamawiane produkty, wypłacalność). Przykładami oprogramowania są: system firmy L.E.T Group czy Open Source CMS firmy Integrated Marketing Solutions.

PCMS (Publications Content Management System) jest systemem łączącym kilka cech WCMS oraz DMS. Umożliwia on skonstruowanie portalu internetowego, w którym głównym elementem jest publikowanie dokumentów. Publikowane mogą być takie rozwiązania jak: e-booki, e-magazyny, e-gazety czy dokumenty PDF oraz blogi. Jednymi z takich rozwiązań są np. NucleusCMS czy bazujący na nim BLOG:CMS.

LCMS (Learning Content Management System) często stosuje się zamiennie z LMS (Learning Management System - System Zarządzania Edukacją) choć nie do końca są tożsame, gdyż LCMS skupia się głownie na przetwarzaniu i dostarczeniu treści, natomiast LMS jest szeroko pojętym systemem, który skupia się na administracji, dokumentacji, śledzeniu i dostarczaniu kursów czy szkoleń. Dlatego tej klasy systemy można podzielić na dwa niezależne elementy. Jeden bazuje na klasycznym systemie CMS wspomagający zarządzanie treścią. Natomiast drugi służy do zarządzania zarówno zasobami ludzkimi (np. uczestnikami) jak i całością procesu szkolenia. Takie systemy wykorzystuje się do budowania platform E-Lerningowych lub portali edukacyjnych. Przykładowymi rozwiązaniami są np. Kenexa LCMS czy Moodle.

Reasumując, powyższe typy systemów znacząco różnią się od siebie, mimo to posiadają wspólny cel - zarządzanie treścią. Jednakże takie, dedykowane rozwiązania z pewnością funkcjonują lepiej niż podstawowy CMS, który musiałby być dostosowywany do każdej z powyższych dziedzin z osobna.

3. Porównanie systemów CMS na licencji opensource

Obecnie na rynku istnieje wiele rozwiązań CMS zarówno komercyjnych jak i darmowych. Różnią się one wieloma elementami takimi jak: struktury katalogowe, bazy danych czy dostępne moduły, które można dołączyć do systemu. Poniżej przedstawiono i porównano kilka współczesnych, darmowych rozwiązań.

Celem porównania jest przedstawienie właściwości poniższych systemów, takich jak struktury katalogowe czy użyte bazy danych oraz zdobycie informacji na temat popularnych funkcjonalności, które na końcu zostaną zebrane, aby określić jedną zwięzłą listę. Ponadto przegląd istniejących rozwiązań pomoże w budowie własnego systemu oraz określeniu wymagań jakie będzie musiał spełnić.

  1. . System Quick CMS Lite

Quick CMS Lite [4] to system zaprojektowany przez firmę OpenSolutions. Obecnie istnieją dwie wersje różniące się funkcjonalnościami i licencjami. Jedynym widocznym ograniczeniem wynikającym z licencji [5] (opartej o Creative Commons Uznanie autorstwa [6]) jest konieczność zamieszczenia na każdej stronie odnośnika do strony OpenSolution. Sam system posiada prostą budowę, zachowując jednocześnie większość funkcjonalności charakterystycznych dla systemów CMS. Skrypt przechowuje dane w plikach, co umożliwia zainstalowanie go na niemal każdym serwerze hostingowym, ponieważ nie ogranicza go żadna powiązana z nim baza danych (jak np. MySQL czy PostgreSQL).

3.1.1. Administracja strony

Część administracyjna systemu znajduje się pod adresem http://przykladowa-strona.pl/admin.php. Na rys.2. przedstawiono stronę części administracyjnej systemu Quick CMS Lite.

Rys.2. Główna strona części administracyjnej Quick CMS Lite

Do dyspozycji użytkownika jest prosty interfejs umożliwiający dodawanie, edycję i usuwanie stron z możliwością zarządzania ich hierarchią. Ponadto zaimplementowano szereg opcji pozwalających np. ustawić widoczność strony, dodawać pliki do strony czy wybrać szablon (każda podstrona może korzystać z innego szablonu).

Dzięki narzędziom konfiguracyjnym można w bardzo prosty sposób dostosować system do potrzeb konkretnego użytkownika. Począwszy od tytułu witryny czy słów kluczowych (istotnych dla wyszukiwarek internetowych) na zarządzaniu plikami kończąc. Jednym z ciekawych rozwiązań jest możliwość edycji plików odpowiedzialnych za wygląd (kaskadowych arkuszy stylu) strony z poziomu przeglądarki.

3.1.2. Rozszerzenia i funkcjonalności

Najpopularniejsze moduły dla systemu Quick CMS pozwalające na rozszerzenie jego funkcjonalności [7] to:

3.2. System SmodCMS

Bezpłatną wersję systemu SmodCMS [8] można wykorzystać do wszelkich zastosowań prywatnych, komercyjnych czy zarobkowych, ale według licencji [9] niezbędna jest rejestracja i zgłoszenie wdrożenia systemu. Aplikacja wykorzystuje bazę danych MySQL i można ją zainstalować na serwerze, który obsługuję bazy danych MySQL co najmniej w wersji 3 oraz język PHP co najmniej w wersji 4.

3.2.1. Administracja strony

Aby przejść do części administracyjnej systemu należy wpisać adres http://przykladowa-strona_2.pl/edytor/. Na rys.3 przedstawiono stronę główną części administracyjnej systemu SmodCMS.

Rys.3. Główna strona części administracyjnej SmodCMS

Do zarządzania służy główne menu znajdujące się u góry (z możliwością ukrycia go). System poza opcjami dodawania, edycji czy usuwania stron dostarcza dodatkowo m.in. możliwość modyfikacji pozycji strony w serwisie czy zezwolenia na jej komentowanie. Ponadto istnieje możliwość uploadu plików graficznych na serwer.

Opcje konfiguracji systemu pozwalają m.in. na zmianę nazwy serwisu, autora czy na wybór szablonu stron. Ciekawym rozwiązaniem jest możliwość włączenia trybu edytorskiego umożliwiającego zalogowanemu użytkownikowi przeglądanie nieaktywnych stron tak jakby były opublikowane.

3.2.2. Rozszerzenia i funkcjonalności

Najpopularniejsze moduły systemu SmodCMS pozwalające na rozszerzenie jego funkcjonalności [11] to:

3.3. System XOOPS

W maju 2001 roku rozpoczęto pracę nad projektem PostNuke (budowa systemu Xaraya), który w grudniu tego samego roku uległ rozgałęzieniu. Nowy system napisano od nowa eliminując tym samym wiele błędów. Tak powstał XOOPS (eXtensible Object Oriented Portal System) [12]. Warto wspomnieć, że projekt otrzymał kilka nagród dla jednego z najlepszych systemów CMS. Dodatkowo projekt ten jest wspierany przez SourceForge.net [13]. System udostępniany jest na licencji GNU General Public License (GPL) [14]. Aplikacja oparta jest o bazę danych MySQL oraz posiada budowę modułową, co pozwala na dostosowanie jej do indywidualnych potrzeb.

3.3.1. Administracja strony

Część administracyjna dostępna jest adresem http://przykladowa-strona_3.pl/admin.php, a dostęp do niej wymaga uprzedniego zalogowania się. Wygląd części administracyjnej systemu XOOPS przedstawiono na rys.4.

Rys.4. Strona główna menu administracji

Do zarządzania można użyć zarówno zakładek u góry strony, jak i przygotowanego poniżej nich menu szybkiego dostępu. Na wstępie należy wspomnieć, iż system XOOPS posiada unikalną strukturę konstrukcji treści strony, mianowicie bloki. W każdym bloku można umieści dowolną zawartość, m.in. moduł (np. ankietę), tekst, banner, menu czy obraz. Do dyspozycji są pola: lewe, środkowe (dzielące się na 6 mniejszych) oraz prawe. Bloki można dowolnie dodawać, edytować, usuwać, włączać/wyłączać widoczność na stronie czy (w myśl zasady drag&drop) przeciągać pomiędzy polami. Poniżej przedstawiono stronę do zarządzania blokami.

Rys.5. Administracja blokami

System posiada także rozbudowaną możliwość personalizacji. Ustawienia ogólne pozwalają m.in. na zmianę nazwy strony, domyślnego języka czy domyślnej nazwy niezalogowanych użytkowników. Po za tym można także zmienić ustawienia dotyczące użytkowników (np. minimalna długość nazwy/hasła, zastrzeżenie specjalnych nazw jak administrator) czy słów cenzurowanych (tworzy się listę takich słów). Kolejną zaletą systemu jest możliwość instalacji dodatkowych modułów w systemie oraz zarządzanie już zainstalowanymi kontrolując np. ich widoczność. Ponadto system umożliwia edycję szablonów z poziomu przeglądarki (podobnie jak Quick CMS).

3.3.2. Rozszerzenia i funkcjonalności

Najpopularniejsze moduły systemu XOOPS pozwalające na rozszerzenie jego funkcjonalności [15] to:

3.4. System Joomla!

Joomla! to uniwersalny system zarządzania treścią, którego początki sięgają 2001 roku, kiedy to firma Miro udostępniła system Mambo. Jednak w połowie 2005 roku, na skutek zmian w licencji Mambo, w firmie nastąpił rozłam i jako jedna z gałęzi powstał system Joomla! [16]. Istotną sprawą jest to, iż podobnie jak XOOPS system był wielokrotnie nagradzany. Projekt oparty został o bazę danych MySQL oraz budowę modułową (w styczniu 2013 roku istniało ponad 10000 rozszerzeń dla różnych wersji systemu [17]) dającą szeroki wachlarz możliwości dostosowania systemu. System udostępniany jest na licencji GNU/GPL [14].

3.4.1. Administracja strony

Do części administracyjnej (tzw. zaplecza) można zalogować się pod adresem http://przykladowa-strona_4.pl/administrator/. Poniżej przedstawiono stronę główną zaplecza administracyjnego.

Rys.6. Główna strona zaplecza systemu Joomla!

Do zarządzania można użyć zarówno zakładek u góry strony jak przygotowanego poniżej nich menu szybkiego dostępu. Na wstępie warto wspomnieć o kilku unikalnych rozwiązaniach jakie posiada system.

Pierwszym z nich jest zarządzanie artykułami. W systemie Joomla! istnieją dwa typy artykułów: statyczne oraz dynamiczne. Statyczne są artykułami nie mającymi powiązań z innymi elementami systemu i trzeba ręcznie umieścić odnośnik na stronie (przykładami są regulaminy, polityki bezpieczeństwa czy licencje, ogólnie artykuły, których zawartość jest rzadko modyfikowana). Natomiast dynamiczne są powiązane z innymi częściami systemu - sekcjami i kategoriami. Np. sekcją jest zakładka Aktualności, którą można podzielić na kategorie: Polityka, Nauka, Sport, itp. i dopiero w kategoriach są artykuły dynamiczne. Dodatkowo do dyspozycji użytkownika jest szereg opcji dotyczących dodawanych (edytowanych) artykułów, m.in. określenie dostępu (powszechny, zarejestrowany, specjalny), daty rozpoczęcia/zakończenia publikacji. Kolejnym unikalnym rozwiązaniem jest projektant menu umożliwiający zarządzanie wszelkimi menu w systemie. Można zarówno edytować menu główne (którego nie da się usunąć) oraz skonstruować wiele menu dedykowanych dla różnych grup użytkowników.

Ponadto system pozawala na zarządzanie wbudowanymi w jądro lub dodatkowo instalowanymi składnikami systemu takimi jak: komponenty (np. bannery, spinacze RSS) moduły (np. sondy, wyszukiwarki), dodatki (np. edytory WYSIWYG, możliwości oceny artykułów) czy szablony.

Konfiguracja systemu podzielona jest na trzy kategorie: Witryna, System i Serwer. Zakładka Witryna pozwala ustawić m.in. nazwę, opis czy słowa kluczowe (dla wyszukiwarek). Zakładka System daje możliwość ustawienia m.in. katalogu logów, możliwości włączenia/wyłączenia rejestracji użytkowników, maksymalnego rozmiaru mediów czy czasu trwania sesji. W zakładce Serwer można zmienić dane dotyczące bazy danych, poczty czy serwera FTP.

3.4.2. Rozszerzenia i funkcjonalności

Najpopularniejsze rozszerzenia systemu Joomla! pozwalające na rozbudowanie jego funkcjonalności [17] to:

3.5 Wnioski płynące z przeglądu systemów zarządzania treścią

Jak można zauważyć powyższe systemy znacznie się od siebie różnią pod wieloma względami. Jedne są prostymi systemami (Quick CMS lub SmodCMS) inne z kolei (XOOPS, Joomla!) są bardzo rozbudowane, oferując znacznie szerszą gamę zarówno podstawowych funkcjonalności jak i większą liczbę rozszerzeń możliwych do zainstalowania. Mimo to można znaleźć wiele cech wspólnych w odniesieniu do popularnych funkcjonalności oferowanych przez te systemy (dołączanych do systemów w postaci rozszerzeń). Jedną z nich jest możliwość stworzenia kopii zapasowej bazy danych, która znacząco wpływa na bezpieczeństwo (zabezpieczenie przed utratą danych) oraz pozwala na przywrócenie bazy z pliku, w przypadku ich utraty lub przenoszenia systemu na inny serwer. Kolejną cechą wspólną jest rozszerzenie podstawowego edytora tekstu do edytora WYSIWYG, umożliwiający publikowanie treści w takiej formie (lub bardzo zbliżonej) w jakiej zostały zredagowane. Edytory WYSIWYG umożliwiają m.in. formatowanie tekstu, dodawanie do treści obrazów czy odnośników do dokumentów lub stron internetowych. Następną jest opcja budowy strony, która zawiera moduł FAQ (Frequently Asked Questions), dając użytkownikom strony możliwość uzyskania informacji lub pomocy, bez potrzeby angażowania osób odpowiedzialnych za stronę (moderator, administrator). Następną z kolei jest księga gości, pozwalająca użytkownikom (nawet tym nie zarejestrowanym) zostawienie wpisów na stronie, które mogą zawierać np. ocenę strony. Kolejną jest umożliwienie budowy galerii obrazów czy filmów (np. w układzie kolumnowym) na stronie oraz pozwalając na wyświetlanie ich w oryginalnych rozmiarach (po wybraniu miniatury) np. w oknie typu lightbox czyniąc witrynę bardziej atrakcyjną wizualnie. Następną jest możliwość tworzenia ankiet na stronie, dzięki którym można uzyskać wiele cennych informacji od użytkowników (np. zdania na temat treści czy oprawy wizualnej strony). Ostatnią cechą wspólną jest opcja utworzenia forum działającego w obrębie witryny pozwalając m.in. wymianę zdań między użytkownikami czy stworzenie działu pomocy bardziej rozwiniętego niż w przypadku modułu FAQ. Podobnie jak w przypadku dodatkowych funkcjonalności dołączanych w modułach różnice i podobieństwa można zaobserwować w strukturach katalogowych systemów. Każdy z nich ma własną i unikalną strukturę, ale dzięki analizie poszczególnych systemów można znaleźć kilka cech wspólnych. We wszystkich systemach znajdują się katalogi przechowujące skrypty zaplecza administracyjnego, katalogi, w których znajdują się pliki modułów dołączanych do systemów oraz katalogi szablonów. Opcjonalnie można znaleźć katalogi przechowujące skrypty JavaScript, katalogi z plikami graficznymi czy katalogi z plikami językowymi. Informacje zebrane podczas analizy systemów, zarówno na temat funkcjonalności jak i struktur katalogowych, posłużą do zaprojektowania i implementacji własnego systemu CMS.

4. Projekt własnego systemu zarządzania treścią

Wykorzystując informacje zebrane w trakcie testowania różnych gotowych systemów zostanie zaprojektowany prosty system zarządzania treścią. Celem systemu jest ułatwienie budowy oraz zarządzania stroną internetową przy wykorzystaniu przeglądarki internetowej. System będzie wykorzystywał bazę danych, w której przechowywane będą dane użytkowników oraz treści stron. Poprzez formularze będzie można zmieniać zawartość stron oraz dane użytkowników.

4.1. Wymagania funkcjonalne

System powinien umożliwiać rejestrowanie nowych użytkowników jednocześnie sprawdzając czy użytkownik o wprowadzonych danych nie istnieje już w bazie danych, dzięki czemu każdy użytkownik będzie posiadał unikalne dane (np. adres email), co umożliwi jego identyfikację w razie jakichkolwiek problemów czy błędów. Ponadto system powinien zapewnić możliwość zalogowania się zarejestrowanych użytkowników zezwalając im na dostęp do zaplecza administracyjnego. Dodatkowo powinien obsługiwać formularz „zapomnianego hasła”, który umożliwiałbym zarejestrowanemu użytkownikowi przypomnienie hasła lub jego zmianę. Zaplecze administracyjne systemu powinno umożliwiać zarządzanie stronami (w tym dodawanie, edycję i usuwanie stron), zarządzanie aktualnościami (w tym dodawanie, edycję i usuwanie artykułów), zarządzanie galerią obrazów (w tym dodawanie, usuwanie albumów czy obrazów) oraz zarządzanie użytkownikami (w tym listowanie użytkowników i ich danych, możliwość aktywacji, dezaktywacji czy usunięcia konta oraz zmianę danych użytkowników). Kończąc pracę użytkownik powinien mieć możliwość wylogowania się z systemu. Lista wymagań funkcjonalnych w formularzach została zamieszczona w Dodatku A.

4.2. Wymagania niefunkcjonalne

Wszelkie modyfikacje ustawień systemu jak i zawartości witryny muszą odbywać się przy użyciu dowolnej przeglądarki internetowej. System powinien posiadać prosty interfejs użytkownika umożliwiający intuicyjne użytkowanie. Dodatkowo być przenośny pomiędzy różnymi serwerami obsługującymi skrypty PHP oraz bazę danych MySQL bez zmian w kodzie (lub jego niewielką modyfikacją np. dane wymagane do połączenia systemu z bazą danych). Ponadto hasła użytkowników muszą być szyfrowane przy użyciu funkcji kryptograficznej (np. md5()) a dostęp do zaplecza administracyjnego powinien wymagać wcześniejszej autentykacji i autoryzacji. Po za tym wszelkie formularze modyfikujące treści stron oraz aktualności powinny wykorzystywać edytor WYSIWYG (np. ckEditor). Ponadto galeria zdjęć powinna wykorzystywać wtyczkę lightbox. Lista wymagań niefunkcjonalnych w formularzu zamieszczona w Dodatku A.

4.3. Model systemowych przypadków użycia

Posiadając sprecyzowane wymagania funkcjonalne i niefunkcjonalne należy zbudować model przypadków użycia w oparciu o te wymagania. W związku z tym w modelu powinny znaleźć się przypadki użycia odpowiedzialne za rejestrację, logowanie i zarządzanie użytkownikami oraz ich danymi. Ponadto use case’y powinny uwzględniać zarządzanie stronami, artykułami oraz albumami znajdującymi się w systemie.

System musi obsługiwać co najmniej trzy typów użytkowników o różnym zakresie praw dostępu i możliwości, w tym w nadrzędnego użytkownika w postaci administratora, który będzie miał dostęp do wszystkich danych.

W systemie można rozróżnić następujących aktorów:

Nazwa Opis Rodzaj
Administrator Nieograniczony dostęp zarówno do zarządzania stronami, aktualnościami, galerią jak i wszytkimi użytkownikami zarejestrowanymi w systemie. Wymaga zalogowania się do systemu. Osoba
Moderator Ograniczony dostęp do części administracyjnej, umożliwienie dostępu do zarządzania aktualnościami oraz możliwości zmiany własnych danych. Wymaga zalogowania się do systemu. Osoba
Niezarejestrowany Możliwość przeglądania części prezentacyjnej systemu, brak dostępu do części administracyjnej, możliwość rejestracji w systemie. Osoba

Tab.2. Lista aktorów systemu

Poniżej zamieszczony jest diagram przypadków użycia systemu.

Rys.7. Diagram przypadków użycia

Poniżej przedstawiono listę przypadków użycia systemu.

Identyfikator UC Nazwa Opis
UC_1_Zarejestruj Rejestracja Rejestracja nowego użytkownika
UC_2_Zaloguj Logowanie Logowanie do systemu
UC_3_Wyloguj Wylogowanie Wylogowanie użytkownika
UC_4_Operacje_na_stronach Operacje na stronach Dodawanie nowej strony, edytowanie wybranej strony oraz usuwanie strony
UC_5_Operacje_na_artykułach Operacje na artykułach Dodawanie nowego artykułu, edytowanie wybranego artykułu oraz usuwanie artykułu
UC_6_Operacje_na_albumach Operacje na albumach Dodawanie nowego albumu, edytowanie wybranego albumu oraz usuwanie albumu
UC_7_Operacje_na_zdjeciach Operacje na zdjęciach Dodawanie zdjęcia do wybranego albumu, edytowanie dane zdjęcia zdjęcie oraz usuwanie zdjęcia z albumu
UC_8_Edytuj_dane_uzytkownika Edycja danych użytkownika Edytowanie danych wybranego użytkownika
UC_9_Zmien_haslo Zmiana hasła Zmiana hasła użytkownika
UC_10_Listuj_uzytkownikow Wyświetlenie listy zarejestrowanych użytkowników Wyświetlenie listy zarejestrowanych użytkowników sortując według grup, nazwisk czy statusu użytkownika
UC_11_Wyswietl_dane_uzytkownika Wyświetlenie listy danych wybranego użytkownika Wyświetlenie listy danych wybranego użytkownika oraz możliwość zmiany typu konta
UC_12_Zmien_status_uzytkownika Zmiana statusu konta użytkownika Zmiana statusu konta użytkownika - aktywacja/dezaktywacja lub usunięcie użytkownika

Tab.3. Lista przypadków użycia

4.4. Model statyki systemu

Kolejnym krokiem w projektowaniu jest konstrukcja modelu statyki systemu. Struktura modelu wynika z przeprowadzonych analiz istniejących systemów, funkcjonalności jakie musi posiadać system oraz przypadków użycia wynikających z wymagań funkcjonalnych. Podsumowując w modelu muszą zostać uwzględnione klasy odpowiedzialne za strony, aktualności, albumy czy użytkowników oraz klasy zaplecza administracyjnego umożliwiającego budowę i zarządzanie treścią witryny.

Poniżej na rys.8 przedstawiono diagram statyki.

Rys.8. Model diagramu klas

4.5. Implementacja

Za nim będzie można przystąpić do implementacji należy przygotować odpowiednie środowisko uruchomienia systemu. Wymagany do tego celu jest serwer obsługujący m.in. skrypty PHP, bazę danych MySQL czy usługę FTP. W tym celu można skorzystać z:

Dodatkowo trzeba przygotować edytor tekstu najlepiej takiego, który wyróżnia składnię (np. Notepad++) do edycji kodów źródłowych oraz klienta FTP (np. WinSCP).

Implementację systemu należy poprzedzić założeniem bazy danych MySQL, w której będą przechowywane dane użytkowników oraz zawartość stron. Poniżej przedstawiona jest struktura bazy danych.

Rys.9. Struktura bazy danych systemu

Gdzie:

Następnie należało zbudować strukturę katalogową systemu. Dzięki wiedzy zdobytej podczas analizy istniejących systemów wiadomo, iż w strukturze muszą znaleźć się m.in. katalogi: katalogi zaplecza administracyjnego, szablonów czy przechowujące pliki JavaScript. Poniżej została zamieszczona struktura katalogowa wraz z opisem.

Rys.10. Ogólna struktura katalogowa implementowanego systemu

Gdzie:

Mając zarówno przygotowaną bazę danych jak i strukturę katalogową należało skonstruować plik konfiguracyjny odpowiedzialny za przechowywanie zmiennych potrzebnych do zainicjowania połączenia z bazą (/.private/config.php) oraz plik, w którym znajdują się funkcje pomocnicze odpowiedzialne ze obsługę bazy danych (/lcs.include/basics.php). Poniżej zamieszczono fragment kodu pliku /lcs.include/basics.php.

function dbAll($query,$key='') {

$q = dbQuery($query);

$results=array();

while($r=$q->fetch(PDO::FETCH_ASSOC))$results[]=$r;

if(!$key)return $results;

$arr=array();

foreach($results as $r)$arr[$r[$key]]=$r;

return $arr;

}

function dbInit(){

if(isset($GLOBALS['db']))return $GLOBALS['db'];

global $DBVARS;

$db=new PDO('mysql:host='.$DBVARS['hostname'].';dbname='.$DBVARS['db_name'],$DBVARS['username'],$DBVARS['password']);

$db->query('SET NAMES utf8');

$db->num_queries=0;

$GLOBALS['db']=$db;

return $db;

}

function dbOne($query, $field='') {$r = dbRow($query); return $r[$field];}

function dbLastInsertId() {return dbOne('select last_insert_id() as id','id');}

function dbQuery($query){

$db=dbInit();

$q=$db->query($query);

$db->num_queries++;

return $q;

}

function dbRow($query) {$q = dbQuery($query); return $q->fetch(PDO::FETCH_ASSOC);}

define('SCRIPTBASE', '/home/a2779470/public_html/');

require SCRIPTBASE.'.private/config.php';

Kod.1. Kod pliku basics.php przechowującego funkcje pomocnicze odpowiedzialne ze obsługę bazy danych

Kolejnym elementem była konstrukcja interfejsu. W zawiązku z tym powstały trzy pliki: header.php, w którym zostało utworzone menu strony na podstawie danych w tabeli strony w bazie, footer.php, tzw. stopka strony oraz sidebar.php, w którym został umieszczony formularz logowania.

Następnie należało zaimplementować cześć administracyjną, która umożliwia zarządzanie stronami (w katalogach /lcs.admin dla administratora oraz /lcs.mod dla moderatora).

Posiadając zbudowane zaplecza administracyjne (dla administratora oraz moderatora) należało zadbać o ich bezpieczeństwo. W każdym z katalogów skonstruowano pliki admin.libs.php, które odpowiadały za kontrolę dostępu do zaplecza administracyjnego (różniły się tylko parametrem $_SESSION['rk']). Poniżej zamieszczono fragment kodu pliku admin.libs.php.

if(isset($_SESSION['lcs']) && $_SESSION['rk']==1);

else {

header("Location: http://lczube-cms.uphero.com/index.php?msg=nopermission");

exit;

}

ob_start();

Kod.2. Fragment kodu pliku lcs.admin/admin.libs.php

Kolejnym etapem było zaimplementowanie wtyczki lightbox’a. Funkcje wtyczki zostały umieszczone w pliku header.php ze względu na to, iż jako element interfejsu dołączany jest do każdej ze stron w części prezentacyjnej.

Reszta pracy implementacyjnej polegała na konstrukcji i edycji na bieżąco plików arkuszy stylów, elementów interfejsu strony prezentacyjnej jak i zaplecza administracyjnego oraz podmianę pól tekstowych przekazujących do zapytań treść (czy to stron czy aktualności) na edytor WYSIWYG ckEditor.

4.5. Testowanie systemu

Po zaimplementowaniu działającej wersji, system został poddany testom. Poniżej przedstawione są m.in. testy bezpieczeństwa, testowanie serwera. Przedstawiono również system w działaniu.

4.5.1. System w działaniu

Strona główna części prezentacyjnej przedstawiona została poniżej.

Rys.11. Strona główna części prezentacyjnej systemu

Natomiast strona z aktualnościami została zaprezentowana na rys.12.

Rys.12. Strona aktualności części prezentacyjnej systemu

Z kolei strona galerii zaprezentowana została poniżej.

Rys.13. Strona galerii części prezentacyjnej systemu

Widać tu wcześniej przedstawiony podział galerii na albumy.

4.5.2. Testy jednostkowe

Po przedstawieniu aplikacji w działaniu przystąpiono do przetestowanie kolejnych modułów funkcjonalnych zaplecza administracyjnego.

Pierwszym testowanym modułem będzie zarządzanie użytkownikami. Umożliwia on m.in. listing użytkowników (wg różnych kryteriów), zmianę statusu konta czy edycję danych użytkownika. Poniżej na rys.14 przedstawiono wyświetlenie listy nieaktywnych użytkowników.

Rys.14. Listing nieaktywnych użytkowników w części administracyjnej (administratora)

Administrator posiada możliwość aktywacji/dezaktywacji konta użytkownika. Po aktywacji na adres email danego użytkownika wysyłana jest wiadomość, której treść przedstawiono na rys.15.

Rys.15. Wiadomość email wysyłana po aktywacji konta

Po aktywacji konta przez administratora użytkownik może się zalogować. W zależności od uprawnień uzyskuje dostęp do zaplecza dedykowanego dla administratora lub moderatora. Kolejnym etapem testów modułu zarządzania użytkownikami jest edycja danych konta wybranego użytkownika według formularza przedstawionego na rys.16.

Rys.16. Edycja danych użytkowników w części administracyjnej (administratora)

Istnieje możliwość usunięcia konta użytkownika wybierając opcje Usuń. Zanim użytkownik zostanie usunięty zostanie wyświetlony monit z potwierdzeniem. Strona z monitem została przedstawiona poniżej.

Rys.17. Usunięcie użytkownika w części administracyjnej (administratora) + monit potwierdzający usunięcie

Następnym etapem będzie testowanie modułu zarządzania stronami. Konstrukcja jak i ich edycja stron bazują na takich samych skryptach (różnią się tylko nazwami oraz parametrami przekazywanymi do skryptów). Dodawanie nowej strony zostało przedstawione na rys.18.

Rys.18. Dodanie strony w części administracyjnej (administratora)

Następnym etapem będzie test modułu zarządzania aktualnościami. Konstrukcja i edycja aktualności wygląda podobnie jak w przypadku zarządzania stronami. Wynika to z podobieństwa skryptów odpowiedzialnych za zarządzanie stronami i aktualnościami. Edycja wybranego artykułu została przedstawiona na rys.19.

Rys.19. Edycja wybranego artykułu w części administracyjnej (administratora)

Kolejną testowaną funkcjonalnością jest zarządzanie galerią. W tym przypadku po za zbudowaniem, edycją czy usunięciem albumu można ponadto dodać do niego obrazy graficzne, edytować ich dane oraz je usunąć. Na rys.20 przedstawiono dodawanie obrazu do edytowanego albumu.

Rys.20. Dodanie obrazu do albumu w części administracyjnej (administratora)

Wybierając opcję usuń pod albumem wyświetli się monit potwierdzający akcję dodatkowo informując użytkownika, że wszystkie obrazy z tego albumu także zostaną skasowane. Zostało to przedstawione poniżej.

Rys.21. Usunięcie albumu w części administracyjnej (administratora) + monit potwierdzający usunięcie

Na koniec dla porównania na rys.22 przedstawiono zaplecze administracyjne moderatora, dzięki któremu można zarządzać artykułami oraz zmieniać dane własnego konta.

Rys.22. Strona edycji aktualności w części administracyjnej (moderatora)

4.5.3. Testy bezpieczeństwa

W przypadku stron internetowych a szczególnie systemów CMS bezpieczeństwo jest bardzo istotną kwestią wymagającą nie tylko zaimplementowania, ale także odpowiedniego przetestowania.

Pierwszą istotną kwestią jest dostęp do zaplecza administracyjnego. Podczas implementacji należało zabezpieczyć część administracyjną przed nieautoryzowanym dostępem. Próba przejścia do zaplecza ręcznie wpisując adres kończy się przekierowaniem do strony głównej oraz komunikatem o braku dostępu, który widoczny jest na pasku adresu. Na rys.23 przedstawiono adres wraz z komunikatem.

Rys.23. Adres strony wraz o braku dostępu do zaplecza administracyjnego

Takie rozwiązanie jest możliwe dzięki skonstruowanym plikom /lcs.admin/admin.libs.php oraz /lcs.mod/admin.libs.php w obu katalogach zapleczy administracyjnych. Każdy z nich sprawdza czy została zestawiona sesja oraz czy dany użytkownik posiada odpowiednie uprawnienia.

Kolejnym ważnym katalogiem wymagającym zabezpieczenia jest /.private przechowujący zmienne potrzebne do połączenia systemu z bazą danych. Został on zabezpieczony przy użyciu .htaccess uniemożliwiając jakąkolwiek próbę dostępu. Po za tym rozpoczęcie nazwy od kropki ma na celu dodatkowe zabezpieczenie, gdyż taki katalog może pozostać ukryty w oknie klienta FTP czy podczas korzystania terminalu.

Następnym zabezpieczeniem zaimplementowanym w systemie jest zmiana hasła. Aby zmienić hasło należy wybrać Nie pamiętasz hasła? pod formularzem logowania. Potem należy uzupełnić formularz, przedstawiony na rys.24. Po czym na podstawie adresu email oraz funkcji czasu zostanie wygenerowany kod aktywacyjny oraz zostanie on zapisany w bazie danych. W celu wygenerowania kodu użyta zostanie funkcja kryptograficzna md5(). Następnie na podany adres wysłana zostanie wiadomość z linkiem do zmiany hasła. Treść wiadomości przedstawiono poniżej na rys.25. Istotną sprawą jest to, iż jako parametr do skryptu przekazywany jest kod aktywacyjny, który jest bardziej unikalny niż identyfikator użytkownika. Poniżej na rys.26 przedstawiona została strona z formularzem do zmiany hasła.

Rys.24. Formularz przypomnienia hasła

Rys.25. Wiadomość email z linkiem do zmiany hasła

Rys.26. Strona z formularzem zmiany hasła (klucz aktywacyjny jest parametrem przekazywanym do skryptu)

Po udanej zmianie hasła system przechodzi do strony głównej części prezentacyjnej oraz niszczona sesja, która umożliwiła dostęp do skryptu przez co wymusza ponowne zalogowanie się użytkownika przy użyciu nowego hasła.

4.5.4. Testy w różnych przeglądarkach

Po przetestowaniu funkcjonalności należy przetestować działanie systemu w różnych przeglądarkach. Przeglądarka Google Chrome (w wersji 25.0.1364.152m) została w tym teście pominięta ze względu na to, iż wszystkie powyższe testy jednostkowe były wykonywane przy użyciu Google Chrome. W ramach testów zostaną zastosowane najpopularniejsze w Polsce przeglądarki. Są to: Mozilla FireFox 19.02 (41.5% użytkowników), Internet Explorer 9.0.13 (18.6% użytkowników) oraz Opera 12.14 (7.9% użytkowników) [19]. W każdej z przeglądarek internetowych wszystkie funkcje systemu działały poprawnie.

4.5.5. Test serwera http oraz czasu ładowania strony

Na koniec należy przetestować serwer http, na którym funkcjonuje system. Jest to istotne z punktu widzenia wydajności systemu, a ta z kolei w głównej mierze zależy od dostępności serwera oraz czasów dostępów. Jednym z narzędzi jest ApacheBench umożliwiający testowanie serwerów http a w szczególności serwerów Apache. Przy testowaniu będą istotne dwa parametry: -n [liczba] określający ilość żądań do wykonania oraz -c [liczba] określający liczbę wątków równoległych, które będą wysyłać żądania do serwera w tym samym czasie. Test został przeprowadzony dla pliku o rozmiarze 216 bajtów przy różnych ilościach żądań oraz ilości wątków. Dane z testów zostały przedstawione w tabeli zamieszczonej poniżej.

Ilość żądań/ilość wątków

Czasy w [ms]

10 żądań przy 1 wątku 100 żądań przy 1 wątku 10 żądań przy 10 wątkach
Ogólny czas testu 2817 28169 14212
Connect min/avg/max 138/140/142 137/140/151 138/140/147
Processing min/avg/max 140/141/148 139/141/152 144/1204/1268
Total min/avg/max 278/281/290 276/281/303 282/1344/1415

Tab.4. Wyniki testu serwera http

W tabeli zamieszczone są ogólne czasy testów oraz minimalne, średnie i maksymalne czasy: oczekiwania na połączenie z serwerem (Connect), od nawiązania połączenia do zakończenia pobierania dokumentu i zamknięcia połączenia (Processing) oraz suma tych czasów (Total).

Jak można zauważyć przy pojedynczym równoległym zapytaniu na raz czasy są zbliżone i wynoszą około 0.3s. Dla stron internetowych jest to dobry wynik. Sprawa komplikuje się przy większej ilości żądań wykonywanych współbieżnie. Czas minimalny jest zbliżony natomiast czas maksymalny wydłużył się do ok. 1.4s. W przypadku stron internetowych dostęp do serwera poniżej 1s. jest wartością optymalną. Natomiast dostęp od 1-2s jest wartością dopuszczalną. Wynika z tego, że zarówno przy wielu pojedynczych żądaniach jak i przy żądaniach współbieżnych czas dostępu mieści się w dopuszczalnej granicy.

Następnie przetestowano czas ładowania strony przy użyciu Pingdom Tools, strony na której można znaleźć wiele narzędzi przydatnych do testowania stron internetowych. Narzędzie wysyłało 12 żądań i mierzyło średni czas ładowania strony przy testach z dwóch różnych miejsc - Nowy Jork oraz Amsterdam. Przeprowadzono trzy próby a wyniki przedstawiono w tabeli zamieszczonej poniżej.

Skąd testowano Średni czas ładowania strony [ms]
Nowy Jork 428
Amsterdam 1780

Tab.5. Wyniki testów szybkości ładowania strony

Jak widać ogólny czas ładowania strony także mieści się w akceptowalnych granicach. W powyższych wynikach zawierają się także czasy dostępu do serwera, które nie odbiegają od czasów testów samego serwera. Różnica pomiędzy czasami testów z Nowego Jorku i Amsterdamu wynika głównie z odległości serwera hostingowego od miejsc skąd testowano (adres ip serwera 000webhost.com zarejestrowane jest w Stanach Zjednoczonych).

Reasumując, czas ładowania strony na poziomie 0.5-1.5s umożliwia sprawne zarządzanie stroną oraz przeglądanie jej zawartości.

5. Podsumowanie

W pracy przedstawiono czym są systemy zarządzania treścią zarówno w ujęciu teoretycznym jak i praktycznym uwypuklając główny cel implementowanych w nich rozwiązań, pozwalających na łatwą budowę stron i zarządzanie nimi przez osoby nie posiadające wiedzy technicznej. Ponadto powyższa praca powinna przekonać, iż taki system jest lepszym rozwiązaniem od klasycznych stron generowanych dynamiczne, gdyż umożliwia znacznie szybsze zbudowanie strony internetowej. Dodatkowo większość rozwiązań tego typu posiada budowę modułową i gdy zachodzi potrzeba można łatwo dodać do systemu o kolejne funkcjonalności. Łatwiejsze są także modyfikacje wyglądu strony. W większości systemów można to uzyskać wybierając w ustawieniach odpowiadający użytkownikowi layout. Jest to możliwe dzięki oddzieleniu treści od formy jest prezentacji.

Dzięki przeprowadzonym analizom zasad budowy i działania systemów w rozdziale 3. udało się zaprojektować i zaimplementować działający system zarządzania treścią zawierający część funkcjonalności, które zostały przedstawione w rozdziale 3.5. Choć zbudowanej aplikacji daleko jest do profesjonalnych systemów to mimo wszystko spełnia ona kryteria systemu CMS. Ponadto wszystkie założenia funkcjonalne i niefunkcjonalne postawione w rozdziałach 4.1 i 4.2 zostały spełnione.

Warto nadmienić, iż wiedza nabyta podczas projektowania powyższej pracy z pewnością może przydać się przy pisaniu szeroko pojętych aplikacji internetowych czy innych systemów zarządzania treścią.

W przyszłości aplikację zbudowaną w ramach pracy można rozwinąć o wiele dodatkowych funkcjonalności, które nie zostały zaimplementowane, np. własny edytor WYSIWYG, obsługę forum działającego w obrębie witryny czy moduł FAQ lub wzbogacając ją o kolejne skrypty JavaScript, które np. mogą znacząco poprawić wygląd strony lub polepszyć interakcję użytkownika z systemem. Dodatkowo do systemu można zaimplementować więcej elementów z podstawowych rozwiązań takich jak HTML5 czy CSS3.

6. Bibliografia

  1. P. Frankowski, „Jak szybko i łatwo stworzyć stronę WWW i zarządzać nią”, Helion 2007, s.48, s.46, s.53-54

  2. http://edu.pjwstk.edu.pl/wyklady/tpb/scb/index05.html - dr inż. Mariusz Trzaska, Tworzenie portali biznesowych

  3. http://searchsoa.techtarget.com/definition/content-management-system

  4. http://opensolution.org/quick.cms,pl,10.html - Strona projektu Quick CMS

  5. http://opensolution.org/licencja,pl,88.html - Licencja systemu Quick CMS

  6. http://creativecommons.org/licenses/by/2.5/pl/ - Ogólne zasady licencji Creative Commons

  7. http://opensolution.org/pobierz,pl,18.html?sDir=Quick.Cms/plugins - rozszerzenia systemu Quick CMS

  8. http://smod.pl/ - Strona systemu SmodCMS

  9. http://smod.pl/pliki/licencja.pdf - Licencja systemu SmodCMS

  10. http://smod.pl/index.php?id=152,101 - Informacje o systemie SmodCMS

  11. http://smod.pl/index.php?id=12 - rozszerzenia systemu SmodCMS

  12. http://xoops.org/ - Strona społeczności systemu XOOPS

  13. http://sourceforge.net/projects/xoops/ - Strona projektu systemu XOOPS

  14. http://www.gnu.org/licenses/gpl.html - Licencja GNU/GPL

  15. http://xoops.org/modules/repository/ - rozszerzenia systemu XOOPS

  16. http://www.joomla.org/ - Strona systemu Joomla!

  17. http://extensions.joomla.org/ - rozszerzenia systemu Joomla!

  18. http://w3techs.com/technologies/overview/programming_language/all - diagram przedstawiający użycie języków skryptowych server-side przy tworzeniu stron internetowych

  19. http://www.komputerswiat.pl/blogi/blog-redakcyjny/2012/12/przegladarki-w-listopadzie-komu-uroslo-a-komu-spadlo.aspx - ranking przeglądarek w listopadzie 2012 roku

Dodatek A. Formularze wymagań funkcjonalnych i niefunkcjonalnych

Formularze wymagań funkcjonalnych:

Nazwa/Identyfikator Zarejestruj użytkownika PU/UC_1/01
Opis Pozwala zarejestrować nowego użytkownika w systemie
Dane wejściowe Imię, adres email, hasło, powtórzone hasło
Źródło danych wejściowych Formularz rejestracji
Wynik Zarejestrowanie użytkownika
Warunek wstępny Wypełnienie wszystkich pól formularza, hasło i powtórzone hasło muszą być takie same
Warunek końcowy Zarejestrowanie użytkownika, dodanie nieaktywnego użytkownika do bazy danych
Nazwa/Identyfikator Zaloguj PU/UC_2/01
Opis Pozawala zalogować się zarejestrowanemu użytkownikowi aby umożliwić mu dostęp do zaplecza administracyjnego
Dane wejściowe Adres email oraz hasło
Źródło danych wejściowych Formularz logowania
Wynik Zalogowanie użytkownika do systemu
Warunek wstępny Podanie adresu email oraz poprawnego hasła
Warunek końcowy Zestawienie sesji, która umożliwia dostęp do zaplecza administracyjnego
Nazwa/Identyfikator Zmień hasło PU/UC_9/01
Opis Pozwala użytkownikowi zmienić hasło w przypadku jego zapomnienia
Dane wejściowe Nowe hasło oraz powtórzenie nowego hasła
Źródło danych wejściowych Formularz zmiany hasła
Wynik Zmiana hasła użytkownika
Warunek wstępny Podanie hasło oraz powtórzenie hasła
Warunek końcowy Zmiana hasła użytkownika, aktualizacja bazy danych
Nazwa/Identyfikator Dodaj stronę PU/UC_4/01
Opis Pozwala dodać nową stronę do systemy
Dane wejściowe Tytuł, treść strony
Źródło danych wejściowych Formularz dodawania stron
Wynik Dodanie nowej strony do systemu
Warunek wstępny Podanie tytułu
Warunek końcowy Dodanie nowej strony do systemu, aktualizacja bazy danych
Nazwa/Identyfikator Edytuj stronę PU/UC_4/02
Opis Pozwala edytować istniejącą w systemie stronę
Dane wejściowe Tytuł, treść strony
Źródło danych wejściowych Formularz edycji stron
Wynik Zaktualizowana zawartość strony
Warunek wstępny Podanie tytułu
Warunek końcowy Aktualizacja wybranej strony, aktualizacja bazy danych
Nazwa/Identyfikator Usuń stronę PU/UC_4/03
Opis Pozwala usunąć istniejącą stronę
Dane wejściowe
Źródło danych wejściowych Wybranie opcji usuń
Wynik Usunięcie strony z systemu
Warunek wstępny
Warunek końcowy Usunięcie strony z systemu, aktualizacja bazy danych
Nazwa/Identyfikator Dodaj artykuł PU/UC_5/01
Opis Pozwala dodać nowy artykuł do systemu
Dane wejściowe Tytuł, treść artykułu, data publikacji
Źródło danych wejściowych Formularz dodawania artykułów
Wynik Dodanie nowego artykułu
Warunek wstępny Podanie tytułu
Warunek końcowy Dodanie nowego artykułu, aktualizacja bazy danych
Nazwa/Identyfikator Edytuj artykuł PU/UC_5/02
Opis Pozwala edytować istniejący w systemie artykuł
Dane wejściowe Tytuł, treść artykułu, data publikacji
Źródło danych wejściowych Formularz edycji artykułów
Wynik Zaktualizowana zawartość artykułu
Warunek wstępny Podanie tytułu
Warunek końcowy Aktualizacja wybranego artykułu, aktualizacja bazy danych
Nazwa/Identyfikator Usuń artykuł PU/UC_5/03
Opis Pozwala usunąć artykuł z systemu
Dane wejściowe
Źródło danych wejściowych Wybranie opcji usuń
Wynik Usunięcie artykułu z systemu
Warunek wstępny
Warunek końcowy Usunięcie artykułu z systemu, aktualizacja bazy danych
Nazwa/Identyfikator Dodaj album PU/UC_6/01
Opis Pozwala dodać nowy album do systemu
Dane wejściowe Nazwa, opis albumu, data utworzenia
Źródło danych wejściowych Formularz dodawania albumów
Wynik Dodanie pustego albumu do systemu
Warunek wstępny Podanie tytułu i daty
Warunek końcowy Utworzenie pustego albumu, aktualizacja bazy danych
Nazwa/Identyfikator Edytuj album PU/UC_6/02
Opis Pozwala na edycję zawartości albumu
Dane wejściowe Tytuł, opis albumu, data edycji, Dodaj obraz, Edytuj dane obrazu, Usuń obraz
Źródło danych wejściowych Formularz edycji albumów
Wynik Zaktualizowanie danych albumu
Warunek wstępny Podanie tytułu, daty
Warunek końcowy Aktualizacja wybranego albumu, aktualizacja bazy danych
Nazwa/Identyfikator Usuń album PU/UC_6/03
Opis Pozwala usunąć album z systemu
Dane wejściowe
Źródło danych wejściowych Wybranie opcji usuń
Wynik Usunięcie albumu z systemu
Warunek wstępny
Warunek końcowy Usunięcie albumu z systemu, aktualizacja bazy danych
Nazwa/Identyfikator Dodaj zdjęcie PU/UC_7/01
Opis Pozwala dodać zdjęcie do wybranego albumu
Dane wejściowe Plik graficzny z dysku
Źródło danych wejściowych Formularz dodawania zdjęć
Wynik Dodanie zdjęcia do albumu
Warunek wstępny Wybranie z dysku pliku graficznego
Warunek końcowy Dodanie zdjęcia do wybranego albumu, aktualizacja bazy danych
Nazwa/Identyfikator Edytuj dane zdjęcia PU/UC_7/02
Opis Pozwala edytować dane zdjęcia w albumie
Dane wejściowe Nazwa, data edycji
Źródło danych wejściowych Formularz edycji danych zdjęcia
Wynik Zmiana danych zdjęcia
Warunek wstępny Podanie tytułu, daty
Warunek końcowy Zmiana danych zdjęcia, uaktualnienie bazy danych
Nazwa/Identyfikator Usuń zdjęcie PU/UC_7/03
Opis Pozwala usunąć zdjęcie z wybranego albumu
Dane wejściowe
Źródło danych wejściowych Wybranie opcji usuń
Wynik Usunięcie zdjęcia z albumu
Warunek wstępny
Warunek końcowy Usunięcie zdjęcia z albumu, aktualizacja bazy danych
Nazwa/Identyfikator Listuj użytkowników PU/UC_10/01
Opis Pozawala wylistować wszystkich zarejestrowanych użytkowników systemu posortowanych według różnych kryteriów
Dane wejściowe
Źródło danych wejściowych Wybranie jednej z opcji posortowania użytkowników
Wynik Wyświetlenie listy użytkowników
Warunek wstępny
Warunek końcowy
Nazwa/Identyfikator Wyświetl dane użytkownika PU/UC_11/01
Opis Pozawala wylistować dane użytkownika
Dane wejściowe Identyfikator użytkownika
Źródło danych wejściowych Wybranie nazwy użytkownika z listy użytkowników
Wynik Wyświetlenie danych wybranego użytkownika
Warunek wstępny
Warunek końcowy
Nazwa/Identyfikator Aktywuj użytkownika PU/UC_12/01
Opis Pozwala aktywować użytkownika umożliwiając mu zalogowanie się oraz wysłanie wiadomości email powiadamiającej o aktywacji konta
Dane wejściowe Identyfikator użytkownika
Źródło danych wejściowych Wybranie opcji aktywuj w zapleczu administracyjnym
Wynik Aktywowanie konta użytkownika oraz wysłanie wiadomości email powiadamiającej o aktywacji konta
Warunek wstępny Wybór opcji dezaktywuj
Warunek końcowy Aktywowanie konta użytkownika, aktualizacja bazy danych
Nazwa/Identyfikator Dezaktywuj użytkownika PU/UC_12/02
Opis Pozwala dezaktywować użytkownika uniemożliwiając mu zalogowanie się
Dane wejściowe Identyfikator użytkownika
Źródło danych wejściowych Wybranie opcji dezaktywuj w zapleczu administracyjnym
Wynik Dezaktywowanie konta użytkownika
Warunek wstępny Wybór opcji dezaktywuj
Warunek końcowy Dezaktywowanie konta użytkownika, aktualizacja bazy danych
Nazwa/Identyfikator Usuń użytkownika PU/UC_12/03
Opis Pozwala usunąć wybranego użytkownika z systemu
Dane wejściowe
Źródło danych wejściowych Wybranie opcji usuń
Wynik Usunięcie użytkownika
Warunek wstępny
Warunek końcowy Usunięcie użytkownika z systemu, aktualizacja bazy danych
Nazwa/Identyfikator Zmień dane użytkownika PU/UC_8/01
Opis Pozwala zmienić dane użytkownika systemu
Dane wejściowe Nazwisko, imię, adres email, telefon, pesel, nip, ulica, numer domu, numer lokalu, kod pocztowy, miejscowość
Źródło danych wejściowych Formularz zmiany danych użytkownika
Wynik Zmiana danych użytkownika
Warunek wstępny Zmienienie istniejących lub podanie nowy danych
Warunek końcowy Zmiana danych użytkownika, aktualizacja bazy danych
Nazwa/Identyfikator Wyloguj PU/UC_3/01
Opis Wylogowuje użytkownika niszcząc sesję
Dane wejściowe
Źródło danych wejściowych Wybranie opcji wyloguj
Wynik Wylogowanie użytkownika
Warunek wstępny
Warunek końcowy Zniszczenie sesji uniemożliwiając dostęp do zaplecza administracyjnego

Formularz wymagań nie funkcjonalnych:

Cecha: Opis:
Łatwość użycia System można zarządzać za pomocą przeglądarki internetowej.
Przenośność System można przenosić pomiędzy różnymi serwerami obsługującymi skrypty PHP oraz bazę danych MySQL. Część kodu będzie wymagała modyfikacji.
Bezpieczeństwo Hasła użytkowników będą szyfrowane przy użyciu funkcji kryptograficznej (np. md5()). Dostęp do zaplecza administracyjnego wymagać będzie autentykacji i autoryzacji.
Funkcjonalność Formularze edycji stron oraz aktualności wykorzystywać będą edytor WYSIWYG (np. ckEditor). Galeria zdjęć wykorzystywać będzie wtyczkę lightbox.

Wyszukiwarka

Podobne podstrony:
Joomla System zarzadzania trescia joomla
Architektura systemow zarzadzania przedsiebiorstwem Wzorce projektowe
Joomla! System zarzadzania treścią
Joomla! System zarządzania treścią
Joomla! System zarzadzania trescia
informatyka joomla system zarzadzania trescia hagen graf ebook
Architektura systemow zarzadzania przedsiebiorstwem Wzorce projektowe szabko
Architektura systemow zarzadzania przedsiebiorstwem Wzorce projektowe 2
Architektura systemow zarzadzania przedsiebiorstwem Wzorce projektowe
Kurs systemu zarządzania treścią Joomla! Część siódma moduły
Joomla System zarzadzania trescia
Joomla System zarzadzania trescia joomla
Joomla System zarzadzania trescia joomla
Architektura systemow zarzadzania przedsiebiorstwem Wzorce projektowe
Joomla System zarzadzania trescia 3
Architektura systemow zarzadzania przedsiebiorstwem Wzorce projektowe szabko
Architektura systemow zarzadzania przedsiebiorstwem Wzorce projektowe

więcej podobnych podstron