## Падручнік праграміста

Гэты дакумент часткова апісвае структуру Moodle, а таксама спосаб, якім вы можаце ўключыць яго ў сваё развіццё.

На гэты момант ён не вельмі імпануючы. Але з цягам часу павінна з’явіцца лепшая дакументацыя!

Змест:

1. Архітэктура Moodle
2. Як яго можна ўключыць у сваё развіццё
   - Складнікі курсаў
   - Тэмы
   - Мовы
   - Схемы для баз дадзеных
   - Фарматы курсаў
   - Дакументацыя і артыкулы
   - Пошук памылак

### 1. Архітэктура Moodle

> З пункту гледжання адміністратара, платформа Moodle была створана згодна з наступнымі крытэрыямі :

> 1. Moodle павінен спрыяць запуску як мага найбольшай колькасці платформ
>    Платформа сецевых аплікацый, якая найлепш паддаецца пераносу - гэта PHP злучаная з MySQL. Менавіта ў гэтым асяроддзі быў створаны Moodle (пад Linuks, Windows, а таксама Mac OS X). Дзеля падтрымкі базаў дадзеных Moodle карыстаецца бібліятэкай ADOdb. Гэта азначае, што Moodle здольны выкарыстоўваць больш чым дзесяць розных відаў баз дадзеных. (на жаль Moodle не здольны пакуль што ствараць табель ва ўсіх гэтых базах дадзеных. Больш падрабязную інфармацыю вы знойдзеце у наступнай частцы гэтага падручніка)
> 2. Moodle павінен быць простым пры ладаванні, асвойванні абслугоўвання i мадыфікацыі
>    Раннія прататыпы Moodle (1999) былі створаны з дапамогай Zope - высокаўзроўневага, арыентаванага на аб'екты сэрвера сецевых аплікацыяў. На жаль, аказалася, што паміма самой па сабе файнай тэхналогіі, яе цяжка было засвоіць і яна была недастаткова гнуткай з пункту гледжання адміністравання. З другога боку, да скрыптавай мовы PHP можна вельмі лёгка прызвычаіцца (асабліва, калі вы ўжо займаліся праграмаваннем з выкарыстаннем скрыптавых моваў). Я вырашыў адносна хутка, што не буду ўжываць праектавання, якое арыентавана на прафесіяналаў-праграмістаў, зноў жа дзеля таго, каб цэлае засталося лёгкім і зразумелым для пачаткоўцаў. Паўторнае выкарыстанне коду (code reuse) дасягаецца дзякуючы сістэме бібліятэк з ясна акрэсленымі функцыямі і сцісла вызначаным месцазнаходжаннем файлаў са скрыптамі. Мова PHP таксама нескладаная пры закладцы і настолькі ж даступная, бо большасць сэрвераў прапануе яе як стандарт.
> 3. Пераходы да чарговых версій Moodle павінны быць нескладанымі
>    Платформа Moodle уключае інфармацыю пра свае версіі (таксама як і пра версіі знешніх модуляў). У яе ўбудаваны механізм, які дазваляе Moodle правільна актуалізаваць самыя новыя версіі (напрыклад, Moodle мае магчымасць змяніць назвы табліцаў або дадаць новыя палі да ўжо існуючых). Калі напрыклад вы карыстаецеся CVS у Юніксе, то дастаткова толькі даць каманду "cvs update -d", a затым выйсці на галоўную старонку сэрвісу каб закончыць працэс актуалізацыі.
> 4. Moodle павінен мець модульную пабудову, каб мець магчымасць разбудовы сістэмы.
>    Moodle мае шэраг мадуляцыйных функцый, такіх як тэмы, змест курсаў, моваў абалонак праграмы, схемы баз дадзеных і фарматы курсаў. . Гэта дазваляе дадаваць новыя функцыі да галоўнага коду, або нават асобна іх размяркоўваць. На гэту тэму вы зможаце атрымаць больш інфармацыі далей.
> 5. Павінна існаваць магчымасць карыстання Moodle разам з іншымі сістэмамі
>    Moodle трымае ўсе файлы дадзенага курса ў звычайным каталогу на сэрверы. Гэта дазваляе адміністратару сістэмы зрабіць іх даступнымі на файлавым узроўні кожнаму настаўніку, напрыклад праз Appletalk, SMB, NFS, FTP, WebDAV і д.п.. Модулі верагоднасці дазваляюць Moodle карыстацца LDAP, ІMAP, POP3, NNTP, або іншымі базамі дадзеных як крыніцай інфармацыі аб карыстальніках. У будучыні Moodle збіраецца мець магчымасць імпартаваць і экспартаваць дадзеныя пры дапамозе фарматаў, якія абапіраюцца на XML (у тым ліку ІMS і SCORM), а таксама павышаную магчымасць карыстання ўзорамі фарматавання абалонкі (дзякуючы гэтаму стане лягчэй інтэграваць Moodle з іншымі старонкамі WWW)

