Besedilo - FIŠ - Fakulteta za informacijske študije

FAKULTETA ZA INFORMACIJSKE ŠTUDIJE
V NOVEM MESTU
D I P L O M S K A NALOGA
VISOKOŠOLSKEGA STROKOVNEGA ŠTUDIJSKEGA PROGRAMA
PRVE STOPNJE
PETER ZUPANČIČ
FAKULTETA ZA INFORMACIJSKE ŠTUDIJE
V NOVEM MESTU
D I P L O M S K A NALOGA
RAZVOJ SPLOŠNO NAMENSKEGA CMS SISTEMA
NA OSNOVI ODPRTOKODNEGA MVC OGRODJA
Mentor: viš. pred. mag. Andrej Dobrovoljc
Novo mesto, junij 2015
Peter Zupančič
IZJAVA O AVTORSTVU
Podpisani Peter Zupančič, študent FIŠ Novo mesto, izjavljam:

da sem diplomsko nalogo pripravljal samostojno na podlagi virov, ki so navedeni v
diplomski nalogi,

da dovoljujem objavo diplomske naloge v polnem tekstu, v prostem dostopu, na
spletni strani FIŠ oz. v elektronski knjižnici FIŠ,

da je diplomska naloga, ki sem jo oddal v elektronski obliki, identična tiskani verziji,

da je diplomska naloga lektorirana.
V Novem mestu, dne _________________
Podpis avtorja ______________________
ZAHVALA
Zahvaljujem se mentorju za strokovno pomoč in vodenje pri diplomskem delu.
Posebna zahvala gre staršema, ki sta me v času celotnega študija podpirala in mi stala ob
strani.
POVZETEK
CMS sistem oziroma sistem za urejanje vsebine je v današnjem času vse bolj popularna
spletna aplikacija, ki se uporablja predvsem na spletnih straneh, kjer je potrebno pogosto
posodabljati vsebine in s tem izboljšati učinkovitost spletne strani. Smotrno je, da za izdelavo
spletne aplikacije uporabimo MVC Framework (slov. ogrodje), ki omogoča bolj kakovostno
in predvsem bolj optimizirano izdelavo spletnih aplikacij. Prednost MVC ogrodij je tudi ta, da
je mogoče logiko spletne aplikacije ločiti na tako imenovan model, ki skrbi za podatkovno
logiko, View, ki skrbi za predstavitveni sloj aplikacije, ter Controller, ki skrbi za poslovno
logiko delovanja spletne aplikacije. Glede na to, da je na voljo večje število ogrodij, ki so
večinoma brezplačna, smo se za razvoj naše spletne aplikacije odločali med petimi najbolj
učinkovitimi, ki se uporabljajo za razvoj kompleksnih spletnih aplikacij. V diplomski nalogi
bomo tako predstavili razvoj splošno namenskega CMS sistema na PHP ogrodju, ki bo najbolj
učinkovito služil našemu namenu.
KLJUČNE BESEDE: PHP, Framework, CMS, Codeigniter, Bootstrap
ABSTRACT
CMS or content management system is nowadays increasingly popular Web application that
is mainly used on websites, which mostly want to update the content and thereby improve the
efficiency of the website. In order to tackle the manufacturing of such a web application it is
advisable to use the MVC Framework, which provides better quality and more especially
optimized to create Web applications. The advantage of MVC frameworks is also in this,
because we have separated the logic of Web applications on the so-called Model, which is
responsible for the data logic View which caters to the presentation layer of applications, and
Controller - which is responsible for the business logic of Web applications. Given that we
have a larger number of frameworks, most of which are free, we have to develop our web
applications to decide during the current five most effective frameworks to be used for the
development of complex web applications.
In this thesis, we will present the general development of dedicated CMS system to PHP
Framework that will most effectively serve our purpose.
KEY WORDS: PHP, Framework, CMS, Codeigniter, Bootstrap
KAZALO
1.
2.
UVOD................................................................................................................................. 1
1.1
Opis problema .............................................................................................................. 1
1.2
Hipoteze ....................................................................................................................... 2
1.3
Cilj raziskave ............................................................................................................... 2
IZDELAVA SPLETNE STRANI ...................................................................................... 3
2.1
Kaj je spletna stran ....................................................................................................... 3
2.2
Vrste spletnih strani ..................................................................................................... 3
2.2.1
Statična spletna stran ........................................................................................... 3
2.2.2
Dinamična spletna stran....................................................................................... 3
2.3
Spletna aplikacija ......................................................................................................... 4
2.4
Tehnologije za izdelavo spletnih strani ....................................................................... 4
2.4.1
Označevalni jezik HTML ...................................................................................... 4
2.4.2
Jezik CSS .............................................................................................................. 5
2.4.3
Skriptni jezik Javascript ....................................................................................... 7
2.4.4
Odzivni dizajn za mobilne naprave ...................................................................... 9
2.4.5
Programski jezik PHP ........................................................................................ 11
2.4.6
Podatkovni jezik MySQL .................................................................................... 12
2.4.7
Templating system .............................................................................................. 13
2.5
PHP MVC ogrodje ..................................................................................................... 16
2.5.1
Kaj je PHP ogrodje ............................................................................................ 16
2.5.2
Uporaba PHP ogrodja ....................................................................................... 16
2.5.3
Najpopularnejša PHP ogrodja ........................................................................... 17
2.5.4
Primerjava spletnih ogrodij ............................................................................... 20
2.5.5
Analiza zastavljenih hipotez ter izbira spletnega ogrodja ................................. 22
3.
4.
PREDSTAVITEV CMS SISTEMA ................................................................................. 30
3.1
Predstavitev sistema ................................................................................................... 30
3.2
Predstavitev modulov ................................................................................................ 31
3.2.1
Template editor ................................................................................................... 32
3.2.2
Page editor ......................................................................................................... 34
3.2.3
Menu editor ........................................................................................................ 35
3.2.4
News ................................................................................................................... 37
3.2.5
Gallery ................................................................................................................ 37
3.2.6
Slider................................................................................................................... 38
3.2.7
Contact form ....................................................................................................... 39
3.2.8
Language ............................................................................................................ 39
3.2.9
User .................................................................................................................... 40
PREDSTAVITEV IZDELAVE SISTEMA...................................................................... 41
4.1
Uporabljena orodja za izdelavo spletne aplikacije .................................................... 41
4.2
Podatkovna struktura spletne aplikacije..................................................................... 41
4.2.1
ContactForm....................................................................................................... 42
4.2.2
ContactFormLog ................................................................................................ 42
4.2.3
Gallery ................................................................................................................ 43
4.2.4
GalleryCategory ................................................................................................. 43
4.2.5
Slider................................................................................................................... 44
4.2.6
Language ............................................................................................................ 45
4.2.7
Menu ................................................................................................................... 45
4.2.8
MenuCategory .................................................................................................... 46
4.2.9
News ................................................................................................................... 46
4.2.10
NewsCategory..................................................................................................... 47
4.2.11
Page .................................................................................................................... 48
4.2.12
PageCategory ..................................................................................................... 49
4.2.13
TemplateBlock .................................................................................................... 50
4.2.14
TemplateCss ....................................................................................................... 50
4.2.15
TemplateHtml ..................................................................................................... 51
4.2.16
User .................................................................................................................... 51
4.3
5.
Integracija ogrodja .................................................................................................... 52
4.3.1
Model .................................................................................................................. 52
4.3.2
View .................................................................................................................... 54
4.3.3
Controller ........................................................................................................... 54
ZAKLJUČEK ................................................................................................................... 56
PRILOGA
KAZALO SLIK
Slika 2.1: Primer uporabe CSS ................................................................................................... 5
Slika 2.2: Primer uporabe LESS ................................................................................................. 6
Slika 2.3: Primer uporabe jQuery ............................................................................................... 8
Slika 2.4: Odzivne spletne strani .............................................................................................. 10
Slika 2.5: Primer uporabe PHP kode ........................................................................................ 11
Slika 2.6: Primer SQL poizvedbe ............................................................................................. 13
Slika 2.7: Primer uporabe templating sistemov ........................................................................ 13
Slika 2.8: Primer uporabe Blade ............................................................................................... 14
Slika 2.9: Primer uporabe Twig ................................................................................................ 15
Slika 2.10: Primer uporabe Smarty........................................................................................... 15
Slika 2.11: MVC vzorec ........................................................................................................... 17
Slika 2.12: Primerjava uporabe ogrodij .................................................................................... 18
Slika 3.1: CSS/Less stilski urejevalec ...................................................................................... 33
Slika 3.2: Html urejevalnik....................................................................................................... 34
Slika 3.3: Vsebinski urejevalnik ............................................................................................... 35
Slika 3.4: Menijska struktura .................................................................................................... 36
Slika 3.5: Izpis objavljenih novic v sistemu ............................................................................. 37
Slika 3.6: Prikaz foto galerije ................................................................................................... 38
Slika 3.7: Prikaz slider modula ................................................................................................. 38
Slika 3.8: Kontaktni obrazec za povpraševanje ........................................................................ 39
Slika 3.9: Prijava v sistem ........................................................................................................ 40
Slika 4.1: Primer Controllerja za Gallery modul ...................................................................... 55
KAZALO TABEL
Tabela 2.1: Primerjava ogrodij ................................................................................................. 21
Tabela 2.2: Primerjava med odprtokodnim in lastnim sistemom ............................................. 26
Tabela 2.3: Primerjava med Codeigntier in Laravel ogrodjem ................................................ 28
Tabela 4.1: Tabela ContactForm .............................................................................................. 42
Tabela 4.2: Tabela ContactFormLog ........................................................................................ 43
Tabela 4.3: Tabela Gallery ....................................................................................................... 43
Tabela 4.4: Tabela GalleryCategory......................................................................................... 44
Tabela 4.5: Tabela Slider .......................................................................................................... 44
Tabela 4.6: Tabela Language.................................................................................................... 45
Tabela 4.7: Tabela Menu .......................................................................................................... 46
Tabela 4.8: Tabela MenuCategory ........................................................................................... 46
Tabela 4.9: Tabela News .......................................................................................................... 47
Tabela 4.10: Tabela NewsCategory ......................................................................................... 48
Tabela 4.11: Tabela Page.......................................................................................................... 49
Tabela 4.12: Tabela PageCategory ........................................................................................... 49
Tabela 4.13: Tabela TemplateBlock ......................................................................................... 50
Tabela 4.14: Tabela TemplateCss ............................................................................................ 51
Tabela 4.15: Tabela TemplateHtml .......................................................................................... 51
Tabela 4.16: Tabela User .......................................................................................................... 52
1. UVOD
V današnjem času spletna stran igra pomembno vlogo na področju oglaševanja. Ljudje se za
izdelavo strani odločajo po tehtnem premisleku in glede na to, da jim lahko takšen način
oglaševanja prinese bistveno boljše rezultate kot drugi načini oglaševanja. Smisel spletne
strani je predstaviti izdelek, storitev ali tisto, kar želimo, da je vidno vsem. Namen je pridobiti
maksimalni delež povpraševanj ali pa zgolj predstaviti svoje podjetje z naborom osnovnih
informacij, ki jih določena ciljna skupina ravno tisti trenutek potrebuje. Na izvedbo spletnih
strani vpliva več različnih faktorjev, s pomočjo katerih definiramo uporabnost strani. V
samem izhodišču je pomembno, ali bo spletna stran statična, za kar se večinoma odločajo
podjetja, ki potrebujejo zgolj predstavitev, ali pa bo spletna stran dinamična, kar pomeni, da
se bo na njej dnevno, tedensko ali mesečno posodabljala vsebina. Vse to je odvisno od tipa
želene predstavitve. Glede na to, da se podjetja bolj zanimajo za dinamične spletne strani
oziroma CMS spletne strani, smo se tudi v podjetju odločili za celovito izdelavo omenjene
spletne aplikacije. CMS sistem oziroma »Content Managment System« je spletna aplikacija, s
pomočjo katere lahko uporabnik ureja vsebino neodvisno od lokacije, podjetja, ki je poskrbelo
za izdelavo strani, ter ostalih uporabnikov. Pri tem sistemu namreč uporabnik dobi le spletni
naslov, kjer mu je na voljo urejevalnik vsebin.
Sistem je grajen na osnovi ogrodja (angl. framework), ki omogoča bistveno boljšo izvedbo
programiranja, ker pri procesu uporablja t. i. objektno programiranje, ki naredi kodo veliko
bolj optimizirano, lažje razumljivo in bolj enostavno.
V diplomski nalogi je predstavljen celoten koncept izdelave spletne aplikacije CMS s
pomočjo ogrodja, ki smo ga na podlagi analize izbrali med različnimi ponudniki. Diplomska
naloga je razdeljena na dva dela, in sicer na teoretični ter praktični del. Teoretični del obsega
splošna teoretična pojasnila glede izdelave spletne aplikacije, primerjavo trenutno najbolj
uporabljenih ogrodij ter njihovo analizo. V praktičnem delu pa je opisan postopek izdelave
lastnega CMS sistema glede na predhodno izbrano ogrodje.
1.1
Opis problema
Največji problem podjetij, ki se ukvarjajo z izdelavo spletnih strani, je vprašanje, zakaj se
sploh odločiti za izdelavo lastnega CMS sistema in ustrezna določitev, v čem bo ta boljši od
že obstoječe izdelanih odprtokodnih (angl. opensource) sistemov. V diplomski nalogi smo
1
poskušali pojasniti, zakaj smo se odločili za izdelavo CMS sistema kar v lastni režiji. Že v
osnovi je mogoče izpostaviti kar nekaj prednosti. Vsak del kode, ki je bil napisan s strani
programerja, je v celoti osmišljen in je natančno določeno, čemu je namenjen. Prav tako
pomembno vlogo igra varnost – glede na to, da kot programerji poznamo kar nekaj ranljivosti
sistemov, lahko vse potencialne nevarnosti pri izvedbi lastnega sistema predvidimo in
odpravimo.
Kadar se odločamo za izvedbo izdelave lastnega CMS sistema ali katere koli druge spletne
aplikacije, se vedno poraja vprašanje, ali je boljša izbira izdelati sistem povsem na novo ali
začeti izdelavo s pomočjo že narejenih ogrodij. Tudi ta problem smo v diplomski nalogi
pojasnjevali ter na koncu ugotovili, katero je najbolj smiselno in najbolj uporabno ogrodje za
izdelavo želene spletne aplikacije.
1.2
Hipoteze
Pri izvedbi diplomske naloge smo si zastavili nekaj hipotez, s pomočjo katerih smo lažje
analizirali rezultate. Naše hipoteze so:

Odprtokodni CMS sistemi imajo bistveno več prednosti kot CMS sistemi, izdelani v
lastni izvedbi.

Ogrodja se močno razlikujejo med seboj po razpoložljivih virih, ki jih programer
nujno potrebuje pri razvoju produkta (navodila, skupnost, rešitve problemov ...).

