# Manwal ng mga Developer

> Inilalarawan ng dokumentong ito ang ilan sa disenyo ng Moodle at kung paano ka makapag-aambag sa pagdebelop nito.

> Medyo maikli pa lamang ito - pero magkakaroon din tayo ng mas mahusay na dokumentasyon sa hinaharap!

> Mga seksiyon sa dokumentong ito:

> 1. Arkitektura ng Moodle
> 2. Kung paano ka makapag-aambag sa Moodle
>    - Mga Aktibidad para sa Pag-aaral
>    - Mga Tema
>    - Mga Wika
>    - Mga Database Schema
>    - Mga format ng Kurso
>    - Dokumentasyon at mga artikulo
>    - Paglahok sa bug tracker

## 1. Arkitektura ng Moodle

> Kung titingnan natin ito sa pananaw ng isang system administrator, ang Moodle ay dinisenyo ayon sa mga sumusunod na criteria:

> 1. Kailangang tumakbo ang Moodle sa pinakamaraming klase ng plataporma
>    Ang web application platform na tumatakbo sa pinakamaraming platform ay ang PHP kasama ang MySQL, at ito rin ang kapaligiran kung saan dinibelop ang Moodle (sa Linux, Windows, at Mac OS X). Ginagamit din ng Moodle ang ADOdb library para sa database abstraction, alalaong baga'y makagagamit ang Moodle ng higit pa sa sampung magkakaibang brand ng database (kaya lang, hindi pa nito kayang magset-up ng mga table sa lahat ng database na ito - paguusapan pa natin ito mamaya).
> 2. Dapat ay madaling maiinstol, matutunan at mabago ang Moodle
>    Ang mga unang prototype ng Moodle (1999) ay nilikha gamit ang Zope - isang abanteng object-oriented web application server. Kaya lang, bagama't cool ang dating sa akin ng teknolohiyang ito, medyo mahirap matutunan at hindi gaanong flexible, kung system administration ang pag-uusapan. Sa kabilang banda ang PHP scripting language ay napakadaling matutunan (lalo pa kung nakapagprogram ka na, gamit ang anumang scripting language). Sa simula pa nagpasiya na akong iwasan ang paggamit ng anumang class-oriented na disenyo - para nga mapanatili itong madaling maintindihan ng mga baguhan. Sa halip ang muling paggamit ng code ay ginawa sa pamamagitan ng mga library ng mga clearly-named function at sa consistent na layout ng mga script file. Madali ring iinstol ang PHP (may binary para sa bawat platform) at kalát na ang gamit, ibinibigay na nga itong istandard na serbisyo ng karamihang web hosting service.
> 3. Dapat ay madali itong iupgrade sa mga susunod na bersiyon
>    Alam ng Moodle kung anong bersiyon ito (gayundin ang mga bersiyon ng lahat ng plug-in na modyul) at may built-in na itong mekanismo na mag-aupgrade ng sarili nito sa bagong bersiyon (halimbawa kaya nitong magrename ng mga database table o magdagdag ng mga bagong field). Halimbawa, kung gumagamit ka ng CVS sa Unix, magtatype ka lang ng "cvs update -d" pagkatapos ay bisitahin ang home page ng site upang makumpleto ang upgrade.
> 4. Kailangan ay modular ito upang mabigyan ng kakayahang lumaki
>    Maraming feature ang Moodle na modular, tulad ng tema, aktibidad, mga wika ng interface, mga database schema at mga format ng kurso. Maaari ngayong magdagdag ng feature ang sinuman sa pangunahing codebase o kaya'y ipamahagi ang mga feature ng hiwalay. Tatalakayin pa natin ito sa susunod na seksiyon sa ibaba.
> 5. Dapat ay nagagamit ito kasabay ng iba pang sistema
>    Itinatago ng Moodle ang lahat ng file para sa isang kurso sa iisang, normal na direktoryo sa server. Dahil dito magagawa ng system administrator na magbigay ng seamless forms ng file-level access para sa bawat guro, tulad ng Appletalk, SMB, NFS, FTP, WebDAV at iba pa. Pinapahintulutan ng mga authentication module ang Moodle na gumamit ng LDAP, IMAP, POP3, NNTP at iba pang database bilang source para sa impormasyon hinggil sa user. Kung hindi, ay marami pang kailangang gawin. Ang mga feature na planong isama sa Moodle sa mga bersiyon sa hinaharap ay : import at export ng Moodle data gámit ang mga XML-based na format (kasama ang IMS at SCORM); at mas malaking bahagi sa paggamit ng mga style sheet para sa interface formatting (para maiintegrate ito nang biswal sa iba pang web site).

## 2. Kung paano ka makapag-aambag

> Nasabi na natin kanina na ang Moodle ay maraming feature na modular. Kahit hindi ka programer, may mga bagay na mababago mo o makakatulong ka.

> ### Mga Aktibidad sa Pag-aaral

