43
Nejc Kete SISTEM ZA UPRAVLJANJE VSEBIN MEDIAWIKI Diplomsko delo Maribor, september 2012

Navodila za izdelavo diplomske naloge - CORE · 2017-11-27 · skupnost. MediaWiki je prosto dostopna programska oprema, ki določa, da lahko vsakdo postavi svoj portal wiki, brez

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Nejc Kete

SISTEM ZA UPRAVLJANJE VSEBIN MEDIAWIKI

Diplomsko delo

Maribor, september 2012

I

Diplomsko delo univerzitetnega študijskega programa

SISTEM ZA UPRAVLJANJE VSEBIN MEDIAWIKI

Študent: Nejc Kete

Študijski program: Računalništvo in informacijske tehnologije (UN)

Mentor: red. prof. dr. Janez Brest

Somentor: asist. dr. Aleš Zamuda

Maribor, september 2012

II

III

ZAHVALA

Zahvaljujem se mentorju red. prof. dr. Janezu

Brestu za pomoč in vodenje pri opravljanju

diplomskega dela. Prav tako se zahvaljujem

somentorju asist. dr. Alešu Zamudi.

Posebna zahvala velja staršem, ki so mi omogočili

študij.

IV

SISTEM ZA UPRAVLJANJE VSEBIN MEDIAWIKI

Ključne besede: MediaWiki, Wikipedija, sistem za upravljanje vsebin, CMS, PHP,

MySQL, Apache, LaTeX, BibTeX

UDK: 004.65(043.2)

Povzetek

V diplomskem delu predstavljamo sistem za upravljanje vsebin MediaWiki. V teoretičnem

delu se najprej spoznamo s sistemom MediaWiki, njegovimi lastnostmi in arhitekturo.

Spoznamo jezik wiki in dodatek z razpoznavalnimi funkcijami. V nadaljevanju spozamo

LaTeX in BibTeX, podamo nekaj primerov in prikažemo njuno delovanje. V praktičnem

delu opišemo naš dodatek k sistemu MediaWiki za pretvorbo citatov iz oblike MediaWiki v

obliko BibTeX in vse uporabljene tehnologije ter podamo nekaj primerov kode. Sledi

prikaz rezultatov praktičnega dela diplomskega dela in sklep.

V

MEDIAWIKI CONTENT MANAGEMENT SYSTEM

Key words: MediaWiki, Wikipedia, Content Management System, CMS, PHP, MySQL,

Apache, LaTeX, BibTeX

UDK: 004.65(043.2)

Abstract

In this diploma work we study MediaWiki content management system. Theoretical part of

the diploma covers the basics of MediaWiki CMS, its properties, and architecture. We

describe wiki markup language of the MediaWiki CMS and present the MediaWiki

templates and extension Parser functions. After that we describe LaTeX and BibTeX and

give some examples of their use. In the practical part of the diploma work we describe our

extension, which converts a MediaWiki styled citation into a BibTeX styled citation format.

We talk about the technologies used and give a couple of code examples. Then we describe

the results of our work, and convey conclusions.

VI

VSEBINA

1 UVOD ........................................................................................................................... 1

2 SORODNA DELA ....................................................................................................... 2

2.1 MEDIAWIKI NA HETEROGENEM RAČUNALNIŠKEM SISTEMU ................................... 2

2.1.1 Spletni strežnik Apache ...................................................................................... 3

2.1.2 Porazdelitev obremenitve pri gručenju ............................................................. 3

2.2 ARHITEKTURA MEDIAWIKI .................................................................................... 4

2.2.1 Osnove programske arhitekture MediaWiki ...................................................... 4

2.2.2 Podatkovna baza v MediaWiki .......................................................................... 5

2.2.3 Spletne zahteve in predpomnjenje v MediaWiki ................................................ 6

2.2.4 Nalaganje virov v MediaWiki ............................................................................ 9

2.2.5 Večjezičnost ....................................................................................................... 9

2.3 JEZIK WIKI ............................................................................................................ 10

2.3.1 Povezave .......................................................................................................... 12

2.3.2 Predloge v MediaWiki ..................................................................................... 13

2.3.3 Magične besede in razpoznavalne funkcije ..................................................... 14

2.4 LATEX IN BIBTEX ............................................................................................... 17

3 DODATEK ZA GENERIRANJE CITATOV V ZAPISU BIBTEX ..................... 20

3.1 PREDLOGA ............................................................................................................ 20

3.2 POMOŽNA FUNKCIJA V JAVASCRIPT ..................................................................... 21

3.3 FUNKCIJA PHP ..................................................................................................... 22

3.4 ZAPIS BIBTEX VNOSA MEDIAWIKI IZ NAŠE PREDLOGE ........................................ 23

3.5 IMPLEMENTACIJA DODATKA ZA MEDIAWIKI 1.15.1. ............................................ 23

4 REZULTATI .............................................................................................................. 25

4.1 NAMESTITEV ........................................................................................................ 25

4.2 DELOVANJE DODATKA ZA PRIKAZ BESEDILA V OBLIKI BIBTEX ............................ 27

5 SKLEP ........................................................................................................................ 30

VII

UPORABLJENE KRATICE IN OZNAKE

CMS - Sistem za upravljanje vsebin (angl. Content Management System)

CSS - angl. Cascading Style Sheets

DNS - angl. Domain Name System

IP - Internetni protokol (angl. Internet protocol)

LAMP - Nabor programske opreme (Linux, Apache, MySQL, PHP)

PHP - angl. Hypertext Preprocessor

(X)HTML - angl. (Extensible) HyperText Markup Language

BibTeX - Programska oprema za upravljanje seznama referenc

LaTeX - Označevalni jezik in sistem za pripravljanje dokumentov

MySQL - Odprtokodna implementacija relacijske podatkovne baze

Sistem za upravljanje vsebin MediaWiki Stran 1

1 UVOD

Internet je dandanes eden večjih, če ne največji, vir informacij [5]. Z namenom širjenja

znanja je bila leta 2001 ustvarjena največja internetna enciklopedija – Wikipedija [2].

Wikipedijo mesečno obišče 400 milijonov uporabnikov in vsebuje več kot 21 milijonov

člankov v 280 različnih jezikih [4]. V to zakladnico znanja lahko dodaja čisto vsak

uporabnik Interneta, saj imajo pravice za dodajanje prispevkov (člankov) vsi uporabniki

spletne strani, večina prispevkov je odprtih tudi za anonimno urejanje (beleži se naslov IP).

Uporabe sistema se lahko hitro naučimo in je dokaj preprost za uporabo [18]. Wikipedijo

poganja sistem za upravljanje vsebin imenovan MediaWiki. MediaWiki je bil primarno

razvit za uporabo pri projektu Wikipedija, a je s časom postal vedno bolj prijazen za

uporabo tudi pri zunanjih uporabnikih, s čimer se je razvila tudi močna razvijalska

skupnost. MediaWiki je prosto dostopna programska oprema, ki določa, da lahko vsakdo

postavi svoj portal wiki, brez da bi moral plačati licenco za uporabo programske opreme.

Namen diplomskega dela je seznanitev s sistemom MediaWiki, spoznati, kako lahko

postavimo svoj wiki, kako sistem deluje ter, kako v sistem dodamo novo funkcionalnost.

Spoznali bomo tudi programsko opremo za urejanje referenc BibTeX. Podamo še opis

jezika wiki ter BibTeX.

V nadaljevanju v drugem poglavju opišemo, kaj je sistem za upravljanje vsebin in katere

sorodne sisteme še poznamo, kako namestimo sistem MediaWiki, opišemo gručenje in

arhitekturo sistema MediaWiki ter razloge za takšno arhitekturo. V nadaljevanju se

posvetimo jeziku wiki in razpoznavalnim funkcijam ter na koncu poglavja opišemo še

LaTeX in BibTeX. V naslednjem poglavju predstavimo praktični del diplomskega dela, in

sicer generiranje BibTeX zapisa citata iz predloge. V četrtem poglavju prikažemo, kako

naš dodatek deluje na sistemu MediaWiki, ki smo ga postavili za namene diplomske

naloge. V zaključnem poglavju podamo sklep, nato je navedena še literatura.

Sistem za upravljanje vsebin MediaWiki Stran 2