### 2. Як можна уключыць Moodle у сваё развіццё

> Як ужо гаварылася вышэй, Moodle утрымлівае шэраг функцый, якія маюць модульную пабудову. Нават калі вы не праграміст, існуюць такія сферы, у якіх вы можаце сабе дапамагчы.

> Складнікі курсаў

> > Гэта на самай справе найбольш істотныя модулі. Яны размешчаны ў каталогу 'mod'. Існуе сем асноўных модуляў гэтага тыпу : заданне, выбар, форум, дзённік, тэст, запас, а таксама анкета. Кожны з гэтых модуляў уключае асобны падкаталог, у які ўключаны неабходныя элементы (плюс дадатковыя скрыпты, тыповыя толькі для дадзенага модуля) :

> > - mod.html: служыць для змяшчэння або актуалізацыі інстанцыі дадзенага модулю
> > - version.php: акрэслівае інфармацыю (meta-іnfo) і робіць магчымым выкарыстанне
> > - icon.gif: абразок памерам 16x16, які сімвалізуе модуль
> > - db/: db rables і дадзеныя для SQL (для кожнага асобнага віду базы дадзеных)
> > - index.php: уключае ў сябе спіс інстанцый у курсе
> > - view.php: старонка, якая служыць для агляду выбранай інстанцыі
> > - lib.php: Калі модуль акрэслівае нейкія функцыі, то яны павінны знаходзіцца тут. Калі модуль мае назву напр. wіdget, у такім разе неабходнае замяшчэнне наступных функцый:
> >   - widget_add_instance() - код , які служыць для дадавання новых інстанцый
> >   - widget_update_instance() - код, які служыць для актуалізацыі ўжо існуючых інстанцый
> >   - widget_delete_instance() - код, які служыць для выдалення інстанцый
> >   - widget_user_outline() - маючы дадзеную інстанцыю, можна падсумаваць уклад карыстальніка
> >   - widget_user_complete() - маючы дадзеную інстанцыю, можна падрабязна пералічыць усе элементы ўкладу карыстальніка
> >   - каб пазбегнуць магчымых канфліктаў, кожная з функцый модулю павінна пачынацца на wіdget_ . Кожная пастаянная, якую вы акрэсліце, павінна пачынацца WІDGET_
> > - Урэшце кожны модуль будзе уключаць файл, які ўключае ланцугі знакаў для дадзенай мовы. Падрабязнасці знойдзеш ніжэй.

> > Найбольш простым метадам пабудовы новага складніка курсу з’яўляецца выкарыстанне ўзору, які запісаны ў файле mod/newmodule_template.zip. Распакуй яго, а затым прачытай файл README

> > Добрай справай з’яўляецца ўдзел у Форуме, прысвечаным складнікам курсаў. (Activities modules forum on Using Moodle).

> Тэмы

> > Тэмы (Themes / skіns) акрэсліваюць выгляд усяго сэрвісу. Разам з галоўнай дыстрыбуцыяй, прапануецца некалькі простых тэмаў, але ты можаш стварыць сваю ўласную, падбіраючы колеры, стылі і графіку, а таксама змясціўшы свой лагатып

> > Кожная тэма размешчана ў падкаталогу "theme" і уключае, як мінімум, наступныя файлы:

> > - config.php: акрэслівае колеры тэмы, якія ўжываюцца ва ўсім сервісе
> > - styles.php: уключае інфармацыю пра стылі, у тым ліку дэфініцыю CSS для стандартных элементаў HTML, а таксама для многіх модуляў Moodle
> > - header.html: размешчаны зверху кожнай старонкі. Можаш выкарыстаць яго, напрыклад, для размяшчэння лагатыпу.
> > - footer.html: размешчаны знізу кожнай старонкі

> > Каб стварыць уласную тэму для Moodle у існуючай версіі:

> > 1. Скапіюй якую-небудзь з ужо існуючых тэмаў у тэчку з іншай назвай. Прапаную табе пачаць з нейкай стандартнай тэмы.
> > 2. Змадыфікуй config.php і размясці ў ім уласныя колеры.
> > 3. Змадыфікуй styles.php і замяні стылі CSS.
> > 4. Змадыфікуй header.html i footer.html каб дадаць лагатып і візуальную схему старонкі.

> > Памятай, што кожны з гэтых крокаў з’яўляецца апцыянальным. Можаш дыяметральна змяніць выгляд сэрвісу, толькі змяніўшы колеры ў confіg.php

> > Чарговыя версіі Moodle могуць у некаторай ступені змяніць тэмы, таму заўсёды чытай заўвагі да новага выдання, калі карыстаешся нестандартнай тэмай.

> > Асабліва Moodle 2.0 будзе мець зусім новую сістэму дэманстрацыі, якая, хутчэй за ўсё, будзе заснавана на трансфармацыях XSL выхаду XML з Moodle. Верагодна што тэмы будуць мець зусім іншы фармат, але затое будуць куды больш здольныя да мадыфікацыяў (напрыклад будуць мець магчымасць перасоўвання асобных элементаў на старонцы).

> > Больш інфармацыі на гэту тэму знойдзеце на форуме, які прысвечаны тэмам (Themes forum on Using Moodle). Калі створыш добрую тэму, якой бы захацеў падзяліцца, перашлі упакованы файл на форум, прысвечаны тэмам.

> Мовы

> > Moodle запраектаваны як міжнародная платформа. Калі ланцужок знакаў або старонка тэксту, якая дэманструецца, як частка абалонкі, ён падтрымліваецца як моўны файл. Кожная мова захоўваецца ў падкаталогу 'lang'. Структура падкаталогу lang наступная:

> > lang/be - каталог, як уключае ўсе файлы для дадзенай мовы (напрыклад для беларускай)

> > - moodle.php - ланцужкі знакаў (strіngі) для галоўнай абалонкі (інтэрфейсу)
> > - assignment.php - ланцужкі знакаў для модулю заданняў
> > - choice.php - ланцужкі знакаў для модулю выбару
> > - forum.php - ланцужкі знакаў для модулю форум
> > - journal.php - ланцужкі знакаў для модулю дзённік
> > - quiz.php - ланцужкі знакаў для модулю тэст
> > - resource.php - ланцужкі знакаў для модулю рэсурсы
> > - survey.php - ланцужкі знакаў для модулю анкеты
> > - .... і да таго ланцужкі знакаў для ўсіх дадатковых модуляў
> >   Ланцужок знакаў з гэтых файлаў можна атрымаць пры дапамозе get_string()lub print_string() . Кожны ланцужок знакаў замяняе адпаведны ланцужок на іншай мове.
> >   напрыклад: $strdueby = get_string("assignmentdueby", "assignment", userdate($date));
> >   Калі які-небудзь ланцужок знакаў у нейкай мове не існуе, ён аўтаматычна замяняецца сваім ангельскім адпаведнікам.

> > lang/be/help - уключае ўсе дапаможныя старонкі (для дапамогі ва ўсплываючых вокнах)

> > > Галоўныя дапаможныя файлы знаходзяцца непасрэдна ў гэтым каталогу, у той час як дапаможныя файлы дапамогі для асобных модулях змешчаны ў падкаталогі з назвамі адпаведнымі назвам модуляў.

> > > Кнопку дапамогі можна змясціць на старонцы, карыстаючыся функцыяй helpbutton