Ogrodja se med seboj razlikujejo po podprtih funkcionalnostih, zato verjetno nekatera
ne podpirajo vseh komponent in funkcionalnosti, ki jih bomo potrebovali pri izdelavi
želenega sistema.
1.3
Cilj raziskave
Naš cilj v diplomski nalogi je seznanitev z različnimi ogrodji za izdelavo spletnih aplikacij, ki
olajšajo proces izdelave s pomočjo že izdelanih funkcionalnosti.
Naslednji cilj je analizirati pet najbolj uporabljenih ogrodij in izbrati tistega, ki bo najbolj
ustrezal specifikacijam glede na želene zahteve samega sistema. Končni cilj je izdelati spletno
aplikacijo, tako imenovani CMS sistem za urejanje vsebin, s pomočjo enega od vnaprej
izbranih ogrodij.
2
2. IZDELAVA SPLETNE STRANI
2.1
Kaj je spletna stran
Spletna stran je dokument, ki je kodiran v HTML jeziku. Omogoča nam, da svoje storitve,
dejavnosti in ponudbo predstavimo na spletu ter na ta način poskrbimo za oglaševanje,
prepoznavnost in lažji pretok informacij. V nadaljevanju so opisane osnove spletnih strani, ki
jih je potrebno poznati za učinkovito izdelavo.
2.2
Vrste spletnih strani
Glede na trenutni trend ločimo kar nekaj različnih tipov spletnih strani, pri čemer jih v osnovi
delimo na statične strani, ki se ne posodabljajo vsakodnevno, in dinamične spletne strani, ki
omogočajo kontinuirano posodabljanje in spreminjanje vsebin.
2.2.1 Statična spletna stran
Statična spletna stran je kodirana in napisana v HTML jeziku. Te strani so uporabne predvsem
v primerih, kjer vsebina ostane nespremenjena dlje časa. Slaba stran je, da moramo v primeru
sprememb znotraj vsebine ročno kodirati stran, pri čemer je mogoče uporabiti tudi
programsko opremo za tovrstno urejanje. Vsakršna sprememba dizajna strani je veliko bolj
zahtevna in dolgotrajna, zato lahko to dolgoročno za podjetje predstavlja velik strošek.
Statične strani imajo torej kar nekaj omejitev na področju spreminjanja vsebin in dizajna, ena
izmed ključnih prednosti pa je hitrost nalaganja vsebine, ki posledično pomeni boljšo
odzivnost. (Vining, 2008)
2.2.2 Dinamična spletna stran
Dinamične spletne strani so narejene tako, da se urejajo s pomočjo CMS urejevalnika, v
katerem so ločene oblika, menijska struktura, slike itd. na vsak strani posebej. Videz je
nadzorovan preko urejevalnika, vsebinski del pa se nahaja v podatkovni bazi. Večina CMS
sistemov, pa tudi forumi, blogi ter ostale spletne aplikacije delujejo na podoben način. Sistem
je odličen za hitre in enostavne posodobitve, saj omogoča enostavno manipulacijo s celotnim
spletnim mestom. (Vining, 2008)
3
Dinamična stran ima v primerjavi s statično kar nekaj prednosti, saj omogoča nenehno
posodabljanje spletnih vsebin. S pomočjo sistema lahko izdelamo nove spletne strani, dodamo
članke, uredimo menijsko strukturo itd. brez dejanskega znanja programiranja. Tudi, če
želimo spremembe opraviti na ravni grafične podobe, jo lahko enostavno uredimo in dodamo
preko vmesnika ter jo integriramo v sam sistem. (Vining, 2008)
2.3
Spletna aplikacija
Spletna aplikacija je vsaka spletna stran, ki v ozadju dinamično generira določen del izpisa
spletne strani in ima vnaprej določen namen. Prednost spletne aplikacije v primerjavi s
standardnimi spletnimi stranmi je, da omogoča izvajanje zahtevanih nalog brez kakšnih koli
večjih posegov v ozadju spletne strani. Spletna aplikacija se običajno povezuje s podatkovno
bazo in operacije se izvajajo na strani strežnika. Spletne aplikacije se večinoma izdelujejo v
skriptnem jeziku PHP, vse bolj pogosta pa je tudi uporaba jezika »Ruby«. Aplikacije so
uporabne predvsem v primerih, kjer je potrebna dinamika spletne strani in kjer se izvajajo
naloge, ki jih ni mogoče izvajati na statičnih spletnih straneh.
2.4
Tehnologije za izdelavo spletnih strani
2.4.1
Označevalni jezik HTML
HTML je kratica za HyperText Markup Language, ki je jezik za objavljanje na svetovnem
spletu. Je podmnožica mednarodnega standarda za izmenjavo elektronskih dokumentov
imenovan SGML (Standard Generalized Markup Language). Računalniki potrebujejo
programsko opremo, da lahko ta jezik razumejo. Ta programska oprema vključuje grafične
brskalnike, tekstovne in govorne naprave. (Breščak, 2010a)
HTML je označevalni jezik (angl. Markup Language). S posebnimi elementi se označi
besedilo, ki brskalniku pove, kako naj strukturo dokumenta prikaže. Obstaja način, kako
označiti naslove, odstavke, sezname, tabele in mnoge druge elemente. HTML je
hipertekstovni jezik (angl. Hypertext Language). Hipertekst uporablja postopek sklicevanja
na druge spletne dokumente, ki so med seboj povezani. Ko se v spletnem dokumentu klikne
povezavo, se v resnici kliče hiperpovezavo. (Breščak, 2010a)
HTML ponuja:

elektronsko objavo dokumentov z besedili, tabelami, fotografijami ...,
4

preusmeritev in napotitev na druge informacije s pomočjo hiperpovezav,

uporabo obrazcev, ki omogočajo iskanje po spletu, naročanje izdelkov ...,

dodajanje video izrezkov, zvoka in drugih aplikacij v dokumente. (Breščak, 2010a)
2.4.2 Jezik CSS
CSS je kratica, ki pomeni »Cascading Style Sheets«. Gre za predlogo, ki določa, kako bo
videti spletna stran v brskalniku.
Razvoj se je začel kot poskus, da izdelovalcem spletnih strani omogoči ločevanje vsebine
spletnih strani od dizajna, kar je tudi v celoti uspelo. Preboj CSS-a se je zgodil, ko se je
pojavila potreba po lepših, boljših in predvsem zahtevnejših spletnih straneh, saj je bistveno
poenostavil doseganje teh učinkov.
Ena od njegovih značilnosti je namreč, da je podoba spletnih strani ločena od kode, kar v
praksi pomeni, da je tudi menjavanje videza spletne strani enostavnejše, saj lahko npr. z nekaj
preprostimi ukazi zamenjamo celotno grafiko spletne strani. (Šunta, 2012)
Glede na to, da se tehnologije izdelave spletnih strani vse bolj razvijajo, smo tudi pri naši
spletni aplikaciji uporabili eno od predprocesorskih tehnologij za stilsko oblikovanje spletne
strani. Spodaj sta opisani tudi dve tehnologiji, ki sta vse bolj v uporabi, in sicer LESS ter
SASS.
Slika 2.1: Primer uporabe CSS
Vir: Zupančič, lastni prikaz (2015)
5
2.4.2.1 Predprocesorski jezik LESS
LESS uporablja samo eno sintakso, ki se zgleduje po CSS sintaksi in je tudi zelo podobna
SCSS sintaksi. Uporablja zavite oklepaje za označevanje posameznih blokov kode in podpičja
za ločevanje vrstic. Datoteke imajo končnico .less.
LESS je bil prvotno programiran v programskem jeziku Ruby, v novejših verzijah pa je le-ta
zamenjan z JavaScriptom. Za razliko od tehnologije SASS lahko LESS teče tako na strani
strežnika (angl. server-side) kot na strani uporabnika (angl. client-side). (Polc, 2012)
Slika 2.2: Primer uporabe LESS
Vir: Zupančič, lastni prikaz (2015)
2.4.2.2 Predprocesorski jezik SASS
SASS (angl. Syntactically Awesome Stylesheets) uporablja dve različni sintaksi. Prva
sintaksa je bila podobna sintaksi Haml, ki uporablja zamike za ločevanje posameznih blokov
kode in nove vrstice brez ločil na koncu.
Druga z imenom SCSS se zgleduje po CSS sintaksi in uporablja zavite oklepaje za
označevanje posameznih blokov kode ter podpičja za ločevanje vrstic. Datoteke imajo
končnico .sass oziroma .scss.
6
SASS je bil prvotno programiran v programskem jeziku Ruby, kasneje pa so se pojavile tudi
druge oblike, na primer PHP za Drupal. SASS lahko uporabljamo le na strežniški strani
(server-side). (Polc, 2012)
2.4.3 Skriptni jezik Javascript
JavaScript je skriptni jezik, ki se uporablja pri izdelavi interaktivnih spletnih strani. JavaSript
nam omogoča, da na spletno stran dodamo interaktivne funkcionalnosti, validacijo spletnih
obrazcev, funkcije za komunikacijo s strežnikom, … (Presentia, 2008)
Sintaksa JavaScript jezika je podobna sintaksi jezika C, mnogo značilnosti in struktur pa si
deli z Javo, s katero sicer ni povezana. Java in JavaScript imata zelo različno semantiko.
(Presentia, 2008)
JavaScript je predmetno orientiran programski jezik, ki se uporablja za izračunavanje in
rokovanje z objekti na uporabniški strani. JavaScript sam po sebi ni uporaben – vanj ne
moremo vnašati podatkov in nam jih tudi ne vrača. Sodelovati mora s predmeti na
uporabniški strani ter njihovimi lastnostni in postopki. JavaScript omogoča integracijo
dokumentov HTML, spletnih komponent (Java, ActiveX...) in komponent plug-in tako, da
postanejo spletne strani dinamične.
JavaScript je primer predmetno orientiranega skriptnega jezika, ki se izvaja na strani
uporabnika. Namenjen je izračunavanju in rokovanju s predmeti v brskalniku. Sam po sebi ni
uporaben, temveč potrebuje aplikacijo, znotraj katere se nahaja. Uporablja se na mnogih
področjih, in sicer:

upravljanje z okni in okvirji,

meniji,

predstavitev besedila in slik,

upravljanje z zgodovino in s povezavami,

delo s piškotki (cookies),

oblikovanja integriranih uporabniških vmesnikov,

preverjanje vnesenih podatkov,

pošiljanje podatkov,

časovni nadzor. (Breščak, 2010b)
7
2.4.3.1 jQuery knjižnica
jQuery je JavaScript ogrodje ali knjižnica, ki vsebuje vnaprej napisane JavaScript funkcije.
Filozofija ogrodja jQuery se glasi: »Write less, do more« (z manj pisanja narediti več), kar
pomeni, da je programerjem z uporabo tega ogrodja potrebno napisati bistveno manj, da
dosežejo boljše rezultate. Le z nekaj kratkimi klici funkcij lahko s tem ogrodjem na stran
dodamo veliko animacij in efektov ter vizualnih učinkov, za katere bi brez ogrodja porabili
veliko več časa.
jQuery knjižnica se navezuje na naslednje funkcije uporabe:

izbor elementov HTML,

manipulacija elementov HTML,

manipulacija dokumentov CSS,

učinki in animacije JavaScript-a,

spreminjanje HTML DOM objekta,

uporaba tehnologije Ajax. (Lemajič, 2010)
Slika 2.3: Primer uporabe jQuery
Vir: Zupančič, lastni prikaz (2015)
2.4.3.2 AJAX - asihroni JavaScript
Asynchronous Javascript + XML (AJAX) ni tehnologija, temveč skupek tehnologij za
izdelavo interaktivnih spletnih aplikacij.
Tehnika AJAX vključuje:

XHTML in CSS standarda,
8

interakcijo s stranjo preko DOM (Domain Object Model),

izmenjavo podatkov s pomočjo označevalnega jezika XML in XSLT,

objekt XMLHttpRequest za asinhrono pridobivanje podatkov,

programski jezik JavaScript za povezavo vsega naštetega.
V klasičnih spletnih aplikacijah poteka interakcija med odjemalcem in strežnikom tako, da
vsaka uporabnikova akcija v spletnem vmesniku povzroči HTTP zahtevek, ki se pošlje
spletnem strežniku. Strežnik obdela zahtevek in pošlje rezultate nazaj k odjemalcu. Pri
naslednji akciji se celoten postopek ponovi. AJAX tehnika po drugi strani prispeva k temu, da
so spletne aplikacije bolj podobne namiznim. Deluje namreč tako, da se zahtevki k strežniku
pošiljajo asinhrono, kar pomeni, da lahko – medtem ko odjemalec čaka na odgovor strežnika
– uporabnik nemoteno uporablja spletno aplikacijo. Ko so podatki pripravljeni, jih s pomočjo
JavasScript-ta prikažemo na spletni strani, ne da bi pri tem morali osvežiti celotno stran.
Posebnost tehnike AJAX je tudi ta, da se pri komunikaciji med odjemalcem in strežnikom
prenese veliko manj podatkov, saj se osvežujejo le deli spletne aplikacije in ne celotna stran.
Posledica tega je bolj odzivna in do uporabnika prijaznejša spletna aplikacija. (Marinšek,
2010)
2.4.4 Odzivni dizajn za mobilne naprave
Porast tabličnih računalnikov in pametnih telefonov vse bolj zahteva, da se sodobne spletne
strani poleg standardne verzije izdelajo tudi v mobilni verziji – responsive design. To pomeni,
da je videz strani na računalniku klasičen, medtem ko se stran ustrezno prilagodi različnim
tabličnim računalnikom in pametnim telefonom na način, da uporabniku zagotavlja enostavno
brskanje in učinkovit ogled strani. Odzivni dizajn spletnih strani obsega oblikovanje strani na
način, da se vedno prilagodijo napravi, s katero uporabnik dostopa do spletne strani. Pri
odzivnem oblikovanju strani je tudi upoštevano, da se funkcionalnost prilagodi zaslonom na
dotik. Namen tega je, da se pripravi le ena spletna stran, ki je prilagojena različnim napravam.
Mobilne spletne strani so narejene tako, da sistem samodejno zazna uporabnike, ki stran
obiščejo preko mobilnega telefona ali tabličnega računalnika, ter prikaže vsebine v mobilni
različici, prilagojeni specifiki posamezne naprave.

Grafična prilagoditev: ekran mobilnega telefona oz. tablice zahteva posebne grafične
prilagoditve spletne strani, pri čemer je potrebno poskrbeti, da izhodiščna predstavitev
tudi na novem mediju doseže želeni namen.
9