2 SORODNA DELA

Sistem za upravljanje vsebin (angl. Content Management System – CMS), še natančneje

spletni sistem za upravljanje vsebin (angl. Web Content Management System - WCMS) je

sistem, ki uredniku spletne strani omogoča urejanje vsebin preko spletnega vmesnika.

Sistemi CMS so dandanes zelo priljubljeni med naročniki spletnih strani, saj lahko

naročnik sam ureja in posodablja vsebino spletišča brez pomoči osebe ali podjetja, ki je

spletišče izdelalo. Tako urednik upravlja z vsebino spletne strani, ne da bi napisal kakšno

vrstico kode.

Obstaja veliko sistemov za urejanje vsebin z različnimi funkcionalnostmi [30]. En najbolj

razširjenih sistemov CMS je odprtokodni sistem Joomla!, med sisteme za upravljanje

vsebin pa uvrščamo tudi sisteme za spletne dnevnike (npr. WordPress) [1] in sisteme wiki,

kot na primer MediaWiki, ki ga tudi obravnavamo v tej diplomski nalogi. Sistem

MediaWiki je na voljo pod splošnim licenčnim dovoljenjem GNU (angl. General Public

Licence - GNU) [2], ki dovoljuje zastonjsko razmnoževanje in urejanje kode, zaradi česar

spada pod prosto dostopno programsko opremo.

2.1 MediaWiki na heterogenem računalniškem sistemu

Računalniška gruča je skupina računalnikov, ki so med sabo povezani tako, da na zunaj

delujejo kot en sistem [3, 26]. Eden izmed računalnikov v gruči lahko deluje kot glavni,

ostali računalniki pa so lahko le vozlišča, ki opravljajo delo. Tako se delo porazdeli med

vozlišča in zaključi hitreje, kot če bi vso delo upravljal en računalnik. Računalniške gruče

in heterogeno računanje [3] sta postala še bolj zanimiva v zadnjih letih, ker za razliko od

simetričnih računalniških sistemov ponujata večjo zmogljivost glede na porabljeno

energijo [3].

Sistem za upravljanje vsebin MediaWiki Stran 3

Spletne strani, kot je Wikipedija, potrebujejo takšne gruče strežnikov, da lahko postrežejo

vse zahteve. V nadaljevanju bomo na kratko opisali, kaj, poleg računalnikov povezanih v

omrežje, še potrebujemo za postavitev takšne gruče.

2.1.1 Spletni strežnik Apache

Apache je najpogosteje uporabljen spletni strežnik. Namestimo ga lahko na platformi

Linux, kar je tudi najbolj pogosto [27]. Spletni strežniki Apache so pogosto uporabljeni

skupaj s podatkovno bazo MySQL in jezikom PHP. Ta nabor lahko skupno označimo kot

LAMP (Linux, Apache, MySQL, PHP) [27].

2.1.2 Porazdelitev obremenitve pri gručenju

Porazdelitev obremenitve (angl. Load balancing) pri gručenju rešuje problem deljenja dela

med računalniki v gruči [28]. Opišimo t.i. Round robin DNS oz. »eden za drugim«

porazdelitev obremenitve.

Najenostavnejša implementacija Round robin DNS deluje tako, da sistem na zahtevo DNS

vrne seznam naslovov IP in ne le enega [29]. Kateri izmed naslovov IP na seznamu bo

izbran, se določi s postopkom »eden za drugim«. Kot primer podajmo podjetje, katerega

spletna domena kaže na štiri različne strežnike, na katerih so identične spletne strani. Ko

prvi uporabnik želi dostopati do spletne strani, bo preusmerjen na naslov IP prvega

strežnika. Naslednji uporabnik bo prejel naslov IP drugega strežnika itn. Peti uporabnik bo

zopet prejel IP naslov prvega strežnika.

Tak način porazdelitve ima svoje slabosti. Na primer ob izpadu enega od strežnikov bo IP

naslov tega še vedno posredovan, vedno ko bo ta na vrsti. Prav tako ne upošteva

uporabnikove lokacije, obremenitev strežnikov in ostalih pomembnih dejavnikov [29].

Sistem za upravljanje vsebin MediaWiki Stran 4

2.2 Arhitektura MediaWiki

Čeprav imajo razvijalci arhitekture MediaWiki v mislih sistem, ki je zanimiv tudi za

zunanje uporabnike, je glavni cilj za to arhitekturo vedno programska oprema za

Wikipedijo, kar se pozna tudi v organizaciji in arhitekturi samega sistema [4].

Wikipedija je, s kar 400 milijoni različnih obiskovalcev vsak mesec, med desetimi najbolj

obiskanimi stranmi na svetu. A ker za fundacijo Wikipedije skrbi neprofitna organizacija,

ki se primarno financira preko donacij, je sistem, ki poganja to stran, zelo varčen glede

porabe (internetnih) sredstev [4].

Razvijalci so si s sistemom Wikipedije že na začetku zadali cilj izdelati prosto dostopno

platformo za širjenje znanja, ki bi jo urejala in dopolnjevala spletna skupnost [4]. Zato

MediaWiki v osnovni nastavitvi ne vključi raznih orodij in funkcij za nadzor, ki jih

privzeto omogočijo ostali sistemi CMS, kot na primer seznam dovoljenih dostopov (angl.

Access Control List - ACL), a vseeno vsebuje orodja za boj proti vandalizmu in neželenim

sporočilom (t.i. spamu).

Prosta dostopnost kode je privabila tudi močno skupnost zunanjih razvijalcev in

uporabnikov, ki zaupajo v MediaWiki CMS, saj vedo, da je sistem redno vzdrževan in

nadgrajevan, dokler je v uporabi na tako obiskani speletni strani, kot je Wikipedija.

MediaWiki je korak bližje zunanjim uporabnikom tudi s poenostavitvijo namestitve

sistema, ki se opravi preko brskalnika, za kar ni več potrebe po uporabi ukazne vrstice, kot

je to bilo potrebno prej, ko je bil namestitveni postopek prirejen le za Wikipedijo [4].

2.2.1 Osnove programske arhitekture MediaWiki

Leta 2001 so za programsko platformo sistema MediaWiki izbrali jezik PHP [4]. PHP

(Hypertext Preprocesor) [8] je skriptni jezik, ki se največ uporablja pri razvoju spletnih

strani in aplikacij.

Na začetku razvoja je bilo storjenih nekaj načrtovalskih napak, kot na primer slaba

poimenovanja razredov, a te so razumljive glede na takratno majhno število razvijalcev in

omejen čas razvoja. Nekateri se ne strinjajo z izbiro jezika PHP, saj naj bi se po njihovem

Sistem za upravljanje vsebin MediaWiki Stran 5

mnenju Java obnesla dosti bolje [4]. Po drugi strani je PHP zelo priljubljen, kar je olajšalo

iskanje novega kadra razvijalcev.

Kljub temu, da MediaWiki vsebuje nekaj nepopolne kode, je bil sistem z leti deležen

večjih izboljšav. A večina razvijalcev svoj čas raje posveča novitetam in popravke v

arhitekturi pušča za prihodnost, ko bodo res nujni [4].

Dandanes je varnost eden najpomembnejših dejavnikov pri zasnovi in vzpostavitvi spletnih

strani in aplikacij. Ker platforma MediaWiki služi za tako veliko spletišče, kot je

Wikipedija, je vsekakor dobro, da ima implementirane vse varnostne elemente, ki

preprečujejo zlorabe.

Tako MediaWiki implementira razrede za boj proti zlorabi spletnih obrazcev in spletnih

naslovov, na primer razred WebRequest, ki analizira argumente poslane preko naslova

URL ali metode POST in odstrani neželene znake, kot so t.i. čarobni narekovaji [4].

Napade z vstavljanjem kode (Cross-site scripting - XSS) po navadi prepreči z uporabo

funkcije htmlspecialchars() jezika PHP, uporablja pa tudi očiščevalec XHTML in

funkcije za preprečevanje napadov z vrivanjem stavkov SQL [4].

Z večino nastavitev sistem MediaWiki upravlja preko globalnih spremenljivk, katerih

privzete vrednosti so shranjene v datoteki DefaultSettings.php. Administrator

