desenvolvimento para moodle desenvolvimento de plugin de relatório para moodle lino vaz moniz...
TRANSCRIPT
Desenvolvimento para Moodle
Desenvolvimento de Plugin de Relatório para Moodle
Lino Vaz [email protected]
http://www.badiu.net/
Moodle Moot 2014
Sumário
Tipos de plugin
Estrutura básica de um plugin de relatório
Instalação do plugin
Cabeçalho e Rodapé do Thema
Listar usuário
Formulário de filtro de usuário
Tipos de Módulo/Plugin
Matrículamoodle/enrolAutenticaçãomoodle/authRelatório do cursomoodle/course/reporterRelatório de notamoodle/grade/repórter
Relatório no contexto do sistemamoodle/admin/report (até moodle 2.1)
moodle/report (a partir de moodle 2.2)
Exportação de notamoodle /grade/exportTema (interface gráfica)moodle/themeFormato de cursomoodle/course/format
Tipos de Módulo/Plugin
Tipo de questãomoodle/question/typeAtividademoodle/modCampos para base de dados moodle/mod/data/fieldTipo de Atividade tarefamoodle/mod/assignment/typeRelatório de questionáriomoodle/mod/quiz/reportBlocos moodle/blocksCampo de perfil de usuáriomoodle/user/profile/fieldPlugin deversosmoodle/local
Banco de Dados do Moodle
Estrutura Básica do Plugin
badiu lang/en/report_badiu.php
settings.php version.php index.php
lang/en/report_badiu.php
<?PHP $string['pluginname']='Badiu';$string['alou']='Alou só alegria!';?>
settings.php
<?php defined('MOODLE_INTERNAL') || die;
defined('MOODLE_INTERNAL') || die; $ADMIN->add(
'reports', new admin_externalpage(
'badiu', get_string('pluginname', 'report_badiu'), "$CFG->wwwroot/report/badiu/index.php“
) );
$settings = null;?>
version.php
<?PHP defined('MOODLE_INTERNAL') || die;
$plugin->version = 2014052500; $plugin->requires = 2012112900; $plugin->component = 'report_badiu';
?>
index.php
<?php require("../../config.php");
echo get_string('alou', 'report_badiu'); ?>
Instalação
Local:MOODLE_DIR_INSTALACAO/report
Finalizar Instalação
Acessar o Plugin
Página Principal
Adicionar Cabeçalho e Rodapé do Thema
<?php require("../../config.php");
//Cabeçalho do thema $context = get_context_instance(CONTEXT_SYSTEM ,1); $PAGE->set_context($context); $PAGE->set_url('/report/badiu/index.php'); $PAGE->navbar->add(get_string('pluginname','report_badiu'),
new moodle_url("$CFG->httpswwwroot/report/badiu/index.php")); $PAGE->navbar->add(get_string('lista_usuario','report_badiu')); $PAGE->set_title(get_string('lista_usuario','report_badiu')); $PAGE->set_pagelayout('report'); $PAGE->set_heading(get_string('lista_usuario','report_badiu')); //imprimir cabeçalho echo $OUTPUT->header(); echo get_string('alou', 'report_badiu'); //imprimir rodapé echo $OUTPUT->footer();
?>
Aplicação do Cabeçalho e Rodapé
Lista de Usuário
Adicionar string no pacote de língua
Extrair lista de usuário do banco de dados
Imprimir lista de usuário
Lista de Usuário
Adicionar String no Pacote de Língua
$string['id']='ID';$string['nome']='Nome';$string['email']='E-mail';
Lista de Usuário
Extrair Lista de Usuário do Banco
function get_usuarios(){ global $DB; global $CFG; $sql="SELECT id,firstname,email FROM {$CFG->prefix}user "; $lista=$DB->get_records_sql($sql); return $lista; }
Lista de Usuário
Imprimir Lista de Usuário
function imprimir_usuarios($lista){ $table = new html_table(); $table->head = array(
get_string('id', 'report_badiu'),get_string('nome', 'report_badiu'),get_string('email', 'report_badiu')
); $table->align = array('left', 'left','left'); $table->width = '95%'; $table->class = 'generaltable'; $table->data = array(); foreach ($lista as $usr) { $table->data[] = array($usr->id,$usr->firstname,$usr->email); } echo html_writer::table($table);}
Lista de Usuário
Lista de usuário na Página Principal index.php
//imprimir cabeçalho echo $OUTPUT->header(); //extrair lista de usuários $lista=get_usuarios(); //imprimir lista de usuarios imprimir_usuarios($lista); //imprimir rodapé echo $OUTPUT->footer();
Lista de Usuário
Página Principal com a Lista de Usuários
Formulário de Filtro do Usuário
Adicionar string no pacote de língua
Criar formulário
Instanciar formulário
Capturar parâmetro
Passar parâmetro para SQL
Formulário de filtro de usuário
Criar Formulário index_form.php
<?php require_once $CFG->libdir.'/formslib.php';class usuario_form extends moodleform { function definition() { global $param; $mform =& $this->_form; $renderer =& $mform->defaultRenderer(); $mform->addElement('header', '',get_string('pesquisar_usr','report_badiu'), ''); $mform->addElement('text', 'nome', get_string('nome','report_badiu'),'size="20"'); $mform->setType('nome', PARAM_TEXT); $mform->setDefault('nome', $param->nome); $mform->addElement('text', 'email', get_string('email','report_badiu'),'size="20"'); $mform->setType('nome', PARAM_TEXT); $mform->setDefault('email', $param->email);
$this->add_action_buttons(true,get_string('pesquisar','report_badiu')); } function validation($data, $files) { $errors = parent::validation($data, $files); return $errors; }} ?>
Formulário de filtro de usuário
Instanciar Formulário
//importar index_form.phprequire("$CFG->dirroot/report/badiu/index_form.php");
//instanciar form$form= new usuario_form();
//imprimir form $form->display();
Formulário de filtro de usuário
Capturar Parâmetro
function get_form_parametros(){
$param= new object();
$param->nome=optional_param('nome', NULL,PARAM_TEXT);
$param->email=optional_param('email', NULL,PARAM_TEXT);
return $param;
}
Formulário de filtro de usuário
Adicionar Filtro SQL no WHERE
function get_usuarios($param){ global $DB; global $CFG; $wsql= get_filtro_sql($param); $sql="SELECT id,firstname,email
FROM {$CFG->prefix}user WHERE id > 0 $wsql ";
$lista=$DB->get_records_sql($sql); return $lista; }
Formulário de filtro de usuário
Juntar Tudo na Página Principal index.php
//imprimir cabeçalho echo $OUTPUT->header(); //receber parâmetros do form $param = get_form_parametros(); //instanciar form $form= new usuario_form(); //imprimir form $form->display(); //extrair lista de usuários $lista=get_usuarios($param); //imprimir lista de usuarios imprimir_usuarios($lista); //imprimir rodapé echo $OUTPUT->footer();
Formulário de filtro de usuário
Tela com Formulário de Filtro
CÓDIGO FONTE DO PLUGIN BADIU
Compatível com a versão 2.2 ou superior do Moodle
Versão Descrição Link1.0 Estrutura básico do plugin http://badiu.net/download/badiu/badiu_1.0.zip
1.1 Adiciona cabeçalho e rodapé do thema
http://badiu.net/download/badiu/badiu_1.1.zip
1.2 Relatório de lista de usuário cadastrado no Moodle
http://badiu.net/download/badiu/badiu_1.2.zip
1.3 Relatório de lista de usuário cadastrado no Moodle com formulário de filtro
http://badiu.net/download/badiu/badiu_1.3.zip
API do Moodle
API Usado
Banco de dadoshttp://docs.moodle.org/dev/Data_manipulation_API
Formuláriohttp://docs.moodle.org/dev/Form_API
Stringhttp://docs.moodle.org/dev/String_API
Themahttp://docs.moodle.org/19/en/Theme_basics