Prilagoditev funkcionalnosti: brskanje po internetu z mobilnih telefonov in tablic ima
določene omejitve, zato je potrebno mobilne spletne strani prilagoditi tako, da
uporabnik hitro in enostavno najde informacije ter lahko dostopa do vseh funkcij, ki
jih zagotavlja klasična spletna stran.
Trenutno najbolj uporabljena ogrodja za izdelavo mobilnih spletnih strani so: Boostrap,
Foundation, Yaml, Kube in Toast. (1A Internet , 2014)
Slika 2.4: Odzivne spletne strani
Vir: 1A Internet (2014)
2.4.4.1 Twitter Bootstrap ogrodje za izdelavo odzivnih spletnih strani
Twitter Boostrap je zbirka sodobnih orodij, s katerimi lahko na enostaven način zastavimo
osnovno ogrodje sodobnih spletnih strani. Je odprtokoden način, ki je zaščiten z licenco
Apache License 2.0. Vsebuje številne sodobno oblikovane HTML komponente, kot so
tipografija, tabele, obrazci, gumbi, ikone, navigacija, poleg njih pa tudi JavaScript
komponente, kot so modalna okna, zaslonski namigi, spustni meniji idr. ter mrežo, ki
omogoča enostavno razporeditev elementov.
V zadnjem času je na trgu prisotnih vse več različnih brskalnikov in naprav, zato je enoten
videz spletnih strani zelo težko doseči. Ravno to je glavna prednost Twitter Bootstrap-a, saj
razvijalcem omogoča doseganje enotnega videza v skoraj vseh brskalnikih. Vse bolj
popularen postaja tudi zato, ker na enostaven način omogoča ustvarjanje modernega in
funkcionalnega vmesnika. Njegovo popularnost dokazuje tudi trenutno prvo mesto na
GitHub-ovi lestvici najbolj popularnih projektov. (Župec, 2012)
10
2.4.5 Programski jezik PHP
PHP je jezik, ki je prerasel svoje ime. V osnovi je bil namreč zamišljen kot niz makrov, ki bi
piscem kode pomagali pri vzdrževanju osebnih domačih strani, ime pa se je razvilo iz
njegovega namena. Od takrat so bile zmožnosti PHP-ja razširjene iz niza pripomočkov v
programski jezik s številnimi možnostmi, s katerim je mogoče upravljati velika spletna okolja,
ki jih poganjajo zbirke podatkov. (Zandstra 2004, str. 7)
PHP je uradno znan kot PHP:Hypertext Preprocessor. Je strežniški skripnti jezik, pogosto
zapisan v povezavi s HTML-jem. V nasprotju z običajno HTML stranjo se PHP skripta izvaja
na strani strežnika, medtem ko se HTML izvaja na strani uporabnika. Elementi HTML v
skripti so izpuščeni, koda PHP pa je prevedena in izvedena. S kodo PHP v skriptu lahko
poizvedujemo po zbirkah podatkov, izdelujemo slike, beremo in zapisujemo datoteke,
komuniciramo z oddaljenimi strežniki. (Zandstra 2004, str. 8)
Je fleksibilen, dinamičen jezik, ki podpira celo vrsto programskih tehnik. Ima celoten nabor
lastnosti objektnega programiranja, ki vključujejo podporo za razrede (angl. classes),
abstraktne razrede, vmesnike (angl. interfaces), dedovanje, konstruktorje, kloniranje, izjeme
in še več. Podpira prvorazredne funkcije, kar pomeni, da je lahko funkcija dodeljena
spremenljivki. Tako uporabniško definirane ali vgrajene funkcije se lahko sklicujejo na
spremenljivko in se jih kliče dinamično. Funkcije se lahko podaja kot argumente drugim
funkcijam (lastnost višji red – higher-order funkcije) in tako lahko funkcije vrnejo tudi druge
rezultate podanih funkcij. Rekurzija, lastnost, ki dovoljuje funkciji, da kliče samo sebe, je
podprta v jeziku, vendar se večina PHP kode osredotoča na iteracije. (Lockhart, 2015)
Slika 2.5: Primer uporabe PHP kode
Vir: Zupančič, lastni prikaz (2015)
11
2.4.5.1 PHP Composer
Composer je orodje za upravljanje z odvisnostmi v PHP. Omogoča deklariranje odvisnih
knjižnic, ki jih izbrani projekt potrebuje, in jih ustrezno namesti vanj. Composer ni paketni
urejevalec, temveč je njegov namen, da pakete na ravni določenega projekta namesti v izbrani
direktorij in poskrbi za pravilno integracijo. Paketov nikdar privzeto ne namesti globalno,
temveč preveri odvisnosti oziroma razlike med drugimi paketi in na podlagi tega izdela
posodobitev oziroma namestitev. Composer tako vedno najde, katero verzijo paketa je
potrebno namestiti ter jo po potrebi prenese in namesti v projekt. Eden od osnovnih
repozitorijev za prenos in namestitev paketov je Packagist, med drugimi pa se uporabljajo tudi
Bitbucket in GitHub. (Adermann in Boggiano, 2015)
2.4.6
Podatkovni jezik MySQL
SQL (angl. Structured Query Language) je standardiziran jezik za upravljanje zbirk podatkov
RDBMS (angl. Relational DataBase Managenent System), torej zbirk, v katerih so podatki
shranjeni v povezanih dvodimenzionalnih tabelah. Temeljni elementi relacijske zbirke
podatkov so tabela (angl. table), stolpec (angl. column), vrstica (angl. row) in polje (angl.
field), ki predstavlja presek stolpca in vrstice. V celici je shranjen posamezen podatek oz.
vrednost. Na voljo je cela paleta sistemov za upravljanje relacijskih zbirk podatkov. Med
najbolj razširjene sodijo Oracle DB, IBM DB2, IBM Informix, PostgreSQL, MySQL, MS
Access in MS SQL Server. Čeprav je jezik SQL standardiziran, se lahko sintaksa jezika med
različnimi sistemi RDBMS precej razlikuje, saj so številni razvijalci uvedli različne omejitve
in razširitve (npr. T-SQL, PL/SQL). S stališča uporabe to pomeni, da je uspeh vrivanja SQL
pogojen s poznavanjem specifičnih lastnosti ciljne zbirke podatkov. Izvajanje ukazov ob
pomoči stavkov SQL imenujemo poizvedba (angl. query). (Strosar, 2008)
Večina aplikacij za zbirke podatkov, kot je na primer MySQL, se izvaja kot strežniška
storitev, na katero se lahko priključujejo uporabniki iz istega ali celo iz oddaljenih
računalnikov. Ko je uporabnik priključen na strežnik in ima ustrezne pravice, lahko izbere
zbirko podatkov. (Zandstra 2004, str. 246)
Zbirka podatkov vsebuje različno število tabel s podatki, vsaka pa je urejena v vrstice in
stolpce. Vsak stolpec sprejema le vnaprej določen tip podatkov, INT na primer za celo število
ali VARCHAR za spremenljivo število znakov do določene meje. (Zandstra 2004, str. 246)
12
Slika 2.6: Primer SQL poizvedbe
Vir: Zupančič, lastni prikaz (2015)
2.4.7 Templating system
»Templating system« je način prikazovanja PHP kode v HTML sintaksi brez uporabe PHP
sintaks. Uporablja tako imenovane HTML spremenljivke, ki so ob prikazu spletne strani
zamenjane s PHP kodo. Pri tem sistemu je prednost predvsem v tem, da je HTML sintaksa
ločena od PHP sintakse, kar pomeni, da je prikazovalni del v celoti ločen od logike, ki se
izvaja v ozadju. Dodatna prednost je tudi enostavna uporaba »Template« sintaks, saj ni
potrebno predhodno znanje PHP skriptnega jezika.
Najpogosteje trenutno uporabljeni »Templating« sistemi so: Blade, Twig in Smarty.
Pomembne prednosti, zaradi katerih se odločimo za tak sistem prikaza spletnih strani, so:

nova enostavna sintaksa,

avtomatsko izpuščanje kode,

enostavnejša uporaba za ne-razvijalce spletnih aplikacij,

varnost, saj je prikaz ločen od logike, ki se izvaja v ozadju. (Underwood, 2014)
Slika 2.7: Primer uporabe templating sistemov
Vir: Zupančič, lastni prikaz (2015)
13
2.4.7.1 Blade
Blade je preprost, a zmogljiv templating sistem, ki je v osnovi integriran v Laravel ogrodju.
Za razliko od ostalih postavitvenih sistemov deluje na principu dedovanja elementov in
razdelitvi po več sekcijah. Vse Blade predloge se označuje s končnico .blade.php. Omenjen
template sistem ima možnost uporabe enostavnih izpisov, uporabo if pogojev, uporabo zank,
podajanje komentarjev, izpisovanje jezikovnih značk ter prepisovanje sekcij. (Laravel, 2014)
Slika 2.8: Primer uporabe Blade
Vir: Zupančič, lastni prikaz (2015)
2.4.7.2 Twig
Prednosti uporabe Twig templating sistema so: hitrost, varnost in fleksibilnost. Twig pretvori
predlogo v navadno optimizirano PHP kodo. Ta pretvorba omogoča zmanjšanje v primerjavi z
regularnim PHP-jem na njegov minimum. Vgrajen ima sistem za preverjanje kode in s tem
prepreči blokiranje neprimerne kode uporabnikom, ki imajo direkten dostop do spletnih
predlog. V ta namen se lahko Twig uporablja predvsem tam, kjer do predlog dostopajo tudi
uporabniki sami in imajo tako popoln nadzor nad podano kodo. Razvijalcem omogoča tudi
definiranje poljubnih tagov in filtrov, ki jih lahko uporabijo kasneje v kodi. (Twig, 2012)
14
Slika 2.9: Primer uporabe Twig
Vir: Zupančič, lastni prikaz (2015)
2.4.7.3 Smarty
Smarty je template sistem za PHP, ki ima predstavitveno plast (HTML/CSS) ločeno od logike
same aplikacije. To pomeni, da je PHP koda logika aplikacije, ki je ločena od predstavitve. Je
enostaven sistem tako za frontend kakor za backend izdelavo spletnih strani. Omogoča zelo
enostavno in hitro razvijanje tako dizajnerjem kot tudi programerjem. Je relativno enostaven
za vzdrževanje z zelo enostavno razumljivo sintakso, kjer predznanje PHP-ja ni pogoj. Tako
lahko s pomočjo tega sistema izdelamo fleksibilne spletne strani in pri tem uporabljamo
poljubno določanje sintakse. (Ohrt, 2015)
Slika 2.10: Primer uporabe Smarty
Vir: Zupančič, lastni prikaz (2015)
15
2.5
PHP MVC ogrodje
2.5.1
Kaj je PHP ogrodje
PHP je svetovno znan skriptni jezik, ki je tolikšen uspeh dožive zaradi več razlogov, kot so
fleksibilnost, preprostost in veliko število uporabnikov. Programiranje v PHP-ju ali katerem
drugem jeziku lahko postane monotono in ponavljajoče (angl. Boilerplate), zato si je mogoče
v takem primeru pomagati s PHP ogrodjem.
PHP ogrodje racionalizira razvoj spletnih aplikacij, napisanih v PHP, saj zagotavlja osnovno
strukturo za izdelavo spletnih aplikacij. Drugače povedano PHP ogrodje pomaga spodbuditi
hiter razvoj aplikacij, prihrani čas, omogoča izgradnjo bolj stabilnih aplikacij in zmanjšuje
količino ponavljajočega kodiranja za razvijalce. Ogrodje lahko pomaga tudi začetnikom
graditi bolj stabilno aplikacijo z zagotavljanjem ustrezne interakcije s podatkovno bazo in
kodiranje na predstavitvenem sloju. (Reyes, 2009)
Splošna ideja ogrodja se navezuje na tako imenovani »Model View Controller« (MVC).
MVC je arhitekturni vzorec v programiranju, ki loči poslovno logiko od uporabniškega
vmesnika. Črka M označuje tako imenovani Model, ki se nanaša na podatkovno strukturo,
črka V View, ki se nanaša na predstavitveni sloj oziroma grafični vmesnik, ter C Controller,
ki se nanaša na poslovno logiko delovanja spletne aplikacije. V bistvu MVC razbije razvojni
proces na način, da individualno delamo na določenem segmentu, ki je večinoma neodvisen
od drugih, zaradi česar je kodiranje v PHP bistveno hitrejše in manj zahtevno. (Reyes, 2009)
2.5.2
Uporaba PHP ogrodja
Eden izmed ključih razlogov za uporabo PHP ogrodij je skrajšanje časa razvoja spletnih
aplikacij. Pri izdelavi spletnih aplikacij se razvijalci vedno srečujejo z istimi težavami, in
sicer:

zasnova uporabniškega vmesnika,

poslovna logika,

manipulacija podatkovne baze,

nadzor uporabniškega dostopa.
Drugi razlog je stabilnost izdelka. PHP ima enostavno sintakso, zaradi česar ga mnogi
začetniki izberejo za učenje. Hkrati je PHP zelo neobčutljiv na napake in mnogokrat se lahko
zgodi, da razvijalec sploh ne ve, da je naredil napako, saj spletna stran vseeno deluje, vendar
16
pa obstaja nevarnost, da se zaradi napake ogrozi varnost spletne strani. Problematiko
enostavnosti kodranja v PHP-ju pomaga zmanjševati uporaba primernega PHP ogrodja. K
stabilnosti prispeva tudi dejstvo, da ogrodje razvijajo profesionalni razvijalci, ki spremljajo
odkrite napake in skrbijo za popravke ogrodja. To še posebej velja za odprtokodna ogrodja,
kjer lahko za popravke poskrbi kar skupnost, ki pregleda ogrodje in ugotavlja morebitne
napake. Razvijalcu spletne aplikacije, ki ogrodje uporablja, tako ni potrebno skrbeti za
napake, ampak le uveljavi popravek ogrodja, ko je ta na voljo. Na ta način lahko na enostaven
način odpravi napake v vseh aplikacijah, ki to ogrodje uporabljajo. (Kovačič, 2010)
Slika 2.11: MVC vzorec
Vir: DITEA (2015)
2.5.3 Najpopularnejša PHP ogrodja
PHP ogrodja so skupek že izdelanih funkcij, s pomočjo katerih lahko spletno aplikacijo
izdelamo bistveno hitreje in bistveno bolj varno. Na spletu je trenutno na voljo okoli dvajset
17
različnih PHP ogrodij, ki vsebujejo približno enake funkcionalnosti, vendar se glede na način
delovanja in lastnosti med seboj razlikujejo po učinkovitosti. Glede na to, da smo za
razvijanje sistema potrebovali PHP ogrodje, smo se odločili za analizo trenutno petih
najpopularnejših ogrodij ter glede na razpoložljive vire določili, katero je najbolj primerno za
izdelavo našega CMS sistema.
Na spodnji sliki je razvidna trenutna popularnost uporabe PHP ogrodij.
Slika 2.12: Primerjava uporabe ogrodij
Vir: Skvorc (2013)
Na podlagi grafa popularnosti smo se odločili, da najbolj primerno PHP ogrodje izberemo
med naslednjimi: Laravel, Phalcon, Symfony2, Codeigniter in Yii.
2.5.3.1 Laravel
Laravel je spletno aplikacijsko ogrodje z izrazito elegantno sintakso. Poskrbi namreč, da so
najtežja opravila, kot so avtorizacija, preusmerjanje, seje ipd., opravljena lažje in bolj
enostavno.
Ogrodje pomaga pri tem, da razvoj spletne aplikacije poteka enostavno brez žrtvovanja
funkcionalnosti aplikacije. Ogrodje bodo v bodoče tudi funkcionalno integrirali v jezike, kot
so Ruby on Rails, ASP.NET MVC ter Sinatra.
18
Je enostavno dosegljivo orodje, ki se ga uporablja predvsem za bolj kompleksne in robustne
aplikacije. Še posebej dobra funkcionalnost je migracija sistema in enostavno integrirana
testna podpora, ki celostno poskrbi za dobro uporabniško izkušnjo. (Laravel, 2014)
2.5.3.2 Phalcon
Phalcon je večnamensko spletno ogrodje. Izdelano je na MVC arhitekturi, ki ponuja dodatke,
kot so ORM, objektno orientirane knjižnice, templating sistem, caching, paginacijo in kup
ostalih dodatkov, ki jih najdemo na njihovi spletni strani.
Ogrodje Phalcon je unikatno ogrodje, ker se ga ne prenese le na strežnik in tam naloži, kot je
to praksa ostalih ogrodij, ampak se ga namesti kot dodaten PHP modul. Namestitev ne vzame
več kot nekaj minut in namestitvena dokumentacija je vidna na njihovi spletni strani.
Pomembno je tudi dejstvo, da je to ogrodje odprtokodno, kar pomeni, da lahko uporabnik po
svoji želji prilagodi kodo. (Cogneau, 2013)
2.5.3.3 Symfony2
Symfony je skupek PHP komponent in eno vodilnih PHP ogrodij za izdelavo spletnih strani
ter spletnih aplikacij, ki so grajene na Symfony komponentah. Na tem ogrodju je grajenih kar
nekaj znanih spletnih aplikacij, kot so: Drupal, phpBB(forum) ter eZ Publish. Za vzdrževanje
skrbi velika skupnost uporabnikov in razvijalcev, ki skrbijo za redne popravke in novosti.
Njihova filozofija poudarja profesionalnost, uvajanje najboljših praks, standardizacijo in
interoperabilnost aplikacij. (SensioLabs, 2014)
2.5.3.4 CodeIgniter
CodeIgniter je aplikacijsko razvijalno ogrodje za vse, ki gradijo spletne strani z uporabo PHP
skriptnega jezika. Njihov glavni cilj je omogočiti hiter razvoj spletnih aplikacij od samega
začetka, saj vsebuje mnogo knjižic, ki so potrebne za enostavno implementacijo želenih
ciljev. Ogrodje omogoča kreativno izvedbo projekta z minimaliziranjem celotne kode, ki je
potrebna za določeno nalogo.
Ogrodje je primerno predvsem za uporabnike, ki