> > Ito ang mga pinakaimportanteng modyul, na nasa 'mod' na direktoryo. May anim na default na modyul: takdang-aralin, pagpipilian, talakayan, pagsusulit, rekurso, at survey. Ang bawat modyul ay nasa hiwalay na subdirektoryo at binubuo ng mga sumusunod na kinakailangang elemento (kasama pa ang mga ekstrang script na unique sa bawat modyul):

> > - mod.html: isang form para iset-up o iupdate ang instance ng modyul na ito
> > - version.php: nagdedefine ng ilang meta-info at nagbibigay ng upgrading code
> > - icon.gif: isang 16x16 na icon para sa module
> > - db/: mga SQL dump ng lahat ng kinakailangang db table at datos (para sa bawat uri ng database)
> > - index.php: isang pahina para ilista ang lahat ng instance sa isang kurso
> > - view.php: isang pahina para makita ang isang partikular na instance
> > - lib.php: anuman/lahat ng function na idinefine ng modyul ay dapat naririto. Kung ang modulename ay tinatawag na widget, ang mga kinakailangang function ay dapat may kasamang:
> >   - widget_add_instance() - code para magdagdag ng isang bagong instance ng widget
> >   - widget_update_instance() - code para magupdate ng instance na narooroon na
> >   - widget_delete_instance() - code para burahin ang instance
> >   - widget_user_outline() - kung may instance, nagbabalik ng buod ng iniambag ng user
> >   - widget_user_complete() - kung may instance, magpiprint ng mga detalye ng iniambag ng isang user
> >   - Upang hindi magkaconflict, ang alinmang module function ay dapat bigyan ng pangalang nagsisimula sa widget_ at anumang constant na idefine mo ay dapat magsimula sa WIDGET_
> > - Panghuli, ang bawat moyul ay magkakaroon ng ilang file ng wika na naglalaman ng mga string para sa modyul na iyon. Tingnan sa ibaba.

> > Ang pinakamadaling paraan para magsimula ng bagong learning activity module ay gamitin ang template sa mod/newmodule_template.zip. Iunzip ito at sundin ang README sa loob.

> > Baka gusto mo ring magpost muna sa Talakayan ng Activities modules sa Paggamit ng Moodle.

> ### Mga Tema

> > Itinatakda ng tema (o skin) ang itsura ng isang site. May ilang simpleng tema na nasa pangunahing distribusyon, baka mas gusto mong lumikha ng sarili mong tema na may sarili mong kulay, logo, estilo at graphics.

> > Ang bawat tema ay nasa isang subdirektoryo ng "theme" na direktoryo, at naglalaman ng, sa minimum, ng sumusunod na file:

> > - config.php: idinidefine ang kulay ng tema na ginagamit sa buong site
> > - styles.php: ang style sheet, na naglalaman ng mga CSS definition para sa mga standard HTML element, gayundin ang maraming elemento ng Moodle.
> > - header.html: Isinasama sa itaas ng bawat pahina. Ito ang kailangan mong iedit upang makapagdagdag ng isang logo sa itaas ng mga pahina.
> > - footer.html: Isinasama sa ibaba ng bawat pahina.

> > Para makalikha ka ng mga sarili mong tema para sa kasalukuyang bersiyon ng Moodle:

> > 1. Kopyahin ang isa sa dating theme folder sa isang folder na may bagong pangalan. Inirerekomenda ko na magsimula sa isa sa mga istandard na tema.
> > 2. Editin ang config.php at iinsert ang sarili mong mga kulay.
> > 3. Editin ang styles.php at baguhin ang CSS styles mo.
> > 4. Editin ang header.html at footer.html upang makapagdagdag ng mga bagong logo, o mabago ang layout.

> > Tandaan na ang lahat ng hakbang na ito ay opsiyonal - maaari kang lumikha ng talagang kakaibang itsura ng site mo sa pamamagitan lamang ng pag-edit sa mga kulay sa config.php

> > Tandaan din na ang mga Moodle upgrade ay posibleng sumira nang kaunti sa mga tema, kaya basahing mabuti ang mga release note kung gumagamit ka ng pasadyang tema.

> > Lalo pa, ang Moodle 2.0 ay magkakaroon ng ganap na bagong display system, posibleng nakabatay sa mga XSL transformation ng XML output mula sa Moodle. Posibleng ang mga bagong tema para dito ay magkakaroon ng kakaibang format, pero ang bentahe ay magkakaroon ng posibleng mas mataas na degree ng customisation (kasama ang paglilipat-lipat ng mga elemento sa pahina).

> > May mas malawak na talakayan hinggil dito sa Talakayan ng Tema sa Paggamit ng Moodle. Kung lumikha ka ng magandang tema na sa palagay mo ay magagamit ng iba, pakipost ang zip file mo sa talakayan ng mga tema!

> ### Mga Wika

> > Ang Moodle ay idinesenyo para sa internasiyonalisasyon. Ang bawat 'string' o 'pahina' ng teksto na idinidispley bilang bahagi ng interface ay kinukuha mula sa isang set ng mga file ng wika. Ang bawat wika ay subdirektoryo ng direktoryong 'lang'. Ang istruktura ng lang direktoryo ay sumusunod:

> > lang/en - direktoryong naglalaman ng lahat ng file para sa isang wika (eg Ingles)

