76
Duško Angirević Analiza G:Max CMS-a - diplomski rad - Banja Luka, 2010 VISOKA ŠKOLA BANJA LUKA COLLEGE

Analiza G:Max CMS-a

Embed Size (px)

DESCRIPTION

Izvod: Iako sam G:Max CMS, kao proizvod, na tržištu egzistira već niz godina nikad nisam našao dovoljno vremena da se posvetim izradi specifikacije i analize sistema u potpunosti. Ovaj rad je zamišljen kao pregled sposobnosti sistema, organizacije njegovog rada i vodič za sam razvoj sistema u budućnosti. Ugodno čitanje.Abstract:Although G:Max CMS exists on the market for several years there was never enough time to develop it’s speci!cation and to conduct thorough system analysis. This paper is envisiond as overview of system capabilities, it’s organization and as a guidance for the system development in the future.

Citation preview

Page 1: Analiza G:Max CMS-a

Duško AngirevićAnaliza G:Max CMS-a

- diplomski rad -

Banja Luka, 2010

VISOKA ŠKOLABANJA LUKA COLLEGE

Page 2: Analiza G:Max CMS-a

Djelovodni broj: _____________Pečat:

Kandidat: Duško AngirevićBroj indexa: 15/07Smijer: Informacione tehnologije

Tema: Analiza G:Max CMS-a

Osnovni zadaci:

๏ Osnovni koncepti statičkih i dinamičkih web sajtova

๏ Pregled funkcionalnosti G:Max CMS-a

๏ Analiza i daljnji plan razvoja sistema

Banja Luka08.07.2010.

Mentor:____________________

prof . dr Rade Tanjga

Page 3: Analiza G:Max CMS-a

Izvod

Iako sam G:Max CMS, kao proizvod, na tržištu egzistira već niz godina nikad nisam našao dovoljno vremena da se posvetim izradi speci%kacije i analize sistema u potpunosti. Ovaj rad je zamišljen kao pregled sposobnosti sistema, organizacije njegovog rada i vodič za sam razvoj sistema u budućnosti.

Ugodno čitanje.

Abstract

Although G:Max CMS exists on the market for several years there was never enough time to develop it’s speci!cation and to conduct thorough system analysis. This paper is envisiond as overview of system capabilities, it’s organization and as a guidance for the system development in the future.

Enjoy reading.

Page 4: Analiza G:Max CMS-a

Sadržaj

.............................................................................................................................................UVOD 1.......................................................................................................................................................................Kratak istorijat web-a 1

..............................................................................................1. OSNOVNI POJMOVI I KONCEPTI 3

...............................................................................................................................................................................Prednosti i mane 4

.........................................................................................................................................Content Management System (CMS) 7

...............................................................................................................................2. G:MAX CMS 8...................................................................................................................................................................................Istorijat i razvoj 8

.................................................................................................................................................................................Zahtjevi sistema 9

.............................................................................................................3. MOGUĆNOSTI CMS-A 10

...................................................................................................................................................................Fleksibilan i skalabilan 10

........................................................................................................................................Jednostavno upravljanje sadržajem 10

........................................................................................................................................................Sistem korisnika i privilegija 11

..............................................................................................................................................................................Preview sadržaja 11

...........................................................................................................................................................................Tempirani sadržaj 11

....................................................................................................................................................................Formatiranje sadržaja 12

....................................................................................................................................................Kompatibilan sa standardima 12

........................................................................................................................4. ANALIZA BAZE 13............................................................................................................................................................................................Struktura 13

.................................................................................................................................................................................................Moduli 16

..............................................................................................................................................................................................Korisnici 19

.................................................................................................................................................................................................Anketa 21

........................................................................................................................................................................................Dokumenti 23

.................................................................................................................................................Često postavljana pitanja (FAQ) 25

...............................................................................................................................................................................................Galerije 27

..........................................................................................................................................................................................Komentari 29

.................................................................................................................................................................................................Logovi 30

...................................................................................................................................................................................Rad s tekstom 32

...................................................................................................................................................................................................Vijesti 33

..........................................................................................................5. METODOLOGIJA RADA 35...................................................................................................................................................................................................www/ 35

....................................................................................................................................................................................www/admin/ 36

..........................................................................................................................................................................www/admin/data/ 36

..................................................................................................................................................................................www/images/ 37

........................................................................................................................................................................................www/data/ 37

Page 5: Analiza G:Max CMS-a

................................................................................6. PANELI ZA UPRAVLJANJE SADRŽAJEM 39............................................................................................................................................................................................Struktura 40

..........................................................................................................................................................................................TXT/HTML 42

...............................................................................................................................................................................................Galerije 43

................................................................................................................................................................................................Ankete 46

........................................................................................................................................................................................Dokumenti 48

...................................................................................................................................................................................................Vijesti 50

..............................................................................................................................................................................................Korisnici 54

.......................................................................................................................................................................................................FAQ 56

...............................................................................................................................................................................Rad s modulima 58

..........................................................................................LISTA MODULA ZA RAD S CMS-OM 60........................................................................................................................................................................Navigacioni moduli 60

.....................................................................................................................................................................................Modul vijesti 61

............................................................................................................................................................................Moduli za sadržaj 62

.............................................................................................................................................................................Korisničke opcije 63

.................................................................................................................SIGURNOST SISTEMA 64.................................................................................................................................................................................Include greške 64

......................................................................................................................................................Propusti zbog eval() funkcije 65

..............................................................................................................................................Sekcije s ograničenim pristupom 65

....................................................................................................................................................................................SQL Injection 66

............................................................................................................................................Greške uslijed imenovanja fajlova 68

.............................................................................................................................................................................Opšte preporuke 68

.................................................................................................................................ZAKLJUČAK 69

...............................................................................................................................LITERATURA 70

..............................................................................................................................ZAHVALNICA 71

Page 6: Analiza G:Max CMS-a

UvodU okviru poglavlja koja slijede biće govora o G:Max sistemu za upravljanje sadržajem na webu. Sam sistem je nastao sasvim spontano, u okviru jednog manjeg projekta, autoru ovog teksta je sinula ideja da bi mogao sebi olakšati posao tako što bi kreirao sistem koji bi nezavisno od nivoa znanja samog korisnika, uz malu obuku postao sasvim autonoman u funkciji ažuriranja informacija.

Vremenom, prvobitni koncept koji se izvršavao u okviru CGI okruženja pod programskim jezikom Lua1 je omogućavao korisnicima samo ažuriranje vijesti na sajtu, dok je za bazu koristio Lua-in jedinstven tip podatka “Table2”. Međutim, taj koncept je nedugo zatim odbačen usljed niza razloga počevši od prevashodne potrebe za stabilnim sistemom koji je portabilan, zasnovan na opšte-prihvaćenom programskom jeziku i adekvatnoj bazi podataka koja omogućava sve operacije koje savremen DBMS pruža. Više o aktuelnom CMS rješenju će biti govora u poglavljima koja dolaze.

U okviru samog uvoda, bitno je pojasniti šta je to zapravo CMS ili sistem za upravljanje sadržajem?

Uz rizik da ističem očigledno, sistem za upravljanje sadržajem zapravo radi upravo ono što mu samo ime i govori: upravlja sadržajem. Bez obzira koliko je jasno šta je on i šta radi, često stvara konfuziju kod onih koji razmišljaju da ga usvoje u okviru svog svakodnevnog posla. Da bi se u potpunosti shvatilo šta CMS zapravo radi, bitno je da razgraničimo nekoliko bitnih pojmova:

๏ prvo je to na šta zapravo mislimo kad govorimo o sadržaju (content-u);

๏ drugo je šta zapravo obuhvata upravljanje istim (management) i

๏ šta za vas predstavlja sistem (system).

Uloga samog CMS-a jeste da posreduje između vas i vaše web lokacije. Sama web lokacija može biti obična web prezentacija, blog, web servis ili kompletan portal. Varijacije su brojne, međutim zajednički nazivnik je svakako to da sam CMS može da vam olakša ažuriranje sadržaja, da prilagođava sadržaj potrebama korisnika sistema i potrebama samih posjetilaca.

Šta tačno obuhvata cjelokupan proces biće znatno jasnije pri kraju ovog rada, jer sama ideja rada jeste da vas postepeno vodi kroz ovu oblast i upoznaje s njom.

Kratak istorijat web-a

World Wide Web je globalni informacioni medijum putem kog korisnici mogu zahtjevati infomacije u određenom obliku putem uređaja priključenih na na Internet. Termin Web se, greškom, često koristi kao sinonim za sam Internet, međutim Web je samo servis koji funkcioniše putem Interneta kao što to čini i e-mail. Sama istorija Interneta datira iz znatno dalje prošlosti nego Web!

Duško Angirević: Analiza G:Max CMS-a

1.

1 Lua - http://www.lua.org/

2 “Table“ tip podatka u okviru programskog jezika Lua najviše podsjeća na stablo elementa pri čemu bilo koji element može biti varijabla, konstanta, funkcija, objekat ili samo novo stablo.

Page 7: Analiza G:Max CMS-a

Kako bi izbjegli nepotrebno izlaganje informacija, samo ćemo reći da je koncept Web-a nastao tokom početka ’80 godina usljed potrebe za jednostavnom razmjenom informacija u obliku koji je pogodan za razmjenu i koji je nezavisan od same opreme i softvera na strani klijenta. Ideja nije zaživjela na samom početku međutim, nakon nekoliko modi%kacija samog prijedloga projekat je lagano zaživio i za sobom povukao niz tehnoloških koraka: prva speci%kacija samog HTML jezika, HTTP protokola i Web servera koji su imali ulogu da opslužuju klijente dokumentima u HTML obliku.

Tokom ranih ’90 počinje ekspanzija weba na područjima

akademskih i drugih profesionalnih zajednica, jer je on tad bio nešto posve novo. Znatno prije Web-a su postojali drugi informacioni servisi koji su se nalazili na Internetu (e-mail, IRC, Telnet, news grupe i sl.) međutim svaki od njih je imao nešto zajedničko: svi su od korisnika zahtjevali neki vid članstva, postojanja naloga za korištenje servisa – dok je sam koncept Web-a nudio anonimnost, dostupnost bez članstva i što je najbitnije – bio je ubjedljivo najjednostavniji servis za korištenje.

Tokom tih prvih godina, Web je u konceptu bio isti kao danas – ali vizuelno je bio nešto posve drugo. Bitno je napomenuti da u periodu o kome govorimo gra%čki orijentisani sistemi jesu postojali (Mac OS, Windows 3.11 i sl.), međutim računari koji su to omogućavali su bili basnoslovno skupi, a kako je osnovni koncept Web-a bio “dostupnost informacije nezavisno od platforme” – vizuelni aspekt Weba je bio posve drugačiji.

Kao što je rečeno, orginalna namjena Web-a je dostupnost informacija u obliku pogodnom za sve nezavisno od platforme i tekstualni web browser-i su ispunjavali taj zadatak.

Međutim par godina kasnije, tehnološki napredak, širenje tržišta i pad cijena same opreme su omogućili da se najniži zajednički nazivnik u tehnologiji Weba pomjeri na viši stepen i pojavili su se prvi moderniji web browseri:

๏ Cello – web browser za Windows platformu

๏ Mosaic – kasnije prerastao u Netscape Navigator

Moderniji web browser-i su donijeli i jednu novinu: prikaz gra%čkih podataka u obliku statičnih slika i mini animacija. Vremenom, počinje gra%čko sređivanje web dokumenata uz pomoć kombinovanja gra%čkih estetskih elemenata sa sadržajem kako bi se dobio prikladan dizajn.

Ukoliko želite pogledati kako se kretao web dizajn, preporučujem stranicu www.archive.org koja na sebi sadrži “WayBack Machine“ koja predstavlja svojevrsan backup web-a i omogućava vam da uz pomoć adrese web lokacije pogledate kako je ona izgledala u određenom vremenskom periodu.

Tim Berners-Lee:“The WorldWideWeb (WWW) project aims to allow all links to be made to any information anywhere. [...] The WWW project was started to allow high energy physicists to share data, news, and documentation. We are very interested in spreading the web to other areas, and having gateway servers for other data. Collaborators welcome!"

Izvod poruke sa news grupe čovjeka koji je pokrenuo koncept Web-a kakav danas poznajemo.

Duško Angirević: Analiza G:Max CMS-a

2.

Page 8: Analiza G:Max CMS-a

1. Osnovni pojmovi i konceptiWeb stranica je dokument ili resurs koji sadrži informacije koje su pogodne za smještanje na World Wide Web i njima se može pristupiti putem web browser-a i koje se mogu prezentovati na displeju vašeg računara ili nekog drugog uređaja koji posjeduje sposobnosti web browser-a.

Ove informacije su najčešće postavljene u HTML ili XHTML3 formatu i mogu omogućiti navigaciju ka drugim web stranicama i dokumentima putem hypertext linkova.

Stranice se mogu preuzimati sa lokalnog računara ili sa udaljenog web servera, dok sam web server može omogućiti pristup stranicama za korisnike koji dolaze samo iz privatne mreže (npr. intranet %rme) ili mogu biti publikovane na World Wide Web-u. Zahtjevi za web stranice i njihova isporuka se vrši putem HTTP4 i HTTPS5 protokola pri čemu je drugi namjenjen za slanje podataka u zaštićenom obliku.

Same web stranice mogu biti fajlovi “statičnog” teksta koji se nalazi pohranjen na fajl sistemu samog web servera ili sam web server može kreirati (X)HTML za svaku web stranicu u momentu kad je stigao zahtjev od strane web browser-a za njenom isporukom.

Koncept rada statičnih stranica

Dinamični sajt je onaj koji je kreiran uz pomoć programskog jezika koji se nalazi na serveru poput PHP, ASP, JSP ili ColdFusion-a. Unutar dinamičnog sajta sadržaj se kreira putem pravila

Duško Angirević: Analiza G:Max CMS-a

3.

3 (X)HTML – (Extensible) Hypertext Markup Language

4 Hypertext Transfer Protocol

5 Hypertext Transfer Protocol Secure

Page 9: Analiza G:Max CMS-a

de%nisanih u samom programskom kodu, a na osnovu sadržaja iz drugih fajlova ili iz baze podataka. Isporučeni sadržaj predstavlja odgovor servera na akcije koje vrši korisnik tj. posjetilac sajta.

Bitno je napomenuti da se pojam “dinamična” stranice odnosi na način kreiranja sadržaja i njegovo slanje korisniku, a ne na to da li su neki elementi na njoj animacije, video ili neki drugi oblik multimedijalnog sadržaja (Adobe Flash, JavaScript animacije i sl.).

Koncept rada dinamičnih web stranica

Prednosti i mane

Prilikom izrade web stranica dilema da li neki web projekat treba biti statični ili dinamični u suštini i ne postoji. Na osnovu samog koncepta projekta se može vidjeti da li on treba da samo prezentuje statični sadržaj ili će sadržati određene web servise koji će vršiti modi%kaciju stranice u skladu sa potrebama i zahtjevima klijenta.

Ukoliko projektat zahtjeva nivoe pristupa, mogućnost postavljana sadržaja online ili bilo kakvu interakciju korisnika sa drugim korisnicima ili sistemom – to znači da vam je neophodan dinamičan podsistem koji će ispuniti te zahtjeve. S druge strane, ukoliko je neophodno da se identičan sadržaj isporučuje svim korisnicima – tad je jednostavnije napraviti statičan sajt.

Duško Angirević: Analiza G:Max CMS-a

4.

Page 10: Analiza G:Max CMS-a

Statični sajtovi

Fleksibilnost je glavna prednost statičnih sajtova – ukoliko je to potrebno, svaka stranica može biti drugačija kako bi se dizajn prilagodio tipu sadržaja. Ovo omogućava postavljanje tema npr. pri realizaciji online knjižare - ukoliko autor želi da svaki žanr knjiga ima speci%čnu temu, jednostavniji način realizacije je za statične sajtove. Bitno je napomenuti da su i početni troškovi izrade statičnih sajtova znatno niži neko u slučaju dinamičkih sajtova.

Međutim, glavni problem statičnih sajtova se javlja u momentu kad odlučite da ažurirate sadržaj. Osim ako niste veoma dobro upoznati sa HTML-om i samim konceptom web dizajna, neophodno je da se ponovo obratite dizajnerima kako bi izvršili bilo kakvu modi%kaciju sadržaja. Ovo može biti posve u redu ukoliko se radi o kreiranju novog sadržaja, ali ukoliko sve što želite da uradite jeste samo ažuriranje postojećeg sadržaja – ovaj proces može biti nepotrebno opterećenje i za klijenta i za dizajnera.

Drugi veoma bitan problem statičnih sajtova jeste skalabilnost. U slučaju kad projekat od vas zahtjeva da kreirate dosta novih stranica npr. ukoliko se vratimo online knjižari, svaka knjiga ima svoju stranicu, što znači da svaka nova knjiga zahtjeva dodavanje posve nove stranice, kao i ažuriranje linkova ka njoj. U ovom slučaju, troškovi ažuriranja sadržaja znatno smanjuju bene%t ostvaren niskim početnim troškom izrade.

Dinamični sajtovi

Glavna prednost dinamičkih sajtova jeste da njihovom spregom sa bazom podataka možete na jednostavan način povući sve relevantne informacije iz nje i prezentovati ih na način koji želite. Njihova sprega sa bazom podataka zapravo znači kreiranje nekog vida sistema za upravljanje sadržajem putem jednostavnog interfejsa koji vam omogućava administraciju putem Web-a.

Sadržaj koji se ažurira može biti obični tekst na stranici, fotogra%je unutar teksta, galerije fotogra%ja, liste dokumenata i sl. U ovom slučaju, nema velikih dodatnih troškova usljed održavanja osim ukoliko nije neka znatna promjena unutar samog dizajna ili dodavanje nove mogućnosti u postojećem sistemu.

Dizajn dinamičnih sajtova je više %ksan nego što je to slučaj sa statičnim, jer je većina stranica zapravo templejt u koji sistem automatski dodaje sadržaj i podatke na osnovu prede%nisanih pravila i na taj način kreira više stranica. Početni troškovi realizacije dinamičnih sajtova su znatno veći.

Duško Angirević: Analiza G:Max CMS-a

5.

Page 11: Analiza G:Max CMS-a

Unakrsna tabela prednosti i mana

Međutim, iako je realizacija statičnih sajtova jednostavnija – oni ne mogu odgovoriti na sve zahtjeve koje web developer ili u krajnjem slučaju sam projekt, pred njih može postaviti. Ispod je prezentovana tabela koja će vam na jednostavniji način prezentovati mane i vrline oba koncepta izrade web stranica:

Opis Statični web sajtovi Dinamični web sajtovi

Generalni opisStatični web sajt je skup stranica koje su kodirane u HTML-u putem određenih alata (HTML editori, FTP klijenti i sl.).

Dinamični web sajt je skup stranica koje su de&nisane unutar određenog prog. jezika koji generiše HTML sadržaj.

Priroda dokumenta

ručno kodirani sadržaj programski kod generiše sadržaj

Programski jezik HTML, JavaScript HTML, JavaScript, ASP, ASP, PHP i sl.

Ažuriranje sadržaja

komplikvano veoma jednostavno

Vrijeme ažuriranja

dugo kratko

Buduće nadogradnje

čak i najmanje izmjene zahtjevaju dug proces i veliki broj koraka

štedi vaše vrijeme i novac. I velike i male izmjene se mogu rješavati veoma brzo.

Sadržaj i dizajnSpojeni zajedno i mogu predstavljati velike probleme prilikom ažuriranja bilo kojeg segmenta.

Sadržaj i dizajn su odvojeni, te se na ovaj način mogu nezavisno mijenjati.

Baze podatka Nisu zasnovani na bazi podataka

Pretežno zasnovani na bazi podataka. Sadržaj je smješten u bazu podataka što u mnogome pomaže prilikom ažuriranja sadržaja.