potrebujejo majhno ogrodje,

želijo učinkovito izvajanje,
19

želijo dobro združljivost na vseh standardnih spletnih strežnikih (lahko deluje na več
različnih verzijah),

imajo minimalne zahteve glede konfiguracije,

ne želijo uporabljati komandne vrstice,

nimajo želje po dodatnih templating sistemih,

potrebujejo dobro dokumentacijo. (Technology, 2015)
2.5.3.5 Yii
Yii je visokozmogljivo PHP ogrodje za izdelavo spletnih 2.0 aplikacij. Razvijalcem pomaga
izdelati kompleksno spletno aplikacijo v najkrajšem možnem času. Yii je definirana kot "Yee"
oziroma "ji" in je akronim za besedo "Yes It Is". Je brezplačno odprtokodno ogrodje, izdelano
v PHP5 skriptnem jeziku, ki promovira enostavno oblikovanje in podpira hiter razvoj. Glavni
cilj je omogočiti hiter, enostaven in učinkovit končni produkt. (LLC, 2015)
2.5.4
Primerjava spletnih ogrodij
Pri izbiri spletnega ogrodja se je potrebno vprašati, katere funkcionalnosti bomo potrebovali
pri izvedbi spletne aplikacije. Najbolje je vnaprej določiti faktorje, na podlagi katerih bomo
lahko ovrednotili različna ogrodja za izdelavo spletne aplikacije. Spodnja tabela prikazuje prej
omenjenih pet najbolj uporabljenih ogrodij in njihove specifikacije.
20
Tabela 2.1: Primerjava ogrodij
Phalcon
BSD
Maj 2015
2.0.1
PHP 5.3
/
/
Servisi
Laravel
MIT
Maj 2015
5.1
PHP 5.3.7
CLI
ELOQUENT
ORM
/
Templating sistem
Avtentikacija
XSS
CSRF
SQL vrivanje
Enostavnost
Blade, PHP
Da
Da
Da
Da
5
/
Licenca
Zadnja posodobitev
Verzija
Minimalne zahteve
Generacija kode
ORM
/
Ne
Da
Da
Da
3
Symfony2
MIT
Maj 2015
2.6.7
PHP 5.3.2
CLI
Doctrine2,
Propel
/
Codeigniter
BSD
Marec 2015
3.0
PHP 5.1.6
/
AR
Yii
BSD
Marec 2015
2.0.3
PHP 5.4
Yii CLI, Gii
AR, DAO
XML-RPC
PHP, Twig
Da
Da
Da
Da
3
PHP
Soap / Web
Service
PHP, Prado
Ne
Da
Da
Da
4
Ne
Da
Da
Da
5
Vir: Zupančič, lastna raziskava (2015)
Iz zgornje tabele je mogoče razbrati prednosti oziroma slabosti posameznih ogrodij, ki jih
bomo analizirali. Za lažje razumevanje smo v nadaljevanju opisali posamezno lastnost.

Licenca posameznega ogrodja sicer ni toliko pomembna pri sami uporabi, kljub vsemu
pa poda osnovno informacijo o posameznem ogrodju. Med izbranimi ogrodji Laravel
in Symfony2 uporabljata licenco MIT, medtem ko ogrodja Phalcon, Codeginiter, Yii
uporabljajo BSD licenco.

Zadnja posodobitev, ki je trenutno na voljo, je pomemben podatek, saj lahko
razberemo, kako redno posamezna ogrodja spremljajo trenutne trende in skrbijo za
posodobitve tekom celotnega leta. Iz tabele je razvidno, da so verzije posameznih
ogrodij dokaj redno posodobljene. Codeigniter in Yii sta zadnji verziji pridobila v
mesecu marcu, ostala ogrodja pa so bila zadnjič posodobljena v mesecu maju.

Minimalne zahteve so bistvenega pomena, še posebej v primeru, če naš strežnik ne
omogoča določenih zahtev, ki so potrebne za popolno funkcionalnost ogrodja. Večina
izmed izbranih ogrodij za uporabo potrebuje verzijo PHP-ja na strežniku 5.3, izjema
pa je Codeigniter, ki lahko deluje še na starejši verziji PHP 5.16. Posebnost je tudi
Laravel, ki potrebuje dodatno vključen modul mcrypt, namenjen kriptiranju in
dekriptiranju podatkov.

Za generacijo kode (angl. Code Generation) Laravel in Symfony2 uporabljata CLI
(angl. Command line interface) oziroma ukazno vrstico, s pomočjo katere lahko lažje
izvedemo namestitev posebnih paketov in celotno namestitev ogrodja, Codeginiter in
21
Phalcon v osnovi ne uporabljata nobenega vmesnika, medtem ko Yii uporablja Yii
CLI, ki je identičen Laravel ter Symfony 2 vmesniku, ter tudi Gii vmesnik, ki je vezan
na spletno okolje, do katerega lahko dostopamo preko spleta.

Spletnih servisov izbranima ogrodja nima integriranih, pri čemer Codeginiter po
privzeti namestitvi že vsebuje XML-RPC servis, Yii pa vsebuje Soap.

Avtentikacija je proces, pri katerem strežnik, na katerega se uporabnik povezuje,
preveri vnesene podatke in na ta način potrdi identiteto posameznega uporabnika.
Avtentikacijo imata nameščeno Laravel in Symfony 2, ostala tri ogrodja pa ne, kar je
lahko velika pomanjkljivost.

XSS (angl. Cross-site scripting) je tip napada, kjer se v ozadju brez naše vednosti
križno izvaja več skriptov, ki pošiljajo podatke na našo spletno stran in lahko s tem
povzročijo veliko škodo. Vsa obravnavana ogrodja vsebujejo zaščito pred XSS
napadom.

CSRF (angl. cross-site request forgeries) je vrsta napada, kjer napadalec uporabnikov
zahtevek na spletni strani prevzame in s tem brez njegove vednosti dostopa do
določenih podatkov. Tudi to zaščito vsebujejo vsa obravnavana ogrodja.

SQL vrivanje je vrsta napada na spletno aplikacijo, kjer pri generiranju SQL poizvedb
s pomočjo vrivanja različnih simbolov napadalec pridobi podatke, ki so shranjeni v
podatkovni bazi. Napada se lahko ubranimo z uporabo raznih ORM modelov, preko
katerih se vsa vnosna polja filtrira in tako izloči nepotrebne oziroma nedovoljene
znake.
Glede na zadnjo postavko v naši tabeli smo podali tudi lastno mnenje glede enostavnosti
uporabe in splošne uporabnosti posameznih ogrodij. Zaključili smo, da si najvišjo oceno pet
(5) zaslužita Codeigniter ter Laravel, sledi pa jima ogrodje Yii z oceno štiri (4). Najslabše
ocenjena sta Phalcon in Symfony2, ker sta zelo kompleksna in zahtevna za uporabo, poleg
tega pa imata tudi slabšo dokumentacijo.
2.5.5
Analiza zastavljenih hipotez ter izbira spletnega ogrodja
Izbira spletnega ogrodja za izdelavo spletnih aplikacij je eden prvih korakov, potrebnih pred
začetkom izvedbe, zato je potrebno predhodno ovrednotiti naše zahteve in potrebe. Izbirali
smo med trenutno najbolj uporabljenimi ogrodji, ki jih najdemo na spletu, in sicer Laravel,
Phalcon, Symfony2, Codeigniter in Yii. Vsa ogrodja so si relativno podobna, saj imajo
22
podobne lastnosti in funkcionalnosti, vendar je za optimalno izbiro potrebno upoštevati še
nekaj ključnih faktorjev. V našem primeru so to bili sledeči: dokumentacija, enostavna
uporaba in implementacija.
2.5.5.1 Dokumentacija
Dokumentacija za posamezno ogrodje je zelo pomembna predvsem zato, ker nam omogoča,
da določeno aplikacijo izdelamo točno tako, kot smo si jo zamislili. Pomembno je, da je
dokumentacija napisana zelo nazorno, saj tako pripomore k poenostavitvi izdelave spletne
aplikacije.
V nadaljevanju je predstavljen kratek pregled posameznih dokumentacij.

Laravel – vsebuje zelo dobro dokumentirane posamezne segmente funkcij, ki jih
vsebuje.
Obsežno
dokumentacijo
vsebujeta
tako
domača
privzeta
stran
http://laravel.com/ kot tudi stran https://laracasts.com/. Laracasts spletna stran vsebuje
še posebej dokumentirane video posnetke, kjer je nadzorno prikazanih večina
segmentov.

Phalcon – spletna stran z dokumentacijo je suhoparna in nezanimiva. Predvsem
moteče je to, da na njihovi spletni strani nimajo podanih konkretnih iztočnic in bolj
podrobno razloženih posameznih segmentov. Na splošno je to ogrodje slabše
dokumentirano in ima tudi slabšo podporo s strani uporabnikov.

Symfony2 – The Symfony Book, kakor so poimenovali svoj dokumentacijski vzorec,
je eden izmed zelo dobrih primerov, kako uporabniku na enostaven in razumljiv način
razložiti dokumentacijo. Pogrešali smo le iskalnik po dokumentaciji, ki bi olajšal
proces iskanja.

Codeigniter – njihova dokumentacija je odlično predstavljena, saj so nazorno
razloženi konkretni primeri z logičnimi zaključki. Potek dokumentacije je enostavno
sledljiv. Imajo tudi kar nekaj spletnih strani, kjer so objavljeni video vodiči za
posamezne segmente. Podpora uporabnikov je še posebej velika, saj je forum
Codeigniter zelo dobro obiskan in se na njem dnevno pojavlja veliko objav.

Yii – dokumentacija ogrodja na njihovi spletni strani je precej ohlapna. Podanih je
nekaj osnovnih primerov s kodo in kratkimi komentarji, vendar je to z vidika
uporabnika premalo. Slabost njihove dokumentacije je tudi ta, da imajo na uradni
strani ogrodja dokumentacije podane v obliki knjig, ki jih je mogoče kupiti preko
23
Amazona, kar pomeni, da celotna dokumentacija ni brezplačna, temveč je zanjo treba
odšteti 10 € in več.
Glede na opravljeno analizo v kategoriji Dokumentacija izstopata ogrodji Laravel in
Codeigniter. Njuna dokumentacija je enostavno razumljiva ter dobro podprta tako s strani
uporabnikov kot na forumih in Youtube kanalih. Kot zmagovalno smo izbrali ogrodje
Codeginiter, predvsem zato, ker je bistveno boljše najdeno na spletnih iskalnikih in je
podpora uporabnikov občutno večja. Ena od prednosti je tudi ta, da je že pred prihodom nove
verzije Codeginiterja podana nova dokumentacija, medtem ko Laravel še ni v celoti posodobil
dokumentacije v skladu z novo verzijo ogrodja.
2.5.5.2 Enostavna uporabna in implementacija
Enostavna uporaba je predvsem ob prvi uporabniški izkušnji s posameznim ogrodjem še
posebej pomembna. Glede na to, da se pri večini ogrodij uporablja tako imenovani MVC
vzorec programiranja, ki ima ločeno logiko od predstavitvenega vzorca, je koncept na začetku
še toliko težji. Enostavno uporabo smo testirali predvsem na primeru inštalacije kompletnega
sistema ter konfiguracije za pripravo uporabe ogrodja. Implementacijo posameznega ogrodja
pa smo testirali na podlagi namestitve oziroma izdelave dodatnega modula.
Laravel
Namestitev ogrodja je ob prvi uporabi precej zahtevna. Laravel uporablja tako imenovani
Composer za direktno namestitev s spletnega mesta GitHub. Slabost je ta, da je v primeru, če
nimamo direktnega dostopa do spletnega strežnika, potrebna precej zahtevna ročna
namestitev. Prednost ogrodja je ta, da omogoča izredno enostavno posodobitev obstoječe
spletne aplikacije na popolnoma novo verzijo. Enako enostavna je namestitev tako
imenovanih paketov.
Phalcon
Namestitev je enostavna, ker poteka s snemanjem celotnega ogrodja in namestitvijo ogrodja
direktno v želen direktorij. Kljub temu pa je glede na slabo podporo ogrodja težje izdelati in
pridobiti že prej izdelane knjižnice. Glede na to, da je za izdelavo novega vtičnika potrebnega
ogromno časa za razumevanje koncepta tega ogrodja, bi ga začetniku odsvetovali.
24
Symfony2
Namestitev je podobna namestitvi Laravel ogrodja, saj tudi Symfony2 uporablja CLI vmesnik
za namestitev ogrodja in dodatnih knjižic ter paketov. Glede na podano dokumentacijo je
namestitev dokaj enostavna. Programiranje v Symfony2 ogrodju je zahtevno in za začetnika
dokaj neprijazno. Prednost pripisujemo predvsem zelo dobro zamišljeni arhitekturi, čeprav je
ta za uporabnika precej kompleksna.
Codeigniter
Namestitev Codeigniter-ja je relativno enostavna. Postopek je podoben kot pri Phalcon
ogrodju. Z uradne spletne strani prenesemo kompletno verzijo sistema, razširimo v podan
direktorij in nastavimo nekaj najosnovnejših nastavitev za pravilno delovanje. Namestitev je
enostavna tudi za začetnika, k temu pa dodatno pripomore zelo dobra dokumentacija. Glede
na to, da ogrodje privzeto ne vsebuje Composerja, je namestitev dodatnih paketov otežena. Pri
namestitvi novih paketov je tako potrebno s spletne strani prenesti celoten paket, ga razširiti v
pravilne mape in nadaljevati z implementacijo paketa v sistem.
Yii
Namestitev poteka zelo enostavno kot pri Codeigniter in Plahcon ogrodju. Integracija novih
vtičnikov je dokaj otežena, saj je potrebno dobro razumevanje navodil, ki so napisana precej
ohlapno. Vsekakor tega ogrodja ne bi priporočali začetniku, saj je za splošno razumevanje
ogrodja potrebnega več časa, poleg tega pa je tudi koncept dokaj nerazumljiv.
Enostavnost uporabe ogrodja je zelo pomembna še posebej za začetnike. V ožjem izboru pri
tej kategoriji so bila ogrodja Laravel, Symfony2 in Codeigniter, ko so najbolj enostavna za
uporabo in so, kot je bilo že prej omenjeno, tudi zelo dobro dokumentirana. Symfony2 sicer
izpade iz kategorije enostavnejše uporabe predvsem zaradi preveč kompleksne strukture.
Tako smo se na koncu odločali med dvema ogrodjema, in sicer Laravel ter Codeigniter. Sicer
je Laravel po namesitvi zelo enostaven za uporabo, konfiguracijo in implementacijo novih
vtičnikov oziroma knjižic, vseeno pa je preveč zahteven za začetnika. Če bi se odločali med
omenjeni ogrodji kot začetniki, bi vsekakor izbrali ogrodje Codeigniter, ki je namenjeno za
enostavnejše, manjše in manj kompleksne projekte.
2.5.5.3 Analiza hipotez
V diplomski nalogi smo oblikovali naslednje hipoteze:
25

