Pam Roth - - PDF
Pam Roth -
Download "Pam Roth - www.sxc.hu"
Otávio de Mendonça Delgado
1 Gerenciamento de conteúdo com o Plone 3.0 ANÁLISE Campeão de conteúdo A simplicidade e o poder do Plone tornam-no a escolha de CMS de Código Aberto para sites sofisticados. Sua versão 3.0 traz diversos avanços e melhor suporte a aplicações corporativas. por Jan Ulrich Hasecke Pam Roth - A classe de ferramentas conhecida como Gerenciadores de Conteúdo (CMS, na sigla em inglês) inclui tudo desde softwares de fórum como o PHPBB passando por programas para blogs como o Wordpress, até sistemas complexos como o Typo3. Muitas dessas ferramentas baseiam-se no PHP. Como a maioria dos serviços de hospedagem já suportam PHP, os aplicativos CMS que usam essa linguagem estão muito difundidos. Entretanto, as ferramentas em PHP rapidamente atingem um limite quando é alta a demanda por segurança, gerenciamento de acesso para usuários e grupos, e gerenciamento de processos com base em workflow. Nos últimos anos, o CMS de escolha para aplicativos mais sofisticados tem sido o Plone[1], que se baseia no servidor de aplicações web Zope. O projeto Plone lançou em Agosto uma nova versão. O Plone 3.0 herda a reputação de alta segurança e recursos de workflow avançados. A última versão também traz novos recursos, como edição inline verificação de links e referências e indexação do texto completo de documentos PDF e DOC. O Zope é um sistema profissional, e o equivalente em Python dos poderosos sistemas de desenvolvimento web para Java, como JBoss, Websphere ou Weblogic. Com sua arquitetura de componentes, o Zope oferece uma base absolutamente sólida para o Plone, tornando-o muito interessante para aplicações críticas de negócios. Assim como o Zope, o Plone também se baseia em Python, uma linguagem de programação orientada a objetos conhecida por sua elegância e simplicidade. O código em Python, altamente legível, é útil em projetos nos quais o trabalho em equipe seja importante. Ele também possui uma das maiores e mais ativas comunidades de desenvolvimento de Código Aberto, com 160 desenvolvedores centrais e mais de 500 programadores de extensões. O Plone roda em todos os principais sistemas operacionais, incluindo Windows, Linux e Mac OS X, e há instaladores que fazem todo o trabalho por você. Caso deseje experimentar o Plone, é interessante optar por essa técnica, que o leva sem esforço a uma tela do Plone (veja a figura 1). Para uma instalação profissional, talvez seja mais interessante compilar todos os componentes Python, Zope e Plone a partir do código-fonte. O Plone 3.0 exige a versão do Python e o Zope O Plone não requer um banco de dados relacional, pois o sistema usa o banco de dados integrado Zope object database, ou ZODB. O ZODB adere ao ACID; suporta a reversão de operações, replicação e funcionalidade de backup a quente. Ele também pode usar os Zope Enterprise Objects (ZEOs) como uma solução central de servidor de banco de dados para servir dados a múltiplas 70
2 Plone 3.0 ANÁLISE instâncias paralelas do Zope com fins de balanceamento de carga. Isso torna o Plone altamente escalável, mas, se for preferível usar um banco de dados SQL, é possível usar mapeadores objeto-relacionais para ligá-los ao Plone. Edição simples O Plone possui uma interface gráfica bastante intuitiva. A edição está integrada ao layout normal do site, em vez de exigir uma interface de edição separada. Isso significa que os usuários podem ver o efeito de suas alterações imediatamente, no lugar de lutar contra as ferramentas de navegação de um sistema editorial separado. Ao editar um artigo, ele é simplesmente exibido com uma outra moldura, que contém os menus de edição apropriados. Caso você tenha as permissões, é possível clicar para alternar elementos isolados de uma página, tais como o cabeçalho, a descrição e o texto do corpo, para o modo de edição, sem afetar o resto da página. Esse método é realmente útil caso se deseje fazer rápidas mudanças editoriais. Esse efeito é alcançado com Ajax, que o Plone suporta graças à plataforma KSS[2] (Kinetic Style Sheets). O Plone armazena informações em objetos chamados article types (tipos de artigos). Há um esquema para cada tipo de artigo, e os usuários podem exibí-lo como um formulário no qual dados são inseridos. O sistema é flexível o suficiente para lidar com diferentes tipos de informação. A tabela 1 mostra alguns tipos de artigos padrão do Plone. Em todos eles o conteúdo é categorizado com ajuda de um sistema de metadados que obedece ao Dublin Core Schema[3]. Os metadados permitem a ligação de diferentes conteúdos do website, ou que se encontre conteúdo de forma direcionada através de buscas. Por exemplo, coleções podem listar itens por referência a seus metadados. Extensões de tipos de mídia As extensões do Plone fornecem mais tipos de artigo, por exemplo, para pesquisas ou conteúdo multimídia, ou ainda acrescentam novas funções a tipos de artigo já existentes. Os desenvolvedores podem usar a plataforma de arquétipos para definir seus próprios tipos de artigos; em muitos casos, os front-ends estão disponíveis para auxiliar nessa tarefa. Além do gerenciamento de conteúdo pelo navegador, o Plone também suporta clientes Webdav e FTP. Uma pasta do Plone pode ser exibida numa máquina cliente como um diretório de um sistema de arquivos via Webdav. Portanto, é possível guardar no Plone documentos ODT ou DOC, por exemplo. Opções de entrada Os usuários podem escolher campos, menus de rolagem ou botões de rádio para inserir entradas. O Plone também possui várias opções para criação do texto do corpo com cabeçalhos, listas de itens, imagens integradas e links. Ele suporta linguagens de marcação como ReST, Markdown[4] e Textile[5], que são convertidas para HTML após o salvamento. Os usuários técnicos apreciam esses formatos de entrada, que oferecem uma forma conveniente e simples para digitar comandos de formatação através do teclado. A maioria dos usuários tende a preferir o editor de texto Kupu, com menus remanescentes de outros grandes programas de processamento de texto (figura 2). Além de vários estilos padrão, o Kupu possui ferramentas para digitação de tabelas e inclusão de links, imagens e vídeos. Marcações HTML potencialmente maliciosas são removidas antes de guardar as entradas. O Kupu roda em navegadores Mozilla e Internet Explorer, mas não suporta o Konqueror, Safari ou Opera. Figura 1 Interface do Plone após a instalação. Em Get Started estão as funções de gerenciamento do sistema. Gerenciamento de acesso Graças ao esquema bem planejado de gerenciamento de acesso, o Plone suporta a colaboração entre grupos de usuários maiores num ambiente web seguro. A edição colaborativa Linux Magazine #39 Fevereiro de
3 ANÁLISE Plone 3.0 de informações por um lado, e a confiabilidade, pelo outro, são os requisitos que demandam flexibilidade máxima de um CMS num website maior. Para lidar com isso, o Plone gerencia o acesso com base nos papéis dos usuários, o que pode dar a usuários individuais ou a grupos de usuários privilégios de acesso bastante granulares, tanto globalmente para todo o website quanto localmente para uma parte específica do site. De forma simplificada, os papéis são uma camada de abstração que contém um conjunto de permissões específicas e granulares que o Zope e o Plone 3.0 suportam sob a superfície. Como um conjunto de várias permissões individuais é difícil de tratar, os papéis fornecem um tipo de contêiner intuitivo. Os administradores podem ativar ou desativar as permissões de papéis a qualquer momento, e assim alterar a configuração. O Plone 3.0 define os seguintes papéis por padrão: Membro (usuário registrado) Leitor (pode ler o conteúdo) Contribuidor (pode adicionar conteúdo) Editor (pode editar conteúdo) Publicador (pode publicar conteúdo) Gerente (pode modificar a estrutura do site) Proprietário (usuário que criou o conteúdo original) É possível atribuir papéis a usuários individuais ou grupos, tanto globalmente quanto para regiões específicas do site. público. Simplificando, o conteúdo privado só pode ser visualizado por seu criador, enquanto o público é acessível a todos os visitantes do site. Os usuários com permissões adequadas podem fazer mudanças ou alterações de estado. Um workflow é um conjunto de estados e transições. O Plone 3.0 traz quatro diferentes workflows préconfigurados: Estado único O conteúdo é publicado imediatamente, e visível para todos os usuários.; Publicação simples Os próprios proprietários podem publicar o conteúdo; Intranet O conteúdo fica visível somente para usuários registrados. Os editores podem publicar internamente; caso seja necessário, o conteúdo pode ser tornado acessível a visitantes anônimos.; Comunidade O conteúdo é liberado para o público pelos publicadores. Além desses workflows, nada mais é necessário para criar tanto sites privados quanto soluções para grandes intranets corporativas. É possível criar vários workflows em paralelo num mesmo site. Isso significa que se pode definir um workflow globalmente para todo o site, mas com a mesma facilidade atribuí-lo a tipos de artigo individuais (por exemplo, notícias, imagens ou datas), ou apenas usá-lo localmente para uma seção específica do site. O administrador do site tem mais liberdade para reagir às necessidades dos usuários. Por exemplo, é possível configurar uma área que somente seja acessível a um grupo interno, e atribuir-lhe o workflow de estado único para dar a todos os usuários acesso imediato à nova informação. Outra área do site poderia ser governada pelo workflow de intranet com múltiplos estágios ou de comunidade, para assegurar que o conteúdo seja aprovado antes da liberação. Versões e eventos O Plone 3.0 possui um sistema de controle de versões. Para editar um artigo já existente, o usuário primeiro cria uma cópia funcional e edita seu conteúdo em segundo plano, enquanto a versão original permanece exposta para o Workflows Bem próximo ao gerenciamento de acesso está a possibilidade de mapear workflows. No Plone, workflows definem o escopo de um processo editorial organizado. O conteúdo pode assumir vários estados diferentes por exemplo, privado ou Figura 2 O editor integrado Kupu facilita a entrada de conteúdo HTML mesmo sem conhecimentos dessa linguagem. 72
4 Plone 3.0 ANÁLISE público em geral. Depois de finalizar a edição, o autor pode liberar a nova versão, compará-la à anterior e até voltar a uma outra versão mais antiga. Os artigos ficam bloqueados para impedir a edição por outros usuários quando o artigo for aberto à leitura. Um importante novo recurso é o controle de eventos, que automatiza vários eventos críticos. Os administradores podem ligar eventos tais como criação, modificação e remoção de itens, ou ainda transições de workflow, a outras ações no CMS. Isso inclui criar cópias ou enviar notificações por , por exemplo. As regras que ditam como as ações ocorrem também podem conter condições. Estas podem ser especificadas num menu e atribuídas a artigos ou pastas individuais. Links Conteúdos movidos ou deletados também criam links órfãos. O Plone 3.0 resolve esse problema por meio de verificações de integridade automatizadas. Quando algum conteúdo é movido, o Plone envia as requisições do navegador para o novo destino. Ao tentar apagar um artigo referenciado por outra página, Tabela 1: Tipos de artigos do Plone Tipo de artigo Pasta (Folder) Página (Page) Notícia (News) Imagem (Image) Arquivo (File) Link Data (Date) Coleção (Collection) Descrição Usado para estruturar o website Compreende um título, um atalho e o corpo do texto Tem estrutura semelhante a uma página, mas também inclui uma figura, mostrada na página da lista de notícias Para guardar, redimensionar e exibir formatos de figuras Para armazenar arquivos nos formatos PDF, Word ou outros, que os usuários podem baixar Para guardar links comentados Para datas, eventos etc. Uma pasta virtual que pode exibir conteúdo com base em padrões complexos de busca o usuário verá uma mensagem na hora de apagar, podendo cancelar a operação ou editar os documentos que fazem referência ao artigo. As funções de busca ajudam os usuários a encontrar informações. O Zope guarda conteúdo e metadados em índices separados, que podem ser buscados separadamente. Os usuários podem fazer uma rápida busca em todos os catálogos e, num navegador com Javascript ativado, os resultados serão mostrados enquanto a chave de busca é digitada. Se a procura não retornar os resultados desejados, o recurso de busca avançada permite que os usuários definam chaves de busca mais complexas e limitem os resultados por hora, estado, palavras-chave, autor ou tipo de artigo. Em ambos os casos, * é um curinga, e os operadores lógicos AND e OR também são suportados. Se estiverem instalados os pacotes wvware ou xpdf/pdftotext no servidor, o Zope também verifica o conteúdo de arquivos Word e PDF. Sitemaps do Google Como o CMS suporta o padrão Sitemap Protocol usado pela maioria dos mecanismos de busca como Google, Yahoo e MSN para encontrar novas páginas mais rápido e com mais eficiência, a cooperação entre os sites em Plone e as máquinas de busca é muito eficiente. Os modelos de páginas do Zope (Zope Page Templates[6], ou ZPT, exemplo 1) permitem que os usuários criem páginas HTML modulares no Plone. O Zope já usa modelos de páginas para criar sites dinâmicos há muitos anos, e o recurso está bem documentado. Uma página padrão é composta por vários modelos. Para personalizá-los, é possível modificá-los ou apenas mudar a forma como são arranjados. Os modelos são responsáveis por exibir o conteúdo; a lógica da aplica- Linux Magazine #39 Fevereiro de
5 ANÁLISE Plone 3.0 ção, como uma busca do conteúdo de uma lista específica, fica em scripts externos, garantindo assim a separação estrita entre conteúdo, lógica da aplicação e visualização. O Plone utiliza um layout sem barreiras, baseado em CSS e em XHTML. Ele segue o padrão internacional da W3C WAI-AA/WCAG 1.0[7] e os requisitos da seção 508 da lei dos EUA[8] relacionados a websites sem barreiras. Os webdesigners podem usar CSS para alterar a aparência de cada elemento de uma página, até os mínimos detalhes dos elementos mais básicos. Isso significa que é possível mudar radicalmente a aparência de um site pré-definido simplesmente alterando a folha de estilo. Uma folha de estilo especial permite que os usuários imprimam páginas do Plone sem irritarem os elementos de navegação. A versão 3.0 também possui uma folha de estilo S5 que renderiza o conteúdo num navegador para apresentação através de um projetor de vídeo. A interface gráfica do Plone já foi traduzida para mais de 50 línguas, e a extensão Linguaplone permite aos editores a manutenção de conteúdo em múltiplos idiomas. O Plone cria uma cópia de cada tradução; que é ligada ao documento original. Single Sign-on O CMS tem seu próprio mecanismo de autenticação. Para implementar o chamado single sign-on (registro único), pode-se adicionar uma extensão LDAP ou OpenID ao Plone; outros mecanismos centrais de autenticação são suportados, mas exigem mais trabalho manual. O Plone 3.0 oferece aos usuários registrados uma página de boas-vindas personalizada, ou dashboard. A partir dela, pode-se acessar informações do website de uma forma individual e exibir, por exemplo, as notícias mais recentes ou qualquer novo conteúdo de forma personalizada. Apesar das novas funções, o Plone está mais rápido do que nunca. Testes com o Apache Benchmark mostraram resultados melhores para o Plone 3.0 em comparação com a versão Alexander Limi, um dos fundadores do Plone, publicou resultados de testes em seu blog, mostrando que a exibição de páginas requer menos da metade do número de requisições HTTP usados pelas versões anteriores[9]. Além disso, as páginas HTML geradas pelo Plone 3.0 são menores que aquelas da versão anterior. Mais rápido com cache Requisições para páginas dinâmicas que executam scripts e compilam a página HTML final a partir de um conjunto de modelos costumam sobrecarregar os recursos. Para evitar isso, o Plone tem várias funções de cache que reduzem o tempo exigido para rotinas mais complexas. Embora o Zope tenha seu próprio servidor web, ele geralmente é usado com o Apache ou um proxy como o Squid ou Varnish. Os ZEOs permitem que os administradores distribuam o banco de dados e dividam a carga por servidores Zope para melhorar a escalabilidade de sites em Plone sem se aventurar por sua estrutura. A complexidade e o poder do Plone não o tornam inadequado para aplicações simples. Em particular, a segurança oferecida pelo servidor de aplicações Zope torna o Plone interessante até para os menores sites, principalmente quando se considera que o Plone oferece um CMS profissional ao pressionar de um botão. Mas é lógico que o Plone fica em casa em grandes sites corporativos e institucionais. O CMS adota a licença GPL, e a marca e o código-fonte pertencem à Plone Foundation, um fato tranqüilizador para aqueles que se interessarem em investir tempo no Plone. Atualizo ou espero? O Plone 3.0 tem várias novas funções que facilitam o uso desse CMS por usuários experientes. O gerenciamento de acesso para usuários e grupos é um dos pontos fortes do Plone, e a nova versão introduz importantes avanços. A versão 3.0 também fornece ao administrador uma forma mais fácil de implementar cenários complexos para as aplicações e as raízes do Plone no Zope reforçam a segurança. Ao iniciar um novo projeto, considere o Plone 3.0. Atualizar um sistema que não tenha sido profundamente personalizado não deve apresentar problemas. Mas se tiverem sido acrescentadas extensões de terceiros a uma instância do 2.5.3, talvez seja preferível esperar extensões compatíveis antes de atualizar. Mais informações [1] Plone: [2] KSS: [3] Dublin Core: [4] Markdown: net/projects/markdown [5] Textile: [6] Modelos de páginas: sourceforge.net [7] Padrão WAI da W3C: TR/WAI-WEBCONTENT [8] Seção 508 da lei americana: [9] Benchmarks: some-preliminary-plone- 3.0-benchmark-results 74