> > > пp. helpbutton("тэкст", "націсні, каб атрымаць дапамогу на тэму тэксту");

> > > а ў выпадку модуляў:

> > > helpbutton("Тып форум", "Тыпы форумаў", "форум");

> > УВАГА : можаш выдаваць мовы on-lіne, карыстаючыся інструментам адміністравання "Правер мову". Дзякуючы гэтаму можна не толькі лёгка дадаваць новыя мовы, але таксама мадыфікаваць ужо існуючыя. Калі пачнеш пераклад на новую мову, прашу, устанаві кантакт са мной : Martin Dougiamas.

> > Можаш таксама скарыстаць Форум, прысвечаны мовам (Languages forum on Using Moodle).

> > Магу таксама перадаць табе правы запісу CVS у крынічны код Moodle каб ты мог непасрэдна ўпраўляць файламі.

> Схемы базаў дадзеных

> > Калі Moodle атрымае дзеючую базу дадзеных разам з акрэсленымі табліцамі, то мэтанакіраваныя простыя запыты SQL, выкарыстаныя ў Moodle, павінны правільна супрацоўнічаць з рознымі відамі баз дадзеных.

> > Праблема заключаецца ў аўтаматычным стварэнні новых табліцаў у базах дадзеных. Moodle імкнецца гэта выканаць падчас закладкі. Паколькі базы дадзеных у значнай ступені адрозніваюцца, яшчэ не існуе метад выканання гэтага незалежна ад платформы. Каб падтрымаць гэты працэс можна стварыць sekwenc даручэнняў SQL, якія служаць для стварэння табліцы Moodle у канкрэтнай базе дадзеных. Гэтыя файлы знаходзяцца у каталогу lib/db, таксама ў падкаталогу db кожнага модулю.

> > Зараз толькі MySQL і PostgreSQL поўнасцю абслугоўваюцца гэтым механізмам (ніхто не склаў схемаў для іншых баз).

> > Moodle 1.1 будзе выкарыстоўваць новы метад, заснаваны на XML, якая забяспечыць, што тое, што ўсе гэтыя складанасці страцяць актуальнасць.

> Фарматы курсаў

> > Moodle абслугоўвае зараз тры розныя фарматы курсаў : тыднёвы, тэматычны, а таксама сяброўскі.

> > Усе яны некалькі больш прывязаны да кода (і праз гэта менш "эластычныя")чым іншыя модулі, але і тут можна адносна лёгка дадаць новыя фарматы.

> > Калі ты маеш нейкія задумы адносна іншых фарматаў, якія табе патрэбны, або хацеў бы сустрэцца, зкантактуйся са мной, а я зраблю ўсё што змагу, каб уключыць іх ў будучыя дыстрыбуцыі.

> Дакументацыя і артыкулы

> > Калі ты адчуваеш, што можаш напісаць даведнік, артыкул, навуковую працу (або любую іншую) на тэму Moodle, зрабі гэта!

> > Змясці сваю працу ў сетцы і памятай, што трэба таксама змясціць спасылку на http://moodle.org/

> Удзел у знаходжанні памылак

> > Напрыканцы, я б хацеў цябе заахвоціць, каб ты запісаўся ў "знаходжанне памылак " (bug tracker) на старонцы http://moodle.org/bugs , каб абвяшчаць пра ўсе памылкі, якія ты знойдзеш і каб ты мог удзельнічаць у абмеркаванні, як ад іх пазбавіцца.

> > Тэрмін "Памылкі" датычыць не толькі памылак у праграмаванні, але таксама новых ідэй або пажаданняў адносна функцый, або нават канструктыўнай крытыкі існуючых функцый. Прывабнасць праграмавання open-source заключаецца ў тым, што кожны можа прыняць удзел і дапамагчы ў стварэнні лепшага прадукта. У гэтым праекце твой асабісты ўклад будзе прывітаны з радасцю!

> > > Дзякую за карыстанне Moodle!

> > > З найлепшымі зычэннямі,
> > > Martin Dougiamas

Dokumentacja Moodle

Version: $Id: developer.html,v 1.2 2004/12/09 10:34:19 martin Exp $