Odprtokodni CMS sistemi imajo bistveno več prednosti kot CMS sistemi, izdelani v
lastni izvedbi.

Ogrodja se močno razlikujejo med seboj po razpoložljivih virih, ki jih programer
nujno potrebuje pri razvoju produkta (navodila, skupnost, rešitve problemov …).

Ogrodja se med seboj razlikujejo glede na podprte funkcionalnosti, zato verjetno
nekateri ne podpirajo vseh komponent in funkcionalnosti, ki jih bomo potrebovali pri
izdelavi želenega sistema.
Na opredelitev prve hipotezi vpliva kar nekaj faktorjev. Odprtokodni (angl. Opensource)
sistemi so sistemi, ki so jih izdelala podjetja ali posamezniki in so namenjena brezplačni
uporabi, če ta zadostuje njihovi licenci uporabe. Prednost takšnih sistemov je, da so dobro
podprti. Običajno imajo večje število uporabnikov, ki v skupnosti ažurno sporočajo napake in
poskrbijo, da so le-te hitro in učinkovito odpravljene. Tako je poskrbljeno za redne izboljšave
in posodobitve sistema. Prednost je tudi ta, da je vsaka sprememba v relativno kratkem času
vidna na spletu in uporabnik je hitreje obveščen o vseh novostih oziroma spremembah.
CMS sistemi, izdelani v lastni izvedbi, se večinoma uporabljajo v privatne namene in niso
izpostavljeni javni uporabi – posledično imajo manjše število uporabnikov. Njihova prednost
je predvsem varnost, saj je koda vidna le redkim in tako obstaja manjša verjetnost za zlorabo
sistema. Če že pri sami izvedbi poskrbimo za maksimalno varnost, se lahko tako izogibamo
večini varnostnih lukenj in smo izpostavljeni manjšim grožnjam. Še ena od dodatnih
prednosti izdelave sistema v lastni režiji je, da dejansko poznamo vsak delček kode, ki smo ga
implementirali v sistem, in lahko tako samostojno hitreje najdemo rešitve v primeru težav.
Spodnja tabela prikazuje prednosti/slabosti uporabe odprtokodnih oziroma v lastni izvedbi
izdelanih CMS sistemov.
Tabela 2.2: Primerjava med odprtokodnim in lastnim sistemom
-
Odprtokodni sistemi
Konstantne posodobitve
Večji nabor uporabnikov
Enostavnost implementacije
Večja podpora uporabnikom
dodatnih spremembah
Večja ranljivost
Možno
lastno
poseganje
popravljanje kode
-
ob
in
Vir: Zupančič, lastna raziskava (2015)
26
Sistemi izdelani v lastni izvedbi
Manjši po velikosti, saj vsebujejo le
določene funkcionalnosti
Dobro poznavanje vsakega dela kode
Boljša varnost zaradi manjšega nabora
uporabnikov
Večinoma namenjeni privatni uporabi
Glede na podane prednosti/slabosti posameznih sistemov lahko sklepamo, da je ne glede na
njihovo ranljivost uporaba odprtokodnih sistemov bistveno boljša in enostavnejša, in sicer
predvsem zato, ker večji nabor uporabnikov skrbi za konstantno posodabljanje in posredno
tudi za izboljšanje ranljivosti. Tako lahko to hipotezo potrdimo.
Druga hipoteza »Ogrodja se močno razlikujejo med seboj po razpoložljivih virih, ki so za
programerja nujno potrebni pri razvoju produkta (navodila, skupnost, rešitve problemov …)«
smo podrobneje analizirali v predhodnem poglavju, ko smo primerjali pet najpogosteje
uporabljenih ogrodij in ugotavljali razlike oziroma skupne lastnosti. Ugotovili smo, da se
ogrodja že v osnovi razlikujejo med sabo po dokumentaciji. Pri večini ogrodij težavo
predstavlja površna oziroma nepopolno razložena dokumentacija, ki bi sicer pripomogla k
bolj učinkovitem in hitrejšem razvijanju želene aplikacije. Kot je bilo omenjeno, je glede
dokumentacije vsekakor najbolje razdelano ogrodje Codeigniter, ki poskrbi, da je vsak
segment posebej zelo nazorno in kvalitetno razložen in tako omogoča uporabniku z najmanj
truda narediti sistem, kot si ga želi. Prav tako smo tudi ugotovili, da ima vsako ogrodje
različno podporo skupnosti. Laravel in Codeigniter imata zelo dobro podprto skupnost tako z
video zapisi kot z objavami na forumih, kar nam omogoča hitrejšo pot do rešitve
posameznega problema pri razvoju spletne aplikacije. Tudi to hipotezo je mogoče potrditi, saj
se je izkazalo, da se sistemi močno razlikujejo po razpoložljivih virih.
Glede zadnje hipoteze se je izkazalo, da imajo nekatera ogrodja kar nekaj prednosti oziroma
slabosti v primerjavi drugimi. Pri podrobni analizi petih ogrodij smo namreč med njimi
opazili kar nekaj razlik Pri naši spletni aplikaciji je pomembno predvsem, da je poskrbljeno za
varnost, torej za dobro zaščito pred XSS, CSRF in SQL napadi. Prav tako je pomembna tudi
velikost ogrodij. Med obravnavanimi je kar nekaj ogrodij zelo velikih, kar pomeni, da
vsebujejo tudi mnogo za nas nepotrebnih knjižic. To pomeni, da pri našem procesu izdelave
ne bodo uporabne in smo jih zato izločili iz ožjega izbora. Pomembna je tudi čim lažja
integracija določenih knjižic, paketov in modulov v ogrodje z najmanjšim vložkom dela. Na
tem segmentu izstopa ogrodje Laravel. Tudi zadnjo hipotezo je mogoče potrditi, saj vsako
ogrodje ne podpira vseh funkcionalnosti, ki jih potrebujemo, oziroma podpira tiste
funkcionalnosti, ki jih ne potrebujemo, pri čemer je zaradi tega sistem prevelik, zahtevnejši in
počasnejši.
27
2.5.5.4 Izbira ogrodja
Kljub opravljeni analizi izbira najbolj optimalnega ogrodja ni bila enostavna, saj so si po
funkcionalnostih med seboj zelo podobna. Za lažjo odločitev smo določili nekaj ključnih
faktorjev, ki so najpomembneje vplivali na končno izbiro. Dva ključna faktorja, ki sta
odtehtala pri odločitvi, sta dostopnost in kvaliteta dokumentacije ter enostavnost namestitve in
integracije oziroma programiranje novih funkcionalnosti.
V ožjem izboru sta bili ogrodji Laravel in Codeigniter. Glavna prednost ogrodja Laravel je ta,
da uporablja Composer, s pomočjo katerega lahko z enostavno namestimo nove knjižnice
oziroma pakete, ki jih potrebujemo. Poleg tega omogoča tudi Eloquent ORM – tako
imenovano orientacijsko dostopanje do podatkovne baze, medtem ko Codeigniter uporablja
AR – active record dostop do podatkovnega modela.
Glavni prednosti Codeigniter ogrodja sta enostavna namestitev in enostavna nadaljnja
uporaba. Na podlagi analize smo oblikovali tudi primerjalno tabelo in se s pomočjo tega lažje
odločali, katero ogrodje bo za nas najboljše za izdelavo omenjenega sistema.
Tabela 2.3: Primerjava med Codeigntier in Laravel ogrodjem
Codeigniter
- Odlična dokumentacija
- Enostavna uporaba za začetnika
- Majhna velikost
- Podpora na starejših strežnikih
- Dobra podpora s strani skupnosti
Laravel
- Zelo dobro razdelan arhitekturni vzorec
ogrodja
- Težji za uporabo za začetnike
- Primernejši za izdelavo kompleksnejših
aplikacij
- Enostavna implementacija dodatnih paketov
Vir: Zupančič, lastna raziskava (2015)
Kot je razvidno iz zgornje tabele imata obe ogrodji tako prednosti kot slabosti.
Obe sodita med boljša ogrodja na trgu z zelo dobro podporo tako s strani proizvajalcev kot
tudi s strani skupnosti. Glede na to, da je bila za nas ena izmed pomembnih lastnosti
enostavnost – tako namestitev kot konfiguracija in implementacija novih knjižic oziroma
paketov, je izstopalo ogrodje Laravel, saj je pri CodeIgniter-ju je ta del bolj težaven.
Ena od prednosti Codeigniter ogrodja je, da deluje tudi na starejših strežnikih, ki imajo
ohlapnejšo podporo. Za Laravel ogrodje po drugi strani še dodatno potrebujemo tudi vtičnik
za kriptiranje oziroma dekriptiranje posredovanih podatkov, ki ga je potrebno posebej naložiti
na strežnik.
28
Odločali smo se tudi, če bi uporabili odprtokodni sistem ali bi se lotili izdelave lastnega CMS
sistema. Sicer je odprtokodni sistem že izdelan z vsemi funkcionalnostmi, vendar smo se
kljub temu odločili, da izdelamo sistem v lastni izvedbi, in sicer predvsem zaradi varnostnega
vidika in zaradi tega, ker v osnovi nima že v naprej izdelanih funkcionalnosti, ki jih
potrebujemo.
Na podlagi celotne analize prednosti in slabosti ter s pomočjo podanih hipotez smo se
odločili, da bomo spletno aplikacijo izdelali v lastni izvedbi na Codeigniter ogrodju.
29
3. PREDSTAVITEV CMS SISTEMA
3.1
Predstavitev sistema
CMS sistem za urejanje vsebine je eno najenostavnejših orodij za spreminjanje vsebine kjer
koli na spletu. S pomočjo orodja lahko ne glede na čas in kraj dostopamo do celotnih vsebin
spletne strani ter jih urejamo. Glede na dolgoletno prakso, znanje in želje naročnika smo se
izdelave CMS sistema lotili na takšnem nivoju, da lahko tudi uporabnik začetnik dostopa do
urejevalnika in ima celotno kontrolo nad urejanjem vsebine.
Sistem je sestavljen iz nekaj glavnih sekcij, ki so med sabo ločene. Vsaka sekcija ima
popolnoma ločen vsebinski urejevalnik ter ločene funkcije znotraj njega.
Pri takšnem sistemu je zelo pomembno, da poskrbimo za enostavno urejanje, saj zna večina
naročnikov uporabljati le osnovne funkcionalnosti, na primer stilske predloge, menjavanje
velikosti pisave, vnos poljubnih slik ipd.
Sistem za integracijo posameznega modula uporablja tako imenovan »templating system«, pri
katerem navedemo določeno značko v določen del kode in potem na tem delu kode značko
zamenjamo z želeno funkcijo, ki izpiše rezultate. Najpogosteje uporabljen »templating
system« je sicer Smarty, vendar ima drugačno shematiko, zato je izdelava lastnega sistema
veliko bolj enostavna in lažja za implementacijo.
Sistem, ki smo ga razvili, je izdelan na Codeigniter ogrodju, ki omogoča bistveno lažjo
izvedbo, hkrati pa tudi zadostno varnost sistema, ki preprečuje vdore. V osnovi se v
podatkovno bazo shranjujejo vsi podatki razen podatkov modula »Template editor«. Pri tem
modulu je posebnost ta, da sistem fizično na serverju izdela celotno direktorijsko sturkturo in
znotraj nje shranjuje posamezne datoteke v .tpl in .css oziroma .less formatu. Cilj takšnega
načina shranjevanja je predvsem ta, da sistem ne bere celotne stilske predloge, HTML
predloge ali posameznega bloka direktno iz podatkovne baze, ampak le iz datoteke, kar
pripomore k hitrejšemu nalaganju spletne strani. Tudi manipulacija z datotekami je lažja, saj
lahko do njih dostopamo tudi preko FTP strežnika in jih tako urejamo. Trenutno je v sistemu
30
razvitih kar nekaj modulov, ki so uporabni tako pri enostavnih kot tudi pri kompleksnih
spletnih straneh. Razviti moduli so naslednji:

Template editor – modul, s katerim urejamo stilsko (CSS) in shematsko (HTML)
spletno predlogo;

Page editor – urejevalnik, kamor vnašamo spletno vsebino, določamo splošne meta
podatke, ki so pomembni tako za optimizacijo kot za samega uporabnika;

Menu editor – menijski urejevalnik, v katerem gradimo celotno menijsko strukturo
spletne strani;

News – urejevalnik objav, kamor pišemo aktualne objave, ki bodo prikazane na spletni
strani;

Gallery – urejevalnik slik, v katerem izdelamo spletne albume, ki bodo prikazani na
spletni strani;

Slider – nalagalnik slik, ki bodo prikazane na vstopnih oziroma naslovnih straneh;

Contact form – urejevalnik kontaktnih obrazcev, kjer definiramo polja in izdelamo
obrazec za oddajo povpraševanja;

Language – urejevalnik večjezičnosti;