sistema jih lahko prepiše tako, da jim novo vrednost nastavi v datoteki

LocalSettings.php. Ker uporaba globalnih spremenljivk ni najboljša rešitev, se

definicija globalnih spremenljivk počasi spreminja v objekte v novejših različicah sistema

MediaWiki [4].

2.2.2 Podatkovna baza v MediaWiki

Mediawiki uporablja podatkovno bazo MySQL [6, 16]. MySQL je odprtokodna

podatkovna baza. Razvijalska skupnost je s svojimi implementacijami podprla tudi druge

podatkovne baze, na primer PostgreSQL, Oracle ter SQLite [4].

Trenutna implementacija zgradbe podatkovne baze vsebuje na desetine tabel, večina jih

vsebuje vsebino, na primer tabele page, revision, category in recentchanges,

podatke o uporabniku (user, user_groups) ipd. [4].

Sistem za upravljanje vsebin MediaWiki Stran 6

V svojem času obstoja je bil MediaWiki deležen več sprememb v obliki podatkovne baze.

Ena večjih sprememb je prišla z različico 1.5. Različica 1.4 je za shrambo vsebine

uporabljala dve pomembni tabeli, cur, za trenutno vsebino in metapodatke strani, in old,

za prejšnje različice strani. Ko je bila vsebina strani urejena, se je nova vsebina zapisala v

tabelo cur, stara vsebina pa se je iz tabele cur zapisala v tabelo old. Tako je prihajalo

do dolgih operacij pri, na primer spreminjanju naslova strani, saj se je moral naslov

spremeniti v vseh vnosih tabele old, kjer so bile shranjene stare različice vsebine. Prav

tako je bilo potrebno skopirati vsebino tabel cur in old v tabelo archive, ko smo želeli

določeno stran izbrisati [4].

Z različico 1.5 sta bili tabeli cur in old zamenjani s page (metapodatki strani),

revision (metapodatki za vse popravke, stare in nove) ter text (besedilna vsebina

vseh povpravkov; trenutnih, starih in izbrisanih). Sedaj, ko se stran uredi, metapodatkov

popravka ni potrebno kopirati med tabelami, zadosti je že vstavljanje nove vrstice in

spremenitev vrednosti kazalca page_latest. Prav tako metapodatki popravka ne

vsebujejo več naslova strani, ampak le številčni identifikator (id) strani, zaradi česar ni

več potrebe po spreminjanju naslova v vseh vnosih te strani [4].

2.2.3 Spletne zahteve in predpomnjenje v MediaWiki

2.2.3.1 Potek spletne zahteve

Glavna vstopna točka sistema MediaWiki je index.php, ki obdela večino zahtev,

procesiranih preko aplikacijskih strežnikov. Koda v datoteki index.php najprej opravi

preverjanje varnosti in napadov, nato naloži privzete nastavitve iz

includes/DefaultSettings.php in includes/Setup.php, določi

konfiguracijo ter uveljavi nastavitve, shranjene v LocalSettings.php. Po tem ustvari

objekta MediaWiki ($mediawiki) in Title ($wgTitle) objekta [4].

Stran index.php lahko prejme več različnih parametrov. Na primer, parameter action

ima privzeto vrednost view, kar nam stran odpre v načinu za branje, parameter edit

odpre članek z vmesnikom za urejanje, parameter submit omogoči predogled ali

Sistem za upravljanje vsebin MediaWiki Stran 7

shranjevanje strani, parameter histroy pokaže zgodovino te strani, parameter watch pa

članek doda na uporabnikov seznam spremljanih člankov [4].

Nato se kliče funkcija Mediawiki::performRequst(), ki obdela večino zahtev

URL, s čimer preveri napačne naslove, omejitve branja, preusmeritve ter določi, ali je

zahtevana navadna ali posebna stran (normal ali special page). Zahtevo za navadno stran

obdela funkcija Mediawiki::initilizeArticle(), zahtevo za posebno stran pa

funkcija SpecialPageFactory::executePath() [4].

2.2.3.2 Sestava ne-predpomnjene strani

Ko si želimo ogledati stran, ki je ni v predpomnilniku sistema, se ta naloži v naslednjem

vrstnem redu [4]:

1) Najprej se obdela jezik wiki, torej vso besedilo wiki, vse potrebne predloge in

razpoznavalne funkcije ter vrednosti vseh spremenljivk.

2) Nato se generira koda XHTML z referencami na datoteke CSS in JavaScipt, ki se

posreduje uporabniku. Vsebina te kode je odvisna od vsebine strani, torej besedila

wiki, povezav, uporabniškega imena, namenskega prostora ipd. Vsebino te kode

lahko vidimo, če v našem brskalniku kliknemo »ogled vira strani«.

3) Zadnji korak opravi brskalnik, ki prevede kodo XHTML ter prikaže spletno stran.

Sam izgled strani je odvisen od kode XHTML, CSS in JavaScript ter raznih

elementov, kot so slike in drugo.

2.2.3.3 Predpomnjenje

Uporaba na straneh Wikipedija je sistemu MediaWiki zadala glavni cilj – zmogljivost,

hkrati pa je predpomnilniška infrastruktura Wikipedije uvedla omejitve za sistem

MediaWiki. Rešitev za problem predpomnilniške infrastrukture so razvijalci našli v

fleksibilnosti sistema, ne da bi žrtvovali zmogljivost ali potrebe po predpomnjenju [4].

Primer te fleksibilnosti je prikaz naslova IP neprijavljenega uporabnika v zgornjem desnem

delu strani. Spremenljivka $wgShowIPinHeader omogoča administratorju sistema, da

Sistem za upravljanje vsebin MediaWiki Stran 8

to funkcijo izklopi in tako naredi stran enako za vse neprijavljene uporabnike, zaradi česar

se lahko vsem posreduje čisto enaka različica strani [4].

Na straneh Wikipedije večino zahtev obdelajo povratni posredniški strežniki (angl. reverse

caching proxies) in tako nikoli ne prispejo do aplikacijskega strežnika. Ti vsebujejo

statične različice celotnih upodobljenih strani za neprijavljene uporabnike, ki želijo samo

prebrati neko informacijo. Za prijavljene uporabnike, ki jim posredniki ne morejo postreči

s stranjo, pošljejo zahtevo na spletni strežnik. MediaWiki privzeto podpira te posrednike in

s tem integrira predpomnilniško plast tako, da jih obvesti, naj se iz predpomnilnika izbriše

stran, ko je ta bila spremenjena [4].

Druga stopnja predpomnjenja se odvija, ko MediaWiki sestavi stran iz več predmetov, ki

so vsak po sebi lahko v predpomnilniku, kot na primer uporabniški vmesnik (meni,

besedilo vmesnika, stranski meni) ali vsebina razčlenjenja besedila wiki. Sistem hranjenja

predmetov v predpomnilniku je pomemben za preprečevanje ponovnih nalaganj dolgih in

kompleksnih strani. V MediaWiki je bil implementiran že leta 2003 z različico 1.1 [4].

Od različice 1.16 naprej MediaWiki uporablja namenski predpomnilnik predmetov za

lokalizirano besedilo vmesnika. To funkcionalnost so dodali potem, ko so razvijalci

opazili, da je večina predmetov v predpomnilniku le besedilo vmesnika v jeziku

uporabnika. Sistem je osnovan na hitro pridobljenih sporočilih iz nespremenljive

podatkovne baze (angl. constant database - CDB) [4].

Zadnja plast predpomnjenja je sestavljena iz predpomnjene prevedene kode PHP (angl.

opcode cache), ki se uporablja za pohitritev aplikacij PHP. Ker je prevajanje kode lahko

zamuden proces, lahko za pohitritev uporabimo pospeševalnik PHP, ki hrani prevedeno

kodo in jo izvede takoj brez prevajanja. MediaWiki podpira večino pospeševalnikov, kot

na primer APC, PHP accelerator ter eAccelerator [4].

Zaradi zahtev strani Wikipedija, MediaWiki podpira opisano večplastno porazdelitveno

predpomnilniško arhitekturo, prav tako pa podpira tudi ločene nastavitve za manjše strani,

ki ne potrebujejo zahtevne arhitekture. Kot primer podajmo poenostavljen sistem

