1 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 ...
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
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).
ábra 1: E-learning fogalom 3
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 elearning 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
ábra 2: A moodle.org oldalon regisztrált Moodle keretrendszerek száma havi bontásban
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
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.
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
http://docs.moodle.org/hu/Kezdőlap
15
elérhetők
az
alábbi
oldalon:
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:
ábra 3: Moodle adatbázis séma
17
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/>
<STATEMENTS/>
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">
19
2.5.3 Mi történik, a required_once('config.php') hatására
ábra 4: Bekapcsolódás a Moodle keretrendszerbe config.php: •
$CFG globális változó beállítása: adatbázis elérés, wwwroot, dirroot, dataroot beállítá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
◦ 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: A lib.php-ban
project_task_get_task_by_id(task_id) 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)
ú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: 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);
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
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.
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 =
$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
:
config->text); ?>
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.
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
auth_plugin_sajatpluginnev auth_plugin_base
nevű
egy
auth.php
nevű
fájlba
osztályt
megírni,
amely
osztály
kell az
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ása Ahogy 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:
A
•
Részletes nézet
•
Összesített nézet táblázatos formában 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ő
ábra 5: Jelenléti ív - Use Case diagram
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.
ábra 6: Jelenléti ív - ER diagram 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
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.
á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 42
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
ábra 12: Csoportválasztás - aktivitási diagramja 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
4.2.4 Használati esetek
ábra 13: Csoportválasztás Use Case-ei 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
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.
ábra 14: Csoportválasztás - ER diagram 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
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
ábra 15: Csoportválasztás - Csoport változtatás (tanulói felület)
ábra 16: Csoportválasztás - Új csoportválasztó tevékenység modul létrehozása
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
ábra 18: Projekt - projektben végzet munka - aktivitási diagram 55
ábra 19: Projekt - feladat kijelölése - 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
4.3.5 Használati esetek
ábra 20: Projekt - Use Case diagram
57
4.3.6 Adatmodell(ER diagram): PROJECT_MESSAGES(id,userid,date,subject,text,opened) PROJECT_PROJECT(id,name,startingdate,endingdate,parentproject,progress,projec tmanager,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.
ábra 21: Projekt - ER diagram 58
4.3.7 A Felhasználó felület bemutatása
á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 59
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
ábra 27: Cpp feladat típus - ER diagram
ábra 28: Cpp feladat típus - Use Case diagram 62
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
$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
ábra 29: Cpp feladat típus - új feladat létrehozása
ábra 30: Cpp feladat típus - új feladat létrehozása 2 67
á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 68
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.
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
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
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 Admin 2. Admin 3. 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
1. 2. 3. 4. 5. 6.
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. Administrator Course creator Teacher Non-editing teacher Student 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ó.)
megfeleltethetjük a Cporta szerepköreinek. Administrator: A moodle rendszerben több adminisztrátor lehet. Kezdetben 1 A User-ek a tanulók, akik db van, akit a rendszer telepítésénél feladatot adhatnak le a Cporta hozunk létre, majd Ő létrehozhat új segítségével. 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.
Hallgatók Cporta
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)
Moodle
A Super Admin hozhat létre új hallgatót A Super Admin módosíthatja a
77
A hallgatók regisztrálás során kerülhetnek a Moodle rendszerbe. Az Adminisztrátor létrehozhat új
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.
Csoportok Cporta
Moodle
A Super Admin joga az új csoportok felvétele, azokban felhasználók besorolása, csoportok módosítása
Feladat összerendelés Cporta
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)
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.
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
78
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,
feladathoz rendeltek közül, akiket ő adott hozzá.
Adminok Cporta
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.
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.
79
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.