User – urejevalnik uporabnikov, kjer dodajamo nove uporabnike, ki jim omogočimo
dostop do spletne aplikacije.
Ključna funkcionalnost sistema je, da imajo uporabniki celoten nadzor nad urejanjem spletne
strani in lahko na postavljeni spletni predlogi samostojno urejajo vsebino. Dodajajo lahko
nove spletne strani, nove menijske postavke, objavljajo novosti, dodajajo nove albume s
slikami in še mnogo več. Glede na zahteve strank je mogoče tudi prilagoditi in dodati nove
module, ki olajšajo delo.
3.2
Predstavitev modulov
Cilj modulov je predvsem ta, da na uporabniku na enostaven način in z najmanj dodatnega
dela omogočimo različne po meri prilagojene funkcionalnosti. Glede na to, da je sistem
izdelan s pomočjo ogrodja, nam to še olajša delo v primeru izdelave celotnega sistema
oziroma pri dodelavi obstoječih ali novih modulov. Našteti so trenutno razviti moduli, ki so
privzeto integrirani v vsakem nameščenem sistemu in omogočajo samostojno delo. Vsak
posamezni modul vsebuje svojo tabelo v bazi, svoj »controller« in svoj »view«, da so moduli
med sabo res ločeni. Prav tako ima vsak modul svojo jezikovno datoteko, kar pomeni, da ga v
31
primeru potrebe po spletni strani v tujem jeziki zelo enostavno prevedemo. Integracija novih
modulov je trenutno še malo težji korak, saj uporabnik nima nadzora nad namestitvijo
oziroma ne more sam dodajati dodatnih modulov, tako da je ta del še vedno odvisen od nas, ki
mu storitev ponujamo.
3.2.1
Template editor
Urejevalnik spletne predloge oziroma tako imenovan »Template editor« je modul, ki nam
omogoča urejanje spletne predloge. Modul zajema »CSS editor« oziroma stilski urejevalec
spletne strani, »Html editor« oziroma označevalni jezik za opisovanje spletnih dokumentov in
»Block editor«, ki omogoča izdelavo posameznih delov spletne strani, katere kasneje
integriramo vanjo.
3.2.1.1 CSS editor
»CSS editor« omogoča neomejeno število dodajanja stilskih predlog, ki so definirane v CSS
jeziku. Novo stilsko predlogo kasneje definiramo pri izdelavi nove spletne strani in tako
spletna stran pridobi določen stil. Urejevalnik je prilagojen lažjemu in bolj enostavnemu
vnašanju novih stilov. Ta urejevalnik je v osnovi namenjen administratorju, od katerega se
pričakuje osnovno poznavanje CSS oz. LESS, ki je neke vrste naprednejši CSS. Posamezen
stil shranjuje v dveh ločenih datotekah. Najprej stil shrani kot .less datoteko, za tem pa sistem
s pomočjo skripta prevede celotno stilsko predlogo v tako imenovano »minify css«, ki je neke
vrste okleščena CSS datoteka, ki ne vsebuje presledkov ter drugih neuporabnih komentarjev.
Ta način je še posebej učinkovit, saj tako povečamo hitrost nalaganja spletne strani. Spodnja
slika prikazuje videz CSS kode znotraj urejevalnika.
32
Slika 3.1: CSS/Less stilski urejevalec
Vir: Zupančič, lastni prikaz (2015)
3.2.1.2 HTML editor
»Html editor« ravno tako kot »CSS editor« omogoča neomejeno število spletnih predlog. Pri
tem urejevalniku je zelo pomembno, da najprej definiramo postavitve posameznih blokov
znotraj HTML kode, kjer se potem bloki zamenjajo z namensko določeno kodo. Nekatere
izmed osnovnih značk za tako imenovan »templating system« so: Header, Left, Content,
Right in Footer. Te značke je potrebno definirati za kasnejšo integracijo blokov. Ta način
definiranja značk omogoča enostavnejše manipuliranje s spletnimi predlogami, saj za
posamezno značko poznamo točno določeno pozicijo, kjer bo ta definirana. HTML
urejevalnik je viden na spodnji sliki.
33
Slika 3.2: Html urejevalnik
Vir: Zupančič, lastni prikaz (2015)
3.2.1.3 Block Editor
»Block editor« je urejevalec posameznega bloka, katerega kasneje postavimo v spletno stran.
V tem urejevalniku je definirana določena koda – bodisi HTML ali JS, ki jo lahko neprestano
prilagajamo in dodeljujemo. Prednost takšnega sistema je predvsem ta, da lahko posamezen
del kode spremenimo le v eni datoteki, ta pa nato vpliva na spremembo vseh ostalih vsebin
oziroma delov kode na določeni spletni strani.
3.2.2
Page editor
Urejevalnik strani je namenjen vsebinskem urejanju novo dodanih, podvojenih ali že prej
obstoječih strani. Ko sta vneseni celotna HTML struktura in stilska CSS oziroma LESS
predloga, je naslednji korak vzpostavljanje spletne strani. Sekcija omogoča dodajanje,
urejanje, brisanje ter podvajanje spletnih strani, pa tudi ostale možnosti, kot je na primer
nastavitev za primarno stran, kar pomeni, da se posamezna stran naloži kot naslovna. Za
dodajanje spletne strani je potrebno v prvem delu definirati naslov strani v administraciji,
34
naslov dejanske strani ter izbrati HTML in CSS stilsko predlogo. Pomembno je, da v primeru
dveh različnih tipov izpisov strani ločimo videz posamezne predloge. Prav tako je potrebno
izpolniti dejansko ime strani, ki bo vidno na spletu, ter vnesti »Meta« podatke, ki lahko
pripomorejo k boljši optimizaciji in posledično boljši najdenosti spletne strani. Osnovni
princip je zmeraj takšen, da je HTML predloga naslovne spletne strani ločena od HTML
predloge podstrani, saj tako kasneje najlažje urejamo popravke.
Drugi del urejevalnika vsebuje »Page Content Title«, torej naslov vsebine v sekciji, in »Page
Content«, torej vsebino posamezne strani. Urejevalnik za vsebino je napredni WYSIWYG
editor, ki je identičen Word urejevalniku.
Tretji del urejevalnika vsebuje blokovsko postavitev, pri kateri določimo pet različnih pozicij,
že v naprej dodanim blokom. Osnovno določeni bloki so: Header, Left, Content, Right,
Footer. Možnosti dodajanja blokov, brisanja in sortiranja so neomejene. Ta sekcija dejansko
omogoča tako imenovano graditev spletne strani s pomočjo blokov. Spodnja slika prikazuje
izdelavo spletne strani z naprednim urejevalnikom vsebin.
Slika 3.3: Vsebinski urejevalnik
Vir: Zupančič, lastni prikaz (2015)
3.2.3 Menu editor
Menijska struktura posamezne spletne strani je zelo pomemben oziroma celo ključen del pri
izdelavi spletne strani. S pomočjo menijske strukture uporabnik dostopa do vseh ostalih strani
in podstrani spletne strani. Sistem omogoča popolno svobodo pri izdelavi menijske strukture,
pri čemer je pomembno upoštevati nekaj pravil, in sicer:
35
1. Spletna stran mora biti najprej dodana v modulu »Page editor« in mora imeti status
prikazana oziroma aktivirana.
2. Vsak meni se dodaja posebej glede na predhodno določen jezik. Če smo dodali novo
spletno stran v slovenskem jeziku, bo ta vidna le pri dodajanju menijske postavke na
slovenskem jeziku.
3. Da je stran dosegljiva, je potrebno stran dodati v meniju, kar pomeni, da pri dodajanju
izberemo določeno spletno stran, določimo naslov menija, url strani, njegovega starša (v
katerem glavnem meniju je stran umeščena) in status strani.
Ko so vsi te pogoji izpolnjeni, je podstran vidna na spletni strani. Na videz je sistem
kompleksen, ker je potrebno prvotno dodati stran in potem še menijsko postavko, vendar
dolgoletne izkušnje potrjujejo, da se ta pristop zelo dobro obnese, še posebej pri velikem
številu spletnih strani, zato ga uporabljamo še naprej.
Urejevalnik menijev med drugim omogoča tudi urejanje menijske postavke, skrivanje
oziroma prikaz postavke ter sortiranje postavke znotraj določenega menija/podmenija, kar
pomeni, da lahko meniju določimo tudi pozicijo oziroma spremenimo vrstni red. Globina
menijske strukture je neomejena, kar pomeni, da ima lahko menijska postavka nad sabo še
veliko število menijev.
Spodnja slika prikazuje menijsko strukturo dodanih strani v urejevalniku.
Slika 3.4: Menijska struktura
Vir: Zupančič, lastni prikaz (2015)
36
3.2.4 News
Novice na spletni strani omogočajo nenehno posodabljanje in osvežitev vsebin, kar zagotavlja
boljšo SEO optimizacijo spletne strani, ki pripomore k boljši najdenosti. Urejevalnik novic
omogoča objavljanje zadnjih obvestil, ki bodo prikazana na določenih straneh. Obvestila
vsebujejo naslov, splošen opis, logotip za posamezno novico, možnost izbire kategorij, če so
le te predhodno dodane, ter vsebino obvestila oziroma novice. Izpis novice je prilagojen
željam naročnika. Običajna praksa je, da določeno število novic z naslovom in kratkim
opisom predstavimo na naslovnici, ostale novice pa na podstrani, kjer so na voljo vse novice.
Ob kliku na novico se odpre podstran s podrobnejšo vsebino novice.
Slika 3.5: Izpis objavljenih novic v sistemu
Vir: Zupančič, lastni prikaz (2015)
3.2.5 Gallery
Foto galerija je del, kjer lahko stranke nalagajo poljubne fotografije. Modul omogoča
dodajanje novih kategorij oziroma albumov. Ko je dodan nov album, se vanj naložijo
fotografije. Sistem pri nalaganju slike izdela tudi tako imenovano sličico (angl. Thumbnail),
ki je namenjena optimizaciji spletne strani in boljši pregledanosti. Galerije, ki so vidne na
spletni strani, imajo vgrajen tudi pregledovalnik slik, s pomočjo katerega se sličice ob kliku
37
odprejo v »pop-up« oknu in jih lahko s pritiskom na smerne tipke ali z miško enostavno
pregledujemo.
Slika 3.6 prikazuje izgled foto galerije v administraciji.
Slika 3.6: Prikaz foto galerije
Vir: Zupančič, lastni prikaz (2015)
3.2.6
Slider
Slider je modul, ki omogoča nalaganje slik, ki bodo prikazane na naslovni oziroma uvodni
strani. Modul omogoča neomejeno nalaganje slik, spreminjanje vrstnega reda slik, vstavljanje
napisa na sliko, pripenjanje datotek oziroma URL naslova do določene spletne strani ter
spreminjanje statusa, torej če želimo naloženo sliko na spletni strani prikazati oziroma skriti.
Slika 3.7: Prikaz slider modula
Vir: Zupančič, lastni prikaz (2015)
38
3.2.7 Contact form
Kontaktni obrazec je modul, ki omogoča pošiljanje povpraševanj s spletne strani na enega ali
več e-mail naslovov. Kontaktni obrazec se izdela po želji naročnika, v osnovi pa vsebuje
nekaj osnovnih polj, kot so: Ime in priimek, Naslov, Email, Telefon ter polje Vaše sporočilo.
V administraciji definiramo vsa polja, ki jih bo kontaktni obrazec vseboval, ter določimo,
katera polja so obvezna za izpolniti. Obrazec vsebuje tudi »anti-spam« zaščito, ki v prvem
koraku preveri, če je izpolnjeno tudi skrito polje, v drugem koraku pa preveri verodostojnost
vnesenega e-mail naslova, kar pomeni, da preveri, če vneseni e-mail naslov resnično obstaja.
Slika 3.8: Kontaktni obrazec za povpraševanje
Vir: Zupančič, lastni prikaz (2015)
3.2.8 Language
Večjezične spletne strani so zelo pomembne za številne naročnike, saj omogočajo prikaz
izhodiščne spletne strani v različnih jezikih. Jezikovni modul omogoča neomejeno dodajanje
jezikov za posamezno spletno stran. Praksa pri omenjenem modulu je, da pred lansiranjem
projekta dodamo jezike ter razdelimo strani in vsebine na način, da stranka kasneje pregledno
dostopa do posameznih jezikov in ureja popravke oziroma spremembe.
39
3.2.9
User
Uporabniški modul omogoča dodajanje novih uporabnikov ter določanje njihovih pravic.
Uporabniški dostop je potrebno omejiti zaradi svobode pri določanju pravic posameznemu
uporabniku, pri čemer je na voljo več možnosti. Uporabnik, ki ima status »Super admin«, ima
nadzor nad celotnim sistemom. Uporabnik s statusom »Admin« ima podobne pravice, le da ne
more odstraniti »Super admin« uporabnika in ne vidi posameznih segmentov. Navadni
uporabnik, ki ima status »User«, ima na voljo le določene opcije. Nima vpogleda v
uporabniško sekcijo, nima vpogleda v sekcijo, kjer se ureja spletno predlogo, ter dostopa do
nekaterih drugih modulov, ki so načeloma zanj neuporabni.
Slika 3.9: Prijava v sistem
Vir: Zupančič, lastni prikaz (2015)
40
4. PREDSTAVITEV IZDELAVE SISTEMA
4.1
Uporabljena orodja za izdelavo spletne aplikacije
Sistem je zasnovan na Codeigniter MVC ogrodju, ki omogoča bistveno lažjo izvedbo
aplikacije. Za izdelavo smo uporabili skriptni jezik PHP, podatkovno bazo MySQL,
JavaScript knjižico jQuery z AJAX asihronim posredovanjem podatkov ter osnovni HTML5
in CSS3. Prednost tega sistema je tudi mobilna dostopnost do spletne aplikacije, saj temelji na
Bootstrap ogrodju, ki omogoča prilagajanje spletne strani glede na dimenzije našega ekrana.
Codeigniter ogrodje je znano že kar nekaj časa. Glede na obsežno podporo in dobro
dokumentacijo lahko rečemo, da je eno boljših ogrodij, ki jih najdemo na trgu. Sicer se je
nadgradnja sistema za določen čas ustavila zaradi problemov v podjetju avtorjev, vendar je
naslednik tega ogrodja nadaljeval z delom in poskrbel za nove verzije. Izdelave s pomočjo
ogrodja smo se lotili predvsem zato, ker nam je bistveno olajšalo izdelavo želene spletne
aplikacije, poskrbelo za boljšo varnost ter omogočilo bolj pregleden in sistematski način
programiranja. Dodatna prednost je tudi ta, da smo imeli dostop do nabora že vnaprej
izdelanih knjižic, ki jih je mogoče zelo enostavno implementirati in kasneje uporabiti pri sami
izvedbi.
4.2
Podatkovna struktura spletne aplikacije
Ob pričetku izdelave sistema smo se najprej lotili priprave podatkovne strukture aplikacije, ki
je naše vodilo skozi celoten projekt. Podatkovna struktura MySQL, ki se uporablja pri
omenjenem sistemu, je smiselno strukturirana na način, da so poizvedbe v podatkovno bazo
čim manj zahtevne in čim hitrejše, saj je to ključno predvsem takrat, ko do spletne strani
dostopa uporabnik z manj znanja.
Nekatere tabele vsebujejo kar nekaj tujih ključev, ki se navezujejo na druge tabele. Tuj ključ
je v tem primeru Primarni ključ druge tabele. Kar nekaj tujih ključev se ponavlja skoraj pri
vsaki tabeli, in sicer LanguageID – primarni ključ v tabeli Language, ki se navezuje na izbran
jezik, ter AuthorID – primarni ključ tabele User, kjer so shranjeni vsi uporabniki in s pomočjo
tega ključa dostopamo do podatkov uporabnika, ki je shranil vnos v podatkovno bazo.
Določenih je tudi nekaj atributov, ki so v več tabelah, na primer Status, kjer je shranjeno
stanje objave z 1 oziroma 0, kar pomeni, da je posamezni element viden oziroma skrit pri
41
prikazu v administraciji ali na strani, ter atribut TimeStamp oziroma TimeStampAdded, v
katerega se beleži čas, ko je bilo izvedeno shranjevanje v administraciji. CMS Sistem vsebuje
petnajst tabel. V spodnjem delu sta prikazana struktura posamezne tabele ter opis
posameznega atributa v tabeli. V posamezni tabeli je podan vsak atribut posebej in njegov tip.
Pri večini tabel smo uporabljali naslednje tipe atributov:

Int – celo število (angl. Integer), dovoljuje največ štiri bite;

Text – tekstovni format, ki ima največji dovoljen prostor 64 kilo bitov;

LongText – tekstovni format, ki ima na voljo do 4 giga bite prostora;

Varchar – tekstovni format, ki je omejen glede na število podanih znakov;