> > - moodle.php - mga string para sa pangunahing interface
> > - assignment.php - mga string para sa assignment module
> > - choice.php - mga string para sa choice module
> > - forum.php - mga string para sa forum module
> > - quiz.php - mga string para sa quiz module
> > - resource.php - mga string para sa resource module
> > - survey.php - mga string para sa survey module
> > - .... kasama pa ang ibang modyul kung mayroon man.
> >   Ang string ay tinatawag mula sa mga file na ito sa pamamagitan ng get_string() o print_string() na function. Sinusuportahan ng bawat string ang pagpapalit ng variable, upang masuportahan ang variable ordering sa iba't-ibang wika.
> >   eg $strdueby = get_string("assignmentdueby", "assignment", userdate($date));
> >   Kung ang string ay wala sa isang partikular na wika, ang katumbas nito sa Ingles ang awtomatikong gagamitin.

> > lang/en/help - naglalaman ng mga buong pahina ng tulong (para sa popup context-sensitive na tulong)

> > > Ang pangunahing mga pahina ng tulong ay naririto, samantalang ang mga pahina ng tulong na para sa bawat modyul ay nasa subdirektoryo na may pangalan ng modyul.

> > > Puwede kang mag-insert ng helpbutton sa isang pahina sa pamamagitan ng helpbutton na function.

> > > eg helpbutton("text", "Iklik ito para sa tulong tungkol sa teksto;);

> > > at para sa mga modyul:

> > > helpbutton("forumtypes", "Forum types", "forum");

> > Tandaan na puwede mong editin ang mga wika nang online, gamit ang administration web tools na nasa ilalim ng "Tingnan ang wikang ito". Pinadadali nito ang paglikha ng mga bagong wika gayundin ang pagpapahusay ng dati na. Kung magsisimula ka ng bagong wika, pakikontak ako, Martin Dougiamas.

> > Baka gusto mong magpost sa Talakayan ng Wika sa Paggamit ng Moodle.

> > Kung magmementina ka ng wika nang matagalan, maaari kitang bigyan ng CVS write access sa Moodle source code para direkta mong mamentina ang mga file.

> ### Mga Schema ng Database

> > Kung may gumaganang database ka na may nadefine nang mga table, ang sinadyang simpleng SQL na ginamit sa Moodle ay inaasahang gagana nang maayos sa iba't-ibang klase ng database brand.

> > May problema sa awtomatikong paglikha ng mga bagong table sa isang database, na siyang tinatangkang gawin ng Moodle sa unang pagkakataon na iinstol ito. Dahil magkakaiba ang mga database, walang paraan para gawin ito nang hiwalay sa plataporma. Para masuportahan ang automation na ito sa bawat database, maaaring gumawa ng mga schema na naglilista ng kinakailangang SQL para malikha ang mga Moodle table sa isang partikular na database. Ang mga file na ito ay nasa lib/db at sa loob ng db subdirektoryo ng bawat module.

> > Sa kasalukuyan, tanging ang MySQL at PostgreSQL ang ganap na nasusuportahan sa paraang ito (wala pang nagsusulat ng schema para sa ibang brand).

> > Gagamit ang Moodle 1.2 ng bagong paraan ng independiyente-sa-database na XML schema para hindi na kailanganin ang pagsusulat ng schema para sa bawat klase ng database.

> ### Mga Format ng Kurso

> > Sinusuportahan sa kasalukuyan ng Moodle ang tatlong klase ng format ng kurso: linguhan, paksaan at panlipunan.

> > Mas nakaugnay ito sa iba pang code (kaya, mas mahirap gawing "plugagable") pero madali pa ring magdagdag ng mga bago.

> > Kung may ideya kayo para sa naiibang format na kailangan ninyo o gusto ninyong makita, kontakin ninyo ako at pipilitin kong isama ito sa mga release sa hinaharap.

> ### Dokumentasyon at mga artikulo

> > Kung gusto mong magsulat ng tyutoryal, artikulo o akademikong papel o anumang bagay hinggil sa Moodle, sige lang!

> > Ilagay ito sa web at tiyaking samahan ng mga link sa http://moodle.org/

> ### Paglahok sa bug tracker

> > Bilang panghuli, nais ko kayong anyayahang magrehistro sa "bug tracker" sa http://moodle.org/bugs para maiulat mo ang anumang bug na matagpuan mo at marahil ay makalahok sa pagtalakay at paglutas ng mga ito.

> > Ang mga "bug" ay hindi lamang mga software bug sa kasalukuyang bersiyon ng Moodle, kundi kasama rin ang mga bagong ideya, hinihiling na bagong feature at kahit konstruktibong puna sa mga kasalukuyang feature. Ang kaigihan ng open source ay puwede ang lahat na lumahok sa anumang paraan upang tumulong sa paglikha ng mas mahusay na produkto na masisiyahan tayong lahat. Sa proyektong ito, ang input mo ay gusto naming marinig!

> > > Salamat sa paggamit ng Moodle!
> > > Martin Dougiamas, Lead Developer

Dokumentasyon ng Moodle

Version: $Id$