Upload
hoangdien
View
220
Download
2
Embed Size (px)
Citation preview
BUDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM
VILLAMOSMÉRNÖKI ÉS INFORMATIKAI K AR
IRÁNYÍTÁSTECHNIKA ÉS INFORMATIKA T ANSZÉK
Programozás oktatását segítő portál kialakítása
Diplomaterv
Hanák Tamás Gábor
Konzulens:
Dr. Szeberényi Imre
Budapest, 2009
Nyilatkozat
Alulírott Hanák Tamás Gábor, a Budapesti Műszaki és Gazdaságtudományi Egyetem
hallgatója kijelentem, hogy ezt a diplomatervet meg nem engedett segítség nélkül, saját
magam készítettem, és a diplomatervben csak a megadott forrásokat használtam fel. Minden
olyan részt, melyet szó szerint, vagy azonos értelemben, de átfogalmazva más forrásból
átvettem, egyértelműen a forrás megadásával megjelöltem.
_______________________________
Hanák Tamás Gábor
Kivonat
A XXI. századra kialakult információs társadalom velejárója az élethosszig tartó, folyamatos
tanulás, ami beépül mindennapjainkba. A hagyományos oktatási módszerek mellett az
alternatív, elektronikus oktatásnak egyre nagyobb szerepe van. Egyrészt a tanulók minden
aktuális információhoz, tananyaghoz, annak megértéséhez szükséges anyagokhoz azonnal
hozzájutnak, másrészt a felnőttképzésben résztvevők munkájuk mellett tudják továbbképezni
magukat.
Diplomamunkámban az E-learning rendszerek általános tárgyalása után a Moodle LMS
keretrendszeren keresztül mutatom be az E-learning rendszerekben rejlő lehetőségeket.
A felhasználó szintű áttekintést követően a rendszer moduláris felépítésének,
kibővíthetőségének vizsgálatával a saját munkámat készítem elő, másrészt a Moodle
fejlesztése iránt érdeklődő olvasók számára nyújtok segítséget.
A dolgozat második fele az általam fejlesztett Moodle modulok: a Jelenléti ív, Csoportváltó és
a Projekt modulok tervezésének lépéseivel, a modulok bemutatásával foglalkozik. Ezután
kitérek a Cporta feladat beadó és értékelő rendszer és a saját Moodle feladattípus modulom
integrálási lépéseire.
Abstract
In the 21. century the life-long learning is an essential phenomenon of the information society.
Learning becomes a way of life. The alternative, electronic education plays an increasingly
bigger role beside the traditional educational methods.
On the one hand the students can get every actual information, a curriculum, and additional
substances to understand what they heard in the school, on the other hand the participants can
continue their adult training beside their work.
In my thesis after the general negotiation of E-Learning systems, I illustrate the opportunities
residing in the E-learning systems with the help of Moodle Learning Managment System.
Following the user level overview I prepare my own work with the examination of the
modular construction of the Moodle system. I also want to give a good documentation to
those people, who want to know more about the developing of Moodle.
The second half of the paper deals with the Moodle modules developed by me:
• attendance register
• group change
• projekt modul to support collective working
I go into details about the planning steps and the presentation of the modules.
Than I describe the integration steps between the Cporta task submitting and evaluation
system and my own Moodle task module.
Tartalomjegyzék Bevezetés...................................................................................................................................1
A feladat célja........................................................................................................................1
A dolgozat felépítése.............................................................................................................2
1 E-Learning alapok....................................................................................................................3
1.1 Fogalmak..........................................................................................................................3
1.1.1 Az E-Learning fogalma............................................................................................3
1.1.2 LMS (Learning Managment System).......................................................................4
1.2 Az E-Learning fejlődéstörténete.......................................................................................5
1.2.1 CBT - offline tanulás................................................................................................5
1.2.2 E-Learning 1.0 - LMS + tananyag............................................................................5
1.2.3 E-Learning 2.0 - szociális, web alapú tanulás..........................................................6
1.3 Szabványok és az E-Learning..........................................................................................8
1.3.1 AICC.........................................................................................................................8
1.3.2 IMS ..........................................................................................................................9
1.3.3 SCORM ...................................................................................................................9
1.4 E-Learning Magyarországon, külföldön........................................................................10
2 A Moodle keretrendszer.........................................................................................................11
2.1 Mi is az a Moodle?.........................................................................................................11
2.2 Miért a Moodle-t válasszuk?..........................................................................................12
2.3 Együttműködés...............................................................................................................13
2.4 Tanulásszervezési módszerek és eszközök a Moodle keretrendszerben........................13
2.5 Moodle bemutatása fejlesztői szemszögből...................................................................16
2.5.1 A Moodle alapvető tulajdonságai...........................................................................16
2.5.2 Adatbázis séma:......................................................................................................17
2.5.3 Mi történik, a required_once('config.php') hatására...............................................20
2.5.4 Model-View-Controller réteg megvalósulása egy Moodle modulban....................21
2.5.4.1 Model réteg:....................................................................................................21
2.5.4.2 Megjelenítési View réteg................................................................................22
2.5.4.3 A vezérlő(Controller) réteg:............................................................................24
2.5.5 Pluginok..................................................................................................................25
2.5.5.1 Tevékenység modulok.....................................................................................26
2.5.5.2 Blokkok...........................................................................................................27
2.5.5.3 Szűrők(Filters)................................................................................................31
2.5.5.4 Kurzus formátum............................................................................................32
2.5.5.5 Hitelesítés (Authentication plugins) ..............................................................32
2.5.5.6 Kurzus jelentés (Course report)......................................................................34
2.5.5.7 Adatbázis mező (database field).....................................................................34
2.5.5.8 Tanulói munka (Assignment types)................................................................34
3 Oktatást segítő funkciók felkutatása, bemutatása..................................................................35
4 Fejlesztett modulok bemutatása.............................................................................................38
4.1 Jelenléti ív.......................................................................................................................38
4.1.1 Specifikáció:...........................................................................................................38
4.1.2 Használati esetek....................................................................................................38
4.1.3 Adatmodell(ER diagram):.......................................................................................39
4.1.4 A működés leírása...................................................................................................40
4.1.5 A Felhasználó felület bemutatása...........................................................................41
4.2 Csoportválasztás.............................................................................................................43
4.2.1 Specifikáció............................................................................................................43
4.2.2 Részletes leírás.......................................................................................................43
4.2.3 Aktivitás diagram....................................................................................................44
4.2.4 Használati esetek....................................................................................................45
4.2.5 Adatmodell(ER diagram):.......................................................................................48
4.2.6 Szerkezeti felépítés.................................................................................................49
4.2.7 A Felhasználó felület bemutatása...........................................................................51
4.3 Projektek támogatása......................................................................................................52
4.3.1 Specifikáció............................................................................................................52
4.3.2 Részletes leírás.......................................................................................................52
4.3.3 Szerkezeti felépítés.................................................................................................53
4.3.4 Aktivitás diagram....................................................................................................55
4.3.5 Használati esetek....................................................................................................57
4.3.6 Adatmodell(ER diagram):.......................................................................................58
4.3.7 A Felhasználó felület bemutatása...........................................................................59
5 C porta és a Moodle integrálása.............................................................................................60
5.1 Cporta feladatbeadó rendszer.........................................................................................60
5.2 Cporta feladatbeadó rendszer és a Moodle integrálása..................................................61
5.2.1 Adatbázis integrációja.............................................................................................61
5.2.2 A Moodle és a Cporta együttműködése..................................................................63
5.2.3 Új kérdéstípus létrehozása Moodle rendszerben....................................................65
5.3 Feladat létrehozó, beadó felületek..................................................................................67
6 Összefoglalás.........................................................................................................................69
Irodalomjegyzék.......................................................................................................................70
Ábrajegyzék.............................................................................................................................73
Függelék...................................................................................................................................74
1. A Moodle adatbázis táblái csoportokba rendezve...........................................................74
2. Az egyes Cporta funkciók Moodle megfelelői................................................................76
Bevezetés
A napjainkban kialakuló információs társadalom életében egyre nagyobb szerepet
kapnak a digitális technikai újdonságok. A KSH 2008-as felmérése[1] alapján a
háztartások 59%-a rendelkezik számítógéppel és a háztartások 48%-ában van
internetkapcsolat. Az internetezők 73%-a csaknem minden nap használja az
internetet. A leggyakoribb tevékenységek közé az információkeresés és a
kommunikáció tartozik. A harmadik legjelentősebb tevékenység, amit az internetezők
44%-a választott az az oktatási és képzési szolgáltatások igénybevétele volt.
A technikai újdonságok elterjedése mellett a WEB 2.0-ás szolgáltatások
megjelenésével a fiatalabb korosztály számára, akik beleszülettek az internet világába
egyre természetesebb, hogy a tanulmányaik során az internet által nyújtott
lehetőségeket is igénybe vegyék.
Az LMS tanulásszervezési rendszerek segítségével a tanulók mindig megtalálják az
aktuális információkat, a tananyagokat. Mivel az órákon nincs mindenre idő, az LMS
rendszerek segítségével a tanárok plusz anyagokat is biztosíthatnak a tanulóik
számára, amik segítségével a tananyag jobban megérthető, elsajátítható. Ugyancsak
ezt a célt szolgálják a tanulók számára biztosított online tesztek, gyakorlatok, ahol a
tanulók tesztelhetik tudásukat, és azonnali visszajelzéseket kaphatnak.
Az LMS rendszerek egyre nagyobb mértékben terjednek el és egyre jelentősebb lesz a
szerepük az oktatás támogatásában.
A feladat célja
A szakdolgozatom célja kettős. Egyrészt a Moodle LMS keretrendszeren keresztül
szeretném bemutatni az E-learning rendszerekben rejlő lehetőségeket. Nemcsak egy
felhasználói szintű tájékoztatót szeretnék az olvasó elé tárni, hanem a rendszer
moduláris felépítésének, kibővíthetőségének vizsgálatával egy olyan dokumentációt
akarok a Moodle fejlesztése iránt érdeklődő olvasók számára biztosítani, ami
megkönnyíti számukra a Moodle fejlesztésében való kezdeti lépéseket.
A diplomamunkám másik célja a saját Moodle moduljaim bemutatása. Ezeknek a
moduloknak a fejlesztését az indokolja, hogy miután megvizsgáltam a Moodle-t
1
abból a szempontból, hogy milyen mértékben támogatja a nagy hallgatói
csoportokkal való együttműködést, milyen funkciók azok, amik a Budapesti Műszaki
Egyetem Szoftver laboratórium 1–2. tárgyának oktatásában a tanárok munkáját
segítené arra jutottam, hogy a jelenléti ív, a hallgató csoportok átjárhatósága, a Cpp
feladattípus, valamint a tanulók projektekben való együttműködésének támogatása
hiányzik a Moodle-ból.
A dolgozat felépítése
Szakdolgozatom első felében egy rövid áttekintést adok az E-learning rendszerekről.
Mire hivatottak ezek a rendszerek, milyen szolgáltatásokat biztosítanak a tanítás,
illetve a tanulás folyamatában, milyen fejlődésen mentek keresztül. Az alapok
bemutatása után a fontosabb szabványokról írok néhány szót, amik az E-learninghez
köthetők.
Munkám második fejezetének központjában a Moodle áll. A fejezet első része a
Moodle felhasználói bemutatásával foglalkozik. A kialakulása, szolgáltatásainak
leírása, valamint a keretrendszer különféle statisztikai adatainak bemutatásával egy
könnyen érthető, átfogó képet szeretnék adni a rendszerrel először találkozó
személyek számára.
A fejezet második felében a Moodle-t fejlesztői szemmel vizsgálom. A rendszer
felépítésének áttekintése után végigmegyek azokon a lehetőségeken, amelyek
segítségével a Moodle szolgáltatásainak köre kibővíthető, testre szabható.
A harmadik részben összegyűjtöm az alapvető oktatást segítő funkciókat, majd
megvizsgálom a Moodle rendszert, hogy ezeket a funkciókat milyen mértékben
támogatja.
A diplomamunkám negyedik fejezetében az általam fejlesztett Moodle modulokat
mutatom be: a Jelenléti ív, Csoportváltó és a Projekt modulokat.
Ezután a Cporta feladat beadó és értékelő rendszer és a saját Moodle feladattípus
modulom integrálási lépéseit írom le.
Végül összegzem a diplomaterv eredményeit, kitérve a továbbfejlesztés lehetséges
irányaira.
2
1 E-Learning alapok
1.1 Fogalmak
1.1.1 Az E-Learning fogalma
A tanítási-tanulási folyamat átültetése az információs rendszerek világába.[4][5]
Az E-learning tulajdonképpen olyan oktatási forma, amelyben a tanár, a tanuló közös
kommunikációs eszköze elektronikus alapú, többnyire valamilyen számítástechnikai
eszköz.
Tehát olyan tanítási módszer, ahol a tananyag bemutatására, feldolgozására, valamint
a számonkérésre digitális médiumokat használnak.
Számos definíció született erre a fogalomra. Lássunk ezek közül néhányat:
1. „e-learning - a hagyományos és távoktatási, valamint az internet nyújtotta új
lehetőségek együttes alkalmazását jelentő új és hatékony tanulási eljárás.”[2]
2. „Az e-learning néven összefoglalható fejlesztések, programok, tananyagok a
tanulásszervezés, tanulásirányítás és tanulás-támogatás olyan formáit jelentik,
amelyek három, jól körülírható forrásból merítenek:
1. a számítógéppel segített tanulás eszközrendszere (computer based
learning),
2. az internetes, webalapú tanulás eszközrendszere (web based learning),
3. a távoktatás tapasztalatai és eszközrendszere (distance learning).
3
ábra 1: E-learning fogalom
Az E-learning tehát a három forráshalmaz közös halmaza, különböző rendszerszintű
operatív programok gyűjtőneve, melyek a számítógép és a hálózati adatbázisok,
illetve internetes kommunikáció használatával, a tanulási folyamat egészének
rendszerszemléletű megközelítésével, illetve hatékony rendszerbe szervezésével
törekszenek a tanulás eredményességének és hatékonyságának javítására.”[3]
A kommunikációs folyamat szinkron vagy aszinkron jellegű:
• A szinkron távtanulás - Amikor a tanár és a tanulók egy időben vannak, de
különböző helyen. A tanítás központjában a tanár áll, de nincs közvetlen fizikai
kapcsolatban a tanulóival. Szinkron távtanulási eszközök például a
videokonferencia, alkalmazás megosztás, chat.
• Az aszinkron távtanulás - Különböző helyen és különböző időben történik a
tanítás és a tanulási szakasz. A szerveren, LMS(ld. A következő fogalmat.)
rendszeren elhelyezett tananyag a tanulók számára egyénileg feldogozható, egyéni
ütemezésben. Aszinkron távtanulás eszközei lehetnek a különböző letölthető
dokumentumok, e-mail, hírlevelek, fórumok.
Mindkét módszerre igaz, hogy a fő adatáramlási irány az oktató felől a diákok felé
tart. Viszont a diák-tanár irány is jelentős szerepet kaphat, valamint a diák-diák közti
kommunikációnak is nagy szerepe van. A 2. generációs E-learning rendszereknél,
mint később lesz róla szó ez a fő adatáramlási irány is megszakad.
1.1.2 LMS (Learning Managment System)
Tanulásszervezési keretrendszer[5][6]. Az E-Learning rendszerek nélkülözhetetlen
alapja. Számos szolgáltatást biztosít az online kurzusok adminisztrálására, a
tananyagok hozzáférhetőségére, megjelenítésére, az elsajátított tudás számonkérésére,
valamint az oktatás során felmerülő egyéb feladatok végrehajtására. Ezekről a
szolgáltatásokról később a Moodle LMS rendszer kapcsán még lesz szó
részletesebben.
Olyan cégek mint IBM, BlackBoard, WebCT, Desire2Learn mind rendelkeznek saját
LMS keretrendszerrel, amiket különböző egyetemek, cégek, állami intézmények
ezreinél használnak.
4
Elterjedőben vannak a nyílt forráskódú, ingyenes keretrendszerek is, melyek közül a
Moodle egy minden igényt kielégítő, elterjedt, egyszerűen bővíthető, dinamikusan
fejlődő keretrendszer.
1.2 Az E-Learning fejlődéstörténete
1.2.1 CBT - offline tanulás
A CBT a Computer Based Training rövidítése ami Számítógép központú
képzést jelent. Ebben az esetben a tanulók megkapják a szükséges
információkat, amik a megfelelő felkészüléshez szükségesek, de a tanuló-
oktató valamint a tanuló-tanuló irányú kommunikáció nem biztosított, ezért
offline tanulásnak is nevezhetjük.
A tananyaghoz a tanuló CD-ROM-on keresztül jut hozzá, esetleg statikus
internetes oldalakról tudja azokat letölteni.
1.2.2 E-Learning 1.0 - LMS + tananyag
Az első generációs E-Learning rendszerek az iskolák virtuális világba átültetett
másai. A tanulók az LMS rendszerek segítségével egy virtuális osztályterembe
kerülnek, ahol determinizált módon bejárják azt az „útvonalat”, amit az
oktatási intézmény kijelöl:
• Csoportokba sorolják őket
• Kurzusokat hallgatnak végig
• Gyakorlatokat oldanak meg
• Számot adnak a tudásukról feladatokon keresztül
Olyan jól definiált, formális rendszereket hoztak létre, melyek az élő oktatási
rendszerből, az ottani tapasztalatokból merítenek.
AZ LMS keretrendszer segítséget nyújt az oktatás szervezésében, az
adminisztrációs feladatokban, a tananyagok közzétételében.
Az első generációs E-Learning rendszerek másik fontos tartó pillére a
tananyag. Gyakran az a szemlélet érvényesül, hogy a fő szempont a jó LMS
5
rendszer beszerzése, tananyag majd csak akad valahol. A megfelelő hozzáállás
ennek pont az ellenkezője. A tananyagra kell nagyobb erőforrást szánni, és a
bőséges mennyiségben található nyílt forráskódú ingyenes LMS rendszerekből
biztosan megtalálható az igényeknek megfelelő.
1.2.3 E-Learning 2.0 - szociális, web alapú tanulás
WEB 2.0
A 90-es években az internetezők a webet főleg információszerzésre használták.
A kommunikáció eszközei az email-re, az IRC-re korlátozódott, és az
internetben rejlő egyéb funkciók rejtve maradtak, kihasználatlanul.
Az új generációk, akik fiatalon kerültek kapcsolatba az internettel, vagy már
beleszülettek az internetes társadalomba, azok az interneten nem információ
forrás után kutatnak, hanem olyan eszközöket keresnek, amelyek képesek arra,
hogy a saját igényeiknek megfelelő információkat megkeressék, rendszerezzék,
azok tovább formálására lehetőséget adjanak. Az új nemzedék számára az
internet a kommunikáció, az együttműködés, és az önkifejezés eszköze lett.
Ezeket a változásokat tapasztalhatjuk a blog szolgáltatók(WorldPress,
Blogspot, Freeblog...), közösségi oldalak(IWIW, Facebook, MySpace) és az
ezekre az oldalakra épülő rengeteg egyéb szolgáltatás elterjedésével. Az RSS
egyszerű XML formátum segítségével teszi lehetővé azt, hogy a számunkra
fontos információkat kiszűrjük a rengeteg közzétett adat közül és azonnal
értesülhessünk a változásokról, újdonságokról.
Ha belegondolunk, akkor valójában a WEB 2.0 nem technológiai változást
jelent, hanem egy szemléletbeli változást.
Ez a szemléletbeli változás minden létező internetközeli ágazatban
végigsöpört, ami alól az oktatás, az E-Learning sem maradhatott ki.
6
E-Learning 2.0
A második generációs E-Learning rendszerek az első generációshoz képest egy
fordított szemléletet valósítanak meg. A tanuló a tanulási folyamat aktív alanya.
Ő áll a középpontban. Nemcsak a tanulás folyamatában, hanem annak
megtervezésében is részt vesz. Maga állítja össze azt az „útvonalat”, amit be
fog járni.
Tanár-központú tanulás Tanuló-központú tanulás
Alacsony szintű tanulói döntéslehetőség
Magas szintű tanulói döntéslehetőség
Passzív tanuló Aktív tanuló
A tekintélyt a tanár képviseli A tekintélyt a tanuló képviseli
Az LMS rendszerek helyét átveszik a PLE(Personal Learning Enviroment)
Egyéni Tanulmányi környezetek, melyekben a tanuló:
1. átjár több LMS rendszer között
2. blogot ír
3. saját előre haladását menedzseli
4. kapcsolatokat épít, és együttműködik
5. több hírcsatorna tartalmát figyeli, szűri(RSS)
Tehát az E-learning platformja a WEB lesz, a diák saját maga tanárává válik,
maga jelöli ki az előrehaladását, „hozza létre” a tananyagot, és az oktatás célja
nem egy ismeretanyag, csomag átadása, hanem egy olyan gondolkodásmód
kialakítása lesz, hogy a tanuló képes legyen önálló problémamegoldásra,
véleményalkotásra. A tanár elsősorban a diák mentora lesz.
A fejlődéstörténetben felhasznált irodalom: [5][6]
7
1.3 Szabványok és az E-Learning
Egy tananyag felépítése komplex feladat. Programozási, grafikai, multimédiás
ismeretek szükségesek hozzá. Ahhoz, hogy ezek a tananyagok újrafelhasználhatóak
legyenek, több különböző LMS rendszer is képes legyen őket felhasználni, jól
meghatározott szabványok mentén kell létrehozni őket.
Négy, öt nagyobb nemzetközi elektronikus oktatási szabványrendszer van, amiket
alkalmazva olyan tananyag hozható létre, melyet használhatunk(futtathatunk,
megjeleníthetünk) mindazokban az LMS rendszerekben, melyek szintén ezeket a
szabványokat követik.
1.3.1 AICC
Az AICC (Aviation Industry CTB Committee) a technológiai-alapú oktatási szakértők
nemzetközi szövetsége. A szövetség alapulása óta (1988) igyekszik ajánlásokkal és
kidolgozott szabványokkal segíteni a elektronikus oktatást. A CTB rövidítés Computer
Based Training-et, azaz számítógép-alapú oktatást jelent.
Az AICC leginkább kiadvány formában jelenik meg, 3 fő típusa van:
• AICC irányelvek
• Technikai riportok
• Munka-dokumentumok
Az AICC legfontosabb javaslatait, irányelveit, útmutatásait egy úgynevezett AGRs
lista mutatja. AICC Guidelines and Recommendations:
• AGR-001 - AICC publikációk, kiadványok
• AGR-002 - Javasolt konfigurációk, a céleszköz leírása (hardware)
• AGR-003 - Digitális hang
• AGR-004 - Operációs rendszerekről és kezelőfelületekről
• AGR-005 - CTB perifériák, I/O eszközök
• AGR-006 - Elektronikus oktatási keretrendszer (kommunikáció, adatáramlás)
• AGR-007 - Multimédiás komponensek a tananyagban, formátumok (szöveg,
kép, animáció, hang)
• AGR-008 - Digitális videó
8
• AGR-009 - Felhasználói felület
• AGR-010 - Web alapú komponensek
Az AICC szabványról bővebben a www.aicc.org weboldalon olvashatnak.[7]
1.3.2 IMS
Az IMS (Instruction Management system) szabvány az elektronikus oktatásban
használatos keretrendszerek megtervezéséhez szükséges szabványokat és leírásokat
tartalmazza. Ez a szabvány a metaadatok katalogizálásának és elérésének
módszertanát, valamint a dinamikus kommunikáció feltételeit fogalmazza meg.
Az IMS szabványról bővebb információt a www.imsproject.org címen találhatnak. [7]
1.3.3 SCORM
A SCORM (Sharable Content Object Reference Model) rövidítés szó szerinti
fordításban megosztható tartalmú objektumok modellezését jelenti, ez a mindenki
számára ajánlatos szabvány azonban ennél jóval többet jelent. A SCORM a Web-alapú
oktatási anyagok referencia modellje. Egy olyan nyelv amely magában foglalja a
tananyagon belüli szerkezetet, elnevezéseket, a képek, animációk, szövegek helyét és
neveit, a fejlécektől a lábjegyzetekig. Ez a szabvány az összekötő láncszem, ha úgy
tetszik folyamat-sorozat a használni kívánt technológiák és a teljes kivitelezés között,
ami végül majd "kereskedelmi" forgalomba kerül. 2001. januárja óta a SCORM 1.1-es
verziója van érvényben.
A SCORM szabvány három fő részegységből áll össze:
• Tartalomegyesítő modell (Content Aggregation Model, a továbbiakban: CAM)
• Futtatási környezet (Run Time Environment, a továbbiakban: RTE)
• Besorolás és navigálás (Sequencing and Navigation, a továbbiakban: SN)
A SCORM szabvány az ADL Network szervezet dolgozta ki, további információt a
szervezet hivatalos oldalán olvashatnak: www.adlnet.org [7]
9
1.4 E-Learning Magyarországon, külföldön
Magyarországon az E-learning 1.0-ás generációja van jelen. LMS rendszer és a
tananyagok. Az E-learning technológiák elterjedését több tényező is hátráltatja:
Először is a költségcsökkentő hatása sokkal kisebb, mint a nagyobb területű
országokban.
Az LMS rendszerekre fejlesztett tananyag Magyarországon meglehetősen szegényes.
Mind mennyiségben, mind minőségben problémák vannak. Az MTA SZTAKI e-
learning osztályvezetője szerint[8] ennek az oka a fejlesztési forráshiány, a kevés
tananyagfejlesztő, valamint a piacon fellelhető tananyagokat tartalmazó központi
adatbázis hiánya. Ennek hiányában redundáns tartalmak születnek. A
Magyarországon létrehozott tananyagok nagy része egy-egy cég belső oktatásai
igényeit kielégítő speciális anyagok[9]. Amik ideális esetben úgy készülnek, hogy a
cég oldaláról elkészítik a szakmai tartalmat valamilyen egyszerű formátumban, ami a
tananyagszerkesztőkhöz kerül, akik elkészítik az első változatot, ami ismét
visszakerül a cégen belül kijelölt személyhez, így több lécsőben alakul ki a
szakmailag pontos, hatékony tananyag. A gyakorlatban a megrendelő gyakran nem
tudja pontosan megértetni magát a tananyag készítővel, így nem sikerül kidolgozni a
tökéletes tananyagot.
A harmadik tényező, ami gátolja az E-learning bevezetését Magyarországon az a
számítógépes, internetes kultúra szintje[10]. Egyrészt a számítógépet használók
képzettsége sem megfelelő, másrészt a tanításért felelős személyek sem motiváltak
eléggé az E-learning rendszerek használata iránt.
10
2 A Moodle keretrendszer
2.1 Mi is az a Moodle?
A Moodle[11][17][18] egy ingyenes, nyílt forráskódú LMS, azaz tanulásszervezési
keretrendszer. A neve egy mozaikszó, feloldása: Modular Object-Oriented
Dynamic Learning Environment, magyarul: Moduláris Objektumközpontú
Dinamikus Tanulási Környezet(Eleinte a Moodle M betűje a vezető fejlesztő nevére
utalt). A Moodle szó egy ige is egyben, mely egy élvezetes „bütykölési” folyamatot ír
le, ami rálátáshoz, kreativitáshoz vezet.
A szoftvert Martin Dougiamas(Perth, Ausztrália) kezdte el fejleszteni a 90-es
években, de mint ahogy az a nyílt forráskódú szoftverek esetén lenni szokott, sok
önkéntes csatlakozott hozzá és kapcsolódott be a Moodle modulok fejlesztésébe,
nyelvi változatok elkészítésébe.
Martin Dougiamas[12] az Ausztráliai Curtin egyetem WebCT LMS rendszerének
adminisztrátora volt, aki Informatikából (Computer Science and Education)
diplomázott. Doktori munkájának címe:The use of Open Source software to support a
social constructionist epistemology of teaching and learning within Internet-based
communities of reflective inquiry(Nyílt forráskódú szoftverek használata a tanítás és
tanulás konstruktivista ismeretelméletének a reflektív ismeretszerzés internetes
közösségein belüli támogatásában).
[13]Az első változat 2002 nyarán jelent meg. A szoftver jelenleg az 1.9.6-os stabil
verziónál tart és több, mint 200 országban használják. Naponta átlagosan 3000-szer
töltik le a keretrendszert.
Részletes statisztikák a következő címen érhetők el: http://moodle.org/stats
Regisztrált oldalak 43567
Országok száma 208
Kurzusok 2,975,577
Felhasználók 30,437,410
11
2.2 Miért a Moodle-t válasszuk?
• A rendszer megbízható: 262 olyan ismert oldal van, ahol 10 000-nél több a
regisztrált tanuló.
• A rendszer dinamikusan fejlődő: jelenleg az 1.9-es verziónál tart. Gyakoriak a
hibajavítások, új verziók megjelenése, rengeteg modul készült, és folyamatosan is
készül a Moodle-hoz.
• Egy aktív közösség áll mögötte, akik egy jól működő, segítőkész fórumot
működtetnek.
• Részletesen dokumentált, amely dokumentáció beépül magába a Moodle
rendszerbe is.
• Magyarországon is ismert, sok helyen használt (egy lista a Magyarországon
regisztrált Moodle oldalakról: http://moodle.org/sites).
• Pillanatnyilag 79 nyelvi csomag érhető el hozzá.
• Mivel nyílt a forráskódja ezért teljes mértékben testre szabható, kibővíthető. A
Moodle mögött álló fejlesztői közösség már számos modult létrehozott, amik
kibővítik az alapszolgáltatásokat.[14]
12
ábra 2: A moodle.org oldalon regisztrált Moodle keretrendszerek száma havi bontásban
2.3 Együttműködés
Több együttműködési pontja lehetséges egy LMS rendszernek más rendszerekkel. A
Moodle az alábbi szolgáltatásokat biztosítja:
• Hitelesítés: LDAP, Shibboleth, IMAP és még számos egyéb szabványos mód.
• Beiratkozás: IMS Enterprise többek között, vagy közvetlen együttműködés
külső adatbázissal.
• Kvízek, kvíz kérdések importálhatók és exportálhatók többféle formátum
szerint: GIFT (Moodle saját formátuma), IMS QTI, XML és XHTML.
• Erőforrások: IMS Content Packaging, SCORM, AICC (CBT), LAMS
• A Moodle képes együttműködni több CMS rendszerrel, pl.: PostNuke.
• RSS szolgáltatás segítségével friss tartalmakat képes publikálni, úgymint
események, fórum hozzászólások, valamint a másik oldala, a hírcsatornák
megjelenítésére is meg van a lehetőség.
• A Moodle bizonyos mértékben képes felhasználni más LMS rendszer
szolgáltatásait: Kvízek, kurzusok importálása BackBoard és WebCT LMS
rendszerekből.
2.4 Tanulásszervezési módszerek és eszközök a Moodle keretrendszerben
A Moodle mint elektronikus tanulási környezet rendkívül szerteágazó, az önálló és az
irányított tanulás minden aspektusát felölelő modulokból épül fel. [15]
Az elektronikus értelemben vett tanulás szereplői:
• a tanuló
• a tanár
• a képzés adminisztrátor
Ezek alapján a Moodle a tanulóknak a tananyag elsajátítására biztosít számos modult,
funkciót, olyanokat, mint lecke, csevegés, munkaműhely, fórum, a tanárokat az
oktatásban segíti olyan modulokkal, mint tananyagok szerkesztése, tesztek létrehozása,
hallgatók számonkérése, valamint az oktatási folyamat adminisztrálását segítő
13
modulokkal például beiratkozás, jelenlét naplózása, tevékenységek ütemezése és
felügyelete segíti a képzés adminisztrátorokat.
A szolgáltatások rövid bemutatását egy másik felosztás alapján mutatom be:
A Moodle kétféle tartalmat különböztet meg:
1. Tananyagforrások
2. Tevékenység modulok
A tananyag forrásai lehetnek:
• A Moodle CMS(Content managment System) szolgáltatásait felhasználva
létrehozott, szerkesztett belső oldal(Compose a text page, Compose a web
page) megjelenítése.
• Fájlra, külső oldalra való hivatkozás: egy külső oldalra, fájlra mutató
hivatkozást tudunk beilleszteni a kurzus tananyagai közé.
• Mappa megjelenítése(Display a directory): Ezzel a tananyagtípussal egy adott
könyvtár összes fájlját egyszerre tudjuk hozzáférhetővé tenni a diákok
számára.
• IMS, Scorm specifikációnak megfelelő tananyag csomag hozzáadása a
kurzushoz.
• A címke beszúrása nem kimondottan egy „tananyagforrás” létrehozását jelenti.
Ezzel a lehetőséggel blokk pozícióban jeleníthetünk meg tetszőleges tartalmat
(fix szöveg, grafikai elem...).
Alapvető Tevékenység modulok[16][15]:
• Fórum: A jól ismert aszinkron kommunikációs eszköz. A Moodle lehetőséget
kínál a tanulók automatikus feliratkozására, fájlok csatolására, email értesítésre
új hozzászólás esetén. A fórum lehetséges megvalósulásai:
◦ Egyszerű vita: Mindössze egy vitatéma van a fórumban.
◦ Kérdések - Válaszok fórum: Kérdéseket és azokhoz tartozó válaszokat
lehet összegyűjteni.
14
◦ Mindenki egy vitatémát ad meg: Minden résztvevő csak egy vitatémát
adhat meg, ennyi van limitálva, de onnantól a beszélgetés folyamatos.
◦ Általános célú fórum: Bárki, akár több vitatémát is hozzáadhat.
• Csevegés: A Csevegés egyszerű, valós idejő, szinkron kommunikációs eszköz.
A Moodle-ban a csevegés hasonló módon működik, mint a chat-ek.
• Wiki: A tanulói tudásbázis létrehozásának nélkülözhetetlen eszköze.
• Szavazások, kérdőívek: A hallgatók részéről történő visszajelzések fontos
eszköze.
• Naptár: Tetszőleges esemény bejegyezhető a naptárba, ami lehet kurzushoz
kötődő(házi feladatok határideje), személyes(fontos évfordulók), vagy globális
esemény(szünetek időpontja) is.
• Kérdések: A kérdésekre adott válaszok lehetnek automatikusan kiértékelődők
és offline, tanárok által kiértékelt válaszok. A Moodle számos beépített
kérdéstípust támogat.
• Tesztek: A teszt az a tevékenység, ahol a tanárok számon kérhetik a tanulók
tudását. A teszthez rendelhetők hozzá a kérdések.
• RSS: Hírcsatornák megjelenítését támogató funkció.
Az alapvető tevékenységeken kívül a Moodle fejlesztők számos más modult
készítettek, melyeket felhasználhatunk mi is saját rendszerünkben[19].
A Moodle részletes dokumentációi elérhetők az alábbi oldalon:
http://docs.moodle.org/hu/Kezdőlap
15
2.5 Moodle bemutatása fejlesztői szemszögből
2.5.1 A Moodle alapvető tulajdonságai
A Moodle szerkezete az alábbi tulajdonságoknak megfelelően lett kialakítva[20]:
1. A Moodle platformok széles választékán futtatható legyen:
A Moodle-t a népszerű LAMP platformon fejlesztették - GNU/Linux, Apache,
MySQL és PHP. Ezek a szoftverek ingyenesen elérhetők.
A rugalmas technikai háttérnek köszönhetően szinte akármilyen számítógépre,
operációs rendszerre telepíthető(Unix/Linux, Windows, Novell NetWare 6.x, MAC
OS X.) A felhasználóknak csak egy böngészőre és internetkapcsolatra van szükségük.
A Moodle ADOdb-t használ köztes rétegként a program és az adatbázist elérő
függvények között. A közvetlen adatbázist kezelő függvényeket elrejti előlünk és
objektum orientáltan teszi elérhetővé az adatbázisokat, függetlenül azok típusától.
Egyszerre kezelhetünk MySQL, PostgreSQL, Oracle, MS-SQL adatbázisokat.
2. A Moodle könnyen telepíthető, tanulható, módosítható legyen : A kezdeti
prototípusok (1999) Zope objektum orientált webes alkalmazás szerverrel készültek.
Ez a technika remekül használható volt, de a megértése bonyolult, valamint nem adott
kellő rugalmasságot a rendszer adminisztrálásban. Ezért megtörtént a váltás a PHP
irányába, melyet könnyen el lehet sajátítani. Egy fontos tervezési lépés volt az osztály
orientált felépítés elkerülése, ugyancsak a könnyű érthetőség, tanulhatóság miatt.
A kód újrafelhasználhatósága ehelyett ésszerűen elnevezett függvénykönyvtárak és
következesen elrendezett fájl struktúra alapján valósul meg.
3. Könnyű verzióváltások, frissítések: A Moodle ismeri a saját verzióját, és beépített
mechanizmusok segítségével saját magát tudja frissíteni egy újabb verzióra.(például
adatbázis táblák átnevezése, mezők létrehozása, módosítása is automatikusan
megtörténik).
4. Moduláris felépítés a fejlődés, kiterjesztés érdekében: A moduláris felépítés nem
csak az oktatást segítő funkciók felépítésénél látszik meg. A Moodle többek között a
témákat(stílus), tevékenységeket, nyelveket, adatbázis sémát és a kurzusok
formátumát(megjelenését) is modulként kezeli. Ezzel a felépítéssel megengedi, hogy
16
bárki módosíthassa, saját moduljával lecserélje az alapértelmezett modulokat.
5. Könnyen együttműködhessen más rendszerekkel : Ld. feljebb: 2.3
Együttműködés résznél.
2.5.2 Adatbázis séma:
[21]A Moodle körülbelül 200 adatbázis táblából épül fel, ami soknak tűnhet, de ha
ezek közül kivesszük az egyes modulokhoz, kérdéstípusokhoz, egyéb integrációs
feladatokhoz kapcsolódó táblákat, akkor nagyjából 50 tábla marad, amik az
alaprendszer részét képezik.
Ezt az 50 táblát csoportokba oszthatjuk, amik egyszerűsítik a megértésüket:
(A csoportok szerinti tábla felosztás megtalálható a függelékben.)
Az 1.7-es verzióval a Moodle lehetőséget kínált újabb RDBMS(MSSQL, Oracle)
rendszerekkel való együttműködésre, amíg természetesen a MySQL és PostgreSQL
adatbázisok is támogatottak maradtak.
Az alábbi ábra azt mutatja, hogy a Moodle hogyan kommunikál az adatbázissal:
17
ábra 3: Moodle adatbázis séma
A Moodle két nyelvet használva ad utasításokat az adatbázisnak:
1. XMLDB neutral description files: Az adatbázis struktúra XMLDB rendszer
segítségével hozható létre, módosítható, frissíthető. Szabványos (valid) XML
fájlokból épül fel, melyek segítségével leírhatók az adatbázis
objektumok(táblák, mezők, indexek, kényszerek).
2. Moodle SQL neutral statements: Adatok létrehozása, módosítása,
lekérdezése az adatbázisból (DML: insert/update/delete/select records).
Mindkét nyelv saját könyvtárat használ a feladatainak elvégzésére. Az XMLDB
neutral description files a Moodle DDL Library-t(ddllib.php), mely a struktúra
létrehozására ajánl függvényeket. A Moodle SQL neutral statements a Moodle DML
Library-t(dmlib.php) használja az adatok manipulációjára.
Az ábrán a két rész között a datalib.php is látható még, melyben az elavult(legacy)
függvények találhatók, melyek a kompatibilitás miatt még megmaradtak, de
használatuk nem javasolt.
Ezek a library-k utasításaikat átadják az ADOdb Database Abstraction Library for
PHP rétegnek, mely elfedi előlük a konkrét adatbázist. Az ADOdb a különböző
driver meghajtói(MySQL,PostgreSQL,Oracle,SQL Server) segítségével kapcsolatba
lép az adatbázissal, és az adatbázisból kinyert eredményt visszaadja annak a
megfelelő rétegnek, aki az adatbázis utasítás végrehajtását kérte.
XMLDB[22]
Az 1.7-es verzió előtt, a fejlesztőknek kétszer kellett kifejleszteni az adatbázis
létrehozását és frissítését elvégző részt a 2 adatbázisnak(MySQL, PostgreSQL)
megfelelően. Ez a megközelítés működött, de sok fáradtságot okozott, mivel a két
változatot szinkronban kellett tartani, és a tesztelés is nagyobb munka volt. Az 1.7-es
változat egyik célkitűzése a már említett adatbázis kezelő rendszer kibővítése volt,
így a jelenlegi párhuzamos fejlesztés elfogadhatatlan lett.
Ilyen előzmények után az egyik lehetséges megoldás az ADOdb XML Schema lett
volna, hiszen már úgyis az ADOdb Database Abstraction Library használta a Moodle
az adatbázissal való kapcsolattartásban. Végül mégsem emellett döntöttek, mivel
éppen ebben ez időben ment át egy nagyobb változtatáson az ADOdb, valamint nem
18
támogatta prefixeket, ami a Moodle számára fontos lett volna az objektumok
generálásánál. Ez miatt kifejlesztették a saját XML formátumokat, amiben teljesen le
tudták írni az adatbázis objektumokat.
Minden plugin rendelkezik egy db írható könyvtárral, melyben megtalálható
install.xml néven ez az xml fájl, melynek speciális szerkezete van:
<XMLDB/>
<TABLES>
<TABLE>
<FIELDS/>
<KEYS/>
<INDEXES/>
<STATEMENTS/>
</TABLE>
</TABLES>
Egy konkrét példán keresztül szemléltetve: A csoportválasztó modul XML fájljából egy
részlet:
<XMLDB PATH=”mod/mymod/db” VERSION=”20091120” COMMENT=””XMLDB for Moodle mod/groupselect" xsi:noNamespaceSchemaLocation="../../../lib/xmldb/xmldb.xsd"><TABLES>
<TABLE NAME="groupselect" COMMENT="Defines groupselects" NEXT="groupselect_groupchange">
<FIELDS><FIELD NAME="id" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="true" SEQUENCE="true" ENUM="false" NEXT="course"/><FIELD NAME="course" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="true" DEFAULT="0" SEQUENCE="false" ENUM="false" PREVIOUS="id" NEXT="name"/><FIELD NAME="name" TYPE="char" LENGTH="255" NOTNULL="true" SEQUENCE="false" ENUM="false" PREVIOUS="course" NEXT="intro"/><FIELD NAME="intro" TYPE="text" LENGTH="small" NOTNULL="true" SEQUENCE="false" ENUM="false" PREVIOUS="name" NEXT="targetgrouping"/>
</FIELDS><KEYS><KEY NAME="primary" TYPE="primary" FIELDS="id"/>
</KEYS><INDEXES><INDEX NAME="course" UNIQUE="false" FIELDS="course"/>
</INDEXES></TABLE><TABLE NAME="groupselect_groupchange" …</XMLDB>
19
2.5.3 Mi történik, a required_once('config.php') hatására
config.php:
• $CFG globális változó beállítása: adatbázis elérés, wwwroot, dirroot, dataroot
beállítása)
• dirroot/lib/setup.php beolvasás
setup.php:
• globális változók létrehozása: USER, SESSION, DB, CACHE, THEME,
COURSE
• require_once($CFG->libdir .'/setuplib.php');
• adatbázis kapcsolat létrehozása
• alapértelmezett értékek beállítása:
◦ nyelv
◦ admin könyvtár elérési útvonala
◦ lib könyvtár elérési útvonala
◦ site beállítása, ostype
• Függvénykönyvtárak betöltése:
20
ábra 4: Bekapcsolódás a Moodle keretrendszerbe
◦ textlib.class.php: Stringek kezelése, kódolása.
◦ weblib.php: A html kimenet generálását végző függvények és konstansok.
◦ dmllib.php: Függvénykönyvtár az adatbázis műveletekhez (DML) .
◦ datalib.php: Adatbázis kezelő elavult függvények.
◦ accesslib.php: Jogosultsági rendszer szolgáltatásait elvégző függvények.
◦ deprecatedlib.php: Elavult funkciók a visszafelé való kompatibilitás miatt.
◦ moodlelib.php: A Moodle fő függvénykönyvtára általános műveleteket,
célokat ellátó függvényekkel.
◦ eventslib.php: Eseménymanipuláció.
◦ grouplib.php: Csoportok kezelését végző függvények.
2.5.4 Model-View-Controller réteg megvalósulása egy Moodle modulban
2.5.4.1 Model réteg:
1. Ahogy azt a 2.5.1-es fejezet 2. pontja bemutatja, a Moodle nem osztályokból
építkezik a fejlesztők munkájának megkönnyítése végett, viszont
objektumokkal hajt végre műveleteket.
A PHP az stdClass generikus névtelen osztály segítségével lehetőséget ad arra,
hogy névtelen osztályokat hozhassunk létre. Létrejönnek az objektumok és
adatot köthetünk hozzá, anélkül, hogy az osztálydefiníciót létrehoznánk.
Példa:
$book = new stdClass;
$book->title = "PHP Haladóknak Fekete könyv";
$book->author = "Peter Moulding";
$book->isbn = "9630095580";
$book->publisher ="Perfact";
2. Osztályok hiányában az osztálymetódusok a modulok lib.php fájljába kerülnek.
Egy fájlba az összes. A megfelelő függvénynevek kialakításával (amit a
Moodle egyébként is megkövetel) tudjuk a függvényeket csoportosítani.
Például a feladat lekérése az id alapján a projekt modulban az alábbi nevet
21
kapja: project_task_get_task_by_id(task_id)
A lib.php-ban taláható függvényekben meghívhatjuk DML könyvtár
függvényeit, melyekkel az adatbázist tudjuk elérni. Ezek a függvények is
objektumokat adnak vissza.
2.5.4.2 Megjelenítési View réteg
A megjelenítés központjában a formslib osztálykönyvtár áll, mely a PEAR Quicform
csomagra épül.
A PEAR::HTML_QuickForm csomag metódusai lehetőséget adnak HTML formok,
űrlapok létrehozására, validálására, és feldolgozására[23].
A csomag többek között az alábbi szolgáltatásokat biztosítja:
• több, mint 20 elem
• XHTML kompatibilis kód generálása
• többféle validációs szabály
• szerver és kliens oldali validációs lehetőség
• javascript kód használata a validációhoz
• fájl feltöltés támogatása
• teljesen testre szabható megjelenítés
• külső template rendszerekkel való együttműködés(Smarty,Flexy,Sigma,ITX)
A Moodle kibővíti ezt a szolgáltatáskört:
• Segítség gombok hozzákötése az egyes elemekhez
• Moodle specifikus elemek: csoportos mód, rejtett mezők,stb...
• új elemek: html szerkesztő, dátumválasztó, dátum és idő választó, igen-nem
választó
• egyszerűen bővíthető új elemekkel
• ismétlődő elemek létrehozását támogató metódusok
• bizonyos részek elrejtése megjelenítése a form-on gomb segítségével
22
Egy új nézet létrehozásához[24] egy új fájlt kell létrehozni(nézetfunkció_form),
modulnév_nézetfunkció_form nevű osztállyal, ami a moodleform osztályból
öröklődik. A moodleform egy absztrakt osztály, a formslib része. Az osztály nevének
egyedinek kell lennie, melyet több helyen felhasznál a rendszer.
A saját osztályunkban a moodleform definition nevű absztrakt metódusát kell
felüldefiniálnunk, amiben létrehozhatjuk a saját form struktúránkat:
<?php
require_once ($CFG->dirroot.'/lib/formslib.php');
require_once ('../lib.php');
class project_task_form extends moodleform {
function definition() {
$mform = &$this->_form;
$mform->addElement('text', 'name', "Név",$isdisable,
array('size'=>'64'));
$mform->setType('name', PARAM_TEXT);
$mygroups = groups_get_all_groups($COURSE->id, $USER->id);
$options = array();
foreach ($mygroups as $group) {
if ($members = groups_get_members($group->id)) {
$membernames = array();
foreach ($members as $member) {
$options[$member->id] = format_string(fullname($member, 1));
}
}
}
$mform->addElement('select', 'workerid', "Feladatot kapja",
$options,$isdisable);
$mform->addElement('htmleditor', 'notes', 'Leírás',$isdisable);
$mform->setType('notes', PARAM_RAW);
} } ?>
A PEAR::HTML_QuickForm csomag használatáról további információ kapható az
alábbi címeken:
http://www.midnighthax.com/quickform.php
http://xref.moodle.org/nav.html?lib/formslib.php.html
23
2.5.4.3 A vezérlő(Controller) réteg:
A vezérlő réteg működése a projekt modul feladatok listáját megjelenítő vezérlőjén keresztül kerül bemutatásra:
Szükséges fájlok betöltése:
require_once ('../config.php');
require_once ('lib.php');
A nézetet tartalmazó fájl betöltése:
require_once ('project_tasks_form.php');
Kötelező és opcionális paraméterek lekérése(GET):
$project_id=optional_param('projectid',PARAM_INT);
$course_id = required_param('id', PARAM_INT);
if (!$course = get_record('course', 'id', $course_id)) {
error("Hibás kurzus azonosító");
}
require_login($course);
Oldal navigáció, fejrész információk beállítása:
$navigation = build_navigation($navlinks);
print_header($course->fullname.': '."Feladat", $course-
>fullname.': '."Feladatok", $navigation);
require ('../tabs.php');
A model meghívása a szükséges adatok lekérése(lib.php-ben található a project_task_get_all_tasks($projectid) függvény):
$tasks=project_task_get_all_tasks($project_id);
A nézet létrehozása:
$tasks_form = new tasks_form();
A form eseményeinek lekezelése(milyen submit gombok lettek megnyomva)is_cancelled() a mégsem gomb lenyomását ellenőrzi(ha van mégsem gomb, akkor mindig ezzel kell kezdeni):
if($tasks_form->is_cancelled()) {
//mégsem gomb hatására átirányítás történik
24
return_url = $CFG->wwwroot.'/project/index.php?id='.
$course_id;
redirect($return_url);
}
Ha nem ez a gomb lett megnyomva, hanem valamelyik másik:
elseif($data=$tasks_form->get_data()) {
A $data változó egy objektum. Ide kerülnek be a form elemeinek tartalma.A kapott adatok feldolgozása:
project_process_data($data);
}
Ha a fenti feltételek nem történtek meg, tehát vagy nem megfelelő, valid a visszakapott adat, vagy az oldalt először töltjük be, akkor meg kell jeleníteni a formot:
else {
A nézetnek a feladatok átadása:
$tasks_form->set_data($tasks);
$tasks_form->display();
}
A lábléc adatok kiírása:
print_footer();
?>
2.5.5 Pluginok
A Moodle szóban az M betű a moduláris felépítésre utal. A legegyszerűbb módja a
Moodle funkcióinak kiterjesztésére egy új plugin írása a különféle plugin API-k
felhasználásával.
Többfajta plugint hozhatunk létre, melyek közül a tevékenység modulok(activity
module), a blokkok(block), kérdéstípusok(question type) és a szűrők(filter) a
legfontosabbak, ezért ezekről írok részletesebben a továbbiakban. A kérdéstípusokról
a Cporta és a Moodle integrációja fejezetben lesz szó részletesebben.
25
2.5.5.1 Tevékenység modulok
A tevékenység modulok[25] a Moodle mod könyvtárában találhatók. Az alábbi
kötelező fájlokból épülnek fel:
• mod_form.php: Egy formot definiálhatunk benne, melyet a modul
létrehozásánál és módosításánál használunk.
• version.php: Különféle meta információkat tartalmazó fájl.
• icon.gif: 16x16 modul ikon.
• db/install.xml: A modulhoz tartozó adatbázis struktúrát definiáló XML fájl,
ami alapján a Moodle a modul telepítésekor létrehozza a megfelelő
adatbázistáblákat.
• db/upgrade.php: Az adatbázis struktúra változásait tartalmazza, ami a modul
frissítéséhez szükséges.
• db/access.php: A modul jogosultságait definiálhatjuk az access.php fájlban.
• index.php: Itt listázzuk ki a modul példányokat a kurzus nézetnek megfelelő
formában a kurzus oldalon(virtuális osztályterem).
• view.php: Egy konkrét modul példány megjelenítése.
• lib.php: A modul összes függvénye a lib.php függvénybe kerül: Amennyiben a
modul neve widget, akkor az alábbi függvényeknek kell létezniük a lib.php
fájlban:
• widget_install(): a modul installálásakor fut le
• widget_uninstall(): a modul eltávolításakor fut le
• widget_add_instance(): új példány létrehozása
• widget_update_instance(): meglévő példány frissítése
• widget_delete_instance(): meglévő példány törlése
User activity modullal való együttműködéshez:
• widget_user_outline(): rövid összesítés, hogy mit csinált a felhasználó
a modul használata közben.
• widget_user_complete(): ugyanennek a részletes leírás.
• widget_get_view_actions() és widget_get_view_actions():
együttműködés a „résztvevők” report-tal.
26
Opcionális függvények:
• widget_delete_course(): Kurzus törlése esetén lefutó kódrészlet.
• widget_process_options(): A modul beállítása oldalon elküldött adatok
előfeldolgozása.
widget_reset_course_form() és widget_delete_userdata(): A kurzus
alaphelyzetbe állítása esetén végrehajtott kódrészlet.
• widget_cron(): Meghatározott időnként meghívódó függvény.
A névütközések elkerülése érdekében minden modul függvénynek,
konstansnak modulnév_-sal kell kezdődnie.
• backuplib.php és restorelib.php
• settings.php vagy settingstree.php: A Moodle adminisztrációs menüjébe
hozhatunk létre beállító oldalt a modulunkhoz.
• lang/en_utf8/widget.php: Nyelvi fájl.
2.5.5.2 Blokkok
A blokkok[26] a Moodle keretrendszer kurzus nézetének jobb és bal oldalsávjában
megjeleníthető „dobozok”. Ezek a blokkok különböző típusú adatokat jeleníthetnek
meg és különböző funkciókat láthatnak el: Ilyen blokkok például a keresés, menük,
következő események listája, rss hírforrások, online felhasználók, kurzus résztvevők,
stb...
Egy egyszerű blokk létrehozása
A blokkok a Moodle blocks könyvtárában találhatók. Egy új blokk létrehozásához
egy új mappát kell létrehoznunk a blokkunk nevével, majd egy block_myblock.php
fájlt. Általában egy blokk 1 fájlból áll. Ebben a fájlban a block_ myblock nevű
osztályt kell definiálni, ami a block_base osztályból származik.
27
<?php
class block_myblock extends block_base {
function init() {
$this->title=get_string('simplehtml','block_simplehtml');
$this->version = 2004111200;
}
Minden blokknak implementálnia kell az init() függvényt, melyben két objektum
változót kell beállítanunk:
1. title: A blokk neve, ez fog szerepelni a blokk fejrészében.
2. version: A blokk verziója. Erre akkor van szüksége a Moodle-nak, ha a blokkhoz
adatbázistábla is tartozik. Ebben az esetben a blokk frissítése során dolgozik a
version-ban beállított értékekkel. A version formátuma: YYYYMMDD00
A tartalom megjelenítésére egy újabb függvényt kell létrehoznunk, get_content()
néven:
function get_content() {
if ($this->content !== NULL) {
return $this->content;
}
$this->content = new stdClass;
$this->content->text = 'Tartalom...';
$this->content->footer = 'Lábléc...';
return $this->content;
}
$this->content maga a tartalom, ami megjelenik a blokk belsejében. Kezdetben
NULL az értéke, majd az első get_content() hívás után kap értéket, és lesz egy
objektum.
Mivel az értékadás időigényes feladat, ezért ez nem történik meg minden
get_content() hívás esetén, csak a legelsőnél. Ezt mutatja a fenti kódrészlet első if
feltétele.
28
A content-nek két típusa lehet: BLOCK_TYPE_TEXT és BLOCK_TYPE_LIST.
BLOCK_TYPE_TEXT esetén a content objektumnak két mezője lehet:
1. text: a blokk tartalma.
2. footer: a blokk lábléce
BLOCK_TYPE_LIST esetén a blokk egy listát jelenít meg. Ezzel a típussal
lehetőségünk van például egy menü megjelenítésére.
1. items: A lista elemek
2. icons: A lista elemekhez tartozó ikonok
3. footer: a blokk lábléce
Az init() és a get_content() metódusok létrehozása után a blokk telepíthető, és
felvehető a Moodle oldalsávjába.
Lehetőséget adhatunk az adminisztrátoroknak, tanároknak, hogy a blokkot testre
szabhassák, és megmondhassák, hogy hogyan működjön.
Ehhez ezt a Moodle-al is tudatni kell, amit az instance_allow_config() metódus
hozzáadásával tudunk megtenni.
function instance_allow_config() {
return true;
}
Ezzel a metódussal a Moodle szerkesztési módba való átváltása után egy szerkesztő
ikon jelenik meg a blokk fejrészében, viszont ha rákattintunk hibajelzést kapunk,
miszerint nincs megfelelően implementálva a beállítás rész, és ez igaz is.
A beállító oldalhoz egy újabb fájlt kell létrehozni a blokkunk könyvtárában.
config_instance.html néven.
Ebbe a html oldalba kerül a beállító oldal html kódja, melyben mint az lejjebb látható
egy textarea-t hozunk létre a print_textarea() függvény segítségével. A Moodle
leegyszerűsíti a dolgunkat itt is, ezért a form elemmel sem kell foglalkoznunk.
Akárhová elhelyezhetjük a submit gombot.
29
<table cellpadding="9" cellspacing="0">
<tr valign="top">
<td align="right">
<?php print_string('configcontent', 'block_simplehtml');
?>:
</td>
<td>
<?php print_textarea(true, 10, 50, 0, 0, 'text', $this-
>config->text); ?>
</td>
</tr>
<tr>
<td colspan="2" align="center">
<input type="submit" value="<?php
print_string('savechanges')?>" />
</td>
</tr>
</table>
<?php use_html_editor(); ?>
A html elemekben megadott értékek a $this->config->elemnév változóba kerülnek,
amit a blokkunk kódjában az init() függvényen kívül bárhonnan elérhetünk.
Így a get_content() metódusban a statikus szöveg helyett a blokk tartalmának a
beállított értékeket is adhatjuk, vagy a beállított értékek alapján származtathatjuk:
$this->content->text = $this->config->text;
Mivel a blokk title-t az init() metódusban állítjuk be, és ott még nem érhető el a
config objektum, ezért a Moodle biztosít számunkra egy specialization() nevű
metódust, mely az init() után, de még a get_content() előtt meghívódik, ahol
alapértelmezett értékeket állíthatunk be:
function specialization() {
$this->title = $this->config->title;
}
30
Egyéb érdekes lehetőségek:
• blokk elrejtése, ha nincs tartalma
• több blokk példány megjelenítése(több beállító felület)
• több blokkpéldány/beállító felület esetén az is megadható, hogy egy adott
beállított érték csak az aktuális blokkra, vagy az összesre érvényes legyen.
• a Moodle biztosít számos olyan metódust, amivel a blokk megjelenését lehet
szabályozni
2.5.5.3 Szűrők(Filters)
Szűrők[27] használatával átalakíthatjuk a megjelenítendő szöveges tartalmakat még
megjelenítés előtt. Elhelyezhetünk speciális kódrészletet a szöveges tartalomban,
majd a megjelenés előtt a kódrészletet értelmezzük és aszerint jelenítjük meg a
tartalmat. Ez például lehetőséget ad olyan műveletekre, hogy egy mp3-ra mutató
linket lecseréljünk egy olyan kódrészre, ami az mp3-at egy beágyazott lejátszó
segítségével nyitja meg.
Filterek létrehozása:
1. A filters mappába hozzunk létre egy új mappát, aminek a saját filterünk nevét
adjuk.
2. Hozzunk létre ezen a mappán belül egy filter.php nevű fájlt.
3. Írjuk meg a myfilter_filter nevű függvényt, melynek első paramétere a kurzus id,
második paramétere a módosítandó szöveg.
<?php
function removex_filter($courseid, $text) {
return str_replace('x', '', $text);
}
?>
Ezzel el is készítettük a saját szűrőnket, amit használat előtt az adminisztrációs
menüben engedélyezni kell.
31
2.5.5.4 Kurzus formátum
A kurzus formátumok[28] határozzák meg a kurzusok oldal (virtuális osztályterem)
elrendezését. Az alábbi beépített formátumok érhetőek el, melyeket a kurzuson belül
az adminisztrátori menü beállítások almenüjében változtathatunk meg:
• Heti forma(Week format): Minden héthez létrejön egy szekció, amihez hozzá
lehet rendelni a fórumokat, kvízeket, és egyéb tartalmi elemeket.
• Téma forma(Topic format): A kurzus témákra oszlik. Ebben a formában az
egyes témákhoz rendelhetők a fenti elemek.
• Szociális forma(Social format ): Ennél a változatnál a kurzus központjában
egy fórum áll.
• LAMS (Learning Activity Management System) nyílt forrású LMS és a
Moodle integrálásából létrejött kurzus formátum, ahol a LAMS van a kurzus
központjában.
• SCORM forma: SCORM tananyagnak megfelelő kurzus formátum.
• Heti forma táblázatok nélkül
A Moodle megengedi új kurzusformátum létrehozását is. Ehhez az alábbi két fájlt kell
létrehoznunk:
1. format.php: ebben a php fájlban van felépítve kurzus struktúrája. PHP kód,
ami html elemeket „print”-el ír ki a kimenetre és beilleszti a megfelelő helyre a
Moodle elemeket.
2. config.php: opcionális fájl, ami a kurzusformátumra jellemző speciális
beállításokat tartalmazza. Általában itt találhatók az alapértelmezett blokkok
listája.
3. ajax.php: opcionális fájl, melyben a $CFG->ajaxcapable = true; paranccsal
engedélyezhetjük az AJAX-ot.
Az elkészített fájlokat a course/format mappában létrehozott saját mappába kell
bemásolnunk.
2.5.5.5 Hitelesítés (Authentication plugins)
A hitelesítés[29] akkor indul el a Moodle rendszerben, amikor a felhasználó a
32
Bejelentkezés linkre klikkel. Az alábbi események történnek ennek hatására:
1. Ha az alapértelmezett login oldalt használjuk, akkor a /login/index.php oldal
jelenik meg(A Manage authentication oldalon megváltoztatható a login oldal
címe).
2. A felhasználok megadják saját adataikat.
3. Ezt a login/index.php fájl kezeli le:
1. Lekéri az engedélyezett authentication pluginok listáját.
2. Meghívja minden plugin loginpage_hook() függvényét(amit örökölnek),
hogy a bejelentkezési kérelem minden pluginhoz eljusson.
3. Ellenőrzésre kerül, hogy az adatok megfelelnek-e a Moodle
kritériumainak(hossz, erősség...).
4. Meghívja a authenticate_user_login() függvényt a /lib/moodlelib.php
fileban, ami az alábbi műveleteket végzi el:
1. Lekéri az engedélyezett pluginek listáját.
2. Megkeresi a felhasználó nevet a mdl_user táblában, és ha megtalálja és
megengedett a felhasználónak a bejelentkezés, akkor megkeresi, hogy
melyik hitelesítési eljárással kell a felhasználót azonosítani.
3. Létrehozza a user objektumot, amely a mdl_user tábla adatait
tartalmazza(üres, ha a felhasználónév nem ismert).
4. Egy authentication plugin a következő műveleteket hajtja végre:
1. user_login() : Azonosítja a felhasználót és IGAZ vagy HAMIS
értéket ad vissza.
2. Ha a felhasználót nem a mdl_user tábla alapján, hanem külső
rendszer ellenőrzi, akkor meghívódik update_user_record()
függvény a felhasználó adatok(név...) lekérésére.
3. Moodle user létrehozása, ha nem létezett.
4. sync_roles() függvény hívása.
5. A többi plugin értesítése : user_authenticated_hook() függvény
meghívásával.
5. Visszatér a user objektummal, ha sikeres volt a hitelesítés, vagy false
értékkel, ha egyik plugin sem tudta azonosítani a felhasználót.
5. Leellenőrzi a kapott user objektumot, és ha az nem megfelelő, akkor
33
visszadobja újra a bejelentkezési képernyőre, abban az esetben pedig, ha
megfelelő a user objektum, akkor eldönti, hogy melyik belső oldalra kell
továbbirányítani(kurzusnézet/jelszó módosítás...)
Új plugin létrehozásához az auth könyvtár alatt kell létrehozni a plugin névvel
megegyező mappát(itt találhatók a különféle bejelentkezési protokollt elvégző
pluginek(ldap,email,db,pop3, shibboleth,...)).
A saját plugin könyvtárunkban egy auth.php nevű fájlba kell
auth_plugin_sajatpluginnev nevű osztályt megírni, amely osztály az
auth_plugin_base absztrakt osztályból öröklődik(/lib/authlib.php) Ebben az
osztályban az auth_plugin_base osztály metódusait kell felüldefiniálni. A
config_form() és a process_config() függvények létrehozásával az admin felületen
egy beállító oldalt hozhatunk létre a plugin-hez, mely akár az adatbázist is
használhatja.
2.5.5.6 Kurzus jelentés (Course report)
Ezzel a lehetősséggel a kurzuson belül egy report hozható létre, melyre szinte
semmilyen megkötést nem ad a Moodle. Minimum két fájlból épül fel és a
course/report mappa alatt található. Az index.php fájlba hozhatjuk létre a report
tartalmát (pl felhasználó aktivitás, különféle logolások), a mod.php fájlban pedig a
report beilleszthető a kurzus menü report almenüje alá.
A kurzus reporthoz hasonlóan Admin report és Quiz report is készíthető.
2.5.5.7 Adatbázis mező (database field)
Az adatbázis aktivitás modul mező típusát terjeszthetjük ki új mezőtípussal.
2.5.5.8 Tanulói munka (Assignment types)
Ezzel a modullal az oktatók a tanulóktól kérhetnek be munkákat. Jelenleg 4 fajtája
létezik:(online szöveg, offline feladat kijelölés, fájl feltöltés, speciális fájl feltöltés).
<moodleroot>/mod/assignment/type/PLUGINNAME helyre kerül.
34
3 Oktatást segítő funkciók felkutatása, bemutatásaAhogy a bevezető rész leírja a Moodle megismerésének az egyik célja, annak
vizsgálata, hogy a rendszer használata mennyiben segítené a Budapesti Műszaki
Egyetem Szoftver laboratórium 1-2. tárgyának oktatását.
A 2.4-es: Tanulásszervezési módszerek és eszközök a Moodle keretrendszerben
fejezetben található áttekintés leírja a Moodle alapfunkcióit tevékenység modulok és
tananyagok csoportosításban.
Ezek a funkciók a tanár-diák, diák-diák közötti kommunikáció eszközeit jelentik.
A Szoftver laboratórium oktatása során nagy tanulói és hallgatói létszámmal kell
számolni. Az adminisztrátori munkák is jelentős szerepet kapnak. A tantárgy
jellegzetes kialakítása miatt nem csak egy tanár áll az oktatás középpontjában, hanem
a gyakorlatvezetők is részt vesznek az oktatásban.
Az alábbiakban bemutatásra kerülnek azok a főbb tevékenységek, amik a tantárgy
oktatása során a nagy hallgatói létszám miatt támogatást igényelnek:
• Hallgatók felvétele a Moodle rendszerbe: A Moodle megengedi, hogy a
tanulók maguk regisztrálhassanak az oldalra, mégis talán az adminisztrátorok
által történő tömeges felvétel a javasolt megoldás. A Moodle ezt is támogatja.
Egy egyszerű CSV fájl létrehozásával elvégezhetjük a tanulók felvételét,
személyes adatainak beállítását, kurzusokba, csoportokba sorolását valamint a
jogosultságaik beállítását.
A 2.3-as fejezet Együttműködés részének megfelelően a tanulók felvétele már
meglévő rendszerek, adatbázisok együttműködésével is megoldható LDAP,
Shibboleth segítségével.
• Hallgatók kurzusokba, csoportokba sorolása: A Moodle támogatja a
csoportok kezelését. Az alapegységnek számító kurzuson belül csoportok
alakíthatók ki. Az előző részben bemutatott eljárás segítségével a tanulók az
oldalon történő regisztrálása során a csoportokba sorolás automatikusan
megtörténik, viszont a rendszer adminisztrátori felülete szintén nyújt
támogatást a tanulók, tanárok(jelen esetben gyakorlatvezetők)
csoporttagságainak beállítására. Mivel a gyakorlatok több időpontban
lehetnek, a tanulók saját ismerőseikkel szeretnének egy csoportba kerülni, ezért
35
a tanulók számára biztosítani kell csoportváltási időszakot, amikor is
megváltoztathatják csoportjukat. Ez a funkció nem része a rendszernek, ezért
a csoportváltási lehetőséggel ki kellett bővíteni a Moodle szolgáltatásait. Ezzel
a tevékenységi modullal foglalkozik a 4.2-es fejezet.
• Jogosultságok kezelése: Mivel a tanulók csoportokba vannak osztva és
minden csoporthoz kapcsolódik egy gyakorlatvezető, valamint a tantárgy
oktatását ismét egy másik tanár végzi, ezért szerepkörök kialakítása szükséges.
Minden szerepkörhöz rendelt felhasználó más és más jogosultsággal
rendelkezik.
Ezek a szerepkörök: Adminisztrátor, Tanár, Gyakorlatvezető, Diák.
A Moodle lehetőséget ad szerepkörök definiálására, és azokhoz felhasználók
hozzárendelésére. Az adminisztrátori felületen a jogosultságok teljes mértékben
testre szabhatók. Így a gyakorlatvezetők jogosultságai lekorlátozhatók saját
csoportjukon belülre.
• Statisztika: A Moodle minden tevékenységi moduljáról, a tanulók aktivitásáról
és a legfontosabb a feladat megoldásaikról képes statisztikai adatokat
szolgáltatni. A jelenléti ív létrehozását nem támogatja a Moodle mivel a
gyakorlati órák nem a Moodle keretein belül történnek. A gyakorlatvezetők
számára viszont nagy segítség lenne, ha a jelenléteket egy központi helyen
vezethetnék, és az egyes gyakorlatokhoz kiegészítő információkat köthetnének.
Ezt a modult is létre kellett hozni. A modul a 4.3-as fejezetben kerül
bemutatásra.
• A tanulók számára biztosított tananyagforrásokról szintén a 2.4-es fejezet
adott tájékoztatást. A jogosultságok beállításánál beállítható, hogy melyik
szerepkör tagjai hozhatnak létre új tananyagot és mely csoportokhoz
rendelhetik hozzá.
A tanulók számonkérése egy újabb fontos feladat. A Szoftver laboratórium
tárgy keretében C és Cpp programozási nyelvekkel ismerkednek meg a
hallgatók és a tanultak elsajátításában és számonkérésében a Moodle által
biztosított lehetőségek nagymértékben segítenek.
A Moodle számos kérdéstípust biztosít, amik között megtalálható az esszé,
36
szöveg kiegészítés, igaz-hamis, kérdések-válaszok, matematikai feladatok.
Nagy segítség lenne egy olyan feladattípus, ahol a tanulók programkódokat
adhatnának le. A feladatok beadását támogatja a Moodle, de ebben az esetben a
tanárok feladata a feladatok kiértékelése. Az IIT tanszéken kifejlesztett Cporta
feladat beadó és kiértékelő rendszer és a Moodle integrálásával ezt a lehetőség
is biztosítva lett a diákok számára.
• A szoftver laboratórium 4 keretében a tanulók csoportosan dolgoznak és
minden héten a feladatuk bizonyos részét el kell készíteniük. A csoportos
munkához tartozó adminisztrációs feladatokat kezdve a csoportokba
szerveződéstől a feladat csoporton belüli megosztásán, nyomon követésen
keresztül a feltöltött forrásállományok, dokumentációk karbantartásáig szintén
nem támogatja a Moodle. A projektben való munka megkönnyítésére a Projekt
modul került létrehozásra. A modulról a 4.3-as fejezetben lehet több
információt találni.
A Jelenléti ív, csoportválasztó, projekt modulok és a Cpp feladat típus
létrehozásával a Moodle alkalmassá válik, hogy a Szoftver laboratórium tárgyak
oktatásában támogassák mind a tanulók, mind a tanárok, gyakorlatvezetők munkáját.
A következő fejezetben ez a 4 modul kerül bemutatásra.
37
4 Fejlesztett modulok bemutatása
4.1 Jelenléti ív
4.1.1 Specifikáció:
A Jelenléti ív Moodle modul segítségével a tanárok nyilvántarthatják a diákjaik órai
megjelenését, valamint lehetőségük van egyéb információkat kötni a diákok órai
munkájához, ami lehet nyilvános, illetve magán célú megjegyzés. Ezek az
információk például figyelmeztetést, emlékeztetőt, órai jegyeket tartalmazhatnak. A
modul a jelenléti íveket többféle nézetben is megjeleníti a tanároknak:
• Részletes nézet
• Összesített nézet táblázatos formában
A létrehozott jelenléti ívek törölhetők, valamint módosíthatók is.
A modul kezeli azt az esetet is, amikor egy tanár, vagy diák több csoporthoz tartozik.
A diákok visszajelzést kapnak saját jelenlétükről, valamint a hozzájuk tartozó
nyilvános információkról.
4.1.2 Használati esetek
A USE CASE diagram
több annál, mint
Felhasználó „típusok”
és a hozzájuk tartozó
funkciók ábrázolása.
Tartalmazza a
használati eseteket,
sikeres
forgatókönyveket és a
hiba esetén fellépő
kiegészítő forgatókönyveket.
A Jelenléti ív modulnál ettől a leírástól eltekintek a modul egyszerűsége miatt.
38
ábra 5: Jelenléti ív - Use Case diagram
4.1.3 Adatmodell(ER diagram):
ATTENDANCE_SETTINGS(id, course_id, group_id, intro, timecreated)
ATTENDANCES(id, attendance_id, user_id, present, pub_comment, priv_comment)
ATTENDANCE_SETTINGS: A jelenléti ívek leírását tartalmazó tábla
id(BIGINT): a jelenléti ív azonosítója
course_id(BIGINT): a kurzus azonosítója(A Moodle kurzus táblájára
hivatkozik)
group_id(BIGINT): a csoport azonosítója(A Moodle csoport táblájára
hivatkozik)
intro(TEXT): a jelenléti ív neve, leírása
timecreated(BIGINT): a jelenléti ív létrehozásának ideje
ATTENDANCES: A jelenléti ívekhez tartozó jelenléteket tartalmazó tábla
id(BIGINT): jelenlét azonosító
attendance_id(BIGINT): a jelenléti ív azonosítója
user_id: a tanuló azonosítója(A Moodle felhasználó táblájára hivatkozik)
present(TINYINT): jelenlét mező(0 az értéke, ha nincs jelen a tanuló, 1 az
értéke, ha jelen van a tanuló)
pub_comment(VARCHAR(255)): publikus megjegyzés
priv_comment(VARCHAR(255)): privát megjegyzés
39
ábra 6: Jelenléti ív - ER diagram
4.1.4 A működés leírása
A Jelentéli ív egy csonka modul. Nem a kurzusnézetben meghatározott tevékenység
modul pozíciókban található, hanem mind a tanárok, mind a diákok számára a kurzus
adminisztrációs menüjéből érhető el. Ezért a Moodle tevékenység modul
bemutatásában leírtaktól eltérően a lib.php függvényben nem találhatók meg a
modulokra jellemző példányra vonatkozó függvények(add_instance(),
update_instance(), stb...). Tehát az összes létrejött példány egy helyen az
adminisztrációs menü Jelenléti ívek menüjéből érhető el. Azért döntöttem emellett
a megoldás mellett, mivel a jelenléti ívek valamilyen szinten összetartoznak. Akkor
kapunk egy általános képet, ha egymás mellett látjuk őket. Ezért nincs értelme külön
„szétszórni” a kurzus nézet tevékenységi moduljai között.
Mivel több nézetet használók a nézetek számára létrehoztam egy view nevű mappát.
Az alábbi nézeteket készítettem el:
Nézetek a tanárok számára:
• list_attendances_view: A tanár saját csoportjához tartozó összes jelenléti ív
listája(keresés, törlés).
• summary_attendance_view: A tanár saját csoportjaihoz tartozó összes
jelenléti ív tartalma táblázatos formában.
• list_one_attendance_view: Egy konkrét jelenléti ív részletes
adatai(megtekintés, módosítás).
• new_attendance_settings_view: Új jelenléti ív létrehozása: Leírás, dátum
beállítása. Abban az esetben, ha a tanár több csoport tagja, akkor
kiválaszthatja, hogy melyik csoportjához hozza létre a jelenléti ívet(ezek
kerülnek az attendance_settings táblába).
• new_attendance_create_view: az új jelenléti ív
beállítása(new_attendance_settings_view oldal) után kerülünk át erre az
oldalra, ahol a csoporthoz tartozó tanulók listáját látjuk, akik közül
kiválaszthatjuk azokat, akik megjelentek az órán, és megjegyzéseket fűzhetünk
az egyes tanulókhoz. Mivel a megjegyzések írása másodlagos funkció,
gyakorlatban ritkábban kerül sor rá, ezért az áttekinthetőség kedvéért
kezdetben ezek a mezők nem láthatók, javascript felhasználásával egy speciális
40
linkre kattintva előhívhatók.
Nézet a diákok számára:
A diákok szintén az adminisztrációs menüből érik el a hozzájuk tartozó jelenléti
információkat. A megjelenített listában csak a saját magukra vonatkozó információkat
látják: jelenlétüket, és a nyilvános tanári megjegyzéseket. Ez a megjelenítés a
list_user_attendances_view nézetben van definiálva.
A nézetek megjelenítésére három vezérlőt használtam. Mivel a modul 3 fő részre
osztható, melyek elkülönülnek, különböző feladatot látnak el:
1. Új jelenléti ív létrehozása.
2. Jelenléti ívek listázása(tanulók és tanárok számára).
3. Összesített táblázatos forma létrehozása a tanárok számára.
4.1.5 A Felhasználó felület bemutatása
41
ábra 7: Jelenléti ív - tanári felület főoldala
42
ábra 8: Jelenléti ív - jelenlétek beállítása rész.
ábra 9: Jelenléti ív - egy csoport összesített jelenlétei
ábra 10: Jelenléti ív - részletező oldal
ábra 11: Jelenléti ív - tanulói visszajelzés
4.2 Csoportválasztás
4.2.1 Specifikáció
A Csoportválasztó tevékenység modul segítségével a tanárok lehetőséget adnak a
diákjaik számára, hogy csoportjukat megváltoztassák.
4.2.2 Részletes leírás
• A csoport váltás végbemehet automatikusan, tanári felügyelet nélkül,
valamint felügyelten, amikor is a tanárok jóváhagyása szükséges a csoport
váltáshoz.
• A csoportváltási tevékenység időhöz kötött: Meghatározott idejük van a
tanulóknak a csoportváltásra. Egy jó példa ennek bemutatására az, hogy a
szorgalmi időszak első hetében a tanulók felügyelet nélküli módon tudnak
csoportot váltani, a szorgalmi időszak második hetében tanári jóváhagyás
mellett van erre lehetőségük, a későbbiekben, pedig nincs mód a
csoportváltásra.
• Szabályozható, hogy melyik csoport tanulóinak engedélyezett a csoportváltás.
• Megvan a lehetősége a csoport váltás jelszóhoz kötésének. Csak azok a
tanulók változtathatják meg csoportjukat, akik ismerik a titkos kulcsot, amit
személyesen, vagy valamilyen egyéb privát csatornán kapnak.
• Beállítható, hogy az egyes csoportokba maximálisan hány tanuló
jelentkezhet. Ennek a lehetőségnek a felügyelet nélküli csoportmódosítások
esetén van jelentősége, az egyenletes csoporteloszlások létrejötte érdekében.
• Felügyelt mód mellett két tanár jóváhagyása szükséges a csoportváltásra.
Annak a tanárnak akinek a csoportját el akarja hagyni a tanuló, annak a kilépést
kell engedélyeznie, annak a tanárnak, akinek a csoportjába be akar lépni a
tanuló, annak a belépést kell engedélyeznie. (Amennyiben egy tanárnak két
csoportja van, és egy tanuló kérelme ezt a két csoportot érinti, abban az esetben
természetesen az az egy tanár képes elengedni és befogadni a tanulót.)
• Felügyelet nélküli mód esetén a tanuló rögtön láthatja a csoportváltás
eredményét, viszont felügyelt mód esetén csak egy értesítést kap arról, hogy
kérelme elbírálás alatt van. Amikor az elbírálás megtörténik a tanuló
43
értesítést kap annak kimeneteléről.
4.2.3 Aktivitás diagram
A tanár csoportválasztó tevékenység modult hoz létre. Megadja a szükséges adatokat,
majd miután a rendszer létrehozta a megfelelő adatbázis bejegyzéseket, és elkészítette
az új tevékenység példányt két dolog történhet: amennyiben a modul felügyelet
nélküli módba van állítva a tanár dolga befejeződött(valójában nem, mert lehetősége
van a modul módosítására és törlésére is, mint a felügyelt módban látható lesz, de az
ábra átláthatósága miatt ez nem lett jelölve). Ha felügyelt módban lett létrehozva a
modul, abban az esetben a tanár várakozik. Lehetősége van a modul módosítására,
törlésére és csoportválasztási kérelmek elbíráslására.
Eközben a diákok folyamatosan csoportot válthatnak, amiről visszajelzést
kapnak(azonnal, felügyelet nélküli mód esetén, vagy a bírálat megszületése után
felügyelt mód esetén(ez az időviszony nincs jelölve az ábrán)).
44
ábra 12: Csoportválasztás - aktivitási diagramja
4.2.4 Használati esetek
A használati esetekhez tartozó forgatókönyvek és kiegészítő forgatókönyvek:
Csoportváltás
Aktor: Tanuló
Célja: A jelenlegi csoportjának módosítása.
Főforgatókönyv:
0. (A tanuló bejelentkezik a Moodle rendszerbe, majd választ egyet a kurzusai
közül, és belép a kurzus oldalra, a virtuális tanterembe.)
1. A tanuló a kurzus oldalon megjelenő tevékenységi modulok közül kiválasztja a
Csoportváltó modult.
2. A tanuló megadja a csoportváltáshoz szükséges kódot(ha ez be lett állítva).
3. A tanuló a csoportokat listázó oldalon kikeresi a saját csoportját, majd
kezdeményezi a kilépést
4. A tanuló megerősíti a kijelentkezési szándékát.
5. A tanuló visszakerülve a csoportok listájához kiválasztja azt a csoportot,
aminek tagja kíván lenni.
45
ábra 13: Csoportválasztás Use Case-ei
6. A tanuló megerősíti a csoportba való belépés szándékát.
7. A Rendszer végrehajtja a csoportváltási kérelmet.
8. A tanuló ellenőrzi a csoportváltási kérelmének eredményességét.
Kiegészítő forgatókönyvek:
1. a.: Nincs Csoportváltó modul: a tevékenység megszakad.
b.: Nincs csoportváltási időszak: a tevékenység megszakad.
2. Hibás jelszó: a tevékenység megszakad.
3. a.: A tanuló nem tagja egyik csoportnak sem: a tevékenység megszakad.
b.: Nincsenek csoportok: a tevékenység megszakad.
4. A tanuló nem erősíti meg a kijelentkezési szándékát: visszakerül a csoportok
listájához.
6. A tanuló nem erősíti meg a csoportba való belépés szándékát: visszakerül a
csoportok listájához.
8. A tanuló csoportváltása nem történt meg, mivel a csoportváltást a tanároknak
személyesen kell elbírálniuk: A tanuló várni kényszerül a művelete
eredményére.
Csoportváltó modul létrehozása, beállítása
Aktor: Tanár
Célja: A tanulók számára csoportváltási lehetőség biztosítása.
Főforgatókönyv:
0. (A tanár bejelentkezik a Moodle rendszerbe, majd választ egyet a kurzusai
közül, és belép a kurzus oldalra, a virtuális tanterembe.)
1. A tanár a kurzus adminisztrációs menüjében átvált szerkesztő módba.
2. A tanár a kurzus törzsében, a számára megfelelő „helyen”(heti nézet: hét, téma
nézet: téma) kiválasztja a létrehozható tevékenység modulok közül a
csoportváltó tevékenységet.
3. A tanár elvégzi a szükséges beállításokat a modulon, majd elmenti.
4. A rendszer létrehozza az új tevékenység modul példányt.
5. A tanár kilép a szerkesztési módból.
46
Csoportváltó modul módosítása( és törlése)
A törlés művelet egyszerűsége miatt a módosítást leíró forgatókönyvben mutatom be
a törlés esetét is, zárójelek között találhatók az eltérések.
Aktor: Tanár
Célja: A tanulók számára csoportváltási lehetőség beállításainak módosítása(a modul
törlése).
Főforgatókönyv:
0. A tanár bejelentkezik a Moodle rendszerbe, majd választ egyet a kurzusai
közül, és belép a kurzus oldalra, a virtuális tanterembe.
1. A tanár a kurzus adminisztrációs menüjében átvált szerkesztő módba.
2. A tanár kikeresi a módosítandó(törlendő) csoportváltó modult.
3. A tanár a szerkesztő ikon megnyomásával elvégzi a szükséges módosításokat(a
tanár a törlő ikont választja ki).
4. A rendszer módosítja(törli) a tevékenység modul példányt.
5. A tanár kilép a szerkesztési módból.
Csoportváltást elbírál
Aktor: Tanár
Célja: A tanulók csoportváltásának elbírálása
Főforgatókönyv:
0. (A tanár bejelentkezik a Moodle rendszerbe, majd választ egyet a kurzusai
közül, és belép a kurzus oldalra, a virtuális tanterembe.)
1. A tanár a kurzus oldalon megjelenő tevékenységi modulok közül kiválasztja a
Csoportváltó modult.
2. A tanár az átjelentkezések listájából kiválaszt egyet elbírásra.
3. A tanár a kiválasztott átjelentkezést engedélyezi.
4. A rendszer módosítja a tanuló csoportját, és erről értesíti a tanulót.
Kiegészítő forgatókönyvek:
3. 1. A tanár a kiválasztott átjelentkezést megtagadja.
2. A rendszer értesíti a tanulót az átjelentkezése sikertelenségéről.
47
4.2.5 Adatmodell(ER diagram):
GROUPSELECT(id, course, name, intro, targetgrouping, signuptype, password,
maxmembers, timeavailable, timedue, timecreated, timemodified, checked)
GROUPSELECT_GROUPCHANGES(id, groupselect_id, user_id, signout, signup,
checkedout, checkedup)
GROUPSELECT: A csoportváltó modul adatait tartalmazó tábla
id(BIGINT(10)): a csoportváltó modul azonosítója
course(BIGINT(10)): a kurzus azonosítója(A Moodle kurzus táblájára
hivatkozik)
name(VARCHAR(255)): a tevékenységi modul neve
intro(TEXT): a tevékenységi modul leírása
targetgrouping(BIGINT(10)): a csoportváltó modul ennek a
csoporthalmaznak engedélyezett
signuptype(BIGINT(10)):
password(VARCHAR(255)): a csoportváltó modul használatához szükséges
jelszó
maxmembers(BIGINT(10)): a csoportok maximális létszáma
timeavailable(BIGINT(10)): a tevékenységi modul elérhetőségének kezdete
timedue(BIGINT(10)): a tevékenységi modul elérhetőségének vége
48
ábra 14: Csoportválasztás - ER diagram
timecreated(BIGINT(10)): a tevékenységi modul létrehozásának ideje
timemodified(BIGINT(10)): a tevékenységi modul utolsó módosításának ideje
checked(TINYINT(1)): a csoportváltás felügyelete
GROUPSELECT_GROUPCHANGES: a csoportváltásokat tartalmazó tábla
id(BIGINT(10)): egy csoportváltás azonosítója
groupselect_id(BIGINT(10)): a csoportváltó modul azonosítója
user_id(BIGINT(10)): a csoportváltást kezdeményező felhasználó azonosítója
signout(BIGINT(10)): annak a csoportnak az azonosítója, amelyikből ki akar
jelentkezni a tanuló
signup(BIGINT(10)): annak a csoportnak az azonosítója, amibe be akar lépni a
tanuló
checkedout(TINYINT(1)): a kilépés elbírálásának státusza
checkedup(TINYINT(1)): a belépés engedélyezésének státusza
checkedout és checkedup állapotai:
0: nincs elbírálva
1: engedélyezve
2: visszautasítva
4.2.6 Szerkezeti felépítés
A Csoportváltó modul egy teljes értékű Moodle modul. Szerkezete megegyezik a
2.5.5.1-es fejezetben bemutatott szerkezettel.
A megjelenítés a view.php fájl-ban található, ami felhasználja a csoport elhagyás,
csoportba való belépés valamint az elbocsátás-befogadás megerősítésére használt
nézeteket.
A view.php fájl egyben a vezérlő réteg is, mely az aktuális felhasználó szerepköre
alapján két részre van osztva: a tanulók és a tanárok oldalára. Az aktuális felhasználó
jogosultságának lekérése az alábbi kóddal történik:
Kurzus azonosító lekérése:
$id = required_param('id', PARAM_INT);
49
A kurzus objektum lekérése az kurzus azonosító alapján:
$cm = get_coursemodule_from_id('groupselect', $id);
A kontext lekérése:
$context = get_context_instance(CONTEXT_MODULE, $cm->id);
Az aktuális felhasználó megvizsgálás abból a szempontból, hogy van-e editingteacher
jogosultsága:
$is_teacher = has_capability(' moodle/legacy:editingteacher',
$context);
50
4.2.7 A Felhasználó felület bemutatása
51
ábra 16: Csoportválasztás - Új csoportválasztó tevékenység modul létrehozása
ábra 17: Csoportválasztás - Csoportváltási kérelmek elbírálása
ábra 15: Csoportválasztás - Csoport változtatás (tanulói felület)
4.3 Projektek támogatása
4.3.1 Specifikáció
A Projekt Moodle modul célja a tanulók csoportban végzett munkájának segítése.
A tanulók képesek nyomon követni projektjeik, az azokhoz tartozó feladataik
előrehaladását.
4.3.2 Részletes leírás
Projekt:
• Tetszőleges tanuló létrehozhat egy új projektet, melynek ő lesz a vezetője. Ezt
a szerepkört a projekt vezetők átruházhatják.
• A projektek hierarchiába szervezhetők.
• A projektekhez a kurzus bármely hallgatója felvehető projekttagnak.
• A projekt többféle információt nyilvántart: a projekt leírását, kezdetét, végét,
állapotát, tervezett idejét, eltöltött időt, előrehaladást.
• A projekt előrehaladását GANTT-diagram szemlélteti.
Feladat:
• Projekten belül a projekttagok feladatot jelölhetnek ki egymásnak.
• A feladat nyilvántartja a feladat kijelölőjét, a feladathoz hozzárendelt
csoporttagot, a projektet, leírását, kezdetét, határidejét, állapotát, tervezett
idejét, eltöltött időt, előrehaladást.
• A projekt feladatai közül kiválaszthatók, hogy mely feladatok befejezése
szükséges az aktuális feladat elkezdéséhez(elő-feladatok).
• A feladatot elvégző személy részfeladat bejegyzéseket hozhat létre.(Dátum,
eltöltött idő, leírás)
• A feladatokhoz fájlok tölthetők fel.
Értesítések:
A tanulók értesítéseket kapnak az alábbi eseményekről:
• új projekt tagjai lettek
52
• új feladatot kaptak
• módosult egy projektjük
• módosult egy hozzájuk rendelt feladat
• van lejáró feladatuk
4.3.3 Szerkezeti felépítés
A Projekt modul a tevékenységi moduloknál egy nagyobb egységet képvisel.
A Moodle kurzus oldalán a kurzus menüből érhető el, majd a belépés után egy saját
projektek menü is ki lett alakítva. A menü a 2.5.5.2-es
blokkokkal foglalkozó fejezetben leírtaknak
megfelelően lett létrehozva.
Projektek és feladatok:
A modul létrehozásánál szintén a Moodle MVC
lehetőségeit használtam ki. A nézetek egy külön
könyvtárba kerültek, ahogyan a vezérlők is. A
projektek, és az azokhoz tartozó feladatokhoz két-két nézet és vezérlő lett kialakítva.
A táblázatos lista nézet, és a részletes űrlapos forma, valamint az ezekhez tartozó
vezérlők.
A menü egyes elemeit kiválasztva a vezérlők különböző paraméterekkel lesznek
meghívva, majd ezek alapján a lib.php „model” rétegtől lekérik az adatokat, amiket a
példányosított nézeteknek adnak át. A táblázatos lista nézet esetén megjelenő fülek,
lehetőséget adnak a projektek, vagy feladatok állapot szerinti szűrésére.
Új projekt, feladat létrehozásánál ugyanaz a részletes űrlapos forma tárul elénk, azzal
az eltéréssel, hogy már létező projekt, feladat adatait is megkapja a nézet.
Természetesen a modul foglalkozik a jogosultságokkal is.
• A projektet a projekt alapító, a feladatot a feladat alapító kezelheti.
• A projekt tagjainak olvasási joga van a saját projektjei feladataihoz.
• A feladat részmunkái közé csak a feladat megoldására kijelölt projekttag írhat
új bejegyzést, tölthet fel új fájlt.
53
GANTT diagram
GANTT-diagram megjelenítéséhez a BURAK_Gantt[30] nyílt forrású PHP osztályt
használtam fel, ami a megfelelő adatok megadásával a PHP GD könyvtárának
segítségével jpg formátumban jeleníti meg az adatok által reprezentált GANTT
diagramot.
Az osztály használta:
require_once "BURAK_Gantt.class.php";
Új példány létrehozása a BURAK_Gantt osztályból:
$g = new BURAK_Gantt();
A rács típusának megadása:
$g->setGrid(1);
A csoportok, előrehaladás színének beállítása:
$g->setColor("group","000000");
$g->setColor("progress","660000");
Csoportok létrehozása:
//$g->addGroup("G1","Group 1");
A feladatok létrehozása(ezeket az adatokat a projekt modul feladatai is
nyilvántartják):
$g->addTask("A","2006-12-02","2006-12-05",100,"Task A");
$g->addTask("B","2006-12-06","2006-12-08",100,"Task B");
$g->addTask("C","2006-12-09","2006-12-12",100,"Task C");
A feladatok közötti kapcsolatok beállítása(a 3. paraméter a kapcsolat típusa)
$g->addRelation("A","B","ES");
$g->addRelation("B","C","ES");
A diagram megjelenítése:
$g->outputGantt();
Értesítések, fájlok
A projekttagok értesítései automatikusan bekerülnek a Moodle naptárába, valamint a
fájlok feltöltése, a feltöltött fájlok kezelése szintén a Moodle szolgáltatásait igénybe
véve történik.
54
4.3.4 Aktivitás diagram
55
ábra 18: Projekt - projektben végzet munka - aktivitási diagram
Az első aktivitás diagram azt a folyamatot szemlélteti, amikor egy tanuló feladatot
szeretne megoldani. Ezt három úton teheti meg: Új projekt létrehozásával(amihez
feladatokat hoz majd létre), meglévő projekthez új feladat felvételével, valamint a
harmadik út, amikor már létezik hozzá rendelt feladat.
A második diagram azt a folyamatot mutatja be, amikor az egyik projekttag egy új
feladatot hoz létre, és azt kiadja a társának megoldásra. A feladathoz hozzárendelt
diák részfeladatokat hoz létre aminek segítségével a feladat megoldásának menete,
ideje könnyen nyomon követhető(beállíthatja a feladat előrehaladását is). Ha a
feladathoz rendelt tanuló befejezte a feladatát(az előrehaladás 100%) a feladatot
kijelölő erről értesítést kap, majd lezárja a feladatot.
56
ábra 19: Projekt - feladat kijelölése - aktivitási diagram
4.3.5 Használati esetek
57
ábra 20: Projekt - Use Case diagram
4.3.6 Adatmodell(ER diagram):
PROJECT_MESSAGES(id,userid,date,subject,text,opened)PROJECT_PROJECT(id,name,startingdate,endingdate,parentproject,progress,projectmanager,plannedtime,timespent,state,notes)PROJECT_PROJECT_USER_REL(id,projectid,userid)PROJECT_TASK(id,name,projectid,workerid,managerid,progress,state,startingdate,plannedtime,timespent,deadline,notes,importance)PROJECT_TASK_TASK_REL(id,task,prev_task,code)PROJECT_TASK_WORK(id,task,date,timespent,comment)
project_messages: A projekt modul felhasználóknak szóló értesítéseit tartalmazó tábla: új feladatok, módosult feladatok, lejárt feladatok.project_project: A projekt adatokat tartalmazó tábla.project_project_user_rel: A projektek és a Moodle felhasználók összekötése.project_task: A projekt feladatokat tartalmazó tábla.project_task_task_rel: A feladatok időbeli viszonyát leíró tábla(feladat és előfeladatai).project_task_work: A feladathoz tartozó részfeladatokat összegyűjtő tábla.
58
ábra 21: Projekt - ER diagram
4.3.7 A Felhasználó felület bemutatása
59
ábra 22: Projekt - értesítések
ábra 23: Projekt - új projekt létrehozása
ábra 24: Projekt - projektek listája
ábra 25: Projekt - Gantt diagram
ábra 26: Projekt - részfeladat létrehozása
5 C porta és a Moodle integrálása
5.1 Cporta feladatbeadó rendszer
A Cporta egy gyakorló rendszer, pillanatnyilag a szoftver laboratórium 1-2. tárgyak
oktatását egészíti ki.
Jelenleg a következő funkciókat képes ellátni:
• Előkészített feladatok megoldásaként C és C++ nyelvű programok beküldése,
fordítása és automatikus értékelése.
• Egyéni nagy-házi feladatok feltöltése (forrás, tesztadatok, dokumentáció).
• Tesztkérdések gyakorlása.
• Jelenléti ív, eredmények nyilvántartása.
Felmerült a tanszéken kifejlesztett CPorta és a Moodle integrálásának igénye.
Megjegyzés: A továbbiakban Cporta néven csak a Cporta szerver oldali része, a
feladatok fordításával, automatikus kiértékelésével foglalkozó rész említve.
Az integrálás során a fő cél az volt, hogy az összes olyan funkciót, amit a Moodle
képes ellátni, azt tegye meg ő, ezáltal nem kell feleslegesen bizonyos funkciókat újra
lekódolni.
A Cporta funkcióiról, és az azokat helyettesítő Moodle funkciókról egy külön leírás
készült, amely megtalálható a 2. függelékben.
Az összehasonlítás eredményeként azt találtam, hogy a Cporta adminisztrációs és
felhasználói funkciója magán a Cpp feladatok kezelésén kívül kiváltható a Moodle
segítségével, ezért a lehető legegyszerűbb és „legszebb” megoldásnak az tűnt, hogy
egy új feladattípust hozok létre, amely a Cpp feladatokat fogja kezelni.
60
5.2 Cporta feladatbeadó rendszer és a Moodle integrálása
Ahogy az az előző fejezetben foglaltakból következik, az integrálást a Cporta
legkisebb módosítása nélkül kellett elvégezni, mivel a rendszert a diákok már
használják, tesztelik.
Ezért:
• Az integráció az adatbázis szinten történt meg.
• A Moodle-ben a Cpp kérdéstípus adatbázis felépítése mind a Moodle, mind a
Cporta igényeit ki kell hogy elégítse.
• Elkészült egy szimulációs program PHP nyelven, amivel a fordító működését
lehet manuálisan szimulálni.
5.2.1 Adatbázis integrációja
A Cporta oldalán lévő fordító úgy lett megírva, hogy egy „új feladat forrás” felvétele
esetén nem kell minden egyes lépésben az új adatbázishoz megfelelő kódot átírni,
megduplázni, csak egy helyen kell felvenni új adatbázis kapcsolatot. Az egyetlen
igény az adatbázis struktúra azonossága.
Ennek érdekében View-k lettek létrehozva, amik leképzik a Moodle tábláit a Cporta
által értelmezhető formába.
A Moodle igénye csak a mdl_ prefix, de a többi kérdéstípushoz való hasonlóság miatt
további prefixek kerültek az adatbázis táblák elé: mdl_question_cpp_...
A létrehozott adatbázis táblák:
• mdl_question_cpp – A feladat típus extra beállításai
• mdl_question_cpp_files – A feladat során felhasználható fájlok(lehetnek
láthatóak a tanulónak, vagy csak a fordító számára láthatóak)
• mdl_question_cpp_result – A beadott megoldás eredménye
• mdl_question_cpp_test_case – A feladathoz tartozó tesztesetek
• mdl_question_cpp_test_result – A feladathoz tartozó tesztesetek eredményei
• mdl_question_cpp_solution – Beadott megoldás adatai
• mdl_question_cpp_solution_files – Beadott megoldáshoz tartozó fájlok
61
62
ábra 27: Cpp feladat típus - ER diagram
ábra 28: Cpp feladat típus - Use Case diagram
5.2.2 A Moodle és a Cporta együttműködése
A Moodle és a Cporta adatbázis szinten kommunikál egymással. Ennek az
együttműködésnek a folyamatán megyek végig a következő pontokban:
• A Tanár bejelentkezik a Moodle rendszerbe, kiválaszt egy Kurzust.
• Az Adminisztrátori menüben kiválasztja a Kérdések menüpontot.
• A Kérdés típusok listájából kikeresi a Cpp típusú kérdést.
• A megjelenő űrlapon kitölti a feladathoz tartozó alapinformációkat(név,
kategória,...)
• Ezek után a Cpp specifikus részeket tölti ki
◦ információk a fordítónak
◦ prescript
◦ felhasználható feladat fájlok
◦ tesztesetek
• A mentés gomb hatására az alábbi események történnek:
◦ Az alapinformációk a mdl_question (Moodle alap) táblába mentődnek
le.
◦ A Cpp specifikus információk a mdl_question_cpp (Cpp) táblába
tárolódnak.
◦ A feladat fájlok a mdl_question_cpp_files(Cpp) táblába mentődnek le.
◦ A tesztesetek a mdl_question_cpp_test_case(Cpp) táblába tárolódnak.
A mdl_question tábla felhasználása miatt a Cpp kérdés egységesen
kezelődik a Moodle többi kérdéseivel.
• A Tanár egy Kvízt hoz létre, amihez hozzárendeli a Cpp kérdést.
Itt a Kérdés(mdl_question) és a Kvíz(mdl_quiz) táblák hivatkoznak
egymásra, tehát teljes mértékben a Moodle felügyelete alatt történik
minden.
A következő események kiváltója Tanuló, aki bejelentkezik a Moodle rendszerbe és
feladatot ad be.
63
• A Tanuló bejelentkezik a Moodle rendszerbe és kiválaszt egy Kurzust.
• A főoldalon információt kap a beadható feladatokról(Kvízek).
• Kiválaszt egy Kvízt, és megoldást ad be rá.
◦ A mdl_question táblából a kérdéshez tartozó alapinformációk kerülnek
kiírása.
◦ A mdl_question_files-ból a -nem rejtett- felhasználható fájlokat listázza
a rendszer.
◦ A Prescript JavaScript kód a mdl_question_cpp táblából végrehajtódik
és a kérdés szövegében lévő [PRESCRIPT] részt lecseréli a szkript
eredményével(mondat változó) A prescript résszel a tanulókhoz egyedi
kérdések hozhatók létre.
◦ A Tanuló beadja a megoldását(több fájlt is beadhat).
▪ A mdl_question_solution táblában létrejön egy új sor.
Ez a tábla kapcsolja össze a Feladatot a Kvízt és a Tanulót. Tárolja
hogy hanyadik próbálkozás(a Moodle is tárolja).
▪ A beadott megoldások a mdl_question_files táblában tárolódnak el.
A Cporta ezek után „aktiválódik”:
• A Cporta a solution View-on keresztül a mdl_question_solution táblát
figyeli, és ha változást talál akkor lekéri az alábbi információkat, adatbázis
tábla sorokat a megfelelő View-kon keresztül:
▪ mdl_question_cpp (beállítások)
▪ mdl_question_cpp_files (felhasználható fájlok)
▪ mdl_question_solution
▪ mdl_question_solution_files(beadott megoldások)
▪ mdl_user a felhasználó privát és publikus kulcsai
• A feladat kiértékelése után a mdl_question_result táblába szúr be egy új
sort, ahol a passed mező 1 értéke jelzi, hogy a feladat sikeres volt-e.
• A mdl_question_test_result táblába a tesztesetek futási eredményeit teszi
bele.
64
A Cporta befejezte a futását, most következik a Moodle-el való szinkronizálás:
• A mdl_question_result táblába való beszúrás hatására egy Trigger fut le
az adatbázisban, ami átadja az eredményről szóló információt a Moodle két
táblájának:
◦ mdl_question_attempts: ez tárolja a próbálkozások információit.
◦ mdl_quesion_grades: ebben a táblában van összerendelve a tanuló a kvíz
és az eredmény.
A tanuló feladata kiértékelődött. A Kvíz ismételt kiválasztásával az előző
próbálkozások eredményeit mutató oldalra jut a felhasználó, ahol a Próbálkozások
részleteinél megnézheti:
• A beadott feladat eredményét(sikerült/nem sikerült).
• A tesztesetek futásának eredményét.
• A beadott kódot.
5.2.3 Új kérdéstípus létrehozása Moodle rendszerben
1. Amennyiben a kérdéstípus, amit létre akarunk hozni használ saját adatbázis
táblákat, akkor a db/install.xml fájlba kell létrehozni az XMLDB-ről szóló
fejezetben tárgyalt módon az adatbázis objektumokat.
2. Az edit_cpp_form.php PHP fájlban kell létrehozni a kérdés beállítására
használt formot. A nézet létrehozása megegyezik a 2.5.4.2 fejezetben vázolt
módszerrel, azzal az eltéréssel, hogy a létrehozandó osztálynak a
question_edit_sajátkérdés_form nevet kell adni és a question_edit_form
osztályból kell származtatni. A formot a definition_inner(&$mform)
metóduson belül kell létrehozni az ismertetett módon.
3. A questiontype.php fájlban létrehozott cpp_qtype nevű osztály a
default_questiontype osztály metódusait felüldefiniálva az alábbi funkciókat
látja el:
• A kérdés létrehozásánál, módosításánál törlésénél keletkező, módosuló
adatok lementése(törlése) az adatbázisba. Ezeket a feladatokat a
save_question_options($question) és a delete_question($questionid)
65
metódusok látják el.
• print_question_formulation_and_controls(&$question, &$state,
$cmoptions, $options)): A kérdés megjelenítése a tanulók számára. A
konkrét megjelenítést nem ebben a metódusban valósul meg, hanem
display.html fájlban. Itt csak a feladat megjelenítéséhez szükséges
adatok összegyűjtése történik(kérdés neve, szövege, stb), amit a
display.html fájl felhasznál.
• Léteznek osztálymetódusok, amivel a feladat értékelését,
importálását, exportálását, lementését, visszaállítását végezhetjük el.
4. A kérdés megjelenítése a diákok számára a display.html fájlba kerül. Ezt a
fájlt a cpp_qtype osztály print_question_formulation_and_controls nevű
metódusa tölti be és adja át számára az adatbázisból előtte lekért
kérdésadatokat.
5. A kérdés típus létrehozása során a nyelvi fájlokat létrehozva, felhasználva
biztosíthatjuk a kérdéstípus többnyelvűségét. A nyelvi fájlt a lang mappába
kerül.
66
5.3 Feladat létrehozó, beadó felületek
67
ábra 29: Cpp feladat típus - új feladat létrehozása
ábra 30: Cpp feladat típus - új feladat létrehozása 2
68
ábra 31: Cpp feladat típus - megoldás beadása
ábra 32: Cpp feladat típus - Prescript rész létrehozása
ábra 33: Cpp feladat típus - eredmények megtekintése
ábra 34: Cpp feladat típus - eredmények megtekintése
6 Összefoglalás
Diplomamunkám során bemutattam a Moodle LMS keretrendszeren keresztül az
E-learning rendszerekben rejlő lehetőségeket. Ezek után nem kétséges, hogy egy
Moodle portál kialakítása mind a tanárok, mind a tanulók számára rengeteg előnnyel
jár.
A Moodle számos funkcióval rendelkezik, amik megkönnyítik a nagy hallgatói
csoportok oktatásának segítését, ennek ellenére mégsem tud kielégíteni minden
egyedi igényt. A Moodle moduláris felépítésének köszönhetően lehetőséget ad a
fejlesztők számára, hogy új modulokkal egészítsék ki az alapszolgáltatások körét.
A diplomamunkám során megvizsgáltam a Moodle plugin rendszerét, amivel nem
csak a saját munkámat, hanem azon fejlesztők munkáját is meg szerettem volna
könnyíteni, akik most ismerkednek a Moodle rendszerrel.
A Jelenléti ív, Csoportválasztás és a Projekt modulok fejlesztésével a Moodle-t
azokkal az egyedi igényekkel egészítettem ki, amik alkalmassá teszik a rendszer
használatát a Szoftver Laboratórium tantárgyak oktatására.
A Cporta és a Moodle integrálásával szintén egy fontos szolgáltatással bővítettem ki a
Moodle-t.
A munkám továbbfejlesztésének első lépése egy teljes köré tesztelés végrehajtása
volna. Mivel a Cportát ebben a félévben a tanulók már használják egy szimulációs
program segítségével történtek a fejlesztés során a tesztek. Ezen felül a modulok
továbbfejlesztése bárki számára adott. A diplomamunkámban vázolt eljárások ebben
sok segítséget nyújtanak. A Moodle szerkezeti felépítésének egyik célkitűzése a
könnyen tanulható és módosítható jelző volt. A munkám során ezt teljes mértékben
tapasztaltam. A rendszer megismerése után a fejlesztés nagymértékben
leegyszerűsödött.
Szeretném köszönetemet kifejezni mindazoknak, akik segítettek, hogy ez a dolgozat
szakmailag minél színvonalasabb lehessen, és emberileg támogattak.
69
Irodalomjegyzék
1: Központi Statisztikai Hivatal Letöltve[2009.11]
http://portal.ksh.hu/pls/ksh/docs/hun/xftp/idoszaki/ikt/ikt08.pdf
4: Wikipédia - E-learning Letöltve[2009.11]
http://en.wikipedia.org/wiki/E-learning
5: Az integratív E-learning felé Letöltve[2009.11]
http://www.crescendo.hu/konyvek/integrativ e learning ‐ ‐
2: Virtuális enciklopédia - E-learning Letöltve[2009.11]
http://enc.phil-inst.hu/1enciklopedia/fogalmi/ped/elern.htm
3: Dr. Komenczi Bertalan, Az E-learning lehetséges szerepe a magyarországi
felnőttképzésben, 2006
6: Wikipédia - LMS Letöltve[2009.11]
http://en.wikipedia.org/wiki/Learning_management_system
7: E-learning szabványok Letöltve[2009.11]
http://www.eduport.hu/cikk.php?id=9267
8: Az eLearning magyarországi helyzete Letöltve[2009.11]
http://www.hrportal.hu/hr/az-elearning-magyarorszagi-helyzete-20080918.html
9: , Tankönyv helyett számítógép2008
10: Tanulni, tanulni, tanulni! Letöltve[2009.11]
http://www.carnation.hu/hirl_cikk.php?id=27&cid=1
11: Moodle Letöltve[2009.11]
http://moodle.org/
17: Moodle – a legnépszerűbb tanulási platform Letöltve[2009.11]
http://www.oki.hu/oldal.php?tipus=cikk&kod=SDT-keret-4_Moodle
70
18: Open-Source Learning Management with Moodle Letöltve[2009.11]
http://www.linuxjournal.com/article/7478
12: Wikipédia - Moodle Letöltve[2009.11]
http://en.wikipedia.org/wiki/Moodle
13: Moodle statisztika Letöltve[2009.11]
http://moodle.org/stats/
14: Miért a Moodle-t válasszuk Letöltve[2009.11]
http://docs.moodle.org/en/Case_for_Moodle
15: Moodle szolgáltatások Letöltve[2009.11]
http://docs.moodle.org/en/Features
16: Korszerű webes tech. felhasználása a Moodle LMS rendszerben Letöltve[2009.11]
https://nws.niif.hu/ncd2005/docs/ehu/061.pdf
19: Moodle modulok Letöltve[2009.11]
http://moodle.org/mod/data/view.php?id=6009
20: Moodle design goals Letöltve[2009.11]
http://docs.moodle.org/en/Moodle_design_goals
21: Moodle adatbázis séma Letöltve[2009.11]
http://docs.moodle.org/en/Development:Database_schema_introduction
22: Moodle XMLDB Letöltve[2009.11]
http://docs.moodle.org/en/Development:XMLDB_defining_an_XML_structure
23: HTML_QuickForm Letöltve[2009.11]
http://pear.php.net/package/HTML_QuickForm/
24: Formok létrehozása Moodle-ban Letöltve[2009.11]
http://docs.moodle.org/en/Development:lib/formslib.php_Form_Definition
25: Moodle tevékenységi modulok Letöltve[2009.11]
http://docs.moodle.org/en/Development:Modules
71
26: Moodle blokkok Letöltve[2009.11]
http://docs.moodle.org/en/Development:Blocks
27: Moodle szűrők Letöltve[2009.11]
http://docs.moodle.org/en/Development:Filters
28: Moodle kurzus formátum Letöltve[2009.11]
http://docs.moodle.org/en/Course_formats
29: Moodle hitelesítés Letöltve[2009.11]
http://docs.moodle.org/en/Development:Authentication_plugins
30: BURAK_Gantt Letöltve[2009.11]
http://sourceforge.net/projects/burakgantt/
A munkám során felhasznált egyéb szakirodalom:
• Gajdos Sándor: Adatbázisok Műegyetemi kiadó, 2006
• Jeffrey D. Ullman-Jennifer Widom: Adatbázisrendszerek, Panem kiadó, 1998
• George Schlossnagle: PHP fejlesztés felsőfokon, Kiskapu kiadó, 2004
• Matt Zandstra: Tanuljuk meg a PHP5 használatát 24 óra alatt, Kiskapu kiadó, 2004
72
Ábrajegyzék
ábra 1: E-learning fogalom.........................................................................................................3
ábra 2: A moodle.org oldalon regisztrált Moodle keretrendszerek száma havi bontásban.......12
ábra 3: Moodle adatbázis séma.................................................................................................17
ábra 4: Bekapcsolódás a Moodle keretrendszerbe....................................................................20
ábra 5: Jelenléti ív - Use Case diagram.....................................................................................38
ábra 6: Jelenléti ív - ER diagram...............................................................................................39
ábra 7: Jelenléti ív - tanári felület főoldala...............................................................................41
ábra 8: Jelenléti ív - jelenlétek beállítása rész...........................................................................42
ábra 9: Jelenléti ív - egy csoport összesített jelenlétei..............................................................42
ábra 10: Jelenléti ív - részletező oldal.......................................................................................42
ábra 11: Jelenléti ív - tanulói visszajelzés.................................................................................42
ábra 12: Csoportválasztás - aktivitási diagramja.......................................................................44
ábra 13: Csoportválasztás Use Case-ei....................................................................................45
ábra 14: Csoportválasztás - ER diagram...................................................................................48
ábra 15: Csoportválasztás - Csoport változtatás (tanulói felület)..............................................51
ábra 16: Csoportválasztás - Új csoportválasztó tevékenység modul létrehozása.....................51
ábra 17: Csoportválasztás - Csoportváltási kérelmek elbírálása ..............................................51
ábra 18: Projekt - projektben végzet munka - aktivitási diagram.............................................55
ábra 19: Projekt - feladat kijelölése - aktivitási diagram...........................................................56
ábra 20: Projekt - Use Case diagram.........................................................................................57
ábra 21: Projekt - ER diagram...................................................................................................58
ábra 22: Projekt - értesítések.....................................................................................................59
ábra 23: Projekt - új projekt létrehozása...................................................................................59
ábra 24: Projekt - projektek listája............................................................................................59
ábra 25: Projekt - Gantt diagram...............................................................................................59
ábra 26: Projekt - részfeladat létrehozása..................................................................................59
ábra 27: Cpp feladat típus - ER diagram...................................................................................62
ábra 28: Cpp feladat típus - Use Case diagram.........................................................................62
ábra 29: Cpp feladat típus - új feladat létrehozása....................................................................67
ábra 30: Cpp feladat típus - új feladat létrehozása 2.................................................................67
ábra 31: Cpp feladat típus - megoldás beadása.........................................................................68
ábra 32: Cpp feladat típus - Prescript rész létrehozása.............................................................68
ábra 33: Cpp feladat típus - eredmények megtekintése............................................................68
ábra 34: Cpp feladat típus - eredmények megtekintése............................................................68
73
Függelék
1. A Moodle adatbázis táblái csoportokba rendezve
Csoport neve Hozzá tartozó táblák
Configuration config config_plugins
Users and their profiles user user_info_category user_info_field user_info_data user_lastaccess this is separated from the user table for performance reasons user_preferences user_private_key
The roles and capabilities system
role capabilites context role_allow_assign role_allow_override role_allow_switch role_assignments role_capabilities role_context_levels role_names role_sortorder
Courses and their organisation into categories
course course_categories course_display course_meta course_request
Activities and their arrangement within courses
modules course_allowed_modules course_modules course_sections
Groups and groupings groups groups_members groupings groupings_groups
he logging system log
74
log_display
Blocks system block block_instance block_pinned
Events event_*
Backup and restore backup_config backup_courses backup_files backup_ids backup_log
Statistics stats_daily stats_monthly stats_user_daily stats_user_monthly stats_user_weekly stats_weekly
Tags tag_*
Gradebook grade_*
Question bank and question engine
question question_answers question_attempts question_categories question_sessions question_states
Messaging system message_*
Moodle Network mnet_*
Caching cache_*
Miscellaneous scale scale_history sessions2 timezone post
Activity modules Assignment Chat Choice Data Feedback
75
Forum Glossary Hotpot Label Lesson Quiz Resource SCORM Survey Wiki
Authentication plugins
Blocks
Enrolment plugins
2. Az egyes Cporta funkciók Moodle megfelelői
A következőekben leírt információ a Moodle funkcióiról nem teljes, csupán a Cporta funkcióinak a megfelelői lettek megkeresve, leírva.
Szerepkörök:
Cporta Moodle
A Cportában 3 szinten különböztetjük meg a felhasználókat:
1. Super Admin2. Admin3. User
Super Adminból csak 1 lehet. Ő hozhat létre Adminokat, és
jogosultsággal rendelkezik minden felett.
A Super Admin a Cporta üzemeltetője, rendszergazdája.
Az Admin-ok a gyakorlat vezetők, akik a feladatokkal, felhasználókkal kapcsolatos kérdésekben járhatnak el. (Részletes leírás az Admin
A Moodle rendszer 6 szinten különbözteti meg a felhasználókat.
A 6 fajta szerepkörön kívül létrehozhatunk újakat, valamint a már meglévőeket is megváltoztathatjuk, személyre szabhatjuk.
1. Administrator2. Course creator3. Teacher4. Non-editing teacher5. Student6. Guest
A személyre szabhatóságnak köszönhetően ezeket a szerepköröket teljes mértékben
76
rendszer funkció pontnál található.)
A User-ek a tanulók, akik feladatot adhatnak le a Cporta segítségével.
megfeleltethetjük a Cporta szerepköreinek. Administrator: A moodle rendszerben
több adminisztrátor lehet. Kezdetben 1 db van, akit a rendszer telepítésénél hozunk létre, majd Ő létrehozhat új felhasználókat valamennyi szerepkörben, illetve a már regisztrált(alapértelmezett: Student) felhasználóknak adhat új szerepkört.
Teacher: A teacher szerepkört kisebb adminisztrátori felületen elvégzett módosítások után teljes mértékben megfeleltethetjük a Cporta Admin szerepkörével.
Student: A Cporta User szerepköre.
Admin rendszer funkcióinak leírása
Miután megnéztük milyen szerepkörök szükségesek a Cporta Moodle-be történő beépítéséhez, vizsgáljuk meg azt, hogy az egyes szerepkörökben lévő felhasználók milyen feladatokat kell hogy ellássanak. A lejjebb leírt funkciók a Cporta adminisztrátor menüjének pontjai.
Feladatok: A Cporta admin-jai itt
hozhatnak létre új feladatokat. Az adminok látják egymás
feladatait, de szerkeszteni csak a saját feladataikat tudják.
A feladatokat több szinten hozhatjuk létre. Globális szint: minden
kurzusban látható, és felhasználható lesz a feladat.
Kurzus szinten: csak abban a kurzusban lesznek láthatók a feladatok, amiben létrehozták.
A Cportában az egyes adminok nem szerkeszthették egymás kérdéseit, itt a moodle-ben ezt a Teacher szerepkör módosításával tudjuk elérni.(Az alapértelmezett szerint bármit tehetnek egymás kérdéseivel)
HallgatókCporta Moodle
A Super Admin hozhat létre új hallgatót
A Super Admin módosíthatja a
A hallgatók regisztrálás során kerülhetnek a Moodle rendszerbe.
Az Adminisztrátor létrehozhat új
77
Hallgató beállításait Az Admin megtekintheti a
Hallgató adatatit Az Admin módosíthatja a
Hallgató jelszavát Ebben a menüpontban
tekintheti meg az Admin a Hallgató feltöltött megoldásait.
felhasználókat egyenként, illetve egy egyszerű mintát használó fájl létrehozásával lehetséges a tömeges felhasználó felvétel.
Az Teacher-ek szintén hozhatnak létre Student-eket, valamint módosíthatják azok adatait.(a szerepkör módosításával elvehetjük a létrehozás jogát, ezzel a Cportának megfelelő viselkedést kapunk)
CsoportokCporta Moodle
A Super Admin joga az új csoportok felvétele, azokban felhasználók besorolása, csoportok módosítása
A Moodle rendszerben mind az Adminisztrátor, mind a Teacher-nek joga van csoportok létrehozására, kezelésére.
Egy csoporthoz egy Teacher egyértelműen hozzárendelhető(akár több csoporthoz is)
A Teacher csoportkezelési joga a szerepkör beállításainál elvehető.
Csoportkezelés: Nincs csoport Van csoport, és azok teljesen
láthatatlanok egymásnak Van csoport, és a csoportok látják
egymást. Ez a csoportkezelés globálisan is
beállítható a csoportokra, illetve arra is van lehetőség, hogy egy-egy új eseményre(feladat,felmérés, szavazás, stb.. ) állítsuk be.
A csoportokból újabb csoportokat hozhatunk létre, melyeket egységesen kezelhetünk.
Feladat összerendelésCporta Moodle
Egy adott feladathoz rendelhet az admin egyéni hallgatókat.
Egy adott feladathoz rendelhet az admin csoportokat.
Az admin csak azokat a hallgatókat távolíthatja el a
A Moodle rendszerben is elvégezhetjük hasonlóan a feladat összerendelést.
A Teacher szerepkörben beállíthatók, hogy egy másik Teacher által létrehozott feladatot csak megnézhet,
78
feladathoz rendeltek közül, akiket ő adott hozzá.
szerkeszthet, illetve kiadhat-e hallgatóknak.
A feladat kiadása attól is függ, hogy a feladat milyen szinten lett létrehozva(globális, kurzus,...)
A Teacher feladatot rendelhet egyéni Hallgatókhoz.
A Teacher feladatot rendelhet Csoportokhoz.
AdminokCporta Moodle
Az Adminok menüpontot csak a Super Admin érheti el.
Itt lehetséges az adminok karbantartása, létrehozása, módosítása, törlése.
A moodle rendszerben az Adminisztrátor szerepkörrel rendelkező személy végezheti el ezeket és egyéb funkciókat.
Statisztika
Cporta Moodle
Az egyes csoportok felhasználói, bizonyos feladatot milyen sikerrel oldottak meg.
A moodle rendszerben is lehetősége van a Teacher-nek különféle statisztikát nyerni csoportokról, Hallgatókról, és mindenféle egyéb dologról.
79