BigInt – celo število, ki dovoljuje največ osem bitov.
4.2.1
ContactForm
V tabelo ContactForm shranimo podatke o kontaktnem obrazcu. Podatkovna struktura
ContactForm vsebuje atribute ContactFormID – primarni ključ te tabele, LanguageID – tuji
ključ tabele Language, Form – atribut, kamor so shranjeni podatki kontaktnega obrazca, ter
Message – kamor so shranjeni podatki o izpisu obvestil, ko je kontaktni obrazec posredovan.
Tabela 4.1: Tabela ContactForm
ContactForm
Atribut
ContactFormID
LanguageID
Tip
int(255)
int(255)
Form
Message
text
text
Vir: Zupančič, lastna raziskava (2015)
4.2.2
ContactFormLog
V tabelo ContactFormLog so shranjeni podatki povpraševanj, ki jih uporabnik izpolni ter
pošlje na določen e-mail naslov. Struktura tabele je sledeča: ContactFormLogID – primarni
ključ te tabele, LanguageID – tuj ključ, ki se navezuje na tabelo Language, Message –
sporočilo, ki ga izpolni pošiljatelj, Tip – vrsta povpraševanja za lažjo filtracijo posredovanih
sporočil, TimteStamp – čas, ko je bilo povpraševanje posredovano.
42
Tabela 4.2: Tabela ContactFormLog
ContactFormLog
Atribut
ContactFormLogID
LanguageID
Message
Tip
TimeStamp
Tip
int(255)
int(255)
text
varchar(255)
bigint(255)
Vir: Zupančič, lastna raziskava (2015)
4.2.3 Gallery
Tabela Gallery se uporablja za shranjevanje slik za želeno fotogalerijo. Struktura tabele je
zgrajena iz atributov: GalleryID – primarni ključ te tabele, Title – naslov slike oziroma kratek
opis slike, Image – ime naložene slike na strežniku, GalleryCategoryID – tuji ključ, ki se
navezuje na tabelo GalleryCategory, AuthorID – tuji kjuč, ki se navezuje na tabelo User,
TimeStampAdded – čas naložene slike na strežnik in Status – kamor se beleži status
prikazane oziroma skrite slike.
Tabela 4.3: Tabela Gallery
Gallery
Atribut
GalleryID
Title
Image
GalleryCategoryID
AuthorID
Tip
int(255)
varchar(255)
varchar(255)
int(255)
int(10)
TimeStampAdded
Status
bigint(20)
int(1)
Vir: Zupančič, lastna raziskava (2015)
4.2.4 GalleryCategory
V tabeli GalleryCategory so shranjeni tako imenovani albumi galerij oziroma kategorije
galerij. Vsebuje sledeče atribute: CategoryID – primarni ključ te tabele, Title – naslov
kategorije, Content – kratek opis kategorije, CategoryUrl – url kategorije glede na podani
Title, AuthorID – tuj ključ, ki se navezuje na tabelo User, TimeStampAdded – shranjen čas
43
dodane kategorije, LanguageID – tuj ključ tabele Language ter Status – status prikazane
oziroma skrite kategorije.
Tabela 4.4: Tabela GalleryCategory
GalleryCategory
Atribut
CategoryID
Title
Content
Tip
int(255)
varchar(255)
longtext
CategoryUrl
AuthorID
TimeStampAdded
LanguageID
Status
varchar(255)
int(10)
bigint(20)
int(255)
int(1)
Vir: Zupančič, lastna raziskava (2015)
4.2.5
Slider
Tabela Slider se uporablja za shranjevanje slik za prikaz naslovnih slik. Struktura tabele je
zgrajena iz sledečih atributov: SliderID – primarni ključ te tabele, Title – naslov slike oziroma
kratek opis slike, Image – ime naložene slike na strežniku, Order – atribut, kjer je shranjena
pozicija slike, ki se uporablja za sortiranje po določenem vrstnem redu, AuthorID – primarni
ključ tabele User, TimeStampAdded – shranjen čas dodanega »slida« in Status – kjer lahko
prikažemo oziroma skrijemo določeno sliko.
Tabela 4.5: Tabela Slider
Slider
Atribut
SliderID
Title
Image
Order
AuthorID
Tip
int(255)
varchar(255)
varchar(255)
int(255)
int(10)
TimeStampAdded
Status
bigint(20)
int(1)
Vir: Zupančič, lastna raziskava (2015)
44
4.2.6 Language
Tabela vsebuje shranjene jezike, ki bodo uporabljeni na spletnih straneh. Atribut LanguageID
– primarni ključ te tabele, Title – ime jezika, TitleShort – kratica jezika, ki je uporabljena kot
url jezika, AuthorID – tuj ključ, ki se navezuje na tabelo User, TimeStampAdded – čas
shranjenega jezika, DefaultLanguage – definira, kateri jezik je nastavljen kot privzet jezik ter
Status – kjer lahko jezik začasno skrijemo oziroma prikažemo.
Tabela 4.6: Tabela Language
Language
Atribut
LanguageID
Title
TitleShort
Tip
int(255)
varchar(255)
longtext
AuthorID
TimeStampAdded
DefaultLanguage
Status
int(10)
bigint(20)
int(1)
int(1)
Vir: Zupančič, lastna raziskava (2015)
4.2.7 Menu
V tej tabeli je shranjena celotna menijska struktura spletne strani. Atribut MenuID – primarni
ključ omenjene tabele, Title – ime menijske postavke, PageID – tuj ključ, ki se nanaša na
tabelo Page, AuthorID – tuj ključ, ki se nanaša na tabelo User, TimeStampAdded – čas, ko je
bila menijska postavka shranjena, MenuUrl – url spletne strani, ki jo generira na podlagi
imena spletne strani, MenuCategoryID – tuj ključ, ki se nanaša na MenuCategory,
ParentMenuID – tuj ključ, ki se nanaša na tabelo Menu, kamor se shrani MenuID menijske
postavke, ki bo v tem primeru nad nivojem novo dodanega menija, Path – shranjeni MenuID
ključi vključno z vsemi ParentMenuID ključi, LanguageID – tuj ključ tabele Language, Status
– status, ali bo menijska postavka skrita ali prikazana.
45
Tabela 4.7: Tabela Menu
Menu
Atribut
MenuID
Title
PageID
AuthorID
TimeStampAdded
MenuUrl
Tip
int(255)
varchar(255)
int(255)
int(10)
bigint(20)
varchar(255)
MenuCategoryID
ParentMenuID
Path
Position
LanguageID
Status
int(255)
int(255)
varchar(255)
int(255)
int(255)
int(1)
Vir: Zupančič, lastna raziskava (2015)
4.2.8
MenuCategory
MenuCategory je tabela, kamor se shranjujejo kategorije za menijske postavke. CategoryID –
primarni ključ tabele, Title – naslov kategorije, Content – kratek opis kategorije, AuthorID –
tuj ključ tabele User, TimeStampAdded – čas dodane kategorije, LanguageID – tuj ključ
tabele Language in Status – stanje kategorije skrito oziroma prikazano.
Tabela 4.8: Tabela MenuCategory
MenuCategory
Atribut
CategoryID
Title
Content
AuthorID
Tip
int(255)
varchar(255)
longtext
int(10)
TimeStampAdded
LanguageID
Status
bigint(20)
int(255)
int(1)
Vir: Zupančič, lastna raziskava (2015)
4.2.9
News
News podatkovna struktura se uporablja za shranjevanje novic. NewsID – primarni ključ
tabele, Title – naslov novice, Description – kratek opis novice, ki obsega 250 znakov, Content
46
– vsebina novice, Logo – shranjeno ime slike za novico, NewsUrl – povezava, s katero
dostopamo do novice, ki je generirana na podlagi Title novice, NewsCategoryID – tuj ključ
tabele NewsCategory, AuthorID – tuj ključ tabele User, TimeStampAdded – čas dodane
novice, LanguageID – tuj ključ tabele Language in Status – kjer je shranjeno stanje objave
novice.
Tabela 4.9: Tabela News
News
Atribut
NewsID
Title
Description
Tip
int(255)
varchar(255)
text
Content
Logo
NewsUrl
NewsCategoryID
AuthorID
TimeStampAdded
LanguageID
text
varchar(255)
varchar(255)
int(255)
int(10)
bigint(20)
int(255)
Status
int(1)
Vir: Zupančič, lastna raziskava (2015)
4.2.10 NewsCategory
Tabela NewsCategory vsebuje shranjene kategorije, ki jih lahko uporabljamo pri novicah.
Struktura tabele je naslednja: CategoryID – primarni ključ tabele, Title – naslov kategorije,
Content – kratek opis kategorije, AuthorID – tuj ključ tabele, ki se navezuje na tabelo User,
TimeStampAdded – čas dodane kategorije, LanguageID – tuj ključ, ki se navezuje na tabelo
Language in Status – kjer je shranjeno stanje skrite oziroma prikazane kategorije.
47
Tabela 4.10: Tabela NewsCategory
NewsCategory
Atribut
CategoryID
Title
Content
AuthorID
TimeStampAdded
LanguageID
Tip
int(255)
varchar(255)
longtext
int(10)
bigint(20)
int(255)
Status
int(1)
Vir: Zupančič, lastna raziskava (2015)
4.2.11 Page
Tabela Page je namenjena shranjevanju spletnih strani, ki so prikazane, ko so le-te hkrati
dodane tudi v tabelo Menu. Tabela vsebuje sledeče atribute: PageID – primarni ključ tabele,
Name – ime strani, vidne v administraciji za lažje filtriranje in iskanje, Title – naslov spletne
strani, ki je izpisan na spletni strani, PageContentTitle – naslov vsebine spletne strani,
PageContent – vsebina spletne strani, AuthorID – tuj ključ, ki se navezuje na tabelo User,
CssID – tuj ključ, ki se navezuje na tabelo TemplateCss, HtmlID – tuj ključ, ki se navezuje na
tabelo TemplateHtml, Block – pozicije ter ključi vseh dodanih blokov iz tabele
TemplateBlock, PageCategoryID – tuj ključ za tabelo PageCategory, MetaKeywords – tagi, ki
se uporabljajo za optimizacijo spletne strani, MetaDescription – opis, ki se uporablja za
optimizacijo spletne strani, ContactForm – možnost, če želimo na določeni spletni strani
prikazati kontaktni obrazec, TimeStampAdded – čas dodane spletne strani, DefaultPage –
določitev privzete spletne strani, LanguageID – tuj ključ, ki se nanaša na tabelo Language in
Status – shrani stanje, če bo spletna stran prikazana oziroma skrita pred objavo.
48
Tabela 4.11: Tabela Page
Page
Atribut
PageID
Name
Title
Tip
int(255)
varchar(255)
varchar(255)
PageContentTitle
PageContent
AuthorID
CssID
HtmlID
Block
varchar(255)
longtext
int(10)
int(255)
int(255)
text
PageCategoryID
MetaKeywords
MetaDescription
ContactForm
TimeStampAdded
DefaultPage
int(255)
text
text
int(11)
bigint(20)
int(1)
LanguageID
Status
int(255)
int(1)
Vir: Zupančič, lastna raziskava (2015)
4.2.12 PageCategory
Tabela PageCategory vsebuje shranjene kategorije, ki jih lahko uporabljamo pri dodajanju
novih spletnih strani. Struktura tabele je naslednja: CategoryID – primarni ključ tabele, Title –
naslov kategorije, Content – kratek opis kategorije, AuthorID – tuj ključ tabele, ki se navezuje
na tabelo User, TimeStampAdded – čas dodane kategorije, LanguageID – tuj ključ, ki se
navezuje na tabelo Language in Status – ki prikazuje stanje prikazane oziroma skrite
kategorije.
Tabela 4.12: Tabela PageCategory
PageCategory
Atribut
CategoryID
Title
Content
AuthorID
TimeStampAdded
LanguageID
Tip
int(255)
varchar(255)
longtext
int(10)
bigint(20)
int(255)
Status
int(1)
Vir: Zupančič, lastna raziskava (2015)
49
4.2.13 TemplateBlock
TemplateBlock tabela je namenjena shranjevanju vseh blokov, katere uporabimo pri
dodajanju oziroma urejanju spletne strani. Sestavljena je iz sledečih atributov: BlockID –
primarni ključ tabele, Title – naslov bloka, BlockFile – pot do datoteke, kjer je shranjena
koda, AuthorID – tuj ključ, ki se navezuje na tabelo User, TimeStampAdded – čas
shranjevanja bloka v podatkovno bazo, LanguageID – tuj ključ, ki se navezuje na tabelo
Language in Status – ki shrani stanje prikaza oziroma skritosti bloka.
Tabela 4.13: Tabela TemplateBlock
TemplateBlock
Atribut
BlockID
Tip
int(255)
Title
BlockFile
AuthorID
TimeStampAdded
LanguageID
Status
varchar(255)
varchar(255)
int(10)
bigint(20)
int(255)
int(1)
Vir: Zupančič, lastna raziskava (2015)
4.2.14 TemplateCss
TemplateCss tabela je namenjena shranjevanju vseh stilskih predlog, ki jih uporabimo pri
dodajanju oziroma urejanju spletne strani. Sestavljena je iz sledečih atributov: CssID –
primarni ključ tabele, Title – naslov stilske predloge, CssFile – pot do datoteke, kjer je
shranjena stilska predloga formata .css, CssFileLess – pot do datoteke, kjer je shranjena
stilska predloga formata .less, AuthorID – tuj ključ, ki se navezuje na tabelo User,
TimeStampAdded – čas shranjevanja bloka v podatkovno bazo, LanguageID – tuj ključ in
Status – ki shrani stanje prikaza oziroma skritosti stilske predloge.
50
Tabela 4.14: Tabela TemplateCss
TemplateCss
Atribut
CssID
Title
CssFile
CssFileLess
AuthorID
TimeStampAdded
Tip
int(255)
varchar(255)
varchar(255)
varchar(255)
int(10)
bigint(20)
Status
int(1)
Vir: Zupančič, lastna raziskava (2015)
4.2.15 TemplateHtml
TemplateHtml tabela je namenjena shranjevanju vseh spletnih predlog, ki jih uporabimo pri
dodajanju oziroma urejanju spletne strani. Sestavljena je iz sledečih atributov: HtmlID –
primarni ključ tabele, Title – naslov spletne predloge, HtmlFile – pot do datoteke, kjer je
shranjena spletna predloga v formatu .tpl, AuthorID – tuj ključ, ki se navezuje na tabelo User,
TimeStampAdded – čas shranjevanja bloka v podatkovno bazo, LanguageID – tuj ključ in
Status – ki shrani stanje prikaza oziroma skritosti spletne predloge.
Tabela 4.15: Tabela TemplateHtml
TemplateHtml
Atribut
HtmlID
Title
HtmlFile
Tip
int(255)
varchar(255)
varbinary(255)
AuthorID
TimeStampAdded
Status
int(10)
bigint(20)
int(1)
Vir: Zupančič, lastna raziskava (2015)
4.2.16 User
V tabeli User so shranjeni vsi uporabniki, ki lahko dostopajo do administracije za urejanje
vsebine. Tabela vsebuje atribute UserID – primarni ključ, UserName – uporabniško ime za
prijavo v sistem, Password – shranjeno kriptirano geslo za prijavo v sistem, TimeStampAdded
– čas dodanega uporabnika, TimeStampLoged – čas zadnje prijave v sistem, IP – naslov
51
uporabnika, ki se je prijavil v sistem, Type – tip uporabnika (uporabnik, administrator), Status
– status uporabnika, ki posledično definira, ali je možna prijava v sistem.
Tabela 4.16: Tabela User
User
Atribut
UserID
UserName
Password
Tip
int(255)
varchar(255)
varchar(255)
TimeStampAdded
TimeStampLogged
IP
Type
Status
bigint(20)
bigint(20)
varchar(255)
int(11)
int(11)
Vir: Zupančič, lastna raziskava (2015)
4.3
Integracija ogrodja
Za izdelavo spletne aplikacije smo uporabili Codeigniter ogrodje, ki uporablja MVC
arhitekturni vzorec programiranja, da loči poslovno logiko od uporabniškega vmesnika. Tako
smo se odločili razdeliti poslovno logiko na najbolj logičen način, da lahko poskrbimo za
optimalno predelavo obstoječega modula brez večjih posegov v celotnem sistemu.
»Controllerje« smo ločili glede na posamezni modul in »View«, ki je znotraj »Controllerja«
deljen še na tri različne dele, in sicer view, edit ter add.
4.3.1
Model
Model je del, ki se nanaša na podatkovno strukturo in delo z njo. Razdeljen je na home_model
in admin_model. Home_model je razred, v katerem so definirane vse metode, ki jih
uporabljamo v home »Controllerju«, in sicer:

recordCount – metoda iz določene tabele vrne število zadetkov glede na določen
kriterij;

fetchDbPage – metoda glede na določen URI vrne vsebino spletne strani;

fetchDbTemplate – metoda glede na določen parameter PageID pridobi iz baze
podatke o spletni predlogi (CssID, HtmlID, BlockID);

fetchDbLanguage – metoda glede na vhodni parameter PageID vrne TitleShort in
LanguageID iz podatkovne baze;
52