predpomnjenja, ki hrani celotne renderirane strani, podobno kot predpomnilniški

posredniki [4].

Sistem za upravljanje vsebin MediaWiki Stran 9

2.2.4 Nalaganje virov v MediaWiki

Dandanes veliko vlogo pri uspehu spletnih strani igra že sam izgled in občutek, ki ga

uporabnik dobi ob njihovem obisku in tega se zavedajo tudi razvijalci pri MediaWiki. Tako

sistem s pomočjo JavaScript postaja vedno bolj odziven in interaktiven.

Za optimizacijo prenosa elementov JavaScript in CSS so razvili modul

ResourceLoader [4] (nalagalec virov), ki elemente JavaScript in CSS nalaga, ko so

potrebni in se tako izogne nalaganju neuporabljenih funkcionalnosti (na primer v starejših

brskalnikih, ki teh funkcionalnosti ne podpirajo) ter tako zmanjša nalagalni čas, kar

izboljša uporabniško izkušnjo.

2.2.5 Večjezičnost

Največja ovira pri transnacionalnem širjenju znanja je jezikovna prepreka. Da lahko znanje

učinkovito širimo med čim večje število ljudi, moramo zagotoviti večjezičnost in podpreti

čim več jezikov.

Wikipedija je na voljo v več kot 280 jezikih, od tega je vsebine v angleškem jeziku manj

kot 20% [4]. Ker vsebina na Wikipediji obstaja v tako velikem številu jezikov, je

pomembno, da ne ponuja le vsebine v maternem jeziku uporabnika, ampak tudi vmesnik in

razna orodja, da lahko vsak uporabnik dodaja in ureja vsebino.

Sistem MediaWiki je trenutno lokaliziran v več kot 350 jezikov, tudi v ne-latinske in

desno-leve jezike (angl. right-to-left - RTL). Vsebina in vmesnik lahko imata različen tako

jezik kot smer pisave [4].

Od leta 2005 naprej MediaWiki podpira samo UTF-8 kodirane znake [4]. Posebne znake,

ki jih ne najdemo na tipkovnici, lahko vnesemo s pomočjo orodja MediaWiki Edittools,

kjer znak izberemo iz seznama.

Prihodnje izboljšave se osredotočajo predvsem na boljšo podporo desno-levi pisavi in

dvosmerni pisavi (levo-desno in desno-levo besedilo na isti strani) ter t.i. spletnim pisavam

(WebFonts) [19].

Dodatek WebFonts omogoča uporabo pisav, ki jih uporabnik nima nameščenih na svojem

računalniku. Če uporabnik med urejanjem članka izbere pisavo, ki je na svojem

Sistem za upravljanje vsebin MediaWiki Stran 10

računalniku nima, se le ta prenese s strežnika MediaWiki. Pisava se prenese le enkrat, ob

naknadni uporabi je pisava naložena že lokalno [19].

2.3 Jezik wiki

Jezik wiki (angl. Wiki markup) je preprost označevalni jezik, ki se uporablja za zapis strani

na spletnih straneh wiki. Jezik je poenostavljena različica jezika HTML in uporabniku

olajša oblikovanje strani in vsebine. Ob zahtevi strani MediaWiki pretvori besedilo wiki v

HTML, ki je posredovan brskalniku. MediaWiki za besedilo wiki uporablja naslednje

oblike:

osnovno oblikovanje besedila (opis vidimo v tabeli 1),

Tabela 1: Jezik wiki za oblikovanje besedila [7].

Opis Besedilo wiki Končni izgled

Poševna pisava – italic ''moje besedilo'' moje besedilo

Poudarjena pisava – bold '''moje besedilo''' moje besedilo

Poševna in poudarjena

pisava '''''moje besedilo''''' moje besedilo

Pisava brez oblikovanja

wiki

<nowiki>moje

''besedilo''</nowiki> moje ''besedilo''

sekcije in seznami (opis vidimo v tabeli 2),

Tabela 2: Jezik wiki - oblikovanje sekcij in seznamov [7].

Opis Besedilo wiki Končni izgled

Naslovi

== Naslov stopnje 2 ==

=== Naslov stopnje 3 ===

==== Naslov stopnje 4 ====

===== Naslov stopnje 5 =====

====== Naslov stopnje 6 ======

Naslov stopnje 2

Naslov stopnje 3

Naslov stopnje 4

Naslov stopnje 5

Naslov stopnje 6

Sistem za upravljanje vsebin MediaWiki Stran 11

Horizontalna črta

besedilo nad

----

besedilo pod

besedilo nad

besedilo pod

Neoštevilčen seznam

*To je prvi nivo.

*Vsaka vrstica se mora

začeti z (*).

**To je drugi nivo.

***In to tretji.

To je prvi nivo.

Vsaka vrstica se mora

začeti z (*).

To je drugi nivo.

In to tretji.

Oštevilčen seznam

#Prvi nivo.

#Vsaka vrstica se začne

z (#).

##Več znakov

###nam da globlje

###nivoje.

1. Prvi nivo.

2. Vsaka vrstica se začne z

(# ).

1. Več znakov

1. nam da globlje

2. nivoje.

alineje

:enojna alineja

::dvojna alineja

:::::večkratna alineja

enojna alineja

dvojna alineja

večkratna alineja

odstavki. Ker MediaWiki ignorira enojne presledke med vrsticami, moramo za nov

odstavek pustiti prazno vrstico, prelom vrstice pa lahko tudi vsilimo s HTML oznako

<br /> [7],

HTML oznake in simboli (opis vidimo v tabeli 3).

Tabela 3: Jezik wiki - oznake in simboli [7].

Opis Besedilo wiki Končni izgled

Podčrtano besedilo <u>moje besedilo</u> moje besedilo

Prečrtano besedilo <s>moje besedilo</s> moje besedilo

Izvorna koda <code>moja koda</code> moja koda

Komentar1 <!-- moj komentar -->

1 Komentarji so vidni samo med urejanjem strani.

Sistem za upravljanje vsebin MediaWiki Stran 12

Poljubno oblikovano

besedilo

<pre style=''color:red''>moje

besedilo</pre> moje besedilo

V besedilo lahko dodamo posebne znake, tako na primer s kodo &copy; dobimo znak ©,

s kodo &alpha; pa α. Nabor vseh znakov in pripadajočih kod najdemo v [7].

2.3.1 Povezave

2.3.1.1 Notranje povezave

Notranja povezava je povezava na drugo stran na našem portalu wiki. Notranjo povezavo

označimo z dvojnim oglatim oklepajem. Pri načinu prikaza povezave pa imamo na voljo

več možnosti.

Osnovni način je [[druga_stran]], ki nam kot povezavo prikaže ime strani, na katero

kaže povezava, v tem primeru druga_stran. Če želimo namesto imena strani prikazati

poljubno besedilo, povezavo označimo na naslednji način [[druga_stran | naša

povezava drugače]]. V tem primeru se namesto imena strani druga_stran

pokaže niz naša povezava drugače.

2.3.1.2 Zunanje povezave

Zunanje povezave so povezave, ki kažejo na druge spletne strani. Označimo jih z enojnim

oglatim oklepajem. Tako kot pri notranjih povezavah lahko tudi pri zunanjih uporabimo

dva načina zapisa, prikaz spletnega naslova ali poljubnega niza znakov, ki ga določimo v

povezavi.

Primer:

[http://www.feri.uni-mb.si] nam vrne http://www.feri.uni-mb.si

[http://www.feri.uni-mb.si FERI] nam vrne FERI

Sistem za upravljanje vsebin MediaWiki Stran 13

2.3.2 Predloge v MediaWiki

Predloge so strani wiki, ki so namenjene vključevanju v druge strani. Ime predlog po

dogovoru vsebuje predpono Template:, kar stran doda v namenski prostor predlog [9].

Predlogo vključimo v druge strani z ukazom {{ime_predloge}}. Predlogo lahko

uporabimo na vseh željenih straneh, njihovo urejanje pa spremeni vsebino na vseh straneh,

kjer smo predlogo vključili. Enostaven prikaz delovanja predlog vidimo spodaj:

1) Najprej ustvarimo predlogo »Template:Pozdrav« z vsebino Dobrodošli

na naši strani!

2) Zdaj lahko na katerikoli strani dodamo {{Pozdrav}} in na to mesto se bo

vključila predloga Template:Pozdrav.

3) Tako Pozdravljeni!{{Pozdrav}} na strani prikaže Pozdravljeni!

Dobrodošli na naši strani!

2.3.2.1 Parametri predlog MediaWiki

Za večjo fleksibilnost in uporabnost predlog na različnih straneh lahko predlogi določimo

parametre, ki jih nato podamo pri vključitvi v stran. Tako ista predloga lahko vrača

različne rezultate. Parameter predloge zapišemo kot {{{parameter}}}:

1) Na primer, da želimo izdelati predlogo, ki bo avtorju strani omogočala, da v stran