PretragaSpora (pretraga kroz kodirane HTML fajlove smještene na serveru).

Brza (realizuje se pretragom podataka unutar baze podataka).

Prilagođeno za štampu

Najčešće nisu optimizovani za štampu, a ukoliko se pokuša izvesti optimizacija to produžava proces ažuriranja sajta (uporedo sa orginalnom, potrebno je ažurirati i print verziju).

S obzirom da je sadržaj smješten u bazi, veoma lako se kreira nova kopija koja je optimizovana za štampu. Ne postoji redudantnost posla zbog pripreme print verzije.

Izrada templejta ne postojiZasnovan na templejtu što omogućava brzu izmjenu dizajna na svim stranicama po potrebi.

Početni troškovi Niski Visoki

Troškovi održavanja

Visoki Niski

Duško Angirević: Analiza G:Max CMS-a

6.

Page 12: Analiza G:Max CMS-a

Content Management System (CMS)

Content Managements System (CMS) jeste sistem koji je namijenjen za upravljanje sadržajem tj. programska aplikacija za upravljenje sadržajem nekog web sajta. CMS daje mogućnost moderatoru sajta da samostalno održava sadržaj (da mijenja postojeći tekst, dodaje novi, da ubacuje slike ili multimedijalne objekte...) bez poznavanja tehnologija za kreiranje web sajtova.

Ovi sistemi omogućavaju svojim korisnicima da na jednostavan način, brzo i e%kasno na sebe preuzmu kompletan proces ažuriranja web lokacije te na taj način smanje troškove ažuriranja. Međutim, to nije i jedini razlog: ponekad je učestalost izmjena sadržaja toliko velika, a brzina izmjena podataka od velikog značaja (npr. u slučaju medija i agencija) te je nepraktično vršiti ručno izmjene statičnih stranica.

Na internetu se može naći veliki broj gotovih CMS sistema kao što su Joomla, Drupal, ExpressionEngine, a pored njih i WordPress, Blogger koji su veoma kvalitetni proizvodi. Jedina mana ovih proizvoda je ta da su oni napravljeni za standardne potrebe, tako da ako vaš sajt ima neke posebne zahtjeve, bolja solucija je da zatražite od web programera modi%kaciju nekog od postojećih rješenja ili izradu novog CMS-a koji zadovoljava sve vaše potrebe.

Sama modi%kacija gotovih rješenja je nepraktična iz niza razloga, a ja bih naveo samo neke:

๏ korištenjem otvorenih sistema poput navedenih neophodno je da redovno ažurirate aplikaciju, jer se usljed dostupnosti koda - veoma lako detektuju propusti te je neophodno pratiti međuverzije koje su zapravo niz zakrpa za detektovane bugove;

๏ modi%kacija postojećeg rješenja može znatno ubrzati razvojni proces, ali postoji mogućnost da vaša modi%kacija softwarea neće funkcionisati na sljedećem updateu samog softwarea;

๏ modi%kacija koda sopstvene aplikacije je mnogo jednostavnija nego modi%kacija aplikacije na kojoj radi nekoliko hiljada volontera širom svijeta;

Usljed ovih nekoliko navedenih razloga, suočen s dilemom prije nekoliko godina - odlučio sam da razvijem sopstvenu CMS platformu koja mi omogućava brzu modi%kaciju i nadogradnju na osnovu modularnosti same aplikacije.

Više informacija o samom CMS-u i konceptu rada će biti navedeno u poglavljima koja slijede.

Duško Angirević: Analiza G:Max CMS-a

7.

Page 13: Analiza G:Max CMS-a

2. G:Max CMSIstorijat i razvoj

Na samom početku je postojao samo set PHP skripti koje su imale ulogu da malo ubrzaju proces ažuriranja web lokacija: skripta za rad s vijestima i skripta za rad sa statičnim sadržajima. Međutim, prohtjevi i želje klijenata su vremenom rasle, a da bi se omogućilo proširenje karakteristika tih skripti - bilo je neophodno da se zamjeni cijelokupni njihov koncept.

Prve skripte nisu imale podršku za višejezičke sajtove, nije bilo moguće izvršiti kreiranje samih podstranica na sajtu već su sve web stranice bile rješavane u jednom nivou.

Danas, G:Max je rješenje koje je veoma )eksibilno za rad i ovaj CMS se veoma jednostavno uklapa u većinu zahtjeva koje korisnik postavi pred njega.

Šta to znači? Jednostavno govoreći, to znači da:

๏ on u sebi sadrži većinu neophodnih podsistema;

๏ oni zahtjevi na koje ne može da odgovori mogu biti riješeni jednostavnim dodavanjem modula u sam sistem;

๏ sistem može rješiti svaki problem i može se primjeniti svugdje, ali tek nakon što se sistem podesi i uključe moduli koji obavljaju neophodne zadatke koji se ne uklapaju u osnovni model.

Glavne karakteristike G:Max CMS-a su:

๏ )eksibilan i dinamičan;

๏ višejezično orijentisan;

๏ nezavisan od platforme (operativnog sistema);

๏ jednostavan za rad;

๏ korisnički nalozi i korisničke grupe s pratećim privilegijama;

๏ automatizovana objava sadržaja;

๏ preview sadržaja prije objavljivanja;

๏ jednostavan unos sadržaja i nadogradnja sa dodatnim elementima u strukturi sajta;

๏ ispunjava WEB.2 speci%kacije: XHTML, CSS, RSS...

G:Max je moguće nadograđivati modulima koji će prilagoditi sistem vašim potrebama i proširiti njegove mogućnosti u novom pravcu.

Duško Angirević: Analiza G:Max CMS-a

8.

Page 14: Analiza G:Max CMS-a

Zahtjevi sistema

Web server na kojem se hostuje G:Max CMS mora da ispunjava osnovne zahtjeve koji se odnose na softversku i hardversku speci%kaciju servera.

G:Max sistem je zasnovan na PHP programskom jeziku i velikim dijelom se oslanja na MySQL bazu podataka za kreiranje i čuvanje sadržaja. Samim tim što oba ključna elementa postoje na skoro svim operativnim sistemima, kao i zato što je kod prenosiv između platformi - i sam G:Max je nezavisan od operativnog sistema.

+ + ili ili =

Minimalni zahtjevi za G:Max CMS sistem su sljedeći:

๏ Hardware: Pentum I 200 MHz, 16 MB RAM;

๏ Software: OS X / LAMP / Windows platforma (podrška za PHP v.4.2.4 +; dodjeljena prava za pisanje sadržaja po disku na serveru; podrška za GD biblioteku u okviru PHP-a v.1+; MySQL server v.4+ s nalogom sa dozvoljenim svim pravima nad bazom podataka).

Optimalni zahtjevi za G:Max CMS sistem su sljedeći:

๏ Hardware: Pentum IV 2 GHz, 512 MB RAM;

๏ Software: OS X ili LAMP platforma (PHP v.5+, dodjeljena prava za pisanje sadržaja po disku na serveru, podrška za GD biblioteku u okviru PHP-a v.2+, MySQL server v.5+ s nalogom sa dozvoljenim svim pravima nad bazom podataka).

Duško Angirević: Analiza G:Max CMS-a

9.

Page 15: Analiza G:Max CMS-a

3. Mogućnosti CMS-aFleksibilan i skalabilan

Vašem sajtu mogu pristupiti i korisnici koji koriste i druge Internet Ready uređaje, a što je najbitnije - možete dodavati više informacija po potrebi bez problema!

Jedna od glavnih prednosti G:Max sistema jeste njegova )eksibilnost. Zahvaljujući tome - dodatne opcije mogu biti "dodane" u bilo kom trenutku, bez obzira da li se radi o unapređenju postojećih ili izradi posve novih modula po narudžbi.

Nove funkcije je moguće integrisati u postojeći sistem bez narušavanja postojeće funkcionalnosti, jer se i nove funkcije oslanjaju na zajedničku osnovu.

G:Max-ova skalabilnost se ogleda u mogućnosti primjene na bilo kom tipu sajta, bez obzira da li se radi o manjem web sajtu s malim prometom ili o velikom sajtu portalskog tipa.

Takođe, bitno je napomenuti da sistem može da isporuči sajt posjetiocu bez obzira koji uređaj ili program za čitanje web-a on koristi. To znači da vašem sajtu pored klasičnih korisnika interneta, mogu prostupati i oni korisnici koji to čine putem mobilnog telefona novije generacije, tekstualnog browsera, PDA uređaja ili bilo kog drugog Internet Ready uređaja6.

Jednostavno upravljanje sadržajem

Čak i korisnici sa malo iskustva sa CMS sistemima mogu jednostavno obaviti svoj zadatak!

Na samom početku razvoja G:Max sistema, odlučili smo da korisniku sistema omogućimo da što lakše obavi svoj posao. Imali smo želju da smanjimo poteškoće na koje korisnik nailazi u svom radu, povećamo njegovu e%kasnost i da sam sistem približimo i onima koji se po prvi put susreću sa njim.

Sve bitne funkcije se nalaze na jasno istaknutom mjestu, tako da korisnik koji ima veoma malo iskustva može na jednostavan način da obavi ono što želi - bez suvišnog lutanja po tabovima i podmenijima. S druge strane, za one iskusnije smo ipak ostavili mogućnost da sa sadržajem manipulišu na način na koji su više navikli (direktno uređivanje HTML koda i sl.).

Budući da je G:Lite verzija duže godina na tržištu, uz pomoć njega smo ustanovili prednosti i mane sistema. Za ove prve smo se potrudili da ih još više poboljšamo, a za ove druge smo uklonili i mijenjali. Ono što se u praksi pokazalo kao bitno i korisno smo još više unaprijedili, a za veliki broj unapređenja su zaslužni baš sami korisnici sistema, jer smo prihvatili njihove brojne prijedloge.

Naša je želja da riješimo svaki iritantni problem vezan za korisnički interfejs, a sudeći po komentarima klijentata i korisnika - G:Max je veoma dobro prihvaćen.

Duško Angirević: Analiza G:Max CMS-a

10.6 Uređaji koji u sebi imaju podršku za Internet protokole;

Page 16: Analiza G:Max CMS-a

Sistem korisnika i privilegija

Zaštićeni pristupni podaci, jednostavan proces registracije novih korisnika i zaštita od spam komentara...

Od samog početka CMS sistemi koriste podsistem korisničkih naloga i grupa.

Sistem autorizacija korisnika ugrađen u G:Max CMS ne zaostaje za bilo kojim trenutnim sistemom na tržištu. Ireverzibilna enkripcija lozinki, SSL enkripcija7 prijave i administracije sadržaja, registracija korisnika i razni nivoi pristupa za pojedine korisnike...

Podsistem za registraciju korisnika koristi proces aktivacije naloga putem e-mail adrese kako bi se spriječilo korištenje lažnih e-mail naloga.

Preview sadržaja

Pogledajte kako će vaš novokreirani sadržaj izgledati i prije nego što ga objavite i uvjerite se da je to ono što zaista želite!

Željeli biste da pogledate kako izgleda sadržaj koji trenutno uređujete, a ne želite da ga i drugi vide? Ova prilično popularna opcija se nalazi integrisana u sam G:Max sistem i aktivira se automatski u onim sekcijama gdje je ta opcija potrebna.

Dovoljno je da počnete sa pripremama sadržaja i kad poželite da ga pregledate - samo kliknite na ikonu koja poredstavlja ovu opciju i otvoriće se prozor sa live preview-om sadržaja. Ovaj pop-up prozor možete jednostavno zatvoriti, doraditi vaš sadržaj i tek kasnije ga objaviti.

Tempirani sadržaj

Odredite tačan datum i vrijeme objave sadržaja i ne brinite,sadržaj će se automatski pojaviti.

Ovo je jedna od najbitnijih prednosti u odnosu na statične web sajtove. Tempiranje sadržaja se pokazalo kao nevjerovatno korisna operacija iz više razloga.

Zamislite da želite da vaša izdavačka kuća sav novi sadržaj iz jutarnjeg broja ima online na svom eMagazinu do 9h ili da se na vašem sajtu tačno u ponoć pojavi novi sadržaj.

Kad bi to činili putem statičnih web stranica, trebali bi pripremiti sav neophodan sadržaj, a potom čekati odabrani trenutak te ga tek tad prenijeti na server.

Uz pomoć G:Max sistema jednostavno pripremite sadržaj, odredite datum i vrijeme objavljivanja i ne brinete - sadržaj će biti na vašem sajtu u baš ono vrijeme koje ste naveli. Nema potrebe za buđenjem u zoru ili čekanjem ponoći.

Duško Angirević: Analiza G:Max CMS-a

11.7 SSL enkripcija se uključuje po zahtjevu klijenta;

Page 17: Analiza G:Max CMS-a

Formatiranje sadržaja

Vizuelno formatiranje sadržaja je veoma slično radu u popularnom editoru teksta Microsoft Word što mnogo olakšava rad!

U krugu G:Max sistema nalaze se različite opcije vezane za kreiranje i formatiranje sadržaja:

๏ standardno uređivanje:koje se koristi kada napredni oblik formatiranja teksta nije neophodan;

๏ vizuelno formatiranje:koje se sastoji od editora koji prikazuje sadržaj u obliku u kom će biti prikazan na samom sajtu, s omogućenom opcijom za rad na nivou čistog HTML-a;

Način koji ćete koristiti zavisi od tipa sadržaja koji uređujete. Ukoliko unosite tekst u opis fotogra%je u galeriji, imate samo osnovne opcije za uređivanje, dok prilikom uređivanja novosti ili samog sadržaja sajta - imate na raspolaganju napredne opcije poput rada s tabelama i slično.

Vizuelni editor vam omogućava primjenu različitih stilova na tekst koji uređujete, ubacivanje i pozicioniranje fotogra%ja u sadržaj, stvaranje i formatiranje tabela, rad s numerisanim i nenumerisanim listama i sl.

Čitav editor je veoma sličan popularnom tekstuelnom editoru u office paketu Microsoft Word - što dodatno olakšava snalaženje. Kao što je već rečeno, postoji i opcija direktnog unosa HTML-a ukoliko vam je taj način draži.

Kompatibilan sa standardima

Olakšan pristup korisnicima sa uređajima koji nisu uobičajeni (uređaji poput čitača za slijepe osobe, korisnike WebTV-a ili korisnike smartphone-a).

Cjelokupan sadržaj koji nastaje kao rezultat rada sistema, teži ka ispravno formatiranom sadržaju koji je usklađen sa web standardima. Prednosti koje usklađenost sa standardima donosi su velike i u mnogome se odnose na jednostavnost kasnije nadogradnje sistema.

Olakšan pristup korisnicima sa uređajima koji nisu uobičajeni (uređaji poput čitača za slijepe osobe, korisnike WebTV-a ili korisnike mobilnih telefona i smartphone-a novije generacije).

Duško Angirević: Analiza G:Max CMS-a

12.

Page 18: Analiza G:Max CMS-a

4. Analiza bazeStruktura

Tabele navedene u ovom poglavlju predstavljaju prvi korak u radu s G:Max CMS-om, a kontrolisane od strane panela za rad sa strukturom (panel “Struktura”) o kojem će biti riječi u posebnom poglavlju koje opisuje upravljanje sadržajem. Ovaj prvi korak jeste i prvo pravilo u radu s CMS-om: “Stranice i podstranice sa svojim osobinama se podešavaju unutar panela Struktura!”

cms_lang

CREATE TABLE `cms_lang` ( `id` int(11) NOT NULL AUTO_INCREMENT, `lang` varchar(20) COLLATE utf8_bin DEFAULT NULL, `ime` varchar(50) COLLATE utf8_bin DEFAULT NULL, `main` tinyint(1) DEFAULT '0', PRIMARY KEY (`id`)) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

Uloga tabele “cms_lang” jeste da omogući višejezičnost samog sistema. Unutar nje se nalaze tri kolone koje detaljnije opisuju jezičke verzije:

๏ id - pruža jedinstven indenti%kator jezika;

๏ lang - skraćeni naziv jezika koji će se koristiti duž CMS-a (latn - Latinična vezija, eng - Engleska i sl.) pri čemu treba napomenuti da pri optimizaciji CMS-a, polje id bi trebalo preuzeti funkciju polja lang;

๏ ime - sadrži puni naziv jezičke verzije i služi samo kao opisno polje;

๏ main - je polje koje samo de%niše koji je glavni jezik na CMS-u. Vrijednost može biti “0” ili “1”, pri čemu samo jedan zapis ove tabele može imati vrijednost “1”, jer može biti samo jedan “default” jezik.

id lang ime main

1 latn Latinična verzija 1

2 eng English version 0

Duško Angirević: Analiza G:Max CMS-a

13.

Page 19: Analiza G:Max CMS-a

cms_prikaz

