2 <title>Dokumentacja Moodle : Podrêcznik rogramisty
</title>
3 <link rel=
"stylesheet" href=
"../theme/standard/styles.php" type=
"TEXT/CSS">
4 <meta http-equiv=
"Content-Type" content=
"text/html; charset=iso-8859-2">
5 <style type=
"text/css">
10 font-family: "Trebuchet MS", Verdana
, Arial
, Helvetica
, sans-serif
;
13 background-color: #EEEEEE;
19 <body bgcolor=
"#FFFFFF">
20 <h2>Podrêcznik programisty
</h2>
21 <p>Ten dokument czê¶ciowo opisuje strukturê Moodle, oraz sposób w jaki mo¿esz siê w³±czyæ w jego rozwój.
</p>
22 <p>Na chwilê obecn± nie jest on zbyt imponuj±cy. Docelowo powinna siê pojawiæ lepsza dokumentacja!
</p>
25 <li><a href=
"#architecture">Architektura Moodle
</a></li>
26 <li><a href=
"#contribute">Jak mo¿esz siê w³±czyæ w rozwój
</a>
28 <li><a href=
"#activities">Sk³adowe kursów
</a></li>
29 <li><a href=
"#themes">Tematy
</a></li>
30 <li><a href=
"#languages">Jêzyki
</a></li>
31 <li><a href=
"#database">Schematy dla baz danych
</a></li>
32 <li><a href=
"#courseformats">Formaty kursów
</a></li>
33 <li><a href=
"#doc">Dokumentacja i artyku³y
</a></li>
34 <li><a href=
"#bugs">Wyszukiwanie b³êdów
</a></li>
39 <h3 class=
"sectionheading"><a name=
"architecture"></a>1. Architektura Moodle
</h3>
41 <p>Z punktu widzenia administratora, platforma Moodle zosta³a zaprojektowania zgodnie z nastêpuj±cymi kryteriami :
</p>
43 <li><strong>Moodle powinno daæ siê uruchomiæ na jak najwiêkszej ilo¶ci platform
</strong><br>
45 Platforma aplikacji sieciowych najbardziej przeno¶na to PHP po³±czone z MySQL. W³a¶nie w tym ¶rodowisku Moodle zosta³o stworzone (pod Linuksem, Windowsem oraz Mac OS X). Do abstrakcji baz danych Moodle korzysta z biblioteki ADOdb. Oznacza to, ¿e Moodle mo¿e wykorzystywaæ
<a href=
"http://php.weblogs.com/ADOdb_manual#drivers">ponad dziesiêæ ró¿nych rodzajów baz danych.
</a> (niestety Moodle nie potrafi jeszcze
<em><strong>tworzyæ tabel
</strong></em> we wszystkich z tych baz danych. Wiêcej szczegó³ów znajdziesz w dalszej czê¶ci tego podrêcznika)
<br>
48 <li><strong>Moodle powinno byæ ³atwe w instalacji, nauce obs³ugi i modyfikacji
</strong><br>
50 Wczesne prototypy Moodle (
1999) by³y tworzone z pomoc±
<a target=_top
href=
"http://www.zope.org/">Zope
</a> - wysokopoziomowego, zorientowanego obiektowo serwera aplikacji sieciowych. Niestety okaza³o siê, i¿ pomimo ¿e technologia sama w sobie by³a bardzo fajna, to ciê¿ko by³o j± opanowaæ i nie by³a elastyczna z punktu widzenia administracji. Z drugiej strony do jêzyka skryptowego PHP mo¿na bardzo ³atwo siê przyzwyczaiæ (szczególnie je¶li ju¿ programowa³e¶ z wykorzystaniem jêzyków skryptowych). Stosunkowo wcze¶nie zdecydowa³em siê na nie u¿ywanie projektowania zorientowanego na klasy - znów po to, by ca³o¶æ pozosta³a ³atwa i zrozumia³a dla pocz±tkuj±cych. Ponowne wykorzystywanie kodu (code reuse) jest osi±gane przez system bibliotek z jasno nazwanymi funkcjami i ¶ci¶le okre¶lonym po³o¿eniem plików z skryptami. Jêzyk PHP jest równie¿ ³atwy w instalacji i jest na tyle powszechnie dostêpne, ¿e wiêkszo¶æ serwerów dostarcza go jako standard.
54 <li><strong>Przej¶cia miêdzy kolejnymi wersjami Moodle powinny byæ ³atwe
</strong><br>
56 Platforma Moodle zawiera informacje o swoim wersji (jak i o wersjach wszystkich modu³ów zewnêtrznych). Zosta³ te¿ w ni± wbudowany mechanizm pozwalaj±cy Moodle na poprawn± aktualizacjê do nowszych wersji (przyk³adowo Moodle potrafi zmieniaæ nazwy tabel albo dodawaæ nowe pola do ju¿ istniej±cych). Je¶li na przyk³ad korzystasz z CVS w Uniksie, to wystarczy jedynie wydaæ polecenie
"cvs update -d
", a nastêpnie wej¶æ na stronê g³ówn± serwisu by zakoñczyæ proces uaktualniania.
<br>
59 <li><strong>Moodle powinno mieæ budowê modu³ow±, aby umo¿liwiæ rozbudowê systemu
</strong><br>
61 Moodle ma szereg funkcji modularnych takich jak tematy, sk³adowe kursów, interfejs jêzyków, schematy baz danych i formaty kursów. Pozwala to na dodawanie nowych funkcji do g³ównego kodu, lub nawet na ich oddzieln± dystrybucjê. Wiêcej na ten temat przeczytasz w sekcji poni¿ej.
<br>
64 <li><strong>Powinna istnieæ mo¿liwo¶æ u¿ywania Moodle w po³±czeniu z innymi systemami
</strong><br>
66 Moodle trzyma wszystkie pliki danego kursu w zwyk³ym katalogu na serwerze. Daje to administratorowi systemu mo¿liwo¶æ udostêpnienia ich na poziomie plikowym ka¿demu z nauczycieli, na przyk³ad przez Appletalk, SMB, NFS, FTP, WebDAV itd. Modu³y uwierzytelniania pozwalaj± Moodle korzystaæ z LDAP, IMAP, POP3, NNTP, oraz z innych baz danych jako ze ¼ród³a informacji o u¿ytkownikach. W przysz³o¶ci Moodle ma mieæ mo¿liwo¶æ importowania i eksportowania danych za pomoc± formatów opartych na XML (w tym IMS i SCORM), oraz zwiêkszon± mo¿liwo¶æ korzystania z wzorców formatowania interfejsu (dziêki temu ³atwiej bêdzie mo¿na zintegrowaæ Moodle z innymi stronami WWW)
71 <h3 class=
"sectionheading"><a name=
"contribute" id=
"contribute"></a>2. Jak mo¿esz siê w³±czyæ w rozwój
</h3>
73 <p> Jak ju¿ wspomniano powy¿ej Moodle ma szereg funkcji, które maj± budowê modu³ow±. Nawet je¶li nie jeste¶ programist± istniej± dziedziny w których mo¿esz pomóc.
</p>
74 <p><strong><a name=
"activities" id=
"activities"></a>Sk³adowe kursów
</strong></p>
76 <p>S± to tak na prawdê najistotniejsze modu³y. S± one ulokowane w katalogu 'mod'. Istnieje siedem podstawowych modu³ów tego typu : Zadanie, wybór, forum, dziennik, quiz, zasób, oraz ankieta. Ka¿dy z tych modu³ów zawiera oddzielny podkatalog który zawiera nastêpuj±ce niezbêdne elementy (plus dodatkowe skrypty, w³a¶ciwe tylko dla danego modu³u) :
79 <li>mod.html: s³u¿y do umieszczania lub uaktualniania instancji tego modu³u
</li>
80 <li>version.php: definiuje informacje (meta-info) i umo¿liwia aktualizacjê
</li>
81 <li>icon.gif: ikona o rozmiarze
16x16, symbolizuj±ca modu³
</li>
82 <li>db/: db rables i dane dla SQL (dla ka¿dego typu bazy danych)
</li>
83 <li>index.php: zawiera listê instancji w kursie
</li>
84 <li>view.php: strona s³u¿±ca do ogl±dania wybranej instancji
</li>
85 <li>lib.php: Je¶li modu³ definiuje jakie¶ funkcje, to powinny one siê tu znajdowaæ.
86 Je¶li modu³ nazywa siê np. widget, wtedy niezbêdne jest zamieszczenie nastêpuj±cych funkcji:
88 <li>widget_add_instance() - kod s³u¿±cy do dodawania nowych instancji
</li>
89 <li>widget_update_instance() - Kod s³u¿±cy do uaktualniania ju¿ istniej±cych instancji
</li>
90 <li>widget_delete_instance() - Kod s³u¿±cy do usuwania instancji
</li>
91 <li>widget_user_outline() - maj±c dan± instancjê zwróæ podsumowanie wk³adu u¿ytkownika
</li>
92 <li>widget_user_complete() - maj±c dan± instancjê wypisz szczegó³y wk³adu u¿ytkownika
<br>
94 <li>aby unikn±æ ewentualnych konfliktów ka¿da z funkcji modu³u powinna zaczynaæ siê na widget_ . Ka¿da sta³a któr± zdefiniujesz powinna zaczynaæ siê na WIDGET_
</li>
97 <li>Wreszcie ka¿dy modu³ bêdzie posiada³ plik zawieraj±cy ³añcuchy znaków dla danego jêzyka. Szczegó³y znajdziesz poni¿ej.
</li>
99 <p>Najprostsz± metod± zbudowania nowej sk³adowej kursu jest wykorzystanie wzorca, zapisanego w pliku
<strong><a href=
"http://moodle.com/mod/newmodule_template.zip">mod/newmodule_template.zip
</a>.
</strong>
100 Rozpakuj go, a nastêpnie przeczytaj plik README
</p>
101 <p>Dobrym pomys³em jest te¿ wziêcie udzia³u w
<a href=
"http://moodle.com/mod/forum/view.php?id=44" target=
"_top"> Forum po¶wiêconym sk³adowym kursów.
</a> (Activities
102 modules forum on Using Moodle).
</p>
105 <p> <strong><a name=
"themes" id=
"themes"></a>Tematy
</strong></p>
107 <p>Tematy (Themes / skins) okre¶laj± wygl±d ca³ego serwisu. Wraz z g³ówn± dystrybucj± dostarczanych jest kilka prostych tematów, ale mo¿esz stworzyæ w³asny, dobieraj±c kolory, style i grafiki, a tak¿e zamieszczaj±c swoje logo
</p>
108 <p>Ka¿dy temat umieszczany jest w podkatalogu katalogu
"theme
" i zawiera przynajmniej nastêpuj±ce pliki:
</p>
110 <li><strong>config.php
</strong>: definiuje kolory tematu, u¿ywane w ca³ym serwisie
</li>
111 <li><strong>styles.php
</strong>: zawiera informacje o stylach, w tym definicje CSS dla standardowych elementów HTML, a tak¿e dla wielu modu³ów Moodle
</li>
112 <li><strong>header.html
</strong>: Jest umieszczany u góry ka¿dej strony. Mo¿esz go wykorzystaæ przyk³adowo do zamieszczenia logo na stronach.
</li>
113 <li><strong>footer.html
</strong>: Umieszczany na spodzie ka¿dej strony
</li>
115 <p>Aby utworzyæ w³asny temat dla Moodle w obecnej wersji:
</p>
117 <li>Skopiuj który¶ z ju¿ istniej±cych tematów do folderu o innej nazwie. Proponujê, by¶ zacz±³ od którego¶ ze standardowych tematów.
</li>
118 <li>Zmodyfikuj config.php i umie¶æ w nim w³asne kolory.
</li>
119 <li>Zmodyfikuj styles.php i zmieñ style CSS.
</li>
120 <li>Zmodyfikuj header.html i footer.html aby dodaæ logo i wizualny uk³ad strony.
123 <p>Pamiêtaj, ¿e ka¿dy z tych kroków jest opcjonalny. Mo¿esz diametralnie zmieniæ wygl±d serwisu zmieniaj±c jedynie kolory w config.php
</p>
124 <p>Kolejne wersje Moodle
<em>mog±
</em> nieco zmieniaæ tematy wiêc czytaj zawsze uwagi do nowego wydania je¶li u¿ywasz niestandardowego tematu.
</p>
125 <p>W szczególno¶ci Moodle
2.0 bêdzie posiada³ zupe³nie nowy system wy¶wietlania, najprawdopodobniej oparty na transformacjach XSL wej¶cia XML z Moodle. Prawdopodobnie tematy bêd± mia³u zupe³nie inny format, ale za to bêd± o wiele bardziej modyfikowalne. (przyk³adowo bêd± umo¿liwiaæ przemieszczanie elementów w obrêbie strony
</p>
126 <p>Wiêcej informacji na
<a target=_top
href=
"http://moodle.com/mod/forum/view.php?id=46">forum po¶wiêconym tematom
</a> (Themes forum on Using Moodle). Je¶li stworzysz ³adny temat którym chcia³by¶ siê podzieliæ prze¶lij spakowany plik na forum po¶wiêcone tematom
<br>
130 <p><strong><a name=
"languages" id=
"languages"></a>Jêzyki
</strong></p>
132 <p>Moodle zosta³o zaprojektowane jako platforma miêdzynarodowa. Ka¿dy ³añcuch znaków czy strona tekstu wy¶wietlana jako czê¶æ interfejsu jest popierana z zestawu plików jêzykowych. Ka¿dy jêzyk jest przechowywany w podkatalogu katalogu 'lang'.
134 Struktura katalogu lang jest nastêpuj±ca:
</p>
135 <p><strong>lang/pl
</strong> - katalog zawieraj±cy wszystkie pliki dla danego jêzyka (w tym wypadku dla Polskiego)
</p>
137 <li>moodle.php - ³añcuchy znaków (stringi) dla g³ównego interfejsu
</li>
138 <li>assignment.php - ³añcuchy znaków dla modu³u zadañ
</li>
139 <li>choice.php - ³añcuchy znaków dla modu³u wyboru
</li>
140 <li>forum.php - ³añcuchy znaków dla modu³u forum
</li>
141 <li>journal.php - ³añcuchy znaków dla modu³u dziennik
</li>
142 <li>quiz.php - ³añcuchy znaków dla modu³u quiz
</li>
143 <li>resource.php - ³añcuchy znaków dla modu³u zasobów
</li>
144 <li>survey.php - ³añcuchy znaków dla modu³u ankiet
</li>
145 <li>.... i do tego ³añcuchy znaków dla wszelakich dodatkowych modu³ów
<br>
147 £añcuch znaków jest pobierany z tych plików za pomoc± funkcji
<strong><em>get_string()
</em></strong><em>
148 </em>lub
<em> <strong>print_string()
</strong> </em>. Ka¿dy ³añcuch znaków zastêpuje odpowiadaj±cy sobie ³añcuch w innym jêzyku.
<em><br>
150 </em>przyk³adowo : $strdueby = get_string(
"assignmentdueby
",
"assignment
",
151 userdate($date));
<br>
153 Je¶li dany ³añcuch znaków nie istnieje w którym¶ z jêzyków, to jest automatycznie zastêpowany swoim angielskim odpowiednikiem.
</li>
155 <p><strong>lang/pl/help
</strong> - zawiera wszystkie strony pomocy (dla pomocy w wyskakuj±cych okienkach)
</p>
157 <p>G³ówne pliki pomocy znajduj± siê bezpo¶rednio w tym katalogu, natomiast pliki pomocy dla poszczególnych modu³ów s± umieszczone w podkatalogach z nazwami bêd±cymi nazwami modu³ów.
</p>
158 <p>Mo¿esz umie¶ciæ przycisk pomocy na stronie pos³uguj±c siê funkcj± helpbutton
</p>
159 <p>np. helpbutton(
"tekst
",
"Kliknij aby otrzymaæ pomoc na temat tekstu
");
</p>
160 <p>a w przypadku modu³ów:
</p>
161 <p>helpbutton(
"typyforum
",
"Typy forum
",
"forum
");
</p>
163 <p>UWAGA : mo¿esz edytowaæ jêzyki on-line, korzystaj±c z narzêdzia administracji
"Sprawd¼ jêzyk
".
164 Dziêki temu mo¿na nie tylko ³atwo dodawaæ nowe jêzyki, ale tak¿e modyfikowaæ te ju¿ zaimplementowane. Je¶li rozpoczynasz t³umaczenie na nowy jêzyk, skontaktuj siê proszê ze mn± :
<a target=_top
href=
"http://dougiamas.com/">
165 Martin Dougiamas
</a>.
</p>
166 <p>Mo¿esz równie¿ skorzystaæ z
<a target=_top
href=
"http://moodle.com/mod/forum/view.php?id=43">Forum po¶wiêconego jêzykom
</a> (Languages forum on Using Moodle).
</p>
167 <p>Mogê te¿ udostêpniæ Ci
<a href=
"?file=cvs.html">prawa zapisu CVS
168 do kodu ¼ród³owego Moodle
</a> by¶ móg³ bezpo¶rednio zarz±dzaæ plikami.
</p>
171 <strong><a name=
"database" id=
"database"></a>Schematy dla baz danych
</strong></p>
173 <p>Je¶li Moodle otrzyma dzia³aj±c± bazê danych wraz z zdefiniowanymi tabelami, to celowo proste zapytania SQL wykorzystane w Moodle powinny prawid³owo wspó³pracowaæ z wieloma rodzajami baz danych.
</p>
174 <p>Problem tkwi w
<strong>automatycznym tworzeniu
</strong> nowych tabeli w bazach danych. Moodle próbuje to zrobiæ podczas instalacji. Poniewa¿ bazy danych znacz±co siê ró¿ni±, nie istnieje jeszcze metoda robienia tego niezale¿nie od platformy. Aby wesprzeæ ten proces mo¿na tworzyæ sekwencje poleceñ SQL, s³u¿±ce do utworzenia tabel Moodle w konkretnej bazie danych. Pliki te znajduj± siê w katalogu
<strong>lib/db
</strong>
175 oraz w podkatalogu
<strong>db
</strong> ka¿dego modu³u.
</p>
176 <p>Obecnie jedynie MySQL i PostgreSQL s± w pe³ni obs³ugiwane przez ten mechanizm (nikt nie napisa³ schematów dla innych baz).
</p>
177 <p>Moodle
1.1 bêdzie u¿ywaæ nowej metody opartej na XML, która sprawi, ¿e wszystkie te komplikacje stan± siê niepotrzebne.
181 <p><strong><a name=
"courseformats" id=
"courseformats"></a>Formaty Kursu
</strong></p>
183 <p> Moodle w chwili obecnej obs³uguje trzy ró¿ne formaty kursów : tygodniowy, tematyczny, oraz towarzyski.
</p>
184 <p>S± one nieco bardziej zagnie¿d¿one w kodzie (a przez to mniej
"elastyczne
")ni¿ inne modu³y, ale i tak mo¿na stosunkowo ³atwo dodaæ nowe formaty.
</p>
185 <p>Je¶li masz jakie¶ pomys³y na inne formaty, które potrzebujesz, lub chcia³by¶ zobaczyæ, skontaktuj siê ze mn±, a zrobiê wszystko co w mojej mocy, aby zawrzeæ je w przysz³ych dystrybucjach.
</p>
188 <p><strong><a name=
"doc" id=
"doc"></a>Dokumentacja i artyku³y
</strong></p>
190 <p>Je¶li czujesz siê na si³ach, ¿eby napisaæ przewodnik, artyku³, pracê naukow± (lub dowoln± inn±) na temat Moodle, zrób to!
</p>
191 <p>Umie¶æ swoj± pracê na sieci i pamiêtaj, aby zamie¶ciæ te¿ link do
<a target=_top
href=
"http://moodle.org/">http://moodle.org/
</a></p>
194 <p><strong><a name=
"bugs" id=
"bugs"></a>Udzia³ w szukaniu b³êdów
</strong></p>
196 <p> Wreszcie chcia³bym Ciê zachêciæ, aby¶ zapisa³ siê do
"wyszukiwania b³êdów" (bug tracker);
198 na stronie
<a target=_top
href=
"http://moodle.org/bugs/">http://moodle.org/bugs
</a>
199 ¿eby¶ móg³ zg³aszaæ wszelki b³êdy jakie znajdziesz i byæ mo¿e uczestniczy³ w dyskusji nad ich usuniêciem.
</p>
200 <p>Termin
"B³êdy
" dotyczy tu nie tylko b³êdów w oprogramowaniu ale tak¿e nowych pomys³ów, wymagañ co do funkcji, czy nawet konstruktywnej krytyki istniej±cych funkcji. Piêkno oprogramowania open-source polega na tym, i¿ ka¿dy mo¿e braæ udzia³ i pomagaæ w tworzeniu lepszego produktu. W tym projekcie twój wk³ad powitamy z otwartymi ramionami!
</p>
207 <p align=
"center">Dziêkujê za korzystanie z Moodle!
</p>
208 <p align=
"center">Pozdrowienia,
<br>
209 <a target=_top
href=
"http://dougiamas.com/">Martin Dougiamas
</a></p>
218 <p align=
"CENTER"><font size=
"1"><a href=
"." target=
"_top">Dokumentacja Moodle
</a></font></p>
219 <p align=
"CENTER"><font size=
"1">Version: $Id: developer.html,v
1.2 2001/
12/
09
220 10:
34:
19 martin Exp $
</font></p>