doda podpis. Želimo torej, da naša predloga na stran doda besedilo To stran je

napisal Nejc.

2) Tako ustvarimo predlogo Template:Podpis, ki izgleda tako: To stran je

napisal {{{1}}}.

3) Nato pri vključitvi strani predlogi dodamo parameter {{Podpis|Nejc}} kar na

stran vključi željen niz To stran je napisal Nejc.

Anonimni parametri predlog MediaWiki

Anonimni parametri so parametri, ki jim ne podamo imena ali vrstnega števila in jih

predloga prebere in zapiše po takšnem vrstnem redu, kot jih prejme. Torej vključitev

Sistem za upravljanje vsebin MediaWiki Stran 14

{{moja_predloga|prvi|drugi|tretji}} na stran vključi predlogo

moja_predloga s prvim parametrom prvi, drugim parametrom drugi in tretjim

parametrom tretji.

Ista predloga s parametri {{moja_predloga|tretji|drugi|prvi}} prejme kot

prvi argument tretji, drugi argument drugi ter tretji argument prvi. Pri uporabi

anonimnih parametrov moramo zato obvezno paziti na vrstni red, po katerem jih podamo.

Oštevilčeni parametri predlog MediaWiki

Da predlogi podamo oštevilčene parametre, moramo tem pri klicu podati vrstno število. Pri

takšnem načinu podajanja parametrov vrstni red ni pomemben.

Na primer: {{moja_predloga|3=tretji|2=drugi|1=prvi}}, kliče predlogo

moja_predloga s prvim parametrom prvi in drugim parametrom drugi ter tretjim

parametrom tretji.

Poimenovani parametri predlog MediaWiki

Tretji način podajanja parametrov je po imenu. Za ta namen moramo predelati predlogo

Podpis iz odseka 2.3.2.1.

Primer: To stran je napisal {{{avtor}}}, dne {{{dan}}} ob

{{{cas}}}.

V tem primeru predlogo vključimo na naslednji način:

{{Podpis|avtor=Nejc|dan=1.1.2012|cas=12:00}}

Predloga tako vrne niz To stran je napisal Nejc, dne 1.1.2012 ob

12:00.

Takšen način podajanja parametrov ni le neodvisen od vrstnega reda parametrov, ampak

naredi predlogo lažje razumljivo in berljivo.

2.3.3 Magične besede in razpoznavalne funkcije

Magične besede (angl. Magic words) so besedilni nizi, ki jih MediaWiki poveže s

funkcijami, ki vračajo različne vrednosti, kot na primer čas, datum, podatke o strani in

Sistem za upravljanje vsebin MediaWiki Stran 15

drugo [10]. Primer magične besede je {{CURRENTYEAR}}, ki vrne trenutno leto, torej

2012.

Razpoznavalne funkcije (angl. Parser functions) omogočijo uporabo logičnih in drugih

funkcij pri dodajanju strani in predlog. Če naš paket MediaWiki razpoznavalnih funkcij

nima privzeto omogočenih, jih lahko dodamo. S strani MediaWiki prenesemo dodatek in

ga shranimo v mapo /extensions, nato pa še v datoteko LocalSettings.php

