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
. 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:
Internetowy System Zarządzania Treścią (WCMS)
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.
Korporacyjny System Zarządzania Treścią (ECMS)
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:
B2E (Business-to-Employee), będące wewnętrznymi systemami do obsługi procesów biznesowych.
B2B (Business-to-Business), portale biznesowe wspomagające transakcje, sprzedaż czy wymianę towarów, np. pomiędzy producentem a hurtownikiem. Mniejszymi rozwiązaniami mogą być B2C oraz B2G.
B2C (Business-to-Customer), pochodna B2B nastawiona na interakcje z klientem (e-handel), np. sklepy internetowe (na mniejszą skalę niż B2B).
B2G (Business-to-Goverment), pochodna B2B obejmująca marketing produktów i usług skierowanych do organizacji rządowych (lokalnych lub ogólnokrajowych).
Takimi systemami są np. Alfresco Enterprise, Amaxus czy Filenet firmy IBM.
System Zarządzania Dokumentami (DMS)
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.
Transakcyjny System Zarządzania Treścią (TCMS)
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.
Zintegrowany System Zarządzania Treścią (ICMS)
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.
Publikacyjny System Zarządzania Treścią (PCMS)
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.
Edukacyjny System Zarządzania Treścią (LCMS)
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ć.
. 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:
bugFixesChechcer - sprawdza czy wgrane są w skrypcie poprawki (zainstalowany domyślnie w wersji Quick.Cms.Add). Jest zalecanym dodatkiem.
simpleBackup - dodatek pakujący katalog database/ do pliku ZIP (zainstalowany domyślnie w wersji Quick.Cms.Add).
filesManager - dodatek dający możliwość zarządzania plikami z katalogu files/ (zainstalowany domyślnie w wersji Quick.Cms.Add).
templateEditor - dodatek umożliwiający edycję szablonów z poziomu panelu administracyjnego (zainstalowany domyślnie w wersji Quick.Cms.Add).
dropDownMenu - dodatek wyświetlający górne menu strony w postaci rozwijanej (zainstalowany domyślnie w wersji Quick.Cms.Add).
simpleCounter - dodatek zliczający oraz wyświetlający zarówno liczbę wizyt w ciągu dnia jak i całkowitą liczbę wizyt (Zainstalowany domyślnie w wersji Quick.Cms.Add).
ckEditorPlugin - dodatek zwiększający możliwości podstawowego edytora do edycji zawartości strony rozszerzając go do edytora WYSIWYG.
mobileVersion - dodatek wyświetlający stronę w uproszczonej formie dostosowując ją do wersji mobilnej.
youtubeLinks - dodatek zmieniający URL filmu z YouTube na okno odtwarzacza.
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:
Moduł NEWS - moduł zmieniający typ wyświetlania podstron jako „newsy”. Podstrony można sortować według daty ich dodania.
Moduł Galeria - moduł umożliwiający wyświetlanie zdjęć postaci kolumnowej.
Moduł Księga Gości - moduł pozwalający odwiedzającym stronę wpisać się do księgi gości.
Moduł Forum - moduł umożliwiający założenie forum w obrębie serwisu.
Moduł Kontaktowy - moduł dodający do witryny formularz kontaktowy umożliwiający wysłanie wiadomości na podany w ustawieniach adres email (np. do administratora).
Moduł FAQ - moduł pozwalający dodać podstronę FAQ (Frequently Asked Questions).
Moduł SearchList - moduł pozwalający na śledzenie fraz wpisywanych w wyszukiwarkę strony. Można przejrzeć sumaryczną listę wystąpień wraz z datą ostatniego zapytania.
Moduł MiniShop - moduł dodający funkcjonalność uproszczonego sklepu (w przypadku chęci sprzedaży przedmiotów/plików itp. na stronie). W moduł wbudowano obsługę płatności elektronicznych (w oparciu o DotPay).
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:
DB Backup & Restore 3.0 - moduł umożliwiający utworzenie kopii zapasowej bazy danych (plik SQL lub archiwum ZIP). Dodatkowo pliki te można ściągnąć na dysk, wysłać emailem lub zapisać na serwerze.
GBook - moduł księgi gości pozwalający użytkownikom na zapisanie się w niej (używając danych tj. nazwisko, email czy wiadomość). Ponadto administrator może zarządzać tymi wpisami.
XoopsPoll - moduł pozwalający na tworzenie i zarządzanie ankietami w systemie.
Extgallery - moduł dodający funkcjonalność galerii w serwisie.
News - moduł pozwalający redagować nieograniczoną liczbę wiadomości i publikować je na stronie. Ponadto można tworzyć tematy i dołączać do nich artykuły oraz zarządzać uprawnieniami dodając grupy odpowiedzialne np. za redagowanie (lub edycję) czy za zatwierdzanie artykułów (oraz decydowanie, kto może je zobaczyć).
SmartFAQ - rozbudowany moduł FAQ, w którym po za klasycznymi funkcjonalnościami charakterystycznymi dla takich modułów (stworzenie i zarządzanie listą pytań i odpowiedzi) zaimplementowano także możliwość zadawania pytań przez użytkowników, na które później administrator udziela odpowiedzi.
New(CBB) - moduł umożliwiający utworzenie forum w obrębie witryny.
WF-Downloads - moduł pozwalający na stworzenie punktu udostępniania plików dla użytkowników. Dodatkowo moduł umożliwia podział plików na kategorie oraz zarządzanie uprawnieniami.
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:
TinyMCE - dodatek będący edytorem WYSIWYG pozwalający na efektywniejsze formatowanie tekstu w artykułach.
Akeeba Backup (następca JoomlaPack) - komponent tworzący kopię zapasową witryny (wszystkich plików oraz bazy danych) oraz umieszcza w archiwum zmodyfikowane wersje instalatora Joomla! mogące posłużyć do instalacji systemu w takiej postaci jak w archiwum (wraz z danymi).
ShoutBox - moduł umożliwiający szybką wymianę zdań na stronie bez potrzeby wysyłania trwałych wiadomości (np. na forum czy wiadomości prywatne).
eDocs - Embeded Documents - dodatek wykorzystujący przeglądarkę dokumentów Google Docs Viewer umożliwiający przeglądanie i udostępnianie do pobrania dokumentów w formatach Microsoft Office, OpenOffice, RTF, HTML czy TXT.
joomMyAdmin - komponent dający możliwość wykonywania operacji na bazie danych bezpośrednio z poziomu zaplecza Joomla!
Forum Joo!BB - komponent pozwalający utworzyć forum dyskusyjne w obrębie witryny.
EasyBook - komponent dodający do systemu księgę gości.
EasyComments - komponent pozwalający zarejestrowanym i niezarejestrowanym użytkownikom (z ich rozróżnieniem) komentowanie stron witryny oraz umożliwiający uprawnionym użytkownikom zarządzanie tymi komentarzami.
EasyFAQ - komponent umożliwiający gromadzenie i prezentowanie FAQ (Frequently Asked Questions), czyli często zadawanych pytań nawet w postaci wielopoziomowych kategorii.
Sef Service Map - komponent zaprojektowany do generowania mapy witryny. Dodatkowo oprócz standardowej mapy serwisu tworzy także mapy zgodne ze standardem sitemaps.org.
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:
darmowego hostingu (w przypadku tej pracy jest to 000webhost.com) posiadającej spore ograniczenia oraz sporą ilość wyświetlanych reklam,
pełnej oferty hostingowej, która zapewnia m.in. o większą powierzchnię dyskową, konto pocztowe czy większą liczbę obsługiwanych domen, ale wiąże się to z opłatami,
lokalny serwer stworzony np. przy użyciu XAMPP (Cross-platform Apache, MySQL, PHP, Perl).
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:
Tabela użytkownicy - będzie przechowywać dane użytkowników. Kluczem obcym w tabeli będzie id_rodzaj_konta
Tabela rodzaj_konta - będzie przechowywać dane dotyczące typów użytkowników systemu
Tabela strony - będzie przechowywać dane dotyczące stron w systemie. Kluczem obcym w tabeli będzie id_rodzaj_konta
Tabela aktualnosci - będzie przechowywać dane dotyczące artykułów redagowanych w systemie
Tabela kategoria_zdj - będzie przechowywać dane dotyczące albumów budowanych w systemie
Tabela zdjecia - będzie przechowywać dane plików graficznych w albumach. Kluczem obcym w tabeli będzie id_kat
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:
/.private - katalog z plikami konfiguracyjnymi
/css - katalog przechowujący arkusze stylów
ckeditor - katalog edytora WYSIWYG
/images - katalog z plikami graficznymi wykorzystywanymi przez system
/js - katalog ze sktrytami JavaScript (jQuery)
/lcs.admin - katalog zaplecza administracyjnego administratora
/lcs.mod - katalog zaplecza administracyjnego moderatora
/lcs.include - katalog z bibliotekami funkcji systemu
/register - katalog zawierający formularz rejestracji
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
P. Frankowski, „Jak szybko i łatwo stworzyć stronę WWW i zarządzać nią”, Helion 2007, s.48, s.46, s.53-54
http://edu.pjwstk.edu.pl/wyklady/tpb/scb/index05.html - dr inż. Mariusz Trzaska, Tworzenie portali biznesowych
http://searchsoa.techtarget.com/definition/content-management-system
http://opensolution.org/quick.cms,pl,10.html - Strona projektu Quick CMS
http://opensolution.org/licencja,pl,88.html - Licencja systemu Quick CMS
http://creativecommons.org/licenses/by/2.5/pl/ - Ogólne zasady licencji Creative Commons
http://opensolution.org/pobierz,pl,18.html?sDir=Quick.Cms/plugins - rozszerzenia systemu Quick CMS
http://smod.pl/ - Strona systemu SmodCMS
http://smod.pl/pliki/licencja.pdf - Licencja systemu SmodCMS
http://smod.pl/index.php?id=152,101 - Informacje o systemie SmodCMS
http://smod.pl/index.php?id=12 - rozszerzenia systemu SmodCMS
http://xoops.org/ - Strona społeczności systemu XOOPS
http://sourceforge.net/projects/xoops/ - Strona projektu systemu XOOPS
http://www.gnu.org/licenses/gpl.html - Licencja GNU/GPL
http://xoops.org/modules/repository/ - rozszerzenia systemu XOOPS
http://www.joomla.org/ - Strona systemu Joomla!
http://extensions.joomla.org/ - rozszerzenia systemu Joomla!
http://w3techs.com/technologies/overview/programming_language/all - diagram przedstawiający użycie języków skryptowych server-side przy tworzeniu stron internetowych
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. |