• Rezultati Niso Bili Najdeni

Zasnova spletnega orodja za prijavo na govorilne ure v sistemu Plone

N/A
N/A
Protected

Academic year: 2022

Share "Zasnova spletnega orodja za prijavo na govorilne ure v sistemu Plone "

Copied!
43
0
0

Celotno besedilo

(1)

UNIVERZA V LJUBLJANI PEDAGOŠKA FAKULTETA

Žiga Štamcar

Zasnova spletnega orodja za prijavo na govorilne ure v sistemu Plone

Diplomsko delo

Ljubljana, 2016

(2)
(3)

UNIVERZA V LJUBLJANI Pedagoška fakulteta

Univerzitetni študijski program 1. stopnje Dvopredmetni učitelj - matematika in računalništvo

Avtor: Žiga Štamcar Mentor: dr. Jože Rugelj, izr. prof.

Somentor: as. Matej Zapušek

Zasnova spletnega orodja za prijavo na govorilne ure v sistemu Plone

Diplomsko delo

Ljubljana, 2016

(4)
(5)

Povzetek

Ideja za to diplomsko delo izhaja iz elektronskega sporočila, ki sem ga prejel od OŠ Trebnje, v katerem so izrazili potrebo po sistemu za prijavo staršev na govorilne ure. Povedali so, da so starši v času govorilnih ur včasih zbegani, saj pred vrati nekaterih učiteljev stoji veliko staršev in tako med njimi nastaja zmeda in nepotrpežljivost. Predlagal sem spletno orodje, izdelano v sistemu za

upravljanje vsebine, preko katerega bi se starši in skrbniki prijavljali na proste termine govorilnih ur.

Tako bi vsi uporabniki lahko preko interneta izbrali prost termin in si na ta način prihranili čakanje v vrstah in zmedo, ki pri tem nastaja. Zasnova takega orodja se mi je zdela zanimiv izziv in hkrati dovolj zanimiva ter obvladljiva tema za strniti v to diplomsko delo.

Orodje sem se odločil zasnovati v sistemu za upravljanje vsebine Plone. Bralca tega diplomskega dela bom zato najprej seznanil s sistemi za upravljanje vsebine na splošno, potem bom predstavil ključne sestavne dele sistema Plone in jih nato prikazal na konkretnem primeru zasnove spletnega orodja za prijavo na govorilne ure. Pri predstavitvi orodja bom opisal vse njegove funkcionalnosti, ki bi

zadoščale za najbolj osnovno verzijo takega orodja in jih podkrepil z zaslonskimi slikami ter delčki kode.

Ključne besede:

sistemi za upravljanje vsebin, Plone, spletno orodje, govorilne ure

(6)

Abstract

Idea for this diploma thesis came from an e-mail I got from Trebnje primary school. In the e-mail they expressed the need for a parent-teacher conferences managing system. In their current system, parents have to wait in line, until a certain teacher would be available to speak with them. That would sometimes cause confusion and impatience between parents. For a solution to this problem, I designed a web tool, in which parents can make a reservation for a specific time period with one or many teachers. This decreases long waiting times and confusion associated with it. Designing such a tool seemed like it would provide many challenges and the underlying topic was interesting and manageable enough to present in this thesis.

I decided to design this project using Plone content management system. First I will present some general information on content management systems, then I will describe Plone and its key

components which I will later use in a concrete example of designing a basic web tool for signing up to a parent-teacher conference. In this example I will describe the functionalities of such a tool and will provide screenshots and code snippets.

Key words:

content management systems, Plone, web tool, parent-teacher conference

(7)

Kazalo vsebine

Uvod ... 1

1. Osnove sistemov za upravljanje vsebin ... 3

1.1. Definicija ... 3

1.2. Primeri CMS-jev ... 3

1.2.1. WordPress ... 4

1.2.2. Joomla! ... 4

1.2.3. Drupal ... 5

1.3. Zakaj odločitev za CMS? ... 7

2. Predstavitev sistema Plone ... 8

2.1. Splošno ... 8

2.2. Kratka zgodovina ... 9

2.3. Namestitev sistema Plone ... 10

2.4. Uporabniški vmesnik ... 10

2.4.1. Administratorski vmesnik (Nastavitve spletišča) ... 12

2.4.2. Zope Management Interface – ZMI ... 14

2.5. Predloge (Templates) ... 15

2.5.1. TAL, TALES in METAL ... 15

2.5.2. Diazo ... 17

2.5.3. CSS in JS ... 18

2.6. Content Types ... 18

2.7. Varnost ... 19

2.7.1. Restricted/Unrestricted Python ... 20

2.7.2. Varnostne kopije (Backups) ... 21

2.7.3. Zope Object Database (ZODB) ... 21

3. Govorilne ure ... 24

3.1. Predstavitev delov izdelave orodja ... 24

3.1.1. Content types ... 24

3.1.2. Uporabnik ... 26

3.1.3. Učitelj ... 30

3.1.4. Skrbnik ... 32

4. Zaključek ... 33

5. Viri in literatura ... 34

(8)

Kazalo slik

Slika 1 - najbolj uporabljeni CMS-ji, julij 2016 ... 3

Slika 3 - WordPress administratorski vmesnik ... 4

Slika 5 - Joomla administratorski vmesnik ... 5

Slika 7 - Drupal administratorski vmesnik ... 6

Slika 8 - število fakultet, ki poučujejo enega izmed sedmih izbranih programskih jezikov ... 8

Slika 9 - Plone logo ... 9

Slika 10 - uspešno nameščen Plone ... 10

Slika 11 - pozdravna stran sistema Plone ... 11

Slika 12 - orodna vrstica ... 12

Slika 13 - nastavitev spletišča ... 13

Slika 14 - pogled na ZMI ... 14

Slika 15 - možni pogledi tipa vsebine "Mapa" v ZMI ... 14

Slika 16 - možni pogledi tipa vsebine "Mapa" v Plonovem vmesiku ... 15

Slika 17 - urejevalnik Diazo predlog ... 18

Slika 18 - primer tipa vsebine "File" ... 19

Slika 19 – pogled na "Vzdrževanje" v nastavitvah spletišča ... 21

Slika 20 - trenutno najbolj popularne podatkovne baze ... 22

Slika 21 - polja (lastnosti) podatkovnega tipa "gu" ... 24

Slika 22 - tip "gu" v ZMI ... 25

Slika 23 - Python skripta tipa vsebine "gu" ... 26

Slika 24 - filtriranje po imenih in priimkih ... 27

Slika 25 - filtriranje po predmetih ... 27

Slika 26 - razpisane govorilne ure za izbranega učitelja ... 28

Slika 27 - prijava in odjava iz govorilne ure ... 29

Slika 28 - odjava od termina – TTW Python skripta ... 30

Slika 29 - dodajanje nove govorilne ure preko orodne vrstice ... 31

Slika 30 - trenutni pregled prijav na govorilno uro ... 32

(9)

1

Uvod

»So, the need for content management didn’t begin with the World Wide Web, but simply shifted into fast forward when the web was born in the the early 90s. At that moment, the ability to create and publish content tumbled down from its ivory tower and into the hands of the masses. Almost anyone could create a web page about virtually anything.« (Barker, 2015, str. 5)

V današnjem času je močno prisotna potreba po sistemih, ki tudi računalniško manj podkovanim uporabnikom nudijo možnost dinamičnega upravljanja spletnih vsebin. Obiskovalci spletnih strani pričakujejo ažurne podatke, upravljalci spletnih vsebin pa želijo v kratkem času in s čim manjšimi zahtevami po specifičnih znanjih nuditi kvalitetno uporabniško izkušnjo, saj je »web presence«1 postal pomemben faktor pri uspešnosti podjetja, šole, glasbene skupine, gledališča, … (Palan, b.d) Sistemi za upravljanje vsebin (Content Management Systems – CMS) so sistemi, ki poenostavijo postavitev in vzdrževanje spletne strani. Vsebino tako zasnovane spletne strani je mogoče enostavno spreminjati preko intuitivnega grafičnega vmesnika, kar pomeni, da uporabnik za to ne potrebuje praktično nobenega računalniškega predznanja. Zaradi tega so zanimivi tudi za šolsko okolje, saj lahko poleg izdelave predstavitvenih strani in blogov - za kar se največ uporabljajo - preko njih implementiramo rešitve, ki omogočajo avtomatizacijo postopkov v učnem procesu oz. administraciji, ki jih lahko brez težav oz. dodatnega izobraževanja uporabljajo učenci, učitelji in starši.

