Curso de Framework e Programação de Extensões Joomla 1.6
Curso de Framework e Programação de Extensões Joomla 1.6
Escrito por Emerson Rocha LuizEste é o anuncio do curso de “Framework e Programação de Extensões Joomla!”. Se você está procurando pelo “Curso de Administração do CMS Joomla! 1.6”, que será gratuito e fora do horário comercial, visite o outro anúncio.
Saiba o que está contratando
Este é um artigo referente a um serviço profissional que presto como consultor independente, ou, quando aplicável, como empresa. Antes de entrar em contato, recomendo que leia mais sobre quem sou para ficar mais seguro sobre sua escolha.
Ministrarei em Porto Alegre de 28 de fevereiro a 4 de março o curso “Framework e Programação de Extensões Joomla”, focado em Joomla 1.6, com compatibilidade para Joomla 1.5. Observe que hoje, não existem cursos abertos publicamente no Brasil que ensinem a programar extensões ou que se estendam a questões de segurança em sites Joomla no nível a que este se propõe. Quanto a próxima data de realização deste curso, leia a FAQ.
O foco deste curso é passar um conhecimento mínimo para ser um bom administrador do CMS Joomla! bem como, através do Framework Joomla! e a lógica de Padrão MVC, criar condições para gerar suas próprias extensões e saber editar de forma consciente extensões de terceiros que sejam código aberto.
Outro ponto significativo é que, mesmo que você não se foque em mais tarde se tornar um desenvolvedor Joomla!, quer seja por decisão própria ou por decisão da entidade que representa em não usar esse CMS,boa parte da lógica do curso é comum a qualquer tipo desenvolvimento WEB. De certa forma, o objetivo do curso é mostrar alguns problemas existentes, discutir soluções puras nas linguagens nativas e, então, apresentar o CMS e Framework Joomla! como um meio de otimizar seu tempo de desenvolvimento e garantir maior segurança no seu projeto.
Publico alvo principal (gratuito)
- Gerentes de TI ou equivalentes de Universidades Federais e Estaduais públicas, em especial da UFRGS e a UERGS;
- Gerentes de TI ou equivalentes do governo, em especial de área ligada a saúde ou de policiamento.
O numero de vagas é restrito, e para este público alvo é totalmente sem custos, e haverá certificado de participação.
Explicitamente recomendo que leia a FAQ “O quanto eu devo saber de programação para fazer este curso?” caso você já não seja um programador PHP.
Público alvo secundário (pagante)
- Profissionais que já são programadores (preferencialmente em PHP), e que tem querem conhecer o desenvolvimento de soluções próprias com o Framework e CMS Joomla!, sem necessitar experiência no desenvolvimento de soluções próprias em qualquer CMS.
- Profissionais que tem uma base sólida do funcionamento do CMS Joomla, conhecimento razoável em lógica de programação e que está disposto a, antes de ir ao curso, estudar um mínimo de PHP.
Para o público alvo pagante, será limitado a 8 pessoas, e serão aceitos conforme confirmação de inscrição.
Reitero, recomendo que leia a FAQ “O quanto eu devo saber de programação para fazer este curso?” caso você já não seja um programador PHP.
Estrutura do curso
A estrutura básica do curso é formada pelos conteúdos abaixo:
- Administração do CMS Joomla!;
- Aplicativos, linguagens e conceitos pertinentes ao desenvolvimento de extensões Joomla!;
- Framework Joomla!;
- Desenvolvimento de extensões Joomla!;
- Laboratório.
Estes conteúdos não são rigorosamente fixos, abrindo margem para um assunto de um dos conteúdos ser reforçado ou ministrado com maior ênfase ao ser necessária sua utilização dentro de outro tópico. Tampouco terão uma divisão uniforme de tempo. No entanto, os três últimos temas serão ministrados de três a até quatro dos cinco dias previstos de curso. Cada dia terá pelo menos 8 horas de aula teórica e prática, com um computador por pessoa. Caso você já tenha seu notebook, poderá trazê-lo se preferir.
Administração do CMS Joomla! 1.6 e 1.5
Antes de partir para programação, o ponto de partida do curso é garantir um conhecimento padrão mínimo do CMS Joomla! a todos os participantes, de modo que o participantetenha condições de ser um bom usuário e gerente de sites. O conteúdo deste dia será semelhante ao do “Curso de Administração do CMS Joomla! 1.6”, porém apresentado com mais tempo, visto que parte dos temas deste outro curso focado apenas na administração serão explicados com muito mais ênfase nos próximos tópicos deste de programação e Framework Joomla!.
Já no primeiro dia, você também criará seu primeiro componente, que lhe será útil: ele será capaz de pegar dados de um formulário, executar, e mostrar o resultado. Será o terminal de comando J!, feito por você para você.
Aplicativos, linguagens e conceitos pertinentes ao desenvolvimento de extensões
De forma prática, com relação a linguagens e frameworks que serão discutidos, serão abordados:
- PHP 5+;
- SQL (MySQL 5+);
- Javascript, e Framework: Mootools 1.3;
- CSS 2 (puro, sem foco em frameworks);
- HTML 4;
A versão HTML 5 será pouco discutida em função de não estar completamente implementada nos navegadores atuais. No entanto, também pensando nos Designers, será apresentando o tema Beez do Joomla 1.6 que é em HTML 5 e via Javascript torna os navegadores atuais aptos a emular HTML 5.
Além disso, alguns conceitos não exclusivos ao desenvolvimento em Joomla, e em maior ou menor grau serão também abordados no curso
- Arquitetura MVC (Model-View-Controler);
- Banco de Dados;
- Nested Categories;
- Otimização para sistemas de busca;
- AJAX;
- Ataques comuns a sites (SQL Injection, Cross-site request forgery, Remote Code Execution);
Dentro os programas usados durante o curso, os únicos que são imprescindíveis são o MySQL Workbench e o Navegador Firefox com a extensão Firebug e a Web Developer. Quanto ao editor de código fonte, será usado o Netbeans/Eclipse/Notepad++.
Observe que as informações passadas nesta parte do curso são genéricas e não são usadas apenas no desenvolvimento de extensões com Joomla!, porém seu estudo será voltado para este objetivo. Além disso alguns dos exemplos práticos serão ligados ao Joomla!, o que de certa forma antecipa parte do conteúdo dos tópicos seguintes.
Framework Joomla! 1.6 e 1.5
O Framework Joomla! 1.6 será apresentando, também salientando as diferenças do Joomla! 1.5, de modo que mesmo os usuários que vão programar em 1.5 não tenham problemas.
O tempo empregado para explicar cada função ou grupo de funções será proporcional a dificuldade de uso e a freqüência de uso da função, considerado um programador comum de extensões.
Assim como o desenvolvimento de extensões, esta parte do curso será a que tomará uma das maiores cargas horárias. Ela é teórica e prática ao mesmo tempo: primeiro saberá o que cada função ou grupo de funções semelhantes, e tanto quanto possível você poderá usar seu terminal de comando J! para testar em tempo real o que vai apreender.
Ainda que o foco seja o uso do Framework Joomla!, será explicado como acrescentar outros frameworks no CMS Joomla.
Desenvolvimento de extensões
Nesta parte do curso, o aluno já sabe como o CMS Joomla! funciona, como usar o Framework Joomla! entre outros conceitos básicos. Com isso, está habilitado a criar efetivamente extensões.
Questões como “o que deve ser feito para converter ou integrar minha aplicação externa ao Joomla!” serão respondidas durante esta etapa do curso, e reforçadas laboratório em caso de dúvidas.
Será abordado o uso prático de rotinas comuns (e também de algumas não tão comuns) em extensões, explicitamente explicadas detalhadamente conforme a pertinência ou então apenas com apresentação de código como exemplo.
Criação de componentes
Será explicado como criar um componente Joomla! a partir de uma estrutura mínima, como suporte a compreensão orientada da a lógica de implementação do padrão MVC, que tende a gerar dúvidas, de modo semelhante ao que aconteceria no mundo real de um desenvolvedor de extensões.
Dentro do tópico de Desenvolvimento de extensões, será a parte que tomará o maior tempo, visto sua importância e complexibilidade.
Criação de módulos
Questões específicas de uso e implementação de módulos serão apresentadas.
Comparado a compontentes, plugins e templates, os módulos são os mais simples. Por isso naturalmente vão exigir menos tempo de explicação.
Criação de plugins
Assim como apresentado logo no início desta etapa de criação de extensões, os plugins Joomla! tem características bem singulares em relação a componentes, módulos e templates. Também como ponto adicional, serão especificadas as diferenças entre os tipos de plugins, a citar:
- Authentication (J! 1.5 e J! 1.6)
- Content (J! 1.5 e J! 1.6)
- Editors (J! 1.5 e J! 1.6)
- Editors-xtd (J! 1.5 e J! 1.6)
- Extension (J! 1.6)
- Search (J! 1.5 e J! 1.6)
- System (J! 1.5 e J! 1.6)
- User (J! 1.5 e J! 1.6)
Explicitamente, não será abordado o tipo de plugin xmlrpc, que está em desuso na versão 1.6 e que, na prática, foi pouco explorado desde sua idealização com o Joomla! 1.5.
Criação de templates
Ainda que criação de templates mereçam um curso inteiramente específico – design, usabilidade e programação HTML/CSS com ou sem suporte a algum framework que facilite a construção de templates – este curso irá explicar o básico de criação de templates, de modo que dependa de você em especial a habilidade de design e outros conceitos voltados nesta área já pré-existentes ou por serem apreendidos em outros cursos, não necessariamente voltados ao Joomla!.
Pelo contexto geral desde curso ser focado em programação e framework, você terá mais familiaridade com conceitos e edições que tipicamente podem representar maiores dificuldades, como no caso do template overides.
Quanto a cursos específicos desta área de desenvolvimento de extensões que fortemente recomendo, leia a FAQ.
Laboratório
Pré-laboratório ou o “Brainstorming de algoritmos de extensões”
Baseado no potencial incrível do Framework Joomla!, e com (ou sem!) o CMS Joomla! como base, todos os alunos são convidados a imaginar como seria para desenvolver um projeto que atenda as necessidades que são realizadas por alguma outra solução mais específica, ou então para resolver um problema ainda sem resposta. Isto vai desde a necessidade de um aluno específico que quer fazer no laboratório, a até mesmo criar um “Orkut”, e como é, essencialmente, um mapa mental desenhado, com maior ou menor detalhamento, o tempo real empregado em cada projeto é pequeno.
Como será algo envolvendo todos os alunos, em torno de 16 pessoas, maior parte programador ou próximo disso e com diferentes experiências e práticas, a tendência de prever problemas que apareceriam a cada novo passo e propor soluções é bem interessante. Neste ponto, você terá noção real do potencial do que poderia ser feito, dependendo praticamente só de quanto tempo estaria disposto a programar algo específico.
Algo que vai ser aproveitado para comentar nesta parte do curso, é a relação entre o que o cliente acha que quer, o que ele realmente quer, e o que você idealiza que vai ser entregue, e o que seria entregue. Mais do que apenas saber programar, é importante ter uma noção de que nem tudo sai como esperado, e ao saber disso e fazer uma projeção de horas e orçamento mais real, tanto você quanto possíveis clientes ficariam menos estressados.
Abaixo, segue uma lista de alguns conceitos teóricos que, conforme a preferência dos presentes, serão abordados do ponto de vista de programação em Joomla!. Observe que, em especial os que dependem de outras tecnologias e lógicas de implementação, dependem que você apreenda conceitos que não terão sido explicados neste curso, logo a parte abordada aqui será do ponto de vista de como implementar programação em Joomla.
- Site com interface totalmente em Ajax, sem recarregar a página;
- Site totalmente em Flash porém administradovia Joomla!;
- Troca de informações de pagamento entre sites, com retorno, estilo Paypal, Pagseguro, Moip, e outros;
- Projeto estilo Marketing Multi-Nível (quem indica mais ganha mais pontos);
- Identificar nagevador e gerar no HTML o CSS específico para cada tipo e versão de navegador;
- Encurtador e redirecionador de URL, estilo bit.ly;
- Redirecionador de URLs com propaganda
- Componente que gera certificados em PDF com numero de autenticação via seu site.
Laboratório do curso: suas idéias em prática!
Pelo menos no último dia de curso, talvez desde parte do quarto dia, você será convidado a pôr em prática as idéias que lhe agradarem do “Brainstorming de algoritmos de extensões”, ou então alguma outra idéia na qual você esteja seguro de como realizá-la e que não chegou a propor no dia anterior.
Será estimulado que haja a formação de duplas ou grupos, conforme o interesse em desenvolver os projetos, também levando em consideração aqueles que se sentem menos seguros ao programar.
Se por exemplo um projeto abranger três alunos, o ideal seria em um primeiro momento, todos estarem junto na modelação e formação das tabelas do banco de dados do componente, e então haver alguma divisão de tarefas conforme as preferências de cada um. Alguém poderia ficar responsável pela criação do frontend (parte da área pública) do componente principal, outro programador com o backend (área administrativa) e o terceiro aluno do grupo ficar vendo possíveis módulos e plugins que seriam necessários, e assim que o primeiro terminar, ou ajudar os demais, ou então partir para outro projeto.
Importantíssimo ressaltar: todo o código fonte criado no curso deverá ser disponibilizado para os demais participantes do curso. Ainda assim, você ou as pessoas que fizerem o projeto com você podem requerer direitos de cópia e definir a licença e se vão ou não liberar para pessoas externas o código criado.
O aluno que concluir este curso:
- Será um bom Administrador de CMS Joomla! versões 1.6 e 1.5 , conhecimento esse que será consolidado com alguma prática posterior ao curso.
- Saberá criar componentes, módulos, plugins e templates Joomla! e terá facilidade ao editar extensões de terceiros.
- Se já usa o CMS, passará a usar o mínimo de extensões possíveis em sites, e, dentre as extensões que escolher, vai olhar o código fonte antes e levar muito em conta se são bem escritas.
- Estará ciente dos principais tipos de ataques a sites da WEB, e os específicos a sites Joomla!, e terá condições de tomar medidas preventivas para blindar seu sites contra ataques que vão além de só mantê-lo atualizado.
- Terá, implicitamente, melhorado seus conceitos de PHP e de lógica em MVC. Provavelmente será mais fácil lidar com outros CMSs ou mesmo desenvolver do zero ou alterar outras aplicações que usem outro Framework que seja a lógica MVC depois de algumas horas percebendo as diferenças.
- Terá noções essencialmente úteis de HTML4, CSS, Javascript/Mootools para serem usados em qualquer tipo de site.
FAQ
Como surgiu a ideia do curso?
O Objetivo principal do curso é deixar claro, em especial de instituições governamentais, do potencial que o CMS Joomla! tem, e, assim como a versão do curso de Administração do CMS Joomla!, desmistificar alguns dogmas que se criaram em função de más experiências com usuários do CMS que por imperícia, desconhecimento, ou mais comumente displicência, de um usuário de algum Joomla!.
Por que o público alvo são gestores de TI de instituições de ensino público e do governo?
Situação que acredito que não é comum somente o Rio Grande do Sul, é que os setores de TI tanto de departamentos de Universidades ou de departamentos do Governo do Estado não têm um incentivo tanto em pessoal de TI, como em especialização adequada. Entidades como essas tem um grande numero de usuários e, mais do que apenas um CMS de internet ou intranet para exibir notícias, tem um potencial muito grande para benefício real dos atendidos e que poderia ser contemplado com um bom gerenciamento de informações.
Posso dar um exemplo pessoal. Alguns anos atrás fui coordenador de gestão do SAMU Metropolitano de Porto Alegre. Um dos problemas do Estado era gerenciamento e análise estatística de dados. Sabia-se que, por exemplo, relacionar quantidade e o tipo de chamado de socorro que causaram chamados ao SAMU, poderiam servir para concluir situações úteis como problemas com criminalidade maior em uma região, aumento de acidentes em certas ruas e outros mais. Com dados como estes, e também considerando que diferente do que com registros de queixa na polícia em que pessoas tem a opção de não dar, no SAMU, alguém que leva um tiro, vai passar pelo SAMU, com provas estatísticas de aonde o problema está acontecendo, não seria complicado conversar com outros setores do governo e trabalhar para reduzir o número de clientes do SAMU. Além desse apoio a setores internos, havia, por exemplo, outros detalhes que poderiam ser vistos dentro do próprio SAMU, como saber em quais regiões de quais cidades o tempo de resposta era menor ou maior, e quando o tempo de resposta médio de ambulâncias são maiores do que o ideal ou desejável quando o chamado de emergência é um AVC, o problema é bem tenso. Naquela época, quando nem possuia conhecimento em programação ou o Framework Joomla! como é hoje, junto com um dos médicos reguladores que era um carioca simpático, tinha começado a desenvolver um software para gerenciar tudo isso. O projeto acabou não seguindo adiante porque em função de eu ter me afastado do meu cargo e, mesmo com intenção de continuar com esse projeto, não vingou porque precisaria de mais pessoas ajudando a desenvolver ou então muitas horas seguidas, situação que minha vida pessoal não permitiu. E eu fiquei triste com isso.
Existem outros motivos além desse, porém para não me alongar, vamos dizer que eu pessoalmente acredito que pessoas que fazem um trabalho que não precisariam estar fazendo por uma entidade que defende algo louvável, merecem mais o meu respeito do que outros.
Em torno de que tipo de problema meu posso levar para tentar resolver durante o “laboratório” do curso?
Preferivelmente algo compatível com o que você acha que com algum esforço saberia fazer em PHP, em especial alguma extensão nova, mesmo que baseada em algum sistema seu. Explicitamente, é interessante que não fique essas horas, por exemplo, para querer resolver um problema de uma extensão especifica qualquer que não siga os padrões MVC (caso do Virtuemart, por exemplo), ou criando uma extensão de uma extensão.
Se você é programador, e tem algum aplicativo que quer portar, a exemplo de uma extensão que tem telas CRUD, procure já deixar pronto pelo menos o script para criação das tabelas do seu banco de dados em MySQL. Conforme a complexidade ou se você tem ou não colaboração de outros para ajudar no seu projeto, talvez seu aplicativo não ficaria pronto durante o laboratório, porém como vai ver que uma das vantagens do Joomla! é que pedaços dos seus códigos podem ser reutilizáveis, é eficiente ajudar a resolver a parte difícil do seu problema, e deixar o trivial para resolver sozinho, e ao mesmo tempo permitir que você possa cooperar com outros que estiverem na sala.
Cursos de como fazer templates em Joomla! que recomendo
No Rio Grande do Sul não tenho conhecimento de cursos envolvendo melhor esta área. No Brasil, recomendo os que o André Andrade e equipe (Estudio Site) no Rio de Janeiro, o Daniel Corrêa em Minas Gerais e o Ronildo em São Paulo ministrem, também pela forte atuação na comunidade Joomla! nos últimos anos.
O quanto eu devo saber de programação para fazer este curso?
Observe que não é extremamente necessário ser um programador PHP experiente. Caso você se considera que “sabe usar o google em tempo real”, provavelmente ficará mais seguro ao saber que terá acesso a códigos fontes parecidos aos que provavelmente teria que fazer, além de manuais de referencia do PHP e do framework Joomla. Ou seja, um ambiente real de um desenvolvedor de extensões.
No caso daqueles que não tem muita prática em programação em PHP, provavelmente o que acontecerá depois do curso é que sim, vão conseguir fazer suas extensões, porém vão demorar um pouco mais, e precisar visitar alguns fóruns e sites de referência, em especial, o Google.
É possível sugerir algum tema ou solução de problema a ser abordado no curso?
Sim. Junto com os dados de inscrição, você pode explicar também alguma dúvida ou tipo de problema que gostaria de ver abordado no curso. Conforme o caso, ele pode ser citado ou até mesmo usado como exemplo durante o curso.
Qual será o material entregue aos participantes do curso?
Os alunos receberão código fontes usados durante o curso, tanto os que são base para criação de componentes, módulos, plugins e templates em branco como os que contém funcionalidades práticas. Além disso, os pedaços de código de exemplo ministrados durante o curso também serão fornecidos, de modo que estejam prontos para consulta e uso prático no seu cotidiano.
Os arquivos de apresentação, ou os guias de referência dos assuntos, a exemplo das recomendações de segurança, também serão entregues.
Quando será o próximo curso deste tipo?
O curso voltado a Administração do CMS Joomla! provavelmente terá alguma regularidade -- talvez semestral -- porém não tenho certeza se irei ministrar este curso de Desenvolvimento de Extensões Joomla! nos moldes deste novamente neste ano.
Não obstante, isto não quer dizer que eu não vá continuar liberando de graça informações de como programar em Joomla! neste site ou prestando suporte em fórums como venho fazendo a anos. Dentre meus planos, reescrever e melhorar completamente o JoomlaFox para os Devs Joomla!, porém será renomeado para ser compatível com as regras que estão no do JED.
Como faço para me inscrever no curso? (somente público pagante)
Para o publico pagante, este curso com duração de 5 dias e 40 horas ou mais, custará R$1200,00 por pessoa, e a seleção será feita exclusivamente pela ordem de confirmação de pagamento.
Para pagamento parcelado em até 12 ou mais vezes em cartão de crédito, ou desconto significativo aos que quiserem reservar com antecedência, entre em contato via e-mail e acerte como fica melhor para você.
Como faço para me inscrever no curso? (público pagante e não pagante)
No caso de se encaixar no perfil de publico não pagante, envie intenção de participar totalmente de graça do curso com as seguintes informações:
- Nome completo;
- Dados para contato, como email e telefone;
- Sua experiência técnica prévia relacionada com Joomla! e, programação de alguma linguagem, ou uso de algum CMS próprio da sua instituição ou de terceiros;
- A qual entidade é vinculado, setor nesta e seu cargo;
- Dados de contatos da sua entidade ou do seu setor específico, como telefone e e-mail.
Observe que a quantidade de vagas disponíveis será baseada na procura. Embora não seja o fator principal que definirá quem vai ser aceito como público principal a data de envio de interesse, a solicitação de interesse do e-mail poderá ser considerada. No caso de indicar mais de um participante, informe todos os dados de ambos.
No caso de se encaixar no público alvo secundário (pagante):
- Nome completo;
- Dados de contatos seus, como email e telefone;
- Sua experiência técnica prévia relacionada com Joomla! e, programação de alguma linguagem, ou uso de algum CMS próprio da sua instituição ou de terceiros;
Neste caso, a confirmação de participação será data após conforme demonstração de interesse antecipado e confirmação de pagamento. No caso de indicar mais de um participante, informe todos os dados de ambos.
O e-mail de contato, considerando também para inscrições, é emerson@webdesign.eng.br.