fetchDbNews – metoda glede na vhodne parametre LanguageID, CategoryID vrne
izpis novic;

fetchDbGallery – metoda glede na vhodne parametre CategoryID vrne izpis galerije;

fetchDbGalleryCategory – metoda vrne izpis vseh dodanih kategorij oziroma albumov
za galerijo;

fetchDbMenu
–
metoda vrne
izpis
menijev
glede
na vhodni
parameter
PageID,LanguageID in ParentID v primeru, da gre za podmenije;

getFieldValue – metoda glede na vhodne parametre vrne izpis določenega atributa.
Admin model se uporablja v »Controllerjih«, ki jih uporabljamo v administratorskem
dostopu. Poskrbi za izpis določenih podatkov iz baze in vsebujejo naslednje metode:

checkLogin – metoda v podatkovni bazi glede na podana parametra Username in
Password preveri, ali uporabnik dejansko obstaja in glede na pravilnost podatkov vrne
informacijo kot true oziroma false;

recordCount – metoda iz določene tabele vrne število zadetkov glede na določen
kriterij;

getFieldValue – metoda glede na vhodne parametre vrne izpis določenega atributa;

getMaxFieldValue – metoda glede na vhodni parameter vrne največje število, ki je
shranjeno v tabeli;

fetchDb – metoda vrne izpis posameznega tabele iz podatkovne baze glede na
zahtevane parametre;

fetchDbEdit – metoda vrne podatke za urejanje glede na vhodni parameter ID iz
posamezne tabele;

fetchDbLimit – metoda vrne podatke glede na določene omejitve, ki se uporabljajo za
paginacijo elementov pri izpisu iz baze. Kot vhodne parametre definiramo Limit –
število elementov na stran, Table – tabelo iz katere izpisujemo, OrderType – vrstni red
izpisa ter LanguageID – parameter, ki ga pridobimo glede na izbran jezik;

fetchDbSearch – metoda vrne izpis zadetkov iz podatkovne baze glede na vnos
iskanega niza.
53
4.3.2
View
Vsak modul v administraciji uporablja svoj »Controller« oziroma del, ki se nanaša na
poslovno logiko, ter skrbi za logiko celotnega modula. Prav tako ima vsak posamezni modul
ločene »View« oziroma predstavitvene sloje, in sicer:

X_view.php – predstavitveni sloj, ki skrbi za izpis vseh dodanih elementov v
podatkovni bazi določenega modula;

X_add_view.php – predstavitveni sloj, ki vsebuje formular za vnos podatkov v
podatkovno bazo;

X_edit_view.php – predstavitveni sloj, ki vsebuje formular za urejanje vnosa iz
podatkovne baze.
V zgornjem primeru je X – ime posameznega modula, na katerega se nanaša.
4.3.3
Controller
Posamezni »Controller« v administraciji vsebuje metode, kot so index, add, edit, delete, post
in status. Opis posameznih metod so sledeči:

Index – metoda skrbi za izpis podatkov iz podatkovne baze in uporablja »View«
X_view.php za izpis podatkov;

Add – izpiše formular za dodajanje podatkov v podatkovno bazo in uporablja »View«
X_add_view.php;

Edit – metoda dobi kot vhodni parameter ID elementa, katerega želimo urejati. V
primeru, da ID v podatkovni bazi ne obstaja, se izvede preusmeritev na Index()
metodo. Kot predstavitveni sloj uporablja X_edit_view.php za prikaz formularja za
urejanje elementa z vnesenimi podatki;

Delete – metoda se uporablja za brisanje vnosa. Kot vhodni parameter pridobi ID,
katerega preveri v podatkovni bazi in v primeru, da zapis obstaja, poskrbi za
odstranitev;

Post – metoda skrbi za shranjevanje podatkov v bazo. Glede na to, da se uporablja
AJAX za asihrono pošiljanje podatkov formularja, imamo v vsakem »Controllerju«
posledično post metodo, ki se sproži ob pošiljanju formularja. Ta poskrbi za validacijo
vseh vnosnih polj, za izpis napak v primeru nepravilnosti ter za shranjevanje podatkov
v podatkovno bazo.
54
V home »Controllerju« imamo le index metodo, ki skrbi za izpis glede na vhodni parameter
URI. URI je lahko sestavljen največ iz dveh nizov. V primeru, da uporabljamo več jezikov, je
URI sestavljen iz dveh nizov. Prvi niz je ime jezika oziroma TitleShort atribut iz podatkovne
tabele Language, drugi niz pa je MenuUrl, ki je shranjen v tabeli Menu. Če imamo več
jezikov in je jezik nastavljen kot privzet, se nivo zmanjša v URI-ju na izpis MenuUrl - ja. URI
z dvema nivojema je zapisan v obliki »si/ime-zelene-spletne-strani.html«, kadar imamo le en
nivo, torej samo en jezik, pa je URI-ja zapisan v obliki »ime-zeljene-spletne-strani.html«.
Slika 4.1: Primer Controllerja za Gallery modul
Vir: Zupančič, lastni prikaz (2015)
Glavno delo »home controller«- ja je, da glede na vhodni parameter izpiše spletno stran, ki je
definirana z določenim URL naslovom. Tako glede na vhodni parameter preveri, če menijska
postavka s tem URL naslovom obstaja in hkrati če obstaja spletna stran, ki je bila dodana na
ta URL naslov. V primeru, da je URL naslov enak tistemu v podatkovni bazi, izpiše spletno
stran z vsemi dodanimi elementi in blokovsko ureditvijo, kakor smo jo definirali v
administraciji. V nasprotnem primeru nas preusmeri na privzeto nastavljeno spletno stran
določenega jezika.
55
5. ZAKLJUČEK
Izdelava spletne aplikacije je v današnjem času relativno enostavna, saj je na spletu na voljo
kar nekaj tako imenovanih spletnih ogrodij, s pomočjo katerih lahko spletne aplikacije
izdelamo v zelo kratkem času in na višjem nivoju. Medtem ko samostojne PHP skripte
uporabljajo proceduralni način programiranja, je izdelava spletnih aplikacij s pomočjo
spletnih ogrodij objektno orientirana. Ogrodja uporabljajo MVC vzorec, ki ima predstavitveni
sloj ločen od poslovne logike delovanja celotne aplikacije, kar je še posebej pri večjih
kompleksnih aplikacijah velika prednost.
V diplomski nalogi smo opravili analizo izbire optimalnega spletnega ogrodja za izdelavo
spletne aplikacije. Podrobneje smo obravnavali pet najpogosteje uporabljenih ogrodij in na
podlagi analize izbrali tisto, ki bi bilo najbolj smiselno za našo aplikacijo. V ožjem izboru sta
bili ogrodji Laravel in Codeigniter, ki sta kvalitetno dokumentirani in dokaj enostavni za
uporabo. Codeigniter je primeren predvsem za manj kompleksne aplikacije, medtem ko je
Laravel bistveno boljši za izdelavo kompleksnih aplikacij. Prednost Laravel-a je predvsem v
uporabi Composerja, s pomočjo katerega zelo enostavno implementiramo dodatne knjižnice
in druge pakete, ki jih potrebujemo v projektu.
Ugotavljali smo tudi, ali je bolj smiselno izdelati spletno aplikacijo povsem v lastni izvedbi
oziroma uporabiti že v naprej izdelane odprtokodne sisteme. Na podlagi celotne analize in
presoje smo se odločili, da izdelamo sistem v lastni izvedbi, saj se tako najbolj približamo
realizaciji naših želja in potreb. Za izdelavo splošno namenskega CMS sistema v lastni
izvedbi smo kot optimalno ogrodje izbrali Codeigniter, predvsem zato, ker smo že imeli kar
nekaj predhodnih izkušenj z uporabo omenjenega ogrodja.
V uvodu naloge smo določili tri hipoteze, ki so nam bile v pomoč pri izbiri spletnega ogrodja
za izdelavo spletne aplikacije. Prvo hipotezo, ki se glasi: »Odprtokodni CMS sistemi imajo
bistveno več prednosti kot CMS sistemi, izdelani v lastni izvedbi«, smo po opravljeni analizi
potrdili. Drugo hipotezo, ki se glasi: »Ogrodja se med seboj močno razlikujejo po
razpoložljivih virih, ki so za programerja nujno potrebni pri razvoju produkta (navodila,
skupnost, rešitve problemov …)«, smo po analizi prav tako potrdili. Tretja hipoteza se glasi:
»Ogrodja se med seboj razlikujejo po podprtih funkcionalnostih, zato verjetno nekatera ne
podpirajo vseh komponent in funkcionalnosti, ki jih bomo potrebovali pri izdelavi želenega
56
sistema«. Na podlagi hipotez smo se lažje odločili za izvedbo splošno namenskega CMS
sistema s pomočjo spletnega ogrodja Codeigniter.
V praktičnem delu diplomske naloge smo v celoti opisali postopek izdelave spletne aplikacije,
funkcionalnost posameznih modulov, njihovo podatkovno strukturo in opisali vse funkcije, ki
so uporabljene v sistemu ter opredelili njihov namen.
Če bi se danes ponovno odločali za izdelavo spletnega sistema s pomočjo katerega koli
ogrodja, bi se najverjetneje odločili za Laravel, saj se je v praksi izkazalo, da je kljub
kompleksnosti eno izmed najboljših spletnih ogrodij, ki trenutno obstajajo na trgu.
57
58
6. LITERATURA IN VIRI
1. 1A INTERNET (2014) Izdelava mobilnih spletnih strani - responsive design.
Dostopno prek: http://www.1ainternet.net/izdelava-mobilne-strani.html (23.4.2015).
2. ADERMANN, NILS in BOGGIANO, JORDI (2015) Composer: Introduction.
Dostopno prek: https://getcomposer.org/doc/00-intro.md (22.5.2015).
3. BREŠČAK, BORUT (2010a) Kaj je HTML? Dostopno prek: http://www.ssers.mb.edus.si/gradiva/rac/moduli/spletne_aplikacije/20_html/02_datoteka.html
(7.2.2015).
4. BREŠČAK, BORUT (2010b) Uvod v JavaScript. Dostopno prek: http://www.ssers.mb.edus.si/gradiva/rac/drugo/javascript/01_mapa/01_datoteka.html (14.5.2015).
5. COGNEAU, ALEXANDER (2013) Yet Another PHP Framework? Dostopno prek:
http://www.sitepoint.com/phalconphp-yet-another-php-framework/ (3.5.2015).
6. DITEA (2015) Model–View–Controller – MVC. Dostopno prek:
http://www.ditea.si/sl/tehnologije/ (22.4.2015).
7. KOVAČIČ, MATJAŽ (2010) Analiza in primerjava PHP ogrodij na primeru izdelave
spletnega dnevnika. Diplomsko delo. Maribor: Univerza v Mariboru, Fakulteta za
elektrotehniko, računalništvo in informatiko. Dostopno prek:
https://dk.um.si/Dokument.php?id=18449&lang=eng (7.2.2015).
8. LARAVEL (2014) Laravel: Introduction – Laravel. Dostopno prek:
http://laravel.com/docs/4.2/introduction (3.5.2015)
9. LEMAJIČ, JANI (2010) JavaScript ogrodje jQuery. Diplomsko delo. Maribor:
Univerza v Mariboru, Fakulteta za elektrotehniko, računalništvo in informatiko.
Dostopno prek: https://dk.um.si/Dokument.php?id=20870 (12.5.2015)
10. LLC (2015) About Yii. Dostopno prek: http://www.yiiframework.com/about/
(3.5.2015).
11. LOCKHART, JOSH (2015) PHP: The right way. Dostopno prek:
http://sl.phptherightway.com/ (14.5.2015).
12. MARINŠEK, BOŠTJAN (2010) Razvoj predstavitvene logike spletnih aplikacij z
uporabo sodobnih ogrodij. Diplomsko delo. Maribor: Univerza v Mariboru, Fakulteta
za elektrotehniko, računalništvo in informatiko. Dostopno prek:
https://dk.um.si/Dokument.php?id=13892 (12.5.2015).
59
60
13. OHRT, MONTE (2015) All about Smarty. Dostopno prek:
http://www.smarty.net/about_smarty (22.5.2015).
14. POLC, ŽIGA (2012) Kaj so SASS, LESS in Stylus? Dostopno prek:
http://www.pomagalnik.com/slovar/kaj-so-sass-less-in-stylus/ (12.5.2015).
15. PRESENTIA (2008) Kaj je javascript? Dostopno prek: http://www.presentia.si/bazaznanja-helpdesk/2008/kaj-je-javascript/ (7.2.2015).
16. REYES, JOEL (2009) Discussing PHP Frameworks: What, When, Why and Which?
Dostopno prek: http://www.noupe.com/development/discussing-php-frameworks.html
(24.12.2014).
17. SENSIOLABS (2014) What is Symfony. Dostopno prek: http://symfony.com/what-issymfony (03.05.2015).
18. SKVORC, BRUNO (2013) Best PHP Frameworks for 2014. Dostopno prek:
http://www.sitepoint.com/best-php-frameworks-2014/ (22.12.2014).
19. STROSAR, EDI (2008) Vrivanje SQL od A do Ž. Dostopno prek:
http://www.monitor.si/clanek/vrivanje-sql-od-a-do-z/123404/ (12.5.2015).
20. ŠUNTA, BLAŽ (2012) Kaj pomeni oznaka CSS? Dostopno prek: http://www.spletninasveti.si/kaj-je-css/ (7.2.2015).
21. TECHNOLOGY, BRITISH COLUMBIA INSTITUTE (2015) Welcome to
CodeIgniter. Dostopno prek:
http://www.codeigniter.com/userguide3/general/welcome.html (3.5.2015).
22. TWIG (2012) TWIG: Introduction. Dostopno prek:
http://twig.sensiolabs.org/doc/intro.html (22.5.2015).
23. UNDERWOOD, PAUL (2014) Pauland - PHP Template Engines. Dostopno prek:
http://www.paulund.co.uk/php-template-system (23.4.2015).
24. VINING, ROBERT (2008) Static HTML Web Pages vs. Content Management
Systems. Dostopno prek: http://www.robertswebdesign.com/blog/website-design/12static-html-web-pages-vs-content-management-systems (24.12.2014).
25. ZANDSTRA, MATT (2004) Naučite se PHP v 24 urah. Ljubljana: Pasadena.
26. ŽUPEC, NEJC (2012) Twitter Bootstrap in razvoj spletnega repozitorija za Cacti.
Diplomsko delo. Ljubljana: Univerza v Ljubljani, Fakulteta za računalništvo in
informatiko, Fakulteta za matematiko in fiziko. Dostopno prek: http://eprints.fri.unilj.si/1862/1/%C5%BDupec-1.pdf (14.5.2015).
61
62
PRILOGA
Uporabljene kratice
Priloga: Uporabljene kratice
Kratica
Angleški pomen
PHP
Hypertext Preprocessor
HTML
Hyper Text Markup Language
Hipertekstovni označevalni jezik
CSS
Cascading Style Sheets
Stilska predloga za videz spletne strani
LESS
Less
Predprocesorski CSS
CI
Codeigniter Framework
Codeigniter ogrodje
AJAX
Asynchronous
Slovenski pomen
JavaScript
XML
Skriptni jezik za razvoj dinamičnih
spletnih strani
and
Asihroni Javascript in Xml
URI
Uniform Resource Identifier
Enolični identifikator vira
URL
Uniform Resource Locator
Enolični krajevnik vira
SQL
Structured Query Language
Strukturni povpraševalni jezik
CMS
Content Managment System
Sistem za upravljanje s vsebinami
MVC
Model View Controller
Model, pogled, kontrolnik