CREATE TABLE `cms_prikaz` ( `id` int(11) NOT NULL AUTO_INCREMENT, `ime` varchar(200) COLLATE utf8_bin DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

Sistem raspoznaje sljedeće korisnike: neregistrovane korisnike (posjetioci sajta koji se nisu registrovali i logovali u sistem), registrovane korisnike i admin korisnike. Potrebno je naglasiti da postoji i zabrana prikaza određenog sadržaj te da on tad postaje nevidljiv za sve osim za admin korisnike.

id ime

4 Neregistrovani korisnici

3 Registrovani korisnici

2 Svi korisnici

1 Nevidljivo svim korisnicima

cms_struktura

CREATE TABLE `cms_struktura` ( `id` int(11) NOT NULL AUTO_INCREMENT, `SubOf` int(11) NOT NULL DEFAULT '1', `redosljed` int(2) DEFAULT NULL, `prikaz` int(2) DEFAULT '1', `ext` varchar(200) COLLATE utf8_bin DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

Pošto tabela “cms_lang” omogućava samo da znamo koliko to zapravo jezika postoji u sistemu, tabela “cms_struktura” sadrži informacije samo po elementima strukture tj. sadrži sveukupan broj stranica i njihovih podstranica, informacije o hijerarhiji horizontalnoj i vertikalnoj, pravima prikaza, eksternim linkovima ka sadržaju:

๏ id - jedinstven identi%kator stranice;

๏ SubOf - mora imati vrijednost “0” u slučaju kad se govori o početnoj stranici, dok u bilo kojem drugom slučaju može imati vrijednost bilo kojeg postojećeg ideniti%katora osim sopstvenog ili ideniti%katora koji se na posredan ili neposredan način nalazi u “child” odnosu. Ovo polje vodi računa u vertikalnoj organizaciji stranica tj. o tome koja stranica je kojoj roditelj;

๏ redosljed - uloga ovog polja jeste da izvrši organizaciju stranica unutar iste kategorije tj. roditelja: rezultati ovog SQL upita za navigaciju se prvenstveno sortiraju po vrijednosti ovog polja, a potom po vrijednosti polja “id” u opadajućem nizu. Na taj način se u slučaju nede%nisanja ovih parametara stranice prikazuju od starijih ka novijim;

๏ prikaz - polje je namjenjeno za de%nisanje koja stranica se može vidjeti od strane kojeg korisnika.

Duško Angirević: Analiza G:Max CMS-a

14.

Page 20: Analiza G:Max CMS-a

๏ ext - jeste polje koje može sadržavati link ka eksternim sadržajima. Najčešće se radi o URL8-ovima ka drugim lokacijama, ali može sadržavati bilo kakvu informaciju: poziv za JavaScript funkciju, link ka fajlu i sl.

id SubOf redosljed prikaz ext

1 0 0 3 http://www.gmax-cms.com/

2 1 0 2

3 1 0 2

4 1 0 2

5 1 0 2

6 2 0 2

cms_struktura_ime

CREATE TABLE `cms_struktura_ime` ( `id` int(11) NOT NULL AUTO_INCREMENT, `pointer` int(11) DEFAULT NULL, `lang` varchar(20) COLLATE utf8_bin DEFAULT NULL, `ime` varchar(250) COLLATE utf8_bin DEFAULT NULL, PRIMARY KEY (`id`), KEY `pointer` (`pointer`), KEY `lang` (`lang`)) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

S obzirom da tabela “cms_struktura” unutar sebe samo sadrži informacije o odnosima pojedinih elemenata strukture i njima pripadajuća svojstva, potrebna nam je i tabela koja omogućava povezivanje samih naziva pojedinih elemenata strukture sa elementima strukture i odgovarajućom jezičkom verzijom. Slijedi opis polja ove tabele:

๏ id - jedinstveni identi%kator;

๏ pointer - polje koje sadrži “id” pripadajuće stranice iz talebe “cms_struktura”;

๏ lang - polje koje u sebi sadrži informaciju o tome za koju jezičku verziju je naziv vezan;

๏ ime - naziv samog elementa za određenu jezičku verziju;

id pointer lang ime

1 1 latn Početna stranica

2 1 eng Homepage

3 2 latn Business

4 2 eng Business

7 4 latn Korisnički centar

8 4 eng Support Center

Duško Angirević: Analiza G:Max CMS-a

15.8 Uniform Resource Locator - http://en.wikipedia.org/wiki/Uniform_Resource_Locator

Page 21: Analiza G:Max CMS-a

Do sad opisane tabele su ključne za realizaciju koncepta strukture unutar CMS-a i omogućavaju sljedeće funkcionalnosti:

๏ neograničen broj podstranica horizontalno i vertikalno;

๏ mogućnost diferencijacije prikaza na osnovu prava tj. vrste korisnika;

๏ eksterno linkovanje bilo kojeg elementa ka bilo kom drugom elementu ili bilo kom drugom sadržaju ili servisu.

๏ višejezičnost na nivou strukture koji će biti fundamentalna za višejezičnost sadržaja na nivou samog CMS-a;

Moduli

Kao što je već rečeno, za raspored stranica i njihove osobine zadužen je set tabela koje rade na de%nisanju same strukture web stranica. Za de%nisanje rasporeda samog sadržaja na pojedinoj stranici zadužene su tabele koje unutar sebe sadrže naziv modul. One zapravo imaju ulogu da povežu kreirani sadržaj i željene načine prikaza sa samim stranicama. Tip prikazanog sadržaja zavisi isključivo od samog tipa modula koji je pozvan na toj stranici.

Za upravljanje modulima, zadužen je panel “Moduli”.

cms_moduli_tip

CREATE TABLE `cms_modul_tip` ( `id` int(11) NOT NULL AUTO_INCREMENT, `pointer` varchar(10) COLLATE utf8_bin DEFAULT NULL, `ime` varchar(200) COLLATE utf8_bin DEFAULT NULL, `modul` varchar(200) COLLATE utf8_bin DEFAULT NULL, PRIMARY KEY (`id`), KEY `new_index` (`modul`)) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

Polja ove tabele sadrže sljedeće informacije:

๏ id - jedinstveni identi%kator;

๏ pointer - u ovom slučaju pointer je pokazivač na srodne grupe modula radi lakšeg grupisanja i rada s modulima;

๏ ime - sam naziv modula kako bi korisnicima bilo olakšano njihovo imenovanje;

๏ modul - naziv funkcije koja se poziva za izvršavanje zadatka unutar PHP koda koji je dodjeljen za tu grupu.

Ono što je još bitno napomenuti jeste to da na svakoj pojedinoj stranici bez obzira na jezičku verziju, može biti pozvan proizvoljan broj modula na proizvoljnom broju pozicija.

id pointer ime modul

3 nav Navigacija navigacija

4 nav Putanja path

8 nav Izbor jezika lang_select

Duško Angirević: Analiza G:Max CMS-a

16.

Page 22: Analiza G:Max CMS-a

id pointer ime modul

30 nav Mapa sajta navigacija_mapa

5 news Arhiva vijesti news

6 news Kategorije news_kategorije

21 news Rotator news_izvodi

22 news Najčitanije news_top

25 news Izvodi vijesti news_cat_sel

26 news Diskusije news_komentari

27 news Kategorisane news_categorised

31 news Najave news_najave

32 news Aktuelno news_aktuelno

34 news Posljednje novosti news_latest

35 news Aktuelne vijesti II news_myFive

36 news Pregled vijesti news_pregled

12 rn Prikaz radnih naloga rn

14 rn RN Zadaci rn_zadaci

15 rn RN Izvješaji rn_izvjestaji

1 txt Text/HTML modul_text

7 txt Anketa anketa

11 txt Galerije galerija

13 txt Kalendar kalendar

16 txt Dokumenti docs

17 txt FAQ faq

18 txt Arhiva anketa anketa_arhiva

20 txt Dokumenti (TOP 5) docs_top

37 txt Galerije i komentari galerija_koment

41 txt Galerije: sve galerija_sve

2 usr Login box login

9 usr Online korisnika users_online

10 usr Registracija korisnika users_register

19 usr Pretraga - napredna pretraga

23 usr Promjena osnovnih podataka users_account

Duško Angirević: Analiza G:Max CMS-a

17.

Page 23: Analiza G:Max CMS-a

id pointer ime modul

24 usr Promjena lozinke users_password

28 usr Pro&li users_pro&les

29 usr Rezultati pretrage pro&la user_pro&le_mach

33 usr Formulari forms

38 usr Forumi forum

39 usr Kolumne: lista autora news_kolumna_svi_autori

40 usr Kolumne: posljednjih 10 news_kolumna_autori

42 usr Povrat izgubljene lozinke users_password_rec

cms_moduli

CREATE TABLE `cms_moduli` ( `id` int(11) NOT NULL AUTO_INCREMENT, `lang` varchar(20) COLLATE utf8_bin DEFAULT NULL, `data` int(11) DEFAULT '0', `pointer` smallint(4) DEFAULT NULL, `tip` int(11) DEFAULT '0', `prikaz` int(11) DEFAULT NULL, `redosljed` int(11) DEFAULT NULL, `lokacija` varchar(40) COLLATE utf8_bin DEFAULT 'main', `parametri` varchar(200) COLLATE utf8_bin NOT NULL DEFAULT '0', PRIMARY KEY (`id`), KEY `lang` (`lang`), KEY `data` (`data`), KEY `lokacija` (`lokacija`)) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

Tabela “cms_moduli” je jedna od najkompleksnijih tabela unutar CMS-a i njena uloga jeste da poveže nekoliko dijelova sistema na osnovu informacija koje posjeduje:

๏ pozove modul na osnovu lokacije tj. pozicije modula, jezičke verzije i prava korisnika;

๏ sadrži informacije kad se poziva koji modul;

๏ prilikom pozivanja funkcija koje su de%nisane unutar tabele “cms_moduli_tip” prosljeđuje odgovarajuće parametre funkcijama;

Da bi sam CMS to sve mogao da izvede, ova tabela sadrži sljedeća polja s informacijama za svaku pojedinu postavljenu instancu modula:

๏ id - indenti%kator modula;

๏ lang - jezičku verziju za koju se poziva modul;

๏ data - u zavisnosti od tipa modula sadrži različite informacije za pozivanje samog modula; najčešće se koristi za pokazivanje na “id” nekog drugog sadržaja ukoliko on nema sopstvenu tabelu za referenciranje (npr. rad sa modulom TXT/HTML);

๏ pointer - sadrži “id” stranice s koje se poziva modul;

๏ tip - sadrži “id” iz tabele “cms_moduli_tip” kako bi se znalo koji modul se poziva;

๏ prikaz - de%niše ko vidi modul na osnovu podataka iz tabele “cms_prikaz”;

Duško Angirević: Analiza G:Max CMS-a

18.

Page 24: Analiza G:Max CMS-a

๏ redoslijed - ukoliko je postavljeno više modula u jedan blok na istoj stranici, ovo polje de%niše kojim redoslijedom se pozivaju;

๏ lokacija - na stranici s koje je pozvan sam modul (header, footer, left, right ili main kolona);

๏ parametri - set parametara koji se prosljeđuju funkciji pri pozivu;

id lang data pointer tip prikaz redosljed lokacija parametri

1 latn 1 1 1 2 NULL hp1 0

2 latn 1 2 1 2 NULL hp2 0

Korisnici

Kao i svaki višekorisnički sistem, ovaj CMS posjeduje informacije o svojim korisnicima i njihovim pristupnim podacima, a za upravljanje korisnicima u ovom podsistemu zadužen je panel “Korisnici”.

cms_korisnici_tip

CREATE TABLE `cms_korisnici_tip` ( `id` int(11) NOT NULL DEFAULT '0', `naziv` varchar(200) COLLATE utf8_bin DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

Tabela “cms_korisnici_tip” sadrži informacije o tipu korisnika koje raspoznaje sam CMS. Tokom kasnijeg rada se ispostavilo da bi ova tabela mogla biti adekvatno zamijenjena sa jednim setom podataka u obliku enumeracije (ENUM). Ova problematika će biti dodatno pojašnjena u poglavlju “Nadogradnja i optimizacija”. Sama tabela se sastoji iz dvije kolone:

๏ id - jedinstveni identi%kator;

๏ naziv - naziv tipa korisnika;

id naziv

5 Administrator

2 Napredni korisnik

1 Obični korisnik

0 Neaktivan nalog

Duško Angirević: Analiza G:Max CMS-a

19.

Page 25: Analiza G:Max CMS-a

cms_korisnici

CREATE TABLE `cms_korisnici` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(50) COLLATE utf8_bin NOT NULL DEFAULT '', `password` varchar(20) COLLATE utf8_bin NOT NULL DEFAULT '', `ime` varchar(50) COLLATE utf8_bin NOT NULL DEFAULT '', `prezime` varchar(50) COLLATE utf8_bin NOT NULL DEFAULT '', `mail` varchar(200) COLLATE utf8_bin NOT NULL DEFAULT '', `nivo` smallint(2) DEFAULT '0', `LastLogin` datetime DEFAULT '0000-00-00 00:00:00', `kreiran` datetime DEFAULT '0000-00-00 00:00:00', `alerts` smallint(2) DEFAULT '1', PRIMARY KEY (`id`), KEY `password` (`password`), KEY `username` (`username`)) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

Sama struktura ovih podataka varira i u zavisnosti od samih zahtjeva klijenta tako da će biti opisani samo elementarna polja koja su bitna za funcionisanje sistema:

๏ id - jedinstveni identi%kator;

๏ username - korisničko ime korisnika koje mora biti jedinstveno na nivou sistema;

๏ password - polje koje sadrži informacije o lozinki korisnika. U trenutnoj verziji sistema lozinka se čuva u orginalnom obliku dok na pojedinim verzijama9 postoje varijante gdje se vrši enkripcija podataka na osnovu MD510 algoritma;

๏ ime - ime korisnika;

๏ prezime - prezime korisnika;

๏ mail - e-mail korisnika koji je korišten prilikom registracije korisnika;

๏ nivo - nivo prisupa korisnika referenciran na “id” polje tabele “cms_korisnici_tip”;

๏ LastLogin - informacije kad je posljednji put korisnik uspješno izvršio interakciju na sistemu sa svojim pravima;

๏ kreiran - datum kreiranja naloga;

๏ alerts - u zavisnosti od vrijednosti unutar ovog polja, korisniku se automarski šalju informacije poput newsletter-a, obavještenja o statusu sistema i sl.

Iako su za autenti%kaciju korisnika dovoljne informacije poput korisničkog imena i lozinke, sam CMS sve informacije o akcijama korisnika čuva preko vrijednosti “id” polja.

Duško Angirević: Analiza G:Max CMS-a

20.

9 pojedine varijacije CMS-a u kojima su klijenti izričito tražili ovaj vid zaštite podataka zbog njihovih sigurnosnih politika;

10 MD5 (od engl. Message-Digest algorithm 5) je kriptogrаfski аlgoritаm koji spаdа u grupu hаš аlgoritаmа ili аlgoritаmа zа sаžimаnje (ovi аlgoritmi se još nаzivаju i digest, ireverizibilni ili аlgoritmi bez ključа ) i bio je veomа je primjenjen u mnogim oblаstimа zаštite podаtаkа, mаdа se dаnаs smаtrа podložnim kriptogrаfskim nаpаdimа tаko dа se rijeđe primjenjuje u kriptogrа!ji. - http://sr.wikipedia.org/sr/MD5

Page 26: Analiza G:Max CMS-a

Anketa

Podsistem za rad sa sadržajem u obliku anketa se sastoji iz dvije tabele: jedna sadrži informacije o svakoj pojedinoj anketi, a druga sadrži podatke tj. prevode pitanja i odgovora na odgovarajućim jezičkim verzijama.

Za upravljanje sadržajem u podsistemu anketa zadužen je panel “Ankete”.

cms_anketa

CREATE TABLE `cms_anketa` ( `id` int(11) NOT NULL AUTO_INCREMENT, `pointer` int(11) DEFAULT '0', `objavljen` datetime DEFAULT '0000-00-00 00:00:00', `kreiran` datetime DEFAULT '0000-00-00 00:00:00', `autor` int(11) DEFAULT NULL, `glasovi` int(11) DEFAULT '0', PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8;

Tabela “cms_anketa” sadrži sljedeća polja:

๏ id - jedinstveni identi%kator;

๏ pointer - pokazivač elemenata: ukoliko je unutar tog zapisa informacija o anketnom pitanju - vrijednost je “0”, a ako je unutar njega informacija o anketnom odgovoru - vrijednost je jednaka “id” polju odgovarajućeg pitanja;

๏ objavljen - je polje koje sadrži informaciju o datumu i vremenu objave ankete; ovo polje ujedno omogućava i osobinu tempirane objave sadržaja11;

๏ kreiran - sadrži datum i vrijeme kreiranja orginalnog sadržaja; koristi se za sortiranje i statistiku;

๏ autor - sadrži “id” korisnika koji je kreirao anketno pitanje; ova informacija je u slučaju anketnih odgovora nebitna;

๏ glasovi - predstavljaju broj glasova za pojedini anketni odgovor, dok u slučaju anketnog pitanja sadrže sumu glasova svih pripadajućih odgovora i koristi se pri izračunu procenta u %nalnom prikazu ankete;

id pointer objavljen kreiran autor glasovi

1 0 2010-08-16 19:09:00 2010-08-23 19:10:09 1 9

2 1 0000-00-00 00:00:00 0000-00-00 00:00:00 NULL 5

3 1 0000-00-00 00:00:00 0000-00-00 00:00:00 NULL 3

4 1 0000-00-00 00:00:00 0000-00-00 00:00:00 NULL 1

Duško Angirević: Analiza G:Max CMS-a

21.

11 Tempirana objava sadržaja je mogućnost sistema da sadržaj objavi u jednom trenutku nezavisno od interakcije korisnika.

Page 27: Analiza G:Max CMS-a

cms_anketa_ime

CREATE TABLE `cms_anketa_ime` ( `id` int(11) NOT NULL AUTO_INCREMENT, `pointer` int(11) DEFAULT NULL, `lang` varchar(20) COLLATE utf8_bin DEFAULT NULL, `ime` varchar(250) COLLATE utf8_bin DEFAULT NULL, PRIMARY KEY (`id`), KEY `pointer` (`pointer`), KEY `lang` (`lang`)) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

Tabela “cms_anketa_ime” sadrži konkretna anketna pitanja i odgovore u odgovarajućim jezičkim verzijama. Bitno je napomenuti da anketa koja se kreira na jednoj jezičkoj verziji treba da bude identična onoj koja se kreira na drugoj jezičkoj verziji. To znači da polja s jedne jezičke verzije trebaju odgovarati poljima na drugoj (npr. ako je prvi ponuđeni odgovor “Da” na lokalnoj verziji, taj isti odgovor treba biti i na bilo kojoj drugoj jezičkoj verziji).

๏ id - jedinstveni identi%kator;

๏ pointer - pokazivač na “id” polje pitanja ili odgovora za koje se čuva informacija;

๏ lang - zajedno s poljem “pointer” čini jedinstveni složeni ključ na osnovu jezičke verzije unutar ovog polja i pokazivača unutar prethodno opisanog;

๏ ime - sadrži konkretan prevod pitanja ili odgovora;

id pointer lang ime

1 1 latn Da li vam se dopada naš CMS?

2 1 eng Do you like our CMS?

3 2 latn Da

4 2 eng Yes

5 3 latn Ne

6 3 eng No

7 4 latn Možda

8 4 eng Maybe

Duško Angirević: Analiza G:Max CMS-a

22.

Page 28: Analiza G:Max CMS-a

Dokumenti

Slično kao i kod anketa, podsistem za rad s dokumentima se sastoji iz dvije tabele, pri čemu je bitno napomenuti da međuzavisnost koja postoji kod anketa (isti podaci samo druga jezička verzija) ovdje ne postoji. Naime, dokument u PDF-u ili bilo koji drugi dokument postavljen na jednoj jezičkoj verziji nema važnost ukoliko ima samo preveden opis dokumenta dok je orginalni fajl sam po sebi samo na jednoj jezičkoj verziji.

Usljed ove razlike, broj dostupnih dokumenata na jednoj verziji može biti u potpunosti različit od broja dostupnih dokumenata na nekoj drugoj jezičkoj verziji.

Za upravljenje sadržajem u podsistemu dokumenti zadužen je panel “Dokumenti”.

cms_docs_kategorije

CREATE TABLE `cms_docs_kategorije` ( `id` smallint(11) NOT NULL AUTO_INCREMENT, `pointer` smallint(11) DEFAULT NULL, `lang` varchar(20) DEFAULT NULL, `ime` varchar(250) DEFAULT NULL, PRIMARY KEY (`id`), KEY `pointer` (`pointer`), KEY `lang` (`lang`)) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

Ova tabela je neophodna ukoliko imamo potrebu da dokumenti budu razvrstani po kategorijama, što je u praksi i najčešći slučaj. Ova tabela se sastoji od sljedećih polja:

๏ id - jedinstveni identi%kator;

๏ pointer - pokazivač na kategoriju, a nastaje tako što zauzima vrijednost prvog slobodnog “id”-a u tabeli;

๏ lang - zajedno s poljem “pointer” čini jedinstveni složeni ključ na osnovu jezičke verzije unutar ovog polja i pokazivača unutar prethodno opisanog;

๏ ime - sadrži konkretno ime kategorije;

id pointer lang ime

2 1 latn Dokumenti

3 1 eng Documents

5 4 latn Multimedia

6 4 eng Multimedia

Duško Angirević: Analiza G:Max CMS-a

23.

Page 29: Analiza G:Max CMS-a

cms_docs

CREATE TABLE `cms_docs` ( `id` int(11) NOT NULL AUTO_INCREMENT, `subof` int(11) NOT NULL DEFAULT '0', `naziv` varchar(250) DEFAULT '', `opis` tinytext, `ext` varchar(20) NOT NULL DEFAULT '', `velicina` int(11) NOT NULL DEFAULT '0', `meta` varchar(200) NOT NULL DEFAULT '', `preuziman` int(11) NOT NULL DEFAULT '0', `lang` varchar(30) NOT NULL DEFAULT '', PRIMARY KEY (`id`), KEY `subof` (`subof`), KEY `lang` (`lang`)) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='tabela svih dokumenata';

Tabela “cms_docs” sadrži informacije o svim dokumentima koji su uneseni unutar CMS-a. Unutar svojih polja čuva sljedeće informacije:

๏ id - jedinstveni identi%kator polja na osnovu kojeg se putem MD5 algoritma kreira ime fajla koji se čuva na samom fajl sistemu u folderu “docs/”;

๏ subof - sadrži vrijednost polja “pointer” iz prethodno opisane tabele i služi za kategorisanje dokumenata;

๏ naziv - sadrži naziv dokumenta na odgovarajućoj jezičkoj verziji i ovaj naziv se koristi pri generisanju imena fajla prilikom preuzimanja fajla od strane sistema;

๏ ext - sadrži troslovnu ili četveroslovnu informaciju o ekstenziji fajla;

๏ velicina - sadrži informaciju o veličini fajla izraženu u bajtima;

๏ meta - polje koje ima informaciju o meta-podacima tj. o meta headeru fajla koji će se koristiti prilikom isporuke fajla od strane servera prije datastreem-a;

๏ preuziman - brojčana informacija o broju preuzimanja fajla sa servera;

๏ lang - informacija o jezičkoj verziji na koju se odnosi sam fajl;

id subof naziv ext velicina meta preuziman lang

2 1 Uvod u sistem analizu doc 12332 application/doc 56 latn

3 1 Knjiga standarda pdf 8639 application/pdf 77 latn

5 4 Bilans stanja xls 7745 application/xls 84 latn

6 4 Cooperation agreement pdf 12988 application/pdf 23 eng

Duško Angirević: Analiza G:Max CMS-a

24.

Page 30: Analiza G:Max CMS-a

Često postavljana pitanja (FAQ)

Sistem za rad sa često postavljenim pitanjima se takođe zasniva na dvije tabele: glavnom s listom pitanja i odgovora, te pomoćnom koja sadrži listu kategorija. Često postavljana pitanja imaju osobinu kao i dokumenti, a to je da su nezavisni od jezičke verzije i da ne moraju biti “simetrična” tj. pitanja s jedne verzije ne moraju odgovarati pitanjima na drugoj.

Za upravljanje sadržajem u FAQ podsistemu koristi se panel “FAQ”.

cms_faq_kategorije

CREATE TABLE `cms_faq_kategorije` ( `id` smallint(11) NOT NULL AUTO_INCREMENT, `pointer` smallint(11) DEFAULT NULL, `lang` varchar(20) COLLATE utf8_bin DEFAULT NULL, `ime` varchar(250) COLLATE utf8_bin DEFAULT NULL, PRIMARY KEY (`id`), KEY `pointer` (`pointer`), KEY `lang` (`lang`)) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

Ova tabela je neophodna ukoliko imamo potrebu da često postavljana pitanja budu razvrstana po kategorijama, što je u praksi i najčešći slučaj. Ova tabela se sastoji od sljedećih polja:

๏ id - jedinstveni identi%kator;

๏ pointer - pokazivač na kategoriju, a nastaje tako što zauzima vrijednost prvog slobodnog “id”-a u tabeli;

๏ lang - zajedno s poljem “pointer” čini jedinstveni složeni ključ na osnovu jezičke verzije unutar ovog polja i pokazivača unutar prethodno opisanog;

๏ ime - sadrži konkretno ime kategorije;

id pointer lang ime

24 22 cyrl Честа питања за обуке

23 22 latn Česta pitanja za obuke

19 18 latn Česta pitanja za stručni ispit

20 18 cyrl Честа питања за стручни испит

21 18 eng Česta pitanja za stručni ispit

25 22 eng Česta pitanja za obuke

Duško Angirević: Analiza G:Max CMS-a

25.

Page 31: Analiza G:Max CMS-a

cms_faq

CREATE TABLE `cms_faq` ( `id` int(11) NOT NULL AUTO_INCREMENT, `subof` int(11) NOT NULL DEFAULT '0', `pitanje` varchar(250) DEFAULT '-', `odgovor` text, `kreiran` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `lang` varchar(30) NOT NULL DEFAULT '', PRIMARY KEY (`id`), KEY `subof` (`subof`), KEY `lang` (`lang`)) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='tabela svih dokumenata';

Tabela “cms_faq” sadrži informacije o svim pitanjima i odgovorima koji su uneseni unutar CMS-a12. Unutar svojih polja čuva sljedeće informacije:

๏ id - jedinstveni identi%kator;

๏ subof - sadrži vrijednost polja “pointer” iz prethodno opisane tabele i služi za kategorisanje FAQ-a;

๏ pitanje - pitanje za određenu jezičku verziju ograničenog broja karaktera;

๏ odgovor - odgovor za određenu jezičku verziju;

๏ kreiran - datum i vrijeme kreiranja zapisa;

๏ velicina - sadrži informaciju o veličini fajla izraženu u bajtima;

๏ lang - informacija o jezičkoj verziji na koju se odnosi zapis;

id subof pitanje odgovor kreiran lang

25 18

Шта је потребно да бих пријавио полагање стручног испита?

Да бисте пријавили полагање стручног испита за рад у органима управе потребно је да поднесете захтјев за полагање стручног испита уз који ћете приложити доказ о стеченој стручној спреми и доказ о потребном радном искуству.<br />

2007-11-26 09:34:28

latn

26 18

Шта је потребно да бих пријавио полагање стручног испита?

Да бисте пријавили полагање стручног испита за рад у органима управе потребно је да поднесете захтјев за полагање стручног испита уз који ћете приложити доказ о стеченој стручној спреми и доказ о потребном радном искуству.<br />

2007-11-26 09:34:28

cyrl

27 18

Шта је потребно да бих пријавио полагање стручног испита?

Да бисте пријавили полагање стручног испита за рад у органима управе потребно је да поднесете захтјев за полагање стручног испита уз који ћете приложити доказ о стеченој стручној спреми и доказ о потребном радном искуству.<br />

2007-11-26 09:34:28

eng

Duško Angirević: Analiza G:Max CMS-a

26.12 Tabela sadrži podatke preuzete iz radne verzije projekta Agencije za državnu upravu RS;

Page 32: Analiza G:Max CMS-a

Galerije

Namjena podsistema galerije jeste da manipuliše sa podacima u obliku uređenih galerija fotogra%ja. Fotogra%je su organizovane u galerije tj. kategorije, dok je svakoj galeriji moguće dodavati proizvoljan broj fotogra%ja. Svaka fotogra%ja može imati sopstveni opis i povezana sa podsistemom “komentari” stvara se mogućnost ostavljanja impresija od strane korisnika CMS-a tj. posjetilaca sajta.

S obzirom da svaka fotogra%ja može imati sopstveni opis u zavisnosti od jezičke verzije, a da je podsistem galerija “simetričan”13 potrebna je još jedna tabela za skladištenje podataka.

cms_galerija_kategorije

CREATE TABLE `cms_galerija_kategorije` ( `id` smallint(11) NOT NULL AUTO_INCREMENT, `pointer` smallint(11) DEFAULT NULL, `lang` varchar(20) COLLATE utf8_bin DEFAULT NULL, `ime` varchar(250) COLLATE utf8_bin DEFAULT NULL, `kreiran` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `objavljen` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `autor` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`id`), KEY `pointer` (`pointer`), KEY `lang` (`lang`), KEY `autor` (`autor`)) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

Za razliku od tabele “cms_faq_kategorije”, ova tabela ima par dodatnih polja za kojima se naknadno ukazala potreba kako bi se moglo odrediti ko je “vlasnik” galerije. Ideja je bila da se u jednoj od nadogradnji sistema svim korisnicima omogući kreiranje sopstvenih galerija, tako da bi se korisničke galerije nalazile na korisničkim pro%lima, dok bi se galerije kreirane od strane administratora i naprednih korisnika mogle pojavljivati u zvaničnim sekcijama sajta.

๏ id - jedinstveni identi%kator;

๏ pointer - pokazivač na kategoriju, a nastaje tako što zauzima vrijednost prvog slobodnog “id”-a u tabeli;

๏ lang - zajedno s poljem “pointer” čini jedinstveni složeni ključ na osnovu jezičke verzije unutar ovog polja i pokazivača unutar prethodno opisanog;

๏ ime - sadrži konkretno ime kategorije;

๏ kreiran - datum i vrijeme kreiranja zapisa;

๏ objavljen - je polje koje sadrži informaciju o datumu i vremenu objave galerije; ovo polje ujedno omogućava i osobinu tempirane objave sadržaja u zavisnosti od odabranog modula; vrijednost postavljena na “0000-00-00 00:00:00” označava da se to polje u trenutnoj verziji CMS-a ne koristi, ali da je tokom razvoja planirano da se u određenom periodu počne koristiti;

๏ autor - sadrži “id” korisnika koji je kreirao galeriju tj. kategoriju;

Duško Angirević: Analiza G:Max CMS-a

27.13 Simetrija u ovom slučaju označava isti sadržaj na svim jezičkim verzijama;

Page 33: Analiza G:Max CMS-a

id pointer lang ime kreiran objavljen autor

1 1 latn Promocija neka 0000-00-00 00:00:00 0000-00-00 00:00:00 0

2 1 eng Promocija neka 0000-00-00 00:00:00 0000-00-00 00:00:00 0

cms_galerija_ime

CREATE TABLE `cms_galerija_ime` ( `id` smallint(11) NOT NULL AUTO_INCREMENT, `pointer` smallint(11) DEFAULT NULL, `lang` varchar(20) COLLATE utf8_bin DEFAULT NULL, `ime` text COLLATE utf8_bin, PRIMARY KEY (`id`), KEY `pointer` (`pointer`), KEY `lang` (`lang`)) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

Kao što je opisano u prethodnim sličnim tabelama i ovdje vrijedi:

๏ id - jedinstveni identi%kator;

๏ pointer - pokazivač na “id” polje zapisa o fotogra%ji za koje se čuva informacija;

๏ lang - zajedno s poljem “pointer” čini jedinstveni složeni ključ na osnovu jezičke verzije unutar ovog polja i pokazivača unutar prethodno opisanog;

๏ ime - sadrži opis fotogra%je za datu jezičku verziju;

cms_galerija

CREATE TABLE `cms_galerija` ( `id` smallint(11) NOT NULL AUTO_INCREMENT, `kategorija` smallint(11) DEFAULT NULL, `autor` smallint(11) DEFAULT NULL, `kreiran` datetime DEFAULT '0000-00-00 00:00:00', `objavljen` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `glasovi` decimal(10,0) NOT NULL DEFAULT '0', PRIMARY KEY (`id`)) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

Tabela “cms_galerija” sadrži informacije o svim fotogra%jama koje su unešene unutar CMS-a kroz sistem galerija:

๏ id - jedinstveni identi%kator polja na osnovu kojeg se kreira ime fajla koji se čuva na samom fajl sistemu; fotogra%je u “jpg” i “jpeg” 2000 formatu se čuvaju na fajl sistemu u folderu “gallery/yyyy/mm/” u verzijama: id.jpg, id-mala.jpg, id-srednja.jpg i id-velika.jpg; širina fotogra%ja je de%nisana unutar CMS-a i promjenjiva je, a PHP funkcije putem GD biblioteke vrše resampling i čuvanje fotogra%je u određenom formatu pri čemu fajl id.jpg predstavlja orginalnu fotogra%ju koja se može kasnije iskoristiti za generisanje verzija u drugim dimenzijama;

๏ kategorija - sadrži vrijednost polja “pointer” iz prethodno opisane tabele “cms_galerija_kategorije” i služi za kategorisanje fotogra%ja;

๏ autor - sadrži informaciju vlasnika fotogra%je tj. ko ju je postavio u sistem;

๏ objavljen - je polje koje sadrži informaciju o datumu i vremenu objave fotogra%je; ovo polje ujedno omogućava i osobinu tempirane objave sadržaja u zavisnosti od odabranog modula;

Duško Angirević: Analiza G:Max CMS-a

28.

Page 34: Analiza G:Max CMS-a

๏ glasovi - polje predviđeno da korisnici glasaju za fotogra%ju ocjenom od 1 do 10, pri čemu se ta komponenta nije razvila, jer kod korisnika nije izazvala poseban interes; u sklopu nadogradnje planirano je izbacivanje ovog polja i kreiranje uniformnog “rating” sistema koji bi se primjenio i na svim drugim sadržajima (ankete, tekstovi, vijesti...).

id kategorija autor kreiran objavljen glasovi

1181 4 981 2010-08-23 11:47:44 0000-00-00 00:00:00 0

1180 4 831 2010-08-22 01:32:16 0000-00-00 00:00:00 0

1179 4 831 2010-08-22 01:28:13 2010-08-22 01:32:16 0

1178 200 831 2010-08-21 22:19:42 0000-00-00 00:00:00 0

1177 200 831 2010-08-21 22:17:06 2010-08-21 22:19:42 0

Komentari

Podsistem “komentari” je zamišljen kao servis koji se poziva isključivo u sastavu drugih podsistema. U okviru podsistema galerija omogućava da korisnici ostavljaju komentare na fotogra%je, u okviru podsistema vijesti omogućava komentarisanje vijesti i razvoj diskusije između učesnika. Jedna od najkompleksnijih primjena ovog dijela sistema jeste unutar podsistema “forum” koji predstavlja komentar na komentare komentara.

Forum je zasnovan tako što se glavne teme poput “Automobilizam”, “Sport”, “Politika” i druge postavljaju kao komentari s određenom grupom, nakon čega se glavne teme unutar tih oblasti izvode kao komentari na njihova “id” polja, nakon čega kompletna diskusija unutar tema se odvija kao komentari na “id” polja teme. Ovakav način “ugnježdenog” tipa podataka se može vaditi iz baze samo rekurzijama što može da znatno opterećuje samu bazu podataka. Usljed navedenog, ova tabela ima najviše indeksa i ključeva (“id”, “lang”, “group”, “pointer”, “autor” i “datumkreiranja”) kako bi se njen rad maksimalno ubrzao.

cms_komentari

CREATE TABLE `cms_komentari` ( `id` int(11) NOT NULL AUTO_INCREMENT, `pointer` int(10) DEFAULT '0', `grupa` int(10) DEFAULT '1', `lang` varchar(5) COLLATE utf8_bin NOT NULL DEFAULT 'latn', `autor` smallint(5) unsigned DEFAULT '0', `naslov` varchar(250) COLLATE utf8_bin DEFAULT NULL, `text` text COLLATE utf8_bin, `kreiran` datetime DEFAULT NULL, PRIMARY KEY (`id`), KEY `lang` (`lang`), KEY `group` (`grupa`), KEY `pointer` (`pointer`), KEY `autor` (`autor`), KEY `datumkreiranja` (`kreiran`)) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

Duško Angirević: Analiza G:Max CMS-a

29.

Page 35: Analiza G:Max CMS-a

Tabela “cms_kometari”14 je zasnovana na sljedećim poljima:

๏ id - jedinstveni identi%kator;

๏ pointer - pokazivač na vrijednost “id” polja odgovarajućeg sadržaja: fotogra%je, vijesti ili samog komentara što je slučaj kod foruma;

๏ grupa - bliže opisuje sistem na koji se odnosi komentar u zavisnosti od vrijednosti: “1” - za komentare na vijesti, “2” - za komentare na fotogra%jama, “146” - za osnovnu kategoriju u forumima;

๏ lang - de%niše na koju jezičku verziju se zapis odnosi;

๏ autor - vrijednost polja “id” iz tabele s korisnicima koja govori ko je tvorac zapisa;

๏ naslov - naslov komentara ukoliko se radi o forumima i njihovim kategorijama i glavnim temama diskusije inače je vrijednost “NULL”;

๏ text - tekst komentara;

๏ kreiran - datum i vrijeme kreiranja zapisa;

id pointer grupa lang autor naslov text kreiran

19 1 146 latn 4Istočno Sarajevo

Regionalna tema o gradu Istočno Sarajevo i uopšteno sarajevsko-romanijskoj regiji...

2009-12-30 09:39:21

21 16 146 latn 1 InfoSvaka Vaša kritika, primjedba ili sugestija koju nam uputite može nam pomoći da u budućnosti budemo još bolji.

2009-12-31 15:51:00

22 498 2 latn 1 NULLOd sada Vašu Televiziju Istočno Sarajevo možete pratiti putem Interneta! Za gledanje programa potrebno je da u Winamp...

2009-12-31 15:51:00

23 35257 1 latn 1 NULLBudite i ove noći uz Vašu RTV Istočno Sarajevo

2009-12-31 15:51:00

24 35266 1 latn 1 NULLovu i jos dosta čestitki pogledajte i u vecerašnjem "Novogodišnjem klubu" od 20h

2009-12-31 15:52:24

Logovi

Tabela “cms_logs” ima ulogu da vodi evidenciju o promjenama na sistemu: evidencija dodavanja, izmjene i brisanja sadržaja bilo kog oblika, prati šta korisnici pregledaju od sadržaja kako bi se u budućnosti korisnicima mogao nuditi sadržaj koji je više u skladu s njihovim navikama.

Za svaku interakciju s sistemom, moguće je izazvati nekoliko zapisa unutar ove tabele. Ona unutar sebe za svaki zapis sadrži sljedeće informacije: koji je korisnik izazvao akciju, unutar kog sistema, sa kog hosta i s koje IP adrese. Takođe se prate vremenske odrednice i slično.

Tabela “cms_logs” sadrži i jedan bitan zapis koji se nalazi u polju “sistem” pod i ima vrijednost “newsletter”. Ovdje se radi o datumu kad je posljednji put generisan i poslan newsletter korisnicima sistema.

Duško Angirević: Analiza G:Max CMS-a

30.14 Tabela sadrži podatke preuzete iz radne verzije projekta Radio-televizije Istočno Sarajevo;

Page 36: Analiza G:Max CMS-a

cms_logs

CREATE TABLE `cms_logs` ( `korisnik` varchar(250) COLLATE utf8_bin DEFAULT '', `sistem` varchar(250) COLLATE utf8_bin DEFAULT '', `host` varchar(250) COLLATE utf8_bin NOT NULL DEFAULT '', `ip` varchar(200) COLLATE utf8_bin DEFAULT '', `datum` datetime DEFAULT '0000-00-00 00:00:00', `opis` varchar(250) COLLATE utf8_bin NOT NULL DEFAULT '', `id` int(11) NOT NULL AUTO_INCREMENT, PRIMARY KEY (`id`), KEY `new_index` (`korisnik`,`datum`), KEY `indexSistem` (`sistem`)) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

Kao što je rečeno, ova tabela sadrži informacije o interakcijama korisnika, sistema kao i korisnika i sistema. Ona omogućava centralizovani monitoring akcija koje se izvršavaju nad podacima i predstavlja jednu od sadržajno najobimnijih tabela.

Polja koja opisuju zapise15 su:

๏ korisnik - “id” korisnika iz pripadajuće baze;

๏ sistem - tekstualni opis sistema na koji se odnosi zapis;

๏ host - host sa kog je izazvana promjena;

๏ ip - IP adresa sa koje je izazvana promjena;

๏ datum - datum i vrijeme kad je izmjena izazvana;

๏ opis - polje koje može sadržavati neku dodatnu informaciju npr. “id” vijesti koja je pročitana, odgovor koji je dat unutar ankete i sl.;

๏ id - jedinstveni identi%kator zapisa;

korisnik sistem host ip datum opis id

news_read crawl-66-249-67-106.googlebot.com 66.249.67.1062010-08-23

10:36:0743624 3

crawler crawl-66-249-67-106.googlebot.com 66.249.67.1062010-08-23

10:36:0743624 4

709 news_read 217.199.131.66217.199.131.6

62010-08-23

10:36:0646732 5

crawler crawl-66-249-67-27.googlebot.com 66.249.67.272010-08-23

10:36:1343286 7

newsletter2010-08-21

00:00:008

Duško Angirević: Analiza G:Max CMS-a

31.15 Tabela sadrži podatke preuzete iz baze portala magazina Intermezzo;

Page 37: Analiza G:Max CMS-a

Rad s tekstom

Rad s tekstom jeste dio sistema koji je namijenjen za rad sa “statičnim” sadržajem. S obzirom da se radi o CMS-u, ne postoji statični sadržaj u obliku fajla kao kod uobičajenih statičnih web stranica kod kojih je sadržaj pohranjen u HTML dokumentu na fajl sistemu. Ovdje se pojam “statični” odnosi na to da sadržaj iz baze samo bude pozvan i prezentovan, te da se od njega ne očekuju nikakve transformacije u tom procesu (vremenski tempirani sadržaj, pravljenje izvoda i sl.).

cms_text

CREATE TABLE `cms_text` ( `id` int(11) NOT NULL AUTO_INCREMENT, `pointer` int(11) NOT NULL DEFAULT '0', `lang` varchar(8) NOT NULL DEFAULT '', `naslov` varchar(255) DEFAULT NULL, `text` text, `datum` datetime DEFAULT NULL, KEY `id` (`id`)) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

Tabela “cms_text” je namijenjena za čuvanje statičnih sadržaja, u zavisnosti od jezičke verzije, unutar CMS-a. Sadržaj preuzet iz baze16 po određenom ključu se isporučuje u svom izvornom obliku korisnicima, pri čemu se podrazumijeva da je sadržaj spremljen u TXT/HTML obliku. Sama tabela se sastoji iz sljedećih polja:

๏ id - jedinstveni identi%kator zapisa;

๏ pointer - pokazivač na polje “data” iz tabele “cms_moduli”;

๏ lang - de%niše na koju jezičku verziju se zapis odnosi;

๏ naslov - sadrži naslov statičnog sadržaja za određenu jezičku verziju;

๏ text - sadrži statični sadržaj za određenu jezičku verziju;

๏ datum - datum i vrijeme posljednje izmjene;

id pointer lang naslov text datum

3 1 latnWeb hosting

<p><img src="/images/promo/hosting.jpg" alt="" width="94" height="60" align="left" /></p><p><a href="#">569 KM</a></p><hr /><p>Godinama smo koristili složenu tehnologiju i pojednostavili je za svakodnevne potrebe...</p>

2010-05-20 16:19:50

4 2 latn BlicTv

<p><img src="/images/promo/tv.jpg" alt="" width="94" height="60" align="left" /></p><p><a href="#">35 KM</a></p><hr /><p>U Tv svijetu svi danas govore o HDTV televiziji visoke rezolucije. Vrlo često se pojam HDTV i DTV...</p>

2010-05-04 15:04:45

Duško Angirević: Analiza G:Max CMS-a

32.16 Tabela sadrži podatke preuzete iz baze korporativnog portala Blic.net;

Page 38: Analiza G:Max CMS-a

Vijesti

Vijesti su jedan od najranije razvijenih podsistema unutar CMS-a. Na samom početku je postojala potreba da se određeni sadržaj u obliku vijesti pojavi na stranici u zadano vrijeme. To je bilo i prvo razvijanje tempiranog sadržaja u ovom obliku. Prvobitna ideja je bila da se naslov i tekst vijesti pohrane u bazu, te da se potom na osnovu datuma objave povlače na stranicu.

Prvi problem je nastao kod skraćenih pregleda vijesti gdje je prilikom prikaza teksta, sistem automatski prekidao vijest nakon određenog broja karaktera (npr. 400 karaktera), te se nerijetko dešavalo da tekst bude prelomljen bez nekog sintaksnog smisla. Nakon toga su uslijedili dodatni zahtjevi: prateća fotogra%ja, kategorisanje sadržaja, video vijesti i sl.

Samo upravljanje podsistemom će biti objašnjeno u okviru poglavlja koje obrađuje panel “Vijesti”.

cms_vijesti_kategorije

CREATE TABLE `cms_vijesti_kategorije` ( `id` int(11) NOT NULL AUTO_INCREMENT, `pointer` int(11) DEFAULT NULL, `lang` varchar(20) COLLATE utf8_bin DEFAULT NULL, `ime` varchar(250) COLLATE utf8_bin DEFAULT NULL, PRIMARY KEY (`id`), KEY `pointer` (`pointer`), KEY `lang` (`lang`)) ENGINE=MyISAM AUTO_INCREMENT=174 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

Tabela “cms_vijesti_kategorije” se sastoji iz sljedećih kolona koje opisuju svaki pojedini zapis17:

๏ id - jedinstveni identi%kator;

๏ pointer - pokazivač na kategoriju, a nastaje tako što zauzima vrijednost prvog slobodnog “id”-a u tabeli;

๏ lang - zajedno s poljem “pointer” čini jedinstveni složeni ključ na osnovu jezičke verzije unutar ovog polja i pokazivača prethodno opisanog;

๏ ime - sadrži konkretno ime kategorije;

id pointer lang ime

115 1 cyrl Вијести

116 2 cyrl Политика

117 3 cyrl Свијет

118 0 cyrl Блог

119 5 cyrl Тема недеље

122 8 cyrl Култура

Duško Angirević: Analiza G:Max CMS-a

33.17 Tabela sadrži podatke preuzete iz radne verzije projekta Radio-televizije Istočno Sarajevo;

Page 39: Analiza G:Max CMS-a

cms_vijesti

CREATE TABLE `cms_vijesti` ( `id` int(11) NOT NULL AUTO_INCREMENT, `prikaz` int(1) DEFAULT '0', `visited` int(15) DEFAULT '0', `kategorija` int(2) DEFAULT '0', `lang` varchar(10) COLLATE utf8_bin NOT NULL DEFAULT 'latn', `autor` smallint(5) unsigned DEFAULT '0', `naslov` varchar(250) COLLATE utf8_bin DEFAULT NULL, `text` text COLLATE utf8_bin, `kreiran` datetime DEFAULT NULL, `objavljen` datetime DEFAULT NULL, `video` varchar(200) COLLATE utf8_bin DEFAULT '', PRIMARY KEY (`id`), KEY `lang` (`lang`), KEY `kategorija` (`kategorija`), KEY `prikaz` (`prikaz`), KEY `video` (`video`)) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

Tabela “cms_vijesti” unutar sebe čuva sve informacije u obliku vijesti koje su unesene u sistem. Tabela pokazuje odlične performanse čak i sa preko 250 000 zapisa.

Za opis sadržaja zadužena su sljedeća polja:

๏ id - jedinstveni identi%kator polja na osnovu kojeg se kreira ime fajla koji se čuva na samom fajl sistemu; fotogra%je u “jpg” i “jpeg” 2000 formatu se čuvaju na fajl sistemu u folderu “news/yyyy/mm/” u verzijama: id.jpg, id-mala.jpg, id-srednja.jpg i id-velika.jpg; širina fotogra%ja je de%nisana unutar CMS-a i promjenjiva je, a PHP funkcije putem GD biblioteke vrše resampling i čuvanje fotogra%je u određenom formatu pri čemu fajl id.jpg predstavlja orginalnu fotogra%ju koja se može kasnije iskoristiti za generisanje verzija u drugim dimenzijama;

๏ prikaz - u zavisnosti od vrijednosti de%niše se prikaz vijesti: 0 - draft ili nacrtna verzija koja se ne objavljuje na sajtu;1 - obična vijest odobrena za objavu nakon datuma objavljivanja;2 - aktuelna vijest, obična vijest koja se prikazuje i unutar modula za aktuelne vijesti;

๏ visited - sadrži brojčanu vrijednost koliko puta je vijest prikazana na sistemu;

๏ kategorija - sadrži vrijednost polja “pointer” iz tabele kategorija;

๏ lang - određuje jezičku verziju sadržaja;

๏ autor - sadrži “id” korisnika koji je kreirao zapis tj. vijest;

๏ naslov - sadrži naslov vijesti;

๏ text - sadrži sadržaj vijesti;

๏ kreiran - datum i vrijeme kreiranja zapisa;

๏ objavljen - datum i vrijeme objave vijesti, koristi se za tempiranje sadržaja;

๏ video - u slučaju video vijesti polje sadrži “id” video fajla sa servisa “YouTube” ili “Vimeo”;

Duško Angirević: Analiza G:Max CMS-a

34.

Page 40: Analiza G:Max CMS-a

5. Metodologija radaNakon same analize baze podataka i opisa polja pojedinih tabela unutar nje, pojasnićemo na koji način PHP inicijalizuje sam CMS i na koji način počinje razmjena podataka unutar samog CMS-a. Slijedi kratki pregled strukture fajlova radi lakšeg pojašnjenja redosljeda poziva.

Slijedi opis pojedinih foldera i pripadajućih fajlova kako bi se pojasnila metodologija rada.

www/

www/www/www/

activate.php Fajl koji preuzima zahtjeve za aktivacijom korisničkih naloga nakon registracije

admin Folder koji sadrži administrativne panele

cro Virtuelni link sa određene jezičke verzije ka data/index.php fajlu

cyrl Virtuelni link sa određene jezičke verzije ka data/index.php fajlu

data Jezgro CMS-a

eng Virtuelni link sa određene jezičke verzije ka data/index.php fajlu

favicon.ico Ikonica koja se prikazuje unutar web browsera u address baru

&le.phpFajl zadužen za isporuku dokumenata pohranjenih u CMS-u na osnovu “id”-a dokumenta

images Folder sa sadržajima koji se ne pohranjuju unutar baze podataka

index.phpVrši operacije vezane za logovanje, detekciju glavnog jezika i preusmjeravanje korisnika

latn Virtuelni link sa određene jezičke verzije ka data/index.php fajlu

mailer.php Obrada kontakt formi, preusmjerava POST i GET zahtjeve iz formi na e-mail

pages Folder sa sadržajem zahtijevanim od MochaUI biblioteke

plugins Folder sa sadržajem zahtijevanim od MochaUI biblioteke

rss.php Obavlja generisanje vijesti u RSS formatu

scripts Folder sa sadržajem zahtijevanim od MochaUI biblioteke

themes Folder sa sadržajem zahtijevanim od MochaUI biblioteke

Duško Angirević: Analiza G:Max CMS-a

35.

Page 41: Analiza G:Max CMS-a

www/admin/

www/admin/www/admin/www/admin/

cro Folder sa simboličnim linkovima (->) ka fajlovima unutar “data” foldera;

cyrl Folder sa simboličnim linkovima (->) ka fajlovima unutar “data” foldera;

data Glavni folder koji sadrži “php” fajlove za administrativne panele;

eng Folder sa simboličnim linkovima (->) ka fajlovima unutar “data” foldera;

latn Folder sa simboličnim linkovima (->) ka fajlovima unutar “data” foldera;

www/admin/data/

Sadrži glavne fajlove za upravljanje sadržajem kroz panele. Fajlovi su uglavnom zaduženi za generisanje interfejsa, obradu korisničkih unosa i instrukcija.

www/admin/www/admin/www/admin/

anketa.php Stvara opise interfejsa za MochaUI biblioteku i upravlja panelom “Ankete”;

docs.php Stvara opise interfejsa za MochaUI biblioteku i upravlja panelom “Dokumenti”;

faq.php Stvara opise interfejsa za MochaUI biblioteku i upravlja panelom “FAQ”;

galerije.php Stvara opise interfejsa za MochaUI biblioteku i upravlja panelom “Galerije”;

header.php Fajl poziva orginalni “header.php” uz par modi&kacija za podizanje sigurnosti;

index.php Prazan fajl zbog zaštite od izlistavanja ovog foldera u slučaju greške na serveru;

korisnici.php Stvara opise interfejsa za MochaUI biblioteku i upravlja panelom “Korisnici”;

modul.php Stvara opise interfejsa za MochaUI biblioteku i upravlja panelom “Moduli”;

rn.php Stvara opise interfejsa za MochaUI biblioteku i upravlja panelom “Radnih naloga”;

struktura.php Stvara opise interfejsa za MochaUI biblioteku i upravlja panelom “Strukture”;

text.php Stvara opise interfejsa za MochaUI biblioteku i upravlja panelom “TXT/HTML”;

vijesti.php Stvara opise interfejsa za MochaUI biblioteku i upravlja panelom “Vijesti”;

zadatak.php Stvara opise interfejsa za MochaUI biblioteku i upravlja panelom “Radni zadaci”;

Duško Angirević: Analiza G:Max CMS-a

36.

Page 42: Analiza G:Max CMS-a

www/images/

Hijerarhija foldera koji su namijenjeni za čuvanje podataka koji se ne spremaju u samu bazu podataka: avatari, dokumenti, fotogra%je i sl.

www/images/www/images/www/images/

avatars Folder za arhiviranje korisničkih fotogra&ja poznatijih pod nazivom avatari;

docs Folder za pohranjivanje dokumenata sa MD5 šifrovanim nazivom fajla;

gallery Folder za pohranu fotogra&ja iz galerija. Fotogra&je se raspoređuju u podfoldere;

emotes Folder sa emotikonima koji se koriste u okviru komentara i foruma;

headerFolder za slike u zaglavljima koje sistem automatski postavlja na stranicu na osnovu imena fajla koje je isto kao ime stranice bez naših slova sa znakom “_” umjesto razmaka.

icons Folder za pohranu ikona koje se koriste na sistemu;

logo.gif Logotip sajta bez obzira gdje je pozicioniran, kako bi se mogao slati uz RSS i Mobile;

mcith Folder za manje fotogra&je (thumbnails) koje stvara image manager;

news Folder za pohranu fotogra&ja uz vijesti. Fotogra&je se raspoređuju u podfoldere;

uploader Pomoćni skriptovi za upload i obradu fotogra&ja;

www/data/

Unutar ovog foldera se nalazi glavni dio CMS-a koji generiše sadržaj korisnicima. Unutar njega se nalaze i kon%guracioni fajlovi, fajl sa osnovnim funkcijama sistema i kompletan segment koji radi s modulima.

www/data/www/data/www/data/

ajax.phpFajl koji ima ulogu da opslužuje klijenta sa “sirovim” podacima u slučaju AJAX poziva koji se mogu javljati u pojedinim dijelovima sistema (update komentara, brisanje komentara, dostava novih vijesti bez refresh-a stranice i sl.);

class.phpmailer.php E-mail klasa za slanje e-mail obavještenja korisnicima;

class.smtp.php E-mail klasa za slanje e-mail obavještenja korisnicima;

conf.php Ko&guracioni fajl CMS-a;

export.php Omogućava eksport određenih podataka (tabele, zapisi i sl.).;

Duško Angirević: Analiza G:Max CMS-a

37.

Page 43: Analiza G:Max CMS-a

www/data/www/data/www/data/

footer.php Fajl koji se poziva u “footer” dio sajta;

function.php

Predstavlja “core” sistema. Sastoji se iz niza funkcija višeg i nižeg nivoa koje omogućavaju rad modulima, upravljanje bazom i sl. Funkcije koje se nalaze unutar ovog fajla se pozivaju iz svakog segmenta CMS-a tako da nisu mogle biti odvojene u manje logičke cjeline.

graf.php Fajl za generisanje gra&kona pomoću PHP GD biblioteke.

header-top.php Fajl koji se poziva u “header” dio sajta;

header.phpPreuzima imena stranica za meta podatke i postavlja headere, kontroliše sesiju i brine da se podaci o korisniku i njegova prava pristupa preuzimaju i prate pri svakoj interakciji sa sistemom.

index.phpFajl koji isporučuje cjelokupan HTML sadržaj korisniku po pravilima de&nisanim unutar CMS-a. Ovaj fajl pozivom potebnih funkcija i modula stvara sadržaj na osnovu pravila prede&nisanih u sistemu.

localization Sadrži fajlove za lokalizaciju interfejsa u zavisnosti od jezičke verzije.

mobile.php

Ukoliko se unutar “index.php” stranice detektuje da se posjeta sajta vrši sa nekim od nestandardnih preglednika Web-a (mobilni telefoni, smartphone, igraće konzole...), ovaj fajl preuzima na sebe isporuku HTML sadržaja pri čemu prilagođava sadržaj ovim platformama.

moduli

Širi sposobnosti CMS-a tako što se u ovom folderu nalaze fajlovi koji obrađuju određeni tip sadržaja npr. “nav.php” je zadužen za cjelokupno generisanje podataka na osnovu podataka iz tabela u bazi koje su namijenjene za segment “struktura”. Podaci o navigaciji mogu biti predstavljeni kao putanja, lista stranica u istoj grupi, kompletna navigacija, mapa sajta ili padajući meni.

Duško Angirević: Analiza G:Max CMS-a

38.

Page 44: Analiza G:Max CMS-a

6. Paneli za upravljanje sadržajemPrilikom rada s panelima, bitno je napomenuti da su svi paneli zasnovani na korisničkom interfejsu i principima na kojima funkcionišu svi moderni operativni sistemi sa gra%čkim korisničkim interfejsom18.

Prikaz radne površine za administratore na portalu Intermezzo.ba

Svaki panel zapravo podsjeća na prozor operativnog sistema sa pratećom ikonicom prozora, naslovnom trakom, toolbar trakama i opcijama karakterističnim za prozore:

๏ (−) - opcija za smanjivanje prozora u traku zadataka (minimaze);

๏ (+) - opcija za povećavanje prozora preko cijelog radnog prostora (maximiza);

๏ (×) - opcija za zatvaranje prozora (close);

Traka zadataka (task bar) se pojavljuje nakon logovanja kod korisnika s višim pravima pristupa i nalazi se u podnožju radne površine.

Kao što vidite, kompletan interfejs je zasnovan na opštepoznatim konceptima kako bi korisnici već intuitivno mogli da rade sa CMS-om. Sve opcije na koje ste navikli unutar operativnog sistema se mogu pronaći i unutar ove web aplikacije: minimizacija, maksimizacija prozora i njihovo zatvaranje, rad s paletom zadataka kako bi se omogućio rad s više procesa istovremeno, rad s tabovima radi grupisanja srodnih opcija i sl.

Duško Angirević: Analiza G:Max CMS-a

39.18 GUI - Graphical User Interface;

Page 45: Analiza G:Max CMS-a

Struktura

Namjena ovog panela jeste organizacija sadržaja na sajtu i on predstavlja prvi korak u uređivanju sadržaja. Sav sadržaj na sajtu je raspoređen kroz set stranica i podstranica, a ovaj panel je namijenjen za uređivanje upravo njih - veza i hijerarhija među stranicama.

Pozivanje panela se vrši klikom na dugme “Struktura” unutar korisničkog boxa nakon logovanja u sistem. Samo administratori sistema imaju mogućnost pokretanja ovog panela.

Panel “Struktura”

Dodavanje novih stranica

Dodavanje novih stranica u strukturu vrši se jednostavnim klikom na zeleni znak (+) koji se nalazi u desnoj polovini radnog ekrana. Novokreirana stranica će se pojaviti pod imenom “Nova stranica” na listi stranica unutar strukture s lijeve strane19.

Uređivanje svojstava

Klikom na određenu stranicu u strukturi sa lijeve strane, na desnoj strani će se pojaviti njena svojstva. Naziv stranice je potrebno unijeti za svaku jezičku verziju (u slučaju prikazanom na slici unosite naziv za latiničnu i englesku verziju).

Roditeljska kategorija (ili nad-kategorija) govori o tome u koji set podstranica spada vaša novokreirana stranica. Ukoliko želite da se prikazuje u glavnom nivou - iz padajuće liste

Duško Angirević: Analiza G:Max CMS-a

40.

19 Ime novokreirane stranice zavisi od jezičke verzije na kojoj se korisnik nalazi. U ovom primjeru se podrazumijeva da se nalazite na latiničnoj verziji sajta na nekom od lokalnih jezika;

Page 46: Analiza G:Max CMS-a

odaberite "Početna stranica", a ako želite da se prikazuje kao podkategorija stranice "Kontakt" iz padajuće liste izaberite opciju "Kontakt".

Nakon unosa imena stranice i određivanja roditeljske kategorije, potrebno je podesiti i prikaz stranice tj. ko vidi stranicu. Sistem podržava različit prikaz stranice u odnosu na tip korisnika što omogućava da pojedine grupe korisnika vide određene stranica - dok to drugi ne mogu. Ova opcija je korisna u mnogim situacijama, poput one kad želite neregistrovanim korisnicima omogućiti da vide promo stranicu sa beni%cijama za registrovane korisnike, koju oni koji su već registrovani ne trebaju da vide.

Opcije za prikaz su sljedeće:

๏ nevidljivo svim korisnicima - sadržaj dostupan samo administratorima;

๏ svi korisnici - sadržaj dostupan svim korisnicima;

๏ registrovani korisnici - sadržaj dostupan samo registrovanim korisnicima;

๏ neregistrovani korisnici - sadržaj dostupan samo neregistrovanim korisnicima;

Opciju za eksterne linkove koristite ukoliko želite da korisnika prilikom klika na element strukture preusmjerite na neku drugu adresu. Ova opcija se koristi za brzo preusmjeravanje korisnika i za linkovanje na druge srodne sadržaje.

Adresu u polje unosite u obliku http://www.neka-adresa.com/. Nakon podešavanja i unosa svih neophodnih podataka - kliknite na dugme Sačuvaj.

Dok vam roditeljska kategorija omogućava da stranicu pomjerate između različitih podstranica tj. vertikalno u hijerarhiji - dvije zelene strelice (↓ i ↑) postavljene iznad podataka o stranici vam omogućavaju da stranicu pomjerate horizontalno u hijerarhiji strukture.

Brisanje elementa iz strukture

Za brisanje stranice ili kompletnog seta podstranica, kliknite na željenu stranicu u strukturi s lijeve strane te nakon učitavanja novih podataka, kliknite na crveno dugme (-) koje se nalazi na desnoj strani iznad detalja vezanih za sam element. Ova opcija uklanja i sav sadržaj podelemenata u okviru obrisanog elementa, stoga koristite je oprezno.

Napomena: Ova opcija uklanja i sav sadržaj podelemenata u okviru obrisanog elementa stoga koristite je oprezno.

Duško Angirević: Analiza G:Max CMS-a

41.

Page 47: Analiza G:Max CMS-a

TXT/HTML

Ovaj administrativni panel se pokreće iz modula TXT-HTML i on predstavlja najjednostavniji panel na sistemu i sastoji se od samo dva polja: naslov i sadržaj.

Prikaz panela za unost teksta

Nakon što unesete podatke u ova dva polja, dovoljno je da kliknete na dugme “Sačuvaj” i sadržaj će biti unesen u sistem. Ukoliko želite da unesete sadržaj i na neku drugu jezičku verziju potrebno je da na sajtu izaberite željenu jezičku verziju te ponovite proces unosa sadržaja.

Sadržaj možete unositi koristeći se vizuelnim editorom (prikazan na slici) ili klikom na opciju "HTML" nakon čega se otvara prozor za uređivanje HTML koda.

Napomena: Ukoliko prenosite sadržaj iz Microsoft Word dokumenta, poželjno je da sadržaj umjesto ubacivanja putem naredbe “Paste” unesete klikom na alatku “Paste from Word”, a potom unutar nje izvršite naredbu “Paste” kako bi "očistili" sam HTML kod prilikom prenosa sadržaja.

Duško Angirević: Analiza G:Max CMS-a

42.

Page 48: Analiza G:Max CMS-a

Galerije

Pozivanje panela se vrši klikom na dugme “Galerije” unutar korisničkog box-a nakon logovanja u sistem. Administratori sistema i napredni korisnici imaju mogućnost pokretanja ovog panela.

Njegova uloga jeste jednostavno administriranje galerija fotogra%ja od strane korisnika. Same fotogra%je se raspoređuju unutar galerija, a rad s panelom je u potpunosti olakšan uz pomoć modernih tehnika poput AJAX20 i Flash Image Uploader21 -a.

Glavni prikaz panela “Galerije” pri otvaranju

Na slici je prikazan otvoren panel “Galerije” koji se sastoji iz liste galerija s njihovim imenom, opcijom za uklanjanje pojedine galerije, a unutar toolbar-a se nalaze opcija za dodavanje nove galerije, kao i opcija za povratak na listu galerija.

Dodavanje galerija

Dodavanje novih galerija se vrši klikom na alatku u toolbar-u koja na sebi ima ikonicu zelenog znaka plus (+), nakon čega se otvara dijalog prozor za unos imena nove galerije. Klikom na polje za potvrdu, nova galerija pod unesenim imenom će biti kreirana, a panel će biti osvježen s novim podacima.

Duško Angirević: Analiza G:Max CMS-a

43.

20 AJAX (Asynchronous JavaScript and XML) je grupa povezanih web development tehnika koja se koristi na client-side kako bi omogućila kreiranje interaktivnih web aplikacija.

21 Još jedna od web development tehnika koja je zasnovana na Adobe Flash tehnologiji, a ima ulogu da zamijeni input[!le] tag i kreira komponentu unutar interfejsa koja omogućava upload fajlova bez potrebe da se stranica ponovo učitava.

Page 49: Analiza G:Max CMS-a

Brisanje galerija

Brisanje galerija se vrši klikom na dugme “Obriši” koje se pojavljuje prilikom prelaska miša preko prozora određene galerije. Brisanjem određene galerije, uklanja se i cjelokupan set fotogra%ja koje su joj dodijeljene.

Uređivanje sadržaja unutar galerije

Nakon što kliknete na naziv galerije unutar osnovnog panela, učitaće se setovi fotogra%ja koje su unesene unutar izabrane galerije. Ukoliko se unutar odabrane galerije ne nalazi nijedna fotogra%ja, sistem će vam dati informaciju o tome.

Prikaz panela unutar kog je izabrana određena galerija

Brisanje fotogra'je se vrši tako što označite fotogra%je koje želite obrisati. Označavanje vršite jednostavnim klikom na fotogra%ju nakon čega se javlja crvena ivica i fotogra%ja dobija crveni sjaj oko sebe. Ukoliko želite skinuti oznaku s fotogra%je, kliknite ponovo na nju.

Na slici iznad su selektovane druga fotogra%ja u prvom redu i prva fotogra%ja u drugom redu. Nakon označavanja fotogra%ja, potrebno je da kliknete na alatku za brisanje koja se nalazi unutar toolbar-a pod ikonicom s crvenim iksićem (✘).

Duško Angirević: Analiza G:Max CMS-a

44.

Page 50: Analiza G:Max CMS-a

Nakon klika na opciju za brisanje, potrebno je da vašu komandu potvrdite na sistemskom dijalog prozoru.

Sistemski dijalog prozor web browser-a Safari

Bez obzira da li galerija unutar sebe ima fotogra%je ili je prazna, na kraju liste svih fotogra%ja se nalazi opcija za dodavanje nove fotogra'je i smještena je pod komandnim dugmetom s nazivom “Dodajte novu fotogra!ju”. Klikom na ovu opciju, otvara se sistemski dijalog prozor za izbor fotogra%je sa vašeg računara.

Sistemski dijalog prozor na Mac OS X 10.6 (Snow Leopard)

Nakon odabira fotogra%je, s vašeg računara pokreće se automatski upload fajla u odabranu galeriju. Možete primjetiti da su svi fajlovi koji nisu “jpg” formati onemogućeni za izbor. Nakon upload-a fajla, podaci unutar panela će biti osvježeni.

Izmjena opisa fotogra'ja se vrši tako što označite fotogra%je kojima želite promjeniti opise, te kliknete na opciju sa ikonicom olovke (✎) unutar toolbar-a, nakon čega slijedi ponuda dijalog prozora za unos imena fotogra%je u koji unosite opis.

Duško Angirević: Analiza G:Max CMS-a

45.

Page 51: Analiza G:Max CMS-a

Ankete

Pozivanje panela se vrši klikom na dugme “Ankete” unutar korisničkog box-a nakon logovanja u sistem. Administratori sistema i napredni korisnici imaju mogućnost pokretanja ovog panela.

Prikaz panela “Ankete”

Na slici iznad je prikazan pokrenut panel “Ankete”. Osnovni prikaz pokazuje listu svih anketa s imenima anketa, imenom autora i brojem glasova. Lista je složena hronološki u opadajućem redu od novijih ka starijim unosima. Svi unosi su grupisani na mjesečnom nivou radi povećanja preglednosti liste.

Ikona koja se nalazi na na početku svake ankete govori o tome da li je anketa objavljena ili još uvijek čeka na objavu (opcija tempiranog sadržaja). U slučaju da je anketa objavljena pojavljuje se ikonica znaka potvrde (✔), dok u slučaju da anketa još uvijek čeka na objavu pojavljuje se

ikonica malog sata (◴).

Brisanje ankete

Prilikom prelaska miša preko pojedinih anketa, korisnik dobija opciju da obriše anketu. Opcija se pojavljuje u gornjem desnom uglu kao što je prikazano na slici iznad u slučaju prvog reda. Klikom na opciju, pokreće se sistemski dijalog prozor za potvrdu brisanja, nakon čega se u zavisnosti od izbora korisnika, vrši brisanje ankete ili se odustaje od tog procesa.

Duško Angirević: Analiza G:Max CMS-a

46.

Page 52: Analiza G:Max CMS-a

Izmjena postojeće ankete

Klikom na naziv ankete u okviru prikaza liste “Sve”, vršite odabir ankete koju želite da izmjenite. Nakon izbora ankete, u panelu se omogućuje izmjena odabrane ankete u prozoru kao na slici.

Prikaz panela prilikom uređivanja određene ankete

U prozoru su vam ponuđene sljedeće opcije: polje “anketno pitanje” za unos anketnog pitanja, set ponuđenih odgovora koje možete ukloniti izborom opcije za brisanje (✘), unijeti vrijednost za ponuđeni odgovor i “podesiti” broj odgovora za ovo pitanje, kreirati dodatni ponuđeni odgovor klikom na opciju (+). Od dodatnih opcija ponuđeno vam je da odaberete autora ankete (samo za administratore, dok je za napredne korisnike unaprijed prede%nisano njihovo korisničko ime) i da odaberete datum i vrijeme objave ankete ukoliko kreirate tempirani sadržaj.

Nakon izmjene podataka potrebno je da kliknete na opciju “Sačuvaj” kako bi spremili izmjene i vratili se na prethodnu listu.

Dodavanje nove ankete

Vrši se klikom na tab sa oznakom “+”, nakon čega unosite samo anketno pitanje, autora (isto kao u prethodnom slučaju) i datum objave. Nakon odabira opcije “Sačuvaj”, prikazuje se lista svih anketa. Potrebno je otvoriti novokreiranu anketu kako bi se dodali ponuđeni odgovori.

Napomena: u slučaju višejezičnosti, anketu je potrebno prevesti na svim jezičkim verzijama.

Duško Angirević: Analiza G:Max CMS-a

47.

Page 53: Analiza G:Max CMS-a

Dokumenti

Pozivanje panela se vrši klikom na dugme “Dokumenti” unutar korisničkog box-a nakon logovanja u sistem. Administratori sistema i napredni korisnici imaju mogućnost pokretanja ovog panela.

Panel za rad s dokumentima

Na slici iznad je prikazan panel za rad s dokumentima. Lista prikazuje dokumente razvrstane po kategorijama, pri čemu svaki pojedini dokument unutar liste sadrži informacije o nazivu dokumenta, ikonicu koja simbolizuje njegov tip, naziv korisnika koji je postavio dokument i vrijeme postavljanja dokumenta.

Brisanje dokumenta

Ukoliko mišem pređete preko liste, nudi vam se opcija da obrište fajl kao i u prethodnim panelima. Nakon odabira opcije za brisanje, potrebno je izvršiti i potvrdu naredbe kako bi uspješno završili proces brisanja.

Izmjena postavljenog dokumenta i dodavanje novog

Ukoliko kliknete na određeni naziv fajla učitaće se panel za izmjenu određenog dokumenta. Unutar panela će se pojaviti opcije za izmjenu osobina fajla u pogledu polja za izmjenu naslova, kategorije i samog opisa fajla. Pored navedenog tu je i opcija za podignete novi fajl u sam CMS.

U slučaju da ste kliknuli na tab (+) koji služi za dodavanje novih dokumenata, otvoriće se identična forma za unos podataka pri čemu će samo sva polja biti prazna, jer ne postoje prethodne informacije koje bi mogli mijenjati.

Sve izmjene se spremaju u bazu nakon klika na komandno dugme “Sačuvaj”.

Duško Angirević: Analiza G:Max CMS-a

48.

Page 54: Analiza G:Max CMS-a

Prikaz panela “Dokumenti” prilikom izmjene određenog dokumenta

Rad s kategorijama

Dokumenti se razvrstavaju po kategorijama u srodne grupe. Ukoliko želite dodatni novu kategoriju ili urediti postojeće, neophodno je da kliknete na tab “Kategorije”. Bitno je napomenuti da ukoliko se radi o višejezičnoj verziji sajta, da je imena kategorija potrebno prevesti i na drugim jezičkim verzijama.

Prikaz panela “Dokumenti” pri radu s kategorijama

Dodavanje novih kategorija se vrši klikom na zeleno dugme (+) koje se nalazi uporedo sa nazivom podsekcije panela “Kategorije”. Nakon klika, pokreće se dijalog prozor u koji je neophodno da unesete ime nove kategorije i kliknete na dugme za potvrdu. Nakon potvrde, lista kategorija će biti automatski ažurirana s novim podacima.

Ukoliko želite da obrišete određenu kategoriju, dovoljno je da pređete mišem preko željene kategorije i kliknete na opciju “Obriši” koja će se pritom pojaviti. Nakon odabira opcije, potrebno je da izvršite potvrdu vaše akcije u dijalog prozoru koji će se pojaviti odmah nakon toga.

Izmjena postojećih naziva kategorija se vrši jednostavno: kliknite u polje s nazivom i promijenite ga! Sam sistem će sve vaše izmjene prihvatiti tokom kucanja, tako da nije neophodno da vršite bilo kakvu potvrdu izmjene.

Duško Angirević: Analiza G:Max CMS-a

49.

Page 55: Analiza G:Max CMS-a

Vijesti

Pozivanje panela se vrši klikom na dugme “Vijesti” unutar korisničkog box-a nakon logovanja u sistem. Administratori sistema i napredni korisnici imaju mogućnost pokretanja ovog panela, pri čemu administratori na listama vide vijesti svih korisnika, dok napredni korisnici mogu da vide samo sopstvene.

Panel “Vijesti” sa prikazom liste svih vijesti

Na slici iznad je prikazan panel “Vijesti” sa listom svih vijesti. Panel se sastoji iz tabova koji omogućavaju segmentaciju sadržaja: tab “+” služi za dodavanje novih vijesti, tab “Sve” sadrži listu unešenih vijesti, tab “Drafts” sadrži samo nacrte vijesti, dok tab “Video” sadrži samo video vijesti. Na samom kraju tu je i tab “Kategorije” koji služi za upravljanje kategorijama vijesti.

U listi “Sve” vijesti se nalazi samo posljednjih 800 unosa zbog toga što pojedini korisnici CMS-a imaju i preko 200.000 unosa unutar baze vijesti. Ostalim vijestima je moguće pristupiti preko polja za pretragu vijesti koje se nalazi s desne strane tabova. Pretraga se vrši metodom “live search”22, a lista vijesti koje zadovoljavaju uslove pretrage se prikazuje ispod.

Duško Angirević: Analiza G:Max CMS-a

50.

22 Live search - metoda rada koja je nastala tokom Web 2.0 perioda. Predstavlja spoj AJAX tehnologije i uobičajene metode pretrage. Ostvaruje se pozivanjem AJAX upita ka serveru svaki put kad korisnik promjeni upit unutar polja, pri čemu se šalje korisnikov unos da bi se rede!nisao pojam pretrage. Rezultati pretrage se vraćaju putem AJAX-a u unaprijed prede!nisano polje na samoj stranici, tako da korisnik ima osjećaj da vrši pretragu u realnom vremenu - tj. još dok unosi pojam za pretragu. Ova tehnika je veoma praktična, ali predstavlja znatno opterećenje za sam web server.

Page 56: Analiza G:Max CMS-a

Lista se sastoji iz dvije ikonice koje opisuju status vijesti, naziva vijesti, kategorije u kojoj je objavljena, autora vijesti, vremena objave i broja prikaza vijesti. Sve vijesti unutar liste su razvrstane po danima u mjesecu kad su objavljene. Ikone koje opisuju vijest su podjeljene u dvije grupe:

๏ setom ikonica koje govore nešto više o samoj vijesti tj. da li je ona:

• obična vijest (●) - predstavljeno putem sive tačkice;

• draft vijest (∅) - vijest koja je još u nacrtnoj verziji tj. nije %nalna i nije objavljena bez obzira da li je vrijeme objave prošlo;

• video vijest (›) - vijest koja unutar sebe sadrži poziv ka YouTube ili Vimeo video zapisu na osnovu “id”-a samog zapisa23;

• aktuelna vijest (✩) - vijest koja ima određenu važnost i treba da bude istaknuta unutar posebnih modula za prikaz aktuelnih vijesti.

๏ set ikona koje označavaju tempirani sadržaj:

• objavljen - predstavljena sa znakom potvrde (✔) ili

• nije objavljen - kad se pojavljuje ikonica malog sata (◴);

Dodavanje nove vijesti

Dodavanje nove vijesti vrši se klikom na tab (+), nakon čega se u panelu pojavljuje forma za unos nove vijesti kao što je prikazano na slici ispod.

Prikaz panela “Vijesti” prilikom unosa nove vijesti

Duško Angirević: Analiza G:Max CMS-a

51.

23 Podebljani tekst predstavlja “id” video zapisa: - YouTube (http://www.youtube.com/watch?v=UHvgAJe8bvM&ob=av3e) i - Vimeo (http://www.vimeo.com/14350274);

Page 57: Analiza G:Max CMS-a

Prilikom unosa vijesti, neophodno je da popunite sljedeća polja:

๏ Odabrati fotogra'ju koja je prateća uz vijest; Fotogra%ja će biti automatski preuzeta i postavljena na server u odgovarajućim dimenzijama24; Polje je opcionalno;

๏ Unijeti naslov vijesti;

๏ Odabrati kategoriju u koju spada vijest; Vijest može pripadati samo jednoj kategoriji na osnovu koje se ona prikazuje u pripadajućim modulima; U slučaju da se odabere kategorija “Kolumna” (generička kategorija i ne nalazi se u bazi), tekstovi se povlače iz baze na osnovu “id”-a autora;

๏ U editoru se unosi sadržaj vijesti; Sadržaj može imati dodatne fotogra%je koje se unose putem Image Manager-a, numerisane i nenumerisane liste, tabele i sl.;

๏ Od dodatnih opcija za objavljivanje tu se nalazi datum objavljivanja sadržaja što vam omogućava da kreirate tempirani sadržaj;

๏ Autora vijesti možete odabrati ukoliko ste administrator, a ukoliko ste napredni korisnik bićete unaprijed prede%nisani bez mogućnosti promjene vrijednosti;

๏ Svaka vijest je prilikom kreiranja proglašena nacrtom ili draft verzijom; Ukoliko ste kompletirali vijest i želite da je objavite, biće neophodno da uklonite oznaku kod ove opcije prije slanja vijesti na objavu;

๏ Ako vaša vijest posjeduje određenu važnost po kojoj se ističe od ostalih vijesti, možete postaviti oznaku aktuelne vijesti na nju; To znači da će se ona pored prikazivanja u modulima za obične vijesti pojavljivati i unutar modula koji su namijenjeni samo za prikaz aktuelnih vijesti;

๏ U slučaju da je vijest ujedno i video vijest, potrebno je da postavite “id” video zapisa sa YouTube ili Vimeo servisa kao što je opisano na prethodnoj stranici; Trenutno ne postoji mogućnost da se video fajl postavi unutar vijesti putem ugrađenih mehanizama unutar CMS-a;

Nakon što unesete odgovarajuće podatke za vijest, dovoljno je da kliknete na opciju “Sačuvaj” ili da kliknete na ikonicu diskete unutar editora.

Brisanje vijesti

Ukoliko mišem pređete preko liste, nudi vam se opcija da obrište vijest, kao i u prethodnim panelima. Nakon odabira opcije za brisanje, potrebno je izvršiti i potvrdu naredbe kako bi uspješno završili proces brisanja. Nakon brisanja vijesti, ona će biti uklonjena s liste.

Rad s kategorijama

Vijesti se razvrstavaju po kategorijama u srodne grupe. Ukoliko želite dodatni novu kategoriju ili urediti postojeće, neophodno je da kliknete na tab “Kategorije”.

Bitno je napomenuti da ukoliko se radi o višejezičkoj verziji sajta, da je imena kategorija potrebno prevesti i na drugim jezičnim verzijama.

Dodavanje novih kategorija se vrši klikom na zeleno dugme (+) koje se nalazi uporedo sa nazivom podsekcije panela “Kategorije”. Nakon klika, pokreće se dijalog prozor u koji je

Duško Angirević: Analiza G:Max CMS-a

52.24 Više informacija o imenovanju fajlova i njihovom postavljanju možete pronaći pri opisu baze u prethodnim poglavljima;

Page 58: Analiza G:Max CMS-a

neophodno da unesete ime nove kategorije i kliknete na dugme za potvrdu. Nakon potvrde, lista kategorija će biti automatski ažurirana s novim podacima.

Prikaz panela “Vijesti” pri radu s kategorijama

Ukoliko želite da obrišete određenu kategoriju, dovoljno je da pređete mišem preko željene kategorije i kliknete na opciju “Obriši” koja će se pritom pojaviti. Nakon odabira opcije, potrebno je da izvršite potvrdu vaše akcije u dijalog prozoru koji će se pojaviti odmah nakon toga.

Izmjena postojećih naziva kategorija se vrši jednostavno: kliknite u polje s nazivom i promjenite ga! Sam sistem će sve vaše izmjene prihvatiti tokom kucanja, tako da nije neophodno da vršite bilo kakvu potvrdu izmjene.

Image Manager

Image Manager se može pokrenuti sa bilo koje lokacije za unos sadržaja gdje se nalazi editor teksta. Unutar menija editora se nalazi opcija “Ubaci sliku” koja nakon aktiviranja pokazuje prozor ispod. Namjena Image Manager-a jeste da se mogu postavljati dodatne fotogra%je unutar sadržaja. Slike se mogu razvrsavati po folderima, a omogućeno je elementarno editovanje slika i njihovo postavljanje na sam server.

Prikaz Image Manager-a

Duško Angirević: Analiza G:Max CMS-a

53.

Page 59: Analiza G:Max CMS-a

Korisnici

Pozivanje panela se vrši klikom na dugme “Korisnici” unutar korisničkog box-a nakon logovanja u sistem. Samo administratori sistema imaju mogućnost pokretanja ovog panela. Kao što je prikazano na slici, postoje tri načina pregleda korisnika unutar sistema:

๏ Online - prikaz trenutno logovanih korisnika;

๏ Admin – lista naprednih korisnika i administratora;

๏ Neaktivni – lista korisnika koje je administrator blokirao i lista onih koji nisu završili proces registracije.

๏ Svi – lista svih korisnika;

Panel “Korisnici” koji pokazuje listu admin korisnika

Lista sadrži sljedeće informacije: korisničko ime korisnika, njegovo ime i prezime, kao i datum njegove posljednje aktivnosti na sistemu. Pored toga korisnički nalozi imaju i određene ikone koje više govore o samim korisnicima:

๏ prva ikona govori o trenutnom statusu korisnika: sivi krug (●) označava da je korisnik offline; narandžasti krug (●) označava korisnike koji su neaktivni preko 20 minuta; zeleni krug (●) označava korisnike koji su online;

๏ duga ikona govori više o nivou korisnika: crveni korisnik (♟) označava administratore; plavi korisnik (♟) označava korisnike naprednog nivoa; plavi korisnik (♟) označava obične korisnike; korisnici koji nisu završili proces registracije i aktivirali nalog imaju ikonu crvenog iksića (✘).

Duško Angirević: Analiza G:Max CMS-a

54.

Page 60: Analiza G:Max CMS-a

Dodavanje novog korisnika

Dodavanje novog korisnika se može izvršiti na dva načina: putem registracione forme na samom sajtu i preko administracionog panela za korisnike.

Dodavanje korisnika putem administracionog panela za korisnike se vrši unosom podataka u formular prikazan ispod. Nakon unosa osnovnih podataka i odabira uloge u sistemu, kliknite na dugme “Prihvati”.

Prikaz panela “Korisnici” prilikom dodavanja novog korisnika

Uređivanje korisničkih naloga

Iz jedne od ponuđenih lista, odaberite korisnika tako što kliknite na opciju za uređivanje, te nakon izmjene podataka kliknite na dugme “Prihvati”. Izmjena podataka se odvija na identičnom prozoru kao što je prikazano iznad s tim da će polja imati prede%nisane vrijednosti odabranog korisnika.

Napomena: Brisanje korisnika iz sistema nije moguće osim uklanjanjem iz baze što nije preporučljivo. S obzirom da je u pitanju višekorisnički sistem, sa kompleksnim nivoom veza između korisnika i sistema, kao i korisnika međusobno, brisanjem naloga bi se mogle oštetiti veze koje treba da postoje među referencama. Preporuka je da korisnika kojeg želite ukloniti jednostavno blokirate izborom opcije “neaktivan” za ulogu na sistemu.

Duško Angirević: Analiza G:Max CMS-a

55.

Page 61: Analiza G:Max CMS-a

FAQ

Pozivanje panela se vrši klikom na dugme “FAQ” unutar korisničkog box-a nakon logovanja u sistem. Mogućnost pokretanja ovog panela imaju administratori i napredni korisnici. Namjena panela jeste kreiranje listi često postavljanih pitanja. Kao što je prikazano na slici, postoje tri taba: tab za dodavanje novih pitanja i odgovora (+), tab za prikaz svih pitanja iz određene kategorije i tab za upravljanje kategorijama.

Prikaz panela “FAQ”

Kao što je prikazano na slici, lista se sastoji iz stavki koje predstavljaju pitanja koja su unesena. Sva pitanja su razvrstana po kategorijama radi preglednosti.

Dodavanje novih pitanja i odgovora

Ddodavanje novih pitanja i odgovora se vrši klikom na tab s oznakom “+”, nakon čega se učitava forma za unos. Polja koja treba popuniti su: kategorija u koju spada vaše pitanje, pitanje na koje će se nuditi odgovor i sam odgovor na navedeno pitanje.

Nakon popunjavanja polja, potrebno je da kliknete na dugme “Sačuvaj” kako bi promjene bile spremljene u sam sistem.

Izmjena postojećih pitanja i odgovora

Izmjena postojećih pitanja i odgovora se vrši tako što se na listi svih pitanja odabere ono koje želite modi%kovati, te kliknete na njega. Nakon toga se učitava forma identična onoj za unos novih pitanja i odgovora, s tim da se u poljima nalaze prede%nisane vrijednosti koje možete mijenjati. Nakon izmjena, potrebno je da kliknete na dugme “Sačuvaj”.

Duško Angirević: Analiza G:Max CMS-a

56.

Page 62: Analiza G:Max CMS-a

Prikaz forme za izmjenu postojećih i dodavanje novih stavki

Brisanje pitanja

Prelaskom miša preko pojedine stavke, dobija se mogućnost da se stavka obriše. Klikom na opciju “Obriši”, pokreće se dijalog prozor koji od vas traži potvrdu brisanja. Nakon potvrde, pitanje se uklanja iz baze i sa prikaza. U slučaju da odustanete od brisanja, izmjene neće biti izvršene.

Rad s kategorijama

Pitanja i odgovori se razvrstavaju po kategorijama u srodne grupe. Ukoliko želite dodati novu kategoriju ili urediti postojeće, neophodno je da kliknete na tab “Kategorije”. Bitno je napomenuti da ukoliko se radi o višejezičnoj verziji sajta, da je imena kategorija potrebno prevesti i na drugim jezičnim verzijama i odabirom opcije za brisanje kategorije, uklonićete kategoriju i sva pitanja u okviru nje.

Dodavanje novih kategorija se vrši klikom na zeleno dugme (+) koje se nalazi uporedo sa nazivom podsekcije panela “Kategorije”. Nakon klika, pokreće se dijalog prozor u koji je neophodno da unesete ime nove kategorije i kliknete na dugme za potvrdu. Nakon potvrde, lista kategorija će biti automatski ažurirana s novim podacima. Ukoliko želite da obrišete određenu kategoriju, dovoljno je da pređete mišem preko željene kategorije i kliknete na opciju “Obriši” koja će se pritom pojaviti. Nakon odabira opcije, potrebno je da izvršite potvrdu vaše akcije u dijalog prozoru koji će se pojaviti odmah nakon toga. Izmjena postojećih naziva kategorija se vrši jednostavno: kliknite u polje s nazivom i promjenite ga! Sam sistem će sve vaše izmjene prihvatiti tokom kucanja, tako da nije neophodno da vršite bilo kakvu potvrdu izmjene.

Duško Angirević: Analiza G:Max CMS-a

57.

Page 63: Analiza G:Max CMS-a

Rad s modulima

Pozivanje panela “Moduli” se vrši na specijalno dugme koje se nalazi unutar svake sekcije na kojoj je moguće dodati modul. Mogućnost pokretanja ovog panela imaju samo administratori. Panel se pokreće klikom na dugme “+” koje će se pojaviti u zaglavlju svakog pojedinog polja na sajtu. Na slici pored je prikazan panel za dodavanje modula sajtu.

Prikaz panela za dodavanje modula

Ukoliko želite da neki sadržaj postavite na određenoj stranici na sajtu, putem navigacije na sajtu dođite do željene stranice i pokrenite panel za dodavanje novog modula u dijelu prozora gdje želite da dodate sadržaj.

Prvo birate koja grupa modula vas zanima. Ponuđene grupe su: navigacioni moduli, moduli vijesti, moduli za radne naloge, moduli za sadržaj i korisnički moduli. Klikom na bilo koju od ovih grupa pojaviće se lista modula koje odabirete klikom na radio dugme ispred naziva modula. Najbitniji dio oko postavljanja modula na stranici, jeste odabir tipa modula. Kompletna speci%kacija modula i navedenih tipova je prezentovana u tabeli na kraju ovog poglavlja.

Nakon odabira modula, potrebno je da provjerite na koje sve jezičke verzije želite da dodate modul. Biće vam ponuđeno onoliko jezičkih verzija koliko je prede%nisano na vašem sistemu. Minimum je da odaberete bar jednu verziju!

Unaprijed je potvrđeno dodavanje modula na jezičku verziju na kojoj se trenutno nalazite, ako želite i na drugima, morate ih označiti preko checkbox-a.

Nakon odabira jezičke verzije ili više njih, birate ko može da vidi sadržaj koji postavljate putem modula. Više informacija o opciji prikaza možete pronaći u uvodnim poglavljima.

Duško Angirević: Analiza G:Max CMS-a

58.

Page 64: Analiza G:Max CMS-a

Vidljivost modula tj. njegovog sadržaja određujete tako što na samom kraju, nakon izbora modula kliknete na jedan od obojenih krugova unutar toolbar-a ovog panela. Značenja boja komandnih dugmadi su sljedeća:

๏ crveno dugme - sadržaj modula je vidljiv samo administratorima;

๏ plavo dugme - sadržaj modula je vidljiv samo svim korisnicima;

๏ zeleno dugme - sadržaj modula je vidljiv samo registrovanim korisnicima;

๏ sivo dugme - sadržaj modula je vidljiv samo neregistrovanim korisnicima;

Bitno je napomenuti da se raspored polja iz kojih možete pozvati panel za dodavanje modula može razlikovati od stranice do stranice, stoga pridržavajte se objašnjenja u gdje je pozicionirana određena kolona. Tu informaciju vam može dati samo administrator sajta, ali ukoliko nije posebno naglašeno da postoje razlike, koristi se sljedeći raspored:

Dugmad za pozivanje panela za dodavanje modula se uvijek nalazi u gornjem lijevom uglu navedenog bloka (naravno, ukoliko je dozvoljeno dodavanje modula u navedeni blok).

Duško Angirević: Analiza G:Max CMS-a

59.

Page 65: Analiza G:Max CMS-a

Lista modula za rad s CMS-omU ovom poglavlju slijedi lista modula, razvrstana po grupama, sa opisima šta koji modul radi te pregledom koji korisnici mogu da vide sadržaj (po korisničkim grupama).

Navigacioni moduli

Vrsta Dodatna objašnjenja

Izbor jezika Prikaz jezičkih verzija sajta. Nakon postavljanja ovog modula, klikom na jednu od jezičkih verzija, korisnik će biti prebačen na odgovarajuću stranicu na drugoj jezičkoj verziji.

Mapa sajta Mapa sajta predstavlja nenumerisanu listu sa podlistama koje se generišu u skladu sa rasporedom stranica unutar strukture. Unutar listi se nalaze nazivi stranica sa linkovima ka njima.

Navigacija Uobičajeni prikaz navigacije u jednom ili dva nivoa. Sadržaj u okviru navigacije zavisi od pozicije korisnika u odnosu na strukturu. Ukoliko se korisnik nalazi na stranici koja ima podstranice, onda će navigacija prikazivati podstranice. U slučaju da stranica nema podstranica tj. da je posljednji element strukture - onda navigacija prikazuje stranice koje su u istom nivou kao i stranica na kojoj se korisnik trenutno nalazi.

Putanja Najčešće korišten element navigacije na mnogobrojnim sajtovima. Radi se o uproštenoj navigaciji gdje se prikazuje pozicija korisnika u odnosu na početnu stranicu. Omogućava brz povratak u nadkategorije bez upotrebe Back dugmeta.

Elementi u navigaciji se generišu na osnovu podataka koje unosite u panelu “Struktura”. U zavisnosti od toga da li je korisnicima dozvoljeno da vide pojedine dijelove sajta tj. elemente strukture, navigacija će prikazati ili neće prikazati menije.

Napomena: moduli navigacije su najčešće automatski uključeni kroz sistem na mjestima gdje je to potrebno, stoga ručno dodavanje navigacije na svakoj pojedinoj stranici je nepotrebno.

Duško Angirević: Analiza G:Max CMS-a

60.

Page 66: Analiza G:Max CMS-a

Modul vijesti

Vrsta Dodatna objašnjenja

Aktuelne vijesti

Lista aktuelnih vijesti de&nisanih unutar panela “Vijesti”.

Aktuelne vijesti II

Lista aktuelnih vijesti de&nisanih unutar panela “Vijesti” sa drugačijim načinom prikaza.

Arhiva vijesti Arhiva vijesti se postavlja na stranicu zajedno s kalendarom i koristi se podacima iz kalendara za prikaz unosa za određeni dan.

Diskusije Modul za prikaz aktuelnih diskusija u okviru komentara koji se mogu ostaviti na određenu vijest. Ukoliko nema aktuelnih diskusija, sistem vraća informaciju nije bilo komentara.

Izvodi Kategorisani izvodi vijesti određenog broja vijesti s tim da je prva vijest najnovija i da je naslov naglašeniji. Pored naslova prve vijesti može biti prikazana i fotogra&ja priložena uz nju.

Kategorije Prikaz svih kategorija vijesti. Klikom na neku od njih korisnik se vodi na stranicu s modulom s kategorisanim vijestima i pripadajućom kategorijom.

Kategorisane Kategorisane vijesti je modul koji prikazuje određeni set vijesti iz kategorije. Ovaj modul je uslov za pravilan rad svih modula tipa vijesti. Prikazuje listu vijesti s naslovom, datumom objave, kategorijom i linkom za kompletnu vijest. Na donjem dijelu modula je prikazan "pejdžer" tj. virtuelne stranice iz arhive.

Najave Najave vijesti predstavljaju modul vijesti s obrnutim načinom rada. Naime, svi moduli vijesti prikazuju vijest tek nakon vremena de&nisanog unutar polja “datum objavljivanja”, osim ovog modula. Ovaj modul prikazuje sadržaj do tog datuma, nakon čega uklanja vijest iz liste.

Najčitanije Najčitanije vijesti u posljednjih 20 dana.

Posljednje Rotator vijesti koji prikazuje posljednjih 10 vijesti na sajtu rotirajući u vremenskim intervalima. Za ispravan rad zahtjeva postojanje modula "kategorisane vijesti" na sajtu za svaku kategoriju.

Najčitanije Najčitanije vijesti u posljednjih 20 dana.

Pregled vijesti

Modul za pregled vijesti povlači u sebe tri modula: modul koji prikazuje 10 posljednjih objavljenih vijesti, 10 najpopularnijih vijesti u zadnja 24h i modul diskusije.

Rotator Rotator vijesti prikazuje posljednje unose, tako što prikazuje jednu po jednu vijest pri čemu naslov vijesti prikazuje riječ po riječ.

Napomena: Druga kolona u ovoj tabeli označava da je pojedinim modulima neophodno dodijeliti još neke dodatne instrukcije.

Duško Angirević: Analiza G:Max CMS-a

61.

Page 67: Analiza G:Max CMS-a

Moduli za sadržaj

Vrsta Dodatna objašnjenja

Anketa Prikaz aktuelne ankete s mogućnošću glasanja. Aktuelnost ankete se određuje na osnovu datuma objave koji se de&niše u panelu G:Anketa. Nakon glasanja u prozoru ankete ostaje rezultat glasanja. Anketa posjeduje mehanizam zaštite od malverzacija s glasovima.

Arhiva anketa

Lista svih anketa koje su se postavile na sajt. Nakon odabira pojedine ankete s liste, prikazuje se rezultat odabrane ankete.

Dokumenti Lista dokumenata iz određene kategorije. Dokumenti su razvrstani po kategorijama, dok se sadržaj unosi u panelu “Dokumenti”. Lista se generiše automatski na osnovu podataka iz baze.

Dokumenti (TOP 5)

Lista od pet najčešće preuzimanih dokumenata iz sekcije dokumenti. Lista se generiše automatski na osnovu podataka iz baze.

FAQ Podaci prezentovani u obliku "pitanje / odgovor" i sortirani abecedno. Podaci razvrstani na osnovu kategorija, dok se sadržaj de&niše u panelu “FAQ”.

Galerije Prikaz fotogra&ja iz određene galerije, a sadržaj se uređuje u panelu “Galerije”.

Galerije i komentari

Prikaz fotogra&ja iz određene galerije sa komentarima na pojedine fotogra&je, a sadržaj se uređuje u panelu “Galerije”.

Galerije: sve Prikaz svih galerija složenih hronološki, nakon čega korisnik može pregledati fotogra&je iz određene galerije.

Kalendar Ovo je jedan od kompleksnijih modula. On sam po sebi nema nikakvu namjenu već služi u interakciji s drugim sistemima. Korištenjem ovog modula u interakciji sa opštim modulom vijesti omogućava se pregled vijesti po uslovu "na dan". Takođe se može koristiti kao kalendar aktivnosti.

Text/HTML Služi za rad sa sadržajem i predstavlja jedan od rijetkih modula koji pozivaju panel za upravljanje sadržajem. Panel za uređivanje sadržaja se poziva klikom na ikonu koja označava opciju "izmjeni".

Napomena: Druga kolona u ovoj tabeli označava da je pojedinim modulima neophodno dodijeliti dodatne instrukcije. Ovaj postupak se najčešće svodi da nakon dodavanja modula, iz padajuće liste unutar modula odaberete kategoriju iz koje se preuzimaju podaci i potvrdite vaš izbor klikom na dugme “»”.

Duško Angirević: Analiza G:Max CMS-a

62.

Page 68: Analiza G:Max CMS-a

Korisničke opcije

Vrsta Dodatna objašnjenja

Login box Modul sa poljima za prijavu registrovanih korisnika. Nakon uspješne prijave ovaj modul prikazuje dostupne opcije za odgovarajući nivo pristupa korisnika.

Online korisnika Prikaz broja registrovanih korisnika koji se trenutno nalaze prijavljeni na sajtu i bili su aktivni u zadnjih 20 minuta.

Pretraga (napredna) Sadrži blok s poljem za pretragu, padajućom listom za izbor regije pretrage (sistem vijesti, sadržaj, FAQ i sl.) i dugme za početak pretrage. Rezultati se prikazuju ispod polja za pretragu. Prihvata spoljnje upite od strane opcije za pretragu.

Pro&li Omogućava korisnicima da kreiraju sopstveni pro&l u okviru dateing sistema. Kad korisnik dođe na ovaj modul, može podesiti sopstveni pro&l, dok ukoliko je došao klikom s nekog drugog dijela sajta gdje je kliknuo na naziv nekog korisnika, biće mu prikazan pro&l tog korisnika.

Promjena lozinke Omogućava korisniku da promjeni svoju trenutnu lozinku.

Promjena osnovnih podataka

Izmjena osnovnih korisničkih podataka (ime i prezime, datum rođenja, pol, lokacija, prijem newsletter-a itd.).

Registracija korisnika

Formular za registraciju novih korisnika.

Pretraga pro&la Sadrži formular prilagođen potrebama pretraživanja korisničkih pro&la. Rezultati se prikazuju ispod polja za pretragu.

Kolone koje prikazuju nivoe pristupa za korisničke grupe u okviru sebe sadrže potvrdu. Naime, radi se o preporuci da se pojedini tip modula postavlja samo u onim prikazima koji su potvrđeni u tabeli. Preporuke su organizovane logički (npr. promjena lozinke je logična samo u slučaju da je korisnik registrovan i prijavljen).

U slučaju da se ne pridržavate preporuka iz tabele iznad, sam G:Max CMS će izvršiti realtime modi%kacije po zahtjevu modula. Na taj način, modul koji nije u mogućnosti da funkcioniše u zadanom režimu (npr. promjena lozinke za neregistrovanog korisnika), će prikazati informaciju kako je taj dio sistema predviđen samo za registrovane korisnike i eventualno im ponuditi mogućnost prijave u sistem.

Duško Angirević: Analiza G:Max CMS-a

63.

Page 69: Analiza G:Max CMS-a

Sigurnost sistemaSvaki sistem je onoliko siguran koliko ga sigurno napravite. To je prva misao kojom se treba voditi prilikom rada. Problem sigurnosnih propusta najčešće leži u obradi korisničkih zahtjeva tj. procesiranju podataka koje korisnik šalje ka aplikaciji koja se izvršava na serveru. Kad govorimo o sigurnosti sistema, najčešće mislimo na sigurnost podataka od neovlaštenog čitanja i izmjena. S obzirom da se podaci unutar dinamičkih sistema čuvaju unutar baza podataka, potrebno je zaštiti samu bazu od takvog načina pristupa. Ovo se najčešće rješava tako što developer kreira upite ka bazi tako što u upitima koristi isključivo provjerene podatke dobijene od strane korisnika.

Ukoliko adekvatno ne obrađujete podatke i ukoliko ne provjeravate unose od strane korisnika, već ih odmah prosljeđujete na obradu – podliježete sigurnosnim greškama.

Ispod su navedene neke od najčešćih grešaka koje se dešavaju pri programiranju i koje mogu da rezultuju ozbiljnim sigurnosnim propustima koji vode ka gubitku podataka na serveru, kao i kompromitovanju podataka samih korisnika sistema. Iako će mnogi navedeni savjeti djelovati kao krajnje razumni i podrazumjevani, u praksi oni najčešće nisu ispoštovani. Slijedeći nekoliko navedenih koraka, možete zaobići neke od najčešćih sigurnosnih propusta koji se javljaju u programima.

Include greške

Nikad ne pozivajte fajl u program ukoliko je ime fajla zasnovano na korisničkom unosu, bez prethodne provjere istog:

if ( isset($page) ) { include($page); }

S obzirom da ne postoji validacija podataka nad varijablom $page, zlonamjeran korisnik bi teoretski mogao da pozove skriptu pomoću sljedećeg koda: script.php?page=/etc/passwd što bi omogućilo da se na ekranu učita navedeni fajl, jer pozivanjem funkcije include učitava se fajl sa navedene putanje, koji ukoliko nije PHP skripta (*.php), bude prezentovan na ekranu kao klasični HTML/Text dokument.

Isto tako, na mnogim PHP instalacijama na serverima include() i require() funkcije mogu da pozovu i uključe udaljeni fajl putem HTTP zahtjeva:

script.php?page=http://drugi-sajt.com/zlonamjerna-skripta.php

Na ovaj način naš hipotetički napadač bi mogao da pokrene bilo kakav PHP skript u okviru našeg, te sebi omogućio da izvršava sopstveni PHP kod na našem serveru i sebi omogući pristup u bilo koji segment sajta. Na taj način, on bi mogao jednostavno da obriše sve podatke iz baze ili čak da preuzme osjetljive korisničke podatke tako što bi ih jednostavno poslao sebi kao HTML/Text dokument.

Duško Angirević: Analiza G:Max CMS-a

64.

Page 70: Analiza G:Max CMS-a

Jedino rješenje jeste da provjeravate unos od strane korisnika. Jedan od uobičajenih postupaka jeste da kreirate listu dozvoljenih fajlova kojima se smije pristupiti te da proslijeđeni podatak uporedite sa sopstvenom listom:

$stranice = array('index.html', index2.html', index3.html'); if( in_array($fajl, $stranica) ) { include($fajl); } else { die("Neovlasten zahtjev!"); }

Propusti zbog eval() funkcije

Korištenje vrijednosti od strane korisnika, unutar funkcije eval(), može biti ekstremno opasno. Tim postupkom omogućavate zlonamjernom korisniku da izvrši bilo koju komandu na serveru. Možda ste u zamislili da navedena varijabla bude de%nisana samim vrijednostima iz padajuće liste, ali korisnici zahtjev s modi%kovanom vrijednosti mogu poslati i na drugi način:

http://www.sajt.com/script.php?input=;passthru("cat /etc/paswd");

Postavljajući sopstveni kod, napadač može zahtjevati od servera da mu pošalje kompletan određeni fajl, kao na primjer kompletan /etc/passwd fajl.

Koristite funkciju eval() rijetko i samo ukoliko morate, a proslijeđene podatke obavezno provjeravajte. Navedenu funkciju možete koristiti ukoliko je neophodna za generisanje dinamičkih podatka, ali ukoliko je koristite u neke druge svrhe, kao npr. postavljanje varijabli unutar samog templejta, koristite funkciju na posve pogrešan način. Za te svrhe je bolje koristiti funkciju koja je namjenjena za obradu tekstuelnih podataka, poput funkcije sprintf().

Sekcije s ograničenim pristupom

U pojedinim slučajevima programeri koriste jednu skriptu koja provjerava korisničke podatke i ukoliko su oni ispravni, postavljaju ih u cookie te ih kasnije po potrebi provjeravaju prilikom pristupa sekcijama s ograničenim pristupom. Kod provjere najčešće izgleda ovako:

if( $admin ) { // ako je admin } else { // ako nije }

Gornji primjer posjeduje grešku u vidu pretpostavke da je $admin varijabla koja može doći samo od cookie-a. U praksi to jednostavno nije slučaj, jer se nerijetko dešava da je na serveru uključena opcija register_globals koja pretvara bilo koju varijablu u globalnu, što automatski zaobilazi ovaj vid zaštite:

script.php?admin=1

Duško Angirević: Analiza G:Max CMS-a

65.

Page 71: Analiza G:Max CMS-a

Nakon čega bi varijabla admin automatski bila jednaka “1” iliti “true” što bi omogućilo pristup korisniku u navedene sekcije.

Kao zaštita se preporučuje korištenje sesija i varijabli koje se nalaze u njima ($_SESSION) koje se de%nišu na serveru i na koje korisnici ne mogu uticati direktno.

SQL Injection

Najčešća metoda napada na sistem jeste “SQL injection” tehnika. Ona predstavlja korištenje podataka unesenih od strane korisnika zarad izmjene samog SQL upita ka bazi. Znači, ovdje se radi o traganju za propustima u sigurnosti sistema na nivou same baze podataka. Bitno je napomenuti da su ovoj metodi napada podložni svi složeni sistemi koji unutar sebe koriste više odvojenih sistema (PHP, Java, Perl, .Net, C#...), jer ono što je normalan korisnički unos u jednom sistemu, za drugi može predstavljati potencijalni napad.

Sama injection tehnika je poprilično jednostavna: traže se propusti u %ltriranju korisničkih podataka, koji omogućavaju da se sam %nalni upit ka bazi modi%kuje u obliku u kom to zlonamjerni korisnik želi.

Slijedi primjer jednog “SQL injection” napada:

$sql = "SELECT * FROM users WHERE name = '" + userName + "';"

Navedena priprema SQL upita je kreirana kako bi pozvala onaj zapis unutar baze koji odgovara unesenom korisničkom imenu unutar tabele korisnika. Ukoliko se varijabla "userName" izmjeni na bilo koji način od strane zlonamjernog korisnika, SQL upit bi mogao učiniti nešto mimo onog što je developer zamislio. Tako zamislimo da varijabla “userName” dobije ovu vrjednost:

userName = “' or '1'='1”;

Ili da čak dodamo komentar unutar varijable kako bi spriječili izvršavanje ostatka koda:

userName = “' or '1'='1';/*'”;

Nakon uvrštavanja vrijednosti varijable u početni upit, baza podataka dobija sljedeći upit:

SELECT * FROM users WHERE name = '' OR '1'='1';

Ukoliko je navedeni kod služio u okviru procedure za autenti%kaciju, onda bi se ovaj kod mogao koristiti da se sistem primora da selektuje validno korisničko ime zbog uslova '1'='1' koji je uvijek tačan.

Duško Angirević: Analiza G:Max CMS-a

66.

Page 72: Analiza G:Max CMS-a

Sljedeća vrijednost varijable “userName” unutar upita bi mogla da izazove brisanje svih korisnika iz tabele korisnika ili čak da preuzme i otkrije podatke svih korisnika unutar nje ukoliko je unutar API25-a dozvoljeno izvršavanje višestrukih upita:

$userName = “a'; SELECT * FROM users WHERE 't'='t' DROP TABLE users;”

Nakon uvrštavanja vrijednosti varijable u početni upit, baza podataka dobija sljedeći upit:

SELECT * FROM users WHERE name='a'; SELECT * FROM users WHERE 't'='t'; DROP TABLE users;

Dok većina implementacija SQL servera dozvoljavaju upotrebu višestrukih upita, pojedini SQL API-i (npr. oni unutar PHP programskog jezika) ih ne dozvoljavaju iz sigurnosnih razloga. Ova zabrana sprječava napadača od unosa potpuno drugačijeg upita, ali ga ne sprječava da modi%kuje postojeće.

G:Max CMS posjeduje funkciju koja obrađuje sve varijable prije njihovog slanja unutar MySQL API-a, što znatno podiže sigurnost na database nivou sistema. Funkcija za zaštitu je prikazana unutar priloženog koda, a nalazi se unutar “functions.php” biblioteke.

function quote_smart($value) {! if( is_array($value) ) {! ! return array_map("quote_smart", $value);! } else {! ! if( get_magic_quotes_gpc() ) {! ! ! $value = stripslashes($value);! ! }! ! if( $value == '' ) {! ! ! $value = '';! ! } if( !is_numeric($value) || $value[0] == '0' ) {! ! ! $value = "'".mysql_real_escape_string($value)."'";! ! }! ! return $value;! }}

Namjena funkcije je da za prosljeđenu varijablu utvrdi da li je niz i ukoliko jeste da samu sebe pozove za svaki član niza. Ukoliko varijabla nije niz, vrši provjeru da li je na web serveru uključena opcija “magic_quotes”26, te ukoliko jeste uklanja njeno eskejpovanje.

Ukoliko je vrijednost varijable prazan string (“”), može se izvršiti postavljanje varijable na NULL ili ostaviti je kao prazan string. Varijable numeričkog tipa se ne eskejpuju, a u slučaju svih ostalih tipova podataka (preostao je samo string), vrši se pozivanje funkcije mysql_real_escape_string() koja predstavlja funkciju MySQL API-a što je jedini bezbjedan način pripreme podataka prije slanja istih unutar same baze.

Duško Angirević: Analiza G:Max CMS-a

67.

25 Application Protocol Interface - set protokola između aplikacija koji omogućava komunikaciju i razmjenu podataka između različitih sistema;

26 Magic Quotes je proces automatskog eskejpovanja dolaznih podataka koji ulaze u PHP skript. Poželjno je da se eskejpovanje vrši tokom izvršavanja programa po potrebi, a ne po defaultu na nivou servera. Ova funkcija je napuštena kao loša od PHP 5.3.0. verzije;

Page 73: Analiza G:Max CMS-a

Greške uslijed imenovanja fajlova

Praksa je da se fajlovi koji se inkluduju u druge fajlove radi lakšeg raspoznavanja i logičnosti označe sa ekstenzijom (*.inc). Slično pravilo vrijedi i za kon%guracione fajlove (*.cnf ili *.cfg).

Nažalost, iako se postiže bolja organizovanost i preglednost sistema, ovo predstavlja bitan sigurnosni propust: svi fajlovi koji nisu PHP ekstenzije sa servera se isporučuju u HTML/text obliku bez izvršavanja što znači da korisniku isporučujete programski kod koji se analizom može upotrebiti protiv vas. Veći problem leži u isporuci *.cnf fajlova koji u sebi sadrže pristupne podatke za MySQL server, SMTP autenti%kaciju za e-mail i slično.

Fajl se isporučuje na obični HTTP zahtjev:

http://www.sajt.com/init.conf

Što predstavlja znatan sigurnosni propust, stoga osjetljive podatke koje korsitite obavezno čuvajte u fajlovima sa PHP ekstenzijom ili u direktorijumu u koji se ne može pristupiti putem običnog HTTP zahtjeva (van public foldera web servera).

Opšte preporuke

Slijedi nekoliko opštih preporuka za sigurnost koje je dobro imati na umu prilikom pisanja sistema koji će vršiti interakciju s korisnicima:

๏ provjeravajte sve podatke koje pošalju korisnici ka administraciji i prije pristupa sistemu;

๏ podatke od nezavisnih sistema poput baze podatka, FTP nalozi i slično držite u dijelu kom korisnici ne mogu prići ili ih držite unutar PHP fajla;

๏ podatke koje šalju autenti%kovani korisnici možete rutinski provjeravati, međutim ukoliko je napadač već ušao u administraciju, loše ste zaštitili pristupni dio;

๏ fajlove koje šalju korisnici pohranjujte u folder kom se ne može pristupiti s eksternih lokacija ili fajlu pri pohrani uklonite ekstenziju i ime zamjenite putem md5 enkripcije uz neku logičku modi%kaciju npr. id + datum uploada + orginalno ime; ekstenziju i orginalno ime zadržite u bazi ukoliko želite podatke kasnije isporučiti korisnicima;

๏ Postavite limit na broj neuspješnih logovanja, te nakon maksimalnog broja nepravilnih logovanja postavite zabranu logovanja na određeni period. Na taj način sprečavate uobičajeni način “razbijanja“ lozinke: dictionary attack i brutal force.

๏ Šaljite sebi obavještenja o sigurnosnim upozorenjima na sistemu: više nepravilnih logovanja sa iste IP adrese, direktan pristup nedozvoljenim lokacijama, detektovane MySQL Injection napade i sl.

๏ Čitajte i prijavite se na blogove koji prate teme iz oblasti sigurnosti i serviranja sigurnosnih zakrpa, te budite u toku koji software se nalazi na serveru i da li su aktuelne zakrpe postavljene na njega;

Duško Angirević: Analiza G:Max CMS-a

68.

Page 74: Analiza G:Max CMS-a

ZaključakZa sam kraj je ostavljeno da se kaže svega nekoliko bitnih napomena. Čitajući prethodna poglavlja mogli ste uočiti kako postoje razlike u pojedinim segmentima G:Max CMS-a, da se unutar njega može primjetiti kako se postepeno razvijao, stvarao i oblikovao. S obzirom da je na samom početku bio samo jednostavna skripta koja se neprestano širila u skladu sa zahtjevima, a da danas predstavlja jedan posve ozbiljan sistem - lako je uočiti da se tokom tog razvoja stvorio niz mogućnosti za unapređenje.

Kada govorim o unapređenjima, prvenstveno mislim da bi bilo poželjno na cijelom sistemu sprovesti reorganizaciju imenovanja polja unutar pojedinih tabela u bazi, jer ste do sad lako mogli uočiti da pojedina polja nose imena s našeg jezičkog područja (autor, objavljen i sl.), a onda potom se iznenada javljaju imena polja na engleskom jeziku (pointer, subOf i sl.) Ova intervencija bi zahtjevala temeljno pregledanje cijelog koda, ali bi u mnogočemu pomogla u budućem razvoju.

Trenutno na sistemu samo korisnici viših korisničkih grupa imaju zaduženje za kreiranje sadržaja, dok je običnim korisnicima omogućeno samo da mogu ažurirati sopstvene podatke, učestovati u diskusijama i postavljati komentare.

Iako je u bazi predviđeno da svaka vijest, anketa i galerija nose informaciju o svom autoru, nikada nije implementirana mogućnost da obični korisnik kreira sopstveni blog, galeriju i sl. S obzirom na tendenciju da korisnički sadržaji sačinjavaju sve veći dio Web-a (poput društvenih mreža), trebalo bi razviti module koji bi omogućili kreiraje takvog sadržaja i koji bi dodali nove funkcionalnosti iz ove oblasti.

Pojedine verzije CMS-a imaju ugrađene opcije “Facebook Connect”-a koje olakšavaju proces registracije novih korisnika, što znatno utiče na spremnost korisnika da se priključi na novi servis. Ugradnja ove opcije je pokazala da se brojnost novoregistrovanih korisnika znatno povećala, te da bi bilo poželjno ugraditi i druge vidove preuzimanja korisničkih podataka (OpenID, TwittConnect i sl.) kako bi se privukao veći broj zainteresovanih koji jednostavno ne žele da pamte još jedno novo korisničko ime i lozinku na novoj lokaciji.

Bilo bi poželjno napraviti nekoliko automatizovanih instalacionih skripti koje bi omogućile da ukoliko se doda novi modul na sistemu (npr. sistem privatnih poruka), da on automatski kreira strukture potrebne za njegov rad (hijerarhija foldera, tabele u bazi i sl.) i na taj način olakša cjelokupan proces nadogradnje.

Iako su do sad sve navedene predložene nadogradnje orijentisane ka funkcionalnosti, postoji i nekoliko njih koje su zasnovane na samoj realizaciji istih. Naime, CMS je po prvi put pisan dok je bio aktuelan PHP v.4.x kad objektno orijentisani PHP nije ni postojao. Bilo bi veoma poželjno prepisati znatan dio sistema kako bi se iskoristile prednosti koje nudi objektno orijentisano programiranje (OOP).

Postoji veliki broj mogućnosti koje se mogu razviti za ovaj sistem, samo je potrebno vidjeti koje od njih su i ekonomski isplative da bi se izvele.

Duško Angirević: Analiza G:Max CMS-a

69.

Page 75: Analiza G:Max CMS-a

Literatura(1) Luke Welling, 2009, “PHP and MySQL Web Development ”, Bronkella Publishing, New York;

(2) Larry Ullman, 2008, “PHP 6 and MySQL 5 for Dynamic Web Sites”, Peachpit Press, Berkeley;

(3) Aaron Newton, 2008, “MooTools Essentials: The Official MooTools Reference for JavaScript™ and Ajax Development”, APRESS, New York;

(4) http://www.mysql.com/ (16.07.2010. godine u 14:30h)

(5) http://www.php.net/ (20.07.2010. godine u 17:00h)

(6) http://www.mochaui.com/ (06.08.2010. godine u 11:30h)

(7) http://www.mootools.net/ (16.08.2010. godine u 22:30h)

Duško Angirević: Analiza G:Max CMS-a

70.

Page 76: Analiza G:Max CMS-a

Zahvalnica

๏ na ime:prof. dr Rade Tanjgaza svesrdnu pomoć u vidu usmjeravanja i pružanja savjeta pri realizaciji rada i odabiru teme!

Duško Angirević: Analiza G:Max CMS-a

71.