V diplomskem delu bom predstavil sistem za upravljanje vsebine Plone CMS, ki se od drugih bolj pogosto uporabljenih CMS-jev (Wordpress, Joomla, Drupal) razlikuje v načinu dela s sistemom, poudarku na varnosti, naboru podprtih tehnologij, fleksibilnosti in kompleksnosti. (Comparing Open Source CMSs: WordPress, Joomla, Drupal, and Plone, 2009)

Značilnosti sistema Plone bom ponazoril na primeru zasnove spletnega orodja za prijavo staršev na govorilne ure. Za ta primer sem se odločil, ker se mi zdi dovolj obvladljiv za povzeti v diplomsko delo in hkrati dovolj kompleksen, da se preko njega predstavi sistem Plone in njegove funkcionalnosti.

Ključni koncepti teh funkcionalnosti pa se lahko iz mojega primera prenesejo na mnogo različnih situacij, problemov.

Prav tako se mi zdi primer prijave staršev na govorilne ure ustrezen zaradi izboljšav, ki bi jih lahko doprinesel na področju organizacije, evidentiranja in vodenja dokumentacije.

Za več informacij o samem procesu prijave na govorilne ure in potrebah konkretne šole po takem orodju bom sodeloval z Osnovno šolo Trebnje.

1 Nisem našel dobrega slovenskega prevoda. S tem je mišljena podoba, ki si jo preko spletne strani (in drugih spletnih vsebin) ustvari podjetje, šola, gledališče, …

(10)

2

(11)

3

1. Osnove sistemov za upravljanje vsebin

1.1. Definicija

Na spletu lahko zasledimo več različnih definicij sistema za upravljanje vsebin, med katerimi so relativno majhne razlike, vendar v tem diplomskem delu se bom skliceval na spodnjo:

Sistemi za upravljanje vsebine so spletne aplikacije, ki uporabnikom z različnimi pravicami omogočajo urejanje vsebine spletnih strani, brez potrebnega znanja HTML jezika. (Kohan, 2010)

Dodal bi le, da sistemi za upravljanje vsebin olajšajo delo tudi razvijalcem spletnih strani, saj je veliko različnih funkcionalnosti (urejevalniki besedila, integracija s socialnimi omrežji, avtomatska izdelava varnostnih kopij, …) že vgrajenih v sam CMS. To pomeni, da jih uporabniku ni potrebno pisati od začetka, ampak si jih lahko samo prilagodi po svoje. CMS-ji so grajeni modularno, zato jih je možno dopolniti in prilagoditi uporabnikovim željam. Na spletu lahko najdemo ogromno dodatkov (angl.

add-ons), ki jih lahko vključimo v izbran CMS. Seveda nam ti sistemi omogočajo tudi pisanje lastnih dodatkov, predlog, stilov, … s katerimi lahko popolnoma prilagodimo bodisi izgled bodisi

funkcionalnost spletne strani. Za take prilagoditve pa je potrebno znanje različnih programskih jezikov, kot so HTML, CSS, JS, PHP, Python, …

1.2. Primeri CMS-jev

Odločil sem se, da bom v tem razdelku omenil tri CMS-je, ki se trenutno (3. julij 2016) največ

uporabljajo. Podatke sem pridobil iz spletne strani podjetja W3techs, ki že več let nadzoruje uporabo različnih spletnih tehnologij. Podatki na njihovi spletni strani se osvežujejo dnevno.

Po njihovih raziskavah 55,6% spletnih strani, ki jih beležijo, ne uporablja nobenega sistema za upravljanje vsebine. Npr. WordPress uporablja 26,4% spletnih strani, kar predstavlja 59,5% delež vseh spletnih strani, ki uporabljajo katerega od CMS-jev. (Usage of content management systems for websites, 2016)

Več o pridobivanju podatkov za to raziskavo, si lahko preberete na spletni strani https://w3techs.com/technologies.

Slika 1 - najbolj uporabljeni CMS-ji, julij 2016

(12)

4 1.2.1. WordPress

Prvo različico WordPressa so izdali maja 2003. Zasnovan je bil kot platforma za pisanje blogov, ki se je dodala obstoječim spletnim stranem. S časom je pridobival na priljubljenosti in razvijalci so dodajali vse več funkcionalnosti, ki so bolj značilne za CMS-je.

WordPress ima dva nivoja vmesnikov: predstavitveni nivo oz. »front end« in administratorski nivo oz.

»back end«.

Osnovno obnašanje spletne strani, osnovane na WordPressu, lahko razširimo z vtičniki (angl. plugins) in temami. Z vtičniki lahko dodajamo funkcionalnosti – trenutno je na uradni spletni strani

