You are on page 1of 5

Desenvolvimento de uma ferramenta para auxiliar a construo de

plugins
Luciano O. Borges
Pesquisa e Desenvolvimento em Educao a Distncia
IAutomate Integrao de Sistemas
So Paulo SP Brasil
luciano@iautomate.com.br
Resumo. Neste artigo detalho o desenvolvimento de um plugin do Moodle para
auxiliar programadores na produo de plugins. O processo de desenvolvimento
deste plugin foi realizado de uma forma a desmistificar este processo desde o
projeto do plugin at a sua publicao.
Palavras-chave: esenvolvimento! plugins! moodle
1. Introduo
Com a evoluo do Moodle 1.9 para a verso 2.x a plataforma teve uma grande mudana
em sua arquitetura mais precisamente na forma em que o sistema dividido. sta mudana
implicou na separao em m!dulos que se comunicam com o core da plataforma por meio de
"#$s. stas "#$s permitem o uso dos plugins como formas orientadas de estender a
plataforma em seus diversos tipos. Cada tipo de plugin tem uma forma de arquitetura interna
particular que obviamente descende do core da plataforma" porm algumas defini#es so
particulares para cada plugin.
$ ob%etivo deste trabal&o foi a criao de plugin administrativo para aux'lio no
desenvolvimento de plugin na pr!pria plataforma Moodle. Com este trabal&o foram
observados importantes quest#es no desenvolvimento de plugins que podem auxiliar e agili(ar
este processo. )ssim como foram detal&ados os processos de produo de plugins at a sua
publicao no Moodle.org *M$$+," 2-1./.
2. Projeto
$ pro%eto deste plugin veio de encontro a uma necessidade atual da falta de uma ferramenta
para auxiliar no processo de desenvolvimento de plugins no Moodle. 0orm esta ferramenta
no deveria ser um ambiente de desenvolvimento *$%/ e sim possuir pequenas ferramentas
para revisar e corrigir erros no c!digo de um plugin. por ser um con%unto de ferramentas
visa permitir o aumento da sua gama de funcionalidades.
. !erramenta
) ferramenta desenvolvida o Moodle& *https:''moodle.org'plugins'vie(.php)
plugin*tool+moodled t/ que um plugin do tipo ferramenta administrativa *"dmin &ool/ do
Moodle. 1ua arquitetura foi pensada para ser simples e utili(ar ao m2ximo os recursos das
"#$s do Moodle para reali(ar a sua execuo.
$s principais recursos desta ferramenta so3
Criao de pacotes *arquivo compactado/ de um plugin para distribuio4
Criao de pacotes *arquivo compactado/ de um plugin para distribuio somente com
arquivos modificados com base em uma data selecionada4
)n2lise do pacote de idiomas de um plugin a procura de erros e inconsist5ncias4
6erramenta para ordenar as tags dos arquivos de idiomas em ordem alfabtica4
)n2lise das pastas de um plugin a procura de arquivo de 'ndice *index.html/4
7nsero de arquivo de 'ndice nas pastas do plugin como forma de proteo de acessos
indevidos ao plugin4
$ uso de favoritos para guardar um plugin para acesso r2pido4
1uporte a v2rios idiomas *0ortugu5s" 7ngl5s e span&ol/4
1uporte ao Moodle 2...x" 2.8.x" 2.9.x e 2.:.
0ara saber mais detal&es sobre a ferramenta acesse a documentao oficial do plugin em
http:''docs.moodle.org',-'en'Moodle&+.+evelopment+&ools+#lugins+for+Moodle.
". #r$uitetura
Cada plugin possui arquivos dedicados as suas tarefas espec'ficas sendo que a plataforma
recon&ece caso algum arquivo obrigat!rio no este%a dispon'vel.
;asicamente o plugin do tipo "dmin &ool deve conter os seguintes arquivos3
settings.php: este arquivo basicamente serve para inserir o menu do plugin no menu de
desenvolvimento dentro da seo administrativa do Moodle.
/igura 0: $nterface do Moodle&
index.php: este o arquivo principal *vie(/ do plugin onde sero manipuladas as
informa#es enviadas pelo usu2rio e onde sero exibidas as telas do plugin.
locallib.php: neste arquivo so inseridas todas as fun#es<mtodos que sero utili(ados
no plugin como forma de reutili(ao e organi(ao de c!digo.
xxxx+forms.php: este arquivo conter2 o formul2rio din=mico utili(ado pelo usu2rio ao
manipular o plugin.
version.php: neste iro informa#es sobre as vers#es do plugin e suas depend5ncias.
lang<en<xxxx.p&p3 neste arquivo estaro todas as strings utili(adas no plugin. +eve>se
utili(ar uma pasta e um arquivo para cada idioma suportado pelo plugin.
pix<icon.gif3 esta imagem indica o 'cone que ser2 utili(ado pelo plugin.
? recomendado suportar o seu plugin no Moodle 2...x ou superior pois vers#es inferiores a
esta no so mais mantidas pela comunidade Moodle. ) verso 2...x do Moodle somente ser2
mantida at 1unho',203 e a verso 2.8.x at novembro',203 *,)6@AB" 2-1./.
%. Desenvolvimento
Ao desenvolvimento pode>se utili(ar um $% que recon&ea 4&M5" 1avascript e #4# para
facilitar e agili(ar o processo" este pode ser %clipse" Net6eans" etc *M$$+," 2-1./.
1uportar v2rias vers#es do Moodle pode dar certo trabal&o pois &2 fun#es que terminaram
o suporte no Moodle 2...x *$,7C?4 ,)6@AB" 2-1./.
) formatao do c!digo v2ria conforme o tipo do arquivo" porm esta no impede que o
plugin se%a publicado. Decomenda>se tambm utili(ar alguma ferramenta de versionamento
pois o linE do c!digo dever2 ser indicado no momento da publicao. Bambm este auxilia na
administrao das vers#es do seu plugin para desenvolvimento em con%unto com um equipe.
+eve>se indicar o tipo de licena que o seu plugin conter2" mas o ideal que esta indicao
tambm este%a vis'vel como coment2rio nos c!digos do plugin. )lgumas manipula#es de
plugins pela plataforma Moodle fa(em carregamentos de c!digos dos plugin por isso
importante manter os arquivos de seu plugin com permiss#es para o usu2rio do seu servidor"
caso seu servidor se%a 5inux pode ser (((.data ou apache. Com os servidores 7indo(s no
ocorrem estes problemas de permiss#es.
)s informa#es sobre "#$s oficiais do Moodle nem sempre so suficientes para a
construo de um c!digo complexo" pois no &2 muitos exemplos de uso. ? poss'vel aprender
e ter exemplos no pr!prio c!digo do Moodle" pois o c!digo do Moodle relativamente bem
documentado e bem organi(ado. Bambm &2 uma iniciativa em &he 8/ossies8 9oft(are
"rchive *6$1171" 2-1./ que gera sempre na verso mais atuali(ada do Moodle o #4#oc
de todo o coment2rio no c!digo da plataforma com o ox:gen *+$FGHA" 2-1./.
@ma alternativa interessante com a a%uda da comunidade pelo f!rum brasileiro do
Moodle" mesmo que ainda &2 poucas informa#es uma comunidade crescente. 1aiba mais
em https:''moodle.org'course'vie(.php)id*;<.
&. 'estes
0ara reali(ar os testes dentro de um plugin deve se observar algumas regras para ter a
certe(a da sua total execuo. Como tarefa principal deve>se trabal&ar em modo ebug para
observar todas as sa'das de erros assim como alertas de idiomas.
Caso seu plugin faa uso do banco de dados imprescind'vel acompan&ar as grava#es e
altera#es nas tabelas de seu plugin por meio de uma ferramenta externa. sta orientao se
deve ao fato de que alguns erros em banco de dados no retornam sa'das. Bambm
importante caso este%a incorporando a manipulao de arquivos utili(ar uma ferramenta
externa para ver as modifica#es na tabela IfilesJ. Kuando estiver reali(ando modifica#es em
arquivos de idiomas as altera#es somente sero vistas ap!s uma limpe(a do cac&e do
Moodle.
(. Pu)licao
$ processo de publicao inicial bem simples desde que ten&a todas as recomenda#es
anteriores seguidas. 0elo linE https:''moodle.org'plugins'registerplugin.php pode>se publicar
o plugin e aguardar a aprovao.
) aprovao depende da an2lise dos colaboradores da comunidade Moodle" porm &2 dois
pontos que podem ser inseridos para a%udar na concluso da aprovao. ) criao de um local
para issues e um local para documentao podem agili(ar o processo de aprovao de um
plugin assim como a%udar na divulgao e correo do plugin. 0ara solicitar um local de
issues para o seu plugin v2 em https:''trac=er.moodle.org'bro(se'>ON&?$6')
selected&ab*com.atlassian.jira.jira.projects.plugin:summar:.panel *6$1BD4 D7++A"
2-1./.
0ara criar a documentao para o plugin v2 em http:''docs.moodle.org'en'#lugin+name. )
edio desta p2gina depender2 de uma permisso solicitada diretamente a colaboradora do
Moodle 4elen /oster em helen@moodle.org *,$714 6$1BD" 2-1./.
*. +onsidera,es !inais
) criao de um plugin para o Moodle atualmente pode ser uma boa alternativa a uma ideia
se%a de aplicao educacional ou comercial.
$ processo de desenvolvimento completo de um plugin autoinstrutivo" ou se%a" o
programador aprende muito no processo tendo condi#es de desenvolvimento de outros
plugins mais rapidamente.
-. .efer/ncias
+$FGHA. +oxLgen3 Henerate documentation from source code. +ispon'vel em3
M&ttp3<<NNN.doxLgen.org<index.&tmlO" 2-1..
6$1171. 6ossies +ox3 Moodle 2.9.P *QinofficialQ and Let experimental doxLgen>generated
source code documentation/. +ispon'vel em3 M&ttp3<<fossies.org<dox<moodle>2.9.P<O" 2-1..
6$1BD" R.4 D7++A" S. Moodle.org3 BracEer for B&ird 0artL )dd>ons. +ispon'vel em3
M&ttp3<<docs.moodle.org<dev<BracEerTforTB&irdT0artLT)dd>
onsU)ddingTtoTanTexistingTissueO" 2-1..
,)6@AB" . Moodle.org3 Deleases. +ispon'vel em3
M&ttp3<<docs.moodle.org<dev<DeleasesO" 2-1..
,$71" 6.4 6$1BD" R.. Moodle.org3 0lugin documentation. +ispon'vel em3
M&ttp3<<docs.moodle.org<dev<0luginTdocumentationO" 2-1..
$,7C?" +. M.4 ,)6@AB" .. Moodle.org3 +eprecation. +ispon'vel em3
M&ttp3<<docs.moodle.org<dev<+eprecationO" 2-1..
M$$+,. Moodle.org3 +eveloper documentation. +ispon'vel em3
M&ttp3<<docs.moodle.org<29<en<+eveloperTdocumentation<O" 2-1..
0R0. 0R0 +ocumentation. +ispon'vel em3 M&ttp3<<NNN.p&p.net<manual<ptT;D<O" 2-1..

You might also like