dodamo stavek require_once("$IP/extensions/ParserFunctions/

ParserFunctions.php");.

Na voljo imamo enajst privzetih razpoznavalnih funkcij. Opisali bomo #expr, #if in

#ifeq. Ostale funkcije so še #iferror, #ifexpr, #ifexist, #rel2abs,

#switch, #time, #timel in #titleparts. Dokumentacija za vse funkcije je

dostopna v [11]. Sledi opis nekaterih izmed teh funkcij.

Funkcija #expr

Funkcija #expr vrne rezultat matematičnega izraza, ki ga prejme kot argument [11].

Uporabimo lahko vse osnovne računske operacije, logične operaterje, kotne funkcije ter

tudi števili pi in e.

Tabela 4: Primer uporabe razpoznavalne funkcije #expr.

Primer Rezultat

{{#expr: 5 + 2}} 7

{{#expr: pi}} 3.1415926535898

Funkcija #if

Funkcija #if preveri, če prvi parameter obstaja oziroma ni prazen in vrne vrednost, ki je

določena kot true ali false.

Oblika: {{#if: testni niz | vrednost true | vrednost false }}

Sistem za upravljanje vsebin MediaWiki Stran 16

Tabela 5: Primer uporabe razpoznavalne funkcije #if.

Primer Rezultat

{{#if: moj niz | obstaja! | niz ni

določen!}}

obstaja!

{{#if: | obstaja! | niz ni določen!}} niz ni določen!

{{#if: 1==2 | true | false}} true

Funkcija #ifeq

Funkcija #ifeq preveri dva besedilna niza in določi, če sta enaka ter vrne vrednost, ki je

določena za true oziroma false.

Oblika: {{#ifeq: niz 1 | niz 2 | niza enaka | niza različna }}

Tabela 6: Primer uporabe razpoznavalne funkcije #ifeq.

Primer Rezultat

{{#ifeq: 01 | 1 | enako | ni enako}}1 enako

{{#ifeq: moj | niz | enako | ni enako}} ni enako

{{#ifeq: Niz | niz | enako | ni enako}}2 ni enako

Pri uporabi razpoznavalnih funkcij v predlogah lahko uporabimo simbol navpične črte (|)

za določitev praznega besedilnega niza kot privzete vrednosti argumenta [20].

Tabela 7: Primer uporabe razpoznavalnih funkcij v predlogah.

Primer uporabe Stanje parametra Primer A:

{{#if:{{{1}}}|

Primer B:

{{#if:

{{{1|}}} |

{{predloga}} Nedefiniran, neuporabljen true false

1 Če sta niza številčna, se primerja številčna vrednost.

2 Če sta niza besedilna, se pri primerjanju razlikujejo male in velike črke.

Sistem za upravljanje vsebin MediaWiki Stran 17

{{predloga|}}

{{predloga|1=}}

Definiran ampak

prazen ali NULL

false false

{{predloga|niz}},

{{predloga|1=niz}}

Definiran in ne

prazen ali NULL

true true

2.4 LaTeX in BibTeX

LaTeX je sistem za stavljenje dokumentov. V začetku osemdesetih let prejšnjega stoletja

ga je razvil Leslie Lamport [21]. Prva širše dostopna različica (2.09) se je pojavila leta

1985 [23]. LaTeX je bil ustvarjen z idejo, da naj se avtorji posvetijo vsebini in ne toliko

izgledu besedila. Še posebej priljubljen je v akademskih in znanstvenih skupnostih [23].

Za ustvarjenje vhodne datoteke LaTeX (.tex) lahko uporabimo večino besedilnih

urejevalnikov, čeprav je bilo nekaj urejevalnikov ustvarjenih posebej za LaTeX [21].

Omenimo tudi XeTeX. XeTeX je pogon za stavljenje, ki uporablja Unicode [33] in podpira

tehnologije pisav, kot na primer OpenType [34]. Vhodna datoteka je privzeto v kodiranju

UTF-8, uporabimo pa lahko vse pisave, ki jih imamo nameščene na našem računalniku.

Razvil ga je Jonathan Kew, aprila 2004 je bila izdana prva različica, prvotno samo za

platformo Mac OS X. S časom so podprli tudi platformi Linux in Windows [32].

Spodaj vidimo primer vhodne datoteke LaTeX (slika 2.1) in izhoda (slika 2.2).

BibTeX je programska oprema za oblikovanje seznama referenc. Da lahko uporabimo

BibTeX z našo vhodno datoteko LaTeX, moramo dodati ukaz \bibliography.

Argumenti ukaza so datoteke .bib, ki vsebujejo zbirko podatkov [23]. Z BibTeXom z

lahkoto dosledno navajamo vire, tako da ločimo bibliografske informacije od oblike

njihove stilske interpretacije, podobno kot ločimo vsebino in obliko v LaTeXu [22].

BibTeX sta ustvarila Oren Patashnik in Leslie Lamport leta 1985. Trenutna različica je

0.99d, ki je bila izdana marca 2010, predhodnica, 0.98f, se je obdržala kar 22 let [22].

BibTeX uporablja oblikovno-neodvisno besedilno obliko za seznam bibliografskih objav,

kot na primer člankov, knjig, tez ipd. Vsak bibliografski vnos pa vsebuje nekatere

podskupine standardnih podatkov, na primer:

Address: naslov izdajatelja (po navadi se zapiše le mesto),

Author: ime avtorja; če je avtorjev več, jih ločimo z besedo and in

Booktitle: naslov knjige.

Sistem za upravljanje vsebin MediaWiki Stran 18

\documentclass[12pt]{article}

\usepackage{amsmath}

\title{\LaTeX}

\date{}

\begin{document}

\maketitle

\LaTeX{} is a document preparation system for the \TeX{}

typesetting program. It offers programmable desktop publishing

features and extensive facilities for automating most aspects of

typesetting and desktop publishing, including numbering and

cross-referencing, tables and figures, page layout,

bibliographies,

and much more. \LaTeX{} was originally written in 1984 by Leslie

Lamport and has become the dominant method for using \TeX; few

people write in plain \TeX{} anymore. The current version is

\LaTeXe.

% This is a comment; it will not be shown in the final output.

% The following shows a little of the typesetting power of

LaTeX:

\begin{align}

E &= mc^2 \\

m &= \frac{m_0}{\sqrt{1-\frac{v^2}{c^2}}}

\end{align}

\end{document}

Slika 2.1: Primer vhodne datoteke [21].

Slika 2.2: Izhod zgornje vhodne datoteke [21].

Sistem za upravljanje vsebin MediaWiki Stran 19

\bibliography{prvi_vir,drugi_vir}

Slika 2.3: Primer ukaza \bibliography, ki kot argumenta prejme datoteki

prvi_vir.bib in drugi_vir.bib.

Vnosi v datoteko BibTeX so razdeljeni po tipih. Opisali bomo samo dva tipa, in sicer

article in inproceedings. Vse tipe najdemo v [24] in [22].

Vnos Article označuje:

članek iz časopisa ali revije,

obvezna polja: author, title, journal, year in

neobvezna polja: volume, number, pages, month, note, key.

Vnos Inproceedings označuje:

konferenčni članek,

obvezna polja: author, title, booktitle, year in

neobvezna polja: editor, volume/number, series, pages, address,

month, organization, publisher, note, key.

@Article{ZamudaASC2011,

author = "{A.~Zamuda and J.~Brest and B.~Bo\v{s}kovi\'{c} and

V.~\v{Z}umer}",

title = "{Differential Evolution for Parameterized Procedural

Woody Plant Models Reconstruction}",

journal = "Applied Soft Computing",

year = "2011",

type = "Paper",

volume = "11",

number = "8",

pages = "4904-4912",

note = "{DOI}: 10.1016/j.asoc.2011.06.009"

}

Slika 2.4: Primer BibTeX vnosa [25].

Sistem za upravljanje vsebin MediaWiki Stran 20

3 DODATEK ZA GENERIRANJE CITATOV V ZAPISU BIBTEX

V sklopu praktičnega dela diplomskega dela želimo sistemu MediaWiki dodati novo

funkcionalnost, generiranje zapisa BibTeX iz parametrov predloge. Za osnovo vzamemo

predlogo, ki je v uporabi na straneh Laboratorija za računalniške arhitekture in jezike [12]

in jo razširimo s povezavo, ki ob kliku generira zapis BibTeX. Sam dodatek je sestavljen iz

PHP dela in JavaScript dela ter razširjene predloge MediaWiki. Dodatek nato preizkusimo

na lokalnem portalu wiki, ki smo ga postavili v sklopu diplomskega dela.

3.1 Predloga

Kot smo že omenili, smo za osnovo vzeli predlogo, ki je v uporabi na straneh Laboratorija

za računalniške arhitekture in jezike [12]. Predloga se uporablja za citiranje del članov

laboratorija. Originalno predlogo si lahko ogledamo na sliki 3.1.

<includeonly><cite style="font-style:normal">

({{#if:{{{url|}}}

| [{{{url}}}'''pdf'''].

| [[{{{media}}}|'''pdf'''].].}}) {{#if:{{{issue|}}}

| {{{authors}}} [{{{url}}} '''{{{title}}}''']. ''{{{journal}}}'',

{{{year}}}{{#ifeq:{{{volume|}}}|??

||, letn. {{{volume}}}}}{{#ifeq:{{{issue|}}}|??

||, št. {{{issue}}}}}{{#ifeq:{{{pages|}}}|??

||, str. {{{pages}}}}}. {{#if:{{{mycitations|}}}

|{{{mycitations}}}}}{{#if:{{{doi|}}}

| DOI [http://dx.doi.org/{{{doi}}} {{{doi}}}].

}}

| {{{authors}}}. {{#if:{{{url|}}}

| [{{{url}}} '''{{{title}}}'''].

| [[{{{media}}}|'''{{{title}}}'''].].

}} ''{{{journal}}}'', {{{year}}}, str. {{{pages}}}.

}}

</cite></includeonly><noinclude>

{{/doc}}

</noinclude>

Slika 3.1: Originalna predloga za citiranje del [12, 31].

Sistem za upravljanje vsebin MediaWiki Stran 21

Predlogo smo razširili z dvema pomembnima parametroma citetype in name ter

dvema elementoma HTML div. Prvi element div hrani povezavo do datoteke PHP,

kamor se pošljejo parametri za obdelavo, v drugi element div pa se zapiše izhod datoteke

PHP, torej naš citat v obliki BibTeX.

{{#if:{{{citetype|}}} | {{#if:{{{name|}}} | … | name not defined }} |

citetype not defined}}

Slika 3.2: Del predloge, kjer preverjamo, če sta parametra citetype in name bila

podana pri uporabi predloge.

<div class="bibtexlink" … > … </div>

<div id="{{#replace:{{{title}}}| |_|}}" class="bibtex"> </div>

Slika 3.3: Elementa div, ki smo ju dodali. Oba imata definiran razred (class), drugi

element div pa ima tudi definiran identifikator id, ki je edinstven za vsak citat, saj se

generira glede na naslov dela.

3.2 Pomožna funkcija v JavaScript

Za del dodatka v JavaScript smo uporabili JavaScript knjižnico jQuery [13], ki je v

MediaWiki privzeto dodana od različice 1.16 naprej [14]. Svojo kodo JavaScript lahko v

sistem MediaWiki dodamo preko posebne strani imenovane Common.js, ki jo najdemo

na našem lokalnem portalu wiki. Na našem lokalnem strežniku smo stran nasneli na

http://localhost:81/wiki/index.php/MediaWiki:Common.js.

Pri pisanju kode jQuery za sistem MediaWiki je potrebno paziti na predpono, saj

MediaWiki za jQuery kodo uporablja predpono $j namesto klasične $.

Naša funkcija JavaScript obdela klik na povezavo BibTeX. Najprej poišče izbran element

in njegove parametre, preko metode GET zahteva datoteko PHP, ki parametre obdela in

vrne niz v obliki BibTeX. Vrnjen niz se s funkcijo jQuery load()naloži v element div

kliknjenega citata. Psevdokod pomožne funkcije JavaScript vidimo na sliki 3.4.

Sistem za upravljanje vsebin MediaWiki Stran 22

nastavi var animate; // (true/false)

onClick(bibtexlink a)

linkID = parent.title;

id = ''#''+linkID;

pagelink = this.href;

if(id.html == empty)

id.load(pagelink);

else

vsebina že obstaja, preskoči nalaganje

if(animate)

id.toggle(slow) //prikaži vsebino z animacijo

else

id.toggle() //prikaži vsebino brez animacije

return false;

Slika 3.4: Psevdokod pomožne funkcije JavaScript.

var pageLink = $j(this).attr('href');

if($j(id).html()=="") {

$j(id).load(pageLink);

}

Slika 3.5: Del pomožne funkcije JavaScript, ki obdela klik na povezavo BibTeX.

3.3 Funkcija PHP

Zadnji del našega dodatka je funkcija PHP, ki vrne niz BibTeX glede na podane parametre.

Funkcija vse parametre prejme preko metode GET, izhod je izpis besedilnega niza, ki se

vključi v stran HTML. Funkcija PHP je shranjena v datoteki makeBibtex.php, ki smo

jo shranili v mapo /extensions/ v sistemu MediaWiki.

$outputHeader = "<pre>@".$citetype."{".$name;

$outputFoot = "<br />}</pre>";

$outputBody = $authors.$title…;

$output=$outputHeader.$outputBody.$outputFoot;

$output=str_replace("+"," ",$output);

echo $output;

Slika 3.6: Izsek kode iz datoteke PHP makeBibtex.php, ki vrne generiran niz

BibTeX.

Sistem za upravljanje vsebin MediaWiki Stran 23

3.4 Zapis BibTeX vnosa MediaWiki iz naše predloge

Pri generiranju zapisa BibTeX smo morali paziti na posebnosti BibTeXa. Ena od teh

posebnosti je zapis šumnikov. Strešico v BibTeXu zamenjata znaka \v, črko pa zapišemo

v zavite oklepaje, tako iz š dobimo \v{s}. Ker se v Sloveniji pojavljajo tudi imena in

priimki s črkami, ki jih praviloma ni v slovenski abecedi (npr. ć), smo podprli tudi te. Na

sliki 3.7 vidimo vse podprte šumnike v našem dodatku.

Slika 3.7 [15]: Prikaz podpore šumnikom v našem dodatku.

3.5 Implementacija dodatka za MediaWiki 1.15.1.

Ker naš dodatek implementira funkcionalnosti, ki so bile dodane z različico MediaWiki

1.16, smo se odločili podpreti tudi različice, ki teh funkcionalnosti še nimajo.

Implementirali smo svojo različico razpoznavalne funkcije {{#replace}}, ki smo jo

poimenovali {{#str_replace}}. Funkcija deluje podobno kot {{#replace}} s to

razliko, da lahko funkciji podamo le dva parametra, pri čemer funkcija zamenja prazne

znake v nizu (prvi argument) s podanim (drugi argument). Prav tako smo implementirali

pomožno funkcijo JavaScript brez uporabe knjižnice jQuery. Na sliki 3.8 vidimo vključitev

dodatka z razpoznavalno funkcijo {{#str_replace}}, slika 3.9 prikazuje izsek

pomožne funkcije JavaScript.

require_once( "$IP/extensions/string_replace.php" );

Slika 3.8: Vključitev razpoznavalne funkcije {{#str_replace}} v

LocalSettings.php.

Sistem za upravljanje vsebin MediaWiki Stran 24

var mainElement = document.getElementsByClassName('bibtexlink');

for(var i=0;i<mainElement.length;i++) {

var tmp = mainElement[i].getElementsByTagName('a');

tmp[0].onclick = function() {

var divID = this.parentNode.getAttribute('title');

var generatedLink = this.getAttribute('href');

if(document.getElementById(divID).innerHTML=="") {

load(divID,generatedLink);

}

if(document.getElementById(divID).style.display == "block") {

document.getElementById(divID).style.display = "none";

}

else {

document.getElementById(divID).style.display = "block";

}

return false;

};

}

Slika 3.9: Izsek pomožne funkcije JavaScript za različico MediaWiki 1.15.1.

Sistem za upravljanje vsebin MediaWiki Stran 25

4 REZULTATI

V sklopu diplomske naloge smo izdelali dodatek sistemu MediaWiki. Dodatek generira

zapis BibTeX glede na podane argumente v predlogi. Za osnovo smo vzeli predlogo, ki je

v uporabi na straneh Laboratorija za računalniške arhitekture in jezike [12] in jo razširili s

povezavo, ki ob kliku generira zapis BibTeX in ga prikaže v okvirju pod citatom.

4.1 Namestitev

Za opis postavitve operacijskega sistema Linux smo izbrali distribucijo Ubuntu server

10.04. Operacijski sistem najdemo na spletni strani www.ubuntu.com, kjer ga lahko tudi

brezplačno prenesemo na naš računalnik. V podrobnosti namestitve se ne bomo

poglabljali, saj je ta podrobno dokumentirana v [27].

Apache namestimo preko terminala z ukazom sudo apt-get install apache2.

Podroben opis konfiguracije Apache spletnega strežnika najdemo v [27].

MediaWiki je napisan v jeziku PHP in uporablja podatkovno bazo MySQL. Za lokalno

namestitev različice sistema Mediawiki smo uporabili programski paket XAMPP [17], ki

vsebuje Apache, PHP, MySQL in phpMyAdmin. Po namestitvi XAMPP paketa smo iz

spletne strani Mediawiki.org prenesli zadnjo različico sistema CMS (1.18.1.), ki ga

najdemo v sekciji »Download – GetMediawiki« (http://www.mediawiki.org/wiki/

Download). Po prenosu datoteke s končnico .tar.gz smo to odprli s programom Win-

Rar in razširili v mapo C:\xampp\htdocs\wiki. Nato smo zagnali XAMPP

control panel ter preko nadzorne plošče pognali Apache in MySql, ki ju potrebujemo

za naš sistem wiki. Za tem smo zagnali brskalnik ter vnesli naslov localhost/wiki.

Sistem nas je opozoril, da manjka datoteka LocalSettings.php in naj sledimo spodnji

Sistem za upravljanje vsebin MediaWiki Stran 26

povezavi za namestitev sistema. Po kliku na povezavo se je prikazala namestitvena stran

sistema MediaWiki, ki jo vidimo na sliki 4.1.

Slika 4.1: Začetna stran namestitve CMS sistema Mediawiki.

Čez celotno namestitev nas vodi t.i. čarovnik. Naša naloga je, da izberemo nastavitve in

vpišemo podatke našega strežnika ter podatkovne baze. Po uspešni namestitvi se pojavi

dialog za prenos datoteke, in sicer gre za datoteko LocalSettings.php, v kateri so

nastavitve našega sistema wiki in se generira po zaključku namestitve. Datoteko shranimo

v mapo, kjer imamo nameščen sistem MediaWiki, torej v našem primeru

C:\xampp\htdocs\wiki. Sedaj smo v brskalnik zopet vpisali naslov

localhost/wiki, kjer nas je pričakal naš sistem wiki, slika 4.2.

Slika 4.2: Glavna (sprejemna) stran našega sistema wiki.

Sistem za upravljanje vsebin MediaWiki Stran 27

4.2 Delovanje dodatka za prikaz besedila v obliki BibTeX

Slika 4.3 prikazuje dodajanje naše predloge imenovane cite na novo stran wiki. Za

primer delovanja smo izbrali tri citate iz strani Laboratorija za računalniške arhitekture in

jezike [12].

Slika 4.3: Dodajanje naše predloge na stran.

Po objavi strani sistem MediaWiki obdela predlogo in generira HTML kodo strani. Koda

HTML se posreduje brskalniku in pred nami se pokaže nova stran wiki (slika 4.4).

Slika 4.4: Izgled naše strani wiki.

Na sliki 4.4 vidimo naše citate. Na začetku je povezava do dokumenta PDF, nato sledijo

avtorji dela, naslov ter ostali podatki o delu, kot na primer naslov revije in leto izdaje. Pod

citatom vidimo povezavo za BibTeX obliko citata. Ob kliku na povezavo se razširi element

<div>, kamor se zapiše niz, ki vsebuje BibTeX zapis, vrnjen iz datoteke PHP. Razširitev

elementa je animirana s pomočjo funkcije JavaScript toggle(). Ob ponovnem kliku na

povezavo BibTeX se okvir z zapisom BibTeX zapre. Na sliki 4.5 vidimo razširjen element

<div>, ki vsebuje zapis BibTeX.

Sistem za upravljanje vsebin MediaWiki Stran 28

Slika 4.5: Prikaz delovanja dodatka ob kliku na povezavo BibTeX.

Vsak citat ima svoj element <div> za zapis BibTeX. Na enkrat pa lahko imamo

razširjenih poljubno število citatov. Slika 4.6 prikazuje zapis BibTeX za drugi citat, slika

4.7 pa prikazuje zapisa BibTeX za drugi in tretji citat.

Slika 4.6: BibTeX zapis za drugi citat.

Sistem za upravljanje vsebin MediaWiki Stran 29

Slika 4.7: Prikaz okvirja z zapisom BibTeX za drugi in tretji citat.

Sistem za pravljanje vsebin Mediawiki Stran 30

5 SKLEP

V diplomskem delu smo spoznali sistem za upravljanje spletnih vsebin MediaWiki.

Spoznali smo, kako sistem deluje, kako ga namestimo in postavimo svoj portal wiki.

Srečali smo se s tehnologijami, kot so LaTeX in BibTeX, (X)HTML, PHP, JavaScript oz.

knjižnice jQuery, MySQL in druge. V praktičnem delu diplomske naloge smo prikazali,

kako v sistem dodamo svoje funkcionalnosti ter katera orodja so pri tem na voljo. Pri

spoznavanju s sistemom ter tudi z razvojem dodatka nam je bila v veliko pomoč uradna

dokumentacija sistema, dosegljiva na spletni strani www.mediawiki.org.

Rezultat dela je dodatek v sistem MediaWiki, ki iz parametrov predloge za citiranje del

zgenerira in prikaže zapis tega citata v obliki BibTeX. Med razvojem dodatka nismo

opazili večjih odstopanj od prej zadanega načrta. Ena izmed težav je bila kodiranje

šumnikov pri prenosu v in iz datoteke PHP. Tako smo namesto UTF-8 kodiranih znakov

prejemali LATIN-1 kodirane znake in posledično nismo mogli zamenjati šumnikov za

primerne znake BibTeX. Problem smo rešili z uporabo funkcije {{#replace}}, ki je

šumnike zamenjala z znaki BibTeX, preden smo jih poslali v skripto PHP. Dodatek ima

trenutno tudi nekaj omejitev in sicer je napisan za dokaj specifično predlogo. Podprli smo

parametre, ki se pri citiranju del uporabljajo na spletni strani Laboratorija za računalniške

arhitekture in jezike [12].

V prihodnje želimo naš dodatek razširiti tako, da bi bil uporaben za čim več uporabnikov.

Podpreti želimo čim širši nabor parametrov in poenostaviti vključitev dodatka na sisteme

MediaWiki. Dodatek bomo objavili na spletišču MediaWiki.org in ga tako ponudili širši

javnosti.

Sistem za pravljanje vsebin Mediawiki Stran 31

LITERATURA

[1] Wikipedia - Sistem za upravljanje vsebin,

http://sl.wikipedia.org/wiki/Sistem_za_upravljanje_vsebin, zadnji dostop:

19.3.2012.

[2] Mediawiki - Manual:What is MediaWiki?,

http://www.mediawiki.org/wiki/Manual:What_is_MediaWiki%3F, zadnji dostop:

19.3.2012.

[3] A. R. Brodtkorb, C. Dyken, T. R. Hagen, J. M. Hjelmervik in O. O. Storaasli,

State-of-the-art in heterogeneous computing, 2010, Scientific Programming 18

(2010).

[4] Mediawiki Manual:Architecture,

http://www.mediawiki.org/wiki/Manual:MediaWiki_architecture, zadnji dostop:

19.3.2012.

[5] H. M. Kibirige, L. DePalo, The Internet as a Source of Academic Reserch

Information, Information Technology and Libraries, zv. 19, št. 1, str. 11-16, 2000.

[6] MySQL, http://www.mysql.com/, zadnji dostop: 19.3.2012.

[7] Mediawiki Help:Formatting, http://www.mediawiki.org/wiki/Help:Formatting,

zadnji dostop: 19.3.2012.

[8] PHP, http://www.php.net/, zadnji dostop: 19.3.2012.

[9] Mediawiki Help:Templates, http://www.mediawiki.org/wiki/Help:Templates,

zadnji dostop: 19.3.2012.

[10] Mediawiki Help:Magic words,

http://www.mediawiki.org/wiki/Help:Magic_words, zadnji dostop: 19.3.2012.

[11] Mediawiki Help:Extension:Parser functions,

http://www.mediawiki.org/wiki/Help:Extension:ParserFunctions, zadnji dostop:

19.3.2012.

[12] Laboratorij za računalniške arhitekture in jezike,

https://labraj.uni-mb.si/Splo%C5%A1ne_informacije, zadnji dostop: 19.3.2012.

[13] J. Resig, jQuery, http://jquery.com/, zadnji dostop: 19.3.2012.

[14] MediaWiki jQuery, http://www.mediawiki.org/wiki/JQuery, zadnji dostop:

19.3.2012.

[15] Specijalni znakovi i simboli, http://kokice.striga.org/2.2.html, zadnji dostop

19.3.2012.

[16] M. Widenius, D. Axmark in MySQLAB, MySQL Reference Manual, O'Reilly &

Associates, 2002.

Sistem za pravljanje vsebin Mediawiki Stran 32

[17] K. Seidler, Apache friends XAMPP,

http://www.apachefriends.org/en/xampp.html, zadnji dostop: 19.3.2012.

[18] H. Muljadi, H. Takeda, J. Araki, S. Kawamoto, S. Kobayashi, Y. Mizuta, S.

Minoru Demiya, S. Suzuki, A. Kitamoto, Y. Shirai, N. Ichiyoshi, T. Ito, T. Abe, T.

Gojobori, H. Sugawara, S. Miyazaki in A. Fujiyama, Semantic Mediawiki: A user-

oriented system for integrated content and metadata management system, IADIS

International Conference on WWW/Internet 2005, str. 261-264, Lizbona.

[19] Mediawiki Extension:WebFonts,

http://www.mediawiki.org/wiki/Extension:WebFonts, zadnji dostop: 19.3.2012.

[20] Mediawiki Help:Parser functions in templates,

http://www.mediawiki.org/wiki/Help:Parser_functions_in_templates,

zadnji dostop: 19.3.2012.

[21] Wikipedia - LaTeX, http://en.wikipedia.org/wiki/LaTeX, zadnji dostop: 19.3.2012.

[22] Wikipedia - BibTeX, http://en.wikipedia.org/wiki/BibTeX, zadnji dostop:

19.3.2012.

[23] L. Lamport, Latex A document preparation system 2nd ed.,

Addison-Wesley publishing company, 1994.

[24] O. Patashnik, BibTeXing, 1988.

[25] A. Zamuda, D. Casar, LABRAJ Bibliography in BibTeX format,

https://labraj.uni-mb.si/en/index.php/Bibliography_in_BibTex_format,

zadnji dostop 19.3.2012.

[26] Wikipedia - Computer cluster, http://en.wikipedia.org/wiki/Computer_cluster,

zadnji dostop: 19.3.2012.

[27] Canonical Ltd. in člani Ubuntu Documentation Project,

Ubuntu server guide, 2012.

[28] T. Brisco, DNS support for load balancing, Rugers University, April 1995.

[29] Wikipedia - Round robin DNS, http://en.wikipedia.org/wiki/Round_robin_DNS,

zadnji dostop: 19.3.2012.

[30] The CMS Matrix, http://www.cmsmatrix.org, zadnji dostop 4.4.2012.

[31] A. Zamuda, Predloga:Cite – Laboratorij za računalniške arhitekture in jezike,

https://labraj.uni-mb.si/index.php?title=Predloga:Cite, 6.8.2010.

[32] Wikipedia – XeTeX, http://en.wikipedia.org/wiki/XeTeX, zadnji dostop 4.4.2012.

[33] Unicode, http://unicode.org/, zadnji dostop 2.5.2012.

[34] OpenType, http://www.adobe.com/type/opentype/, zadnji dostop 2.5.2012.

Sistem za pravljanje vsebin Mediawiki Stran 33

Sistem za pravljanje vsebin Mediawiki Stran 34

Sistem za pravljanje vsebin Mediawiki Stran 35