(https://wordpress.org/plugins) na voljo 45506 vtičnikov, s temami pa prilagajamo izgled spletne strani. (Yoko, 2016)

Slika 2 - WordPress administratorski vmesnik

1.2.2. Joomla!

Sistem Joomla! je nastal avgusta 2015. Sprva se je projekt imenoval Mambo, kasneje pa je razvojni kader zaradi nesoglasja zapustil projekt Mambo in začel razvijati Joomlo. Končni produkt (Joomla 1.0.0) pa je bil le predelan in preimenovan Mambo CMS. (Joomla, 2015)

Za razliko od WordPressa ima Joomla! tri nivoje vmesnikov. Poleg predstavitvenega in

administratorskega nivoja ponuja še dodaten nivo, ki izgleda podobno kot predstavitveni, le da ima ta še možnost urejanja vsebine. To pomeni, da ni potrebe po dodajanju vsebine iz administratorskega vmesnika, to pa je po mojem mnenju za večino uporabnikov bolj intuitivno.

Osnovno delovanje Joomle lahko razširimo z različnimi komponentami, moduli in vtičniki. Teh razširitev je na uradni spletni strani (http://extensions.joomla.org) trenutno na voljo 7907, seveda pa je neuradnih vtičnikov še mnogo več. Vizualen izgled lahko prilagajamo s predlogami. (Yoko, 2016)

(13)

5

Slika 3 - Joomla administratorski vmesnik

1.2.3. Drupal

Prva različica sistema Drupal je izšla januarja 2001. Dries Buytaert je sprva napisal Drupal zase in za svoje prijatelje, da bi lahko na enem mestu delili različne informacije, kot npr. kje bodo večerjali, zanimive novice, kakšen je status njihovega omrežja, … Ta spletna stran se je včasih nahajala na naslovu Drop.org. (Our history, b.d.)

Njegov razvoj je hitro šel naprej in Drupal je postal izjemno fleksibilna platforma za forume, bloge ostale spletne strani ter spletne aplikacije. (Yoko, 2016)

Kot prej omenjena CMS-ja, lahko tudi Drupal razširimo z moduli in temami. Trenutno na uradni spletni strani (https://www.drupal.org/project/project_module) najdemo 34790 modulov.

(14)

6

Slika 4 - Drupal administratorski vmesnik

(15)

7

1.3. Zakaj odločitev za CMS?

Pred obstojem CMS-jev, so razvijalci morali zgraditi spletno stran, ki se je začela kot prazen

dokument. Sami so morali napisati vso HTML, CSS in JavaScript kodo. Ta pristop ima svoje prednosti in slabosti. Omogoča nam popoln nadzor in fleksibilnost spletne strani za ceno kompleksnosti – tako z vidika razvijalca, kot končnega uporabnika.

CMS-ji so se razvili z namenom bistvenega olajšanja procesa ustvarjanja, vzdrževanja in urejanja spletnih strani. Hitro so postali zelo popularni in trenutno jih uporablja večina manjših in srednje velikih podjetij. (Northcutt, 2013)

V šolstvu se CMS-ji veliko uporabljajo za spletne učilnice, kjer učitelji objavljajo novice, gradiva za učence, obvestila o ocenah, rezultatih tekmovanj, …

Na OŠ Trebnje (in verjetno še na kakšnih drugih šolah) pa uporabljajo sistem Joomla! tudi za

predstavitveno spletno stran šole (http://www.os-trebnje.si), kjer redno objavljajo novice in koristne povezave.

»Uspešna uvedba CMS-ja pa pomeni dvig kvalitete dela in običajno pobude k uvajanju IKT-ja tudi na drugih področjih delovanja šole« (Harej, 2004)

(16)

8

2. Predstavitev sistema Plone

2.1. Splošno

Plone je brezplačen in odprtokoden sistem za upravljanje vsebine, ki teče na aplikacijskem strežniku Zope. Zope je programsko ogrodje (angl. software framework), ki zagotavlja pogoje za ustvarjanje spletnih aplikacij in hkrati tudi strežniško okolje, na katerem bodo te aplikacije tekle. (Application server, 2016) Ker je to okolje napisano v jeziku Python, je Plone primarno napisan v istem jeziku.

Približno 10% Plonove kode je osnovane na jeziku XML, sestavlja pa ga tudi veliko HTML, CSS in JavaScript datotek.

Python je relativno velika posebnost sistema Plone, glede na to, da velika večina CMS-jev

(WordPress, Joomla, Moodle, …) sloni na jeziku PHP. Pravzaprav trenutno kar 82.1% spletnih strani uporablja jezik PHP, medtem ko le 0.2% spletnih strani uporablja Python. (Comparison of the usage of PHP vs. Python for websites, 2016)

Kljub tem številkam pa ne smemo kar tako zanemariti Pythonove zmogljivosti. Naj samo omenim, da npr. podjetje Facebook uporablja jezik PHP, Google pa uporablja Python. (Hakim, 2011)

Python se mi zdi vredno poudariti tudi zaradi tega, ker so ga različne fakultete (tudi slovenske) vpeljale v svoje programe, zato menim, da bo popularnost in raba Pythona (ter posledično morda tudi Plona) skozi čas zelo narasla.

Slika 5 - število fakultet, ki poučujejo enega izmed sedmih izbranih programskih jezikov

(Slika pridobljena s http://m.cacm.acm.org/blogs/blog-cacm/176450-python-is-now-the-most- popular-introductory-teaching-language-at-top-us-universities/fulltext.)

Plone se najbolj pogosto uporablja v intranetih in za spletne strani velikih organizacij. Med najbolj odmevnimi imeni služb javnega sektorja, ki uporabljajo Plone, so: FBI, brazilska vlada, Združeni narodi, mesto Bern, vlada New South Walesa in Evropska agencija za okolje.

(17)

9

Zagovorniki Plona navajajo, da sta najpomembnejša razloga za izbiro sistema: izjemni rezultati na področju varnosti (več o tem v razdelku 2.7) in njegova dostopnost. (Plone (software), 2016) Leta 2008 in 2009 je bil Plone s strani podjetja Packt Publishing izbran kot najboljši ne-PHP

odprtokodni sistem za upravljanje vsebin. (Plone wins 2009 »Best Other Open-Source CMS« Award, 2009)

Trenutno je na uradnem viru Plonovih produktov

(https://pypi.python.org/pypi?:action=browse&c=518) objavljenih 2828 produktov, ki so

kompatibilni z vsaj eno verzijo sistema Plone. Z najnovejšo verzijo je zaenkrat kompatibilnih le 230 produktov. Sistem je preveden v 40 jezikov.

Kar se tiče dokumentacije, je Plone relativno močan. Relativno pravim zaradi tega, ker sem odkril, da za zadnjo verzijo sistema (5.0) precej elementov manjka oz. so napisani nepopolno. To je lahko utrujajoče za začetnike, saj je težko priti do željenih informacij, delež uporabe sistema Plone pa je v primerjavi z najbolj popularnimi sistemi za upravljanje vsebine nizek. Podjetje Six Feet Up, ki je eno izmed vodilnih ponudnikov storitev svetovanja v severni Ameriki pa zatrjuje, da lahko po svetu najdemo nekaj več kot 300 podjetij, ki nudijo profesionalno svetovanje pri postavitvi in uporabi sistema Plone. (Plone - The Open Source Enterprise CMS, b.d.)

Slika 6 - Plone logo

(Slika pridobljena s https://commons.wikimedia.org/wiki/File:Plone-logo.svg.)

2.2. Kratka zgodovina

Projekt Plone se je začel leta 1999. Prvi so ga začeli razvijati Alexander Limi, Alana Runyan in Vidar Andersen. Projekt je kmalu pridobil svojo skupnost, v kateri so uporabniki razvili mnogo novih dodatkov (angl. add-ons). S časom se je ta skupnost vse bolj širila in to je vodilo k organiziranju letnih Plone konferenc, ki danes še vedno potekajo. Poleg teh konferenc se razvijalci iz celega sveta

dobivajo na srečanjih, ki trajajo od nekaj dni do celega tedna in tako nadgrajujejo Plone.

Prva stabilna verzija sistema Plone je izšla 6. februarja 2003. Od takrat so v razvoj sistema vložili več kot 4617 dni razvijalskega dela. Vse do zadnje verzije (ki je izšla 28. septembra 2015) so za razvoj posamezne verzije potrebovali povprečno 350,75 dni. Zadnjo (5.0) pa sem izpostavil ravno zaradi tega, ker so za njen razvoj potrebovali 898 dni, kar je približno 2,5-krat več, kakor za ostale. To niti ni tako presenetljivo, glede na to, da so s to verzijo vpeljali korenite spremembe glede načina dela s tipi vsebine (angl. content types – več o tem v razdelku 2.6) in vizualnim prilagajanjem spletnih strani (angl. theming) s pomočjo orodja Diazo (več o tem v razdelku 2.5.2). Trenutno lahko na uradni strani sistema (https://plone.org/) brezplačno prenesemo verzijo 5.0.5. (Plone (software), 2016)

(18)

10

2.3. Namestitev sistema Plone

Odločil sem se, da v tem razdelku ne bom opisoval celotnega procesa namestitve sistema, saj lahko najdemo dovolj natančna navodila v uradni Plonovi dokumentaciji

(http://docs.plone.org/manage/installing/installation.html).

Predstavil bom raje dva načina v katerih lahko teče spletna stran, izdelana v sistemu Plone. To sta

»Standalone« in »ZEO Cluster«. Enega izmed teh načinov si moramo nujno izbrati ob nameščanju sistema Plone, obstajajo pa tudi načini, kako potem kasneje preiti iz enega na drugega in obratno.

Standalone način je načeloma namenjen za razvoj in testiranje, medtem ko je ZEO Cluster bolj ustrezen za produkcijo.

ZEO Cluster način dovoljuje istočasno uporabo ene podatkovne baze iz več različnih Zope instanc (ali bolj natančno »ZEO clients«). To so običajno kopije spletne strani, ki jih lahko ločeno zaženemo na različnih vratih (angl. ports). Iz mojih praktičnih izkušenj to izgleda tako, da imamo običajno ustvarjeni dve instanci (»client1« in »client2«), ki tečeta na različnih vratih. Ena izmed njih je »glavna«, ki je aktivna večino časa, na drugi pa se istočasno lahko delajo popravki. Če so ti popravki npr. vnosi v bazo, se sprememba takoj odraža tudi na »glavni« instanci, saj uporabljata isto podatkovno bazo. Če pa so to popravki npr. vizualnega izgleda strani, se te spremembe beležijo v predpomnilnik in se na

»glavni« instanci uveljavijo šele ob ponovnem zagonu le-te. To je lahko izjemno koristno, ko npr.

skrbimo za neko spletno stran, ki nikakor ne sme prenehati z delovanjem do neke ure. Torej to pomeni, da bi razvijalec lahko delal (in testiral) razne popravke le po tej določeni uri. Z dvema instancama pa brez težav pripravi popravke kadarkoli in jih potem s ponovnim zagonom instance uveljavi ob primernem času.

ZEO Cluster zaradi več Zope instanc porablja več prostora in procesorske moči, kar lahko vodi do preobremenitve strežnika. Način Standalone je zato bolj primeren za razvoj in testiranje, saj uporablja le eno Zope instanco. (Zope Zeo vs. standalone setups, 2008)

Ko uspešno opravimo namestitev sistema Plone in zaženemo ustvarjeno instanco, bi morali (običajno na naslovu localhost:8080) v brskalniku videti nekaj podobnega spodnji sliki.

Slika 7 - uspešno nameščen Plone

2.4. Uporabniški vmesnik

Po uspešni namestitvi sistema Plone moramo ustvariti svojo stran (t.i. portal), ki bo tekla na prej ustvarjeni instanci. Tukaj lahko določimo nekaj lastnosti (privzet jezik strani, urejevalnik besedila, …),

(19)

11

ki jih bo stran imela. Na tej točki to niti ni tako pomembno, saj vse te nastavitve lahko potem tudi kasneje spremenimo.

Ko se prebijemo čez teh nekaj korakov, bi morali na novo ustvarjeni spletni strani videti pozdravno stran sistema Plone.

Slika 8 - pozdravna stran sistema Plone

Prijavljeni uporabniki imajo (če tako želimo) dostop do orodne vrstice, iz katere lahko dodajajo, urejajo, brišejo vsebino, … - odvisno od nivoja dostopa, ki jim ga dodelimo.

(20)

12

Slika 9 - orodna vrstica

2.4.1. Administratorski vmesnik (Nastavitve spletišča)

Dostop do nastavitev spletišča imajo samo uporabniki z administratorskimi pravicami.

(21)

13

Slika 10 - nastavitev spletišča

Tukaj lahko spreminjamo kar precej nastavitev, ki se tičejo delovanja, izgleda, vsebine in vzdrževanja spletne strani. Določimo lahko npr. elektronski naslov, iz katerega se bodo pošiljala avtomatska obvestila o novo ustvarjenih novicah, uredimo vizualen izgled spletne strani (Diazo, razdelek 2.5.2), dodamo nov tip vsebine (razdelek 2.6), pregledujemo napake, »pakiramo«2 bazo, ponovno zaženemo Zope instanco, ...

2 To je izraz, ki ga najdemo v uradnem slovenskem prevodu sistema Plone. S pakiranjem podatkovne baze prihranimo nekaj prostora na strežniku, saj tako zavržemo podatke, ki se shranjujejo zaradi operacije

»Razveljavi«.

(22)

14 2.4.2. Zope Management Interface – ZMI

Zope Management Interface je okolje, v katerem lahko nadzorujemo in manipuliramo z Zope objekti ter konfiguriramo nastavitve spletne aplikacije. (Using the Zope Management Interface, b.d.)

Slika 11 - pogled na ZMI

Primer, ki po mojem mnenju dobro ponazori uporabo ZMI-ja in razliko med nastavitvami, ki jih ponuja Plonov vmesnik je sledeč:

Vsakemu tipu vsebine lahko določimo privzet pogled (angl. View) in v pogledu je zapisano, kako bodo podatki znotraj tipa vsebine prikazani. To storimo v Plonovem grafičnem vmesniku, kjer imamo npr.

za prikazovanje mape, v kateri so samo slike, nastavljen privzet pogled »Album view«. Če pa želimo ta pogled prilagoditi specifičnim uporabnikovim željam, moramo najprej definirati, kako bo ta pogled izgledal oz. katere podatke bomo v njem prikazovali. To storimo tako, da na datotečnem sistemu ustvarimo novo predlogo (načeloma lahko urejamo tudi obstoječo predlogo), ki jo potem v ZMI-ju dodamo tipu vsebine »Mapa«. Šele ko smo to storili, imamo v Plonovem vmesniku možnost dodeliti novo ustvarjen pogled temu tipu vsebine. Na spodnji sliki so prikazani možni pogledi za tip vsebine

»Mapa«. Kot vidimo, se znotraj nahaja tudi »album_view«.

Slika 12 - možni pogledi tipa vsebine "Mapa" v ZMI

(23)

15

Slika 13 - možni pogledi tipa vsebine "Mapa" v Plonovem vmesiku

S tem konkretnim zgledom sem želel povedati, da nam ZMI v praksi omogoča en nivo dostopa več, kot ga ima skrbnik spletišča.

V tem vmesniku lahko dodajamo TTW (Through The Web) Python skripte, s katerimi zlahka npr.

preverjamo veljavnost obrazcev (angl. forms), delamo preusmeritve, … skratka vse operacije, ki nimajo nobenega opravka z objekti, saj smo zaradi varnosti pri TTW skriptah omejeni na Restricted Python. Več o tem v razdelku 0.

2.5. Predloge (Templates)

2.5.1. TAL, TALES in METAL TAL

TAL (Template Attribute Language) je jezik za pisanje predlog, ki dinamično generirajo HTML vsebino.

Običajno se uporablja znotraj veljavnih HTML značk, lahko pa tudi HTML značke napišemo znotraj TAL izraza (vendar to ne ustvari HTML strukture na spletni strani). V TAL izrazih lahko definiramo spremenljivke, določamo pogoje, zanke, nadomestimo vsebino HTML značke in dinamično določamo atribute (npr. »href« pri znački <a>).

Oglejmo si naslednji TAL izraz:

<a tal:attributes="href google.com" tal:content="Povezava do Google.com"> Karkoli </a>

Z ukazom »tal:attributes« določimo atribut »href« značke <a>, z izrazom »tal:content« pa smo določili tekst, ki se običajno nahaja med začetkom in koncem HTML značke - <a> TEKST </>.

Beseda »Karkoli« se zaradi izraza »tal:content« nadomesti s tekstom »Povezava do Google.com«.

Zgornji izraz bo generiral povsem običajno HTML povezavo na google.com, z naslovom »Povezava do Google.com«. Konkretno ta izraz bi lahko brez težav napisali tudi brez uporabe jezika TAL:

<a href="google.com"> Povezava do Google.com </a>.

Veliko dela pa nam lahko prihrani »tal:repeat«. Oglejmo si še en konkreten zgled:

(24)

16

<input type "text" tal:repeat="n python:range(10)" />

Namesto da bi napisali 10 »navadnih« HTML izrazov, nam bo zgornji izraz generiral 10 vnosnih polj z eno vrstico kode. Naj omenim, da sem pri tem zgledu že uporabil TALES sintakso, ki omogoča uporabo »python« izrazov – več o tem v sledečih vrsticah.

Poleg »tal:attributes« in »tal:content« ima TAL še nekaj drugih možnih izrazov:

- tal:define - tal:condition - tal:repeat - tal:replace - tal:omit-tag

Opise teh izrazov si lahko ogledate na http://www.owlfish.com/software/simpleTAL/tal-guide.html.

TALES

TAL izrazi postanejo mnogo bolj uporabni z uporabo TALESa (TAL Expression Syntax). Kot že samo ime pove, so TALES vsi izrazi uporabljeni znotraj TAL izrazov. S TALESom večinoma pišemo poizvedbe za objekte v bazi podatkov. Najpreprostejši primer bi bil verjetno naslednji:

<p tal:content="knjiga/poglavje/title"> </p>

Takim izrazom rečemo »path«, ker v zgornji poizvedbi povemo »pot« do lastnosti objekta, ki jo želimo prikazati, ali z njo narediti kaj drugega. V zgornjem zgledu bomo v HTML znački <p> prikazali naslov poglavja, ki se nahaja v mapi »knjige« in je lastnost objekta »poglavje«, ki je v mapi »knjige«.

Poleg »path« izrazov TALES ponuja še naslednje možnosti:

- exists - nocall - not - string - python - ?

Spodaj navajam še en primer »python« izraza, ki se ga po mojih izkušnjah poleg »path« izrazov največ uporablja v Plonovih predlogah, razlage ostalih pa si lahko ogledate na:

http://www.owlfish.com/software/simpleTAL/tal-guide.html

<p tal:content="python:user.getUserName().capitalize()">

User Name

</p>

Ta izraz bo v značko <p> izpisal uporabniško ime trenutno prijavljenega uporabnika z veliko začetnico.

Iz tega primera vidimo, da lahko s Python sintakso dostopamo do objektov in njihovih lastnosti (uporabniško ime) nad katerimi lahko potem tudi uporabljamo vgrajene Python funkcije (capitalize()).

To je običajno uporabno za »manjše« operacije nad lastnostmi objektov, kajti v »python« izraz lahko napišemo le eno vrstico Python kode.

(25)

17 METAL

Pri delu s predlogami lahko opazimo, da se določeni deli ponavljajo. Npr. ko želimo prikazati vsebino neke mape, moramo vedno na enak način pridobiti vsebino mape in jo izpisati (razen seveda če želimo nek specifičen prikaz vsebine mape). Ali pa npr. ko želimo na vseh podstraneh imeti enako glavo (angl. header) in nogo (angl. footer) kot na prvi strani. V tem primeru nam lahko zelo koristijo METAL izrazi (Macro Expansion for TAL).

Oglejmo si kar en konkreten zgled:

<div metal:define-macro="footer">Copyright

<span tal:content="page/lastModified"></span>

</div>

Ta izraz bo izdelal makro z imenom »footer«, ki bo ustvaril <div> značko, v kateri bo zapisana beseda »Copyright« in poleg nje, bo v znački <span> zapisan datum zadnje spremembe spletne strani.

Poleg »metal:define« poznamo tudi druge METAL izraze:

- metal:use-macro - metal:define-slot - metal:fill-slot

Razlage posameznih izrazov si lahko ogledate na spletni strani:

http://www.owlfish.com/software/simpleTAL/tal-guide.html

2.5.2. Diazo

Orodje Diazo je novost sistema Plone 5.0. No, ne ravno novost, tudi prej se je dalo uporabljati Diazo, ni pa bil privzeto tako lepo implementiran v sistem Plone, kot je sedaj. Do te verzije so se za pisanje predlog večinoma uporabljali jeziki, omenjeni v prejšnjem razdelku. Seveda pa tudi v verziji 5.0 še vedno lahko uporabljamo stare predloge, vendar pri podjetju Plone stremijo na popoln prehod k Diazu.

Diazo predstavlja precej zanimiv koncept urejanja vizualnega izgleda spletne strani, ki vsebuje dinamične elemente. Pri TAL predlogah sta jezika TAL in HTML nekako združena skupaj, pri čemer HTML skrbi za strukturo, TAL pa za pridobivanje elementov iz objektne baze ZODB (Zope Object Database). Diazo pa ločuje statično HTML predlogo in XML datoteko »rules.xml«, v katero dodajamo t.i. pravila, ki določajo kateri Plonovi elementi bodo prikazani na določenem mestu, prej definiranem v HTML kodi. Tako potem postopoma »pretvarjamo« statično spletno stran v dinamično.

Vse to lahko počnemo direktno iz brskalnika, saj ima Plone že vgrajen urejevalnik predlog.

(26)

18

Slika 14 - urejevalnik Diazo predlog

2.5.3. CSS in JS

CSS in JavaScript datoteke na spletnem portalu ustvarjenem v sistemu Plone, dodajamo na podoben način kot pri statičnih HTML dokumentih. Razlika je le v tem, da moramo pri statičnih spletnih straneh za vsako stran posebej dodati poti do CSS in JS datotek, Plone pa ima privzeto ustvarjen

»main template«, ki se upošteva na vseh ustvarjenih podstraneh, zato lahko poti do CSS in JS datotek dodamo le v to datoteko.

2.6. Content Types

Tipi vsebine so lahko zbirniki (angl. containers) ali posamezni elementi. Zato včasih na spletu zasledimo izraza »folderish« in »non-folderish«, ki označujeta to distinkcijo. Vsak tip vsebine ima svojo shemo, t.j. množico polj, ki določajo lastnosti (naslov, privzete vrednosti, omejitve, … ) tega tipa. Shema tipa vsebine se upošteva na vsakem novo ustvarjenem objektu tega tipa.

Primer tipa vsebine je npr. »dežurstvo«, ki mu v shemi določimo polja različnih podatkovnih tipov. V Plonu sta za vsak tip vsebine privzeto nastavljeni polji »Naslov« tipa »String« (iz katerega se potem kreira ID objekta tipa »dežurstvo«) in »Opis« tipa »Text«. Potem pa mu lahko dodamo še ostala polja,

(27)

19

npr. »Dežurni tehnik« tipa »String«, »Opomba« tipa »Text«, … Tako se v bazo shranjujejo objekti tipa

»dežurstvo«, ki vsebujejo lastnosti »Naslov«, »Opis«, »Dežurni tehnik«, »Opomba«, …

Slika 15 - primer tipa vsebine "File"

2.7. Varnost

Razvijalci sistema Plone dajejo velik poudarek na varnost. Če pogledamo v podatkovno bazo pogostih ranljivosti in izpostavljenosti (Common Vulnerabilities and Exposures (CVE) Database), ki jo gosti podjetje Mitre namreč opazimo, da je imel Plone do 29.5.2013 v primerjavi z ostalimi aktualnimi CMS-ji najmanjše število prijavljenih ranljivosti. To je tudi velik razlog, zakaj se je veliko vladnih in nevladnih organizacij odločilo za sistem Plone – med drugimi tudi FBI.

Spodnja tabela prikazuje število pogostih ranljivosti in izpostavljenosti. Poudariti je treba, da so v teh podatkih zajete ranljivosti osnovnega sistema Plone in tudi modulov, ki jih niso razvili primarni Plonovi razvijalci. (Plone (software), 2016)

(28)

20 Primerjava pogostih ranljivosti in izpostavljenosti

CMS Leto izdaje Število pogostih ranljivosti in izpostavljenosti

Plone 2003 62

Joomla 2005 638

Wordpress 2003 934

Drupal 2001 969

2.7.1. Restricted/Unrestricted Python

Plone uporablja dve vrsti dostopa do Pythonovih modulov – Restricted (z omejitvami) in Unrestricted (brez omejitev).

Restricted Python je okolje, ki ima odstranjenih nekaj funkcij (npr. funkcijo »invokeFactory()« za kreiranje novih objektov). Glavni razlog za uvedbo tega okolja je bil, da so te funkcije lahko nevarne v spletnem okolju, kot je Plone. Nevarne v smislu, da bi omogočile nepreverjenim uporabnikom dostop do Python kode v sistemu. Seveda pa takemu uporabniku ne želimo dovoliti dostopa do datotečnega sistema strežnika.

Restricted Python skripte so zato prevedene z drugim prevajalnikom kakor Unrestricted Python skripte in vsak klic funkcije je posebej preverjen pri »upravljalcu varnosti«. To se zgodi z vso Python kodo, ki jo dodamo preko Zope Management Interface-a (ZMI).

Restricted Python je omogočen v TTW skriptah in zastarelem načinu kodiranja, ki se uporablja v npr.:

- starih TAL predlogah – vse kar je napisano v tal:content, tal:condition, itd.

- datotekah tipa Script(Python), ki so se uporabljale za preverjanje obrazcev

Kot zanimivost, v dokumentaciji za trenutno najnovejšo verzijo sistema Plone sem glede Restricted Pythona zasledil tudi tole:

»RestrictedPython was bad idea and mostly causes headache. Avoid through-the-web Zope scripts if possible.« (Sandboxing and RestrictedPython, b.d.)

Po lastnih izkušnjah lahko povem, da se z zgornjo izjavo popolnoma strinjam.

Unrestricted Python skripte se izvedejo normalno, brez omejitev in imajo popoln dostop do aplikacijskega strežnika Zope. To dosežemo s pisanjem lastnih produktov (add-ons), ki jim dodamo poglede (angl. views). Produktom lahko dodamo tudi lastne tipe vsebine, v katerih definiramo polja (npr. cena izdelka, kategorija, …) in funkcije (ki npr. napolnijo prej definirana polja s privzetimi vrednostmi). Te lastnosti imajo potem vsi novo ustvarjeni objekti tega tipa.

Unrestricted Python skripte se nahajajo izključno na datotečnem sistemu strežnika (ne moremo jih urejati TTW), kar zagotavlja dodaten nivo varnosti, saj bi nepridiprav za spreminjanje teh skript

(29)

21

potreboval direkten dostop do strežnika – samo administratorsko geslo za dostop do spletne strani ne bi bilo dovolj. (Sandboxing and RestrictedPython, b.d.)

2.7.2. Varnostne kopije (Backups)

Za uporabnike sistema Plone je proces kreiranja varnostnih kopij zelo preprost. Kopije se naredijo avtomatsko, v vsakem trenutku pa imamo na našem datotečnem sistemu v mapi ./var/filestorage dve datotek: Data.fs in Data.fs.old. V teh datotekah je shranjeno vse, razen BLOB-ov (angl. Binary Large OBjects), ki pa vsebujejo razne PDF datoteke, slike, videe, … in so shranjeni v ./var/blobstorage.

Spodnja slika prikazuje pogled na »Vzdrževanje« v nastavitvah spletišča, kjer lahko med drugim tudi pakiramo našo bazo in tako prihranimo nekaj prostora na disku.

Slika 16 – pogled na "Vzdrževanje" v nastavitvah spletišča

Pred vsakim posegom v bazo, je priporočljivo kopirati vsaj datoteko Data.fs. To lahko uredimo avtomatsko z različnimi orodji, kot so npr. Rsync, Bakula, …

Imel sem že izkušnjo, ko sem naredil napako v neki skripti in »izgubil« podatke za nekaj let nazaj. V takem primeru je potrebno najprej ugasniti Zope strežnik, nadomestiti trenutno datoteko Data.fs s staro, ponovno zagnati Zope strežnik in podatki so nazaj. Zelo preprosto in učinkovito.

2.7.3. Zope Object Database (ZODB)

Po mojem raziskovanju sem ugotovil, da ZODB niti nima bistveno različnih funkcionalnosti od drugih objektnih baz, zato me je bolj zanimala razlika med objektnimi in relacijskimi bazami na splošno.

Raziskal sem tudi, zakaj se objektne podatkovne baze tako malo uporabljajo.

Če bi bralca zanimale specifične lastnosti ZODB-ja, si lahko prebere članek gospoda Jima Fultona, ki je kreator ZODB-ja: http://www.ibm.com/developerworks/aix/library/au-zodb/index.html

Pri mojem raziskovanju sem se najprej vprašal, katere podatkovne baze so trenutno najbolj aktualne.

Podatke sem pridobil iz spletne strani http://db-engines.com/en/ranking, ki trenutno spremlja popularnost 308 podatkovnih baz. Več o njihovem sistemu točkovanja si lahko preberete na:

http://db-engines.com/en/ranking_definition

(30)

22

Slika 17 - trenutno najbolj popularne podatkovne baze

Iz zgornje slike lahko jasno vidimo, da so krepko v prednosti relacijske podatkovne baze. Prva objektno orientirana baza se nahaja šele na 82. mestu, medtem ko ZODB najdemo šele na 139.

mestu. Torej več kot očitno objektne baze niso ravno popularne. Toda zakaj, če pa so sedaj objektni programski jeziki (Python, Java, C#) tako razširjeni?

Našel sem nekaj odprtih tem na dovolj zanesljivih forumih (stackoverflow.com, stackexchange.com) in najpomembnejša razloga, zakaj se razvijalci raje odločijo za relacijske podatkovne baze sta naslednja:

1. Veliko razvijalcev ima izkušnje le iz relacijskega modeliranja podatkov. Da bi se naučili uporabljati objektno orientirane baze, bi se morali naučiti popolnoma drugačnega modeliranja in razmišljanja o podatkih. To pa je lahko zelo težko in dolgotrajno.

2. Relacijske baze so se razvijale izredno dolgo časa, zato so sedaj precej izpopolnjene in podkrepljene z matematičnimi teorijami (teorija množic). Tudi brezplačne relacijske baze uporabljajo napreden način optimizacije in tehnike indeksiranja. Poleg tega je shranjevanje in indeksiranje podatkov v take baze zelo preprosto, kar pa ne moremo reči za objektne baze.

(Why aren't OODBMS as widespread as RDBMS?, 2009)

Objektne podatkovne baze lahko operirajo z bolj kompleksnimi podatkovnimi tipi. Relacijske baze shranjujejo preproste podatke, kot so npr. imena in priimki zaposlenih v nekem podjetju, objektne baze pa lahko shranjujejo tudi slike, video posnetke, CAD (angl. Computer Aided Design) objekte … Toda v relacijskih bazah se morajo že večvrednostni atributi (angl. multivalued attributes) zapisati vsak v svojo tabelo; torej kako potem objektne baze shranjujejo te kompleksne podatke? Na spletu sem našel preprosto analogijo, ki gre takole:

Shranjevanje podatkov je kakor parkiranje avtomobila v garažo, kjer garaža predstavlja podatkovno bazo. Pri objektnih bazah lahko zapeljemo cel avtomobil v garažo, izklopimo motor in ga pustimo nedotaknjenega, v pripravljenosti za naslednjo vožnjo. Pri relacijskih bazah pa bi ga morali razdreti na posamezne dele, te dele shraniti na različne police in ko bi ga hoteli naslednjič voziti, bi ga morali ponovno sestaviti nazaj.

Predstavljajmo si sedaj, kaj se zgodi, ko res želimo iti na vožnjo, s katerim od teh parkiranih

avtomobilov. Pri razstavljenem vozilu bi potrebovali mehanika – nekoga, ki govori pravi jezik – da bi avtomobil pravilno deloval, ko bi ga sestavil nazaj. Pri avtomobilu, ki smo ga celega zapeljali v garažo in ga takega tam tudi pustili pa bi potrebovali le toliko »komunikacije«, da bi mu lahko dopovedali, da ga želimo vžgati z vstavljanjem in obračanjem ključa. Tukaj pa potem ne potrebujemo znanja nekega drugega jezika.

(31)

23

Še ena velika prednost shranjevanja avtomobilov (objektov) v celoti je tudi, da lahko do njih

dostopamo kot do posamezne enote, brez vpliva na ostale objekte. Pri relacijskem modelu bi morali npr. zakleniti celotno tabelo, da bi v njej posodobili en par vrednosti. Pri objektnih bazah pa

dostopamo do lastnosti na ravni objekta, kar je npr. bolj optimalno za shranjevanje geometrijskih CAD objektov, medtem ko so za shranjevanje finančnih podatkov relacijske podatkovne baze običajno boljša izbira. (Object oriented databases, 2011)

(32)

24

3. Govorilne ure

Sedaj ko sem predstavil teoretični del sistema Plone pa se lotimo še pregleda praktičnega dela – zasnove orodja za prijavo na govorilne ure. V tem delu bom predstavil mojo idejo o izvedbi takega orodja. Pri snovanju tega dela sem sodeloval z Osnovno šolo Trebnje, s katero smo se pogovarjali o njihovih željah in potrebah glede funkcionalnosti takega orodja.

3.1. Predstavitev delov izdelave orodja

3.1.1. Content types

Za zasnovo tega orodja sem potreboval le en tip vsebine. Poimenoval sem ga »gu« (krajše za

»govorilna ura«). V Plone-u ima vsak tip vsebine privzeti polji (lastnosti) »Naslov« in »Opis«. Tipu

»gu« pa sem dodal še tekstovno polje »termini«, ki bo za namen zasnove tega orodja služilo shranjevanju imen in priimkov staršev ter termina na katerega so se prijavili.

Slika 18 - polja (lastnosti) podatkovnega tipa "gu"

(33)

25

Polje »Naslov« je privzeto zaradi tega, ker se iz vpisane vrednosti ustvari ID objekta, sicer bi morali ID objekta določiti ročno, kar pa je za večino uporabnikov popolnoma nepotrebno. Če bi želeli privzeta polja odstraniti (ali pa spremeniti še kakšno drugo lastnost tega podatkovnega tipa), lahko to storimo v Zope Management Interface-u, kjer tip »gu« izgleda tako:

Slika 19 - tip "gu" v ZMI

Poleg lastnosti v ZMI-ju, lahko tip vsebine izvozimo na datotečni sistem strežnika in ga tam povežemo s Python skripto, ki se izvede ob vsaki novi kreaciji objekta tipa »gu«. V taki Python skripti lahko definiramo funkcije, ki pripadajo objektu. Tukaj je pomembno omeniti, da gre za Unrestricted Python skripto, ki se lahko izključno nahaja le na datotečnem sistemu – in ne v Zope Management Interface- u, kjer lahko pišemo (Restricted Python) skripte direktno iz brskalnika (TTW).

(34)

26

Slika 20 - Python skripta tipa vsebine "gu"

3.1.2. Uporabnik

3.1.2.1. Izbira učitelja

Na OŠ Trebnje so povedali, da se starši oz. skrbniki otrok pri njih načeloma ne prijavljajo na govorilno uro pri razredniku, zato bi želeli, da se prijavijo direktno pri učitelju, ki tega otroka uči. Torej če starša

(35)

27

zanima mnenje učitelja o otrokovem znanju slovenščine, se lahko direktno prijavi pri njem. Lahko se prijavi k več učiteljem, ima pa se možnost prijaviti tudi pri razredniku – ki bo v sistemu tretiran kot en od učiteljev, brez posebnih dodatnih lastnosti.

Ker je na OŠ Trebnje trenutno nekaj manj kot 100 učiteljev, sem želel izbiro učitelja narediti čim bolj prijazno in učinkovito uporabnikom. Enostaven seznam iz katerega bi starš izbral učitelja, se mi zaradi velikega števila učiteljev ni zdel dobra ideja. Ker pa en učitelj lahko poučuje več predmetov in en predmet lahko poučuje več učiteljev, se mi tudi ločitev samo po predmetih ni zdela dovolj dobra. Na koncu sem se odločil za filter učiteljev, ki podpira filtriranje po imenih, priimkih ali predmetih. Za to sem uporabil jQuery vmesnik »autoComplete«, ki ga lahko brezplačno prenesemo iz spletne strani https://goodies.pixabay.com/jquery/auto-complete/demo.html. Končni rezultat naj bi izgledal približno tako:

Slika 21 - filtriranje po imenih in priimkih

Slika 22 - filtriranje po predmetih

3.1.2.2. Izbira razpisane govorilne ure

Po tem, ko uporabnik izbere željenega učitelja in potrdi izbiro, se mu odpre modalno okno z

razpisanimi govorilnimi urami za tega učitelja. Torej, če učitelj na začetku leta razpiše termine za vse govorilne ure, ki jih bo imel v tekočem šolskem letu, se bodo v modalnem oknu prikazale povezave na vse te govorilne ure in prijava za njih bo omogočena.

(36)

28

Slika 23 - razpisane govorilne ure za izbranega učitelja

Za izdelavo modalnega okna sem uporabil ogrodje (angl. framework) Foundation

(http://foundation.zurb.com/), ki zelo olajša urejanje vizualnega izgleda spletne strani s svojimi CSS in JS knjižnicami, tako za velike namizne ekrane, kakor tudi za manjše ekrane mobilnih naprav (angl.

responsive design).

(37)

29 3.1.2.3. Prijava/odjava

Po izbiri razpisane govorilne ure, uporabnik pride na pogled razpisanih terminov za to uro. Trenutno zasedeni termini so posebej označeni in izbira tega termina je onemogočena vsem uporabnikom, dokler se prijavljeni uporabnik ne odjavi.

Slika 24 - prijava in odjava iz govorilne ure

Zaradi demonstracije izgleda TTW (Through The Web) Python skript, sem prijavo in odjavo od termina izdelal v Zope Management Interface-u namesto preko skript na datotečnem sistemu strežnika.

Ker je cilj tega diplomskega dela le zasnova sistema za prijavo na govorilne ure, je vse skupaj narejeno precej ne robustno . Npr. v objekt »gu« shranjujem kar imena in priimke staršev (in ne ID- jev), ki so se prijavili na termin in potem tudi pri odjavi preverjam, ali se to ime nahaja znotraj objekta. Do nepravilnosti pride, če se starš prijavi na govorilno uro, potem spremeni svoje ime oz.

priimek in se poskuša spet prijaviti/odjaviti iz iste govorilne ure. Zaenkrat je to tako narejeno zaradi lažjega pregleda lastnosti, ki se shranjujejo v objekt, seveda pa bi bilo shranjevanje in prikazovanje teh podatkov treba popraviti.

(38)

30

Slika 25 - odjava od termina – TTW Python skripta

3.1.3. Učitelj

3.1.3.1. Razpis nove govorilne ure

V tem koraku se dejansko kreira nov objekt tipa »gu«. To je za uporabnike (v tem primeru učitelje) sistema precej enostavno opravilo, kar je nekako tudi namen CMS-jev. Ker sem v sistemu Plone definiral tip vsebine »gu« in mu na datotečnem sistemu pripel Python skripto, se ob vsaki novi kreaciji objekta, na njem upoštevajo določene lastnosti (funkcije), s katerimi si pomagam pri opravljanju različnih operacij (inicializacija polj, shranjevanje in brisanje podatkov v in iz objekta).

(39)

31

Slika 26 - dodajanje nove govorilne ure preko orodne vrstice

3.1.3.2. Pregled prijav

Kot sem že omenil v razdelku »6.1.2.3 Prijava/odjava«, se v objekt tipa »gu« zapišeta ime in priimek starša ter izbrani termin. Ker bodo do teh podatkov imeli dostop samo učitelji in skrbnik (ne starši), je trenuten vizualni izgled pregleda prijav za namen zasnove po mojem mnenju zadosten, da

(40)

32

demonstrira funkcionalnost. Za zapis podatkov v objekt poskrbi funkcija rezervirajTermin(), ki je pripeta objektu tipa »gu« in za parametra sprejme izbrani termin ter ime prijavljenega uporabnika.

Slika 27 - trenutni pregled prijav na govorilno uro

3.1.4. Skrbnik

3.1.4.1. Uvoz uporabnikov

OŠ Trebnje vsako leto obiskuje približno 700 učencev, kar pomeni, da je staršev in skrbnikov običajno nekje okrog 1400. Njihova baza uporabnikov se nahaja v programu LO.POLIS, za katerega skrbi podjetje Logos. Z OŠ Trebnje smo se dogovorili (pa tudi sicer mislim, da je to dovolj dobra splošna rešitev), da bo uvoz uporabnikov v sistem za prijavo na govorilne ure potekal dato, da se bo na strežnik naložila CSV (angl. comma separated values) datoteka, preko katere se bodo v sistemu Plone kreirali novi uporabniki. To pomeni, da se bo za vsakega uporabnika kreiralo uporabniško ime in geslo, določen pa bo tudi dostop, ki ga bodo ti uporabniki imeli. Ker nekaj staršev še vedno ne uporablja elektronske pošte, sem se odločil, da bom na začetku vsem uporabnikom dodelil isto geslo, ki ga bodo morali ob prvem vstopu v sistem spremeniti.

Uvoz učiteljev bo potekal skoraj identično, le da bo za njih določen drugačen nivo dostopa.

(41)

33

4. Zaključek

V diplomskem delu sem predstavil idejo za izdelavo osnovnih gradnikov spletnega orodja za prijavo na govorilne ure. Orodje sem za boljšo predstavo delno tudi izdelal v sistemu za upravljanje vsebine Plone.

Najprej sem izpostavil nekaj osnovnih lastnosti sistemov za upravljanje vsebin in nato bolj podrobno opisal sistem Plone. Spoznal sem, da je Plone zelo zmogljiv in varen sistem s prijaznim uporabniškim vmesnikom. Za dopolnitev njegovih osnovnih funkcionalnosti je razvijalcem omogočeno pisanje lastnih produktov, kar pomeni, da je sistem popolnoma prilagodljiv. Ker je Plone zgrajen na jeziku Python, se tudi produkti pišejo v Pythonu, kar je po mojem mnenju velika prednost, glede na trenutno rast popularnosti tega jezika.

Na praktičnem primeru zasnove spletnega orodja za prijavo na govorilne ure sem predstavil ključne procese pri delu s sistemom Plone. To je vsebovalo urejanje predlog, kreiranje lastnih podatkovnih tipov in produktov, preverjanje veljavnosti obrazcev in urejanje vsebine objektov. Vsi ti procesi so potrebni pri praktično vsakem spletnem orodju.

V zasnovi sem vključil vse osnovne elemente funkcionalnega orodja za prijavo na govorilne ure. To pokriva izbiro učitelja, kreiranje nove govorilne ure, prijavo/odjavo od termina, pregled prijav in uvoz uporabnikov. Za izdelavo teh elementov sem moral preučiti, kako sistem Plone operira s podatki na datotečnem sistemu strežnika in kako so ti podatki potem uporabljeni v uporabniškem vmesniku.

Zaradi obsega diplomskega dela sem se odločil, da bom izpustil primerjavo različnih CMSjev in raje bolj podrobno opisal sistem Plone in delo z njim. Ugotovil sem, da je Plone zaradi vseh svojih lastnosti zelo dober sistem za izdelavo kvalitetnega in fleksibilnega spletnega orodja »po meri«.

(42)

34

5. Viri in literatura

Application server. (4.8.2016). Pridobljeno s https://en.wikipedia.org/wiki/Application_server.

Barker, D., 2015. Web Content Management: Systems, Features, and Best Practices. Sebastopol:

O’Reilly Media.

Comparing Open Source CMSs: WordPress, Joomla, Drupal, and Plone. (maj 2009). Pridobljeno s http://www.idealware.org/custom-resources/tips/comparing-open-source-cmss-wordpress- joomla-drupal-and-plone

Comparison of the usage of PHP vs. Python for websites. (28.7.2016). Pridobljeno s https://w3techs.com/technologies/comparison/pl-php,pl-python.

Delmonte, M., 2009. The definitive guide to Plone. [Elektronski vir] 2. izdaja. New York: Berkeley, CA : Apress.

Hakim, P. (25.8.2011). Python vs. PHP: Choosing your next project's language. Pridobljeno s

http://www.techworld.com.au/article/398573/python_vs_php_choosing_your_next_project_langu age/.

Harej, J. (2004). Sistemi za upravljanje z vsebinami. Pridobljeno s

http://profesor.gess.si/marjana.pograjc/%C4%8Dlanki_VIVID/Arhiv2004/06Harej.pdf.

Joomla. (28.7.2015). Pridobljeno s https://sl.wikipedia.org/wiki/Joomla.

Kohan, B. (2010). What is a Content Management System (CMS)?. Pridobljeno s http://www.comentum.com/what-is-cms-content-management-system.html.

Northcutt, C. (15.1.2013). Why Choose A Content Management System For Your Site. Pridobljeno s https://blog.nexcess.net/2013/01/15/choose-content-management-system-for-your-site/.

(Neznano). (26. april 2011). Object oriented databases [Video]. Pridobljeno s https://www.youtube.com/watch?v=7v_5vfTKDVs.

Our history. (b.d.). Pridobljeno s https://www.drupal.org/about/history.

Palan, H. (b.d.). What is Web Presence? [Web log post]. Pridobljeno s http://www.hankpalan.com/blog/web-presence/what-web-presence

Plone (software). (5.5.2016). Pridobljeno s https://en.wikipedia.org/wiki/Plone_(software).

Plone - The Open Source Enterprise CMS. (b.d.). Pridobljeno s http://www.sixfeetup.com/plone-cms/plone-cms-new.

Plone wins 2009 »Best Other Open-Source CMS« Award, 2009. (2009). Pridobljeno s

http://www.enfoldsystems.com/news/2009-201cbest-other-open-source-cms201d-award.

Sandboxing and RestrictedPython. (b.d.). Pridobljeno s

http://docs.plone.org/develop/plone/security/sandboxing.html.

Usage of content management systems for websites. (3.7.2016). Pridobljeno s https://w3techs.com/technologies/overview/content_management/all.

(43)

35 Using the Zope Management Interface. (b.d.). Pridobljeno s

https://docs.zope.org/zope2/zope2book/UsingZope.html.

Why aren't OODBMS as widespread as RDBMS? (2009). Pridobljeno s

http://stackoverflow.com/questions/1350044/why-arent-oodbms-as-widespread-as-rdbms.

Yoko, C. (18.4.2016). WordPress vs Joomla vs Drupal: A Content Management System (CMS) Review for Marketers. Pridobljeno s https://www.yokoco.com/2016/04/18/wordpress-vs-joomla-vs-drupal- a-content-management-system-cms-review-for-marketers/.

Zope Zeo vs. standalone setups. (7.7.2008). Pridobljeno s

https://opensourcehacker.com/2008/07/07/zope-zeo-setupconversion-and-zeo-vs-standalone- performance-review/.

Reference

POVEZANI DOKUMENTI

V prispevku bom zato najprej pokazala, kako je Parsons uporabil svoj model menjave v teoretični arhitektonski zgradbi, nato se bom osredotočila na mikroinstitucionalno raven

Z anketnim vprašalnikom bom najprej poskusila dobiti vpogled v stališča učiteljev o ekstenzivnem branju tako v maternem kot tujem jeziku, nato pa bom preverila

- Najprej bom preverila predznanje u č encev in sicer tako, da bodo rešili preizkus znanja na temo prometnih znakov, pomembnih za pešce in kolesarje. S tem bom preverila

Na podlagi teoretičnega dela jih bom povprašala predvsem o dejavnikih in pogojih za vpis otrok v zasebne vzgojno- izobraževalne ustanove ter primerjala stališča

Zato bom v diplomski nalogi najprej predstavila razvoj govora, kamor sodi tudi razvijanje teme, nato pa bom spregovorila o tem, kako lahko vzgojitelj spodbuja

Naprava lahko učinkovito deluje tudi na organske gospodinjske odpadke z dodatkom zelenih rastlinskih odpadkov, kar bom prikazal na primeru bioplinske naprave

V diplomski nalogi bom analizirala trženje v bankah, osredotočila pa se bom na trženje bančnih storitev za pravne osebe. Sekundarne podatke bom zbirala iz strokovne literature,

Najprej bom predstavil osnovni program OVSIU, ki omogo č a posamezniku oziroma poklicnemu vojaku prehod na pod č astniško dolžnost. Program je namenjen ciljni skupini